<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/105904>105904</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLP Vectorizer] Assertion `!empty()' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testcase:
```llvm ir
ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @b(ptr %c) #0 {
entry:
%arrayidx8.5.3 = getelementptr i8, ptr %c, i64 222
%0 = load i8, ptr %arrayidx8.5.3, align 1
%arrayidx8.7.3 = getelementptr i8, ptr %c, i64 228
%1 = load i8, ptr %arrayidx8.7.3, align 1
%arrayidx8.434 = getelementptr i8, ptr %c, i64 276
%2 = load i8, ptr %arrayidx8.434, align 1
%arrayidx8.1.4 = getelementptr i8, ptr %c, i64 279
%3 = load i8, ptr %arrayidx8.1.4, align 1
%arrayidx8.2.4 = getelementptr i8, ptr %c, i64 282
%4 = load i8, ptr %arrayidx8.2.4, align 1
%arrayidx8.3.4 = getelementptr i8, ptr %c, i64 285
%5 = load i8, ptr %arrayidx8.3.4, align 1
%arrayidx8.4.4 = getelementptr i8, ptr %c, i64 288
%6 = load i8, ptr %arrayidx8.4.4, align 1
%7 = load i8, ptr %c, align 1
%8 = load i8, ptr %c, align 1
%arrayidx8.536 = getelementptr i8, ptr %c, i64 345
%9 = load i8, ptr %arrayidx8.536, align 1
%arrayidx8.1.5 = getelementptr i8, ptr %c, i64 348
%10 = load i8, ptr %arrayidx8.1.5, align 1
%arrayidx8.2.5 = getelementptr i8, ptr %c, i64 351
%11 = load i8, ptr %arrayidx8.2.5, align 1
%arrayidx8.3.5 = getelementptr i8, ptr %c, i64 354
%12 = load i8, ptr %arrayidx8.3.5, align 1
%arrayidx8.4.5 = getelementptr i8, ptr %c, i64 357
%13 = load i8, ptr %arrayidx8.4.5, align 1
%arrayidx8.5.5 = getelementptr i8, ptr %c, i64 360
%14 = load i8, ptr %arrayidx8.5.5, align 1
%arrayidx8.6.5 = getelementptr i8, ptr %c, i64 363
%15 = load i8, ptr %arrayidx8.6.5, align 1
br label %for.cond
for.cond: ; preds = %for.cond, %entry
%a.promoted2226 = phi i8 [ 0, %entry ], [ %or18.6.5, %for.cond ]
%or18.7.3 = or i8 %0, %1
%or18.435 = or i8 %or18.7.3, %2
%or18.1.4 = or i8 %or18.435, %3
%or18.2.4 = or i8 %or18.1.4, %4
%or18.3.4 = or i8 %or18.2.4, %5
%or18.4.4 = or i8 %or18.3.4, %6
%or18.5.4 = or i8 %or18.4.4, %7
%or18.6.4 = or i8 %or18.5.4, %8
%or18.537 = or i8 %or18.6.4, %9
%or18.1.5 = or i8 %or18.537, %10
%or18.2.5 = or i8 %or18.1.5, %11
%or18.3.5 = or i8 %or18.2.5, %12
%or18.4.5 = or i8 %or18.3.5, %13
%or18.5.5 = or i8 %or18.4.5, %14
%or18.6.5 = or i8 %or18.5.5, %15
br label %for.cond
}
attributes #0 = { "target-features"="+64bit,+relax,+xsifivecflushdlone,+zicsr,+zve32x,+zve64x,+zvl1024b,+zvl128b,+zvl256b,+zvl32b,+zvl512b,+zvl64b,-a,-b,-c,-d,-e,-experimental-smctr,-experimental-smmpm,-experimental-smnpm,-experimental-ssctr,-experimental-ssnpm,-experimental-sspm,-experimental-supm,-experimental-zacas,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-m,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-zmmul,-ztso,-zvbb,-zvbc,-zve32f,-zve64d,-zve64f,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl16384b,-zvl2048b,-zvl32768b,-zvl4096b,-zvl65536b,-zvl8192b" }
```
Godbolt: https://godbolt.org/z/Thhajqn9q
Command/backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt --passes=slp-vectorizer -S reduced.ll
opt: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/include/llvm/ADT/SmallVector.h:317: const T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::front() const [with T = llvm::slpvectorizer::BoUpSLP::EdgeInfo; <template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::const_reference = const llvm::slpvectorizer::BoUpSLP::EdgeInfo&]: Assertion `!empty()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt --passes=slp-vectorizer -S reduced.ll
1. Running pass "function(slp-vectorizer)" on module "reduced.ll"
2. Running pass "slp-vectorizer" on function "b"
#0 0x00005da37ad02b80 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x300eb80)
#1 0x00005da37acfff9f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x300bf9f)
#2 0x00005da37ad000f5 SignalHandler(int) Signals.cpp:0:0
#3 0x0000733cc0242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000733cc02969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000733cc02969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x0000733cc02969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x0000733cc0242476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x0000733cc02287f3 abort ./stdlib/abort.c:81:7
#9 0x0000733cc022871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000733cc0239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005da379da2beb llvm::slpvectorizer::BoUpSLP::vectorizeOperand(llvm::slpvectorizer::BoUpSLP::TreeEntry*, unsigned int, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20aebeb)
#12 0x00005da379d9e086 llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::slpvectorizer::BoUpSLP::TreeEntry*, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20aa086)
#13 0x00005da379da2372 llvm::slpvectorizer::BoUpSLP::vectorizeOperand(llvm::slpvectorizer::BoUpSLP::TreeEntry*, unsigned int, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20ae372)
#14 0x00005da379d9db47 llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::slpvectorizer::BoUpSLP::TreeEntry*, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20a9b47)
#15 0x00005da379d9c510 llvm::slpvectorizer::BoUpSLP::createBuildVector(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::Type*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20a8510)
#16 0x00005da379d9cf7b llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::slpvectorizer::BoUpSLP::TreeEntry*, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20a8f7b)
#17 0x00005da379da62cf llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::MapVector<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int>>, llvm::SmallVector<std::pair<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>>, 0u>> const&, llvm::SmallVectorImpl<std::pair<llvm::Value*, llvm::Value*>>&, llvm::Instruction*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20b22cf)
#18 0x00005da379db2bd5 (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&) SLPVectorizer.cpp:0:0
#19 0x00005da379db5599 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20c1599)
#20 0x00005da379db9a68 llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20c5a68)
#21 0x00005da379dbd75c llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20c975c)
#22 0x00005da379dc41b0 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#23 0x00005da379dc4da2 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20d0da2)
#24 0x00005da378b51cf6 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe5dcf6)
#25 0x00005da37ab0e94f llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e1a94f)
#26 0x00005da378b544f6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe604f6)
#27 0x00005da37ab0d6cb llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e196cb)
#28 0x00005da378b50796 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe5c796)
#29 0x00005da37ab0b70d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e1770d)
#30 0x00005da37837ae56 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x686e56)
#31 0x00005da37836cbe1 optMain (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x678be1)
#32 0x0000733cc0229d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#33 0x0000733cc0229e40 call_init ./csu/../csu/libc-start.c:128:20
#34 0x0000733cc0229e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#35 0x00005da378362f95 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x66ef95)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt
```
Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkO1tzoziXv4a8UHaBxPUhD07S3una7p1UJ9v7mBJC2PoCEpGEk_jXb0kCDJi043wzqW-qp6bh6Ojcz5HQxUFS0g0j5NIJr5zw5gI1asvFZY2UoPhxIeiOy4uM56-X90QqjCRx4Mrxbhxv5USe_b8sd5VLhcW633nelOTrjevAG9cBsSB5g0m-zLADYkujkNgQ5eZIoRK98ka1tIAsKgeuyKJ24CoKzGNBe8AHiQNXPkgWDAKLu9M4AEZilaB1STqRgkq8i4JFwx4Zf2aLkrLmZbFhTc9mnzkpKCPujtPcdQIvc0BSK-E6IMQOSF0HQM914itLTJgSr30gXE2FhECvNH9JluESGuUbokhJKsKUFkQTB1y7B5HXLo0CF3RGGBme4Ss5ysfkI9kaj0q6Ya4_qz4-S30ykOGfVB_PqR9RBDB4v_Y4GmgHJ7UHMDjlvL88R306kAFPqveXJ9WDc9Qnw9QHJ9WD0-rhWerDgYzwpHp4Wn1wlvph5UWnc_-W-vgNVjxPnpxHPhh5MHq3czAYxjY9PaphdLqwwzPUj0b16VnFX4anK_sM_eFQhn96WgFz-ifVd476YKj-9LwCT7sfnKU_Huo_PbEEp_WH5-iPvKH-0zNLeFp_dJZ-ONR_emqJZvVnwi1RRkpNW3CxxJzlww92j4Mr14FXbi1ILtuv_oEBXOum_V4f6mpZC15xRXIAgB3W9Za6NHGd8Mr1hkyuE96YdnilcVz4vb0DNYaqF2-Ius8wF0YuCDuxwwAbygCGY8qOv2UAU4buIzdmCGBnFZwygFmG9numPz5TBjjLAHqG8MiHWQbYM0RThnDeh54hnjJEswxhz5AcaYDxDEPUM6THYZ3LQwjjLnHecVznOPy-PPyjXMNZDnDgOEp2MMsBDxxH2Q5nOYIDx1G6o3nPDxzhOwZlfDMcnUgpQbNGEdkunfW4jPUYAnaZvigIUo0gUq_D4Y1-gqsoyKhywLUDrgQp0YsFXyQt6I7gomzkNi85Ixa_p1iKFtwRCF56OAp6uPQ9EGSHFkgODRBGhwYEBzj0B43IsC-QfhhIz3QLPbUsiHm81ERQPSeiciErrMQMtqqrGSybw8pZCXKedg7ZzCD3CCM5gy2RPFa2p7igZT2PlzNidhmG4DgY-93jxlAX-rHVD2OZ3GLeMEUEYc-2vUGqRhZUO1S24E4e0Ds56lA7gk0KZIWoxVY4JyXZtLAUlLUEpK5qC0mFFCHMNGTHJzEuNh1U29hLiXlRV0UHj6yVA-HyiUvagiPpUm-glYUVbt-9BwP7ZRMFL6UBdygnHdBYIEOiRVG2Qy0ZQzW3ond1Vhlopx8veIfKpoUy2gOqQozWbZOUzy1UIdxBpGohSStj1ossMNG7fQvvcN1BBRO4pPVL8VT0qOcKYfz09NQhnnQ75_mo_cTbfjuacyoxEnk3nhcvaktQnqEBnA1geYBxxQcNzvKK7w6IoiIVzV8OiM5N25h2kqpGVBwQ8pUNyHe5DfTLTlc0Q1obr60tz3hrKPfIB4mQFoyCDkLWyj3KtsgCpZAtQ4V8M_Ms9ui5pbeO763P-8wSZo9t87Frv9i35cGWB1siW097TOyrsK-K1y3QvY1D-5wyK6uwQoqsqCiz4LZ99YiOdjsEul6K2xlyT3HGqx6qe2jfQhhVHHUwLTqolB0TFrbi9hQzOxD3tF3GLfa0IAwTauEtZYqp8tCoUdPxbutWXuf7o32y9pW3b9K-rbuPVt-jbF-kJZNttw1bVTVWqZI2vbs2Y7s2ZfpDVLRQFOQ91OIGYdbwc4VaeNu9--4297vHTfvu8Ax3QGvj7pH1NG2xaajjl92745M9n-z4Wi93rZu70o9g0qZ1VwIvSDoYgjjqG4GXRh0chSHsG4mf6k8ocA_rgu640Db_i-cZL5VevW-VqqUDVw5YO2C9sR1LLjYOWO8dsL7fbtG_nlj6NFxgXPOqQjqV6wzhRyUQnjmZbJvwi-uAtcQCKbx1wFrhhSJSUR013cC8qmlJxKJo9vuFEg171HIbWuaLDd71cFnuKnuAqFE6T2teK3exqJGURDrwRpb1Ykew4oLuiXAXd253_FmW1hheG58_YI_WfnhRhstGfy46xOrm3gHruwqV5U9jwXLrwBX0Y60OcyaVe--AyDXkcOXA1YD2nlR1iRTRUeXMgdf3ZukHr1XbsaiRQBVRRCz8BTARhV-smEJwphyQOCBt9Tjh1TNVW_febv16hbKsD8GxqCv-v_Xdt1vb-JJvyFdWcL2dO6H7xpzUasK_3B_jw4Mghf7iY3uQbP36gCcg0ltDuHJXUhKhKGeurkvgk6pWrzZqDojdAtGS5EtbI7ffvqzuvriyySqqXORmzcYVpOZCuYpPhwtV2yZbYl6NS2RRC_4volcgayplo9fZaxex3G0Lx1Vb4mKB5NbtB1Cr_k4h_OjmTVX3I8pbuua_W8E3AlUuEptGL_LkB2v57xlbfmvlj4YxyjauZtU7jqJhWIfeAclYiAk-cDlzK3NrYS4MDkK7w3nwhtypMCOpU6YJsl6E3QV5L57neWGOYIxyD2SJN6ypV2mBW0GZMkm4N9MaSA5EAj0_cKkEQZWuLXDtUj34UteU0t-WBwdceS_Q80iWeDpovU_-yCdcFEVazPn0o2F3dMNQ-QdieUn0oif5PLOzIi1GZoNJKjyvCN2RgQ5I2shatFziWo8Hz_zrBcFWUAwhxh4IQAi81qmSZg5YvyTRQxQMr510B15KvoyMeYZlZFwwlplGaYHdh4dabQVB-cMjLcsHWtX2HA6ZWls6YM1qvR5aD8mW2IGrIHDgqr9qcQAM3yNfb3gYKn8pOTb3cYNoRHOSh2y_FJekE3HxNLhBHLkbafJhJFnQAeulab3KnOjF-brmkupCEIhKYmQD_RkcxCAZiwZJXEAXZXqKNaJUbtNnUNY6X3t8kJAeSfAz94GVDyVH-UPOK0RtXqhZp641upIbjKw434-1SW3a9UjyxgJhStLovFIyLH0paZmj4ZnmCGQkO-Mz1nf-WRNhVlvJ-5nvBSFfzMErWOmJqmHmqjm3M9a1m3FeftIUADxEMpKNQgPGoUmJl0QfCY1289-Ky-fGAXnJuETgtERgDH7TEoExGIUmmJRIngXxb1AiaRbEoziEkzjg0PfOiAMWBClypTXb1fnHYmEX4W1EDvz3rzUxyM8KTxL63ig80TQ8RfyhSfYfViZJEY9n1Hgyk0QAF39JHL6jui0ceH3A_kRlQ47KYbAJHFF_ZVKJpt0GGB7Q6C3fiPmGMEm-o_pNPdMJ6pjV7l_fYLd71onSnChEy7GUW0TfdnZkhN61fvlVCKTKLbr-lcyPB9Bq91q4G6TRm0K_VnX5AbN6bKtyomBq3ScNggwAXIwGQTIeBBnI8lDbghhnrxVvpMtQRWRtNnapNf4PXfacKVT-0JtP44TpUOL1nhvcuyeGaWBukELf7I_s5lNzb67j7gVisuCisqcW0znW0HyjmUDiVVMMZKXu3bfbn701x9skHZV0EpUwTNNheQwl3CIpJzPCH1wcIjMMxO0fX_-H58fVclysh74rJCm-Kjl-POo6I67vCdtx1R_6_o8gs71_pGzz84-upD-pbLEfpumwbIE3SVCKouSMBP3gXI1i_h-do8-KcoiiZBTlyXYsy-MQnxHl6y2iTH5lbWCSvyJenxWLNDY_pD3EYrL_woGfeadjIRpmhtLQ-XV_vDf96mBUIvFlx8tmtso-NPUdUaxWP4hsSiWPer5xXs-y3PCKMqS4sEudqUApm6rWFl8jvD3uvyEVYjnJr-iMzj9rRSu6N8dCP0iFxOOXiipFxKHylzUSaum9b-oGcJqnHIF35el9OVoxVL5KKr8jhjZkvBLomT53dsy9HI02gmC0EUyy0MdF9MYKTofgO89JOe_JuD6PYveh0HQXF__cmJMwx8XoWAKM9pwo80gaDDcTJsy_Mv83jSQgPkqD0ZIURJPqDYK_pHr_thT8pqkjkRdMBkE8GQR5hIcnC_ZPbe55Z67OyCpHtdm6zQXDMpwVipblk2s4jfDobAEkkxr24vS8Gu5cv35n_D4QoLdK8J8RdRLieHx7ANJJ-WWxl79jApgL9e8QQUD8OPbyYQjHd74JjBEJh3UrGlN0t7QmJWXjTf6dEpRtfpBirmjf2Ot8R3hr5JxaxdpF9JSK8_LPRtWNWtNyRsi_1f2GOysh0KvGDpNnYlI2G8qOvwcH-v4Iqb_fh9f27_dG208kpTl71ktgU98zXxleqwfFeTuDWC_-2_7G802qn0TQghLR0dnT13Pfn1KZURKRcDS2xxf3CYxwRnyX1-o7ouxTTIqTjPgjk8DkRjXNU899eChphh-kQkI9YFSWD_3FKpbN8dVve7k8x2R-EBWaO-vooBVOtZLAcw0PZVRNFVlQS18Y6fYu1_xhKjhsmqZX-FboyJU5L2aFwzjVZh9kh5PMgSINXSv1UxIXkSIN-8TtpY6q-_XPe5ceDnS0IZgLYn5FRHJb5n-fXbO_-jPPNW9Y7u4ocrVkIi7yS5inMEUX5NKPQRCEMEm9i-0lxiCEOPCSjIACwzAIIi9MvRCnRexlEF7QS-CBwEsABCBMfG-Z5p6Hc4I9TIif49AJPFIhWi61kUsuNhfmh1eXvpYTXJi_m5Dm76wBYOTZNb0OAE54cyEujWdZs5FO4JVUKnkQo6gqzR9o3327dQ8bRie8eeevyi4aUV5-_GdjrQO7S_D_AQAA__92-QPW">