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 284EBC4332F for ; Tue, 22 Nov 2022 11:53:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233015AbiKVLxI (ORCPT ); Tue, 22 Nov 2022 06:53:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233478AbiKVLxG (ORCPT ); Tue, 22 Nov 2022 06:53:06 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 47255E53; Tue, 22 Nov 2022 03:53:05 -0800 (PST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7BE911FB; Tue, 22 Nov 2022 03:53:11 -0800 (PST) Received: from [10.57.3.106] (unknown [10.57.3.106]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1EA1A3F73B; Tue, 22 Nov 2022 03:53:01 -0800 (PST) Message-ID: <4d2c373d-fea7-ebed-c922-8478ad77b843@arm.com> Date: Tue, 22 Nov 2022 11:53:00 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH RFC 0/6] Add metrics for neoverse-n2 Content-Language: en-US To: Jing Zhang , nick Forrington , Jumana MP , John Garry , Ian Rogers Cc: 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-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> <107dda1a-6053-ea35-1e29-96ee6d049eb1@arm.com> <74d26daa-69cb-41bf-5a33-229c95521536@linux.alibaba.com> From: James Clark In-Reply-To: <74d26daa-69cb-41bf-5a33-229c95521536@linux.alibaba.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On 22/11/2022 07:11, Jing Zhang wrote: > > > 在 2022/11/21 下午7:51, James Clark 写道: >> >> >> On 16/11/2022 15:26, 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. >>>> >>> >>> Do you mean that after you release the new standard metrics, I remake my >>> patch referring to them, such as consistent group names and unit? >> >> Hi Jing, >> >> I was planning to submit the patch myself, but there will be a script to >> generate perf json files, so no manual work would be needed. Although >> this is complicated by the fact that we won't be publishing the fixed >> TopdownL1 metrics that you have for the existing N2 silicon so there >> would be a one time copy paste to fix that part. >> >>> >>> >>>> 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 >>> >>> >>> The v2 version of the patchset updated the formula of topdown L1. >>> Link: https://lore.kernel.org/all/1668411720-3581-1-git-send-email-renyu.zj@linux.alibaba.com/ >>> >>> The formula of the v2 version is more accurate than v1, and it has been >>> verified in our test environment. Can you share your formula first and we >>> can discuss it together? :) >> >> I was looking at v2 but replied to the root of the thread by mistake. I >> also had it the wrong way round. So your version corrects for the errata >> on the current version of N2 (as you mentioned in the commit message). >> Our version would be if there is a future new silicon revision with that >> fixed, but it does have an extra improvement by subtracting the branch >> mispredicts. >> >> Perf doesn't currently match the jsons based on silicon revision, so >> we'd have to add something in for that if a fixed silicon version is >> released. But this is another problem for another time. >> > > Hi James, > > Let's do what Ian said, and you can improve it later with the standard metrics, > after the fixed silicon version is released. > Ok that's fine by me. I do have one update about our publishing progress to share. This is the (currently empty) repo that we will be holding our metrics in: https://gitlab.arm.com/telemetry-solution/telemetry-solution We'll also have the conversion script in there as well. So there has at least been some progress and we're getting close. I will keep you updated when it is populated. > >> This is the frontend bound metric we have for future revisions: >> >> "100 * ( (STALL_SLOT_FRONTEND/(CPU_CYCLES * 5)) - ((BR_MIS_PRED * >> 4)/CPU_CYCLES) )" >> >> Other changes are, for example, your 'wasted' metric, we have >> 'bad_speculation', and without the >> cycles subtraction: >> >> 100 * ( ((1 - (OP_RETIRED/OP_SPEC)) * (1 - (STALL_SLOT/(CPU_CYCLES * >> 5)))) + ((BR_MIS_PRED * 4)/CPU_CYCLES) ) >> > > Thanks for sharing your metric version, But I still wonder, is BR_MIS_PRED not classified > as frontend bound? We're counting branch mispredicts as an extra cost so we subtract it from frontend_bound because branch related stalls are covered by bad_speculation where we have added BR_MIS_PRED instead of subtracting. Unfortunately I'm just the middle man here, I didn't actually work directly on producing these metrics so I hope nothing gets lost in my explanation. > How do you judge the extra improvement by subtracting branch mispredicts? As far as I know the repo that I mentioned above will have some benchmarks and tooling that were used to validate our version. So it should be apparent by running those. > >> And some more details filled in around the units, for example: >> >> { >> "MetricName": "bad_speculation", >> "MetricExpr": "100 * ( ((1 - (OP_RETIRED/OP_SPEC)) * (1 - >> (STALL_SLOT/(CPU_CYCLES * 5)))) + ((BR_MIS_PRED * 4)/CPU_CYCLES) )", >> "BriefDescription": "Bad Speculation", >> "PublicDescription": "This metric is the percentage of total >> slots that executed operations and didn't retire due to a pipeline >> flush.\nThis indicates cycles that were utilized but inefficiently.", >> "MetricGroup": "TopdownL1", >> "ScaleUnit": "1percent of slots" >> }, >> > > My "wasted" metric was changed according to the arm documentation description, it was originally > "bad_speculation". I will change "wasted" back to "bad_speculation", if you wish. Yeah that would be good. I think since that document we've tried to align names more to what was already out there and bad_speculation was probably judged to be a better description. For example it's already used in tools/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json > > > Thanks, > Jing > > >> So ignoring the errata issue, the main reason to hold off is for >> consistency and churn because these metrics in this format will be >> released for all cores going forwards. >> >> Thanks >> James >> 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 61561C4332F for ; Tue, 22 Nov 2022 11:54:28 +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=dqqgY0488BmOscBEgK0C7E7n3fAjK+grRVx5m8Cd2OE=; b=H/hwbRqFxnSURk zABasddhwrUmeldP6j5TDZpsKRdas3LPsG+GQiM18XuyT48PHg8LLIdOiIUQva8NSvpQ237sWgDHB v1eWr8bfj30K3N98dWoelO+gzw9rrFcdlZ/Rf1cpOmkivKYJZM00PdzCuKzTOZZPtlPOF16YsugHs gBXN57w+k/5Yo20dzMJv9pREVDC0GXhTHyzqm0VUorO1L8owTMCBjsZwuUejmVgRjNDnWJg/ONcTu oESUvwWRFlM6U+0bRs3/05tQiEnSLB7uuVyLSEWs7c35IN+iAXJOHVtx778duIHonr9+FGwNcsVZ2 a2+Rx6k/hTnrE6xnkQjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxRq3-008cDu-FJ; Tue, 22 Nov 2022 11:53:19 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxRpx-008c39-UH for linux-arm-kernel@lists.infradead.org; Tue, 22 Nov 2022 11:53:16 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7BE911FB; Tue, 22 Nov 2022 03:53:11 -0800 (PST) Received: from [10.57.3.106] (unknown [10.57.3.106]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1EA1A3F73B; Tue, 22 Nov 2022 03:53:01 -0800 (PST) Message-ID: <4d2c373d-fea7-ebed-c922-8478ad77b843@arm.com> Date: Tue, 22 Nov 2022 11:53:00 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH RFC 0/6] Add metrics for neoverse-n2 Content-Language: en-US To: Jing Zhang , nick Forrington , Jumana MP , John Garry , Ian Rogers Cc: 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-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> <107dda1a-6053-ea35-1e29-96ee6d049eb1@arm.com> <74d26daa-69cb-41bf-5a33-229c95521536@linux.alibaba.com> From: James Clark In-Reply-To: <74d26daa-69cb-41bf-5a33-229c95521536@linux.alibaba.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221122_035314_099405_D6F4E4D6 X-CRM114-Status: GOOD ( 35.37 ) 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 CgpPbiAyMi8xMS8yMDIyIDA3OjExLCBKaW5nIFpoYW5nIHdyb3RlOgo+IAo+IAo+IOWcqCAyMDIy LzExLzIxIOS4i+WNiDc6NTEsIEphbWVzIENsYXJrIOWGmemBkzoKPj4KPj4KPj4gT24gMTYvMTEv MjAyMiAxNToyNiwgSmluZyBaaGFuZyB3cm90ZToKPj4+Cj4+Pgo+Pj4g5ZyoIDIwMjIvMTEvMTYg 5LiL5Y2INzoxOSwgSmFtZXMgQ2xhcmsg5YaZ6YGTOgo+Pj4+Cj4+Pj4KPj4+PiBPbiAzMS8xMC8y MDIyIDExOjExLCBKaW5nIFpoYW5nIHdyb3RlOgo+Pj4+PiBUaGlzIHNlcmllcyBhZGQgc2l4IG1l dHJpY2dyb3VwcyBmb3IgbmVvdmVyc2UtbjIsIGFtb25nIHdoaWNoLCB0aGUKPj4+Pj4gZm9ybXVs YSBvZiB0b3Bkb3duIEwxIGlzIGZyb20gdGhlIGRvY3VtZW50Ogo+Pj4+PiBodHRwczovL2RvY3Vt ZW50YXRpb24tc2VydmljZS5hcm0uY29tL3N0YXRpYy82MDI1MGM3Mzk1OTc4YjUyOTAzNmRhODY/ dG9rZW49Cj4+Pj4+Cj4+Pj4+IFNpbmNlIG5lb3ZlcnNlLW4yIGRvZXMgbm90IHlldCBzdXBwb3J0 IHRvcGRvd24gTDIsIG1ldHJpY2dyb3VwcyBzdWNoCj4+Pj4+IGFzIENhY2hlLCBUTEIsIEJyYW5j aCwgSW5zdHJ1Y3Rpb25zTWl4LCBhbmQgUEV1dGlsaXphdGlvbiBhcmUgYWRkZWQgdG8KPj4+Pj4g aGVscCBmdXJ0aGVyIGFuYWx5c2lzIG9mIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLgo+Pj4+Pgo+ Pj4+Cj4+Pj4gSGkgSmluZywKPj4+Pgo+Pj4+IFRoYW5rcyBmb3Igd29ya2luZyBvbiB0aGlzLCB0 aGVzZSBtZXRyaWNzIGxvb2sgb2sgdG8gbWUgaW4gZ2VuZXJhbCwKPj4+PiBhbHRob3VnaCB3ZSdy ZSBjdXJyZW50bHkgd29ya2luZyBvbiBwdWJsaXNoaW5nIHN0YW5kYXJkaXNlZCBtZXRyaWNzCj4+ Pj4gYWNyb3NzIGFsbCBuZXcgY29yZXMgYXMgcGFydCBvZiBhIG5ldyBwcm9qZWN0IGluIEFybS4g VGhpcyB3aWxsIGluY2x1ZGUKPj4+PiBOMiwgYW5kIG91ciBvbmVzIGFyZSB2ZXJ5IHNpbWlsYXIg KG9yIGFsbW9zdCBpZGVudGljYWwpIHRvIHlvdXJzLAo+Pj4+IGJhcnJpbmcgc2xpZ2h0bHkgZGlm ZmVyZW50IGdyb3VwIG5hbWVzLCBtZXRyaWMgbmFtZXMsIGFuZCBkaWZmZXJlbmNlcyBpbgo+Pj4+ IHRoaW5ncyBsaWtlIG91dHB1dHRpbmcgdG9wZG93biBtZXRyaWNzIGFzIHBlcmNlbnRhZ2VzLgo+ Pj4+Cj4+Pj4gV2UgcGxhbiB0byBwdWJsaXNoIG91ciBzdGFuZGFyZCBtZXRyaWNzIHNvbWUgdGlt ZSBpbiB0aGUgbmV4dCAyIG1vbnRocy4KPj4+PiBXb3VsZCB5b3UgY29uc2lkZXIgaG9sZGluZyBv ZmYgb24gbWVyZ2luZyB0aGlzIGNoYW5nZSBzbyB0aGF0IHdlIGhhdmUKPj4+PiBjb25zaXN0YW50 IGdyb3VwIG5hbWVzIGFuZCB1bml0cyBnb2luZyBmb3J3YXJkPyBPdGhlcndpc2UgTjIgd291bGQg YmU+IHRoZSBvZGQgb25lIG91dC4gSSB3aWxsIHNlbmQgeW91IHRoZSBtZXRyaWNzIHdoZW4gdGhl eSBhcmUgcmVhZHksIGFuZCB3ZQo+Pj4+IHdpbGwgaGF2ZSBhIHNjcmlwdCB0byBnZW5lcmF0ZSBw ZXJmIGpzb25zIGZyb20gdGhlbSwgc28geW91IGNhbiByZXZpZXcuCj4+Pj4KPj4+Cj4+PiBEbyB5 b3UgbWVhbiB0aGF0IGFmdGVyIHlvdSByZWxlYXNlIHRoZSBuZXcgc3RhbmRhcmQgbWV0cmljcywg SSByZW1ha2UgbXkKPj4+IHBhdGNoIHJlZmVycmluZyB0byB0aGVtLCBzdWNoIGFzIGNvbnNpc3Rl bnQgZ3JvdXAgbmFtZXMgYW5kIHVuaXQ/Cj4+Cj4+IEhpIEppbmcsCj4+Cj4+IEkgd2FzIHBsYW5u aW5nIHRvIHN1Ym1pdCB0aGUgcGF0Y2ggbXlzZWxmLCBidXQgdGhlcmUgd2lsbCBiZSBhIHNjcmlw dCB0bwo+PiBnZW5lcmF0ZSBwZXJmIGpzb24gZmlsZXMsIHNvIG5vIG1hbnVhbCB3b3JrIHdvdWxk IGJlIG5lZWRlZC4gQWx0aG91Z2gKPj4gdGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0 aGF0IHdlIHdvbid0IGJlIHB1Ymxpc2hpbmcgdGhlIGZpeGVkCj4+IFRvcGRvd25MMSBtZXRyaWNz IHRoYXQgeW91IGhhdmUgZm9yIHRoZSBleGlzdGluZyBOMiBzaWxpY29uIHNvIHRoZXJlCj4+IHdv dWxkIGJlIGEgb25lIHRpbWUgY29weSBwYXN0ZSB0byBmaXggdGhhdCBwYXJ0Lgo+Pgo+Pj4KPj4+ Cj4+Pj4gV2UgYWxzbyBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcnVtdWxhIGZvciBvbmUg b2YgdGhlIHRvcCBkb3duCj4+Pj4gbWV0cmljcyB3aGljaCBJIHRoaW5rIHdvdWxkIGJlIHNsaWdo dGx5IG1vcmUgYWNjdXJhdGUuIFdlIGRvbid0IGhhdmUKPj4+Cj4+Pgo+Pj4gVGhlIHYyIHZlcnNp b24gb2YgdGhlIHBhdGNoc2V0IHVwZGF0ZWQgdGhlIGZvcm11bGEgb2YgdG9wZG93biBMMS4KPj4+ IExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8xNjY4NDExNzIwLTM1ODEtMS1naXQt c2VuZC1lbWFpbC1yZW55dS56akBsaW51eC5hbGliYWJhLmNvbS8KPj4+Cj4+PiBUaGUgZm9ybXVs YSBvZiB0aGUgdjIgdmVyc2lvbiBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gdjEsIGFuZCBpdCBoYXMg YmVlbgo+Pj4gdmVyaWZpZWQgaW4gb3VyIHRlc3QgZW52aXJvbm1lbnQuIENhbiB5b3Ugc2hhcmUg eW91ciBmb3JtdWxhIGZpcnN0IGFuZCB3ZQo+Pj4gY2FuIGRpc2N1c3MgaXQgdG9nZXRoZXI/IDop Cj4+Cj4+IEkgd2FzIGxvb2tpbmcgYXQgdjIgYnV0IHJlcGxpZWQgdG8gdGhlIHJvb3Qgb2YgdGhl IHRocmVhZCBieSBtaXN0YWtlLiBJCj4+IGFsc28gaGFkIGl0IHRoZSB3cm9uZyB3YXkgcm91bmQu IFNvIHlvdXIgdmVyc2lvbiBjb3JyZWN0cyBmb3IgdGhlIGVycmF0YQo+PiBvbiB0aGUgY3VycmVu dCB2ZXJzaW9uIG9mIE4yIChhcyB5b3UgbWVudGlvbmVkIGluIHRoZSBjb21taXQgbWVzc2FnZSku Cj4+IE91ciB2ZXJzaW9uIHdvdWxkIGJlIGlmIHRoZXJlIGlzIGEgZnV0dXJlIG5ldyBzaWxpY29u IHJldmlzaW9uIHdpdGggdGhhdAo+PiBmaXhlZCwgYnV0IGl0IGRvZXMgaGF2ZSBhbiBleHRyYSBp bXByb3ZlbWVudCBieSBzdWJ0cmFjdGluZyB0aGUgYnJhbmNoCj4+IG1pc3ByZWRpY3RzLgo+Pgo+ PiBQZXJmIGRvZXNuJ3QgY3VycmVudGx5IG1hdGNoIHRoZSBqc29ucyBiYXNlZCBvbiBzaWxpY29u IHJldmlzaW9uLCBzbwo+PiB3ZSdkIGhhdmUgdG8gYWRkIHNvbWV0aGluZyBpbiBmb3IgdGhhdCBp ZiBhIGZpeGVkIHNpbGljb24gdmVyc2lvbiBpcwo+PiByZWxlYXNlZC4gQnV0IHRoaXMgaXMgYW5v dGhlciBwcm9ibGVtIGZvciBhbm90aGVyIHRpbWUuCj4+Cj4gCj4gSGkgSmFtZXMsCj4gCj4gTGV0 J3MgZG8gd2hhdCBJYW4gc2FpZCwgYW5kIHlvdSBjYW4gaW1wcm92ZSBpdCBsYXRlciB3aXRoIHRo ZSBzdGFuZGFyZCBtZXRyaWNzLAo+IGFmdGVyIHRoZSBmaXhlZCBzaWxpY29uIHZlcnNpb24gaXMg cmVsZWFzZWQuCj4gCgpPayB0aGF0J3MgZmluZSBieSBtZS4gSSBkbyBoYXZlIG9uZSB1cGRhdGUg YWJvdXQgb3VyIHB1Ymxpc2hpbmcgcHJvZ3Jlc3MKdG8gc2hhcmUuIFRoaXMgaXMgdGhlIChjdXJy ZW50bHkgZW1wdHkpIHJlcG8gdGhhdCB3ZSB3aWxsIGJlIGhvbGRpbmcgb3VyCm1ldHJpY3MgaW46 IGh0dHBzOi8vZ2l0bGFiLmFybS5jb20vdGVsZW1ldHJ5LXNvbHV0aW9uL3RlbGVtZXRyeS1zb2x1 dGlvbgoKV2UnbGwgYWxzbyBoYXZlIHRoZSBjb252ZXJzaW9uIHNjcmlwdCBpbiB0aGVyZSBhcyB3 ZWxsLiBTbyB0aGVyZSBoYXMgYXQKbGVhc3QgYmVlbiBzb21lIHByb2dyZXNzIGFuZCB3ZSdyZSBn ZXR0aW5nIGNsb3NlLiBJIHdpbGwga2VlcCB5b3UKdXBkYXRlZCB3aGVuIGl0IGlzIHBvcHVsYXRl ZC4KCj4gCj4+IFRoaXMgaXMgdGhlIGZyb250ZW5kIGJvdW5kIG1ldHJpYyB3ZSBoYXZlIGZvciBm dXR1cmUgcmV2aXNpb25zOgo+Pgo+PiAJIjEwMCAqICggKFNUQUxMX1NMT1RfRlJPTlRFTkQvKENQ VV9DWUNMRVMgKiA1KSkgLSAoKEJSX01JU19QUkVEICoKPj4gNCkvQ1BVX0NZQ0xFUykgKSIKPj4K Pj4gT3RoZXIgY2hhbmdlcyBhcmUsIGZvciBleGFtcGxlLCB5b3VyICd3YXN0ZWQnIG1ldHJpYywg d2UgaGF2ZQo+PiAnYmFkX3NwZWN1bGF0aW9uJywgYW5kIHdpdGhvdXQgdGhlCj4+IGN5Y2xlcyBz dWJ0cmFjdGlvbjoKPj4KPj4gCTEwMCAqICggKCgxIC0gKE9QX1JFVElSRUQvT1BfU1BFQykpICog KDEgLSAoU1RBTExfU0xPVC8oQ1BVX0NZQ0xFUyAqCj4+IDUpKSkpICsgKChCUl9NSVNfUFJFRCAq IDQpL0NQVV9DWUNMRVMpICkKPj4KPiAKPiBUaGFua3MgZm9yIHNoYXJpbmcgeW91ciBtZXRyaWMg dmVyc2lvbiwgQnV0IEkgc3RpbGwgd29uZGVyLCBpcyBCUl9NSVNfUFJFRCBub3QgY2xhc3NpZmll ZAo+IGFzIGZyb250ZW5kIGJvdW5kPyAKCldlJ3JlIGNvdW50aW5nIGJyYW5jaCBtaXNwcmVkaWN0 cyBhcyBhbiBleHRyYSBjb3N0IHNvIHdlIHN1YnRyYWN0IGl0CmZyb20gZnJvbnRlbmRfYm91bmQg YmVjYXVzZSBicmFuY2ggcmVsYXRlZCBzdGFsbHMgYXJlIGNvdmVyZWQgYnkKYmFkX3NwZWN1bGF0 aW9uIHdoZXJlIHdlIGhhdmUgYWRkZWQgQlJfTUlTX1BSRUQgaW5zdGVhZCBvZiBzdWJ0cmFjdGlu Zy4KClVuZm9ydHVuYXRlbHkgSSdtIGp1c3QgdGhlIG1pZGRsZSBtYW4gaGVyZSwgSSBkaWRuJ3Qg YWN0dWFsbHkgd29yawpkaXJlY3RseSBvbiBwcm9kdWNpbmcgdGhlc2UgbWV0cmljcyBzbyBJIGhv cGUgbm90aGluZyBnZXRzIGxvc3QgaW4gbXkKZXhwbGFuYXRpb24uCgo+IEhvdyBkbyB5b3UganVk Z2UgdGhlIGV4dHJhIGltcHJvdmVtZW50IGJ5IHN1YnRyYWN0aW5nIGJyYW5jaCBtaXNwcmVkaWN0 cz8KCkFzIGZhciBhcyBJIGtub3cgdGhlIHJlcG8gdGhhdCBJIG1lbnRpb25lZCBhYm92ZSB3aWxs IGhhdmUgc29tZQpiZW5jaG1hcmtzIGFuZCB0b29saW5nIHRoYXQgd2VyZSB1c2VkIHRvIHZhbGlk YXRlIG91ciB2ZXJzaW9uLiBTbyBpdApzaG91bGQgYmUgYXBwYXJlbnQgYnkgcnVubmluZyB0aG9z ZS4KCj4gCj4+IEFuZCBzb21lIG1vcmUgZGV0YWlscyBmaWxsZWQgaW4gYXJvdW5kIHRoZSB1bml0 cywgZm9yIGV4YW1wbGU6Cj4+Cj4+ICAgICB7Cj4+ICAgICAgICAgIk1ldHJpY05hbWUiOiAiYmFk X3NwZWN1bGF0aW9uIiwKPj4gICAgICAgICAiTWV0cmljRXhwciI6ICIxMDAgKiAoICgoMSAtIChP UF9SRVRJUkVEL09QX1NQRUMpKSAqICgxIC0KPj4gKFNUQUxMX1NMT1QvKENQVV9DWUNMRVMgKiA1 KSkpKSArICgoQlJfTUlTX1BSRUQgKiA0KS9DUFVfQ1lDTEVTKSApIiwKPj4gICAgICAgICAiQnJp ZWZEZXNjcmlwdGlvbiI6ICJCYWQgU3BlY3VsYXRpb24iLAo+PiAgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBpcyB0aGUgcGVyY2VudGFnZSBvZiB0b3RhbAo+PiBzbG90 cyB0aGF0IGV4ZWN1dGVkIG9wZXJhdGlvbnMgYW5kIGRpZG4ndCByZXRpcmUgZHVlIHRvIGEgcGlw ZWxpbmUKPj4gZmx1c2guXG5UaGlzIGluZGljYXRlcyBjeWNsZXMgdGhhdCB3ZXJlIHV0aWxpemVk IGJ1dCBpbmVmZmljaWVudGx5LiIsCj4+ICAgICAgICAgIk1ldHJpY0dyb3VwIjogIlRvcGRvd25M MSIsCj4+ICAgICAgICAgIlNjYWxlVW5pdCI6ICIxcGVyY2VudCBvZiBzbG90cyIKPj4gICAgIH0s Cj4+Cj4gCj4gTXkgIndhc3RlZCIgbWV0cmljIHdhcyBjaGFuZ2VkIGFjY29yZGluZyB0byB0aGUg YXJtIGRvY3VtZW50YXRpb24gZGVzY3JpcHRpb24sIGl0IHdhcyBvcmlnaW5hbGx5Cj4gImJhZF9z cGVjdWxhdGlvbiIuICBJIHdpbGwgY2hhbmdlICJ3YXN0ZWQiIGJhY2sgdG8gImJhZF9zcGVjdWxh dGlvbiIsIGlmIHlvdSB3aXNoLgoKWWVhaCB0aGF0IHdvdWxkIGJlIGdvb2QuIEkgdGhpbmsgc2lu Y2UgdGhhdCBkb2N1bWVudCB3ZSd2ZSB0cmllZCB0bwphbGlnbiBuYW1lcyBtb3JlIHRvIHdoYXQg d2FzIGFscmVhZHkgb3V0IHRoZXJlIGFuZCBiYWRfc3BlY3VsYXRpb24gd2FzCnByb2JhYmx5IGp1 ZGdlZCB0byBiZSBhIGJldHRlciBkZXNjcmlwdGlvbi4gRm9yIGV4YW1wbGUgaXQncyBhbHJlYWR5 CnVzZWQgaW4gdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvaGlzaWxpY29uL2hpcDA4 L21ldHJpY3MuanNvbgoKPiAKPiAKPiBUaGFua3MsCj4gSmluZwo+IAo+IAo+PiBTbyBpZ25vcmlu ZyB0aGUgZXJyYXRhIGlzc3VlLCB0aGUgbWFpbiByZWFzb24gdG8gaG9sZCBvZmYgaXMgZm9yCj4+ IGNvbnNpc3RlbmN5IGFuZCBjaHVybiBiZWNhdXNlIHRoZXNlIG1ldHJpY3MgaW4gdGhpcyBmb3Jt YXQgd2lsbCBiZQo+PiByZWxlYXNlZCBmb3IgYWxsIGNvcmVzIGdvaW5nIGZvcndhcmRzLgo+Pgo+ PiBUaGFua3MKPj4gSmFtZXMKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK