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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Pack indexing rejects valid and crashes
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            crash-on-invalid,
            rejects-valid,
            c++26
      </td>
    </tr>

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

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

<pre>
    Consider:
```c++
template <typename... opts>
struct temp  {
    template <unsigned idx>
 static constexpr __SIZE_TYPE__ get_index() { return idx; }

 template <unsigned s>
    static auto x() -> opts...[get_index<s>()] {}
};
```

Attempting to call `x` like this
```c++
temp<void>::x<0>();
```
fails with the following (rather weird) error:
```
<source>:11:5: error: no matching function for call to 'x'
   11 |     temp<void>::x<0>(); // Error
      | ^~~~~~~~~~~~~~~~
<source>:7:17: note: candidate template ignored: substitution failure [with s = 0]: array size is not a constant expression
    7 |     static auto x() -> opts...[get_index<s>()] {}
 |                 ^              ~~~~~~~~~
```

Furthermore, attempting to call `x` like this
```c++
temp<>::x<0>();
```

outright crashes with the following message:
```
clang++: /root/llvm-project/clang/lib/Sema/TreeTransform.h:6698: clang::QualType clang::TreeTransform<Derived>::TransformPackIndexingType(clang::TypeLocBuilder&, clang::PackIndexingTypeLoc) [with Derived = {anonymous}::TemplateInstantiator]: Assertion `!Unexpanded.empty() && "Pack expansion without parameter packs?"' 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: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++26 <source>
1.      <source>:12:18: current parser token ')'
2.      <source>:10:10: parsing function body 'f'
3.      <source>:10:10: in compound statement ('{}')
 #0 0x0000000003b07c88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3b07c88)
 #1 0x0000000003b0597c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3b0597c)
 #2 0x0000000003a4e8f8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x000070325c242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000070325c2969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x000070325c242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x000070325c2287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x000070325c22871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x000070325c239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x0000000007233965 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformPackIndexingType(clang::TypeLocBuilder&, clang::PackIndexingTypeLoc) SemaTemplateInstantiate.cpp:0:0
