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

    <tr>
        <th>Summary</th>
        <td>
            [VPlan] Assertion "VPlan cost model and legacy cost model disagreed"' failed.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    C program:
```c
signed char a;
short b;
int c, g;
long d, e, f;
void h(long i[][2], long j[][2][2], short k[][2]) {
  for (unsigned l = g; l; l += 4) {
    a *= (signed char)((f ? 0 : k[l][l]) ?: (_Bool)(d << j[8][l][e]) ? i[l][l] : c);
    b = ~i[e][l];
 }
}
```
`/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/clang -march=rv64gcv -O3 red.c -o rv64gcv.bc -w -emit-llvm -c`

LLVM IR:
```llvm ir
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define void @h(ptr %i, ptr %k, i64 %idxprom.us) #0 {
entry:
  br label %for.body.us

for.body.us: ; preds = %cond.end23.us, %entry
 %l.046.us = phi i32 [ %add.us, %cond.end23.us ], [ 0, %entry ]
 %conv284345.us = phi i8 [ %conv28.us, %cond.end23.us ], [ 0, %entry ]
 %idxprom.us1 = zext i32 %l.046.us to i64
  %arrayidx3.us = getelementptr [2 x i16], ptr %k, i64 %idxprom.us1, i64 %idxprom.us
  %0 = load i16, ptr %arrayidx3.us, align 2
  %tobool4.not.us = icmp eq i16 %0, 0
  br i1 %tobool4.not.us, label %cond.false7.us, label %cond.end23.us

cond.false7.us:                                   ; preds = %for.body.us
  %1 = load i64, ptr %i, align 8
  %shl.us = shl i64 0, %1
  %tobool12.not.us = icmp eq i64 %shl.us, 0
  br i1 %tobool12.not.us, label %cond.end23.us, label %cond.true14.us

cond.true14.us:                                   ; preds = %cond.false7.us
  %2 = load i64, ptr %i, align 8
  %3 = trunc i64 %2 to i32
  br label %cond.end23.us

cond.end23.us: ; preds = %cond.true14.us, %cond.false7.us, %for.body.us
  %cond24.us = phi i32 [ %3, %cond.true14.us ], [ 0, %for.body.us ], [ 0, %cond.false7.us ]
  %4 = trunc i32 %cond24.us to i8
  %conv28.us = mul i8 0, %4
  %arrayidx31.us = getelementptr [2 x i64], ptr %i, i64 0, i64 %idxprom.us1
  %5 = load i64, ptr %arrayidx31.us, align 8
  %6 = trunc i64 %5 to i16
  %conv32.us = xor i16 %6, 0
 store i16 %conv32.us, ptr null, align 2
  %add.us = add i32 %l.046.us, 4
  %tobool.not.us = icmp eq i32 %add.us, 0
  br i1 %tobool.not.us, label %for.cond.for.cond.cleanup_crit_edge, label %for.body.us

for.cond.for.cond.cleanup_crit_edge:              ; preds = %cond.end23.us
  store i8 %4, ptr null, align 1
  ret void
}

attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-b,-e,-experimental-smctr,-experimental-ssctr,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
```

