<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56423>56423</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AVR] clang crashes when building a simple function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AVR
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
benshi001
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
benshi001
</td>
</tr>
</table>
<pre>
For the following C++ code,
```
long map(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
```
Build it with `clang++ a.cpp --target=avr -mmcu=atmega328 -S -O3 -Wall`, then the following error rises
```
# After AVR pseudo instruction expansion pass
# Machine code for function _Z3maplllll: NoPHIs, TracksLiveness, NoVRegs, TiedOpsRewritten, TracksDebugUserValues
Frame Objects:
fi#-2: size=2, align=1, fixed, at location [SP+4]
fi#-1: size=2, align=1, fixed, at location [SP+2]
fi#0: size=1, align=1, at location [SP-1]
fi#1: size=1, align=1, at location [SP-2]
fi#2: size=1, align=1, at location [SP-3]
fi#3: size=1, align=1, at location [SP-4]
fi#4: size=1, align=1, at location [SP-5]
fi#5: size=1, align=1, at location [SP-6]
fi#6: size=1, align=1, at location [SP-7]
fi#7: size=1, align=1, at location [SP-8]
fi#8: size=1, align=1, at location [SP-9]
fi#9: size=1, align=1, at location [SP-10]
Function Live Ins: $r23r22, $r25r24, $r19r18, $r21r20, $r15r14, $r17r16, $r11r10, $r13r12
bb.0.entry:
liveins: $r11r10, $r13r12, $r15r14, $r17r16, $r19r18, $r21r20, $r23r22, $r25r24, $r6, $r7, $r8, $r9, $r14, $r15, $r16, $r17, $r28, $r29
frame-setup PUSHRr killed $r6, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r7, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r8, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r9, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r14, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r15, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r16, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r28, implicit-def $sp, implicit $sp
frame-setup PUSHRr killed $r29, implicit-def $sp, implicit $sp
$r28 = frame-setup INRdA 61
$r29 = frame-setup INRdA 62
$r9r8 = MOVWRdRr $r21r20
$r7r6 = MOVWRdRr $r19r18
$r21r20 = MOVWRdRr $r25r24
$r19r18 = MOVWRdRr $r23r22
early-clobber $r22 = LDDRdPtrQ $r29r28, 13 :: (load (s16) from %fixed-stack.1, align 1)
early-clobber $r23 = LDDRdPtrQ $r29r28, 14 :: (load (s16) from %fixed-stack.1, align 1)
early-clobber $r24 = LDDRdPtrQ $r29r28, 15 :: (load (s16) from %fixed-stack.1 + 2, align 1)
early-clobber $r25 = LDDRdPtrQ $r29r28, 16 :: (load (s16) from %fixed-stack.1 + 2, align 1)
$r22 = SUBRdRr killed $r22(tied-def 0), $r10, implicit-def $sreg
$r23 = SBCRdRr killed $r23(tied-def 0), $r11, implicit-def $sreg, implicit killed $sreg
$r24 = SBCRdRr killed $r24(tied-def 0), $r12, implicit-def $sreg, implicit $sreg
$r25 = SBCRdRr killed $r25(tied-def 0), $r13, implicit-def dead $sreg, implicit killed $sreg
$r18 = SUBRdRr killed $r18(tied-def 0), $r6, implicit-def $sreg
$r19 = SBCRdRr killed $r19(tied-def 0), $r7, implicit-def $sreg, implicit killed $sreg
$r20 = SBCRdRr killed $r20(tied-def 0), $r8, implicit-def $sreg, implicit $sreg
$r21 = SBCRdRr killed $r21(tied-def 0), $r9, implicit-def dead $sreg, implicit killed $sreg
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r10r9 $r11r10 $r12r11 $r13r12 $r14r13 $r15r14 $r16r15 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
$r14 = SUBRdRr killed $r14(tied-def 0), killed $r6, implicit-def $sreg
$r15 = SBCRdRr killed $r15(tied-def 0), killed $r7, implicit-def $sreg, implicit killed $sreg
$r16 = SBCRdRr killed $r16(tied-def 0), killed $r8, implicit-def $sreg, implicit $sreg
$r17 = SBCRdRr killed $r17(tied-def 0), killed $r9, implicit-def dead $sreg, implicit killed $sreg
$r19r18 = MOVWRdRr killed $r15r14
$r21r20 = MOVWRdRr killed $r17r16
CALLk &__divmodsi4, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r10r9 $r11r10 $r12r11 $r13r12 $r14r13 $r15r14 $r16r15 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r19r18, implicit-def $r21r20
$r18 = ADDRdRr killed $r18(tied-def 0), killed $r10, implicit-def $sreg
$r19 = ADCRdRr killed $r19(tied-def 0), killed $r11, implicit-def $sreg, implicit killed $sreg
$r20 = ADCRdRr killed $r20(tied-def 0), killed $r12, implicit-def $sreg, implicit $sreg
$r21 = ADCRdRr killed $r21(tied-def 0), killed $r13, implicit-def dead $sreg, implicit killed $sreg
$r23r22 = MOVWRdRr killed $r19r18
$r25r24 = MOVWRdRr killed $r21r20
$r29 = POPRd implicit-def $sp, implicit $sp
$r28 = POPRd implicit-def $sp, implicit $sp
$r17 = POPRd implicit-def $sp, implicit $sp
$r16 = POPRd implicit-def $sp, implicit $sp
$r15 = POPRd implicit-def $sp, implicit $sp
$r14 = POPRd implicit-def $sp, implicit $sp
$r9 = POPRd implicit-def $sp, implicit $sp
$r8 = POPRd implicit-def $sp, implicit $sp
$r7 = POPRd implicit-def $sp, implicit $sp
$r6 = POPRd implicit-def $sp, implicit $sp
RET implicit $r23r22, implicit $r25r24
# End machine code for function _Z3maplllll.
*** Bad machine code: Using an undefined physical register ***
- function: _Z3maplllll
- basic block: %bb.0 entry (0x555b3e7035e8)
- instruction: $r14 = SUBRdRr killed $r14(tied-def 0), killed $r6, implicit-def $sreg
- operand 1: killed $r14(tied-def 0)
*** Bad machine code: Using an undefined physical register ***
- function: _Z3maplllll
- basic block: %bb.0 entry (0x555b3e7035e8)
- instruction: $r15 = SBCRdRr killed $r15(tied-def 0), killed $r7, implicit-def $sreg, implicit killed $sreg
- operand 1: killed $r15(tied-def 0)
*** Bad machine code: Using an undefined physical register ***
- function: _Z3maplllll
- basic block: %bb.0 entry (0x555b3e7035e8)
- instruction: $r16 = SBCRdRr killed $r16(tied-def 0), killed $r8, implicit-def $sreg, implicit $sreg
- operand 1: killed $r16(tied-def 0)
*** Bad machine code: Using an undefined physical register ***
- function: _Z3maplllll
- basic block: %bb.0 entry (0x555b3e7035e8)
- instruction: $r17 = SBCRdRr killed $r17(tied-def 0), killed $r9, implicit-def dead $sreg, implicit killed $sreg
- operand 1: killed $r17(tied-def 0)
fatal error: error in backend: Found 4 machine code errors.
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/benshi/work/llvm-project/debug/bin/clang++ --target=avr -mmcu=atmega328 -O3 /tmp/a.cpp -c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module '/tmp/a.cpp'.
4. Running pass 'Verify generated machine code' on function '@_Z3maplllll'
#0 0x0000555b318af1f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/benshi/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:22
#1 0x0000555b318af2b3 PrintStackTraceSignalHandler(void*) /home/benshi/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
#2 0x0000555b318ace1a llvm::sys::RunSignalHandlers() /home/benshi/work/llvm-project/llvm/lib/Support/Signals.cpp:103:20
#3 0x0000555b318aea05 llvm::sys::CleanupOnSignal(unsigned long) /home/benshi/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:361:31
#4 0x0000555b317cf904 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/benshi/work/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:76:5
#5 0x0000555b317d00b6 llvm::CrashRecoveryContext::HandleExit(int) /home/benshi/work/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:442:3
#6 0x0000555b318a7ed7 llvm::sys::Process::Exit(int, bool) /home/benshi/work/llvm-project/llvm/lib/Support/Process.cpp:99:3
#7 0x0000555b2fa1a36a ensureStackAddressSpace() /home/benshi/work/llvm-project/clang/tools/driver/cc1_main.cpp:132:39
#8 0x0000555b317d84ae llvm::report_fatal_error(llvm::Twine const&, bool) /home/benshi/work/llvm-project/llvm/lib/Support/ErrorHandling.cpp:104:36
#9 0x0000555b3066f329 (anonymous namespace)::MachineVerifierPass::runOnMachineFunction(llvm::MachineFunction&) /home/benshi/work/llvm-project/llvm/lib/CodeGen/MachineVerifier.cpp:311:14
#10 0x0000555b305eb6ad llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/benshi/work/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:33
#11 0x0000555b30dbb5c6 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/benshi/work/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:20
#12 0x0000555b30dbb967 llvm::FPPassManager::runOnModule(llvm::Module&) /home/benshi/work/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:13
#13 0x0000555b30dbbdf9 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/benshi/work/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:20
#14 0x0000555b30db6bea llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/benshi/work/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:13
#15 0x0000555b30dbc719 llvm::legacy::PassManager::run(llvm::Module&) /home/benshi/work/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1673:1
#16 0x0000555b31e01fa6 (anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(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>>&) /home/benshi/work/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1012:51
#17 0x0000555b31e021ae (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) /home/benshi/work/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1037:17
#18 0x0000555b31e03228 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/benshi/work/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1193:25
#19 0x0000555b332bcae9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /home/benshi/work/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:379:24
#20 0x0000555b3516f9d2 clang::ParseAST(clang::Sema&, bool, bool) /home/benshi/work/llvm-project/clang/lib/Parse/ParseAST.cpp:182:14
#21 0x0000555b32910017 clang::ASTFrontendAction::ExecuteAction() /home/benshi/work/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1143:11
#22 0x0000555b332b9018 clang::CodeGenAction::ExecuteAction() /home/benshi/work/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1143:5
#23 0x0000555b3290f8d6 clang::FrontendAction::Execute() /home/benshi/work/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1040:38
#24 0x0000555b32840a2d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/benshi/work/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1033:42
#25 0x0000555b32abc7d5 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/benshi/work/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:266:38
#26 0x0000555b2fa1ac41 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/benshi/work/llvm-project/clang/tools/driver/cc1_main.cpp:248:40
#27 0x0000555b2fa0b2a2 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /home/benshi/work/llvm-project/clang/tools/driver/driver.cpp:317:20
#28 0x0000555b326fe739 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()::operator()() const /home/benshi/work/llvm-project/clang/lib/Driver/Job.cpp:407:32
#29 0x0000555b326fed68 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::'lambda'()>(long) /home/benshi/work/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:40
#30 0x0000555b302fba3e llvm::function_ref<void ()>::operator()() const /home/benshi/work/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:62
#31 0x0000555b317d0050 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /home/benshi/work/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426:10
#32 0x0000555b326fe957 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/benshi/work/llvm-project/clang/lib/Driver/Job.cpp:407:7
#33 0x0000555b3269dc30 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /home/benshi/work/llvm-project/clang/lib/Driver/Compilation.cpp:200:22
#34 0x0000555b3269dfbe clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /home/benshi/work/llvm-project/clang/lib/Driver/Compilation.cpp:254:62
#35 0x0000555b326af4f1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /home/benshi/work/llvm-project/clang/lib/Driver/Driver.cpp:1738:28
#36 0x0000555b2fa0c7ab clang_main(int, char**) /home/benshi/work/llvm-project/clang/tools/driver/driver.cpp:513:39
#37 0x0000555b2fa09add main /home/benshi/work/llvm-project/debug/tools/clang/tools/driver/clang-driver.cpp:11:63
#38 0x00007f117e516083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#39 0x0000555b2fa099fe _start (/home/benshi/work/llvm-project/debug/bin/clang+++0x2c729fe)
clang-15: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 15.0.0 (git@github.com:llvm/llvm-project.git ac77649951db17f1126bde08d580ec101f0759bc)
Target: avr
Thread model: posix
InstalledDir: /home/benshi/work/llvm-project/debug/bin
clang-15: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-15: note: diagnostic msg: /tmp/a-bc41fc.cpp
clang-15: note: diagnostic msg: /tmp/a-bc41fc.sh
clang-15: note: diagnostic msg:
********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztHNly2zjya5QXlFQEeD_4QT408ZYz9lpOpmpfVCAJytxQpBYkHXu-fhsgeIq0JVnOTGU35cgkjr670QDa8tLg5WyRcpQ_MhSmcZz-iJI1upiQc_hBfhqwCbmYaJcTbT6xNPUjX-MUBm7odkIc-fgMA5F8ipLVJko6r7TpTYu80y3fRb-LJvZ5CRshzvKCJwiAP6NpDRGGkLloVJOgqwYn-hair8TXm3VeD9QVjol9OchX-XleRHGAohz9iPJHBJ1-TJO1Egud-dstmk5zytcsn-iX9Imj6WbjF-I537A11YmDpks0vdXR9A8axwI8cAxiTnqyZpyD_HmUsWyYHqKjeZgzjubf7tE2Y0WQAmtZzgs_j9IEsectTTLxtKVZ1kz6Qv3HKGFSiYCPo7BIyhmrf-mguFj8m-hz9Ht69_k6E-Q9cOp_z26iJ5awTLb8nn67Z-uyM2LB7Ta7Zz94lOcsaSZcMq9Yf80Y_0bjomJjwemGoVvv38zPM0BTaTaMgLgpEYiz6E8GEiMCEo2jNSjnEouXMHpmgWzNwUh8KqmemOfLOxC_MTEvu8Dw8cBIH5jWgoV3YO2AANw9APhAADsUkAMB6H0A-oEAdgRqHAjA7AMwDwRg9QFYBwKw-wDsAwE4fQDOgQDcPgD3UEPSagiLylGFJ6LrRLgPxDCDE50TaeDyxeTEqF6wy7FT92BOtLrH5LgZZnNs1S-Y42aYzjFpR0DPm2kzluT8peW8MRAUNfQMQHgb6yil49zVk-3qoYbg1nAbdGb91GCtZ5IGuVsrTMSqaQZrzhbdfV1-vufoexTHLGiwR5ttHPlRPg1YKFqzbbtVtewFzj4tOOe04NzTgiu1ckJ45onhnVi5-MTaJSdWLzlYvyUVCAJXB_T17_fBHFm4M8wdG0baw1xegvty--2P-wDoayJBa5TNrd1RZfBooxTTBqDJ6NEaJycOjJMhR41jlMcvUz9OPY-pbiKn3Fxe3gd3Of-n4lJpBetIhEYZCyEHpkLCTiYsygUZpBt4NWXyMc1ySJNmzSqA4NF9Ba3-Klrjo9Aar6I1D0Qrs26yN3LzVeTWCZG3NLv8ei5toe0hMMvJIdeVzqFNSLPCaIO-w9m6A7lU3vL8YgeyPgoZj0Ju-2UDawepMYrUGEVK9kI6hM0cxWaOYtN3sAWMBgfyqXx4QG0ipxjGPBzh-4DdMZawOwZ4ONQfoDRtVIzaGM7h5WAfneFRZHgM2e5acaDKLuY3N9-h0VqtNkWcRdIGJvoFDNnQ7HuJXn7q8tOQn2aptlLGJdclOcoLlcsoI1bWpbINlSSotV0tyfUaptYogU_hNRVOW-FzFS6sVehwjZHUSPUab4ParLFbNQF2RUMZyPSrgWW219Jkwd3WKh3utNa5dHdslVS_vsxXrbsYm56dZdQY9b_BOPNmFt13w9HIggcjy5tp9QGhxRpFbb2B-minFKY5gtN-A-e7fXMkK-qIXGj19WSrQ7KQ1K7nB9HTJg2yyPi_8_8NnX8HSuP8_YxcmcpcpGj7LL7tAXulTmoRnl_uuQi3B7w7g9LGcA8vxm3cxydSeBTp4KLcRnqSfEra27hH7-y2zCrTHBq-YzBqP3h3e3cfHLvnPG6yCqxHTrbeM9l8z2TjHZPfI-z3yPo9oj5W0vdXD_sHztahprgXuUoCtNnnbmTWnal-0Dntzhe70q-ZuMqhCSoSoB56ArR9fMkin8YIXC7KcrnNraBIiNMaqYAA_9rXMmqERwEG8uLU_15ufk1xLIvksSy8OdqzaZqezmxNN5lT73Gn7Qui-rD2w3K3KUq3jFOQKy5ZeR32ryXVvyJjfVXgu2h_LYH_1Dz9VUnv4vu1JP2X7U5elfoubjknpDnITt6miznltXqUgET87ywJRNsiBWkjoxv95cBMxfq7m6v58gplhbcB0ijyijWoY5vyHOUpeszzrbzKJgv4WUf5Y-HN_HQDL3H8VP2abnkqLr3hNcoycR9OFkjwEiV-XABGcf_vc5o9StpyTn1RZIG2gIinPssy4DRLC142i5k0y1I_ojl08CJBmc-jba5IXooDTxQUm219T6fNkPx3x9M1pxtE-brYgAmoe7vFY7oB0AuPJdljBA8_Uv59l_hA3OqLYaKGYtGuf3i78uFW7IsWOdBEFqpawi9pw4o22AiyNIRdEdpSnoGx0xysNEBpiMIoZuVgogZfCEWtWQI2IQ1Uduqq875IEuFMovoBsNr17emdaPhCE7pmHNoRNMFGtIiZGNUlDxqUOI0RqN8Yj8KXigjW8-gSep1ECPiG1nZPaGjFBiQKDZD2rME_6Y_YoSEOHSTNSB50Zy9Z-XDHoySXSn4oLcVpBnH6Y5WC3zIKxlcu0kmuSmH2U3Jlt5EHn8tiK0wdnr4m0bNoiNYJjbMZWC5gMy1xp13fl4hahz4PxNNRj-ASxmcw41iowXlKo0BGtQ-i0pLFA7ghkvSI9BmmQ4IGjXdoBb91TkFlRZ4wMyBME-UZ9T5JlGv06GNUM4fou4gZTYrtraISqCuSDB7BFkUh1YcJVLdEENZbEjU6FNt-6Gri9MOhSZq8bNIiQwndsGwrzdVV1IuAd8_89Inxl4s0ydlzfg1rQNlbilyOkRVcubDlk7M3RINSiy2MxmxYNLssBprmWS2lDEFqc3L1HOUVIx9Kt2GIciG9IdzqWZPNAns4rMilpnxpk3uBvDSNT0G2QqEodd0uoXaLUBJSTHWLwgqQFZzJ4DEPAg6zl6UVHeaJarFa5MCJWH4DHj2J4LPwfbza0CipnFEWW-luQ5XT07tjUNYSX5kLrGSusSpzjXY8fvhRrgiQS6l4fCpZXglc0rZgUapDiSHds6HebVOvWVaoS9SvOqYqE5TrW8S4WDQVr0Vym6jeak3tcLvTZx3PqVjhfxM1hYsePYpXHYsgVB1Hi6Wns35qJvMsSDBHieuxNcjPxzDSpqAKNmIJ0PWGl846qgWeZ_rtaLO4E5OrTOZncHF9Dx83kM35Ly3Uld0ZskqSNAWqmPQZcC17Dwa-yHSsa1Sq6eOIl6Eet6Sv94kPwre95m_EkWmYPXUYPY4sj7VTnlhCUutAA69ZjoGVn8qCKStG2zoxexz4Nnbf5uCvoR5b0qFxQ313EWYaDqn1lkVdwY5zDnu_jRe_fGbxtuIG0lIRU2DjcRdtGYR_YV3lAif7z8v97Vw5_QXK8qDsKZLoPwVbbXOAdNHdNGxFDTdbVVuH1iTYVNMizlcBi1nO3pioX8lrLWsftA-wEt4W-bbIF2J_tyfO3qwG4RHZQD9AK8l9zaO4XlGxSAjMlirtnioJpuxYVbbb_3ZK_CCBykpsbDcCdXoC1QlxUEsUQkgKUKn4rqQuI7pOYM8b-dlVspbeIM2vNeQzowHjS0a5_3i7FRLNOjlZa6ii_Y1RD_K0441BN_A0NKQR_TKHnfH6noXd5io8zXsAf1mbwK7cApuNTXTyVp14PmXugChg65MVm8qbyp3WA6dJFstjIdi99oxlvnyoNmcnihnqqVRKlZva8lykyU1JJzc1sRW6AWnzcyeOvIC4LrVLtqGdbcMR24cu3RJP9RvwVRpwyKSTTJNOAkpcrGkQ-LqCXHAhydoe1b6R-UXOKhM9bpNWklqBbz12hIwh65S_GqJJz2pcDTsDzv1BBL9uE4rcxsaJ3hWxFjqB1ab2Ffl-sGQ1Q6TzutPQ2skfiWNolARdyW62sBzzawhzNPHZsHDHmXuXM7b46dPRrDpC-AZpOOrkk4RCPhmYnVWnpL0B-KT-OqfLxw7jBx5kDnPyIL18MUqDYotYVk9PVv8MxTcwqs44OjnwnHP6IpYe_cJ_pLxaoeaqLKnbBg3HnNLue-pCDPHHVUazXyG9syDNI5SgShwXuJRPi5vlhsbxN8Caqk3LAFPHmdgO7eVDfQohspnWTot0shlihczWOyuXglMazwUG3W5oEvS9e1BPTWOZVtC409hkE2qxbq31q5X__CxPTOBHXgmKhT0SRElJdQaLhlXOaSTuh8ruHjgQtrBEcbFW94sh82aJkpZSyl9OmRA7phsvoPKqxalTY3mvl8tjM3lr6NTzjnWiy0pT_0i96lBUE2rSW-7v9tUUWI608VYeVt3erLgUv-ytSL9SogJJiDu7VZgIUfxfzUNqvlJ_EX7MbltdkTYN80tIkhbLh5vqWIvGV8_ARTZ7FIq2uoGke6mmkdCjOjtMxacw0OOYsURUtBqj7d2uiTsIU9vrDkLcZNGQyU3mvsx_8DUFkYduLU2Rvke6pv2_HThPHgCbTXf3jpFYbuCDq4xJW-YfdCcLrVTQSYh6E8WAsQ3yK0PnvduS08ijxUiVeWjy4LrlY0ZfMKHHDhUMyD0blwr03kTAzciZwE4mUxvPlkbCbtSl3L6CbB_Jfbg4TaMXsrpptkVDI8RjpF-2njup70DePaaGnyjOo7P8WoCX7VQS2_IrBkiTzeu9bF7zbeqVhFb5fEW8jETzk-XnnRzXxPJ2ym3o6mfnLg1E-UuUHF5LVKEe3yqIjmmHIBmOreZuoL6jtUOMbWZiS3N0tFqBtEW0pjxfVcR54ltc4Pda9E2Xf17_aZ_Xr2SmY4ExK-BzNqsfZaeEM5PlD-0bdoHe7YvDDRkqEZfr6Xvrq-BHeya-TQBwXd5WCgbLb9aoi9xko_gDWLmNBKstrTekkaiWk19dw56jvCx0s8VfsjhFxtD0SVSzZYyhqLXPbSNCIH75lTLYnGkzOXEd5RNDaxW96fOBorfZWtTN-bZtGa5r4sDDQkvE8gKmOYHpaMzHGg4123Q9v8b5oMrJ5og-cdX0yEXF4AYol19Ss02z6LnskptvUQ94GUkpHCXxHaEmaS4rM4P6gBltMhkiuuWcx_y0Sr9UheH84WF-8Rk9fL5Ci9ubm9s_rn__DS2ub66W6OFWNp9__Q3dX93d3j_UNNwNVQg6mQgCo1WC9QDOym8cgV6a1yD3kkCrlm_q-QYOfema7wKQPR6uglMpovsFS5-CMz1wdZd-yqM8ZmcT83z-7X5iXir3kqWaLEM_xHc3yYgiS3dRJkpYWV3096ng8dnxFaKmZRD90-MZpCDE15htYAhsluUbrmNQF_Yy2NGw4wefYuqxOBNUTghpilsFyUR8l9Cn6IxohGi2ZmOsw_-Zy0INEhtK3VCHZwJuzCBCxjNByyzl60_8TJIF3pFBZwzpStZ0glmJMixWoZQ-pmlYoaNF_pjys7r5k2TpTPLzX0kd1bk">