<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/64172>64172</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Clang][C++20] `LLVM ERROR: out of memory` allocating string in `diagnoseWellFormedUnsatisfiedConstraintExpr`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          widberg
      </td>
    </tr>
</table>

<pre>
    When compiling the following ill-formed C++20 code some diagnostics are printed followed by the crash dump.

[godbolt](https://godbolt.org/z/xnWWfxeb9)

```sh
clang++-16 -std=c++20 clang-ice-DiagnoseUnsatisfiedConstraint.cpp
```

```c++
template <typename>
__boolean_testable_impl;

template <typename _Tp>
concept __boolean_testable = __boolean_testable_impl<_Tp>;

template <typename, typename _Up>
concept __partially_ordered_with = requires(_Up __u)
{
  {
 __u
  }

  __boolean_testable;
};

template <typename _Tp, typename>
concept three_way_comparable = __partially_ordered_with<_Tp, _Tp>;

template <typename _Up, typename _Cat>
concept three_way_comparable_with = three_way_comparable<_Up, _Cat>;
struct compare_three_way
{
  template <typename _Tp, typename _Up>
    requires three_way_comparable_with<_Tp, _Up>
  auto operator()(_Tp, _Up);
  class error_category
  {
    void strong_ordering(error_category __rhs)
    {
 compare_three_way()(this, __rhs)
    }
 };
};
```

```console
LLVM ERROR: out of memory
Allocation 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: /usr/lib/llvm-16/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name clang-ice-DiagnoseUnsatisfiedConstraint.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/home/user/share -resource-dir /usr/lib/llvm-16/lib/clang/16 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward -internal-isystem /usr/lib/llvm-16/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=/home/user/share -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/clang-ice-DiagnoseUnsatisfiedConstraint-397582.o -x c++ clang-ice-DiagnoseUnsatisfiedConstraint.cpp
1.      clang-ice-DiagnoseUnsatisfiedConstraint.cpp:14:38: current parser token ')'
2.      clang-ice-DiagnoseUnsatisfiedConstraint.cpp:12:41: parsing struct/union/class body 'compare_three_way'
3.      clang-ice-DiagnoseUnsatisfiedConstraint.cpp:13:49: parsing function body 'compare_three_way::error_category::publicstrong_ordering'
4.      clang-ice-DiagnoseUnsatisfiedConstraint.cpp:13:49: in compound statement ('{}')
 #0 0x00007fffed94eb96 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xfbeb96)
 #1 0x00007fffed94cd20 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xfbcd20)
 #2 0x00007fffed94f370 (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xfbf370)
 #3 0x00007ffff7bc6980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #4 0x00007fffebc1be87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #5 0x00007fffebc1d7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #6 0x00007fffed89ab98 llvm::report_bad_alloc_error(char const*, bool) (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xf0ab98)
 #7 0x00007fffed89abd2 (/usr/lib/llvm-16/bin/../lib/libLLVM-16.so.1+0xf0abd2)
 #8 0x00007fffec5e263f operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb263f)
 #9 0x00007ffff4a351b7 (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xaa51b7)
#10 0x00007ffff5262f3a (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x12d2f3a)
#11 0x00007ffff54225a7 (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x14925a7)
#12 0x00007ffff5421d3f (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1491d3f)
#13 0x00007ffff5421d3f (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1491d3f)
#14 0x00007ffff5421d3f (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x1491d3f)
#15 0x00007ffff53f68bc clang::Sema::DiagnoseUnsatisfiedConstraint(clang::ConstraintSatisfaction const&, bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x14668bc)
#16 0x00007ffff58558a8 (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x18c58a8)
#17 0x00007ffff5840039 clang::OverloadCandidateSet::NoteCandidates(clang::Sema&, llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OverloadCandidate*>, llvm::StringRef, clang::SourceLocation) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x18b0039)
#18 0x00007ffff5854e75 clang::OverloadCandidateSet::NoteCandidates(std::pair<clang::SourceLocation, clang::PartialDiagnostic>, clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef<clang::Expr*>, llvm::StringRef, clang::SourceLocation, llvm::function_ref<bool (clang::OverloadCandidate&)>) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x18c4e75)
#19 0x00007ffff5862113 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x18d2113)
#20 0x00007ffff557b6f1 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x15eb6f1)
#21 0x00007ffff559382d clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x160382d)
#22 0x00007ffff4ba3a8c clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc13a8c)
#23 0x00007ffff4ba49a5 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc149a5)
#24 0x00007ffff4ba0c21 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc10c21)
#25 0x00007ffff4ba0af9 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc10af9)
#26 0x00007ffff4bfffa5 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc6ffa5)
#27 0x00007ffff4bfe4c4 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc6e4c4)
#28 0x00007ffff4bfde7d clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc6de7d)
#29 0x00007ffff4c06310 clang::Parser::ParseCompoundStatementBody(bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc76310)
#30 0x00007ffff4c073cf clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc773cf)
#31 0x00007ffff4b61ff1 clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbd1ff1)
#32 0x00007ffff4b60cfa clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbd0cfa)
#33 0x00007ffff4b60cfa clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbd0cfa)
#34 0x00007ffff4b949e9 clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc049e9)
#35 0x00007ffff4b92296 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc02296)
#36 0x00007ffff4b74661 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbe4661)
#37 0x00007ffff4c20320 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc90320)
#38 0x00007ffff4c20089 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc90089)
#39 0x00007ffff4c1f327 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc8f327)
#40 0x00007ffff4c1d6ce clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xc8d6ce)
#41 0x00007ffff4b5d39e clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0xbcd39e)
#42 0x00007ffff6778165 clang::FrontendAction::Execute() (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x27e8165)
#43 0x00007ffff66f50e4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x27650e4)
#44 0x00007ffff67f0b44 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-16/bin/../lib/libclang-cpp.so.16+0x2860b44)
#45 0x0000555555568f5e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-16/bin/clang+0x14f5e)
#46 0x0000555555566210 (/usr/lib/llvm-16/bin/clang+0x12210)
#47 0x0000555555565e49 clang_main(int, char**) (/usr/lib/llvm-16/bin/clang+0x11e49)
#48 0x00007fffebbfec87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#49 0x000055555556287a _start (/usr/lib/llvm-16/bin/clang+0xe87a)
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Ubuntu clang version 16.0.6 (++20230710041619+7cbf1a259152-1~exp1~20230710161636.103)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcW1Fz2ziS_jX0C4oqEqQo6sEPihTv5i65pOLMZOteVCDQlDGhCC4A2vI97G-_apCSCFpW7IySnbupKYeCgO6vv240GhDIjJGbGuA6mL4Jpqsr1to7pa8fpChAb64KJR6vv95BTbjaNrKS9YbYOyClqir1gJ9kVYWl0lsQZBnQNwF9QyPClQBi1BaIkGxTK2MlN4RpII2WtQXRCwBBikcnkGtm7ohot80kiFZBtOj_Tt9slChUZYPpKqD5nbWNCZJFQG8CetN_NVF6E9Cb_wnoza7--rXcQTEP6NyTk0Xd_-aua-AVqzcd3jDOSGisCJIVP1qA34eSQ7jqLIDfasOsNKUEsVS1sZrJ2k5404w0nFTbC-5aLWybilkgQbK0jw3UbAtB8rb7cr0ulKqA1WsLxrKigrXcNlWQvBkKPiWCrL80BzFc1RwaS56KI0GyOtHca1n2Qr6vLqBLclT92ynVDdNWsqp6XCstQINYP0h75wBo-GcrNZiA5uvfGrJet0ePzXrdhBwfscOhcTXERk4Yc4Q_W72UuYE5T0yxdxpg_cAe1zgNmB7weNrGnki6JC_m03Hocbpk9kVIjqye-hahdJL3AvdYjNUtt6TrCuvD4CdueAlnXggQQg4efh7ygCRvLGutIqoBzazSAc0xMmg-6ErnBxsIzlRjCGit9JozCxulH5_GDyHkXklBjNWq3nS-kpgBcn8kWa_1nTnEIo47CnnK1B6cvZPGoTsxuo9W4sXi8Pl85lC1URV0re_f__6BvP38-ePnIFkQ1VqiSrKF7cHkRVUpzqxUNSmZrEB0zZ_ev13cviWmLbbSEkaKdkM0NEpbYhUZJVVp79piwtU2oDdVdb__J2y0-gO4DeiNNKbFqXtDWC2IrHnVChik8YLxb1Yz7nJEo6HRioMxIIhRre6acSQzRnHJcD3QbU0M17Kxff6_tYx_cwsCInNN0SSI5p-02mi2JUxv2i3UFoGTgN60RiNQWezhxllAbwpZB_TGJXMSch6T0GrZVEB2ebbO0rDhYSXrdhdu6paEsJU2VMUfJNxqqNguZFVFQiENhmxYagAS8gqYDpmxYQGl0hCisVCLYz-n_R60LCVo18yZFuE9q1oIcaoYEm6ZrMNSVl3Da1abDlvv5HCrBFSkkZyEjeRhBfdQEdp9kCZsJJBwW2q2hbBRuPLqIFk5q8ots3chaF0rEpZlE3JVo89skKxUTcKyVqFWbS1kvQmxLwm33CFpuVU6ZJVkBk0p2_pB1iJ0idcEyYqS0DK9ARvypkWiwywloW1rcA0bqEEj4C0ShQ4BZkPDWdWxLHcgQjcpQ2bCB6ZrLDNCAUW72YBGQThxk9VGFCQsuboHzTYQdgVKR4uQaGdAb-4ULlQ3rQGMDnOHJUiooQtD7PZ86HSf-zrhBmsEx1_NqlCaR2Nhexzbhdlkchi24RyrkS7IDhGGcqJ9x9Gffhahyr5WwM6_TOmJUf8WHEOlKJvxbw9Mi3P6v-e4o_yzUhRn1cu6XsDgE32fKoYdPvCnAJ532_nRr1fxtDAOSwGNBlwvRbhlXCvXVLSbV8zAspvflcTlKJ6TsNzULcekaaSqg2SVTugk7pIQ1qWSS4u5rq1cxuG7XQg7rIekqrHB-8BVpXQ43HiEJRNCG7kh4Wq9_ttyuf774ve369XXxecbul7evFsvbj8EySomoUIK7LbZR9D3k3KYzGfTnE4UCXek5-n124cY17bXjEoWcRokiyTH9Y-3WkNtScO0AU2s-gY1CejMFSezTgP9AQ00SBZpjBpQMubhLv-jQ2v0lGPJGIL7RFR4okLq1Sc_oD5B9fOh-rKtuatunleYLIJkMSoHXVvTFpXkTwrAHl_6p_DJboOM6yUxllnA0oS48nCG9eNs1XujLwVpEpFoF0VRNCvLEsQ8hWKeEVduObDm0XQPn3DD7IqhL11FlR87afawVgYX0G1AM6yqZG0DOu8Uny2JBtmrkgXWlWGcTYyaxAF9E-3KAvF4gOMRYC5odArw57a-lZuaVX9ntahAm65IvgQmVOlhoiNMZTKLLqEI5XiKkoGiclbwbJ5HWOyDsUrDWve-7oWeyO6VLBqMUSZQT-T0xHSe-2rSoT0FjwvIZ0QzaQDTUtHKSuByU8mCh8vf_-Phv4vDRzrBALsxjvq9jebRCGhMN113XcO9Q1O3-NGJnvAgWUxxlkdHJNMREjErY8IK5Sx9GRIrOjbcKKckHynJPPflc1bM80FIdTuUdcHEmuG-Zu1mdUBzfsc0ccVoQBcY9rj_v0yMRYjB88nsCUhBL6NIUE9RPlTEp0CzpDxsg0kNDwHN29od1wlSKcxdpyw-HXzGin5tQgyZw1CgBg_CfBjmKUumcTF7ta1dEuVN46ztVDGGoo5HPDSJhwmwnNKMlgm7iK6YCpTlKYs9ZSmlU3YZw-J0jrI8ZXSkLBZJeSllKMtTlvxKZemvVDb1lCVllhe8K6y69HALW9Y9nV2sMV8cBx3bb11X1pUTfTLJ_kwyOW1XhrA9uzLPrnw6zVl-GWU5R1mespmvLI2iZD4k8eM96EoxsWS1kIJZuAXbffNfysKh1fgsOuo7to7peqE1e_wMZZAsB13f7hqNWTp5-5LeT-CcGnprsXLDsXTpBYTb1b_vz0Yu5sK8QNI8VvORC1OYTX-QVbe_cuUpwy3T8ow9nrGfunPn1WGb09N02kvnsK2kaSr2-J-yFn_GoS_1ynDMvpxfa6cFZx7xI-1EQLiyFLVfyr8c3ef5d-77N6NxnJxOPW-wElqyqvqiPhZ_ALcfyyXuiL48NjCaM1w10NcrJ-h8OWkfWnfU9hLv_ILJIZCbIXnUX9insyIr4--Q16H-C7P1HIhurbjwmjEFpMzj1K9fpvMkp-I0pwtuP9b_hzm9EIdZhBR5HHplWVqwhOV8lFEN6MHzJ2VsKXcIDYyRqr5tyxK3UUNSFy6BfQbTVvY0EXRJrG7hgimLx4jdMy4ZGZfO2fSscUtm7NEy36ZhZ-znPu_XBz_kx6vLcCjmQBx-a13eHg-9mLN5jNZ6dKQjOiJO47N0LNw9iC3ULyJlZNmlzECUnhnTsRmsnJ81498JnpVekUQzH3xZlt8JSQR_uz88ex6_exa3dmuXqraw-6ETr5M2ZAjRs2E2sgFSnp614YD_o14Br5h2yW5RWtALa7Us2q7sG9RNW1ZVvwO3alz-2e3-fCOhrUsf52bbCVrOpt9xwu_GD0Ge1DbucSnqkVmP-nxEvYCZ-AHq_ypcX4onpMHjyT-z4VGWxNH5zN8fVB_4eqPEY0DzS9YwfIYwhji9A2_EOUt4eRbnTb85GOMcjEE_PxPJXmR0hc_lonWG4D3rYj9as7gszy8472EH4gPYOyVWuGd6LtsN-l3QgkIgQM-CUXmURbxkr7DAnE_Yst64fdFFbUCIng3J_wMbRqXLPJ3D-TV_-Y9_fIBtAfq2AS5LuU86-Utr7--dM5xaFg4H0e6EzRtxmJQXmmwRMuBRNCqL5pTOs_MUodt6emC0K7LqW18XqW9Q76vcl9KDxqLgl6wXX_prdO_qUnknjt52goMH9Vg1PyN7j-D0SvQz1-wIefccMyr5ZmmWnc-Cg4X6YLN5muN_MsM_zuw-STMLR6bfy8MPU4P-7_p7DF_6C5MXLl4LQLI9b_jFK6dRQs9XBmjwR71fd1dQvuvviZzIi6-vFJ_0kPXmeec-cdOFgnaOLHg05WOaovx8wh0ErceWrOXTzPtTyBrH1s8jK8r91DuqNuMS90jnN3VdCPkl-S8g6EIU5GjhkIJ0VMjGIuNwloIvqnkP91B1C6N3ut2wf7bwyY52I9jxb1q1jTtcO7EXOR73fXCXot5tG6X3G_rLJfgcTfNsH5W5U5HMn9q-uP3y7M9FP-PAtOAIw8PpFbPZbJbHmXf2cKMx-9aiO73bn9cBb5HAH7qucgoYnQEq9pB5JWqWldMIvBOFpbtEB_pdbSyrOXjYergeuSNTLud-OssQnIc-9XktoyJN_WNch_NoxL06VY4-MfJyE5bmGYLyUO_rxWn3X5aXUyCcx-stk_4BwfBI27tk0p9mjy-e3CspXgy-I6D7Wbic-gGbjSBmNH7JTaaBSEr9DXc6G4mcQtqva3u797X7HesOql9vRwyptz6k3iWWoiiB5zOyXqOz1sYybZ3ul94h4qbdO717dF86Oe5CUZKmxxtFqH4-spnmM0Y6xa8yDPLZcVe2D9zuJRN8aGv3BpBVBLqAJ1xtt6wW-OWiUNqCcD9kKg3uHQYQZ6S5FlL283gvqn-Bg4jWKeoudqHQ1gAJ710bAJGDKdZr-K1oa9v2Yvs7tSTOJtEk60jorvLSJJrFUZTGWTwP6JsZL8qY0ek8ntIw_hfsmvhf-05xFmdJNomj4y99X9wVf4R_4lWKvou770bcOwruEqcyctd95SZ-VYFYSe29wIGO8F-AuRLXiZgnc3YF13E2j9I8yZL06u46L2YZg6gso4SKcjYv0kzM5yKdsngKRZFeyesOP53FeTqL00nCxTSOiqRMaMl5Ng3SCLZMVhMMhInSmyv3Zst1lsYzelWxAirjXoyktIYH4r4MKA2mqyt97YKnaDcmSKNKGmuOUqy0lXujcul8PV3h4572YLoiQRade5UniwjrX-Tprty6Fy1rHNZfa4avUFU37rXLk5de3G9PWXTV6ur6x1_vcTz8bwAAAP__bZvAKg">