Command/backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt --passes "loop-vectorize" reduced.ll -f
opt: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7522: llvm::VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop) || planContainsAdditionalSimplifications(getPlanFor(LegacyVF.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt --passes loop-vectorize reduced.ll -f
1.      Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2.      Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "h"
 #0 0x000062cc6ec1de70 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x319de70)
 #1 0x000062cc6ec1b27f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x319b27f)
 #2 0x000062cc6ec1b3d5 SignalHandler(int) Signals.cpp:0:0
 #3 0x000074efe9a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000074efe9a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000074efe9a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000074efe9a969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000074efe9a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000074efe9a287f3 abort ./stdlib/abort.c:81:7
 #9 0x000074efe9a2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000074efe9a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x000062cc6db65039 llvm::LoopVectorizationPlanner::computeBestVF() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20e5039)
#12 0x000062cc6db7c50c llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20fc50c)
#13 0x000062cc6db7f1e1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20ff1e1)
#14 0x000062cc6db7f857 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x20ff857)
#15 0x000062cc6c963a06 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xee3a06)
#16 0x000062cc6ea24b0f llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2fa4b0f)
#17 0x000062cc6c966b96 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xee6b96)
#18 0x000062cc6ea22e9b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2fa2e9b)
#19 0x000062cc6c962ac6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xee2ac6)
#20 0x000062cc6ea239fd llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2fa39fd)
#21 0x000062cc6c15c33d llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x6dc33d)
#22 0x000062cc6c14e1c1 optMain (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x6ce1c1)
#23 0x000074efe9a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#24 0x000074efe9a29e40 call_init ./csu/../csu/libc-start.c:128:20
#25 0x000074efe9a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#26 0x000062cc6c144725 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x6c4725)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt
```

Godbolt: https://godbolt.org/z/v5K5Wbxcn

Found via fuzzer

cc @fhahn 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkO8uO27iyX6PeEDYk6mF50Qu3M743OAkmmAQ5ywZFUjZPU6RCUmq3F_fbL_iQLNnuzCRzpoHBBIlYLNa7ig9RDtKa7QWl91H-EOXv7lBnDlLdt8gohp8WivVS31WSvNxvQavkXqEmSjdR_C6KN1ER-7_Y950kAvABKYCi9CFgD1IZUI19JgzAEdyC_YjiUuwBsThqH_U40EtGwCGCpaNg3sYof4C2gVvg0P-Zo8-jXvPTBdcaRKsgHoBaKhDBshPBdg6i9J2zDHD3ABF8sKjsghEABCK4sUMRLCeeR3AdwTKCZQ2idAdiEKUbZwP3RvDBiHRnRyJYPj5IyT0bAVG6jdKt86mcMOQP9MznAjER51RgKyGd2Fc5V_6PDbyBZSSJVu9CGkdgyOe5C3caK2TwIYI7gxeGasPE3newbFrGqVrU3em0MKoTTxHcVR3jZLHH_Qhz3jcLzkR3tCgmIrjDHIk9WDRI4UOUvlN9ke1xDxa_pkBRssRgIUFALisMFs9gQRtmnCiwwGcT3fPDh68fwfvfruvSkTMVsOkD-ChJx-n7d8DnbaUo6TAlywpHcOXJDFJ7agBBBnH0IjsTaCFd2MqnizZKN0XmHgs2Agkso3STwHIhUuhxny0OwplYo1jL6SBSMY37Ilt04knIZ-GDtNiLbmTzT0JrJihwsyHKYjshWmMLN2e2zgP8ZGFWZA5Pjq2SzbLTrmZgGp-LlwqjXsZgAVApwFFFbanntVRLO9st48SAKdoWbfoAWkWJDo7kWAqypILA1GncWpxXE2oN5nwZZ8Wy8yztgQGWQhDlD3YMEXLmm8kCYSpbwngq2A2MwrEUPSyzNMtnGspBgR__czrOIU2chhM9Gu_ExDkjbQaGyFrXlEIvjBzTwbA9NZTThgrj0pY_QHAELCmCEd_NZXI7w2dtsVPBJSJO5Fne1AyLRpztBYATViMrKXm2FNIMpjLctIB-s6KccMsYT6qGJdeMblUeqsmFuUZc09XNobFiJqV2wZO6tex3_lzV41UZOxeTSXSKbBIddg5JOaHXBz6EQh-4C_xQH8lV5BJ4M3Q-WV7S9-I3sn8nSlcjRnU0yW4F8DzycwG8yMLZWfiDMUwdvd0c8BAM6GZJCm-tP98vi3Hg1TXo7Pdkos8q8NXqsKQwe2WFSqfyRiW3Vo6J8FvDc4MmK4wdzKbB8ivL2SobtHJur1_THFPTcbveDWpuLkHJ99egIpuvQWxYbeJXFqOzivy1qpjpvl0hxXWF5M7ZpLjwNoWDA0ephlWpmM4qbaSiw8jIMtgjOs5vL35-A3KiESGXq7rlya4m_M3p7hnP-9lr0_3WZLeV48tjADCnSHTtI1bMPFKyp1f0r-zVvyfmclH4nQ09-BCiW_oCuxnUsSgUNe68cnnEdE9kjGJVZ6gORxOrdGUnGvTnpEVNkekU1fYglL6zT_hQZBUzEdxG8AH5BvuG-Kb2TeMbRTk6erD3zYlhrQawpgJTFnpN0_EA9jSF9QQ-jnCRkQlcT-CRhiewrMZOCs9wkVl44R7UPY4tVcxOQcQXusFGXWP1LewJcaRvoBmuGW9v47W-xvcVTuG1Kaf-ae-oD_ahD8g3WHbCUEXFs-_vkWnDkOkRD2Cvz-hezwZMTzFxnQYxj20woZzuA6wVE4GAVNyo1sO0bQLUtI0HxAAo0TAPaYMMpcJ19CBfY1zvB6j1odQay7pt6gGeeaUnRuiJEXrQqIf2m9Qs0M1Ua_vWbDxscGjHMEyCoLsiO3IHdkFojwgdgM4DFVIBxUSPPHkvUCu9ir6tmgD1rVd3xD3iXYAqNgKmQYK1oUv5c4AaNHA1tAmQZo2z8ahrTJGmAe5xO0C1UJiz9lh_q0fUc4Mw_vbt24D4ZvtEkln_mwzjrGY2FExjpAjhUtApvuadPpyx5kARqdAEriawPsO4kZOOFKSR_RlRN7Rh5HhGDM77zuUgbVrE1BmhX8SEvCc-B8feThuBrDbZelue8cFRnlACS6U9WGQDhLyVJ1T5yXVCGIUhrnTgbFBSVB58Dow-Aifv_KnyhNVT6D4N_aNvPQ_2PNgT-do7Yeqb2jeNbAMwtM6zE2HCy6q9kLqqGyY8eAjNiBhoD1NgGGU4LH8nhivZjFA7QqcAYdRINMCsHiCuByasfEGeGBZ-Rp-Yjb2HDkwYYfi506JuoD-0Qcbg75N_itCQ0NLQehefvI4nHRoayHQY9qEy2qe0D8npQ3b6Scws_NygAB-GdhwOieyf9qEd8AIPQFDeP4mRJpSQhQZ-PbQDnx759MAXzO-D_T1PYhhS1POkSMuxA-OsHOG8GMAUrooRn8XrcSBP4AAWeZ6O-DJZ2wEIXr1tcs-tbBpkc7GrEH4yCmF6fa0z3Of8Av6q-ynZGrBYtEhrd0SBXMp20VNspGInat0Ybo44B4vaGyRb42_0ftgma8GkYVUEd18UErqWqtER3H09q959kLId-0vctlG6WeX2nLQBTkK6idLNQIEMk2KHbGcyOpXhKD5xJARVftQa2Rn6QLX5unOXmWsrfKM1VZYYuJvB0o57yct_M2IO9hhnT3If6B7hl6-7AbvaRqstaDkSWykMYkJvCGFWEOKfWdNyVjPsrNARLPfUWGN2Ut1Q4W5Jt2Artdkau9CAXxXbW2_89ezPa5ob_V09_katiKB9y4DgqxUCsNQGNJJQDpAggDtxUyxhGu0VtXMRRnAFasQ4JUtfOp8-_LL5_AvQXdUwAxCouj1QtJXK2DehgzGtfeeN4C6Cuz0zh65aYtnMK2fRKvkfak8fO6Z1Z8_OO2cLE5h3hAJzoAArpA9gnFtB_WeD8BMgXdOOky1e-jeDT_7OHyC17-wRUf9kif_4tJvPuVsTLgk2_tYJwcQeWEabkroT2CbZfTeYTdx0K-SC2TMfp6ini1oqTMlCCv4SpQ9CnkkvhqL0F5d5CKSwCe04dRe4o1HjjS18xaj_qiXOjMFNK_0w6vdvVPExjuO4gBgXFCeEruLJ7Ncv2gOfFBPGJf-LW2lheSZS6PlRaqMoalyxbwETxpd--RfmP4IP8TFN1tZkG_HRp-TCpwqu6ls-_daJz2wvEP9fJAin9vBUvp3Z1qqZ2fDS7JTkYGZgBMsQWY_WYU2P3b9RUBoErTJa0zXKYA7j4JTfMI5l8Vhk028IdgAvtVwWzjzHMjMum8tcF-sag8fH1hwUReTxiXH-aJdNd1Xk1k2wjOBOtPaMtZuSLXGUbrLMbkXFWX7-R-TbOSAQ_67klfu4MolGcUvylO274sr1hbjVZXCzVQH22uXDSfJgBHdL13vRhNrT_q6VmtlCUIhp6mTDVZRuJjEo56JhuapTgCq7tDtRhvj0OZS3LrEenyWsryQkFXgU_JFLRB6JbBDzeWHu7Luz6EbvMfLikmRlTQpptzMpngtM13Rd_FgpOZaxlKzM2fQkVZHH6frPHDjeYr7CmFozZ37AuR8rnMf4FT_oJ6TDotMqianW_oBQzskjuHkzf2pr7syf9MKfOqHJ7_ujOvG-afnMl924qxZv5481d-ZPdulPma_-kD-v-7Kd8G8E4i-a6Y9IoL0tz-0NJrsDv2UMynw1i0E-jQFeFymKi4kPhBrEeNjhkdYf7fnzticz369j91OhsX__3jGn1EZ0FvJito0jmFXx9PThwvw98_-hkYQ1spGahXJ1Ub1Ftf5vVO9floJ_aOootYmZZa68mASQrquJC_7HNV_kYK7NyIag1kh1Oxie4YdCEVjeuIato7NIrC9qGCL8YzU8uL79g_H7iQC9VoJ_j6hTamM6DTqML8ovXdfkDywAt0L9T4ggrJGN0CyEs1M6TnKcptMQqs4V3SfWUs7E_D7gs1FM7H-j9a2ivYrFF_cZ9yPCBydnc2v0A6sUUi_vRS39YfOSSkr-a2fazuwYvyHkTw2_4s5GKfRisdPkuZjwbs_E9X5wpteGeNx4_ZRu_S_2pmG0sh5s6uyLv6vvG7uMbM2jkTKsIN6Lf_kvk69SfaWK1Yyqga5yPyr90fZNKrMgtu5mhQnnhZnRBCdAtuajfbd9C5Ow1Tgz6eLCBa7JOgaPj_ZF-FEbpMwjRpw_jm_fWHfX9wPhBuIW0_IQpZvcXWwUZ63ZpVaaxcDxMMHMpSIPWukLJ92_8LufosL4LDS_JXTmyi0vbgpPV2tr9ll2cZG5bAVz4KW-TeKswjFxJ22jCt7_-gUwoY3qhhvSEktF3RU3Jb7M_zq7Xv-89T-SVJK7z0QXl_p-YCmVNeEUwV2f_yv_d3XEYsq_k50goGcIWMuomv1CDoMoi-sDOghwR-5Tsk7X6I7eJ6s0SbMcxuXd4T5LSU4pLBHJsjhbr1AJC1zAMoeoylZxdsfuYQyzxP5ZJSksl6ssTYokT_N1RTOMyyiLaYMYX1rnrb137mvDfZLkqyy7c79O0u5_E0Ao6DNwoxGEUf7uTt27iFXdXkdZzJk2-izGMMPdf0NwH1Si_N30gxOEf-4zy12n-P3Pf0cJzvX38P8DAAD__y7UE14">