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

    <tr>
        <th>Summary</th>
        <td>
            coredump with perf2bolt on Aarch64
        </td>
    </tr>

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

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

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

<pre>
    I see a coredump with the following command on Aarch64 :-

> perf2bolt -p perf.data -o perf.fdata <binary_name>
PERF2BOLT: Starting data aggregation job for perf.data
PERF2BOLT: spawning perf job to read branch events
PERF2BOLT: spawning perf job to read mem events
PERF2BOLT: spawning perf job to read process events
PERF2BOLT: spawning perf job to read task events
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: 91073380ac5a0dceebdd09f360a1dc194d7ee93f
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0xc00000, offset 0x800000
BOLT-INFO: enabling relocation mode
BOLT-INFO: enabling strict relocation mode for aggregation purposes
BOLT-INFO: pre-processing profile using perf data aggregator
BOLT-INFO: binary build-id is: 2bb5a6045ace8915cd40671d93021aa708d4facb
PERF2BOLT: spawning perf job to read buildid list
PERF2BOLT-ERROR: failed to match build-id from perf output. This indicates the input binary supplied for data aggregation is not the same recorded by perf when collecting profiling data, or there were no samples recorded for the binary. Use -ignore-build-id option to override.


> perf2bolt -p perf.data -o perf.fdata <binary_name> -ignore-build-id
PERF2BOLT: Starting data aggregation job for perf.data
PERF2BOLT: spawning perf job to read branch events
PERF2BOLT: spawning perf job to read mem events
PERF2BOLT: spawning perf job to read process events
PERF2BOLT: spawning perf job to read task events
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: 91073380ac5a0dceebdd09f360a1dc194d7ee93f
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0xc00000, offset 0x800000
BOLT-INFO: enabling relocation mode
BOLT-INFO: enabling strict relocation mode for aggregation purposes
BOLT-INFO: pre-processing profile using perf data aggregator
BOLT-INFO: binary build-id is: 2bb5a6045ace8915cd40671d93021aa708d4facb
PERF2BOLT: spawning perf job to read buildid list
PERF2BOLT-ERROR: failed to match build-id from perf output. This indicates the input binary supplied for data aggregation is not the same recorded by perf when collecting profiling data, or there were no samples recorded for the binary. Use -ignore-build-id option to override.
PERF2BOLT: waiting for perf mmap events collection to finish...
PERF2BOLT: parsing perf-script mmap events output
PERF2BOLT: waiting for perf task events collection to finish...
PERF2BOLT: parsing perf-script task events output
PERF2BOLT: input binary is associated with 1 PID(s)
PERF2BOLT: waiting for perf events collection to finish...
PERF2BOLT: parse branch events...
PERF2BOLT: read 0 samples and 0 LBR entries
PERF2BOLT: traces mismatching disassembled function contents: 0
PERF2BOLT: out of range traces involving unknown regions: 0
PERF2BOLT: waiting for perf mem events collection to finish...
BOLT-ERROR: cannot find BB containing branch destination.
FATAL BOLT-ERROR: =======================================
BOLT is unable to proceed because it couldn't properly understand this function.
If you are running the most recent version of BOLT, you may want to report this and paste this dump.
Please check that there is no sensitive contents being shared in this dump.

Offending function: pardump

