<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/116258>116258</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash when parsing `#pragma omp task` and `[[omp::directive(task)]]`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Gian-Laager
</td>
</tr>
</table>
<pre>
Crash when it encounters this `#pragma`
```
#pragma omp task
{
leftNode =
build_up_quad_tree_split(maxDepth - (splitDir == SplitDir::Y),
leftBodies,
switch_split_dir(splitDir),
numBodiesThreshold);
}
```
if I remove the pragma it compiles just fine, but the same/similar crash also happens with the `[[omp::directive(task)]]` syntax.
Here's the full stdout:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /usr/bin/clang++ -I/home/gianl/code/C++/sandbox/mp-grav-sim/include -I/home/gianl/code/C++/num-utils/include -isystem /usr/include/eigen3 -Wall -fopenmp
-g -O0 -g -std=gnu++23 -Winvalid-pch -Xclang -include-pch -Xclang /home/gianl/code/C++/sandbox/mp-grav-sim/cmake-build-debug/CMakeFiles/libmp-grav-sim.dir/cmake_pch.hxx.pch -Xclang
-include -Xclang /home/gianl/code/C++/sandbox/mp-grav-sim/cmake-build-debug/CMakeFiles/libmp-grav-sim.dir/cmake_pch.hxx -MD -MT CMakeFiles/libmp-grav-sim.dir/src/quad-tree.cpp.o -
MF CMakeFiles/libmp-grav-sim.dir/src/quad-tree.cpp.o.d -o CMakeFiles/libmp-grav-sim.dir/src/quad-tree.cpp.o -c /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp
1. /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp:95:52: current parser token ','
2. /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp:4:1: parsing namespace 'sim'
3. /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp:51:5: parsing function body 'sim::build_up_quad_tree_split'
4. /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp:51:5: in compound statement ('{}')
5. /home/gianl/code/C++/sandbox/mp-grav-sim/src/quad-tree.cpp:92:9: in compound statement ('{}')
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 libLLVM.so.18.1 0x000070c9ecfc4d90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 64
1 libLLVM.so.18.1 0x000070c9ecfc226d llvm::sys::CleanupOnSignal(unsigned long) + 141
2 libLLVM.so.18.1 0x000070c9ecea88e9
3 libc.so.6 0x000070c9ec24c1d0
4 libclang-cpp.so.18.1 0x000070c9f4da55de
5 libclang-cpp.so.18.1 0x000070c9f5c8b942
6 libclang-cpp.so.18.1 0x000070c9f5c8e53f clang::Sema::isOpenMPPrivateDecl(clang::ValueDecl*, unsigned int, unsigned int) const + 943
7 libclang-cpp.so.18.1 0x000070c9f5ae650d clang::Sema::tryCaptureVariable(clang::ValueDecl*, clang::SourceLocation, clang::Sema::TryCaptureKind, clang::SourceLocation, bool, clang
::QualType&, clang::QualType&, unsigned int const*) + 6765
8 libclang-cpp.so.18.1 0x000070c9f5ab8de9 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::NestedN
ameSpecifierLoc, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) + 169
9 libclang-cpp.so.18.1 0x000070c9f5ab9376 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::CXXScop
eSpec const*, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) + 86
10 libclang-cpp.so.18.1 0x000070c9f5abb832 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*
, clang::TemplateArgumentListInfo const*, bool) + 786
11 libclang-cpp.so.18.1 0x000070c9f5abc0ce clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool, bool) + 638
12 libclang-cpp.so.18.1 0x000070c9f5abca0f clang::Sema::ActOnIdExpression(clang::Scope*, clang::CXXScopeSpec&, clang::SourceLocation, clang::UnqualifiedId&, bool, bool, clang::Corr
ectionCandidateCallback*, bool, clang::Token*) + 2287
13 libclang-cpp.so.18.1 0x000070c9f4fc02ba clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) + 2010
14 libclang-cpp.so.18.1 0x000070c9f71ce8da
15 libclang-cpp.so.18.1 0x000070c9f71ce9ab
16 libclang-cpp.so.18.1 0x000070c9f500761f clang::Parser::ParseExpressionList(llvm::SmallVectorImpl<clang::Expr*>&, llvm::function_ref<void ()>, bool, bool) + 143
17 libclang-cpp.so.18.1 0x000070c9f4faa46e clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) + 2990
18 libclang-cpp.so.18.1 0x000070c9f4fbfed7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) + 1015
19 libclang-cpp.so.18.1 0x000070c9f71ce8da
20 libclang-cpp.so.18.1 0x000070c9f71ce9ab
21 libclang-cpp.so.18.1 0x000070c9f4fa7e1a clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*, true>, clang::prec::Level) + 2378
22 libclang-cpp.so.18.1 0x000070c9f71ceb15
23 libclang-cpp.so.18.1 0x000070c9f505fe52 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) + 82
24 libclang-cpp.so.18.1 0x000070c9f505e037 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang:
:SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) + 3495
25 libclang-cpp.so.18.1 0x000070c9f505e258 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation
*) + 344
26 libclang-cpp.so.18.1 0x000070c9f5063b0a clang::Parser::ParseCompoundStatementBody(bool) + 1322
27 libclang-cpp.so.18.1 0x000070c9f5064184 clang::Parser::ParseCompoundStatement(bool, unsigned int) + 36
28 libclang-cpp.so.18.1 0x000070c9f505df7f clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang:
:SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) + 3311
29 libclang-cpp.so.18.1 0x000070c9f505e258 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation
*) + 344
30 libclang-cpp.so.18.1 0x000070c9f505e770 clang::Parser::ParseStatement(clang::SourceLocation*, clang::Parser::ParsedStmtContext) + 96
31 libclang-cpp.so.18.1 0x000070c9f5028431 clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective(clang::Parser::ParsedStmtContext, bool) + 5905
32 libclang-cpp.so.18.1 0x000070c9f505d7e6 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang:
:SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) + 1366
33 libclang-cpp.so.18.1 0x000070c9f505e258 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation
*) + 344
34 libclang-cpp.so.18.1 0x000070c9f5063b0a clang::Parser::ParseCompoundStatementBody(bool) + 1322
35 libclang-cpp.so.18.1 0x000070c9f5065ad4 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) + 228
36 libclang-cpp.so.18.1 0x000070c9f5066c3f clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttr
List*) + 1903
37 libclang-cpp.so.18.1 0x000070c9f4fc4ae0 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang:
:Parser::ForRangeInit*) + 3760
38 libclang-cpp.so.18.1 0x000070c9f5050773 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::A
ccessSpecifier) + 1107
39 libclang-cpp.so.18.1 0x000070c9f50694d2 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) + 642
40 libclang-cpp.so.18.1 0x000070c9f4fbb47f clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&,
clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) + 527
41 libclang-cpp.so.18.1 0x000070c9f4fbc5f9 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) + 4185
42 libclang-cpp.so.18.1 0x000070c9f4fdd18c clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, cla
ng::SourceLocation*) + 1100
43 libclang-cpp.so.18.1 0x000070c9f506954b clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) + 763
44 libclang-cpp.so.18.1 0x000070c9f506a0eb clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 427
45 libclang-cpp.so.18.1 0x000070c9f4f8d038 clang::ParseAST(clang::Sema&, bool, bool) + 632
46 libclang-cpp.so.18.1 0x000070c9f6a58451 clang::FrontendAction::Execute() + 433
47 libclang-cpp.so.18.1 0x000070c9f69f9097 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 439
48 libclang-cpp.so.18.1 0x000070c9f6ab07fd clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 445
49 clang++ 0x0000653d798ef3a4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 8900
50 clang++ 0x0000653d798f370a
51 libclang-cpp.so.18.1 0x000070c9f672e485
52 libLLVM.so.18.1 0x000070c9ecea8d3a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 42
53 libclang-cpp.so.18.1 0x000070c9f6730e16
54 libclang-cpp.so.18.1 0x000070c9f66ec039 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 169
55 libclang-cpp.so.18.1 0x000070c9f66ec43c clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*
>>&, bool) const + 252
56 libclang-cpp.so.18.1 0x000070c9f670a864 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*
>>&) + 388
57 clang++ 0x0000653d798f6045 clang_main(int, char**, llvm::ToolContext const&) + 9669
58 clang++ 0x0000653d798e6fd5 main + 133
59 libc.so.6 0x000070c9ec234e08
60 libc.so.6 0x000070c9ec234ecc __libc_start_main + 140
61 clang++ 0x0000653d798e7035 _start + 37
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 18.1.8
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/quad-tree-f6b042.cpp
clang++: note: diagnostic msg: /tmp/quad-tree-f6b042.sh
clang++: note: diagnostic msg:
********************
make[3]: *** [CMakeFiles/libmp-grav-sim.dir/build.make:109: CMakeFiles/libmp-grav-sim.dir/src/quad-tree.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:190: CMakeFiles/libmp-grav-sim.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:412: test/CMakeFiles/mp-grav-sim-test.dir/rule] Error 2
make: *** [Makefile:273: mp-grav-sim-test] Error 2
```
and the sources and run scripts:
[report.zip](https://github.com/user-attachments/files/17752068/report.zip)
In case it's helpful I could also push the code base to GitHub since it's just a side project.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW91z2ziS_2voF5RUJPj94AdZthLvObHP9s7O3osLJJsS1iTBAUDF3r_-CiAokbIs0plkbnduXapEIgF09w_9hY8mQtB1BXBu-ReWf3lGGrlh_PwTJdXshpA18LOEZa_nS07EBn3bQIWoRFClrKkkcIHkhgpkBbaF3ZqTdUmswEaWfWnZC_W0_bQ_uxaIlTWSRDy3z5H5s8KL4QP1V0Auv7IMkOVemrdJQ4vsqamffmtI9iQ5wJOoCyotHJXk5RJquUEzZOFIP72kXPd1L9GD-W25C8td_N3CsYWXZlBF54JlFMT-mfhGZbppB3_KKO8NOehbNWXb9XHDQWxYkanX7sWheJdHYaE5ukYcSrYFJDeADEZUopSVNS1AoH80QqKcVmDhJUoaqdsJUoKFV4KWtCAcpXqCSCEY2pC6hkqgb1RudFNFS03vBSvrVviMckgl3YKFIz0TOLb8S_UJbCReK0le5t0s6n8_AwcLh0KPlzdFgYTMWCMtd3F8tu9urhYPV0g0SUklIihp1ohDzbhEkqGNlLVQrOCVhVdrKjdNMk9ZaeFVUWy7_2Y1Z_-AVFp4RYVo1NysEKkyRKu0aLIWr1bwhKTPkpNUQ1RzqDlLQQjIkGANbx-rnkQIllIiIUO8qZBIOa3lvGX5QZL0GWVNC5J-ZM_RHWdrTkpE-LopoZJCi4xXjeAWXiW0svAqLUi1tvCFhS_Q7NrCqw3Tk7OmpCrUe5apn8u2iZo1UmUJe7Hwqqxna062M0GV1J1gkwapmnLWSFqIfkcqXoWEcs-heWPhFdA1VC6a_Y0UBZrlrIaqrM3szdZodmsj9Z-QmeVerqumJYRVD1ptSUGzWZ1u0OxXLS6amZEHD3-H7GlJnmGmrXuWQdKsVa8v5BlWygiUStCk12OuLbLt9VSnm_nm5WXeY8VY32yHzL8Eh2j25RLNvjyi8X6CpxZeKSc3U05untb1nKFZK9eX1feOMM_QjH0_-fT3AHhkzFYcZ_6jh3UXsW-5Cx8rc00bzqGSqCZcAEeSPUOFLBwqH47DlgX8E1jwLHfhKAYUYVqtUUVKEDVJQVHXPQ119ydQ9xVpv08-b6pUUlYhFdM7FnRAeD-oGga9n8ogrXS0Y02VISGJBOVpVQxX9MMLFTvVbMUtL_7P0BalKPHHedkHDR1vWSOReC0TVrRzrfpBJRoO6JU1aEO2gHRoaxvRfwJXBF9Zw9Hd4vEzYhwJaCM8VFvKWaXJbwlXYfzm5pcvTw9__3Jxe3P9P1f3T6qLCtmSoZrRSsdWNWnxPoIhVNBE9ZsLNneiuYPsF9u27dBOY0jz1MtiW7PUKoJ4Fe2XO04rqaV7bONqtG_EybcnJiQHUlo4ULGVVooqUgEw8IxNv6Ws_4bkMQ6yY-SXBZCqqW-rB7quSGHhqKl0qpqhgqlg2xJzPMeY72k5gUQRmClzddNUtQv6uWa_PfZSJzOpjKebq-AxU07w7fC5lxHfz8BoJxpt76dREnu4bR9Mag--m6M2sGl8HqAk7TcqbmuovtzdcbolEi4hVWj1mv5CisY8Xqi52gGpJ-3wd4xSVgmp0Y09t-UxnMAjgcC3s-M8Sv66JLVsOPxCOCVJAadZ7A-i87cblhLluQ5f7ig87ij8F62y0TESxop9ozaB1U3_uyHF42sNRq97gxy86aPWQqZ5NzYQBn47ajQBuCTKID4u1oXyywqYe8ivXmo-GbY9t4PHagzd6whKaiDCNURfSQnXVc46wQ6x-ApCQva1FZGU8FBDSnMK_Ialh01JCdl3TO0jlHVBJCxM3n1DheyztMPaCYxdx1OUNIndMPi3wnr5668PKTOJkka6B8EfC3UUGNduT0E6iVw8gnQPgreIG8EHIh-C8xGdfR-dwSuzWfFRhDqf0iIV7qBypkCV2in8bKhuGHtu6nsQTdG97bxgn_PAjQzneBLnxH4nLi1SeVtdZ4pZEEJrXZ9lze_bqehL8laGk2r81-q3hhTKDWXX2VEJh5QY58aodFK8JFVGMyJhSYoiIenzYFqH6qAWED27wDgyabLjjicLeWrjhPTHu9Prkt73JRHyPeD6jVU7_btzMUN5D-Hrd1UOS3V_UCnu26572WzH5EHOeCIUOilEGTHt_UntY5KY9sG4wtl2GDj5Sez2uCkrHeStDyUpil8glYxfl3VhucsDd63kdq8McPt-3brpiUNuucsto1m7IIh16-OG5HTJkxNO0AlCvABOynXHhMzpy168hybP6ctQORaaT2PkR8XDSyR5A5pxM8Nx3M3weLbi5UkOWfjvor2O7ZhEzIk_pr14PMYNtBePO3ovJyE4py3__vPDbX5BK8Jf34PwY3M8gLDmkJpoAFvYqSp2Q-P08bjTV1InHap43N_5tp-Dj0dt9qFba7-vMPp79iBLuWSVhJfdmjMyayk87qJ82wfbPa3AO1ZueS_0LnIJfCElp0kjQbznWYZTopg1U-LiZu9cpkvYa9utUw7D4GEQbUfps3qU5mGLFkvXi7vJHXfgCk3sR9-B5v8BfG-AM6neYi-62bvAU0JR4Cb2SBg3-0g7BC5Y9mrhaBAmXNwp73ic8O3AcyLvY0R3BN8u9bXQJlPFE5aqtp_l4enw-__bdlyn248aDzd_UttxJywObR_C0J4m-cGyYcr0jYWL2Ki8O2FxZuPIc52TJNr9t938bOGWX71A2kiSFHDZO2r9CPJ9H-HHtnHJ7oRFme1nIQT_MdL3jNRxg27-J2Uvf0ojnZIo_egA507JJwKfZKcD3Mqsxg6JHmwLTfANZg8i6K3jDaeT4n-QuqdjYcfpJeS0ovLoYohW605pGJ8y-d1e1Km9rn6vGyJhbw2tfO3KeL9Kim2zVnWnrFVTj8Bp560k-sRZU78r7_H9nT0Sx9V73O5Pe47Ov_QZXjF-T6o1XFe0j4kbdldZ3EmJkR2G7igmxjXc8ima8R0O7k2LAdqH9mDwSFMQYreDv9MJx-7OpqekMkHsZWNrPAm8IsXQRf4BMnfHksYLeeP5iZcniTeS515XFfCv3Xn-NGffH2TYXxmzEsVTIWBg1YendSd0PdjfSfsQaBekIFUK2SUUtKQS-CMn6TPwnmf0d_cApmxzJKmfxyfR6wP3Afs_JvGp9y3znhOZ9MkbT5-8PMucKJ1qyj-W_99jAq2EJ_zgzq67c-0p2U8Q-17yr2zXYWBClzcppSE2nBbnkdV6b-ztOfptTX5r4E4eGPUu1t1DfjR_2x-JfGFZU8B1WTPe7VzuLMzbWdh4luTlUWa7b5PSxcPjwWpJkT511tP5xPF8JyB-5PmDhdCKKyWvsnZDsn3WLnyg3R1vBXO7CRrPLYI4j-04HB7T6Fuw_LoSUnmpARlDeSDzAVc9hF1zUOyNB_SAJHaYZ8PjXE1yz892Z1zRKX73qup5nRvqnGN7ZRS9vYUS-G4WxhHkLvFQmjpPJaHDFcWCc_KqVW6Zbgjfn0SaTd_BM7xEW0az_lFu3LkB3x4wM6Cfu6FtHIs_7viDEIPXuVofj1__ARJlLukdtOhr5veQsi3w186F6jf3TfVAciheByCMHMx0lmU4Gvd3Qeja4JjVoT_uUIIAUtsdhLqM0-3ugEPrAnljHUtWlqTKhopz0FE1eC-9P9F0MTD3_mWe3T0Jf9zBKLk8N_2oXH9hiXhfqL-wRK07BkKdOpvTF5HVq5pQ5XPfJkAncTC5_tXeJ7_FBPudbkxwgKFNosB7j_5l7_vAVRzxEe9h-YdjYpY6kVn2-uFEv5QHtue3bTvP1HGyIe0R1GIoyiNjhTHongJ023E71Yze90UQ5JmPFDWzrWDCih_3rvMN7vC5HthGssCecOfP9SBN0dOTavkkJOHyaU_OM-4ycKb67tB2fdSOY1aUZr217265CwScq3WCydlRbsIXSs3k5YQWkLXVHPCi60IyQI6rsIsaAWi2RZIhAYBoLybFPWJoC1xQViGl03MDySPha9AFHC9R8BR4szqdFbRqXmbrqjFNNhxIhkqWQaHvETNBX9pXOrwVBWRtQc2wIuKYmBWTKnajjJJ1xYSkKSrFulc_gn_Hp1epYgpPFo-Pi-Vn9Pj5Cq1ub25u_3b99RNaXd9cPaDHW_344q-f0P3V3e39425n4O5Y4UgklJ6-Wzyya8ABFQp9yBCRuyGno4BXsqz7N5NneZDYHt7fkv8BY4nN903OD5qikjyD5V-4ln_Z8mneIsu_GC9J0JfU53oMd-HY-rb2dxYyWP4lulKGh5wBZ3iUM_U9pwVgxUNsT-OBFMWeIh5QdD5E0XN0QYME5UCHxSc9qjP13pDmTQHHaR8S7ehY7gKHrnp9OOSbcQ6KvpSR6No0bTpCG83eUsR-B86_aGvB5v-ktZIfRycqwhoBfEakJOmmLcDCq9zI7IShj-0gUnLuB-x8X-epUEoE6HvxoUAbKOq8KdA1SllTZG3JHKob0dbKaeeaqPbKqX6i8nOTIEGrdDeArsYjSNAMkClQMwVkZ9m5m8VuTM7g3AldJ7Bx7Nhnm3MfO3kMWZLlMY48OwxsO4DQ9vMsIREB_4yeYxt7juN4TuBFrj1PAkj91M0j2w0iG4jl2VASWsxVRJ0zvj7TFXHnjhNgPzorSAKF0EWcGFfwDem3FlbqfMbPdcVB0qyF5dkFFVLsh5FUFtAv7-xqRfo1nfuKzcDWk_qxisKzhhfn31_yZ2TcnuP_DQAA__-wltYK">