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

    <tr>
        <th>Summary</th>
        <td>
            Clang crashes with "Assertion `!Partition.empty()' failed" when an unparenthesized initializer list is passed to certain macros
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            crash-on-invalid,
            crash
      </td>
    </tr>

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

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

<pre>
    This was originally reported by Chrome: https://crbug.com/1413180

This reproduces in commit b673135bb833a54b16c32e2073d2d7b83c90de66, but I poked around and it seems like this bug has been around for a while.

We (obviously) don't hit this assertion if Clang was built without assertions, but if assertions are disabled, Clang may run out of memory as reported in the Chrome bug.

Repro steps:

Build clang with assertions enabled.

`macro_test.cc`:

```cpp
#include <initializer_list>

#define EXPECT_EQ(val1, val2) \
 GTEST_ASSERT_(bar(val1, val2))

#define GTEST_ASSERT_(expression) \
      if ((expression)) ;

struct S {
 S(std::initializer_list<int> l);
};

bool bar(S, S);

void foo() {
  using SS = S;
  S s = {1, 2};
  EXPECT_EQ(s, SS{1, 2});
}
```

command:

```
$ clang++ -fsyntax-only test.cc
```

Expected behavior:

Clang should emit diagnostics without crashing.

Actual behavior:

Clang emits some diagnostics and then crashes: 

```
/path/to/src/tests/macro_test.cc:18:22: error: too many arguments provided to function-like macro invocation
 EXPECT_EQ(s, SS{1, 2});
 ^
/path/to/src/tests/macro_test.cc:3:9: note: macro 'EXPECT_EQ' defined here
#define EXPECT_EQ(val1, val2) \
 ^
/path/to/src/tests/macro_test.cc:18:3: note: parentheses are required around macro argument containing braced initializer list
  EXPECT_EQ(s, SS{1, 2});
  ^
               (       )
clang++: /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:1027: void updateConsecutiveMacroArgTokens(clang::SourceManager &, clang::SourceLocation, clang::Token *&, clang::Token *): Assertion `!Partition.empty()' 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: /path/to/src/llvm-project/build/bin/clang++ -fsyntax-only /path/to/src/tests/macro_test.cc
1.      /path/to/src/tests/macro_test.cc:18:3 <Spelling=/path/to/src/tests/macro_test.cc:4:7>: current parser token 'GTEST_ASSERT_'
2.      /path/to/src/tests/macro_test.cc:15:12: parsing function body 'foo'
3.      /path/to/src/tests/macro_test.cc:15:12: in compound statement ('{}')
 #0 0x00005582e0569d9d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /path/to/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x00005582e056a22b PrintStackTraceSignalHandler(void*) /path/to/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x00005582e05684b6 llvm::sys::RunSignalHandlers() /path/to/src/llvm-project/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00005582e056960e llvm::sys::CleanupOnSignal(unsigned long) /path/to/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:367:1
 #4 0x00005582e049b7e4 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /path/to/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:0:7
 #5 0x00005582e049bba2 CrashRecoverySignalHandler(int) /path/to/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
 #6 0x00007fa3a3c5af90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
 #7 0x00007fa3a3ca9ccc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #8 0x00007fa3a3c5aef2 raise ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x00007fa3a3c45472 abort ./stdlib/abort.c:81:7