Function contents (
 0000: FD7BBBA9 E20301AA FD030091 F35301A9  |.{...........S..|
  0010: F40300AA F30301AA F55B02A9 F76303A9  |.........[...c..|
  0020: 38008052 F92300F9 000040F9 36704039  |8..R.#....@.6p@9|
  0030: 01184DF9 D60E0012 1823D61A 350040F9  |..M......#..5.@.|
  0040: 370C40F9 E1230090 21802A91 A0023FD6  |7.@..#..!.*...?.|
  0050: 800240F9 E1230090 620640F9 21C02A91 |..@..#..b.@.!.*.|
  0060: 66724039 63124229 651A40B9 A0023FD6 |fr@9c.B)e.@...?.|
  0070: DF0A0071 000A0054 1F130071 EC040054 |...q...T...q...T|
  0080: 360F0034 DF060071 610D0054 601240B9 |6..4...qa..T`.@.|
  0090: F8230090 392400F0 18E32B91 39833991 |.#..9$....+.9.9.|
  00A0: 16008052 A0020034 620240F9 C37E0853 |...R...4b.@..~.S|
  00B0: 61724039 C01E0012 D6060011 210C0012 |ar@9........!...|
  00C0: 0020C11A 417863F8 22486078 E10318AA  |. ..Axc."H`x....|
  00D0: 800240F9 A0023FD6 DF0A40F2 C1050054 |..@...?...@....T|
  00E0: 800240F9 E10319AA A0023FD6 601240B9 |..@.......?.`.@.|
  00F0: DF02006B A3FDFF54 800240F9 F00317AA |...k...T..@.....|
  0100: F35341A9 F55B42A9 F76343A9 F92340F9 |.SA..[B..cC..#@.|
  0110: FD7BC5A8 00021FD6 DF0E0071 C1080054 |.{.........q...T|
  0120: 601240B9 F8230090 392400F0 18232C91 |`.@..#..9$...#,.|
  0130: 39833991 16008052 00FEFF34 1F2003D5 |9.9....R...4. ..|
  0140: 620240F9 C37E0853 61724039 C01E0012 |b.@..~.Sar@9....|
  0150: D6060011 210C0012 0020C11A 417863F8  |....!.... ..Axc.|
  0160: 224860F8 E10318AA 800240F9 A0023FD6 |"H`.......@...?.|
  0170: DF0640F2 81010054 800240F9 E10319AA |..@....T..@.....|
  0180: A0023FD6 601240B9 DF02006B A3FDFF54 |..?.`.@....k...T|
  0190: DAFFFF17 601240B9 DF02006B 63F8FF54 |....`.@....kc..T|
  01A0: D6FFFF17 601240B9 DF02006B A3FCFF54 |....`.@....k...T|
  01B0: D2FFFF17 601240B9 F8230090 392400F0 |....`.@..#..9$..|
  01C0: 18032C91 39833991 16008052 60F9FF34 |..,.9.9....R`..4|
  01D0: 620240F9 C37E0853 61724039 C01E0012 |b.@..~.Sar@9....|
  01E0: D6060011 210C0012 0020C11A 417863F8  |....!.... ..Axc.|
  01F0: 224860B8 E10318AA 800240F9 A0023FD6 |"H`.......@...?.|
  0200: DF0640F2 01010054 800240F9 E10319AA |..@....T..@.....|
  0210: A0023FD6 601240B9 DF02006B A3FDFF54 |..?.`.@....k...T|
  0220: B6FFFF17 601240B9 DF02006B 23FDFF54 |....`.@....k#..T|
  0230: B2FFFF17 800240F9 E1230090 21402C91 |......@..#..!@,.|
  0240: A0023FD6 800240F9 F00317AA F35341A9 |..?...@......SA.|
  0250: F55B42A9 F76343A9 F92340F9 FD7BC5A8 |.[B..cC..#@..{..|
  0260: 00021FD6 601240B9 F8230090 392400F0 |....`.@..#..9$..|
  0270: 18C32B91 39833991 16008052 E0F3FF34 |..+.9.9....R...4|
  0280: 620240F9 C37E0853 61724039 C01E0012 |b.@..~.Sar@9....|
  0290: D6060011 210C0012 0020C11A 417863F8  |....!.... ..Axc.|
  02A0: 22486038 E10318AA 800240F9 A0023FD6 |"H`8......@...?.|
  02B0: DF0E40F2 01010054 800240F9 E10319AA |..@....T..@.....|
  02C0: A0023FD6 601240B9 DF02006B A3FDFF54 |..?.`.@....k...T|
  02D0: 8AFFFF17 601240B9 DF02006B 23FDFF54 |....`.@....k#..T|
  02E0: 86FFFF17 1F2003D5 1F2003D5 1F2003D5  |..... ... ... ..|
  02F0: 1F2003D5 1F2003D5 1F2003D5 1F2003D5  |. ... ... ... ..|
)

Binary Function "pardump"  {
  Number      : 404
 State       : disassembled
  Address     : 0x454a10
  Size        : 0x2e4
  MaxSize     : 0x300
  Offset      : 0x54a10
  Section     : .text
  Orc Section : .local.text.pardump
  LSDA        : 0x0
 IsSimple    : 1
  IsMultiEntry: 0
  IsSplit     : 0
  BB Count    : 24
  CFI Instrs  : 34
}
DWARF CFI Instructions:
 00000004:      OpDefCfaOffset 80
    00000004:   OpOffset Reg29 -80
 00000004:      OpOffset Reg30 -72
    00000010:   OpOffset Reg19 -64
 00000010:      OpOffset Reg20 -56
    00000020:   OpOffset Reg21 -48
 00000020:      OpOffset Reg22 -40
    00000020:   OpOffset Reg23 -32
 00000020:      OpOffset Reg24 -24
    00000028:   OpOffset Reg25 -16
 00000114:      OpRememberState
    00000114:   OpRestore Reg30
 00000114:      OpRestore Reg29
    00000114:   OpRestore Reg25
 00000114:      OpRestore Reg23
    00000114:   OpRestore Reg24
 00000114:      OpRestore Reg21
    00000114:   OpRestore Reg22
 00000114:      OpRestore Reg19
    00000114:   OpRestore Reg20
 00000114:      OpDefCfaOffset 0
    00000118:   OpRestoreState
 00000260:      OpRememberState
    00000260:   OpRestore Reg30
 00000260:      OpRestore Reg29
    00000260:   OpRestore Reg25
 00000260:      OpRestore Reg23
    00000260:   OpRestore Reg24
 00000260:      OpRestore Reg21
    00000260:   OpRestore Reg22
 00000260:      OpRestore Reg19
    00000260:   OpRestore Reg20
 00000260:      OpDefCfaOffset 0
    00000264:   OpRestoreState
End of Function "pardump"

ERROR: disassembly failed - inconsistent branch found.
=======================================

LLVM ERROR: pthread_join failed: Resource deadlock avoided
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  perf2bolt 0x0000000000d1c510
1  perf2bolt       0x0000000000d1a600
2  perf2bolt 0x0000000000d1a784
3  linux-vdso.so.1 0x0000fffff7ffc8dc __kernel_rt_sigreturn + 0
4  libc.so.6       0x0000fffff7a8f7a8 gsignal + 176
5  libc.so.6       0x0000fffff7a79af0 abort + 280
6  perf2bolt 0x0000000000cbbff0
7  perf2bolt       0x0000000000d23b2c
8  perf2bolt 0x0000000000d23d64
9  perf2bolt       0x0000000002002b48
10 perf2bolt       0x0000000002002da4
11 perf2bolt 0x00000000013dcf64
12 libc.so.6       0x0000fffff7a91f44
13 libc.so.6 0x0000fffff7a920c4
14 perf2bolt       0x0000000000d8a558
15 perf2bolt       0x0000000000d9422c
16 perf2bolt 0x00000000013ddac4
17 perf2bolt       0x0000000001278638
18 perf2bolt 0x0000000000def09c
19 libpthread.so.0 0x0000fffff7f988f4
20 perf2bolt       0x0000000001278d40
21 perf2bolt 0x000000000127aa6c
22 perf2bolt       0x0000000002003c10
23 perf2bolt 0x00000000020048a8
24 libpthread.so.0 0x0000fffff7f90950
25 libc.so.6       0x0000fffff7a7ce1c
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Abort (core dumped)



System Details :-

> cat /etc/oracle-release 
   Oracle Linux Server release 8.6

> uname -a
   Linux  5.15.0-205.149.5.1.el8uek.aarch64 #2 SMP Fri Apr 5 
 13:37:11 PDT 2024 aarch64 aarch64 aarch64 GNU/Linux

> llvm-bolt --version
LLVM (http://llvm.org/):
  LLVM version 20.0.0git
 Optimized build with assertions.
BOLT revision 91073380ac5a0dceebdd09f360a1dc194d7ee93f

  Registered Targets:
 aarch64    - AArch64 (little endian)
    aarch64_32 - AArch64 (little endian ILP32)
    aarch64_be - AArch64 (big endian)
    arm64      - ARM64 (little endian)
    arm64_32   - ARM64 (little endian ILP32)
 x86        - 32-bit X86: Pentium-Pro and above
    x86-64     - 64-bit X86: EM64T and AMD64

>  perf --version
    perf version 4.18.0-553.8.1.el8_10.aarch64


(gdb) thread apply all bt

Thread 2 (Thread 0xfffff7a57010 (LWP 2001779)):
#0 0x0000fffff7f96d70 in pthread_cond_wait@@GLIBC_2.17 () from /lib64/libpthread.so.0
#1  0x0000fffff7d87b08 in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /lib64/libstdc++.so.6
#2  0x00000000020034d0 in llvm::StdThreadPool::wait() ()
#3  0x00000000013de8c4 in llvm::bolt::ParallelUtilities::runOnEachFunctionWithUniqueAllocId(llvm::bolt::BinaryContext&, llvm::bolt::ParallelUtilities::SchedulingPolicy, std::function<void (llvm::bolt::BinaryFunction&, unsigned short)>, std::function<bool (llvm::bolt::BinaryFunction const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, unsigned int) ()
#4 0x0000000000d9fa54 in llvm::bolt::RewriteInstance::buildFunctionsCFG() ()
#5  0x0000000000dd3738 in llvm::bolt::RewriteInstance::run() ()
#6 0x00000000004077a0 in main ()

Thread 1 (Thread 0xfffff6774190 (LWP 2001791)):
#0  0x0000fffff7a8f7a8 in raise () from /lib64/libc.so.6
#1 0x0000fffff7a79ba8 in abort () from /lib64/libc.so.6
#2 0x0000000000cbbff0 in llvm::report_fatal_error(llvm::Twine const&, bool) ()
#3  0x0000000000d23b2c in ReportErrnumFatal(char const*, int) ()
#4 0x0000000000d23d64 in llvm::llvm_thread_join_impl(unsigned long) ()
#5 0x0000000002002b48 in llvm::StdThreadPool::~StdThreadPool() ()
#6 0x0000000002002da4 in llvm::StdThreadPool::~StdThreadPool() ()
#7 0x00000000013dcf64 in std::unique_ptr<llvm::StdThreadPool, std::default_delete<llvm::StdThreadPool> >::~unique_ptr() ()
#8 0x0000fffff7a91f44 in __run_exit_handlers () from /lib64/libc.so.6
#9 0x0000fffff7a920c4 in exit () from /lib64/libc.so.6
#10 0x0000000000d8a558 in llvm::Error llvm::handleErrorImpl<llvm::bolt::RewriteInstance::buildFunctionsCFG()::{lambda(llvm::bolt::BinaryFunction&, unsigned short)#1}::operator()(llvm::bolt::BinaryFunction&, unsigned short) const::{lambda(llvm::bolt::BOLTError const&)#1}>(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::Error> >, llvm::bolt::RewriteInstance::buildFunctionsCFG()::{lambda(llvm::bolt::BinaryFunction&, unsigned short)#1}::operator()(llvm::bolt::BinaryFunction&, unsigned short) const::{lambda(llvm::bolt::BOLTError const&)#1}&&) ()
#11 0x0000000000d9422c in std::_Function_handler<void (llvm::bolt::BinaryFunction&, unsigned short), llvm::bolt::RewriteInstance::buildFunctionsCFG()::{lambda(llvm::bolt::BinaryFunction&, unsigned short)#1}>::_M_invoke(std::_Any_data const&, llvm::bolt::BinaryFunction&, unsigned short&&) ()
#12 0x00000000013ddac4 in std::_Function_handler<void (), std::_Bind<llvm::bolt::ParallelUtilities::runOnEachFunctionWithUniqueAllocId(llvm::bolt::BinaryContext&, llvm::bolt::ParallelUtilities::SchedulingPolicy, std::function<void (llvm::bolt::BinaryFunction&, unsigned short)>, std::function<bool (llvm::bolt::BinaryFunction const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, unsigned int)::{lambda(std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, unsigned short)#1} (std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction> >, unsigned int)> >::_M_invoke(std::_Any_data const&) ()
#13 0x0000000001278638 in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()> > >, void> >::_M_invoke(std::_Any_data const&) ()
#14 0x0000000000def09c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) ()
#15 0x0000fffff7f988f4 in __pthread_once_slow () from /lib64/libpthread.so.0
#16 0x0000000001278d40 in std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()> > >, void>::_M_complete_async()
--Type <RET> for more, q to quit, c to continue without paging--c
    ()
#17 0x000000000127aa6c in std::_Function_handler<void (), llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#18 0x0000000002003c10 in llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) ()
#19 0x00000000020048a8 in void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::{lambda()#1}> >(std::tuple<llvm::StdThreadPool::grow(int)::{lambda()#1}>) ()
#20 0x0000fffff7f90950 in start_thread () from /lib64/libpthread.so.0
#21 0x0000fffff7a7ce1c in thread_start () from /lib64/libc.so.6
(gdb) 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXEtz4ziS_jWsC0IMAHwffKAe7HGEa8phu2d296IASUjCmCLUIOjHHOa3bwAgKFKi_Ojy7nTstqJKlsjEh0Tml5l40CZNw7Y1pVdOMHeC5TfSyh0XV2XdSvL4yL7lvHy9ugYNpYCAggtatvsDeGZyB-SOgg2vKv7M6i0o-H5P6hLwGqREFLvQB46Xzhy4dGDavXsrcKBig3NeSTA76C9uSSQBM26-bPQ3x1vkrCbidV2TPXW8lWl_u7rL8PzHzYPjpeBeEiFVx7oF2W4F3RLJeA3-wXOw4eKIPtG6OZDnWrVWQrqF5EBQUoJckLrYAfpEa9l8quWe7n9Ps4PgBW2a39NUkuZx1E41mV3_Nfuh2j0QsaUSKGcwSQvZCqouE-OdiQbqC3iiomG8Vt8TBCPPiyEpAgLLgtK8LGGy8UJIUFmgxC8jShNvMwG1YaKRgFQVLwApS6EGyBoAX3yoXhMtCkGJ9mdNn5VNtoLswY6SkgogSV5RQGQPBV8Kg4MXgG82DZUAvsSXoGlN8kpBC1rxwpBkz0v6lmgjBSvkaQvNqyHXDq048IZOmf8g6KzzrXae4BtWUdA2vStHzOViAsNEAchbVpUzVgLWqKs4zwMSQj8gBY0TFBSlD8MIlYkHMSIkgnHpb0iRf473qg9Wgoo18qThbHV39-NOu5WwipaqzZ7IYndUbCP43mDyVh5a6YKHHWsAq0tWEEkbnSxYfWilHVPTHg4Vo6U26VkMswbUXOpWDdlTIGjBRUlLkL-abp53tAYFrypayKN5bT7QvBCquaDgWb3VXAEdKtocsTZGpNPIBb82FMzYtuaCzvqR8YNWSHLAn6gQrKTuKKf9ZGY76_DPVPdnqvsz1f2Z6v5IqW5k12fCtBo274D9nhy60OzVNDAbVrNm57pTMAcienrMmkKwgxwhGeN-pP9BavjJ_odIF_sfuZY1gDQNLxiRtDTTYgRur5cOjhsHJx9R_3dpTsfJe1pQkx32ZFCzcwhu5neA1lIwOpWApSAFbcCeNZr1mmSsIU1D97kKh01bGx0LXkudjL0UwAkg3krAN0CQekstKqufePWkMNv6sebPNRB0y3h9EeScan3dedte41AuSK0ibMPqEsznWnXCdGrojFjSRrJah2MHkKUP6Q0Ywzje8t_wrx-P4lpb6_IguSmlKknQgrQNBUyCgrdVWTs4kurugYrqFbR1SUUjleulylLWf90wrzfglbeACApEW2uTqCyx542qBwWtpS2SypnaLXihm-zJK3gmtTRJ9cCFNB2ong6kkdR8VatFS82KkoaCYkeLRyB3RHY5S-c_0NC6YZI90Z5ZIKe6Ou2IoCVg9Rmgef-x2dC61CzpxtbFiJIcCman1AUOjs0toKupl4JsGc3n8zQBKww9iFJ1BXoQJghkXqCuJAA40cJ1orl7fN27rhMtOiwAITJgvmqqMDwLFgRziNMEZFHoQc-C2ZcTKNDiBAxrMC-GMIYBBlmCPQizROvsqw9eGEEfegYsdt0718GexvOhGx4cHyYjQE8DQoRif5klYBnCFYQIAxRjbxmiFHhBh2y0-95pp0ADDTqC841-EVzoNiuk9EsgwChWY0UghRB72TLUcJEGMGAORq6DU4XtZWPQQIPGEOIxaIhhqK9gtDDoWsUjZm4U7JBHmKHGDMMIa2uFHsI-xgkIA5T6cJ4cFXWixUYouxXu3MEJNfjnWkYacZnBFMIIKY-kEAY-QBny9JXVAvr6inHzb67rPtifI6TYGDGEGYSeryBDDRAiuNQAIURYK-lEi9B1fYVCFEoIz12SGP7FndG8BPsQZhCgeOXheYKAl8Sel3TW03ZLHOwbL8_dxE3GeKnGQ2FHQWUnrWaIO_8svGgF48Drxnnnuq5vPOH-y70fYc2NF1DnhQVEhn3LUA0ZIYARXOgrTrQg2gt9fGDkngTHwnAZYrhAKAU-iuLQy2KAsR-HMIrBCkEPxWlquAxcN30pXAfjvzghfHFP4ZZj2vWEUC72YYbBAsHg6NAjLeznE7euTmkMPZSk6RF46NYew1JtyrWZpRyGMJyD1MuWWRb4xz4UgVCUpp0rHg3lLPIQC3U5zws8XyU2lZ18m518lZ1UrtGgCus-1Rlq7rrFQgfbqW4I9Tl0EaSxCgeMOuutNJsXCMa99YYp9CwgkMl6vXmmuIw9vDAUtpYaUVlpiBdjDU3q69nfMxrCbJVlnopcxexloFBVGFgyK-aMkEzWOw-Ac2I70eIYCkdCj9BMujsPgXNi24JhYqEn9BDM5DkTAdkgAs5prZqZULC0m8xzqM9zoQ6CGCnuDEnXE3tI40u0M7nuPATOSW3QBqFgCT3CM9lumWZZlqFoAk8Z7ojnjtCKU7S0c8VFtNTLFpfQznQz2W6JT9HO-XyKNqDyCNFkPBRDw_5zLocwSzSXjfXwwrVE1n72R2jLL6Xx6itpnA1oPP8KGmM4pjH8KRpj9LU0xibjzS8TD4_wxsTTbBnjmVw3t9Q7n0th5EObQQd2s1Mzx4en-RP74zGfF52-mPRjHlS1-_GEDJus90bZ6UuJrhentcdUkBFi2E0HusLz8-GGoy7cFicTpz7cVjDzhuE2d4d1Y4QVf2Ww4eQLgw2ng2DzPhhs8ZvBNrfBtvqKYFt8cbB1E73LNeOTwdZN9Gzw9tOI8w99tIHj_xGUyXtvIIyhwAWofvep20Ew-1X9ItjB2K6RMVZIc6vBX9t9TgXQL6WJD7sNdHAviaTgeGe4M2Rbp922tZWBL37gEwTt_Xv2TwvR3cfU4oPv5KW_b256sG_5w2x-D26OgbvNIHvblfRF9m1F0QvomxUvSKVF3NFWAQA398t0rKDt4rq5Z_tDRe0dZJtcN9_bSrJVLcXrYCtL3bg_VEweseyN-RwseFtLewP3Jlhk1-C6bqRozB2vu-NE3VbQ8u_pXXYUa_WgGsdLB1sZEEJfX0l-HJZ0s9iQznhxrwE4E-xE7ugWJ2DWS14W8yCYRfgUUJfFE0mUgJk9hnlDDEMwC8JTQDwlicDMj0eAk2IYzPyzIU9KemDm4fcBfTA7-qoHjCckAzBD4RAQod6Gd3RPVZDpgDpBG4k1kgtqbH0RqpexAf8OFA4-AOV9DMr_ABT6GBR-Hwp9cICXbDUKhVNaIBSfYA29Y_wcwo94cCR2wYPTMmcevCAWfADq1IMXxPwPQJ168IIYfh_qzIMXoC7Z6k0P4vCUDQPvrOoS8M2F-jcslP12_7G6vdrDwBlgdcHrhjWS1tKeHmx4W5d2T_rfd0Zg3m9u_vYd9GM4yJ2gpFz_g7O6G4S6fEcb3oqCgpKSsuLFIyBPnJW2it9LUjyC_kEv3krQvO5zXoGa7KneN6d10wqqTwJ25ImCqnraz4wQ-ycVgNXqngC36cNfABdA-UvuKKD1ExO83uuTBSKAE0Kl8fr-P7_Pf9xc_9fqbq2aOCHUhxycmRMGJtV0xtY4CAYPW8AX2L9KVAR2RoCGQuY1FiWhnVvgy3gkirsI8QCoWN2-zJ7KhrsNd1EnulGvaLMp4rIA6_UjFTWt1kKuG7YVVLZCkW1u2eormLxQAOFILQNDYvUfbBu2rUmlG6KoKyPBO02jhGwgIDkXUjfEtoaHl8ZX5Plm0wlF79gLezkujGh80V7YK22dT97EwxDi3FZwBN8TLUmHitB018gri43tGuG3DZWgjW9FvYHoWAjDwgr5b5smJkFghxK8LZr42FoRhReHUpK-6-gtPITVCs92HV_yCt3AxHaaqPF2aUGNGo5ZnMTxpusav-kV1XVp51b4kldwREjYdY3xO172Chu72JvGwxD6MenGi_13hgKTwOIF70ROQVGn5e3NKr1fgabN90wCAvJ2259vcrCT8qDn2jhzcLZlctfmbsH3Ds5UBux-zA6C_4MW0sEZa5qWNg7O9MEoq4uqLanOhIUgzQ7kpHjUp-Nd_Ui76I0LVQpVCqblyUpu-H7_2ki6B0sqCauayQduC6LwMioLB2dckKKiM0HNWWxfQH_o6-BGJThwT8UTFcAKxW54itmqOgBmpG9vGoLARYELZxgGLvITN3CRS6u4pY8usY8EYw-D---3IBMMpAcBAqsE8hwv9SLHUzF-u3wAGGLfPsF19vOXv_7q4Ex3e6qc9oB5Dm9mn_A6lkYHx8qJvQ-VtMvFVn87lhgAtLQ9_MbQhS7cMrug_HGQbM_-SbtnicyDH2q2IPRqbPAUAhD0iWmMzz1iZtW4o1s12xC07B5yGyz1rDEAADOQptbCccWkrFStLRmpneGksmux9vAbLcD1za2HJ9vldNwuZ9vJbsTeqKUVu_v-rlpKXil1Wf5UqZfYRjKYAQ_PcibBf8Shmt3c0lqydj-7FVxHHcn502CO_hKHs067GQj9YcvV99B_0G3S70tbTY7MMs-gnLBK4ejrliu-i2IXzoLAc2MTAGsE3dGjiKN3HG_L3MEJMJkMkMOhegWkqkAuh4IP5jZWpuk-w5cugQURRFDduPn7LcAQoihKlK0GjHawd5ogwzKCaqZmZ4kFr8v1M2HS8aHjw19urueLNXZRpJ-UwIl59E0FDctD3_wc5t--IzTOr2Uc5TBWPTVSzT8dL1VdMRUr6yciGMkraq7r3nHcy7U1-62lazVHdbxFf3nfSvrieCsHh0qvy-o1siwcPHfwXCf_XkN8Vnz8UttCp3Hdx70sjZlvOa9G2h277PE8cFLCaVz4YzyVksynWyJIVdHqV8kqJhltzGXR1j_qFSl2dpHydyZ3v2oDpFXFi-tSBcUEntnbW_Bab3kpkyw-0-99saNlW7F6e8srVryq5r2ljw_VLNQSAbypglW806Gt9e-WlKDZcWFm8KtL4Dnn1cfAgVqBmWGeAa7XxcsLQh0AaVixbqRg9dbxFsWOiJGwurCWgjCVU83tEzj9UK9-XrW_DzoZpe9ojKyWE7zwT6Z_GxJcpMUdfRZM0uu6kaQuuoDQ9cUOvVlkv0zzLziZZ5Ze5MWf6ki09TR0OEL2YRQRHSl7wuqx7DBNofM0FUaRj5JxmkrQVJqaWhKxGgjC1KTlYrAX4xhHp8uj3MDYFdIHYfDEkmlsWTM_XG-IJNWaCsHFiMgPz6ymA9Za8ryTRLoll-rqTnewEqJu95nqRU0Qd0RY0FSBfoiAeoE21l59Wg_2CdZsf1Ad9MyueL2dpNz5eu7dDPqv8bX3Cdet_r4EOJpYMY6qUldtDlIF_KXuhgmipBvSVnJd0opK-kajLnEYVQfdTOoZTyxXlZ7rtWjrNX1hcr0jdVlR0XycxsnE8laBKrhPxBScWPqOnbNSATD4blTVV68Vs4ZG-n3Jz9x0onlF9nlJfq4kYQ850dI04QcqdLo33fwMbheaH9P0x82DsdqwtFnFVhPzoVOGGuvWGz4nDf0oQ3WjQUn70y2fcIv6Ek7ELkITGz6jJLO2Otog_pqp1R_VgV3SW39fs_qJP9Ihm9dp_brWvxAzrI6_u9NLLsET22sfdkln26PsnNXlhST258T-_-zE_jw2jrrd5WspKF0z2eWpwUr1QJj6PppM2YF-iOpHzf7XO7wU1OD_1-gtAQZTuA9ns_Nk5E1s4L-bjKbr_yA6Nq1sBV3nqvx3VqKNqvv56YTgPVlzZamnCyYuJnLgBMYDaR7XDZXy5xTu0tF5_H9O61Fjs7jpZK6130bayPZQ0eGFidx4ZIDlR6fml5DCnziwGZNiYvz6dFtf-BvuNSi5csJQg8Fg_gA0UrZLj3k2nbJGMHEmZdY_dqeS1wVdNxV__vTOZDhxiPWupZd0Q4Wg5brRDxQMqfM_Sa3eqQXfH5Qh16R5rYuhuWazh9cDBY63uFs9KIQNF2DPhXbWb0By8FvLdO4r1JeC15LVLe3P9Q9ky-rtbFYcN7NPvRFNnOh9dvY02Azp18TXtaRiQ-ycVA-tWyD2GWCSxWO7XYJX-egXwduDIdl5_f6ZSeo5Z-OJw8x3Ny2635lXqjbjLaNLwzjrN5k4H1X9ahPidND_kKodvuAvr1NsfVPpreDPDo4vTYtGZgUnXvzyDiZMgqfOgQ1hiZDdTtdn8wY-3UwsKCrML6XqhKSxP7yNYk98vpVXXpl4CflGr1CEURJFvh9-210lJPcQpB5GgR-WuExoGXsoDqKSxuWG5N_YlX6KPMIhjKAPQzf2giCJNhsU5B4NPeT4kO4Jq1x7wPlNH0VfIQgjGHyrSE6rRv_RJ4xr-gz0XQdjJ1h-E1fmDLXdNo4PK9bI5ggjmazo1fgvQR0P649__elbK6qr339e3un5dIX_OwAA___yF9a_">