#10 0x00000000072119d3 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
#11 0x0000000007217cca clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
#12 0x0000000007217dec clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::QualType) SemaTemplateInstantiate.cpp:0:0
#13 0x0000000007219aab clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x7219aab)
#14 0x00000000070f281e clang::Sema::SubstituteExplicitTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo&, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, llvm::SmallVectorImpl<clang::QualType>&, clang::QualType*, clang::sema::TemplateDeductionInfo&) (.constprop.0) SemaTemplateDeduction.cpp:0:0
#15 0x00000000070f31a0 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::'lambda'()>(long) SemaTemplateDeduction.cpp:0:0
#16 0x000000000669ff51 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x669ff51)
#17 0x0000000007154b71 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x7154b71)
#18 0x0000000006f691d8 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (.constprop.1) SemaOverload.cpp:0:0
#19 0x0000000006f699db AddOverloadedCallCandidate(clang::Sema&, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool) SemaOverload.cpp:0:0
#20 0x0000000006f69cc9 clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6f69cc9)
#21 0x0000000006f69fce clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6f69fce)
#22 0x0000000006f766f5 clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6f766f5)
#23 0x0000000006b24028 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b24028)
#24 0x0000000006b2658c clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b2658c)
#25 0x00000000065ae22d clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65ae22d)
#26 0x00000000065a6fb1 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65a6fb1)
#27 0x00000000065a910a clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65a910a)
#28 0x00000000065a92a9 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65a92a9)
#29 0x00000000065ad7e9 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65ad7e9)
#30 0x000000000662f5b9 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x662f5b9)
#31 0x00000000066260a0 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66260a0)
#32 0x0000000006626fd0 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6626fd0)
#33 0x0000000006627ea9 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6627ea9)
#34 0x000000000662962a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x662962a)
#35 0x000000000653d1f3 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x653d1f3)
#36 0x00000000065720f8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65720f8)
#37 0x0000000006530dbe clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6530dbe)
#38 0x000000000653156e clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x653156e)
#39 0x0000000006537be7 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6537be7)
#40 0x0000000006538abd clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6538abd)
#41 0x000000000652bf5a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x652bf5a)
#42 0x0000000004424038 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4424038)
#43 0x00000000046b2fb9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x46b2fb9)
#44 0x000000000463678e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x463678e)
#45 0x000000000479c6be clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x479c6be)
#46 0x0000000000ca698f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xca698f)
#47 0x0000000000c9fbda ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#48 0x00000000044676f9 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::'lambda'()>(long) Job.cpp:0:0
#49 0x0000000003a4eda4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3a4eda4)
#50 0x0000000004467cef clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#51 0x000000000442d885 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x442d885)
#52 0x000000000442e2ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x442e2ed)
#53 0x0000000004435f05 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4435f05)
#54 0x0000000000ca3d85 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xca3d85)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXMty47p2_Rp6gpKKBMXXwANZsm984pN2Wr5JJRMVCIASrimAAUC3nEG-PQXwIYGmZPvE6tNJrqtbLZN47LX2wsYGCDZSim04pddedONFyytU662Q1ysmJWKEXuWCvF4vBFeMUOmFc89fev7ci_3mD_bgjfljr2q6q0qkKfDChX6tKEc7Op1Ogai08sLbppDSssYamLIAeElbFQAAjqvX3JpFACP7vipQGmmGARZcabqvJFivV_f_frt--rfH2_UabKheM07o3oOpBzPTOpBU15I3zdwAL1m2AJoGR7s82GqsavtEtRaga3jihbcW1XQ69aKbQ7_hwla2pbxoafH1XSZLL7wZ8HdszVwbczTjG6AFwKgsgRf7ey_2QcmeKdBbpt6j3wsXL4IRY0Q498K5Mck_mHSi_wKxUoEfTG-B3lJQiLIUP4wdHkwl0lsqwQ_KJDHYqZRiRAjtr-FCiVpi2hgQBF44j7xw3tcCXIAd0nhrWi9qjjUTHBRCNni1AB5M9h5MegcEAfCSBegE8i5A4ME7D96BW9tj70ZgW_Gi2_9yf0btToztSWOupuZfjDhhxCillwzbcCEpMXdVnSvNdN2AQaysJQVedGMZVcALl8D3oqUpiqREr0Cx_6SAKdM8QI2eEdfAaJoqxQQ_GJ708L9MiX2Lxz9edOteGFI0Jtm7Whp17ISkHlwA9DUK_qR6m09Ra8k2Ww2wRGpLR-W8o0qhDT2lXlwivmntCedGSFII7cG7snzZTSop_kax-bUtd1ey3IN3K7pDHrx7kpQ-ScRVIeRuuvXCeRxnqdWOLW4B_XONyqfXih5fcyp64WJJJXuhB4X39x4Rfr43zmV8YxrxYHrczGtFHwS-qVlpIjWMjUOO7g9rPwhsY2Sr0rZXq1UvuUFc8NedqJWNWrb9Vvf3jVYZ0kK2mp4rRaXVvqESBn_ldF8hTiiZGjm8duHY2BQDD0JjC7BljNatp0StQYUk2lFNJagQflZeeOdB6MHEDilKpo2XHh9u56tbM-Z2zIyevN4ASSshtRHdVutKGYttFNgwva3zKRa71otvncmUqqkyEQNxAhjHZU2o1Y0VEsgRftYSYSvwStJKCkyVMvNEEzGM7jkBSCmBGdKUAFlzoLBklW5NXmkDmNRG3a30_KnnZ49SbCTaASQ39Y5yM0ta2YnKykzsKlZSOaH7qhTSOLWR3gR1hKuJljV_9uBdzvhBmUbBYLIhP5AsJjMw2YCJCax3qKpM67Wuaj1VYFJwMXmhMheKTpDagckKTCYbjCdaiBJvEeNeuDxrjymsOKrUVmgwKbAohZwQhjZcKM1w24dl0r2sNPHCZTv6jSqOI7BlKDAMDScUaD6aUVVLSbkVjaISaPFMuZk8TKDopg841oTffdiqzjxkkh3TRtG3EJ5vgXFgWBE1JzY8U-NFYPWetBG3saiNuzD0gb_3u58w9xOcpsAq044y9ara4SoZ11Y3T4340kMhiX6shdKSol07zhnXzQhLv0g9Hrzx9615jv3BwP4oS_CY_YuSIl5X3_iKbTgqPZj2-VUpTC-XsNYY41gLHWvRjKZFChZGjd8pFi9Uvjbm_QPipDSdpi2TTpmF4Jru9RRXZvz69m_fRdh2kfghjDCcwQj6LbRmftin8TqeTUrG6_1kw-vmBp4qMY2t4baKY_bMbTOLswKDSm8lRWT9zMy0-pkObH2ng2ho9CyJwUZZLj5r_CyJnbZjt22YJkUIUG7i86dathWdlpM3LQf5p9sMcqfN1G0zzGgWf65NW8VpMztWXQLDMIujczO-B9N-vgVm0aQqO-SzMzPvz8kOTG7ztnv6diSYyOC7sIMgI-HFYX8e6h-FFwzgJRijPwneys5G97wQHpx_GggcAiEU_wlAulz40_aHA_szhPJj-21C3nwz67JzPTvC-L0uNXugL7TsTJm3edkDU7pZpb2VU-OLB4GRmaQGN5cUl0jaO_-EdvQCs16Lv48_hqCZQ5BfwDSgZwgyC1d6u69KhpkeQlcudXdtqtQVMwCtBt0hNsJfo1bL3iFdWO1QWf4LxVrI-11VeuHCIY_UmJJhY3Y9-Jl2enf3FUe1MAShepYOYElt0fdYrDunVhmVFNXUH4q5rzIu5WjgqTBAPngRjBxh67LTtaRFu_sBugVxO8rMStusU9YFd6EfPN2QeWHvzl2vzKVEr9-t1UfVb_eVNEWNN5x2u977Xoe--ohHFiAXojz-9_2Bby1qs1akFCvYYTCf9INpHjhp-ThcR31Z9zm3S9SkRLucILtG6BwK0y4__oSO4mMdxXFWFFEwPuJlzf-V6e2qLgqGGW3XGKsmoqdn49pHJfn1Qa5F5AS5xBk6QTTLkxOQ_y79X0j6Xz7_NZ53pJE6o6GIs4Ck49KYk356-fZCZSkQWXQ7vX9EH-bqHGOq1CNi8ieJ543lK6pPCGJEGAtUlgcVzJcP5sI_Mk7e6-URSbT7Jm2O3bU8nA-DLo51tcfDVzZ0WEZyMCekq0WJMeqEZ5r91-GA-bU98QFSoD8kBePspIpPMDUIcn_lkipRvlDyIMRzXXVALor562eDhovjIQ-DIVkFPpHy5mZd6NJlLXYkhcVYRnhE12dJ_b3WKC_pJ7k9u7YYJ35o3dxGre9U1aUe7xUugJZ1E6TnF3JX0awXe3dB111JHBfRuLtu3rqrMfwS_vpg-nMBZx4ZMYwUX-4Oy7bjDmdFHedw5sMTE6Z1xxc44f8uvQ17Dr2zAb1xlOITkRzrb_x_Mb2XoNOw5dDpLJrjCFEIibuXKRWVR98fhdIF29_2T9ft6mfv8vu5QPn1QBscDtB4ADQu8uAs0AVS-oDSxXdc2JSzv3d5njso3m4OH6qafN5UX2mbiA2rXkQDDXKHmmRATRb46LLU_FJ8GLgOH-mQD4iys3zM7bkvk_x-hJUByotAgshN6bIBJJLQ85B-ESDGzmMg7iPfOIZFlL8PZNU9TT6NxX4nK73T7QPKi-y8WHMdPMEAT-wj_yyeHss3ebQhPi80lXOtJcvrZqUyup872NDUuy7JDWE9uqP7DkVnZ7XhPNrUPzZytLdhiUu4wbDsuAEO3VCQP-KGX4X3i3BWEJezcMBZQt8Jk4v2dEfP3Y0grx5ML5U9NiY5Ns8GNmcxPD_VdVtVQ5sHuyMn1O4opsk5L6RoA8RBOkjsQhIU4YeQLmnBONOjkZ_xTad2Mfrge6jaw3PIQpx66Hdc66HZC2ujwANT-lLTviXEYWyQISbQL9Kz6AwVf5Girk4StaooHt9OaygcH9AfDJQniX7_ueo5sd4J-R3xDb3n7GLkW24d8gc5aOiTnL5L_jd5JNp7rqlsTkf9zyedNyXOOrTZGzX3WMEMI5fQq2HEoWyQpoZBFL9PWTtROcydHO5fTtzbDbWfQJzhxSFukAyHSU6Td3LIRlruTP8TyLoEHQbtMR0zf0BHivLzWwBPorInO5qJ75iHbxX6j5o-ajk8fNAGSrtFMpLuHDZtfhekLun9rhKyW1dcZMZsYDo8uKl4BPMiepsbzFdPJ5-YXHo3rDHJsdnJW2czOPNDZ85aCEL_QnmzH9PtwFBca9pe6k6Tf6mlrSGOpU62OItzWLgLtztp5kJORky9kJGNDY6RM9fIME5S6tLZdNscq8J0nNHTqC6i5dZOB4iT_c2SDMfudNqafMDz0ucG6Tm8FwlKrX0OACcZ8zGKs7QAGAfrHWL85OPyLZJdltlvuzrX4MKeCLoMjsZKB0biwsiKnCDQkb8InmykGF8zdmev3mAaHNcybbR55FGGnQEi2QuVo49DZ6kbNuIkLrKvPCrV9N1qaBEsxG6HOBkO6lEf2ncZzDVRmd6R4eCIHy0Z37TTSOPgvsJ6jfd7-5acF85zpBheK1u8ZdEpbC6stURMq-72oDlUlmZMNIv39n77WM_ZkGw4t1XeO4T0m8jH_ZENj9YTNDtyxdgB-ubO95qvUEHLV4fOn32kqLX4WPmRP5QYpgX4_ywRe5qjQlI3BxtPaSEKBlM6SdPoJHHWd-jNjNmx6QTzQUVT4NSS_EzR-eA8Qo_tixMIA9sR1DDVoZCSz_Lym8jVaVJ-E_mbw8nnQnOvgwoxIwH7usvHeWzF8lPYNGQ5bLrp2CyMCv-kypZH353EYSRjOOWFn8jmBdJZS4_D32yQn4SkG6VdhtLZb8PK_M0hllPT9pfnJMayg-ndS7pX5DokWZihK3odJHA2i8IwC6-213iWI5IGRUYCGGMaZ3FMMxRHMAwRDRJ0xa6hD2d-CkMIZ1kUTlGWZ2HoBzEpcDgjvjfz6Q6xcmrAToXcXNnXQq8DP8p8_6pEOS2V_S8SIOy8W7R5sn1HdWFu2LccBZ8w_oJKdrgh6d8o1mriXu3ffTRXouWVvLZvpub1Rnkzv2RKq4M5munS_h8NC9t7tAT2HVrWvrID2i6A7cK-j9q-Bn1Vy_L6j78U2xLwcg3_OwAA___64E86">