#10 0x00007fa3a3c45395 _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007fa3a3c53df2 (/lib/x86_64-linux-gnu/libc.so.6+0x34df2)
#12 0x00005582e6e56e1f updateConsecutiveMacroArgTokens(clang::SourceManager&, clang::SourceLocation, clang::Token*&, clang::Token*) /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:1032:17
#13 0x00005582e6e56493 clang::TokenLexer::updateLocForMacroArgTokens(clang::SourceLocation, clang::Token*, clang::Token*) /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:1069:3
#14 0x00005582e6e544a0 clang::TokenLexer::ExpandFunctionArguments() /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:490:9
#15 0x00005582e6e534e7 clang::TokenLexer::Init(clang::Token&, clang::SourceLocation, clang::MacroInfo*, clang::MacroArgs*) /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:0:5
#16 0x00005582e6e0da92 clang::Preprocessor::EnterMacro(clang::Token&, clang::SourceLocation, clang::MacroInfo*, clang::MacroArgs*) /path/to/src/llvm-project/clang/lib/Lex/PPLexerChange.cpp:0:15
#17 0x00005582e6e19237 clang::Preprocessor::HandleMacroExpandedIdentifier(clang::Token&, clang::MacroDefinition const&) /path/to/src/llvm-project/clang/lib/Lex/PPMacroExpansion.cpp:633:3
#18 0x00005582e6e49bbb clang::Preprocessor::HandleIdentifier(clang::Token&) /path/to/src/llvm-project/clang/lib/Lex/Preprocessor.cpp:830:11
#19 0x00005582e6e56954 clang::TokenLexer::Lex(clang::Token&) /path/to/src/llvm-project/clang/lib/Lex/TokenLexer.cpp:718:7
#20 0x00005582e6e49f45 clang::Preprocessor::Lex(clang::Token&) /path/to/src/llvm-project/clang/lib/Lex/Preprocessor.cpp:894:21
#21 0x00005582e46b660c clang::Parser::TryConsumeToken(clang::tok::TokenKind) /path/to/src/llvm-project/clang/include/clang/Parse/Parser.h:514:5
#22 0x00005582e46ab08f clang::Parser::ExpectAndConsumeSemi(unsigned int, llvm::StringRef) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:158:7
#23 0x00005582e474e718 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) /path/to/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:2271:7
#24 0x00005582e474d3bd clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) /path/to/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:1905:10
#25 0x00005582e474cfd9 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) /path/to/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:1833:12
#26 0x00005582e46e9029 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) /path/to/src/llvm-project/clang/lib/Parse/ParseStmt.cpp:248:16
#27 0x00005582e46e898b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) /path/to/src/llvm-project/clang/lib/Parse/ParseStmt.cpp:116:20
#28 0x00005582e46f160e clang::Parser::ParseCompoundStatementBody(bool) /path/to/src/llvm-project/clang/lib/Parse/ParseStmt.cpp:1186:11
#29 0x00005582e46f2d14 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /path/to/src/llvm-project/clang/lib/Parse/ParseStmt.cpp:2450:21
#30 0x00005582e46b245f clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:1473:3
#31 0x00005582e474df6b clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) /path/to/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:2146:27
#32 0x00005582e46b12da clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:1212:10
#33 0x00005582e46b081f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:1227:12
#34 0x00005582e46b00e0 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:1042:14
#35 0x00005582e46adfa6 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /path/to/src/llvm-project/clang/lib/Parse/Parser.cpp:744:12
#36 0x00005582e46a8de7 clang::ParseAST(clang::Sema&, bool, bool) /path/to/src/llvm-project/clang/lib/Parse/ParseAST.cpp:162:16
#37 0x00005582e19fc99c clang::ASTFrontendAction::ExecuteAction() /path/to/src/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1170:1
#38 0x00005582e19fc39c clang::FrontendAction::Execute() /path/to/src/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1062:7
#39 0x00005582e19252f8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /path/to/src/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1049:23
#40 0x00005582e1bcd727 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /path/to/src/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:264:8
#41 0x00005582de4b5970 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /path/to/src/llvm-project/clang/tools/driver/cc1_main.cpp:251:13
#42 0x00005582de4a068a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /path/to/src/llvm-project/clang/tools/driver/driver.cpp:363:5
#43 0x00005582de4a22dd clang_main(int, char**, llvm::ToolContext const&)::$_1::operator()(llvm::SmallVectorImpl<char const*>&) const /path/to/src/llvm-project/clang/tools/driver/driver.cpp:541:7
#44 0x00005582de4a22ad int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_1>(long, llvm::SmallVectorImpl<char const*>&) /path/to/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#45 0x00005582e17ddba9 llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(llvm::SmallVectorImpl<char const*>&) const /path/to/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#46 0x00005582e17da2b8 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1::operator()() const /path/to/src/llvm-project/clang/lib/Driver/Job.cpp:439:34
#47 0x00005582e17da285 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) /path/to/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#48 0x00005582def124a9 llvm::function_ref<void ()>::operator()() const /path/to/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#49 0x00005582e049b5fa llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /path/to/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:427:3
#50 0x00005582e17d9a17 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /path/to/src/llvm-project/clang/lib/Driver/Job.cpp:439:7
#51 0x00005582e17741ef clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /path/to/src/llvm-project/clang/lib/Driver/Compilation.cpp:199:15
#52 0x00005582e17743f7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /path/to/src/llvm-project/clang/lib/Driver/Compilation.cpp:253:13
#53 0x00005582e178e8d8 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /path/to/src/llvm-project/clang/lib/Driver/Driver.cpp:1856:7
#54 0x00005582de4a0109 clang_main(int, char**, llvm::ToolContext const&) /path/to/src/llvm-project/clang/tools/driver/driver.cpp:577:9
#55 0x00005582de4d7d4d main /path/to/src/llvm-project/build/tools/clang/tools/driver/clang-driver.cpp:15:3
#56 0x00007fa3a3c4618a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#57 0x00007fa3a3c46245 call_init ./csu/../csu/libc-start.c:128:20
#58 0x00007fa3a3c46245 __libc_start_main ./csu/../csu/libc-start.c:368:5
#59 0x00005582de49eae1 _start (/path/to/src/llvm-project/build/bin/clang+++0x585aae1)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 17.0.0 (git@github.com:llvm/llvm-project.git b673135bb833a54b16c32e2073d2d7b83c90de66)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /path/to/src/llvm-project/build/bin
clang++: note: diagnostic msg: 
********************
 
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/macro_test-04881f.cpp
clang++: note: diagnostic msg: /tmp/macro_test-04881f.sh
clang++: note: diagnostic msg: 
 
