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 CF85EC54E58 for ; Wed, 20 Mar 2024 16:37:21 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hnxUHf6LjxdBKB/A7XWHHAP5UmA/9VmBVBqI6ExQdZU=; b=vsevG9IiWV4sr9 X0ZXwrOeK3y+wyjy5aArNhbnXD6wwX4CLmRANnAMlTTO8kj4CC1roPODewDPHHApi8AgZcmrVCC1W HDyGwSCPdVXc8O/aiM4xP+gXNPIe56B0TaPUKvKm8iHE7XHt9D9cXslk/XyZH+k9QaJcWpGKhtXbP 2AvTG/qEcCj2VsmdOz9I7M+tGm3ewV5baFwEe9NaI2bX0O8l5hb7CK/w5j3cxu6akLkHeFf7gi817 wETsl+hP3whyI/79DFfyI2swnNWwi9GL+N21wpfnNkfeI+l/q1W5m5VGApy0Lr2/ZdChXuAiHHqmx oI72m/PxltNfuM2QYaVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmyw9-00000000L4e-0hL7; Wed, 20 Mar 2024 16:37:09 +0000 Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmyw5-00000000L2U-0f6z for linux-riscv@lists.infradead.org; Wed, 20 Mar 2024 16:37:06 +0000 Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-60a0599f6e5so64308717b3.3 for ; Wed, 20 Mar 2024 09:37:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1710952622; x=1711557422; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=W9If8gKm4g8xXZ7luaZ2ew+TWutFKfUvL1LJsCgxjtI=; b=FGt1kCbnQmVphL1Z4Y/ry+101IidAUb1kdIptwJtH+484Os2bzr5IdUBfccf9WgVYY hAZqL0pHvRBO2zjxbTWJGXJylRcJTDTd9Zm5hDeqDR1u3kcib/byQIuiyhDOoJMLPusV YGzKr96VLhytOq28TLNyEqh21yCCE0lDZ/qW8AQ1TtexT7iIx/hlyYDcaVgnvdPdv9Vp race39ahz4JBHD7lRvYT9NFus9Lg3mSsVdJ53mkDC3/fC5dUES5MAVfazBcUi9c/xlj+ +ApLBy3i+iOC6rvFlMIwrAzv8UmdN8RDsxon6hopwbmENWhc8yHMdTXW2GUP5QTuBC8Y MvRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710952622; x=1711557422; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W9If8gKm4g8xXZ7luaZ2ew+TWutFKfUvL1LJsCgxjtI=; b=u/IN+BcT/ll5tTiv9W1QCUOjGiNafkBagJ0uor4JdFlZXpspjTCTEmaDgB/j24gMwq kHkpqaalafbYBgPyHqYnLNtaqWBgOGeyHKevqFa++E7e87enWrWBR8jCZtI29ebGl1xG qHbx2uWNynXoCKnWhySzk97vPAwfNWJ6o8K6bg405XoJmYvTSj4NmwhzpCL95eq+5A50 535kbODz9GsM5JMpXwkoM3qXXlz9lUAL0+WnuCaBTdDYDBvyearotulx/45JqED6IYAe F+Y0hKnVot3yei81g9bRJe0XJnuhypDO7F0ierDbf8xkBajibWBBm6y9/UAyNf4LHCNR YvAQ== X-Forwarded-Encrypted: i=1; AJvYcCXvWPbYYD9eOql/1Kc22FTmAwMIk3jZ6md4ZZJUcXFyr6g4ZuqORGi8bzjatj3kkCzn5+kii0Cke6Y5Rv1F7xpn9/qdzu30RxxQOjauGCL1 X-Gm-Message-State: AOJu0YwpRbzRS/gRg55UmfLRztwDBqyPSUfjbk7mxY3ZU8Syga57MDOK G18A2d9jvvuGdYZagWGEQTYY/XTenpjhk/Nx+HKCNM6s5LnRVhlhzksqqsXEzlxaWrEDb1EMUEW UAZLoPI+b7G08hUeipAJ7Y8PtmDuwxSHL18/WVQ== X-Google-Smtp-Source: AGHT+IG85CAR2jRi/ZC3JD8NV2LTtXycj4zCxvuhqHd7BQG7E6keicuEzLc3HojWbCvsospWkfTCIuvJ/T2a6sYEF+8= X-Received: by 2002:a0d:e782:0:b0:610:e849:408c with SMTP id q124-20020a0de782000000b00610e849408cmr5272877ywe.29.1710952621954; Wed, 20 Mar 2024 09:37:01 -0700 (PDT) MIME-Version: 1.0 References: <20220913094252.3555240-1-andy.chiu@sifive.com> <4fe4567b-96be-4102-952b-7d39109b2186@yadro.com> <51f21b87-ebed-4411-afbc-c00d3dea2bab@yadro.com> In-Reply-To: From: Andy Chiu Date: Thu, 21 Mar 2024 00:36:00 +0800 Message-ID: Subject: Re: [PATCH RFC v2 riscv/for-next 0/5] Enable ftrace with kernel preemption for RISC-V To: Alexandre Ghiti Cc: Evgenii Shatokhin , palmer@dabbelt.com, paul.walmsley@sifive.com, aou@eecs.berkeley.edu, rostedt@goodmis.org, mingo@redhat.com, peterz@infradead.org, jpoimboe@kernel.org, jbaron@akamai.com, ardb@kernel.org, greentime.hu@sifive.com, zong.li@sifive.com, guoren@kernel.org, Jessica Clarke , kernel@esmil.dk, linux-riscv@lists.infradead.org, linux@yadro.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240320_093705_261579_CD26EA3E X-CRM114-Status: GOOD ( 68.05 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBNYXIgMjAsIDIwMjQgYXQgMTozN+KAr0FNIEFsZXhhbmRyZSBHaGl0aSA8YWxleEBn aGl0aS5mcj4gd3JvdGU6Cj4KPiBIaSBBbmR5LAo+Cj4gT24gMTgvMDMvMjAyNCAxNjozMSwgQW5k eSBDaGl1IHdyb3RlOgo+ID4gSGkgRXZnZW5paSwKPiA+Cj4gPiBUaGFua3MgZm9yIHlvdXIgaGVs cCEKPiA+Cj4gPiBJIGp1c3QgcmViYXNlZCB1cG9uIDYuOC1yYzEgYW5kIHBhc3NlZCB0aGUgc3Ry ZXNzLW5nICsgZnRyYWNlL25vcAo+ID4gdGVzdGluZy4gSSB3aWxsIGFkZCBzb21lIHJhbmRvbSB0 cmFjZXJzIHRvIHRlc3QgYW5kIHNvbWUgb3B0aW1pemF0aW9uCj4gPiBiZWZvcmUgc2VuZGluZyBv dXQgYWdhaW4uIEhlcmUgYXJlIGEgZmV3IHRoaW5ncyBuZWVkZWQ6Cj4gPgo+ID4gT24gVGh1LCBG ZWIgMjIsIDIwMjQgYXQgMTI6NTXigK9BTSBFdmdlbmlpIFNoYXRva2hpbgo+ID4gPGUuc2hhdG9r aGluQHlhZHJvLmNvbT4gd3JvdGU6Cj4gPj4gT24gMjEuMDIuMjAyNCAwODoyNywgQW5keSBDaGl1 IHdyb3RlOgo+ID4+PiDCq9CS0L3QuNC80LDQvdC40LUhINCU0LDQvdC90L7QtSDQv9C40YHRjNC8 0L4g0L7RgiDQstC90LXRiNC90LXQs9C+INCw0LTRgNC10YHQsNGC0LAhwrsKPiA+Pj4KPiA+Pj4g T24gV2VkLCBGZWIgMTQsIDIwMjQgYXQgMzo0MuKAr0FNIEV2Z2VuaWkgU2hhdG9raGluIDxlLnNo YXRva2hpbkB5YWRyby5jb20+IHdyb3RlOgo+ID4+Pj4gSGksCj4gPj4+Pgo+ID4+Pj4gT24gMTMu MDkuMjAyMiAxMjo0MiwgQW5keSBDaGl1IHdyb3RlOgo+ID4+Pj4+IFRoaXMgcGF0Y2ggcmVtb3Zl cyBkZXBlbmRlbmN5IG9mIGR5bmFtaWMgZnRyYWNlIGZyb20gY2FsbGluZwo+ID4+Pj4+IHN0b3Bf bWFjaGluZSgpLCBhbmQgbWFrZXMgaXQgY29tcGF0aWFibGUgd2l0aCBrZXJuZWwgcHJlZW1wdGlv bi4KPiA+Pj4+PiBPcmlnaW5hbGx5LCB3ZSByYW4gaW50byBzdGFjayBjb3JydXB0aW9ucywgb3Ig ZXhlY3V0aW9uIG9mIHBhcnRpYWxseQo+ID4+Pj4+IHVwZGF0ZWQgaW5zdHJ1Y3Rpb25zIHdoZW4g c3RhcnRpbmcgb3Igc3RvcHBpbmcgZnRyYWNlIG9uIGEgZnVsbHkKPiA+Pj4+PiBwcmVlbXB0aWJs ZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gVGhlIHJlYXNvbiBpcyB0aGF0IGtlcm5lbCBwZXJpb2Rp Y2FsbHkKPiA+Pj4+PiBjYWxscyByY3VfbW9tZW50YXJ5X2R5bnRpY2tfaWRsZSgpIG9uIGNvcmVz IHdhaXRpbmcgZm9yIHRoZSBjb2RlLXBhdGNoaW5nCj4gPj4+Pj4gY29yZSBydW5uaW5nIGluIGZ0 cmFjZS4gVGhvdWdoIHJjdV9tb21lbnRhcnlfZHludGlja19pZGxlKCkgaXRzZWxmIGlzCj4gPj4+ Pj4gbWFya2VkIGFzIG5vdHJhY2UsIGl0IHdvdWxkIGNhbGwgYSBidW5jaCBvZiB0cmFjYWJsZSBm dW5jdGlvbnMgaWYgd2UKPiA+Pj4+PiBjb25maWd1cmVkIHRoZSBrZXJuZWwgYXMgcHJlZW1wdGli bGUuIEZvciBleGFtcGxlLCB0aGVzZSBhcmUgc29tZSBmdW5jdGlvbnMKPiA+Pj4+PiB0aGF0IGhh cHBlbmVkIHRvIGhhdmUgYSBzeW1ib2wgYW5kIGhhdmUgbm90IGJlZW4gbWFya2VkIGFzIG5vdHJh Y2Ugb24gYQo+ID4+Pj4+IFJJU0MtViBwcmVlbXB0aWJsZSBrZXJuZWwgY29tcGlsZWQgd2l0aCBH Q0MtMTE6Cj4gPj4+Pj4gICAgIC0gX19yY3VfcmVwb3J0X2V4cF9ybnAoKQo+ID4+Pj4+ICAgICAt IHJjdV9yZXBvcnRfZXhwX2NwdV9tdWx0KCkKPiA+Pj4+PiAgICAgLSByY3VfcHJlZW1wdF9kZWZl cnJlZF9xcygpCj4gPj4+Pj4gICAgIC0gcmN1X3ByZWVtcHRfbmVlZF9kZWZlcnJlZF9xcygpCj4g Pj4+Pj4gICAgIC0gcmN1X3ByZWVtcHRfZGVmZXJyZWRfcXNfaXJxcmVzdG9yZSgpCj4gPj4+Pj4K PiA+Pj4+PiBUaHVzLCB0aGlzIG1ha2UgaXQgbm90IGlkZWFsIGZvciB1cyB0byByZWx5IG9uIHN0 b3BfbWFjaGluZSgpIGFuZAo+ID4+Pj4+IGhhbmRseSBtYXJrZWQgIm5vdHJhY2UicyB0byBwZXJm b3JtIHJ1bnRpbWUgY29kZSBwYXRjaGluZy4gVG8gcmVtb3ZlCj4gPj4+Pj4gc3VjaCBkZXBlbmRl bmN5LCB3ZSBtdXN0IG1ha2UgdXBkYXRlcyBvZiBjb2RlIHNlZW1lZCBhdG9taWMgb24gcnVubmlu Zwo+ID4+Pj4+IGNvcmVzLiBUaGlzIG1pZ2h0IG5vdCBiZSBvYnZpb3VzIGZvciBSSVNDLVYgc2lu Y2UgaXQgdXNhdWFsbHkgdXNlcyBhIHBhaXIKPiA+Pj4+PiBvZiBBVUlQQyArIEpBTFIgdG8gcGVy Zm9ybSBhIGxvbmcganVtcCwgd2hpY2ggY2Fubm90IGJlIG1vZGlmaWVkIGFuZAo+ID4+Pj4+IGV4 ZWN1dGVkIGNvbmN1cnJlbnRseSBpZiB3ZSBjb25zaWRlciBwcmVlbXB0aW9ucy4gQXMgc3VjaCwg dGhpcyBwYXRjaAo+ID4+Pj4+IHByb3Bvc2VkIGEgd2F5IHRvIG1ha2UgaXQgcG9zc2libGUuIEl0 IGVtYmVkcyBhIDMyLWJpdCByZWwtYWRkcmVzcyBkYXRhCj4gPj4+Pj4gaW50byBpbnN0cnVjdGlv bnMgb2YgZWFjaCBmdHJhY2UgcHJvbG9ndWUgYW5kIGp1bXBzIGluZGlyZWN0bHkuIEluIHRoaXMK PiA+Pj4+PiB3YXksIHdlIGNvdWxkIHN0b3JlIGFuZCBsb2FkIHRoZSBhZGRyZXNzIGF0b21pY2Fs bHkgc28gdGhhdCB0aGUgY29kZQo+ID4+Pj4+IHBhdGNoaW5nIGNvcmUgY291bGQgcnVuIHNpbXV0 YW5lb3VzbHkgd2l0aCB0aGUgcmVzdCBvZiBydW5uaW5nIGNvcmVzLgo+ID4+Pj4+Cj4gPj4+Pj4g QWZ0ZXIgYXBwbHlpbmcgdGhlIHBhdGNoc2V0LCB3ZSBjb21waWxlZCBhIHByZWVtcHRpYmxlIGtl cm5lbCB3aXRoIGFsbAo+ID4+Pj4+IHRyYWNlcnMgYW5kIGZ0cmFjZS1zZWxmdGVzdCBlbmFibGVk LCBhbmQgYm9vdGVkIGl0IG9uIGEgMi1jb3JlIFFFTVUgdmlydAo+ID4+Pj4+IG1hY2hpbmUuIFRo ZSBrZXJuZWwgY291bGQgYm9vdCB1cCBzdWNjZXNzZnVsbHksIHBhc3NpbmcgYWxsIGZ0cmFjZQo+ ID4+Pj4+IHRlc3RzdWl0cy4gQmVzaWRlcywgd2UgcmFuIGEgc2NyaXB0IHRoYXQgcmFuZG9tbHkg cGljayBhIHRyYWNlciBvbiBldmVyeQo+ID4+Pj4+IDB+NSBzZWNvbmRzLiBUaGUga2VybmVsIGhh cyBzdXN0YWluZWQgb3ZlciAyMEsgcm91bmRzIG9mIHRoZSB0ZXN0LiBJbgo+ID4+Pj4+IGNvbnRy YXN0LCBhIHByZWVtcHRpYmxlIGtlcm5lbCB3aXRob3V0IG91ciBwYXRjaCB3b3VsZCBwYW5pYyBp biBmZXcKPiA+Pj4+PiByb3VuZHMgb24gdGhlIHNhbWUgbWFjaGluZS4KPiA+Pj4+Pgo+ID4+Pj4+ IFRob3VnaCB3ZSByYW4gaW50byBlcnJvcnMgd2hlbiB1c2luZyBod2xhdCBvciBpcnFzb2ZmIHRy YWNlcnMgdG9nZXRoZXIKPiA+Pj4+PiB3aXRoIGNwdS1vbmxpbmUgc3RyZXNzb3IgZnJvbSBzdHJl c3Mtbmcgb24gYSBwcmVlbXB0aWJsZSBrZXJuZWwuIFdlCj4gPj4+Pj4gYmVsaWV2ZSB0aGUgcmVh c29uIG1heSBiZSB0aGF0ICBwZXJjcHUgd29ya2VycyBvZiB0aGUgdHJhY2VycyBhcmUgYmVpbmcK PiA+Pj4+PiBxdWV1ZWQgaW50byB1bmJvdW5kZWQgd29ya3F1ZXVlIHdoZW4gY3B1IGdldCBvZmZs aW5lZCBhbmQgcGF0Y2hlcyB3aWxsIGdvCj4gPj4+Pj4gdGhyb3VnaCB0cmFjaW5nIHRyZWUuCj4g Pj4+Pj4KPiA+Pj4+PiBBZGRpdGlvbmFsbHksIHdlIGZvdW5kIHBhdGNoaW5nIG9mIHRyYWNlcG9p bnRzIHVuc2FmZSBzaW5jZSB0aGUKPiA+Pj4+PiBpbnN0cnVjdGlvbnMgYmVpbmcgcGF0Y2hlZCBh cmUgbm90IG5hdHVyYWxseSBhbGlnbmVkLiBUaGlzIG1heSByZXN1bHQgaW4KPiA+Pj4+PiAyIGhh bGYtd29yZCBzdG9yZXMsIHdoaWNoIGJyZWFrcyBhdG9taWNpdHksIGR1cmluZyB0aGUgY29kZSBw YXRjaGluZy4KPiA+Pj4+Pgo+ID4+Pj4+IGNoYW5nZXMgaW4gcGF0Y2ggdjI6Cj4gPj4+Pj4gICAg IC0gRW5mb3JjZSBhbGlnbm1lbnRzIG9uIGFsbCBmdW5jdGlvbnMgd2l0aCBhIGNvbXBpbGVyIHdv cmthcm91bmQuCj4gPj4+Pj4gICAgIC0gU3VwcG9ydCA2NGJpdCBhZGRyZXNzaW5nIGZvciBmdHJh Y2UgdGFyZ2V0cyBpZiB4bGVuID09IDY0Cj4gPj4+Pj4gICAgIC0gSW5pdGlhbGl6ZSBmdHJhY2Ug dGFyZ2V0IGFkZHJlc3NlcyB0byBhdm9pZCBjYWxsaW5nIGJhZCBhZGRyZXNzIGluIGEKPiA+Pj4+ PiAgICAgICBoeXBvdGhlc2l6ZWQgY2FzZS4KPiA+Pj4+PiAgICAgLSBVc2UgTEdQVFIgaW5zdGVh ZCBvZiBTWlBUUiBzaW5jZSAuYWxpZ24gaXMgbG9nLXNjYWxlZCBmb3IKPiA+Pj4+PiAgICAgICBt Y291bnQtZHluLlMKPiA+Pj4+PiAgICAgLSBSZXF1aXJlIHRoZSBub3AgaW5zdHJ1Y3Rpb24gb2Yg YWxsIGp1bXBfbGFiZWxzIGFsaWducyBuYXR1cmFsbHkgb24KPiA+Pj4+PiAgICAgICA0Qi4KPiA+ Pj4+Pgo+ID4+Pj4+IEFuZHkgQ2hpdSAoNSk6Cj4gPj4+Pj4gICAgICByaXNjdjogYWxpZ24gZnRy YWNlIHRvIDQgQnl0ZSBib3VuZGFyeSBhbmQgaW5jcmVhc2UgZnRyYWNlIHByb2xvZ3VlCj4gPj4+ Pj4gICAgICAgIHNpemUKPiA+Pj4+PiAgICAgIHJpc2N2OiBleHBvcnQgcGF0Y2hfaW5zbl93cml0 ZQo+ID4+Pj4+ICAgICAgcmlzY3Y6IGZ0cmFjZTogdXNlIGluZGlyZWN0IGp1bXAgdG8gd29yayB3 aXRoIGtlcm5lbCBwcmVlbXB0aW9uCj4gPj4+Pj4gICAgICByaXNjdjogZnRyYWNlOiBkbyBub3Qg dXNlIHN0b3BfbWFjaGluZSB0byB1cGRhdGUgY29kZQo+ID4+Pj4+ICAgICAgcmlzY3Y6IGFsaWdu IGFyY2hfc3RhdGljX2JyYW5jaCBmdW5jdGlvbgo+ID4+Pj4+Cj4gPj4+Pj4gICAgIGFyY2gvcmlz Y3YvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICstCj4gPj4+Pj4gICAgIGFyY2gvcmlz Y3YvaW5jbHVkZS9hc20vZnRyYWNlLmggICAgIHwgIDI0IC0tLS0KPiA+Pj4+PiAgICAgYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmggfCAgIDIgKwo+ID4+Pj4+ICAgICBhcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3BhdGNoLmggICAgICB8ICAgMSArCj4gPj4+Pj4gICAgIGFyY2gvcmlz Y3Yva2VybmVsL2Z0cmFjZS5jICAgICAgICAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0KPiA+Pj4+PiAgICAgYXJjaC9yaXNjdi9rZXJuZWwvbWNvdW50LWR5bi5TICAgICAgfCAg NjkgKysrKysrKystLS0KPiA+Pj4+PiAgICAgYXJjaC9yaXNjdi9rZXJuZWwvcGF0Y2guYyAgICAg ICAgICAgfCAgIDQgKy0KPiA+Pj4+PiAgICAgNyBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9u cygrKSwgOTMgZGVsZXRpb25zKC0pCj4gPj4+Pj4KPiA+Pj4+IEZpcnN0IG9mIGFsbCwgdGhhbmsg eW91IGZvciB3b3JraW5nIG9uIG1ha2luZyBkeW5hbWljIEZ0cmFjZSByb2J1c3QgaW4KPiA+Pj4+ IHByZWVtcHRpYmxlIGtlcm5lbHMgb24gUklTQy1WLgo+ID4+Pj4gSXQgaXMgYW4gaW1wb3J0YW50 IHVzZSBjYXNlIGJ1dCwgZm9yIG5vdywgZHluYW1pYyBGdHJhY2UgYW5kIHJlbGF0ZWQKPiA+Pj4+ IHRyYWNlcnMgY2Fubm90IGJlIHNhZmVseSB1c2VkIHdpdGggc3VjaCBrZXJuZWxzLgo+ID4+Pj4K PiA+Pj4+IEFyZSB0aGVyZSBhbnkgdXBkYXRlcyBvbiB0aGlzIHNlcmllcz8KPiA+Pj4+IEl0IG5l ZWRzIGEgcmViYXNlLCBvZiBjb3Vyc2UsIGJ1dCBpdCBsb29rcyBkb2FibGUuCj4gPj4+Pgo+ID4+ Pj4gSWYgSSB1bmRlcnN0YW5kIHRoZSBkaXNjdXNzaW9uIGNvcnJlY3RseSwgdGhlIG9ubHkgYmxv Y2tlciB3YXMgdGhhdAo+ID4+Pj4gdXNpbmcgIi1mYWxpZ24tZnVuY3Rpb25zIiB3YXMgbm90IGVu b3VnaCB0byBwcm9wZXJseSBhbGlnbiBjb2xkCj4gPj4+PiBmdW5jdGlvbnMgYW5kICItZm5vLWd1 ZXNzLWJyYW5jaC1wcm9iYWJpbGl0eSIgd291bGQgbGlrZWx5IGhhdmUgYQo+ID4+Pj4gcGVyZm9y bWFuY2UgY29zdC4KPiA+Pj4+Cj4gPj4+PiBJdCBzZWVtcywgR0NDIGRldmVsb3BlcnMgaGF2ZSBy ZWNlbnRseSBwcm92aWRlZCBhIHdvcmthcm91bmQgZm9yIHRoYXQKPiA+Pj4+IChodHRwczovL2dj Yy5nbnUub3JnL2dpdC9naXR3ZWIuY2dpP3A9Z2NjLmdpdDtoPTBmNWE5YTAwZTNhYjFmZTk2MTQy ZjMwNGNmYmNmM2Y2M2IxNWYzMjYsCj4gPj4+PiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxh L3Nob3dfYnVnLmNnaT9pZD04ODM0NSNjMjQpLgo+ID4+Pj4KPiA+Pj4+ICItZm1pbi1mdW5jdGlv bi1hbGlnbm1lbnQiIHNob3VsZCBoZWxwIGJ1dCwgSSBkbyBub3Qga25vdywgd2hpY2ggR0NDCj4g Pj4+PiB2ZXJzaW9ucyBoYXZlIGdvdCB0aGF0IHBhdGNoIGFscmVhZHkuIEluIHRoZSBtZWFudGlt ZSwgb25lIGNvdWxkCj4gPj4+PiBwcm9iYWJseSBjaGVjayBpZiAiLWZtaW4tZnVuY3Rpb24tYWxp Z25tZW50IiBpcyBzdXBwb3J0ZWQgYnkgdGhlCj4gPj4+PiBjb21waWxlciBhbmQgdXNlIGl0LCBp ZiBpdCBpcy4KPiA+Pj4+Cj4gPj4+PiBUaG91Z2h0cz8KPiA+Pj4gSGkgRXZnZW5paSwKPiA+Pj4K PiA+Pj4gVGhhbmtzIGZvciB0aGUgdXBkYXRlLiBJbmRlZWQsIGl0IGlzIGVzc2VudGlhbCB0byB0 aGlzIHBhdGNoIGZvcgo+ID4+PiB0b29sY2hhaW4gdG8gcHJvdmlkZSBmb3JjZWQgYWxpZ25tZW50 LiBXZSBjYW4gdGVzdCB0aGlzIGZsYWcgaW4gdGhlCj4gPj4+IE1ha2VmaWxlIHRvIHNvcnQgb3V0 IGlmIHRvb2xjaGFpbiBzdXBwb3J0cyBpdCBvciBub3QuIE1lYW53aGlsZSwgSSBoYWQKPiA+Pj4g ZmlndXJlZCBvdXQgYSB3YXkgZm9yIHRoaXMgdG8gd29yayBvbiBhbnkgMi1CIGFsaWduIGFkZHJl c3NlcyBidXQKPiA+Pj4gaGFkbid0IGltcGxlbWVudGVkIGl0IG91dCB5ZXQuIEJhc2ljYWxseSBp dCB3b3VsZCByZXF1aXJlIG1vcmUKPiA+Pj4gcGF0Y2hpbmcgc3BhY2UgZm9yIHVzIHRvIGRvIHNv ZnR3YXJlIGFsaWdubWVudC4gSSB3b3VsZCBvcHQgZm9yIGEKPiA+Pj4gc3BlY2lhbCB0b29sY2hh aW4gZmxhZyBpZiB0aGUgdG9vbGNoYWluIGp1c3Qgc3VwcG9ydHMgaXQuCj4gPj4+Cj4gPj4+IExl dCBtZSB0YWtlIHNvbWUgdGltZSB0byBsb29rIGFuZCBnZXQgYmFjayB0byB5b3Ugc29vbi4KPiA+ PiBUaGFuayB5b3UhIExvb2tpbmcgZm9yd2FyZCB0byBpdC4KPiA+Pgo+ID4+IEluIGNhc2UgaXQg aGVscHMsIGhlcmUgaXMgd2hhdCBJIGhhdmUgY2hlY2tlZCBzbyBmYXIuCj4gPj4KPiA+PiAxLgo+ ID4+IEkgYWRkZWQgdGhlIHBhdGNoCj4gPj4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9naXQvP3A9Z2Nj LmdpdDthPXBhdGNoO2g9MGY1YTlhMDBlM2FiMWZlOTYxNDJmMzA0Y2ZiY2YzZjYzYjE1ZjMyNgo+ ID4+IHRvIHRoZSBjdXJyZW50IHJldmlzaW9uIG9mIEdDQyAxMy4yLjAgZnJvbSBSSVNDLVYgdG9v bGNoYWluLgo+ID4+Cj4gPj4gUmViYXNlZCB5b3VyIHBhdGNoc2V0IG9uIHRvcCBvZiBMaW51eCA2 LjgtcmM0IChtb3N0bHkgLSBjb250ZXh0IGNoYW5nZXMsCj4gPj4gU1lNX0ZVTkNfU1RBUlQvU1lN X0ZVTkNfRU5EIGZvciBhc20gc3ltYm9scywgZXRjLikuCj4gPj4KPiA+PiBSZXZlcnRlZCA4NTQ3 NjQ5OTgxZTYgKCJyaXNjdjogZnRyYWNlOiBGaXh1cCBwYW5pYyBieSBkaXNhYmxpbmcKPiA+PiBw cmVlbXB0aW9uIikuCj4gPj4KPiA+PiBTd2l0Y2hlZCBmcm9tIC1mYWxpZ24tZnVuY3Rpb25zPTQg dG8gLWZtaW4tZnVuY3Rpb24tYWxpZ25tZW50PTQ6Cj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tCj4g Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L01ha2VmaWxl Cj4gPj4gaW5kZXggYjMzYjc4N2M4YjA3Li5kY2QwYWRlZWJhYWUgMTAwNjQ0Cj4gPj4gLS0tIGEv YXJjaC9yaXNjdi9NYWtlZmlsZQo+ID4+ICsrKyBiL2FyY2gvcmlzY3YvTWFrZWZpbGUKPiA+PiBA QCAtMTUsOSArMTUsOSBAQCBpZmVxICgkKENPTkZJR19EWU5BTUlDX0ZUUkFDRSkseSkKPiA+PiAg ICAgICAgICBMREZMQUdTX3ZtbGludXggKz0gLS1uby1yZWxheAo+ID4+ICAgICAgICAgIEtCVUlM RF9DUFBGTEFHUyArPSAtRENDX1VTSU5HX1BBVENIQUJMRV9GVU5DVElPTl9FTlRSWQo+ID4+ICAg IGlmZXEgKCQoQ09ORklHX1JJU0NWX0lTQV9DKSx5KQo+ID4+IC0gICAgICAgQ0NfRkxBR1NfRlRS QUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTEyIC1mYWxpZ24tZnVuY3Rpb25zPTQK PiA+PiArICAgICAgIENDX0ZMQUdTX0ZUUkFDRSA6PSAtZnBhdGNoYWJsZS1mdW5jdGlvbi1lbnRy eT0xMgo+ID4+IC1mbWluLWZ1bmN0aW9uLWFsaWdubWVudD00Cj4gPj4gICAgZWxzZQo+ID4+IC0g ICAgICAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTYgLWZh bGlnbi1mdW5jdGlvbnM9NAo+ID4+ICsgICAgICAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hh YmxlLWZ1bmN0aW9uLWVudHJ5PTYgLWZtaW4tZnVuY3Rpb24tYWxpZ25tZW50PTQKPiA+PiAgICBl bmRpZgo+ID4+ICAgIGVuZGlmCj4gPj4KPiA+PiAtLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pgo+ID4+ IEFzIGZhciBhcyBJIGNhbiBzZWUgZnJvbSBvYmpkdW1wLCB0aGUgZnVuY3Rpb25zIHRoYXQgd2Vy ZSBub3QgYWxpZ25lZCBhdAo+ID4+IDQtYnl0ZSBib3VuZGFyeSB3aXRoIC1mYWxpZ24tZnVuY3Rp b25zPTQsIGFyZSBub3cgYWxpZ25lZCBjb3JyZWN0bHkgd2l0aAo+ID4+IC1mbWluLWZ1bmN0aW9u LWFsaWdubWVudD00Lgo+ID4+Cj4gPj4gMi4KPiA+PiBJIHRyaWVkIHRoZSBrZXJuZWwgaW4gYSBR RU1VIFZNIHdpdGggMiBDUFVzIGFuZCAiLW1hY2hpbmUgdmlydCIuCj4gPj4KPiA+PiBUaGUgYm9v dHRpbWUgdGVzdHMgZm9yIEZ0cmFjZSBoYWQgcGFzc2VkLCBleGNlcHQgdGhlIHRlc3RzIGZvcgo+ ID4+IGZ1bmN0aW9uX2dyYXBoLiBJIGRlc2NyaWJlZCB0aGUgZmFpbHVyZSBhbmQgdGhlIHBvc3Np YmxlIGZpeCBoZXJlOgo+ID4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC9kY2M1OTc2ZC02 MzVhLTQ3MTAtOTJkZi05NGE5OTY1MzMxNGVAeWFkcm8uY29tLwo+ID4gSW5kZWVkLCB0aGlzIGlz IG5lZWRlZC4gSSBhbSBub3Qgc3VyZSB3aHkgSSBnb3QgZnRyYWNlIGJvb3QtdGltZSB0ZXN0cwo+ ID4gcGFzc2VkIGJhY2sgdGhlbi4gVGhhbmsgeW91IGZvciBzb2x2aW5nIGl0IQo+ID4KPiA+PiAz Lgo+ID4+IFRoZXJlIHdlcmUgYWxzbyBib290dGltZSB3YXJuaW5ncyBhYm91dCAiUkNVIG5vdCBv biBmb3I6Cj4gPj4gYXJjaF9jcHVfaWRsZSsweDAvMHgyYyIuIFRoZXNlIGFyZSBwcm9iYWJseSBu b3QgcmVsYXRlZCB0byB5b3VyCj4gPj4gcGF0Y2hzZXQsIGJ1dCByYXRoZXIgdG8gdGhlIGZhY3Qg dGhhdCBGdHJhY2UgaXMgZW5hYmxlZCBpbiBhIHByZWVtcHRibGUKPiA+PiBrZXJuZWwgd2hlcmUg UkNVIGRvZXMgZGlmZmVyZW50IHRoaW5ncy4KPiA+Pgo+ID4+IEFzIGEgd29ya2Fyb3VuZCwgSSBk aXNhYmxlZCB0cmFjaW5nIG9mIGFyY2hfY3B1X2lkbGUoKSBmb3Igbm93Ogo+ID4+IC0tLS0tLS0t LS0tLS0tLS0tLQo+ID4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMg Yi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiA+PiBpbmRleCA5MjkyMmRiZDViNWMuLjZh YmVlY2JmYzUxZCAxMDA2NDQKPiA+PiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMK PiA+PiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiA+PiBAQCAtMzcsNyArMzcs NyBAQCBFWFBPUlRfU1lNQk9MKF9fc3RhY2tfY2hrX2d1YXJkKTsKPiA+Pgo+ID4+ICAgIGV4dGVy biBhc21saW5rYWdlIHZvaWQgcmV0X2Zyb21fZm9yayh2b2lkKTsKPiA+Pgo+ID4+IC12b2lkIGFy Y2hfY3B1X2lkbGUodm9pZCkKPiA+PiArdm9pZCBub2luc3RyIGFyY2hfY3B1X2lkbGUodm9pZCkK PiA+PiAgICB7Cj4gPj4gICAgICAgICAgY3B1X2RvX2lkbGUoKTsKPiA+PiAgICB9Cj4gPj4KPiA+ PiAtLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pgo+ID4+IDQuCj4gPj4gU3RyZXNzLXRlc3RpbmcgcmV2 ZWFsZWQgYW4gaXNzdWUgdGhvdWdoLCB3aGljaCBJIGRvIG5vdCB1bmRlcnN0YW5kIHlldC4KPiA+ Pgo+ID4+IFByb2JhYmx5IHNpbWlsYXIgdG8gd2hhdCB5b3UgZGlkIGVhcmxpZXIsIEkgcmFuIGEg c2NyaXB0IHRoYXQgc3dpdGNoZWQKPiA+PiB0aGUgY3VycmVudCB0cmFjZXIgdG8gImZ1bmN0aW9u IiwgImZ1bmN0aW9uX2dyYXBoIiwgIm5vcCIsICJibGsiIGVhY2gKPiA+PiAxLTUgc2Vjb25kcy4g SW4gYW5vdGhlciBzaGVsbCwgInN0cmVzcy1uZyAtLWhydGltZXJzIDEiIHdhcyBydW5uaW5nLgo+ ID4+Cj4gPj4gVGhlIGtlcm5lbCB1c3VhbGx5IGNyYXNoZWQgd2l0aGluIGEgZmV3IG1pbnV0ZXMs IGluIHNlZW1pbmdseSByYW5kb20KPiA+PiBsb2NhdGlvbnMsIGJ1dCBvZnRlbiBpbiBvbmUgb2Yg dHdvIHdheXM6Cj4gPj4KPiA+PiAoYSkgSW52YWxpZCBpbnN0cnVjdGlvbiwgYmVjYXVzZSB0aGUg YWRkcmVzcyBvZiBmdHJhY2VfY2FsbGVyIGZ1bmN0aW9uCj4gPj4gd2FzIHNvbWVob3cgd3JpdHRl biB0byB0aGUgYm9keSBvZiB0aGUgdHJhY2VkIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGp1c3QKPiA+ PiB0byB0aGUgRnRyYWNlIHByb2xvZ3VlLgo+ID4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBwcm9i YWJseSB0aGF0IGFueSBvbmUgb2YgeW91ciBmdHJhY2VfKl9jYWxsIGlzCj4gPiBub3QgOC1CIGFs aWduZWQuCj4gPgo+ID4+IEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIGNyYXNoIGhhcHBl bmVkIGF0IDB4ZmZmZmZmZmY4MDBkMzM5OC4gImIwCj4gPj4gZDciIGlzIGFjdHVhbGx5IG5vdCBw YXJ0IG9mIHRoZSBjb2RlIGhlcmUsIGJ1dCByYXRoZXIgdGhlIGxvd2VyIGJ5dGVzIG9mCj4gPj4g MHhmZmZmZmZmZjgwMDBkN2IwLCB0aGUgYWRkcmVzcyBvZiBmdHJhY2VfY2FsbGVyKCkgaW4gdGhp cyBrZXJuZWwuCj4gPiBJdCBzZWVtcyBsaWtlIHRoZXJlIGlzIGEgYnVnIGluIHBhdGNoX2luc25f d3JpdGUoKS4gSSB0aGluayB3ZSBzaG91bGQKPiA+IGF0IGxlYXN0IGRpc2FibGUgbWlncmF0aW9u IGR1cmluZyBwYXRjaF9tYXAoKSBhbmQgcGF0Y2hfdW5tYXAoKS4gSSdkCj4gPiBuZWVkIHNvbWUg dGltZSB0byBkaWcgaW50byBwYXRjaF9tYXAoKS4gQnV0IHNpbmNlIF9fc2V0X2ZpeG1hcCgpIG9u bHkKPiA+IGZsdXNoIGxvY2FsIHRsYiwgSSdkIGFzc3VtZSBpdCBpcyBub3Qgc2FmZSB0byBjb250 ZXh0IHN3aXRjaCBvdXQgYW5kCj4gPiBtaWdyYXRlIHdoaWxlIGhvbGRpbmcgdGhlIGZpeC1tYXAg bWFwcGluZy4gQWRkaW5nIHByZWVtcHRfZGlzYWJsZSgpCj4gPiBhbmQgcHJlZW1wdF9lbmFibGUo KSBiZWZvcmUgY2FsbGluZyBfX3BhdGNoX2luc25fd3JpdGUoKSBzb2x2ZXMgdGhlCj4gPiBpc3N1 ZS4KPgo+Cj4gWWVzLCBBbmRyZWEgYWxyZWFkeSBtZW50aW9uZWQgdGhpcywgSSBjYW1lIHVwIHdp dGggdGhlIHNhbWUgaWRlYSBvZgo+IHByZWVtcHRfZGlzYWJsZSgpIGJ1dCB0aGVuIEkgbm90aWNl ZCBhcm02NCBhY3R1YWxseSBkaXNhYmxlcyBJUlE6IGFueQo+IGlkZWEgd2h5Pwo+IGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xpbnV4LXJpc2N2L0NBSFZYdWJqN0NoZ3B2TjRGX1FPMG9BU2FUNVdD MlZTMFEtYkVxaG5tRjh6OFFWPXlEUUBtYWlsLmdtYWlsLmNvbS8KCkhpLCBJIHRvb2sgYSBxdWlj ayBsb29rIGFuZCBpdCBzZWVtcyB0aGF0IGl0IGlzIGEgZGVzaWduIGNob2ljZSBpbgpzb2Z0d2Fy ZSB0byBtZS4gQVJNIHVzZXMgYSBzcGlubG9jayB0byBwcm90ZWN0IHRleHQgYW5kIHdlIHVzZSBh Cm11dGV4LiBJZiB0aGV5IGhhdmUgYSByZXF1aXJlbWVudCB0byBkbyBwYXRjaGluZyB3aGlsZSBp cnEgaXMgb2ZmCihtYXliZSBpbiBhbiBpcGkgaGFuZGxlciksIHRoZW4gdGhlIG9ubHkgdmlhYmxl IG9wdGlvbiB3b3VsZCBiZSB0byB1c2UKcmF3X3NwaW5fbG9ja19pcnFzYXZlLiBJIHRoaW5rIHBy ZWVtcHRfZGlzYWJsZSBzaG91bGQgYmUgZW5vdWdoIGZvciB1cwppZiB3ZSB1c2UgdGV4dF9tdXRl eCB0byBwcm90ZWN0IHBhdGNoaW5nLiBPciwgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KCgoKCj4K Pgo+ID4+IChnZGIpIGRpc2FzIC9yIDB4ZmZmZmZmZmY4MDBkMzM4MiwrMHgyMAo+ID4+IER1bXAg b2YgYXNzZW1ibGVyIGNvZGUgZnJvbSAweGZmZmZmZmZmODAwZDMzODIgdG8gMHhmZmZmZmZmZjgw MGQzM2EyOgo+ID4+IC4uLgo+ID4+ICAgICAgMHhmZmZmZmZmZjgwMGQzMzk0IDxjbG9ja2V2ZW50 c19wcm9ncmFtX2V2ZW50KzE0ND46ICBiYSA4NyAgIG12Cj4gPj4gYTUsYTQKPiA+PiAgICAgIDB4 ZmZmZmZmZmY4MDBkMzM5NiA8Y2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudCsxNDY+OiAgYzEgYmYg ICBqCj4gPj4gMHhmZmZmZmZmZjgwMGQzMzY2IDxjbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50Kzk4 Pgo+ID4+ICAgICAgMHhmZmZmZmZmZjgwMGQzMzk4IDxjbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50 KzE0OD46ICBiMCBkNyAgIHN3Cj4gPj4gYTIsMTA0KGE1KSAvLyAweGZmZmZmZmZmODAwMGQ3YjAs IHRoZSBhZGRyZXNzIG9mIGZ0cmFjZV9jYWxsZXIoKS4KPiA+PiAgICAgIDB4ZmZmZmZmZmY4MDBk MzM5YSA8Y2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudCsxNTA+OiAgMDAgODAgICAuMmJ5dGUKPiA+ PiAweDgwMDAKPiA+PiAgICAgIDB4ZmZmZmZmZmY4MDBkMzM5YyA8Y2xvY2tldmVudHNfcHJvZ3Jh bV9ldmVudCsxNTI+OiAgZmYgZmYgICAuMmJ5dGUKPiA+PiAweGZmZmYKPiA+PiAgICAgIDB4ZmZm ZmZmZmY4MDBkMzM5ZSA8Y2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudCsxNTQ+OiAgZmYgZmYgICAu MmJ5dGUKPiA+PiAweGZmZmYKPiA+PiAgICAgIDB4ZmZmZmZmZmY4MDBkMzNhMCA8Y2xvY2tldmVu dHNfcHJvZ3JhbV9ldmVudCsxNTY+OiAgZDUgYmYgICBqCj4gPj4gMHhmZmZmZmZmZjgwMGQzMzk0 IDxjbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50KzE0NAo+ID4+Cj4gPj4gVGhlIGJhY2t0cmFjZSB1 c3VhbGx5IGNvbnRhaW5zIG9uZSBvciBtb3JlIG9jY3VycmVuY2VzIG9mCj4gPj4gcmV0dXJuX3Rv X2hhbmRsZXIoKSBpbiB0aGlzIGNhc2UuCj4gPj4KPiA+PiBbICAyNjAuNTIwMzk0XSBbPGZmZmZm ZmZmODAwZDMzOTg+XSBjbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50KzB4YWMvMHgxMDAKPiA+PiBb ICAyNjAuNTIxMTk1XSBbPGZmZmZmZmZmODAwMGQyYmM+XSByZXR1cm5fdG9faGFuZGxlcisweDAv MHgyNgo+ID4+IFsgIDI2MC41MjE4NDNdIFs8ZmZmZmZmZmY4MDBjNTBiYT5dIGhydGltZXJfaW50 ZXJydXB0KzB4MTIyLzB4MjBjCj4gPj4gWyAgMjYwLjUyMjQ5Ml0gWzxmZmZmZmZmZjgwMDBkMmJj Pl0gcmV0dXJuX3RvX2hhbmRsZXIrMHgwLzB4MjYKPiA+PiBbICAyNjAuNTIzMTMyXSBbPGZmZmZm ZmZmODAwOTc4NWU+XSBoYW5kbGVfcGVyY3B1X2RldmlkX2lycSsweDllLzB4MWVjCj4gPj4gWyAg MjYwLjUyMzc4OF0gWzxmZmZmZmZmZjgwMDBkMmJjPl0gcmV0dXJuX3RvX2hhbmRsZXIrMHgwLzB4 MjYKPiA+PiBbICAyNjAuNTI0NDM3XSBbPGZmZmZmZmZmODAwMGQyYmM+XSByZXR1cm5fdG9faGFu ZGxlcisweDAvMHgyNgo+ID4+IFsgIDI2MC41MjUwODBdIFs8ZmZmZmZmZmY4MGE4YWNmYT5dIGhh bmRsZV9yaXNjdl9pcnErMHg0YS8weDc0Cj4gPj4gWyAgMjYwLjUyNTcyNl0gWzxmZmZmZmZmZjgw YTk3YjlhPl0gY2FsbF9vbl9pcnFfc3RhY2srMHgzMi8weDQwCj4gPj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ID4+Cj4gPj4gKGIpIEp1bXAgdG8gYW4gaW52YWxpZCBsb2NhdGlvbiwgZS5nLiB0 byB0aGUgbWlkZGxlIG9mIGEgdmFsaWQgNC1ieXRlCj4gPj4gaW5zdHJ1Y3Rpb24uICVyYSB1c3Vh bGx5IHBvaW50cyByaWdodCBhZnRlciB0aGUgbGFzdCBpbnN0cnVjdGlvbiwgImphbHIKPiA+PiAg ICAgYTIiLCBpbiByZXR1cm5fdG9faGFuZGxlcigpIGluIHN1Y2ggY2FzZXMsIHNvIHRoZSBqdW1w IHdhcyBsaWtlbHkKPiA+PiBtYWRlIGZyb20gdGhlcmUuCj4gPiBJIGhhdmVuJ3QgZG9uZSBmZ3Jh cGggdGVzdHMgeWV0LiBJIHdpbGwgdHJ5IG91dCBhbmQgc2VlLgo+ID4KPiA+PiBUaGUgcHJvYmxl bSBpcyByZXByb2R1Y2libGUsIGFsdGhvdWdoIEkgaGF2ZSBub3QgZm91bmQgd2hhdCBjYXVzZXMg aXQgeWV0Lgo+ID4+Cj4gPj4gQW55IGhlbHAgaXMgYXBwcmVjaWF0ZWQsIG9mIGNvdXJzZS4KPiA+ Pgo+ID4+Pj4gUmVnYXJkcywKPiA+Pj4+IEV2Z2VuaWkKPiA+Pj4gUmVnYXJkcywKPiA+Pj4gQW5k eQo+ID4gQWxzbywgaGVyZSBpcyBhbm90aGVyIHNpZGUgbm90ZSwKPiA+Cj4gPiBJdCBzZWVtcyBs aWtlIHRoZSBmdHJhY2Ugc2F2ZS9yZXN0b3JlIHJvdXRpbmUgc2hvdWxkIHNhdmUgbW9yZQo+ID4g cmVnaXN0ZXJzIGFzIGNsYW5nJ3MgZmFzdGNjIG1heSB1c2UgdDIgd2hlbiB0aGUgbnVtYmVyIG9m IGFyZ3VtZW50cwo+ID4gZXhjZWVkcyB3aGF0IEFCSSBkZWZpbmVzIGZvciBwYXNzaW5nIGFyZyB0 aHJvdWdoIHJlZ2lzdGVycy4KPiA+Cj4gPiBDaGVlcnMsCj4gPiBBbmR5Cj4gPgo+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGxpbnV4LXJpc2N2 IG1haWxpbmcgbGlzdAo+ID4gbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3Yg bWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=