From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE814EB64D7 for ; Tue, 13 Jun 2023 19:43:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231651AbjFMTnA (ORCPT ); Tue, 13 Jun 2023 15:43:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239430AbjFMTmz (ORCPT ); Tue, 13 Jun 2023 15:42:55 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1C8F1BC3; Tue, 13 Jun 2023 12:42:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 568C9635DC; Tue, 13 Jun 2023 19:42:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85A7AC433F0; Tue, 13 Jun 2023 19:42:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686685372; bh=c6ZzikBxtlmLZ/0hwSSKRejwnFaHjBC1cBfQC+bGTAo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=UdWdIZQ4bJ4A2YGAFBv2Wd3RGgeQhYPOV2r7AIRCo0aCH8aSM8A7J/5ojsBB6PzNn 2mwAI5UT38Aq/Mn4Tym0NzSOxetG19LbSHH/Z4HK1Irn+XvDJL3u4oeEMmeWn7lD45 ahCsLFdzuHoZ3/AeYGyPowkMyNPfBj6x8H3lQjyxd/KkHDAzEJYYzNJkXOLEHvtTlG Xc17OFDbaM3ncJp5iXtdhUyduzrT09oyctZ3wX9NEIicN9mwxucNzw0qSi2FhnqD7Y 2C/IRt99JQh9xCzpeB58V6Qa9PYBwtxAcx+qVWvzRkgUILbEMy4eZCGeZw/U0N2e3d TWWu7+WB0SGXw== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id EBCE140692; Tue, 13 Jun 2023 16:42:49 -0300 (-03) Date: Tue, 13 Jun 2023 16:42:49 -0300 From: Arnaldo Carvalho de Melo To: James Clark Cc: coresight@lists.linaro.org, Suzuki K Poulose , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , John Garry , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 0/5] perf cs-etm: Track exception level Message-ID: References: <20230612111403.100613-1-james.clark@arm.com> <94e91db2-182e-836f-2edc-f804c4bb7290@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <94e91db2-182e-836f-2edc-f804c4bb7290@arm.com> X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org Em Tue, Jun 13, 2023 at 09:56:29AM +0100, James Clark escreveu: > > > On 12/06/2023 19:32, Arnaldo Carvalho de Melo wrote: > > Em Mon, Jun 12, 2023 at 12:13:57PM +0100, James Clark escreveu: > >> Changes since v2: > >> > >> * Rename prev_thread -> prev_packet_thread and prev_el -> > >> prev_packet_el > >> * Add a comment about tracking the previous packet's thread > >> > >> Changes since v1: > >> > >> * Always assume host kernel when the trace was captured at EL1 (nVHE) > >> * Fix EL validation to work with ETMv3 > >> * Add a commit to make PID format accessible from struct > >> cs_etm_auxtrace > > > > Please take a look in my tmp.perf-tools-next branch, there were some > > conflicts I had to fix as those files were touched by refactorings for > > addr_location and thread reference counting. > > > > Yeah I got the same result and the tests are still passing. Thanks for > fixing those. Thanks for double checking that! - Arnaldo > > ⬢[acme@toolbox perf-tools-next]$ git log --oneline -10 > > aa53fb2c482e70c2 (HEAD -> perf-tools-next) perf cs-etm: Add exception level consistency check > > 2918e9895224541f perf cs-etm: Track exception level > > f492a33909829a75 perf cs-etm: Make PID format accessible from struct cs_etm_auxtrace > > e29ec19b0751c6b2 perf cs-etm: Use previous thread for branch sample source IP > > e9e03e9c3ca7088c perf cs-etm: Only track threads instead of PID and TIDs > > 6fd34445b8c94aa7 perf map: Fix double 'struct map' reference free found with -DREFCNT_CHECKING=1 > > e9c0a7f63e45e76f perf srcline: Optimize comparision against SRCLINE_UNKNOWN > > fd87a79c7ed62804 perf hist: Fix srcline memory leak > > 933f9651d47cdda2 perf srcline: Change free_srcline to zfree_srcline > > d22cfb063bcc674e perf callchain: Use pthread keys for tls callchain_cursor > > ⬢[acme@toolbox perf-tools-next]$ > > > > > > - Arnaldo > > > >> ====== > >> > >> Some fixes to support an issue reported by Denis Nikitin where decoding > >> trace that contains different EL1 and EL2 kernels can crash or go into > >> an infinite loop because the wrong kernel maps are used for the decode. > >> > >> This still doesn't support distinguishing guest and host userspace, > >> we'd still have to fix the timestamps and do a bit more work to > >> correlate that. And I've removed PERF_RECORD_MISC_HYPERVISOR as a > >> possible outcome of cs_etm__cpu_mode(). As far as I know this could > >> never have been returned anyway because machine__is_host(machine) was > >> always true due to session.machines.host being hard coded. And I'm not > >> sure of the relevance of the difference between PERF_RECORD_MISC_KERNEL > >> and PERF_RECORD_MISC_HYPERVISOR in this scenario. > >> > >> The first commit is a tidy up, second fixes a bug that I found when > >> comparing the exception level and thread of branch records, the third > >> is the main fix, and the last commit is some extra error checking. > >> > >> Applies to acme/perf-tools-next (42713dafc) > >> > >> James Clark (5): > >> perf cs-etm: Only track threads instead of PID and TIDs > >> perf cs-etm: Use previous thread for branch sample source IP > >> perf cs-etm: Make PID format accessible from struct cs_etm_auxtrace > >> perf cs-etm: Track exception level > >> perf cs-etm: Add exception level consistency check > >> > >> .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 33 +- > >> .../perf/util/cs-etm-decoder/cs-etm-decoder.h | 4 +- > >> tools/perf/util/cs-etm.c | 282 ++++++++++-------- > >> tools/perf/util/cs-etm.h | 13 +- > >> 4 files changed, 184 insertions(+), 148 deletions(-) > >> > >> -- > >> 2.34.1 > >> > > -- - Arnaldo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 001A0EB64D7 for ; Tue, 13 Jun 2023 19:43:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jGqWzvHk0I7wmbJIfAvKY3oRmcVn9PL2QwpZ9gosJgE=; b=ttfEAXWXOX1JtJ OUsQpHgVXcpwOuqdv4PYIXw2xe753vVihHrsvfglghuFuUmcLgGQ7rqMqcyV+9cqGJ3LNp6W8aGL2 BBktZ6qM8IhosJEsF0feu4Hb0YFMcyqqqI665TIyqwNmSB90p806h1bJjle1QrPq/XTNVMPA4IDAO ah65O9FfVvvkklmqodKdkqBVfiKO59oYy+KQuhbnTNfRETh7EGC4m0krKkgozSyNYaL+ny9sFGg5S Yu2T6WSg64qA6Q5PAyxRLveWvbuMX+ssicpdZPQ4KHOuTgVclw3xL7JwyxWSPJvqtcjZ7D9nF7DjL RsKNrc0WsViIX8Mkv5bw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q99us-0090Ne-2N; Tue, 13 Jun 2023 19:42:58 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q99ur-0090My-2D for linux-arm-kernel@bombadil.infradead.org; Tue, 13 Jun 2023 19:42:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=Rxse5VrL8tGWEULC6IVuLfQjn7GelQLsuBF1TkZKsxY=; b=UWVi7W2TLKzXBFKpVwfdo8JTCu Ztz09gbl7RxGuhnwV80y+aIaZMI+KNekl/BKBZKtOFMrVzM9kNj/BL35W3C0ePvqJekbmq6Ik7xq0 gy1+pGqB83HpMvoPjQXnb3Er9fThgVok8tykYCu6u80fYoWFgO/++CTnwhHibwFRVUNshx/TtuRW0 WHCQoJIwuTjCyOBVrx5P3yrz0E0xt0WxmwjMpoZMO9iSoOi7IW+ExOKkNiCES8P5EDK77AIDyw/Y2 lM4tyekkY0SiTnAl+voFY2IbfvO3YcJoJla9HjvCYpomYK633pbFnYW1wi0fag5hEEPglyGqBBhQT eguqtc+g==; Received: from [187.19.173.213] (helo=quaco.ghostprotocols.net) by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1q99um-009SIg-0L; Tue, 13 Jun 2023 19:42:54 +0000 Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id EBCE140692; Tue, 13 Jun 2023 16:42:49 -0300 (-03) Date: Tue, 13 Jun 2023 16:42:49 -0300 From: Arnaldo Carvalho de Melo To: James Clark Cc: coresight@lists.linaro.org, Suzuki K Poulose , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , John Garry , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 0/5] perf cs-etm: Track exception level Message-ID: References: <20230612111403.100613-1-james.clark@arm.com> <94e91db2-182e-836f-2edc-f804c4bb7290@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <94e91db2-182e-836f-2edc-f804c4bb7290@arm.com> X-Url: http://acmel.wordpress.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RW0gVHVlLCBKdW4gMTMsIDIwMjMgYXQgMDk6NTY6MjlBTSArMDEwMCwgSmFtZXMgQ2xhcmsgZXNj cmV2ZXU6Cj4gCj4gCj4gT24gMTIvMDYvMjAyMyAxOTozMiwgQXJuYWxkbyBDYXJ2YWxobyBkZSBN ZWxvIHdyb3RlOgo+ID4gRW0gTW9uLCBKdW4gMTIsIDIwMjMgYXQgMTI6MTM6NTdQTSArMDEwMCwg SmFtZXMgQ2xhcmsgZXNjcmV2ZXU6Cj4gPj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiA+Pgo+ID4+ICAg KiBSZW5hbWUgcHJldl90aHJlYWQgLT4gcHJldl9wYWNrZXRfdGhyZWFkIGFuZCBwcmV2X2VsIC0+ Cj4gPj4gICAgIHByZXZfcGFja2V0X2VsCj4gPj4gICAqIEFkZCBhIGNvbW1lbnQgYWJvdXQgdHJh Y2tpbmcgdGhlIHByZXZpb3VzIHBhY2tldCdzIHRocmVhZAo+ID4+Cj4gPj4gQ2hhbmdlcyBzaW5j ZSB2MToKPiA+Pgo+ID4+ICAgKiBBbHdheXMgYXNzdW1lIGhvc3Qga2VybmVsIHdoZW4gdGhlIHRy YWNlIHdhcyBjYXB0dXJlZCBhdCBFTDEgKG5WSEUpCj4gPj4gICAqIEZpeCBFTCB2YWxpZGF0aW9u IHRvIHdvcmsgd2l0aCBFVE12Mwo+ID4+ICAgKiBBZGQgYSBjb21taXQgdG8gbWFrZSBQSUQgZm9y bWF0IGFjY2Vzc2libGUgZnJvbSBzdHJ1Y3QKPiA+PiAgICAgY3NfZXRtX2F1eHRyYWNlCj4gPiAK PiA+IFBsZWFzZSB0YWtlIGEgbG9vayBpbiBteSB0bXAucGVyZi10b29scy1uZXh0IGJyYW5jaCwg dGhlcmUgd2VyZSBzb21lCj4gPiBjb25mbGljdHMgSSBoYWQgdG8gZml4IGFzIHRob3NlIGZpbGVz IHdlcmUgdG91Y2hlZCBieSByZWZhY3RvcmluZ3MgZm9yCj4gPiBhZGRyX2xvY2F0aW9uIGFuZCB0 aHJlYWQgcmVmZXJlbmNlIGNvdW50aW5nLgo+ID4gCj4gCj4gWWVhaCBJIGdvdCB0aGUgc2FtZSBy ZXN1bHQgYW5kIHRoZSB0ZXN0cyBhcmUgc3RpbGwgcGFzc2luZy4gVGhhbmtzIGZvcgo+IGZpeGlu ZyB0aG9zZS4KClRoYW5rcyBmb3IgZG91YmxlIGNoZWNraW5nIHRoYXQhCgotIEFybmFsZG8KIAo+ ID4g4qyiW2FjbWVAdG9vbGJveCBwZXJmLXRvb2xzLW5leHRdJCBnaXQgbG9nIC0tb25lbGluZSAt MTAKPiA+IGFhNTNmYjJjNDgyZTcwYzIgKEhFQUQgLT4gcGVyZi10b29scy1uZXh0KSBwZXJmIGNz LWV0bTogQWRkIGV4Y2VwdGlvbiBsZXZlbCBjb25zaXN0ZW5jeSBjaGVjawo+ID4gMjkxOGU5ODk1 MjI0NTQxZiBwZXJmIGNzLWV0bTogVHJhY2sgZXhjZXB0aW9uIGxldmVsCj4gPiBmNDkyYTMzOTA5 ODI5YTc1IHBlcmYgY3MtZXRtOiBNYWtlIFBJRCBmb3JtYXQgYWNjZXNzaWJsZSBmcm9tIHN0cnVj dCBjc19ldG1fYXV4dHJhY2UKPiA+IGUyOWVjMTliMDc1MWM2YjIgcGVyZiBjcy1ldG06IFVzZSBw cmV2aW91cyB0aHJlYWQgZm9yIGJyYW5jaCBzYW1wbGUgc291cmNlIElQCj4gPiBlOWUwM2U5YzNj YTcwODhjIHBlcmYgY3MtZXRtOiBPbmx5IHRyYWNrIHRocmVhZHMgaW5zdGVhZCBvZiBQSUQgYW5k IFRJRHMKPiA+IDZmZDM0NDQ1YjhjOTRhYTcgcGVyZiBtYXA6IEZpeCBkb3VibGUgJ3N0cnVjdCBt YXAnIHJlZmVyZW5jZSBmcmVlIGZvdW5kIHdpdGggLURSRUZDTlRfQ0hFQ0tJTkc9MQo+ID4gZTlj MGE3ZjYzZTQ1ZTc2ZiBwZXJmIHNyY2xpbmU6IE9wdGltaXplIGNvbXBhcmlzaW9uIGFnYWluc3Qg U1JDTElORV9VTktOT1dOCj4gPiBmZDg3YTc5YzdlZDYyODA0IHBlcmYgaGlzdDogRml4IHNyY2xp bmUgbWVtb3J5IGxlYWsKPiA+IDkzM2Y5NjUxZDQ3Y2RkYTIgcGVyZiBzcmNsaW5lOiBDaGFuZ2Ug ZnJlZV9zcmNsaW5lIHRvIHpmcmVlX3NyY2xpbmUKPiA+IGQyMmNmYjA2M2JjYzY3NGUgcGVyZiBj YWxsY2hhaW46IFVzZSBwdGhyZWFkIGtleXMgZm9yIHRscyBjYWxsY2hhaW5fY3Vyc29yCj4gPiDi rKJbYWNtZUB0b29sYm94IHBlcmYtdG9vbHMtbmV4dF0kCj4gPiAKPiA+IAo+ID4gLSBBcm5hbGRv Cj4gPiAgCj4gPj4gPT09PT09Cj4gPj4KPiA+PiBTb21lIGZpeGVzIHRvIHN1cHBvcnQgYW4gaXNz dWUgcmVwb3J0ZWQgYnkgRGVuaXMgTmlraXRpbiB3aGVyZSBkZWNvZGluZwo+ID4+IHRyYWNlIHRo YXQgY29udGFpbnMgZGlmZmVyZW50IEVMMSBhbmQgRUwyIGtlcm5lbHMgY2FuIGNyYXNoIG9yIGdv IGludG8KPiA+PiBhbiBpbmZpbml0ZSBsb29wIGJlY2F1c2UgdGhlIHdyb25nIGtlcm5lbCBtYXBz IGFyZSB1c2VkIGZvciB0aGUgZGVjb2RlLgo+ID4+Cj4gPj4gVGhpcyBzdGlsbCBkb2Vzbid0IHN1 cHBvcnQgZGlzdGluZ3Vpc2hpbmcgZ3Vlc3QgYW5kIGhvc3QgdXNlcnNwYWNlLAo+ID4+IHdlJ2Qg c3RpbGwgaGF2ZSB0byBmaXggdGhlIHRpbWVzdGFtcHMgYW5kIGRvIGEgYml0IG1vcmUgd29yayB0 bwo+ID4+IGNvcnJlbGF0ZSB0aGF0LiBBbmQgSSd2ZSByZW1vdmVkIFBFUkZfUkVDT1JEX01JU0Nf SFlQRVJWSVNPUiBhcyBhCj4gPj4gcG9zc2libGUgb3V0Y29tZSBvZiBjc19ldG1fX2NwdV9tb2Rl KCkuIEFzIGZhciBhcyBJIGtub3cgdGhpcyBjb3VsZAo+ID4+IG5ldmVyIGhhdmUgYmVlbiByZXR1 cm5lZCBhbnl3YXkgYmVjYXVzZSBtYWNoaW5lX19pc19ob3N0KG1hY2hpbmUpIHdhcwo+ID4+IGFs d2F5cyB0cnVlIGR1ZSB0byBzZXNzaW9uLm1hY2hpbmVzLmhvc3QgYmVpbmcgaGFyZCBjb2RlZC4g QW5kIEknbSBub3QKPiA+PiBzdXJlIG9mIHRoZSByZWxldmFuY2Ugb2YgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbiBQRVJGX1JFQ09SRF9NSVNDX0tFUk5FTAo+ID4+IGFuZCBQRVJGX1JFQ09SRF9NSVND X0hZUEVSVklTT1IgaW4gdGhpcyBzY2VuYXJpby4KPiA+Pgo+ID4+IFRoZSBmaXJzdCBjb21taXQg aXMgYSB0aWR5IHVwLCBzZWNvbmQgZml4ZXMgYSBidWcgdGhhdCBJIGZvdW5kIHdoZW4KPiA+PiBj b21wYXJpbmcgdGhlIGV4Y2VwdGlvbiBsZXZlbCBhbmQgdGhyZWFkIG9mIGJyYW5jaCByZWNvcmRz LCB0aGUgdGhpcmQKPiA+PiBpcyB0aGUgbWFpbiBmaXgsIGFuZCB0aGUgbGFzdCBjb21taXQgaXMg c29tZSBleHRyYSBlcnJvciBjaGVja2luZy4gCj4gPj4KPiA+PiBBcHBsaWVzIHRvIGFjbWUvcGVy Zi10b29scy1uZXh0ICg0MjcxM2RhZmMpCj4gPj4KPiA+PiBKYW1lcyBDbGFyayAoNSk6Cj4gPj4g ICBwZXJmIGNzLWV0bTogT25seSB0cmFjayB0aHJlYWRzIGluc3RlYWQgb2YgUElEIGFuZCBUSURz Cj4gPj4gICBwZXJmIGNzLWV0bTogVXNlIHByZXZpb3VzIHRocmVhZCBmb3IgYnJhbmNoIHNhbXBs ZSBzb3VyY2UgSVAKPiA+PiAgIHBlcmYgY3MtZXRtOiBNYWtlIFBJRCBmb3JtYXQgYWNjZXNzaWJs ZSBmcm9tIHN0cnVjdCBjc19ldG1fYXV4dHJhY2UKPiA+PiAgIHBlcmYgY3MtZXRtOiBUcmFjayBl eGNlcHRpb24gbGV2ZWwKPiA+PiAgIHBlcmYgY3MtZXRtOiBBZGQgZXhjZXB0aW9uIGxldmVsIGNv bnNpc3RlbmN5IGNoZWNrCj4gPj4KPiA+PiAgLi4uL3BlcmYvdXRpbC9jcy1ldG0tZGVjb2Rlci9j cy1ldG0tZGVjb2Rlci5jIHwgIDMzICstCj4gPj4gIC4uLi9wZXJmL3V0aWwvY3MtZXRtLWRlY29k ZXIvY3MtZXRtLWRlY29kZXIuaCB8ICAgNCArLQo+ID4+ICB0b29scy9wZXJmL3V0aWwvY3MtZXRt LmMgICAgICAgICAgICAgICAgICAgICAgfCAyODIgKysrKysrKysrKy0tLS0tLS0tCj4gPj4gIHRv b2xzL3BlcmYvdXRpbC9jcy1ldG0uaCAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQo+ID4+ ICA0IGZpbGVzIGNoYW5nZWQsIDE4NCBpbnNlcnRpb25zKCspLCAxNDggZGVsZXRpb25zKC0pCj4g Pj4KPiA+PiAtLSAKPiA+PiAyLjM0LjEKPiA+Pgo+ID4gCgotLSAKCi0gQXJuYWxkbwoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=