********************
```
[diagnostics.tar.gz](https://github.com/llvm/llvm-project/files/10727378/diagnostics.tar.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXF1z4yqa_jXKDRWXhL4vcuE49jk5m9nOtj07e-dCAtlsy6ABlE7Or98CSZZQbCd2u7tma05XKm1L6OV5H94vEARJSTeMkDsnvHfChxtUqy0Xd6hE7M8t4t5NxvHb3WpLJfiOJOCCbihDZfkGBKm4UASD7A3MtoLviONPwVapSjr-1IELBy5ykdWbSc53Dlx4ged7ieu4D447bX4bsYJUguM6JxJQBnK-21EFsij2PT_MssT3URhkXpT7kEA39jHEcZb4eepiEkUOnIGsVuARVPwbwQAJXjMMEMOAKiAJ2UlQ0m8EKN1VVm_AFkmQEcK6pgUXAIHvW1qSyRDbPwhwYMKzF8prWb45MAWYMwfGCmypauQhKYlQlDNACzArEdsYkrKalgp8p2rLa9U3kh1YWgwuAiQIwFSirCRYt2jk7NAbEDUDWgIvwI7suHgDSPa0UwbUlrTUa9Us-F81q0Aq0ozG4M59TUsM8gYtVdshFsIMDEuSE7k7lAu-VkSqSZ47kTuSqK-Yn7yq2ivQpywva0yA488oo4qikv5JxLqkUjn-3Hoc-pgUlBEw_5_n-Wy1nv-XA5MXVHqajhdUQk2-E86a5uC31Xy5Wk-Xy_nX1dqBSYbE-_b652Af46fJayWIlFSP7bAX848W2gjGrUxD_34oXypR5wosgRO318HSgYlUWHPlT99TMKNMEwFKLXAvLH4YCc44L0Gj4VKrt7Sam98vnGoz5gZpOkAAaknZBiyXwPEfwHL_GABLIM01J743pMFhx8AaB2O1y6XVcoTYNoIhNO3NiOFj9tKNTdCYowPvHXgPbgv5xhR6veWsfAOd1R3vZP5akdwEIrJFL5SLUXeNQ8ktr0sMiI4umKIN41LRXO7dNBdIbimzvWiaqxqVpwVriRJI7YRDuToEqS1hjWCivRCcJGFRIbV14EJxBy6kyPVHIpV04ML2P3_qJY4_hVCLJEIYXEBxDnaIvQEkNvWOMCVBJfgLxQQDxUFRs1z7-K2JhkYgoOyF50hfbQf-jHEHTji_ALnv-NNUw2VcmXzRIHFgPOg7Bo2vYrAlglwWJC6DZ4j1h_gqJAhTWyJJE6kF-WdNRZ9pGvwd5yDnTCHKtNtlAuUmTO89HxjPP9_HQK8NsP85MNl_auPdwJOMyR1SvyxfdreV4P9LcqWzdPPIoqSZAxdP5NWBixX_RtgTeSVioqO6P_VcGGuBJtrUFUaKzDiTJK8VfSF_0zRMxcY8Jh2YNDJN7FvyWuTkb4ihDRHAgSZpv7v_1JmifdMIBA6cvn9ucMuY1HSfjbVXQe8ZCUX19wnZVeqtCY_augpE-yT3_DSfLudA1pmODMjUCE2O1W5jlzMbqrZ11tYzmsT3XFIpa6JNq6lB2iSoE7WJAyBD-TelLUMrU5naJydSEgykoUFf1k8iKXlOkQ5rugyQuaCVaiEvFcq_AVzvqn1AcieOmz4LvhFo10eAzxqALliw_p-y3hwOxOIzfMmg8jSqCxxQFw3LipQl1WP9cJaEwPGnsa4w_CnIa6G9VzuxJAKo1mDiUQ0QN2jh-WhD_Qu2ccIk2y7OAl03675MYm578H-kh6Y4rkzUkQopYgKOsepY53wdM-J9GAAO9F3gvrqu64ZhAokbRilOMTBma_xHvsnmw7OgTBmjWjWWmfSNBPq-5lIJgnatB-q6RYfaT9hV5yImrizrSnuVAxd_Z1SHmCXdMFTKCWVa0zDS4cXzevjeCD6CMAMjrI2M3xHDJTFVIKe4iQhXBxgFngbY44MjfEmQRYfo_VozC6bsCrXLAXbIutCsjT7skfnjgY9ccgjZrCSI1dWXFp8Dk5qZ6SAGJdcx4Pos-s0w91gDC2uQZjEJtFUjxtnbjtcSMLQjsjKGmba4dSj9SnL-QsTbjDNFXtXjriqbuw3Npo0DE2OuM3BNxQ513w6Fa6LPXrlwrFyGILAeHxvwj3vXCXR-OjLhqMUXF8hHfh6iInWbkNKKfU2idRTclpTVr7cbVjc38onkk8iB9-6rnxWpa0Wd2JaJ0jzPwXpdqa0gCK-_0bJc011VmvhlUj6YOHDBKlVqrQfNJiaem4Ae9fKTMWZSQCAQlcTIka0pLybm25vEegoMFxWXxhxNSyPZ1DMDwaktOAiDGAKU6UrAiFK44cRcMhISrx9uHbDcsQQ_DcGaleuSI7zGfIdooyxlRll9eSc3OWrEeV4cm_p4L9Ab6erjAp45PgEuYD8Zhr5nha2IhBHxih8o6C6p546Xc2fE7k9Wrb5Ont5gkPyx_kHqv8NhZDTfG2qeeL7g4mNWPlT7V-gcpWYas1c5GKkcBMg9pfL8tUIML9pSZrovJz-ftz4FNEhd29zDEU4_IPEpnI-MKnsQWkLPMkkzqI-s4O_Hpxtvee0xcvuErRWPbMVdjFI4xPG8nyjwboiYIo05_r8g4PnZaD_bIrYhAw68AQmxTYKX6lxykoQmbRqMjckS_IgJU7SgJpl-zIt59oEUZpbOdYXNpDLNfkTXHpHU089G3cj3ba9MbH11dZB9Rt-PVfwB7IM-W9yJ7w4Kcw08HUfQNAxOuakRfW2k71wqNnPHPtBDd8xvEYSn-f0pQA9RmuqiBvaUQmuuE0RZFLm5hdXMYFtQpqyT9Y608IaIFf82gP4flOFzsbdrFoMrpvPufzHZ6tjlBVYEg9BWAGVuUhxToFmwnTLcqrEkOzqce7Qlez9hWSpB2eYrKS4bhxH-NkuGI3Ox6oIgDkjsJcc0MJ8fSF7-Jnhd2SPw3KwE6LvLiuTvY46-gwRSXLTV-ei-EY6nSgma1YrIj6P5OGoPoS64-KqDbpMrLwziFoMaf0sihLFdAsNgxCL2M3ySxaWZC3ScGHWSM8gaUzGm6mMyj7TIOC_PofWjAbom7V7qmnUht-c9HPGeFzj90Hr_tRj_hfwlJhd7sOcvsuMXSV14mr9ltwT3RQyonBaKiKFmg6W05Q6V5X-TXOl0Mxtqq3adDfmwdvz5EcqG3WP90OcG6GB0OH-AfngANOIubgQ6-HpRz3884j9Jk-wC_v9VCL8mWZ4XacoGzp7YZBVe5JKT4GftwvGetHuO3xyYNEHuumCTyC4XYTpCC7EXnETbTTzHaEdB6nTea4DlvCI_wXpD167f7KX2IMpgEB4tfywd-7nH0SqiCcafMdEV2VUlUkTP5QZTmaNPPSFFel9_ovJKFcK-xgpie85jr-nr8qCITrv5X0XWFHpB1CxX7mkcVduZBzH6kMYvYmB0j0wR0az5Xzl3fzg001xPhvS9dhJ7PXuD5lXZoC6yX4UEUeYm3mnHHCQTi7CjXnp1vsaG9jP5MmvggzrIfh2j-XKJe5Kv-WtjSEfryZ_F0fVYcANjNUHPQjiazeICRSdZWPHqibyQsslLQ_W_VOifNXlWoxJkH9f0rPZQAbIkO9SuUXFcl-RxV3GhTEq8TkLbr5uYNyxDGxjVwijB9jKseXy6XI3WvzVge-50pfJiulx1QxVBu270rbrRS4s8Ta2Fk-lytRA6AzA8Na7cLUGQvFakvXTpunYnefCxkbgvhmK3f-Gm4SZjuL4N9wTWn4fSNawO0ktqo4QhLKylEF1O0pKIRyYVYjk5zOlxtS6134EmYwi9L6c6V_YlR2CVZl6W4xha1tzC7gXuN8VZKrzT-dIY1CmxMs6xONp9l_0j7Z5Jr8-whMIkyMI0dkGee-sdovb8ZyoEejPxZZZvkegqwqmJNzNgX4MzcObmiU4txXkpHbjAgr7o9LTowHQahOat82BIoK0CcqMEgY6Imdcwc3gi17zmP6BPZC8Zahlt5Xfxov47xZoP3cv0yLeWQAN_pBWEuF366oamXdjU4A3P009hbm46MFh7zUdekXZK0OxoO5-ptLlyRTbCwF4IDIJ3bCCzsjvQt9srtRbGRmmznel8ZZrdXo4_zVFZZij_ti5Yl22vSP1cgzO7R6y16c8yfsaWjn4Jvr0wfVg5cLFcPXUFKSrnr0ogaRbjg9A2RKt68WKMM5T-TNp_rT1exlGU2BxFI44QzKwU11p5E_pn3qzfyD5MyAdj7X7TP68aGI4_O_QuQ9NnAvH-gfU6f331Wi_PkKT5WprmLW9WY31hrQSiSna3R-JQWepc0qx-tfd1k2lfm0333H8cZS4LG03Se-iCxh88697--2aXQl91B_G7MUnCZr_xUeM1d1uEJ6LAX2M6DF-_MhYlVhooPBicikWHhvMH7fA64SIdb-QLCzRQ49Ceu-bO15otUUHKN8uyTqv90_b_BWa63xdioTvyuBR58b91FLxmaOuLodCzeY4DjxRHeTYzAfRu_teRb81KRg_qBscWfk80nVrz9itQMdBh_8oytbf7hHDMiV8ct70jnPzBM3mckD949kSlsgg5VZrsTaZCVLQn9M7gsLWrn80kDH17OhX6NpMJSfDRWuZh8Nmaeh6Y8h4bgV_I5CUT7D13D8MJipeEke2U4xmK67npNeZr15xVjTYEh6GNGcc4wMBsKz7nnE_X6fEZvL5xa0ExJ1EGRjfaOh5EXoLAel3STIdrJNRa12Hr_ZbnXNbvN2W3m74PPWTScBzYncbjTmEQAvMIZVSN-2k-auG3RnizyRom9tvUMDkk1NLkkBIHhfujuiFM7fFKCSIeaKS2-7gvP5xl9neHSYgQ8Y4d_9sfDzXXQdGuPYH2YG57FK45B05eqbZjTIDnmyMYtSTg9gUoDiQhw9OiVmfghQhJOQNePHEn5vjAhioncAen5fzpgdNyk81ZB_3bPldIbIgurkC7971m3xj_zgZ74Nu_LSAIwmDHMSnNAS2z_9_cMkt4ZUnwAxWXHJE7RHR3XrQ_Agx2cjM49At_4Kc9ojA8rzhdraaz38Hq9zlYfHl6-vKPx__8DSwen-ZLsPpiLt___Tfwdf785evK6U4JPh86b5hIHbOOnjncNxAEmEKKYIDUXuTnaYALtausI263bpAkXjHZ_9mAawiT24vG52rDND7XHd4PToVPFBKTzZ9O-ODA5OyzpQUtzdFSz41h7Mc6ehyQ3TnKDb7zceqn6IbceVEc-b6f-vBmexdnHoqyMPJ9EmCURTmBAYoynPvIzQIX3tA76ELfhV7gul4SwokbkYLgOE1hEeVFHDiBS3aIlhMNcMLF5sYce72L3BjCmxJlpJTmD4pA2KX8Yr90Dx040zf0NOWWs1vKXlBJRzf0t_DhRtwZCrJ6I53ALalUsu9TUVWSu-YQfnvIvglkDoRnngV2IATft4QBxEDN9me-6Z8HDnADKkGFjAspDnIilM4OxhDlTS3Ku8vPDBv-_i8AAP__GnA-2g">