<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJzlWllz4zgO_jXOC8sunZb0kAfnms5Wd3Wqk-l5dFEibWsji1qKyjG_fgFSskVFjpNMZmpmt6tjWyIIAh9AADxSwZ5P7zacrERRiMe8XBPFa0UyWnOiZL5ec1kTWhJa11yqXJRkRfOikZzkJZnMnbtGlrePuco2P2i55telEtfn2wpaZhPnYuIszOeVkETBMC_ZKEFEljVy4p2TR062DYy-oQ8cmZdNUcAXuflyTahcN1teKpSG6UZRYjthXPIV_JUZp2nBJ14cTLwEBSDkmjBRTrxIkftSPJIN_D3QImcgS16TTGzTvKRanLwGcgRirz4085qspNhq0b9-_fmN1KKRGTYx3V7lBWcE1N-QRaPE1cX3iXd2t8nLr3ffgd-N5HWzBameUbsa-AFqRV4izDB-RaUqngkQVaKscxAezCBJJjnIhJZAIWslEVhL2JRntEEDgViZpPUG1ARRS6EMlkYibE1BERgQfjR5YSQVjeqEJTBaJ23fWgBe-988egEIyZqMsxkYRL9jfIVsHwSAOQkcB2DPYzLxwvoRdc19b-It8LmCpoRMojPTj5BaewvpUxc05QU-rqVoKp9Mwh01QULnJZFrEbjHCLxjBP7RIY6O4R4dxD06SnSUxXGK4ChFeIxihIVnEYxwsAnmxwjiYwTJMQJ3xC12FJPwou_RrY7-omtP5b4nf8rVC2LvPcT-G4n1854Up8cmJxP_guB3N2nCM6IjH2jXnxMX-gU0trNq3-r1W4dd3T0WBAIbRMxu0qZU4rTdT9VNjpGzJZVcacpW_sjCk_GsoJKPszoSmbshMKxMosuJdyU5SHwF4Q0-gS-Evul3l0yzF1HnkUoMngAhEQ9cypyZOAl5Q7AG4qeCNAFyQ-aq4EmHwad4vpwH06bEFFBOIRo2T9N12SBY099aNnxqGOyg0mLgOCDSBgI3fN3T3xv4KoqH7bSS4t88U-0jfuUpfN5BrK4hhm9rePhV5QV-3-bbqshXz-dXv8yyqgKmQRw6yDsVAt0kpoDY81Y0EMIp5JyKZhxRAkfxF73e3ytl3h1Kul6spTH9dPt1CdkMbIIOcf3jDJMAlxP_fOJfwuu5GYUsdlkZYv4FJMCFaZwTfDjrHiaedwt4F3zK4HWXjNp4XkNigQyjU3fKeYkVBQPTQSdIwDrd45MG9-br5eL2ktRNus0VoZCc1mDqSkiF5cBGqapGJbwr-L8GGzbpDNJfD2zbBHldNxyR1qVBXmZFw_rJMaXZPWRRBPWcVDCQFBkHlVmbzvE19oTiRGQ5VdAgG1AsAy9Srci3CpgQ1myr3fzFCie5kWIt6XZfnoz6zJsd3EWeYOd8m_8OhjJTceL5DnGeHPgXrRhLgmyVpZFP9saun2vz40bmpdKy3hmFex4h6eNSQDnB6VYbFLJ0qXRy9uJXJZ7Ndg4On1gH3TYVWmtWi5kbgIWg6nGe3HQOUu0jCIjtDsSmScDHxP7RlLf5uqTFF7BDASWnFukTJQtgYEsyz5bMjfnKPzYVz9GbfvAMY8bzuSgVf1LXMDtNqxFd02AoRGjPSQN13boEhyoEhBPQaIxHGxUc_beT0B9ImDgJt7tbkHVjvmeIoD9ETAPfcxyyXEJBqoTkS6laAxiE20C6C6CmoVIb8CiGgDsGbORiYR1amsxDJ05cImkOFSzar9ZqdNYEn2C8wtnclPmTefGgh4Jh0fzYb5aBIjqGuvth5vYwPg3hFU0xqmjGihk99CvNIcaKINpziIYcAndFIJ8sjVDLmq9xji9hDdEY2QFylLwQlG3rdUZVKxl6TLxnHI8xXpbFEjsumdhSWE0d5pdEqKof7BkmNsMg8VzvDcbK0ExzbSY_9LBg3eVi37VizNzPIjaffyQ71e07k4EOJKU2J-2b-tlp_xbct1a0VFdCN433uOAr2hQK2EIWQwaXJrWRl5m3NwFQZddWOU1i9iGVIV1Yep7ROs_OCpHdaz3fIIk3kCQOw6AfKff9XxuoD8-dLoV2Fcl1uRKwiNTQz23KC7G9k5z_WjGK8A0Z2QpDyq8P8FlISZ9_8JVlwd84vf_5RdvkI_F8J7-upoZhnQNKlg9bQXOeMM_hlOSgFdQqD7x4vj2AIwSbDFV7odNfg6LlIDdQh4w7STDQzk1h0nau0akAHHRS-nz1sOITEpX8U7QLB9o584yNaffP02w-1Czw-fgQyGM8pBxUdAHJ87nO62-0pOtB-Nx12oXED1RUsGakEnQfzD7fT0ANa_ZZ-dOPvMSNWE9SxhWsAtpCFRT9JhiMPCrvIRNofKxG3GPj8oEzgwOvP4QOQYT-Jri_NAFqzYfBz4kAXQt-q8oIozT2udtHCiF_Tdh_OnAtWudQu9pYefEcoLCwsgqo2A9XmfcZrvrnYfw_7vRYnOLC-ByA_oWXtv14BNbpm89zBq7OnCjtiflNb-bciU4kNMuC0QqC_LjCpsO71G27fLKjpqCIpalrO-rcZe901E618zfi81mOtsPnsJv95ai_4mJQK9ou5g1cbM694A0zfQzufxpMh5wzAAgsjPxBFE343D22frrc5go3HLdp8fyFFxVvp-SPpmw3vvS-4k1e6ZMr4NbtxU5wvZPd85ItdsEUVvWmpSnz_zR8WSkbCNz0qh4lLAGW3dZXrxMzK8clzBmu-JGOXSCev2XcOyGK742qGnWVG3d4y6CDXr0RE9Kqjuug0SrTs3dz_IDRMCQ97BD4lokZw4b2IqfrUtQqz-rLcq2R15r2SL5wCsvtW05lthlbCvZI20l2hMoU6UeIvsKv1xeet0rm5RpXniNRrq3o_2ZO9HmRi4VgZ2tWWgupeM5jHvER27T6G9944lmjeAfJBzZfDwsYRA4IYEloLYgil7mO7_QlvJK4bbkzUV_EjwvXMR3U0X4Gg1vSRbZ0gZdEKxs_ffAvr_XeFIS2UQgPq_PhzDWuAQUhV5YCsb2v66UB9a1IYETd6_EgMvpS7Bd6mr2sPyA4xreBc4BoluxdYW7-Ba4fBy7JMneJe6RWWuxtN2UbKrvYsGirZfsdvNCHmW9TwYCg5dMC9CXcncV0Erpe4JAO0nMXdbQ3Pbe0KH7yDIorc1owIq72CCbzBy5Hg7t9kgJTmrmZZ05f9wOt2mpuKTUo5mxWT5ddaYHnv3gctlyVKMfe1mbs1u7nLph-S0s2nHlH9vpMlKZ2_bkPzvuVzC52LpfZ05PrmocUNzMxUOojXo2SRYwvlkrSHE_ZTPOAHWiHnoxVftduhtQOkGrLaAcw4Os-Ey9Yupoo7g5p_iXScSu8PDVyop4Bxk5edsXNLV1xvAgUv9Vgn3f-xTyQ0_Jhf-BOWeZYAfj_0R0-EtguzJS10E6DzLESin3ONudhwHl8EG0ddOmLvNeZwIrQg45IcKiKeoV00cafT0UhykBJC4VwgELoptF7UYCZWR-GAFq_5nh9b7xKfBGHd45S0Rx9pD20fStqVnn-ueAxwMYCz95C5pHjRu4hQS96v61UP5LjD4H-14L3SbAlMaBiwRYNcrUTuy7Rp63vKQGwl8V2eJ6bRpyR5RJlg4BFpVruTnSzuukUMD-RaKqJ9NkuJBX4dOd75oMKyOGOQ4lh-x6pdb-d1Lph6gYwFuFS6n0wYyu84aqLM7xiqm1k7uqY21N4Y81cd3UhjMHweO90-oD3dGqO11n3pWN_JAK2qfF2kBvMnJmDHd93rWcGBCRdMSdLWcDTZMVXcchoMk_TKEkcP05pkNDQY0682ocZs55E1Q7d-mrp9J0FvDSGm2ULUok6fzJNutgtQP-LXGP0CtwvgC0Frv8WhO2W0mRb61tklwg5WfNSn0QCPqPXkOIaJ8MU-PTa8eoc4Azr9bq7pGtfzz1hpz5L_ISe0EZthDxFQRW9p5scBqMnjSxOP36nKvQ9Jz7ZwBDz1I1jL6XuKvOS1GWZG0RpGLAg5QGNT_Slx_oU7-56Xhs4RG9Dp8abYOHFyR8XJj_1HM9zXDdwEy_w_VkYMh57IVQ5LIjCyJuA88MELGbIZybk-kSeapZps66hsYAkUe8baa0v6XAtO0ioclXw08WBS-8HLt-daCFPtYT_BUemb-8>53208</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
An assertion failure in TurnSwitchRangeIntoICmp
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kazutakahirata
</td>
</tr>
</table>
<pre>
The following test case triggers an assertion failure in `TurnSwitchRangeIntoICmp`.
For the assertion failure to occur, we must have `null` PHI arguments and `nonnull dereferenceable(4)`. I don't know how valid this combination is. The test case comes from the LLVM source code compiled with AutoFDO+ThinLTO. Presumably, some inlining is partly responsible for creating this strange combination because the crash does not occur with the baseline build without AutoFDO or ThinLTO.
```
$ reduced.ll
define void @0(i8 %sw, i32* %p0) {
switch i8 %sw, label %group3 [
i8 0, label %group1
i8 1, label %group1
i8 2, label %group1
i8 3, label %group1
i8 11, label %group1
i8 12, label %group1
i8 13, label %group1
i8 7, label %group1
i8 17, label %group1
i8 14, label %group1
i8 15, label %group1
i8 4, label %group2
i8 5, label %group2
i8 6, label %group2
i8 8, label %group2
i8 9, label %group2
i8 10, label %group2
]
group1:
br label %exit
group2:
br label %exit
group3:
br label %exit
exit:
%phi = phi i32* [ null, %group3 ], [ %p0, %group2 ], [ null, %group1 ]
call void @bar(i32* %phi)
ret void
}
declare void @bar(i32* nonnull dereferenceable(4))
$ ~/rel/bin/clang -O1 -c reduced.ll
warning: overriding the module target triple with x86_64-unknown-linux-gnu [-Woverride-module]
clang: /home/kazu/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:4850: bool (anonymous namespace)::SimplifyCFGOpt::TurnSwitchRangeIntoICmp(llvm::SwitchInst *, IRBuilder<> &): Assertion `DestA && DestB && "Single-destination switch should have been folded."' failed.
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: /home/kazu/rel/bin/clang -O1 -c reduced.ll
1. Optimizer
#0 0x00007fdd94cfcb73 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/kazu/rel/bin/../lib/libLLVMSupport.so.14git+0x1b6b73)
#1 0x00007fdd94cfa94e llvm::sys::RunSignalHandlers() (/home/kazu/rel/bin/../lib/libLLVMSupport.so.14git+0x1b494e)
#2 0x00007fdd94c18ef3 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
#3 0x00007fdd94c1909e CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#4 0x00007fdd98a43200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x13200)
#5 0x00007fdd94650891 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
#6 0x00007fdd9463a536 abort ./stdlib/abort.c:81:7
#7 0x00007fdd9463a41f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
#8 0x00007fdd9463a41f _nl_load_domain ./intl/loadmsgcat.c:970:34
#9 0x00007fdd94649212 (/lib/x86_64-linux-gnu/libc.so.6+0x35212)
#10 0x00007fdd963c7d66 (anonymous namespace)::SimplifyCFGOpt::simplifySwitch(llvm::SwitchInst*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&) SimplifyCFG.cpp:0:0
#11 0x00007fdd963b98d6 (anonymous namespace)::SimplifyCFGOpt::run(llvm::BasicBlock*) SimplifyCFG.cpp:0:0
#12 0x00007fdd963b8554 llvm::simplifyCFG(llvm::BasicBlock*, llvm::TargetTransformInfo const&, llvm::DomTreeUpdater*, llvm::SimplifyCFGOptions const&, llvm::ArrayRef<llvm::WeakVH>) (/home/kazu/rel/bin/../lib/libLLVMTransformUtils.so.14git+0x1be554)
#13 0x00007fdd969d20ea iterativelySimplifyCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DomTreeUpdater*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#14 0x00007fdd969d1b10 simplifyFunctionCFGImpl(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DominatorTree*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#15 0x00007fdd969d06cd simplifyFunctionCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DominatorTree*, llvm::SimplifyCFGOptions const&) SimplifyCFGPass.cpp:0:0
#16 0x00007fdd969d043e llvm::SimplifyCFGPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/kazu/rel/bin/../lib/libLLVMScalarOpts.so.14git+0x33943e)
#17 0x00007fdd9372917d llvm::detail::PassModel<llvm::Function, llvm::SimplifyCFGPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/kazu/rel/bin/../lib/../lib/libLLVMPasses.so.14git+0x10717d)
#18 0x00007fdd957b83e1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/kazu/rel/bin/../lib/libLLVMCore.so.14git+0x2863e1)
#19 0x00007fdd9835fc2d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/kazu/rel/bin/../lib/libclangCodeGen.so.14git+0xe7c2d)
#20 0x00007fdd957bd07b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/kazu/rel/bin/../lib/libLLVMCore.so.14git+0x28b07b)
#21 0x00007fdd98361d2d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/kazu/rel/bin/../lib/libclangCodeGen.so.14git+0xe9d2d)
#22 0x00007fdd957b6e24 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/kazu/rel/bin/../lib/libLLVMCore.so.14git+0x284e24)
#23 0x00007fdd98359e61 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile> >&) BackendUtil.cpp:0:0
#24 0x00007fdd9834da55 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/kazu/rel/bin/../lib/libclangCodeGen.so.14git+0xd5a55)
#25 0x00007fdd986e8e7e clang::CodeGenAction::ExecuteAction() (/home/kazu/rel/bin/../lib/libclangCodeGen.so.14git+0x470e7e)
#26 0x00007fdd971d1030 clang::FrontendAction::Execute() (/home/kazu/rel/bin/../lib/libclangFrontend.so.14git+0x13c030)
#27 0x00007fdd9714297f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/kazu/rel/bin/../lib/libclangFrontend.so.14git+0xad97f)
#28 0x00007fdd98a2b4a3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/kazu/rel/bin/../lib/libclangFrontendTool.so.14git+0x44a3)
#29 0x0000000000413841 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/kazu/rel/bin/clang+0x413841)
#30 0x0000000000411240 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#31 0x00007fdd96e8d1c2 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_1>(long) Job.cpp:0:0
#32 0x00007fdd94c18e07 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/kazu/rel/bin/../lib/libLLVMSupport.so.14git+0xd2e07)
#33 0x00007fdd96e8cc00 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/home/kazu/rel/bin/../lib/libclangDriver.so.14git+0xb4c00)
#34 0x00007fdd96e54ee8 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/kazu/rel/bin/../lib/libclangDriver.so.14git+0x7cee8)
#35 0x00007fdd96e551b7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/kazu/rel/bin/../lib/libclangDriver.so.14git+0x7d1b7)
#36 0x00007fdd96e70171 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/kazu/rel/bin/../lib/libclangDriver.so.14git+0x98171)
#37 0x0000000000410811 main (/home/kazu/rel/bin/clang+0x410811)
#38 0x00007fdd9463b7ed __libc_start_main ./csu/../csu/libc-start.c:332:16
#39 0x000000000040e00a _start (/home/kazu/rel/bin/clang+0x40e00a)
clang-14: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git bfd0cbd4eb9fef85da96bb799038ba49a52d08f8)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/kazu/rel/bin
clang-14: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWllz4zgO_jXOCysu3cdDHpxrOlvd1V2dzMyjixJpmxtZ0lJUjv31C5CSLSpynGQzUzO7XR3bEkEQ-AAC4JFV7PnsbsPJqiqK6lGUa6J4o0hOG06UFOs1lw2hJaFNw6USVUlWVBSt5ESUZBY5d60sbx-Fyjc_abnmN6Wqbi62NbTMZ87lzFmYz-tKEgXDvGSjKlLleStn3gV55GTbwugb-sCRedkWBXyRH19uCJXrdstLhdIw3ViV2E4Yl3wFf2XOaVbwmZcEMy9FAQi5IawqZ16syH1ZPZIN_D3QQjCQRTQkr7aZKKkWRzRAjkDs1Ydm3pCVrLZa9K9ff_tGmqqVOTYx3V6LgjMC6m_IolXV9eX3mXd-txHl17vvwO-H5E27BameUbsG-AFqhSgRZhi_plIVzwSI6qpsBAgPZpAklxxkQkugkI2SCKwlbMZz2qKBQKxc0mYDaoKoZaUMlkYibM1AERgQfrSiMJJWreqFJTBaL-3QWgBe9988egEIydqcszkYRL9jfIVsHyoAcxY4DsAuEjLzwuYRdRW-N_MW-FxDU0pm8bnpR0ijvYUMqQua8QIf17Jqa5_Mwh01QULnJZFrEbjHCLxjBP7RIY6O4R4dxD06SnyUxXGK4ChFeIxigoVnEUxwsAmiYwTJMYL0GIE74RY7ill4OfToTkd_0bdnct-TPwn1gth7D7H_RmL9vCfF6bERZOZfEvzuJ014TnTkA-2Gc-JSv4DGblbtW71h67iru8eCQGCDiNlP2oxKnLb7qboRGDk7UsmVpuzkjy08Gc8LKvk0qyORuR8Cw8osvpp515KDxNcQ3uAT-ELoO_3uktP8RdR5pBKDJ0BIqgcupWAmTkLeqFgL8VNBmgC5IXPV8KTD4FMSLaPgtC0xBZSnEA3bp9N12SJYp793bPipYbCDSouB44BIGwjc8HVP_93CV1E8bE9rWf2T56p7xC-RwecdxOoGYvi2gYdflSjw-1Zs60Ksni-uf5nndQ1MgyR0kHdWVegmCQXEnrdVCyGcQs6pac4RJXAUfzHo_b1W5t2hpOslWhrTT7fflJDNwCboEDc_zzEJcDnzL2b-FbyOzChkscvKEPMvIQEuTGNE8OG8f5h53i3gXfBTBq_7ZNTF8wYSC2QYnbozzkusKBiYDjpBAtbpHp80uD--Xi1ur0jTZluhCIXktAZT15VUWA5slKobVMK7hv9rsGGbzSH9DcC2TSCapuWItC4NRJkXLRsmx4zm95BFEdQLUsNAsso5qMy6dI6vsScUJ1UuqIIG2YJiOXiR6kS-VcCEsHZb7-YvVjjpD1mtJd3uy5NJn3mzg7vIE-wstuLfYCgzFWee7xDnyYF_8YqxNMhXeRb7ZG_s5rkxP35IUSot651ReOARkj4uKygnON1qg0KWLpVOzl7yqsTz-c7B4RProNu2RmvNm2ruBmAhqHqcJzeLQKp9BAGx3ZHYNA34lNg_2_JWrEtafAE7FFByapE-UbIABrYk82zJ3ISv_GNT8QK96SfPMWY8X1Sl4k_qBmanaTWiaxoMhQjtBWmhrluX4FBFBeEENJri0UUFR__tJPRHEqZOyu3uFmT9mO8ZIhgOkdDA9xyHLJdQkKpK8qVUnQEMwl0g3QVQ01CrDXgUQ8AdAzZysbAOLU2i0ElSl0gqoIJF-zVajd6a4BOM1zib21I8mRcPeigYFs2P_eY5KKJjqLsfJrKH8WkIr2iGUUUzVszooV9pDglWBPGeQzzmELgrAvlkaYRaNnyNc3wJa4jWyA6Qo-RFRdm2WedUdZKhxyR7xskU42VZLLHjklVbCqupw_zSGFX1gz3D1GYYpJ7rvcFYOZop0mbyQw8L1l0u9l0rxkR-HrMo-kh2arp3JgMdSEpdTto3DbPT_i24b6Noqa4r3TTd45KvaFsoYAtZDBlcmdRGXmbewQRAlV1b5SxN2IdUhnRh6XlOG5GfF1V-r_V8gyTeSJIkDINhpNz3f22gITx3uhTaVSQ35aqCRaSGPrIpL6vtneT815pRhG_MyFYYUn5zgM9CSvr8k68sC_7O6f1vX7RNPhLPd_Lramoc1jmgZPmwFTSjlHkOp0SAVlCrPPDi-fYAjhBsclTthU5_DoqWg_yAOmTaSYKRdm4Gk7Z3jV4F4KCT0uerhxVfJVHJP0S7cKSdE-VsSru_n2bRWLPA59NDII_pkHJQ0QUkz-dGNN9oSdej8LnrtAuJH6ioYM1IJeg-mn2-n4Ia1uyz8qcfe6kbs4GkjCtYBXSFKij6rWIw8qS8h0yg8bEacY-NywfODA68-RA6BBH6i-D-0gSoNR8HPycGdC34rSojjLPE5-4QKYT8NWH_7sB1aF1A7Wpj5SURQGFhZRVQiR-ucu8zXPWPw_h_3OmxOMWF8QUA_QsvbfvxGKwzNJ_njFydOXE2EPOb3sy5q3qR0CwLRmsI8tMKmw7vUrfr8smOmoEilqau7aiRy97pqL1qF2_E57McbYfPYTf701F_xcWgVrRdzBu5WMS94A0zfQruvxtMh5wzAAgsjPxRFE155B5bP11thcINx21WPH_hRc27KfmzLbuNL72v-EPU-uQKuPV7sTNc7-T3vGSLXTCFVb1paUvxr5Yva2UDgZte9aOEJcCy3_oadGJm5biEOcMVP9KxD8TRW8a9q6rie6vqVl0L4w5vGXTUazBiSjrVcR00WWV69m6OHzAahmSAHQLfMTFj2NBeCrouq0aJvLkq1xp5remA5AunsNy-5VTmm6ml4IC0m2RHqEyRfoToK_x6feF5q6Qo17jynIhyXUX_F3Oiz4tcLAQ7W7PSWkglEU94zCds0-lvfOOJ563iPSQf2Hw9LGAQOyCAJaG1IIpd5jq-M5TwWuK25c5EQxE_LlzPdFRH-zkMbkkX29IFXhqvbPz0wb-80XtTENomITyszocz17QGFIRcWQok9r6ulwXUtyKBEXWvx0OV05div9DT7GX9F4JjfBs5B4hmyd4X5uZf4PpJ4JI8d5e4R2qlxcF2U76hso8Ni65att_BC32Y-TYVDAhaPi3AUMLdWUwvoesFDukhvXBRR3vTc0uL4jeeQ3FlTgsmxNUewaR44HIyuNsnKTClmZt75vR1P9Cqq-aWUoNizmb1dNmVFnj-i8dhy1WJcuxtbcbu7H7hgum3tGTjmXdkr89EaWrXn_vgvF_J7GLncpk_PbmuechwMxMDpT7i1ShZxPhiqSQVeMpmmkfsQDv0ZKzy-3YzpHaATFtGO4ABX_eZecHS1URJf0jzjyqbtsLLUyMnHhhg6uRlV9zc0hXHi0DJWw32eedfzAM5LR_2R-6U544VgP8f3eEjge3STFkL7SzIHSuh2OdsEQ8DzpODaOugS1_kvd4EVoQedUSCQ1XUK6SLLv58KgpxDkpaKIQjFEI3i9-LAszM5jAE0PpV4PW96SrxRRzeOUpNBfpId2j7VtSs8vxzwWOAjQWevYXMY8eN3UOCXg5-W6l-IscfAv3PBe-TYEsTQMWCLR7laidxXaJPW99TAmAvi-34PDeLOSPLJcoGAYtKtdyd6OZN2ytgfiLRqSbSZ7uQVODTjfbMRxWQwx2HEsP2PVLrfjupdcOpG8BYhEup98GMrfCGqy7O8IqptpG5q2NuT-GNNXPd1YUwBsPjvdPTB7yn03C8zrovHYcjEbBNg7eD3GDuzB3s-L5rPXMgINmKOXnGAp6lK75KQkbTKMviNHX8JKNBSkOPOclqH2bMehJVO3Trq6PTdxbw0hhuli1IXTXiyTTpYrcA_S-FxugVuF8AW1a4_lsQtltKk22jb5FdIeRkzUt9Egn4TF5DShqcDKfAZ9COV-cAZ1ivN_0lXft67gk781nqp_RECVXws8WB29oHbo2dtLI4-_idq9D3nORkcxZ4ievHie-mfp5kSQaum7pJuPI4izLHj0_0pcjmDO_2el4XWKrBhk-DN8XCyxNx5jme57hu4KZe4PvzMGQ88UKoYVgQh7E3A9eG6VXMkcm8kusTeaaly9p1A40FpIBm3whY4BUcrkcG_rRVm0qeoTUVvacbARahJ1qfM63MfwDd5Fk5">