<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62066>62066</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU][OpenMP] LLVM crashes with "unsupported libcall legalization"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          admnd
      </td>
    </tr>
</table>

<pre>
    On my Gentoo Linux machine, if I try to compile a code example that offloads OpenMP to an AMD GPU :

``$ /usr/lib/llvm/15/bin/clang++ --rocm-device-lib-path=/usr/lib/amdgcn/bitcode --libomptarget-amdgpu-bc-path="/usr/lib64" -fno-lto -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx1031 -x c openmp_offload.c``

I get this crash at linking step:

```
LLVM ERROR: unsupported libcall legalization
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm/15/bin/clang-linker-wrapper --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ocml.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ockl.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_daz_opt_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_unsafe_math_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_finite_only_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_wavefrontsize64_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_isa_version_1031.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_abi_version_400.bc --host-triple=x86_64-pc-linux-gnu --linker-path=/usr/bin/x86_64-pc-linux-gnu-ld.bfd -- -pie --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/13 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib /tmp/openmp_offload-829c73.o -lstdc++ -lm -lomp -lomptarget -rpath /usr/lib/llvm/15/lib64 -L/usr/lib/llvm/15/lib64 -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crtn.o
1. Running pass 'CallGraph Pass Manager' on module 'ld-temp.o'.
2. Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@__omp_outlined__'
 #0 0x00007fe9a1a26dc9 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x10c8dc9)
 #1 0x00007fe9a1a23d6b (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x10c5d6b)
 #2 0x00007fe9a04085e0 (/lib64/libc.so.6+0x395e0)
 #3 0x00007fe9a04595ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #4 0x00007fe9a0408536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #5 0x00007fe9a03f1875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #6 0x00007fe9a1466d04 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0xb08d04)
 #7 0x00007fe9a19100b5 llvm::report_fatal_error(char const*, bool) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0xfb20b5)
 #8 0x00007fe9a41f9fe3 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x389bfe3)
 #9 0x00007fe9a2419443 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1abb443)
#10 0x00007fe9a2533398 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1bd5398)
#11 0x00007fe9a240d519 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1aaf519)
#12 0x00007fe9a24cea43 llvm::SelectionDAGISel::FinishBasicBlock() (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b70a43)
#13 0x00007fe9a24d1012 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b73012)
#14 0x00007fe9a24d3715 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b75715)
#15 0x00007fe9a1ecd703 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x156f703)
#16 0x00007fe9a1baeca9 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1250ca9)
#17 0x00007fe9a33e35f9 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2a855f9)
#18 0x00007fe9a1baf8c9 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x12518c9)
#19 0x00007fe9a370dc60 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2dafc60)
#20 0x00007fe9a370e362 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2db0362)
#21 0x00007fe9a3702c59 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2da4c59)
#22 0x00007fe9a370335f llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>> (unsigned int, llvm::StringRef)>) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2da535f)
#23 0x000056456939b79d (anonymous namespace)::linkBitcodeFiles(llvm::SmallVectorImpl<OffloadFile>&, llvm::SmallVectorImpl<llvm::StringRef>&, llvm::opt::ArgList const&) (.constprop.0) ClangLinkerWrapper.cpp:0:0
#24 0x00005645693a04cf (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<OffloadFile>&, llvm::opt::InputArgList const&) ClangLinkerWrapper.cpp:0:0
#25 0x000056456938a4a7 main (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xf4a7)
#26 0x00007fe9a03f2d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#27 0x00007fe9a03f2e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#28 0x00007fe9a03f2e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#29 0x000056456938afa5 _start (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xffa5)
 #0 0x00007fe9a1a26dc9 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x10c8dc9)
 #1 0x00007fe9a1a23d6b (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x10c5d6b)
 #2 0x00007fe9a04085e0 (/lib64/libc.so.6+0x395e0)
 #3 0x00007fe9a04595ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #4 0x00007fe9a0408536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #5 0x00007fe9a03f1875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #6 0x00007fe9a1466d04 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0xb08d04)
 #7 0x00007fe9a19100b5 llvm::report_fatal_error(char const*, bool) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0xfb20b5)
 #8 0x00007fe9a41f9fe3 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x389bfe3)
 #9 0x00007fe9a2419443 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1abb443)
#10 0x00007fe9a2533398 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1bd5398)
#11 0x00007fe9a240d519 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1aaf519)
#12 0x00007fe9a24cea43 llvm::SelectionDAGISel::FinishBasicBlock() (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b70a43)
#13 0x00007fe9a24d1012 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b73012)
#14 0x00007fe9a24d3715 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1b75715)
#15 0x00007fe9a1ecd703 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x156f703)
#16 0x00007fe9a1baeca9 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x1250ca9)
#17 0x00007fe9a33e35f9 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2a855f9)
#18 0x00007fe9a1baf8c9 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x12518c9)
#19 0x00007fe9a370dc60 (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2dafc60)
#20 0x00007fe9a370e362 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2db0362)
#21 0x00007fe9a3702c59 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2da4c59)
#22 0x00007fe9a370335f llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>> (unsigned int, llvm::StringRef)>) (/usr/lib/llvm/15/bin/../lib64/libLLVM-15.so+0x2da535f)
#23 0x000056456939b79d (anonymous namespace)::linkBitcodeFiles(llvm::SmallVectorImpl<OffloadFile>&, llvm::SmallVectorImpl<llvm::StringRef>&, llvm::opt::ArgList const&) (.constprop.0) ClangLinkerWrapper.cpp:0:0
#24 0x00005645693a04cf (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<OffloadFile>&, llvm::opt::InputArgList const&) ClangLinkerWrapper.cpp:0:0
#25 0x000056456938a4a7 main (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xf4a7)
#26 0x00007fe9a03f2d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#27 0x00007fe9a03f2e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#28 0x00007fe9a03f2e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#29 0x000056456938afa5 _start (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xffa5)
clang-15: error: unable to execute command: Aborted
clang-15: error: linker command failed due to signal (use -v to see invocation)
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW01v27rS_jXMhpAhkfqwFlk4cVwESJEg6dt3KVAkJfOGInVIKk3Or7-g5MSm49v0tG6BA7hIHJsf88w8HHGG45JYK1rF-TnILkC2PCODW2tzTlin2Fmt2cv5rYLdC_zEldMa3gg1PMOO0LVQHKBLKBp4DZ15gU5DqrteSA4JpJpxyJ9J10sO3Zo4qJtGasIsvO25-nznhxMFF5-X8NPd_0GAFyBegvj1NY_9D0ohQKvBGoBWUtT-VT51AK2SDKBVLRRAKyqJagG6AOgCRpHRtIsYfxKUR1LUUU_cGuDlnhTSsZaqUYQbNY38YN31jpiWu8j390NU0-18tCsiTwFCMGqUjqTTMGp0z1XXv72JJjkW4OUE5SX637UlMIo2VETEUC-8bZ6TGCcweoYUTgKqzZAZ3TCxw801bLmDbi0spIbYNSQOSqEehWqhdbw_TOWrjJubr5_h1f397T3ACzgoO_S9No4zKEVNiZRQ8pZI8TdxQqtpzt3N1eLhCtqh7oSDBNZDCw330_wqrp3rrQdFK4BWrXDroZ5R3W1Xy_-JeqP_w6kDaCWsHbgFaAWJYlAoKgfmnYRv7KkJfXSGUD6b4B8coY-QDd3WtHgGx393RreGdJCYdui48owvftBlIs8ZN9E3Q_qeGxhFG2fwrmCIeQF4uVnNd2sYbZbsY88CaKVpJ2c1_Z0Aj78bQNKKkb8r3Tvvmb8fbFCWNLzqiFv_GcBGKOF4pZV8-TOAVBvDqZMvldGDYpxV9i_jKq1-P_Q38sQbo5Wz4m-ep3_GXmFJ9cSNFVpVfubvRyS1eENM43gCXGvrImdELznAy-d5XuVp1FO_GQzPUauGMRSMG8N-6Jj2jgNTIslmdcNgFMGoFz6Y8HXUGNLxaM0MjDrIZVNNE2HEXhTpBN2gwG1AWUm2kfk8z6M8nVk9QzDSkMz04PZ3tZbSw9r4rQ4DtJrN3r-8Ij1Q45KZPqpMapz4CZHUuJq3Qj3MNIxu_tHsfzr-ewZMsiYp-627CN_r-yn0w8OlqN802gPyDLuu914epArRHJW0wJ5GaR2jrymR7GAktU9O5FuCAyPjvft7kfJ_2HhgiGwprez0F0ayd2vDCYORpHt9P-EaXLGH4_upmukpjUhm8H5QymdOPbEWAlRcEik_GdKv4Z1v-UwUabkBqIBawU6zQXI_TLLI8a6faYCKTZqC3gtbfF765Ha5-BQBfLVcfIJ3xDluFLxW1pmB-hwLPnDJx3cblGZQUwdABUjjqtJ-lQcnheKsqnzrCAgBwjGMn-M4jouGlyQhKGe0hADNP8yBAk6kqH1eGCXZzGqALuLnJKZzRkuAyi1WsoeFWV4fCStjeR1goV2sOI3nGY83WDuCqN8j81EILjMeByJwKCIrM0JhVW38s3oUUlbCn0984kg2hG8sscZ7GOP10PpPL9ZHKJ-yth41QjNcRCYJPgO0Ur2TAK12EWYU4EWaArwo8q1q6TvrcA4NEZb_qgr-LEfkK-f2xTLe-0m9tuIZoNUIMiqFCoAXOzplgU64SeZFBkntk_xf1cmxTaT20kbweeIZ2YLngWulec7i9BiuVcdzFqeBWxQBVJnEcZ3BUTBeALyYzjVVQxyRFTdGG4DmdE0MpFpZB9DCH3prrSVAR3nSmhrFdRaoON9VMU2asuH4GFB4XtYNxwFWuYuF0qRMU7xDx5cxXtzob9wI1U5t4ye_T37RAM2_P9YPe225Vo0GKPe8jVweZe8gdZ2mW5P8NhXsiSjDGJfzD0zqyCO_EbXXNjDpbWteLj6Nql_uCLr_cnN9saFkOjuH_Vdfv4QNC2PIyz1vAL7cgVh-JXLgAF-Fgw-p-Xmr5m3v1bLhnIfljaavjprv9004R2W_Zhku5wH7SehQMcuSEh5m9GIQknEzdTwJK9zD3ZJbakTvtFkRIQfDw_VwhD7eGe04ddpsx27c6igORZosKQOTUGgS5SR4RnZNun7gcmpdCSXs-oJYQS-kpo-jbsdRsS5isufzOFSRJXGCPlRxal1IudXSBnSvXjORrUsdywIcJyiwIN2zABdJ9qEFZlC36vNUjHxVNrDgXd8RTciKJAtMCEJowikr4l0_2dPF55c7VhxU_zfoneVNEYfOE0bfmnBKdh_Z1Z1X9TUT_vMaoyymJHwigyCOMcdZcxQsROZZ1oRY8z12mjndZUfyltCX6f0OT9ddv_XR0CXHQ8RR-UnmNNQ5iOq4iBnN46Pww0hD83gXC8V7WBznu1uPdHp6UxP6yBULuHjrvNSqEW0QuqxjU9_reSgIm1fPPaeOM4Av3wYOSvw18Kp3Jhh6Seias5WQ_MEZTrpAOOMNGaSrGJfc8e_Pw1fTj2dyUOPXJgwK5TwdU_gOW3fD786qv29-GLqOmJdrxfjz8RwDsTrGebDLomRvsRDNykOLdfPl9s1773k7SGJ8E5r_-1blSFySlGbBQ4bQHpcYZ81HXP4rGfyZZ_HfYtyhjiBtdj799kn7kd0pw1kTuNNrCpflaZaXuKyLknksorR66fRgoSIdtz2hfNRl9DGhHi-msrc3OczeHjoi5dcxU56i0eXtVCr0Q0db9o8I7yYc4uHARN271xNOeyOs288XZ-Pn3uh-5mMHvJREtTdjAfz_p6_fZrTvAV7E4-8bJWlICYlT2vwIJQvFvNzl-D3wEYh5s-9a9YM7ZOSPWpSFFs1JSgrYEaF-yKsOfXE5FRFSUgTOlO9VcxBLOawqKWpaWUeMq_x5tdog_1J5h9rhfb1pUwo7hDdbA7woUoAXeKtvsa8vj0s4ThFK_HIFakfF6e3YOeo1lqMSNAd4gXbWaX5In4C_I1N3UC-cFgAvsq1a5b77NCSDk0K_6EANCWtQp8LyqbB8KiyfCsunwvKpsHwqLJ8Ky6fC8qmwfCosnwrLp8LyqbB8KiyfCsunwvKpsHwqLJ8Ky6fC8qmw_MOF5WlUkgG8gFMJbLyDRmrJodOQP3M6OA6p7jqi_JYMF_V4Oe070zf3KDZzYEOE5AyyYZQ4VS3HjdhyGD2NbZxDoZ40nW64vTl3eE9uej1j55iVuCRn_DzJ5wlCRVmWZ-tzVhQEccrQvKG0wVmOMlaTNE8LXhRlis7EOYoRjtMkSbI0x-UMZUWcFHEexzklPIlBGvOOCDnzZM60ac_Ge3HnOYrz_EySmks73slESPFvcOwECIFseWbO_ZyoHloL0lgK6-xWihNOjpc5p_98DrIlyC6mO5cgW8Lx_t94z45b-E2MlwDQh9cAETobjDz_-at-o1X_DQAA__8k-HlZ">