<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62791>62791</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
-Wfloat-equal from defaulted operator== leads to ICE
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sthalik
</td>
</tr>
</table>
<pre>
Here's an ICE generated when `-Wfloat-equal` is generated due to `float` data member with `operator==` generated by the compiler. Disabling the warning with a `#pragma` makes the ICE go away.
```
clang version 16.0.2
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/msys64/clang64/bin
```
```console
"C:\Program Files\CMake\bin\cmake.exe" --build F:\dev\game\build-clang-asan --target install -j4
[1/5] Building CXX object src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj
FAILED: src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj
C:\msys64\clang64\bin\c++.exe -DFLOORMAT_64 -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_DISABLE_OBSOLETE_KEYIO -DNOMINMAX -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_LIBCPP_ENABLE_ASSERTIONS -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -IF:/dev/game/. -IF:/dev/game/src -isystem F:/dev/game/external/corrade/src -isystem F:/dev/game/external/magnum/src -isystem F:/dev/game/external/magnum-plugins/src -isystem F:/dev/game/external/magnum-integration/src -isystem F:/dev/game/external/json/include -isystem F:/dev/game/build-clang-asan/external/magnum/src -isystem F:/dev/game/build-clang-asan/external/corrade/src -isystem F:/dev/game/external/fmt/include -isystem F:/dev/game/external/robin-map/include -O0 -g -ggdb -gcolumn-info -gmodules -gdwarf-aranges -gz=zlib -fstack-protector-all -std=c++2b -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -mavx2 -fsanitize=undefined -fsanitize=address -Xclang -fcolor-diagnostics -fdiagnostics-color=always -Wno-reserved-macro-identifier -Wno-ambiguous-reversed-operator -includecompat/prelude.hpp -fno-rtti -Wall -Wextra -Wpedantic -Wno-old-style-cast -Wno-padded -Weverything -Wno-c++98-compat -Wno-c++20-compat -Wno-c++98-compat-pedantic -Wno-logical-op-parentheses -Wno-undefined-func-template -Wno-switch-enum -Wno-covered-switch-default -Wno-global-constructors -Wno-exit-time-destructors -Wno-implicit-int-float-conversion -Wno-shadow-field-in-constructor -Wno-shadow-field -Wno-shadow -Wno-ctad-maybe-unsupported -Wno-documentation-unknown-command -Wno-documentation -Wno-ignored-attributes -Wno-reserved-identifier -Wno-zero-length-array -Wno-unsafe-buffer-usage -Werror -Wno-error=float-equal -Wno-error=unused-parameter -Wno-error=unused-private-field -Wno-error=unused-variable -Wno-error=unused-function -Wno-error=unused-member-function -Wno-error=unused-macros -Wno-error=alloca -Wno-error=double-promotion -Wno-error=ambiguous-reversed-operator -Wno-error=comma -Wno-error=weak-vtables -Wno-shift-op-parentheses -Winvalid-pch -Xclang -include-pch -Xclang F:/dev/game/build-clang-asan/src/CMakeFiles/floormat.dir/cmake_pch.hxx.pch -Xclang -include -Xclang F:/dev/game/build-clang-asan/src/CMakeFiles/floormat.dir/cmake_pch.hxx -MD -MT src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj -MF src\CMakeFiles\floormat.dir\__\shaders\lightmap.cpp.obj.d -o src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj -c F:/dev/game/shaders/lightmap.cpp
F:/dev/game/shaders/lightmap.cpp:11:65: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
bool lightmap_shader::light_s::operator==(const light_s&) const noexcept = default;
^~~~~~~~
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: C:\\msys64\\clang64\\bin\\c++.exe -DFLOORMAT_64 -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_DISABLE_OBSOLETE_KEYIO -DNOMINMAX -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_LIBCPP_ENABLE_ASSERTIONS -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -IF:/dev/game/. -IF:/dev/game/src -isystem F:/dev/game/external/corrade/src -isystem F:/dev/game/external/magnum/src -isystem F:/dev/game/external/magnum-plugins/src -isystem F:/dev/game/external/magnum-integration/src -isystem F:/dev/game/external/json/include -isystem F:/dev/game/build-clang-asan/external/magnum/src -isystem F:/dev/game/build-clang-asan/external/corrade/src -isystem F:/dev/game/external/fmt/include -isystem F:/dev/game/external/robin-map/include -O0 -g -ggdb -gcolumn-info -gmodules -gdwarf-aranges -gz=zlib -fstack-protector-all -std=c++2b -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -mavx2 -fsanitize=undefined -fsanitize=address -Xclang -fcolor-diagnostics -fdiagnostics-color=always -Wno-reserved-macro-identifier -Wno-ambiguous-reversed-operator -includecompat/prelude.hpp -fno-rtti -Wall -Wextra -Wpedantic -Wno-old-style-cast -Wno-padded -Weverything -Wno-c++98-compat -Wno-c++20-compat -Wno-c++98-compat-pedantic -Wno-logical-op-parentheses -Wno-undefined-func-template -Wno-switch-enum -Wno-covered-switch-default -Wno-global-constructors -Wno-exit-time-destructors -Wno-implicit-int-float-conversion -Wno-shadow-field-in-constructor -Wno-shadow-field -Wno-shadow -Wno-ctad-maybe-unsupported -Wno-documentation-unknown-command -Wno-documentation -Wno-ignored-attributes -Wno-reserved-identifier -Wno-zero-length-array -Wno-unsafe-buffer-usage -Werror -Wno-error=float-equal -Wno-error=unused-parameter -Wno-error=unused-private-field -Wno-error=unused-variable -Wno-error=unused-function -Wno-error=unused-member-function -Wno-error=unused-macros -Wno-error=alloca -Wno-error=double-promotion -Wno-error=ambiguous-reversed-operator -Wno-error=comma -Wno-error=weak-vtables -Wno-shift-op-parentheses -Winvalid-pch -Xclang -include-pch -Xclang F:/dev/game/build-clang-asan/src/CMakeFiles/floormat.dir/cmake_pch.hxx.pch -Xclang -include -Xclang F:/dev/game/build-clang-asan/src/CMakeFiles/floormat.dir/cmake_pch.hxx -MD -MT src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj -MF src\\CMakeFiles\\floormat.dir\\__\\shaders\\lightmap.cpp.obj.d -o src/CMakeFiles/floormat.dir/__/shaders/lightmap.cpp.obj -c F:/dev/game/shaders/lightmap.cpp
1. F:/dev/game/shaders/lightmap.cpp:13:1: current parser token 'static'
2. F:/dev/game/shaders/lightmap.cpp:8:1: parsing namespace 'floormat'
Exception Code: 0xC0000005
#0 0x00007ffc72b0ce39 clang::ASTContext::getUnresolvedUsingType(clang::UnresolvedUsingTypenameDecl const*) const (C:\msys64\clang64\bin\libclang-cpp.dll+0x28ce39)
#1 0x00007ffc73965328 clang::Sema::PrintInstantiationStack() (C:\msys64\clang64\bin\libclang-cpp.dll+0x10e5328)
#2 0x00007ffc731e3513 clang::Sema::EmitCurrentDiagnostic(unsigned int) (C:\msys64\clang64\bin\libclang-cpp.dll+0x963513)
#3 0x00007ffc731e4713 std::__1::__optional_destruct_base<clang::Sema::ImmediateDiagBuilder, false>::reset[abi:v160001]() (C:\msys64\clang64\bin\libclang-cpp.dll+0x964713)
#4 0x00007ffc731e47d5 clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() (C:\msys64\clang64\bin\libclang-cpp.dll+0x9647d5)
#5 0x00007ffc732a1870 clang::Sema::CheckFloatComparison(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::BinaryOperatorKind) (C:\msys64\clang64\bin\libclang-cpp.dll+0xa21870)
#6 0x00007ffc735070cb clang::Sema::CheckSizelessVectorCompareOperands(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation, clang::BinaryOperatorKind) (C:\msys64\clang64\bin\libclang-cpp.dll+0xc870cb)
#7 0x00007ffc735045bb clang::Sema::CheckCompareOperands(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation, clang::BinaryOperatorKind) (C:\msys64\clang64\bin\libclang-cpp.dll+0xc845bb)
#8 0x00007ffc734eda99 clang::Sema::CreateBuiltinBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) (C:\msys64\clang64\bin\libclang-cpp.dll+0xc6da99)
#9 0x00007ffc734740ce bool llvm::function_ref<bool (clang::OverloadCandidate&)>::callback_fn<clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, llvm::function_ref<bool (clang::OverloadCandidate&)>)::'lambda'(clang::OverloadCandidate&)>(long long, clang::OverloadCandidate&) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbf40ce)
#10 0x00007ffc7347461a bool llvm::function_ref<bool (clang::OverloadCandidate&)>::callback_fn<clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, llvm::function_ref<bool (clang::OverloadCandidate&)>)::'lambda'(clang::OverloadCandidate&)>(long long, clang::OverloadCandidate&) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbf461a)
#11 0x00007ffc73473f4f bool llvm::function_ref<bool (clang::OverloadCandidate&)>::callback_fn<clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, llvm::function_ref<bool (clang::OverloadCandidate&)>)::'lambda'(clang::OverloadCandidate&)>(long long, clang::OverloadCandidate&) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbf3f4f)
#12 0x00007ffc73448ee9 clang::Sema::DefineDefaultedComparison(clang::SourceLocation, clang::FunctionDecl*, clang::Sema::DefaultedComparisonKind) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbc8ee9)
#13 0x00007ffc73448c51 clang::Sema::DefineDefaultedComparison(clang::SourceLocation, clang::FunctionDecl*, clang::Sema::DefaultedComparisonKind) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbc8c51)
#14 0x00007ffc73464670 clang::Sema::SetDeclDefaulted(clang::Decl*, clang::SourceLocation) (C:\msys64\clang64\bin\libclang-cpp.dll+0xbe4670)
#15 0x00007ffc72ae20c6 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x2620c6)
#16 0x00007ffc72a0ee6e clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x18ee6e)
#17 0x00007ffc72ae1356 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (C:\msys64\clang64\bin\libclang-cpp.dll+0x261356)
#18 0x00007ffc72ae0da9 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (C:\msys64\clang64\bin\libclang-cpp.dll+0x260da9)
#19 0x00007ffc72adfb13 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x25fb13)
#20 0x00007ffc72a2ff2e clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) (C:\msys64\clang64\bin\libclang-cpp.dll+0x1aff2e)
#21 0x00007ffc72a2f668 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) (C:\msys64\clang64\bin\libclang-cpp.dll+0x1af668)
#22 0x00007ffc72a0ca94 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x18ca94)
#23 0x00007ffc72adf45c clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x25f45c)
#24 0x00007ffc72adda54 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (C:\msys64\clang64\bin\libclang-cpp.dll+0x25da54)
#25 0x00007ffc729f784e clang::ParseAST(clang::Sema&, bool, bool) (C:\msys64\clang64\bin\libclang-cpp.dll+0x17784e)
#26 0x00007ffc7481f184 clang::FrontendAction::Execute() (C:\msys64\clang64\bin\libclang-cpp.dll+0x1f9f184)
#27 0x00007ffc747a21e4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (C:\msys64\clang64\bin\libclang-cpp.dll+0x1f221e4)
#28 0x00007ffc74897e0f clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x2017e0f)
#29 0x00007ff6196d8871 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (C:\msys64\clang64\bin\c++.exe+0x8871)
#30 0x00007ff6196d5322 llvm::toString(llvm::Error) (C:\msys64\clang64\bin\c++.exe+0x5322)
#31 0x00007ffc74424c56 void std::__1::vector<std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>::assign<std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>*, 0>(std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>*, std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>*) (C:\msys64\clang64\bin\libclang-cpp.dll+0x1ba4c56)
#32 0x00007ffc6bff131c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (C:\msys64\clang64\bin\libLLVM-16.dll+0x9131c)
#33 0x00007ffc74424591 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (C:\msys64\clang64\bin\libclang-cpp.dll+0x1ba4591)
#34 0x00007ffc743ecbb6 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (C:\msys64\clang64\bin\libclang-cpp.dll+0x1b6cbb6)
#35 0x00007ffc743ece2e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (C:\msys64\clang64\bin\libclang-cpp.dll+0x1b6ce2e)
#36 0x00007ffc744085fb clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (C:\msys64\clang64\bin\libclang-cpp.dll+0x1b885fb)
#37 0x00007ff6196d453e clang_main(int, char**) (C:\msys64\clang64\bin\c++.exe+0x453e)
#38 0x00007ff6196d1315 WinMainCRTStartup (C:\msys64\clang64\bin\c++.exe+0x1315)
#39 0x00007ff6196d1366 mainCRTStartup (C:\msys64\clang64\bin\c++.exe+0x1366)
#40 0x00007ffd3f4e7614 (C:\Windows\System32\KERNEL32.DLL+0x17614)
#41 0x00007ffd408626a1 (C:\Windows\SYSTEM32\ntdll.dll+0x526a1)
c++: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 16.0.2
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/msys64/clang64/bin
c++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
c++: note: diagnostic msg: D:/Temp/lightmap-cdbe3d.cpp
c++: note: diagnostic msg: D:/Temp/lightmap-cdbe3d.sh
c++: note: diagnostic msg:
********************
ninja: build stopped: subcommand failed.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXF1z6jjS_jU-NypT_sAGLnJBDMywSz4qcCazV5RstUETW_ZKMknmYn_7W5JtggzJyQnZfWe3MsXkGH20nn7UanXLNlgIumEAF1ZwaQWTb7iS24JfCLnFGX34Fhfk-eJX4GB5A4EwQ_NoijbAgGMJBD1ugSErdOz7NCuwtOGfFc6s0EFUHLQiFSBZqHa6laonWGKUQx4DR49UblVlUar2Bbf8ifqEzoGI-BnJLaCkyEuaAe-hCRU4zijb6PJHzJm61qKwEmZ5fsnxJsdKTo4fQOiGGn6B8CN-7lnOxHLGzd_QaT76a5JhtkE74IIWDLlhz-l5dc0K8w1Iyx-jp2G4Dvv2o_qfMlI8CnvDKtQ023LABOUFgUw1LgtBn-qqORMSZxmQCeWqKrL8seXNcvEswr7lzfTY-iqm7CS6TmFSMFFk0JR6nhYYRLe82HCcoxnNQFhBFF3hB7CCSEkNokRx0oMnsDwP2XZc0YygWd2TwM4Kog3OdXNVY2tQNhaYIduWmgNEa0WQ_Ue_GTu4dC1vFljBBF2qbmpKot9_R0X8ByQSCZ5Y3kzjqEF5szQrCp5j2SOUW95svba8mdhiAlzVZnSzlTkue0lZ9or4j3qY2Xi-mE4UdWcLbGarYayZgiBqp2BPluVdWt6logvZk9ni5ubuarxah31kT-ZXv3yfryfz5fhyMV3fXC5vFtPVdD37fh2t5jfXy9eb_H36j_kNsifXN1fz66vx78ie3M-vfW-9mI6v1-PryfpqOr5G9mQd3a3Wy2n0_W66vr5Z34_vrufXvyjJ61_Hy_X092h6q8ey_ImjShfzy-j2dj291gOOl8vpXYulrbubXt38Nl2v7sbXy_lq_tt0Pb-OFt8n0yWy57PaJJUdeDNtB96s90q54AmyqXgWEnJ0qgE8SeAMZ8q0C84x-dleOd6wKv9QJ7vMqg1l4mOdKZOw4VjSgv2kgD-E7kJZklUE3u7WXWAfVf5tOR-jPs3le9U46MWLmDI7x-Vh3xsH2RtkbzYkRvYmKbIqZzZlaYHsTV6QKgOB7A15xDy1Mcdso7__afmTPzMaIzsVEicPdskLCYksuK1dj5DE8ifN-vRUsx0VNKYZlc-WP9lSQoAZpTZlGWUg7H1dUmQFtwnFG1YISROB7Bzvnjw1JmZU0j_B8icVI5BSBsQsxoRwEALZv9d7xklx6cE3W9erntkjfhbIvmeFzUEA3wGxc5zwwqYEmKQpBV5X4zymm6qohM1BbUpA7HazRHbDsNoasZqtkoP63tuWJbJTJVxKiux7zdc9PEmOkX1fAsFM0qQeoMiILeRzBnaChazLSkyI0vZeDfkst8qZ64qG7dHQrsc0Sj3nVOm-rW2OmxUbmuDMLkq7xByY3IKAhpM94XZascSWkJcZllBXikcqk60NrMqbgYodcCBtBYEUV1kDYpMVMc5stU9KXinjaYaAJyptSXOwCXSqaF5mNKFSOQG7Dm6SgrURQY1hi0nxaKcUMmJTdij_uMFhSYNYYjXfzzHYFRNVWRZcQtOOFEmVA5Pa99gVe2DFoxogzzE71aTBvGGF4gBLyWlcSehaV9eu_gRe2BmwjdzamHP83DIvcAp2XKUpcLsSeKNYB85bxfSl5U8Ogj6zomKVMtISc5yDBH66ltMdlnDIT6fFDnOK4wxOViqreNG9U1mHlj9oo9aaMKtwlhUJNstIUcUZKM-TF8fC3lybhw317JlFj4Af7J1UKorWQGgqj5cDZTucUWKXyfbF0zQL3yh858bw48BJx4frMtn2tk9PvVPj_pvHRPbVBNlXq08I8uyrmZbSxMBtQGxICaL12gqiVkoQdaX0CLKLzwCTnCTsdI8m4H1_e3_supY_DgMVHjdZkbrU3pcrF67XrLooC8pkk3zpjAsVHFmeq66oQLUTQFZwaSZ3waQGFRdFhtqx1zUchdMf68K1qL90kjpvqL0katt4oeWNUF3GCnhKoJQKDmocuOVf1sMhK5j-q_6vLrhdTMfLKRJVnFOJMIqrDeKgnKjKNbdSlqKmTXFG5baKe0mhAqks27X_qDWtMhMVpwhR6elEysO2Jq5zTo7FFsU4eZAcJ2B5ESo5lLxIQAggSBQVr4tVTyxEkVCds_KKIZFwWsom1VyqCAaRKlfzVBc5PcsZtZka5hvt0sU-LQyiw7TEyEz2yclXfvKVn3zlJ1_5yVd-8pWffOUnX_nJV37y35ufdFOU4yylTVSMXOWvla64Kqb9uZzFV390nlJxZVeoxFwAR7J4AIYsbyCUH0ksb1AP4f30EMN2BCVZbRUM5yBKnIAS35KyH2CqMxG1mKKCgOrnPEWO_i9oExLPd5DzpIoGaZoMvNhJwB8hbVR18jNerqKCSXiS9fcNyO-MgyiyHZDvCsbquQSVFL30OdFAQZ1AktV5kuWNX3Imyxv-6OZFRuPaztWUkiyzvEvnyRsqrJY3elHGPVTGH4WB7w0PlVlCjuurW06Z1LexmKTav-vMxvKGCthHIbkOqCENTJ6ByQU_cP3TmKY5lVFtPJN9MGN5w4rp-5sqpZPnoBuFamwDnN8B1x-4PtIBnwK0XrvtRaEtCWfrdhdfx1iA5UcnNZnnORCVQSo99G004Cq7THGmOk3rVmrPlFZwiWNq-eOdGzqO46rk_LxJGIVKC0PN_pGaJDg9B-rqhfwWuq761-m688GSwAAbGGA97A4Hzmmw0RaSh5kKEKL6bESnRIcrcakT-0WRNBlWdCho-lRyvRLfUXpJGebPN82u-3fKyDlaY08pZWgdGloHzsBJ4je0XtI_IQMhftOJSq0-aHiMCJODsQ5P7kDos5jotKqSV9owvbCj-Hm93-T_czlNhooyg9NBh9N-EL_F6ReLikVFksHi0GCxDwSPRq-wyAFLUI5BUnZJ2U35E6vxlB4_s1zP0DlUKhk6j0ydB30nAVQfl2a7vB65DfzXHFLLj3Stqe_NDnhWYBJhRijBEuqz0v0GkOAsi3HysE6ZaRRHHZfQhB_KRjOQsK_pmKmejCMDOpI3oaLM8HPL8otSY5Wi3WmFTpCsjPMHlvlJ_Ki_Yx0cDjKcxwSrsO7dnYdZwTZI_fkREc3p9UdNJ06VZexNR4VgTtd0Qhd_mc6X6ZwwndDFhum4HdPx0376ZTpfpnNsOsoyDNMxs6x-fwjwyiY90Seek_rwEsiHIudZQ7LKaI-3ZGOs7ijnBihxolQzdPe7uieB-7-qexK4hu5mZtcP--FrydISpIK8h2Wq_Io2HSLOgA4KmQHdyPM8DJ6ThIeD3-rzo4PrF-ZTymiNaNjpQNlGqYLrG9ZHLulIJlk1Z_5zlhbt4cxbvRZYQt1zLCVf0P1hzoePcUKluMFMaDLjAITwphZK5V94UZWvErIsITlW7IWq9ozrhOJa0fqs_8epSdeCDqHOCn6H2QbmjJ5LmjtUnBikDTrm5PrB2-aklL_hB0Y1Z-3txS6Jb3PwvhZvTsQ4SUAIVadvnZxnT0pzg5phhxqH4NEPqcH1XWmDoVeX3acT1LWjTyVI6W8QNDIJImlsnlEeETRt7kQfEPWfIeUMtQOl1aHannn2jb009d72M3PGgF-3p-4q4tnHXcscZ1l9GmVGcYdCzP7K5SqV-5XlTw3fa574vulwfp7WS5xhlgCZQEZzKoGvOE4egJ8ZlLlY0Wfw63b5DcPhm_weUvsTbvpHnHzeNu5ipYOhpNfZrBI86r_XuXyump-x5k7sZ-fsUooMgy2_62n6QfI_6Gn6QWKo3e-oTXDwtpGsinIBO8jquNTIwEr8zwpuZcfN7EMgnUaeOkTdR8JX-lGgeV4WXC7l-emYFyh1DH3N2HaUDob9Y886Xq5eTaNV3vry7xkmOFBDG9iM6LI_dFN3aMzFjKvVx0h9Zt2m4pBUiqjzbg-mIzWYgcYI2_oD7LlgoIma1wXre5UJGHgaiAaJHfhnOvXUU4AMxEOTv9EAnNQ8kdbYXoDv9t5k-JZiZy46x1VADKQHYU3ojkIyHA5clCTuOseUGbv34QHMFvOXu9TN2YtR5kVoV1DyfsAHz7ZqrArHIdDDm_AaaKC2lRd0slhKTtnGgDzVD7h8DICSbwAwdup-3-snQaiVPHEzeNcGOcdV7V3ik5UxFjRZi1qTmmdF5XFDVbOWHFMp2nb1NBw3rZ8lamKupmH9-WHzvzT65qMb6beb_-qA62Xh1OeA_wVI__IQz_DZMVbL11jfh0FqGKep67vJgYOJOBbbO9APeD4bj_vcVWyJU8ieDd_TOWTWjqLeG-tT5HdiXyx-u7Ld8OVhCAXLwO13_VIwMo42Cae7Nm6KIjeqn97s7tkn_fybFnCQ1-k5b4Kq16byP2getfnWYdEnPESljCUYmbuREaz2fUjiOHyVdL2L46NIqZ0JY8vvdNQP2r5y5PhG07ERIp5PQKj0MwgIugSAeS7wHgL-VsTide3_VsQLKqSh_cmzhHlenvZIJabKMo4PCN5krrGhT-YPzLzffJan33eGQRq_BnFycG1EjidCxtd4___g7xz_PFSEGIwNOgFgP_Abi2tj1Raodi3jj8eeSrIx9LAztOu7Abqn7ApTFt2tlhJzWZUfGUpJMobqxuOuH4Yo_4RxQmP99g_CaeKnfRiEbv9A8H39UydWEC31uza-ZwXR36d319OF7_Umi0WTOYaukfj0D4Jk0neGoRdi97TYfyxX0ystlkmSZfupD1SXvcxGD8sfo-Zp9XE95yhtcjjUvo6QYpq9_AqNCgixvq1bCUD2TpcBIHqQao3O_RWYf8ePwBxozAqpn0l-eW0H5UItQdQSfsbn4Cdmmncsx6vVOPoVrX6dotnNYnFzP7_-Bc3mi-kSrW508eX3X9Dd9PbmbmW1bzbennpHcijUynv1Pcl9Aw5Ib-BAEJZ7ke9iYFIzuYK8PHgK3E5IDD55eUj9E2SJ7c9PzCdND6PsD6zE1r_bI2RRlkD0T-JUsWn3vc6vBX0jFz4Z-SP8DS7ccNj3B6E_DL9tLyBwCRmEeDSIB4PE94fJaBgPceD5cRimJPlGLzzH853AHTqeO-qHPZL4se-RsO8O_YSkntV3IMc066ndpFfwzTf9Vu1F6A1G7rcMx5AJ_TtTnsfgEelKy_OsYPKNX-j3ceNqI6y-k1EhxYsUSWUGF8ZryGqV5-1LwkCQ-ZoxygAToVb2PJp-q3h28fH3gTX4_wsAAP__VCmVwQ">