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 D1AFCC4332F for ; Sun, 20 Nov 2022 03:49:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229454AbiKTDti (ORCPT ); Sat, 19 Nov 2022 22:49:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229447AbiKTDth (ORCPT ); Sat, 19 Nov 2022 22:49:37 -0500 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9AA49E0AC; Sat, 19 Nov 2022 19:49:35 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R671e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045170;MF=renyu.zj@linux.alibaba.com;NM=1;PH=DS;RN=21;SR=0;TI=SMTPD_---0VVAOkmS_1668916169; Received: from 30.39.172.100(mailfrom:renyu.zj@linux.alibaba.com fp:SMTPD_---0VVAOkmS_1668916169) by smtp.aliyun-inc.com; Sun, 20 Nov 2022 11:49:31 +0800 Message-ID: <045b45ad-e191-5774-fc50-3a94ccfd7761@linux.alibaba.com> Date: Sun, 20 Nov 2022 11:49:29 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: [PATCH RFC 0/6] Add metrics for neoverse-n2 To: Ian Rogers Cc: James Clark , nick Forrington , Jumana MP , John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song , Linux ARM , linux-perf-users , LKML References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> From: Jing Zhang In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org 在 2022/11/20 上午5:46, Ian Rogers 写道: > On Fri, Nov 18, 2022 at 7:30 PM Jing Zhang > wrote: >> >> >> 在 2022/11/16 下午7:19, James Clark 写道: >> > >> > >> > On 31/10/2022 11:11, Jing Zhang wrote: >> >> This series add six metricgroups for neoverse-n2, among which, the >> >> formula of topdown L1 is from the document: >> >> https://documentation-service.arm.com/static/60250c7395978b529036da86?token= >> >> >> >> Since neoverse-n2 does not yet support topdown L2, metricgroups such >> >> as Cache, TLB, Branch, InstructionsMix, and PEutilization are added to >> >> help further analysis of performance bottlenecks. >> >> >> > >> > Hi Jing, >> > >> > Thanks for working on this, these metrics look ok to me in general, >> > although we're currently working on publishing standardised metrics >> > across all new cores as part of a new project in Arm. This will include >> > N2, and our ones are very similar (or almost identical) to yours, >> > barring slightly different group names, metric names, and differences in >> > things like outputting topdown metrics as percentages. >> > >> > We plan to publish our standard metrics some time in the next 2 months. >> > Would you consider holding off on merging this change so that we have >> > consistant group names and units going forward? Otherwise N2 would be >> > the odd one out. I will send you the metrics when they are ready, and we >> > will have a script to generate perf jsons from them, so you can review. >> > >> > We also have a slightly different forumula for one of the top down >> > metrics which I think would be slightly more accurate. We don't have >> > anything for your "PE utilization" metrics, which I can raise >> > internally. It could always be added to perf on top of the standardised >> > ones if we don't add it to our standard ones. >> > >> > Thanks >> > James >> > >> >> Hi James, >> >> Regarding the arm n2 standard metrics last time, is my understanding correct, >> and does it meet your meaning? If so, may I ask when you will send me the >> standards you formulate so that I can align with you in time over my patchset. >> Please communicate this matter so that we can understand each other's schedule. >> >> Thanks, >> Jing > > Hi, > > In past versions of the perf tool the metrics have been pretty broken. If we have something that is good we shouldn't be holding it to a bar of being perfect, we can merge what we have and improve over time. In this case what Jing has prepared may arrive in time for Linux 6.2 whilst the standard metrics may arrive in time for 6.3. I'd suggest merging Jing's work and then improving on it with the standard metrics. > > In terms of the metrics themselves, could we add ScaleUnit? For example: > > +    { > +        "MetricExpr": "LD_SPEC / INST_SPEC", > +        "PublicDescription": "The rate of load instructions speculatively executed to overall instructions speclatively executed", > +        "BriefDescription": "The rate of load instructions speculatively executed to overall instructions speclatively executed", > +        "MetricGroup": "InstructionMix", > +        "MetricName": "load_spec_rate" > +    }, > > A ScaleUnit of "100%" would likely make things more readable. > Ok, I'll modify it over your suggestion, making it more readable, and move on with it. Thanks, Jing > Thanks, > Ian > >> >> with this series on neoverse-n2: >> >> >> >> $./perf list metricgroup >> >> >> >> List of pre-defined events (to be used in -e): >> >> >> >> >> >> Metric Groups: >> >> >> >> Branch >> >> Cache >> >> InstructionMix >> >> PEutilization >> >> TLB >> >> TopDownL1 >> >> >> >> >> >> $./perf list >> >> >> >> ... >> >> Metric Groups: >> >> >> >> Branch: >> >>   branch_miss_pred_rate >> >>        [The rate of branches mis-predited to the overall branches] >> >>   branch_mpki >> >>        [The rate of branches mis-predicted per kilo instructions] >> >>   branch_pki >> >>        [The rate of branches retired per kilo instructions] >> >> Cache: >> >>   l1d_cache_miss_rate >> >>        [The rate of L1 D-Cache misses to the overall L1 D-Cache] >> >>   l1d_cache_mpki >> >>        [The rate of L1 D-Cache misses per kilo instructions] >> >> ... >> >> >> >> >> >> $sudo ./perf stat -a -M TLB sleep 1 >> >> >> >>  Performance counter stats for 'system wide': >> >> >> >>         35,861,936      L1I_TLB                          #     0.00 itlb_walk_rate           (74.91%) >> >>              5,661      ITLB_WALK                                                            (74.91%) >> >>         97,279,240      INST_RETIRED                     #     0.07 itlb_mpki                (74.91%) >> >>              6,851      ITLB_WALK                                                            (74.91%) >> >>             26,391      DTLB_WALK                        #     0.00 dtlb_walk_rate           (75.07%) >> >>         35,585,545      L1D_TLB                                                              (75.07%) >> >>         85,923,244      INST_RETIRED                     #     0.35 dtlb_mpki                (75.11%) >> >>             29,992      DTLB_WALK                                                            (75.11%) >> >> >> >>        1.003450755 seconds time elapsed >> >>      >> >> >> >> Jing Zhang (6): >> >>   perf vendor events arm64: Add topdown L1 metrics for neoverse-n2 >> >>   perf vendor events arm64: Add TLB metrics for neoverse-n2 >> >>   perf vendor events arm64: Add cache metrics for neoverse-n2 >> >>   perf vendor events arm64: Add branch metrics for neoverse-n2 >> >>   perf vendor events arm64: Add PE utilization metrics for neoverse-n2 >> >>   perf vendor events arm64: Add instruction mix metrics for neoverse-n2 >> >> >> >>  .../arch/arm64/arm/neoverse-n2/metrics.json        | 247 +++++++++++++++++++++ >> >>  1 file changed, 247 insertions(+) >> >>  create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >> >> 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 B7529C433FE for ; Sun, 20 Nov 2022 03:51:13 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=O8qRC1CPiEIzuJH9mnWfTGuNEATcUe2djluCioFxAxM=; b=LdgP1wWax/MNXF Nng05ZvwD5eQKX4AG/I+Nnd8nZfn5dC0R1YDrkJfqEz+dOwncyK5qPYR0GeHpHKvueqOCjAoI0PKd o8A056d6h4zponATQAoDzetY6wDXPb69rZ/OtQera74FAXAQ2MVAtFJDoU7ujQ47vm3D8woaQ+dwK G3xj2B/0ZpE0Ee/aDQi5LVhEiFbxfHXMQvBW+Rn0rh6Y4Rjmk9Wha5g9pIf1+pKE5JjdGvcjk+5C7 IMD8dS9Vzh0l5PfV9R1CYuf6ncv6JsYgmUqOJAtZ2etH1lttwkiWLmQ1K002+j7sExiD0wW9nqyVs halS3Cbzi1VCUMNl+H9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1owbLD-001pZc-Gr; Sun, 20 Nov 2022 03:49:59 +0000 Received: from out30-130.freemail.mail.aliyun.com ([115.124.30.130]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1owbL0-001p1g-OR for linux-arm-kernel@lists.infradead.org; Sun, 20 Nov 2022 03:49:57 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R671e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045170;MF=renyu.zj@linux.alibaba.com;NM=1;PH=DS;RN=21;SR=0;TI=SMTPD_---0VVAOkmS_1668916169; Received: from 30.39.172.100(mailfrom:renyu.zj@linux.alibaba.com fp:SMTPD_---0VVAOkmS_1668916169) by smtp.aliyun-inc.com; Sun, 20 Nov 2022 11:49:31 +0800 Message-ID: <045b45ad-e191-5774-fc50-3a94ccfd7761@linux.alibaba.com> Date: Sun, 20 Nov 2022 11:49:29 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: [PATCH RFC 0/6] Add metrics for neoverse-n2 To: Ian Rogers Cc: James Clark , nick Forrington , Jumana MP , John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song , Linux ARM , linux-perf-users , LKML References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> From: Jing Zhang In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221119_194954_372282_196303D6 X-CRM114-Status: GOOD ( 24.92 ) 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 CgrlnKggMjAyMi8xMS8yMCDkuIrljYg1OjQ2LCBJYW4gUm9nZXJzIOWGmemBkzoKPiBPbiBGcmks IE5vdiAxOCwgMjAyMiBhdCA3OjMwIFBNIEppbmcgWmhhbmcgPHJlbnl1LnpqQGxpbnV4LmFsaWJh YmEuY29tIDxtYWlsdG86cmVueXUuempAbGludXguYWxpYmFiYS5jb20+PiB3cm90ZToKPj4KPj4K Pj4g5ZyoIDIwMjIvMTEvMTYg5LiL5Y2INzoxOSwgSmFtZXMgQ2xhcmsg5YaZ6YGTOgo+PiA+Cj4+ ID4KPj4gPiBPbiAzMS8xMC8yMDIyIDExOjExLCBKaW5nIFpoYW5nIHdyb3RlOgo+PiA+PiBUaGlz IHNlcmllcyBhZGQgc2l4IG1ldHJpY2dyb3VwcyBmb3IgbmVvdmVyc2UtbjIsIGFtb25nIHdoaWNo LCB0aGUKPj4gPj4gZm9ybXVsYSBvZiB0b3Bkb3duIEwxIGlzIGZyb20gdGhlIGRvY3VtZW50Ogo+ PiA+PiBodHRwczovL2RvY3VtZW50YXRpb24tc2VydmljZS5hcm0uY29tL3N0YXRpYy82MDI1MGM3 Mzk1OTc4YjUyOTAzNmRhODY/dG9rZW49IDxodHRwczovL2RvY3VtZW50YXRpb24tc2VydmljZS5h cm0uY29tL3N0YXRpYy82MDI1MGM3Mzk1OTc4YjUyOTAzNmRhODY/dG9rZW49Pgo+PiA+Pgo+PiA+ PiBTaW5jZSBuZW92ZXJzZS1uMiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCB0b3Bkb3duIEwyLCBtZXRy aWNncm91cHMgc3VjaAo+PiA+PiBhcyBDYWNoZSwgVExCLCBCcmFuY2gsIEluc3RydWN0aW9uc01p eCwgYW5kIFBFdXRpbGl6YXRpb24gYXJlIGFkZGVkIHRvCj4+ID4+IGhlbHAgZnVydGhlciBhbmFs eXNpcyBvZiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4KPj4gPj4KPj4gPgo+PiA+IEhpIEppbmcs Cj4+ID4KPj4gPiBUaGFua3MgZm9yIHdvcmtpbmcgb24gdGhpcywgdGhlc2UgbWV0cmljcyBsb29r IG9rIHRvIG1lIGluIGdlbmVyYWwsCj4+ID4gYWx0aG91Z2ggd2UncmUgY3VycmVudGx5IHdvcmtp bmcgb24gcHVibGlzaGluZyBzdGFuZGFyZGlzZWQgbWV0cmljcwo+PiA+IGFjcm9zcyBhbGwgbmV3 IGNvcmVzIGFzIHBhcnQgb2YgYSBuZXcgcHJvamVjdCBpbiBBcm0uIFRoaXMgd2lsbCBpbmNsdWRl Cj4+ID4gTjIsIGFuZCBvdXIgb25lcyBhcmUgdmVyeSBzaW1pbGFyIChvciBhbG1vc3QgaWRlbnRp Y2FsKSB0byB5b3VycywKPj4gPiBiYXJyaW5nIHNsaWdodGx5IGRpZmZlcmVudCBncm91cCBuYW1l cywgbWV0cmljIG5hbWVzLCBhbmQgZGlmZmVyZW5jZXMgaW4KPj4gPiB0aGluZ3MgbGlrZSBvdXRw dXR0aW5nIHRvcGRvd24gbWV0cmljcyBhcyBwZXJjZW50YWdlcy4KPj4gPgo+PiA+IFdlIHBsYW4g dG8gcHVibGlzaCBvdXIgc3RhbmRhcmQgbWV0cmljcyBzb21lIHRpbWUgaW4gdGhlIG5leHQgMiBt b250aHMuCj4+ID4gV291bGQgeW91IGNvbnNpZGVyIGhvbGRpbmcgb2ZmIG9uIG1lcmdpbmcgdGhp cyBjaGFuZ2Ugc28gdGhhdCB3ZSBoYXZlCj4+ID4gY29uc2lzdGFudCBncm91cCBuYW1lcyBhbmQg dW5pdHMgZ29pbmcgZm9yd2FyZD8gT3RoZXJ3aXNlIE4yIHdvdWxkIGJlCj4+ID4gdGhlIG9kZCBv bmUgb3V0LiBJIHdpbGwgc2VuZCB5b3UgdGhlIG1ldHJpY3Mgd2hlbiB0aGV5IGFyZSByZWFkeSwg YW5kIHdlCj4+ID4gd2lsbCBoYXZlIGEgc2NyaXB0IHRvIGdlbmVyYXRlIHBlcmYganNvbnMgZnJv bSB0aGVtLCBzbyB5b3UgY2FuIHJldmlldy4KPj4gPgo+PiA+IFdlIGFsc28gaGF2ZSBhIHNsaWdo dGx5IGRpZmZlcmVudCBmb3J1bXVsYSBmb3Igb25lIG9mIHRoZSB0b3AgZG93bgo+PiA+IG1ldHJp Y3Mgd2hpY2ggSSB0aGluayB3b3VsZCBiZSBzbGlnaHRseSBtb3JlIGFjY3VyYXRlLiBXZSBkb24n dCBoYXZlCj4+ID4gYW55dGhpbmcgZm9yIHlvdXIgIlBFIHV0aWxpemF0aW9uIiBtZXRyaWNzLCB3 aGljaCBJIGNhbiByYWlzZQo+PiA+IGludGVybmFsbHkuIEl0IGNvdWxkIGFsd2F5cyBiZSBhZGRl ZCB0byBwZXJmIG9uIHRvcCBvZiB0aGUgc3RhbmRhcmRpc2VkCj4+ID4gb25lcyBpZiB3ZSBkb24n dCBhZGQgaXQgdG8gb3VyIHN0YW5kYXJkIG9uZXMuCj4+ID4KPj4gPiBUaGFua3MKPj4gPiBKYW1l cwo+PiA+Cj4+Cj4+IEhpIEphbWVzLAo+Pgo+PiBSZWdhcmRpbmcgdGhlIGFybSBuMiBzdGFuZGFy ZCBtZXRyaWNzIGxhc3QgdGltZSwgaXMgbXkgdW5kZXJzdGFuZGluZyBjb3JyZWN0LAo+PiBhbmQg ZG9lcyBpdCBtZWV0IHlvdXIgbWVhbmluZz8gSWYgc28sIG1heSBJIGFzayB3aGVuIHlvdSB3aWxs IHNlbmQgbWUgdGhlCj4+IHN0YW5kYXJkcyB5b3UgZm9ybXVsYXRlIHNvIHRoYXQgSSBjYW4gYWxp Z24gd2l0aCB5b3UgaW4gdGltZSBvdmVyIG15IHBhdGNoc2V0Lgo+PiBQbGVhc2UgY29tbXVuaWNh dGUgdGhpcyBtYXR0ZXIgc28gdGhhdCB3ZSBjYW4gdW5kZXJzdGFuZCBlYWNoIG90aGVyJ3Mgc2No ZWR1bGUuCj4+Cj4+IFRoYW5rcywKPj4gSmluZwo+IAo+IEhpLAo+IAo+IEluIHBhc3QgdmVyc2lv bnMgb2YgdGhlIHBlcmYgdG9vbCB0aGUgbWV0cmljcyBoYXZlIGJlZW4gcHJldHR5IGJyb2tlbi4g SWYgd2UgaGF2ZSBzb21ldGhpbmcgdGhhdCBpcyBnb29kIHdlIHNob3VsZG4ndCBiZSBob2xkaW5n IGl0IHRvIGEgYmFyIG9mIGJlaW5nIHBlcmZlY3QsIHdlIGNhbiBtZXJnZSB3aGF0IHdlIGhhdmUg YW5kIGltcHJvdmUgb3ZlciB0aW1lLiBJbiB0aGlzIGNhc2Ugd2hhdCBKaW5nIGhhcyBwcmVwYXJl ZCBtYXkgYXJyaXZlIGluIHRpbWUgZm9yIExpbnV4IDYuMiB3aGlsc3QgdGhlIHN0YW5kYXJkIG1l dHJpY3MgbWF5IGFycml2ZSBpbiB0aW1lIGZvciA2LjMuIEknZCBzdWdnZXN0IG1lcmdpbmcgSmlu ZydzIHdvcmsgYW5kIHRoZW4gaW1wcm92aW5nIG9uIGl0IHdpdGggdGhlIHN0YW5kYXJkIG1ldHJp Y3MuCj4gCj4gSW4gdGVybXMgb2YgdGhlIG1ldHJpY3MgdGhlbXNlbHZlcywgY291bGQgd2UgYWRk IFNjYWxlVW5pdD8gRm9yIGV4YW1wbGU6Cj4gCj4gK8KgIMKgIHsKPiArwqAgwqAgwqAgwqAgIk1l dHJpY0V4cHIiOiAiTERfU1BFQyAvIElOU1RfU1BFQyIsCj4gK8KgIMKgIMKgIMKgICJQdWJsaWNE ZXNjcmlwdGlvbiI6ICJUaGUgcmF0ZSBvZiBsb2FkIGluc3RydWN0aW9ucyBzcGVjdWxhdGl2ZWx5 IGV4ZWN1dGVkIHRvIG92ZXJhbGwgaW5zdHJ1Y3Rpb25zIHNwZWNsYXRpdmVseSBleGVjdXRlZCIs Cj4gK8KgIMKgIMKgIMKgICJCcmllZkRlc2NyaXB0aW9uIjogIlRoZSByYXRlIG9mIGxvYWQgaW5z dHJ1Y3Rpb25zIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQgdG8gb3ZlcmFsbCBpbnN0cnVjdGlvbnMg c3BlY2xhdGl2ZWx5IGV4ZWN1dGVkIiwKPiArwqAgwqAgwqAgwqAgIk1ldHJpY0dyb3VwIjogIklu c3RydWN0aW9uTWl4IiwKPiArwqAgwqAgwqAgwqAgIk1ldHJpY05hbWUiOiAibG9hZF9zcGVjX3Jh dGUiCj4gK8KgIMKgIH0sCj4gCj4gQSBTY2FsZVVuaXQgb2YgIjEwMCUiIHdvdWxkIGxpa2VseSBt YWtlIHRoaW5ncyBtb3JlIHJlYWRhYmxlLgo+IAoKT2ssIEknbGwgbW9kaWZ5IGl0IG92ZXIgeW91 ciBzdWdnZXN0aW9uLCBtYWtpbmcgaXQgbW9yZSByZWFkYWJsZSwgYW5kIG1vdmUgb24gd2l0aCBp dC4KClRoYW5rcywKSmluZwoKPiBUaGFua3MsCj4gSWFuCj4gCj4+ID4+IHdpdGggdGhpcyBzZXJp ZXMgb24gbmVvdmVyc2UtbjI6Cj4+ID4+Cj4+ID4+ICQuL3BlcmYgbGlzdCBtZXRyaWNncm91cAo+ PiA+Pgo+PiA+PiBMaXN0IG9mIHByZS1kZWZpbmVkIGV2ZW50cyAodG8gYmUgdXNlZCBpbiAtZSk6 Cj4+ID4+Cj4+ID4+Cj4+ID4+IE1ldHJpYyBHcm91cHM6Cj4+ID4+Cj4+ID4+IEJyYW5jaAo+PiA+ PiBDYWNoZQo+PiA+PiBJbnN0cnVjdGlvbk1peAo+PiA+PiBQRXV0aWxpemF0aW9uCj4+ID4+IFRM Qgo+PiA+PiBUb3BEb3duTDEKPj4gPj4KPj4gPj4KPj4gPj4gJC4vcGVyZiBsaXN0Cj4+ID4+Cj4+ ID4+IC4uLgo+PiA+PiBNZXRyaWMgR3JvdXBzOgo+PiA+Pgo+PiA+PiBCcmFuY2g6Cj4+ID4+wqAg wqBicmFuY2hfbWlzc19wcmVkX3JhdGUKPj4gPj7CoCDCoCDCoCDCoCBbVGhlIHJhdGUgb2YgYnJh bmNoZXMgbWlzLXByZWRpdGVkIHRvIHRoZSBvdmVyYWxsIGJyYW5jaGVzXQo+PiA+PsKgIMKgYnJh bmNoX21wa2kKPj4gPj7CoCDCoCDCoCDCoCBbVGhlIHJhdGUgb2YgYnJhbmNoZXMgbWlzLXByZWRp Y3RlZCBwZXIga2lsbyBpbnN0cnVjdGlvbnNdCj4+ID4+wqAgwqBicmFuY2hfcGtpCj4+ID4+wqAg wqAgwqAgwqAgW1RoZSByYXRlIG9mIGJyYW5jaGVzIHJldGlyZWQgcGVyIGtpbG8gaW5zdHJ1Y3Rp b25zXQo+PiA+PiBDYWNoZToKPj4gPj7CoCDCoGwxZF9jYWNoZV9taXNzX3JhdGUKPj4gPj7CoCDC oCDCoCDCoCBbVGhlIHJhdGUgb2YgTDEgRC1DYWNoZSBtaXNzZXMgdG8gdGhlIG92ZXJhbGwgTDEg RC1DYWNoZV0KPj4gPj7CoCDCoGwxZF9jYWNoZV9tcGtpCj4+ID4+wqAgwqAgwqAgwqAgW1RoZSBy YXRlIG9mIEwxIEQtQ2FjaGUgbWlzc2VzIHBlciBraWxvIGluc3RydWN0aW9uc10KPj4gPj4gLi4u Cj4+ID4+Cj4+ID4+Cj4+ID4+ICRzdWRvIC4vcGVyZiBzdGF0IC1hIC1NIFRMQiBzbGVlcCAxCj4+ ID4+Cj4+ID4+wqAgUGVyZm9ybWFuY2UgY291bnRlciBzdGF0cyBmb3IgJ3N5c3RlbSB3aWRlJzoK Pj4gPj4KPj4gPj7CoCDCoCDCoCDCoCDCoDM1LDg2MSw5MzbCoCDCoCDCoCBMMUlfVExCwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgI8KgIMKgIMKgMC4wMCBpdGxiX3dhbGtf cmF0ZcKgIMKgIMKgIMKgIMKgIMKgKDc0LjkxJSkKPj4gPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCA1 LDY2McKgIMKgIMKgIElUTEJfV0FMS8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICg3 NC45MSUpCj4+ID4+wqAgwqAgwqAgwqAgwqA5NywyNzksMjQwwqAgwqAgwqAgSU5TVF9SRVRJUkVE wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAjwqAgwqAgwqAwLjA3IGl0bGJfbXBracKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgICg3NC45MSUpCj4+ID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAg Niw4NTHCoCDCoCDCoCBJVExCX1dBTEvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAo NzQuOTElKQo+PiA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgMjYsMzkxwqAgwqAgwqAgRFRMQl9XQUxL wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgI8KgIMKgIMKgMC4wMCBkdGxiX3dh bGtfcmF0ZcKgIMKgIMKgIMKgIMKgIMKgKDc1LjA3JSkKPj4gPj7CoCDCoCDCoCDCoCDCoDM1LDU4 NSw1NDXCoCDCoCDCoCBMMURfVExCwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg KDc1LjA3JSkKPj4gPj7CoCDCoCDCoCDCoCDCoDg1LDkyMywyNDTCoCDCoCDCoCBJTlNUX1JFVElS RUTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCPCoCDCoCDCoDAuMzUgZHRsYl9tcGtp wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKDc1LjExJSkKPj4gPj7CoCDCoCDCoCDCoCDCoCDCoCDC oDI5LDk5MsKgIMKgIMKgIERUTEJfV0FMS8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ICg3NS4xMSUpCj4+ID4+Cj4+ID4+wqAgwqAgwqAgwqAgMS4wMDM0NTA3NTUgc2Vjb25kcyB0aW1l IGVsYXBzZWQKPj4gPj7CoCDCoCDCoAo+PiA+Pgo+PiA+PiBKaW5nIFpoYW5nICg2KToKPj4gPj7C oCDCoHBlcmYgdmVuZG9yIGV2ZW50cyBhcm02NDogQWRkIHRvcGRvd24gTDEgbWV0cmljcyBmb3Ig bmVvdmVyc2UtbjIKPj4gPj7CoCDCoHBlcmYgdmVuZG9yIGV2ZW50cyBhcm02NDogQWRkIFRMQiBt ZXRyaWNzIGZvciBuZW92ZXJzZS1uMgo+PiA+PsKgIMKgcGVyZiB2ZW5kb3IgZXZlbnRzIGFybTY0 OiBBZGQgY2FjaGUgbWV0cmljcyBmb3IgbmVvdmVyc2UtbjIKPj4gPj7CoCDCoHBlcmYgdmVuZG9y IGV2ZW50cyBhcm02NDogQWRkIGJyYW5jaCBtZXRyaWNzIGZvciBuZW92ZXJzZS1uMgo+PiA+PsKg IMKgcGVyZiB2ZW5kb3IgZXZlbnRzIGFybTY0OiBBZGQgUEUgdXRpbGl6YXRpb24gbWV0cmljcyBm b3IgbmVvdmVyc2UtbjIKPj4gPj7CoCDCoHBlcmYgdmVuZG9yIGV2ZW50cyBhcm02NDogQWRkIGlu c3RydWN0aW9uIG1peCBtZXRyaWNzIGZvciBuZW92ZXJzZS1uMgo+PiA+Pgo+PiA+PsKgIC4uLi9h cmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMi9tZXRyaWNzLmpzb27CoCDCoCDCoCDCoCB8IDI0NyAr KysrKysrKysrKysrKysrKysrKysKPj4gPj7CoCAxIGZpbGUgY2hhbmdlZCwgMjQ3IGluc2VydGlv bnMoKykKPj4gPj7CoCBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2Fy Y2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4yL21ldHJpY3MuanNvbgo+PiA+PgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=