<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82180>82180</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clangd crashes on c++ modules involved project.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
paveltrpn
</td>
</tr>
</table>
<pre>
I build a recent clang 18.1.0rc boundle, and it have broke my neovim editing pipeline - clangd crashes on c++ modules. It just crashes on startup.
clangd version 18.1.0rc (https://github.com/llvm/llvm-project.git 82e17c153611fbb8c5bb9b990f0f143910a4c2e0)
" #0 0x000055741b579f62 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/clangd+0x800f62)\n #1 0x000055741b576f8b SignalHandler(int) Signals.cpp:0:0\n #2 0x00007f8d1f642990 (/lib/x86_64-linux-gnu/libc.so.6+0x42990)\n #3 0x000055741d74e8d7 clang::ASTReader::DecodeIdentifierInfo(unsigned int) (/usr/local/bin/clangd+0x29d58d7)\n #4 0x000055741d75fd85 clang::ASTRecordReader::readNestedNameSpecifierLoc() (/usr/local/bin/clangd+0x29e6d85)\n #5 0x000055741d76016e clang::TypeLocReader::VisitElaboratedTypeLoc(clang::ElaboratedTypeLoc) (/usr/local/bin/clangd+0x29e716e)\n #6 0x000055741d767846 clang::ASTRecordReader::readTypeLoc(clang::TypeLoc, clang::SourceLocationSequence*) (/usr/local/bin/clangd+0x29ee846)\n #7 0x000055741d7a7e5e clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2ee5e)\n #8 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n #9 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#10 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#11 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#12 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#13 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#14 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#15 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#16 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#17 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#18 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#19 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#20 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#21 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#22 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#23 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#24 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#25 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#26 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#27 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#28 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#29 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#30 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#31 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#32 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#33 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#34 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#35 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#36 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#37 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#38 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#39 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#40 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#41 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#42 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#43 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#44 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#45 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#46 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#47 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#48 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#49 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#50 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#51 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#52 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#53 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#54 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#55 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#56 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#57 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#58 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#59 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#60 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#61 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#62 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#63 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#64 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#65 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#66 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#67 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#68 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#69 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#70 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#71 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#72 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#73 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#74 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#75 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#76 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#77 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#78 0x000055741d7a60e6 clang::ASTDeclReader::Visi"
[ERROR][2024-02-18 21:20:59] .../vim/lsp/rpc.lua:734 "rpc" "/usr/local/bin/clangd" "stderr" "tFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#79 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#80 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#81 0x000055741d738862 clang::ASTReader::GetDecl(unsigned int) (/usr/local/bin/clangd+0x29bf862)\n#82 0x000055741d7a60e6 clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*) (/usr/local/bin/clangd+0x2a2d0e6)\n#83 0x000055741d7a7df5 clang::ASTDeclReader::Visit(clang::Decl*) (/usr/local/bin/clangd+0x2a2edf5)\n#84 0x000055741d7a8925 clang::ASTReader::ReadDeclRecord(unsigned int) (/usr/local/bin/clangd+0x2a2f925)\n#85 0x000055741d6fcb73 clang::ASTReader::GetDecl(unsigned int) (.part.0) ASTReader.cpp:0:0\n#86 0x000055741d737015 clang::ASTReader::InitializeSema(clang::Sema&) (/usr/local/bin/clangd+0x29be015)\n#87 0x000055741bf49021 clang::Sema::Initialize() (/usr/local/bin/clangd+0x11d0021)\n#88 0x000055741d844281 clang::Parser::Initialize() (/usr/local/bin/clangd+0x2acb281)\n#89 0x000055741d842103 clang::ParseAST(clang::Sema&, bool, bool) (/usr/local/bin/clangd+0x2ac9103)\n#90 0x000055741d4807d9 clang::FrontendAction::Execute() (/usr/local/bin/clangd+0x27077d9)\n#91 0x000055741c9003cb clang::clangd::ParsedAST::build(llvm::StringRef, clang::clangd::ParseInputs const&, std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, llvm::ArrayRef<clang::clangd::Diag>, std::shared_ptr<clang::clangd::PreambleData const>) (/usr/local/bin/clangd+0x1b873cb)\n#92 0x000055741c9834b9 clang::clangd::(anonymous namespace)::ASTWorker::generateDiagnostics(std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, clang::clangd::ParseInputs, std::vector<clang::clangd::Diag, std::allocator<clang::clangd::Diag>>) TUScheduler.cpp:0:0\n#93 0x000055741c9840a2 clang::clangd::(anonymous namespace)::ASTWorker::updatePreamble(std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, clang::clangd::ParseInputs, std::shared_ptr<clang::clangd::PreambleData const>, std::vector<clang::clangd::Diag, std::allocator<clang::clangd::Diag>>, clang::clangd::WantDiagnostics)::'lambda'()::operator()() TUScheduler.cpp:0:0\n#94 0x000055741c97b5da clang::clangd::(anonymous namespace)::ASTWorker::runTask(llvm::StringRef, llvm::function_ref<void ()>) (.constprop.0) TUScheduler.cpp:0:0\n#95 0x000055741c97be25 clang::clangd::(anonymous namespace)::ASTWorker::run() TUScheduler.cpp:0:0\n#96 0x000055741cb41957 void* llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::'lambda0'()>>(void*) Threading.cpp:0:0\n#97 0x00007f8d1f697b5a start_thread ./nptl/pthread_create.c:444:8\n#98 0x00007f8d1f7285fc clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0\nSignalled during AST worker action: Build AST\n Filename: /mnt/main_disk/code/tiny-render/geometry/Basics.cpp\n Directory: /mnt/main_disk/code/tiny-render/build\n Command Line: /usr/local/bin/clang++ --driver-mode=g++ -I/mnt/main_disk/code/tiny-render/../extern_libs/libjpeg/include -I/mnt/main_disk/code/tiny-render/../extern_libs/libtga/include -I/mnt/main_disk/code/tiny-render/../extern_libs/glfw/include -I/mnt/main_disk/code/tiny-render/../extern_libs/glew/include -I/mnt/main_disk/code/tiny-render/../extern_libs/json/include -std=c++23 -g -O0 -Wall -Wextra -Wpedantic -stdlib=libc++ -Wno-unused-parameter -x c++-module -fmodule-output=CMakeFiles/geometry.dir/geometry-Basics.pcm -fmodule-file=toy_std=CMakeFiles/toy_std.dir/toy_std.pcm -fmodule-file=toy_std.algebra=CMakeFiles/toy_std.dir/toy_std.algebra.pcm -fmodule-file=toy_std.algebra:matrix=CMakeFiles/toy_std.dir/toy_std.algebra-matrix.pcm -fmodule-file=toy_std.algebra:quaternion=CMakeFiles/toy_std.dir/toy_std.algebra-quaternion.pcm -fmodule-file=toy_std.algebra:vector=CMakeFiles/toy_std.dir/toy_std.algebra-vector.pcm -fmodule-file=toy_std.algorithm=CMakeFiles/toy_std.dir/toy_std.algorithm.pcm -fmodule-file=toy_std.array=CMakeFiles/toy_std.dir/toy_std.array.pcm -fmodule-file=toy_std.concepts=CMakeFiles/toy_std.dir/toy_std.concepts.pcm -fmodule-file=toy_std.iterator_traits=CMakeFiles/toy_std.dir/toy_std.iterator_traits.pcm -fmodule-file=toy_std.raw_list=CMakeFiles/toy_std.dir/toy_std.raw_list.pcm -fmodule-file=toy_std.raw_vector=CMakeFiles/toy_std.dir/toy_std.raw_vector.pcm -fmodule-file=toy_std.stack=CMakeFiles/toy_std.dir/toy_std.stack.pcm -fmodule-file=toy_std.vector=CMakeFiles/toy_std.dir/toy_std.vector.pcm -o CMakeFiles/geometry.dir/geometry/Basics.cpp.o -c -resource-dir=/usr/local/lib/clang/18 -- /mnt/main_disk/code/tiny-render/geometry/Basics.cpp\n Version: 0\n"
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUXF1zo7i2_TXKiwqXEF_iIQ9O3L43VXNnpjq5048pIW0cdWPBCJGOz68_JcAxkHRi9-S0OVUzHSOkpaWtpa1lF4LXtdpogEsUXaFodcEb-1Cay4o_QmFNpS-yUu4ub3DWqEJijg0I0BaLgusN9tnCXxAjcFY2WhaA6DXmWmJl8QN_BJyZ8hvg7Q5rKB_VFoNUVukNrlQFhdKAvQ5IYmF4_QA1LjUWiF4heoW3pWwKqBf4xuKvTW2HdWrLjW2qBUZkhciy-7eHegRTq1IfyCHKHqytahQsEV0jut4o-9BkC1FuEV0XxeP-j1eZ8isIu9goixkFPxF-FMS-n2cZE1GWpVmakpzkfhikPuGhoEAQTYckEKUY0YBg8kQIIVGUhH4WJWkeU9x2FSxRsKx3dffhT6O0vbVcfLszXACi7FDJ8O_3ZW0N8C2isYut0hbR1A0I0XVTG8e7FLxAdJ0pjei6CwGiV-SJEZLH1LGLrrWj5E8oxTnL8K3aaF78L3ezZxBlfQ9dcb0QVYWCJWn_72FoD5PkTPp5HNI0JT2jQmWIrp9YfB-HXqF08-RtdNPdEIu6XMQts7bJgFgwJCaTEJhMOl10cVje3n0GLsF0lysQpYQbCdqqXIG50XmJKGt0K2R5UpBoKiMmkwGZcEwmyiWLXpARpZFDSga4_B1qC_J3voXbCkTL7LdStCyOJgOxZNGATDQmExM_hiGZu10Fv5ViSOUvVSv7qeBZabgF2ddAlA2avXL7eIqJH8OAYjyhmLAwPiperzJ7LrweYtyWjRGunFtV6lv4uwHt1sryFN7AwnjAOxnz5glEMOG9AlG8CO2Yr6tyEg9OAaJh_NiEB0vpS70dOLjPHS8X05-WPad5SodKS8c0AsZi-gaN_wHbDf1nl12Ws-fk5HITmYQhJjCV0avTsW60cKLo2QxajO-cNEWSQDzg5k-lIvPpFP2HpCLzaMCDnl8qjkZwZqmEM5ZKNBOpxPOQSnJmqUyT65ykks5DKnSaec8jFeqfVyp0mlxnJBUazEQq08x7JqlEZ5bKNLnOSSovbO2ZpDIDW-tonNnWBjO2tcFMbG0wD1s7_RXil0tlxrZ2-jvE2aQyD1s7_e3gl0tlxrZ2-kPCuaQSzsPWhme2teGMbW04E1sbzsPWhme2teGMbW04E1sbzsPWhme2tdGMbW00E1sbzcPWRme2tdGMbW00E1sbzcPWRme2tdGMbW00E1sbz8PWxme2tfGMbW08E1sbz8PWxme2tfGMbW08E1sbz8PWxme2tcmMbW0yE1ubzMPWJme2tcmMbW0yE1ubzMPWJme2tclP2lpEaf9EaXT16fPnPz6jaIWiK0po6BHq-QxTHwVLSlCwjFIUrfBisUB0_ajax1nrCtG1qcSiaDgKlkkQIpIiSk0lWmT3-Z3R9LVqK8GY58tfIuGZ2G02D7vNzmy32YztNpuJ3WbzsNtsnPzjXGRJ8LNSWVTc2AVxV8_Npo-Euz4niT5IiP_W0G-0sooX6l9wC1s-noeuJD5Fq0D8YQBG6T7Lw5RQH097mPA45Slt35eEUH_Q4zjBszCkbNTjn9zUL8d-0pPhXGSUDftMJ31SnwQv-lze3v0gutc4K8vi8Pd4HqlPggOPdJwgQ0YSmQ55rE2pLWi5bFd7V_bpCURjTwtAQpJEpoOORylRpIQEIht23Dc-BEO6aLSX7VGW0UmLW2uU3nyGfPLg-QuQG101tsai1LXtA1nbvkKj1d8N3FfWoOB6AHJdbitVgLnRj_0T7KNmEnLeFPZeQgEW3m0afHL_0evBYZKlMXznyI_aDrmvFN_0zZ77rR-4AfmS7mjMBvg2K2DFLe8H7VCOXSkZSwKRDSaNjieNBWGW_ijeiDKuS73blk2NNd9CXbUHZNLnnPKlNN_262oDGgy34Eaqy9oqUSPKzjU370to1M0jCFu-MQ3t9A0b8MIF_f02PaEU3_3_rXgA2RSvJvA0mMxLSDj9mHlpKskt7HX03zMl_2B1_MKJ_eGwvnBtR0sh3U9eUvBtJjmiSZd_u_KycqunNH1Zl5nfEU04Fk2SRZJ_jGhMo-94_e3HKfpQnPc-8t60-e-xVBLvB7bPVIt2bipTVp2XeWdc0XRcMDZy_2hcx4V2ZKhEFvpplGA3NkSXg8HbBwO8Z3LXfv7TlE87FFw_C8o2VQE_FtOy3mnhYv250XpAsy0fxf_uu9Iw2vgO9_qlvJ-L1-ZhIj8y0F8nZdYPr41OOxalN6_FJhmfP3S649150PsuHth9C9aVdXtS1RXdCwPcwkKgYBmGIQqWbA_HRnAJZVEusChKDUELtFW1QHTdfrWud7WEqnY7n1ZPXcFje7xRN0_PJx_bTdC1X9y6jp7Jd2cqC5BYNk7LzlPj7608MN_bI3zVnrN1XiW61hivVQFOV-6WY-O8-XrLlb6Xyq2QtSglILq2Su88A9qZbLreQLkFa3aIrq94rUR3kLMFXCnTJqXdaYidZ2oRrsvtlmuJf1N6T-uHRqA_yut50qhHMN7WYQer5_Kb4xm0MwBPFoy-L1RWd8dKv1awQXSttCgaCR8AaDf84_A2Rf79I9HgA9G-1m5nPaC1KWPVH76mAfY22PuDYO8LLwrsfYEnazj2vlQgubZKtA0KlaFgVahsf2bb-6JLr9FNDdKruOFbsGCw97Q_1O11h7qxl3cfvLKxVWNRsLr-P_4NnNrrgX4XUg3l7PVirsT2gJArl-BWttzdd0MYIfXFPdD-6g2ABS82kBl-HFBf-TjA5ZZbo55OQva6Nkd28HfD3RS3qeSUTg7tjuxob2xO6aRr814HpVH2YXs0clf9bVD39ehIQFf1TTBRagGVrY_D29d-E1LZznvdW8PVsciTRm92YPj3-0LVL1bZ68j72u9CnqKBQ_03YWvLxbfjENuqb4Kdwm_IrcTH5KLR1roosSewZ6BuT6p7rmqwerExdu9H6DfGtc-w533Mpv5X98oLtxv3PoleyMtApkHKL-DSTwijScJoePFwGYk8S0IphAgDn1MhWBT6OY-FSKQgNLhQl5TQkFCf-UmQkHBBpO8TFiRpJBnNiEAhgS1XxcI5wEVpNheqrhu4ZNRn5KLgGRR1-zoRSjV8x-1NRCmKVhfmsn3PRtZsahQSJ7P6gGKVLeCys6dvvBAEK_1YFo8g8f51HReNKS5Pe8WH2_kcLzfDLe9_BwAA__-P1qiY">