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 X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8716EC48BCD for ; Wed, 9 Jun 2021 12:17:18 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3F6A461287 for ; Wed, 9 Jun 2021 12:17:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F6A461287 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E9886E32A; Wed, 9 Jun 2021 12:17:17 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 42E8989CD7; Wed, 9 Jun 2021 12:17:15 +0000 (UTC) IronPort-SDR: MorWPcIQxJn24FuXtzjA9Jpu5ejmaraQ4VaT3/ovAx9tjbFEWKU71VvqLJTN9Ba7IjvFw36G8L KlRQUn7Juf3g== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="205022708" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="205022708" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:17:02 -0700 IronPort-SDR: xTIiQOPvJAUrafdTVGhUC13TuU9ZIjU+bf8j4V9gcCvMJAzqewedKAUSUV86uohn90qqmBqM33 Walq3qWmeGDA== X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="440824558" Received: from hkrasnod-mobl1.ger.corp.intel.com (HELO [10.249.254.21]) ([10.249.254.21]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:16:59 -0700 Subject: Re: [Intel-gfx] [PATCH v2 0/9] Prereqs for TTM accelerated migration To: Daniel Vetter References: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= Message-ID: <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> Date: Wed, 9 Jun 2021 14:16:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, matthew.auld@intel.com, dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 6/9/21 1:48 PM, Daniel Vetter wrote: > On Wed, Jun 09, 2021 at 08:34:27AM +0200, Thomas Hellström wrote: >> A couple of patches from Chris which implement pipelined migration and >> clears by atomically writing the PTEs in place before performing the >> actual blit. >> >> Some ww utilities mainly for the accompanying selftests added by Thomas, >> as well as modified the above patches for ww locking- and lmem support. >> >> The actual hook up to the i915 ttm backend is being worked on and not >> included yet, so this is considered to be an early review opportunity. >> >> v2: >> - A couple of minor style fixes pointed out by Matthew Auld >> - Export and use intel_engine_destroy_pinned_context() to address a >> ls CI warning / failure. > Just to check my understanding of the plan: These are the new windowed > clear/blt functions which we plan to use everywhere, because less nasty > locking implications? And the clear/blt we currently have in upstream will > be replaced? Yes. These are for LMEM clearing and migration. It looks to me like the other ones we have in upstream are actually unused except for selftests. We're actually using CPU clearing for now. > > If so would be nice if this patch set includes that replacement work (I > think right now all we have is the clear for lmem), including updating of > selftests and stuff like that. Just to avoid having two ways to do the > same thing in the driver. OK, I'll have a look at stripping the existing code. If we need it moving forward, we can always re-add. /Thomas > -Daniel > >> Chris Wilson (6): >> drm/i915/gt: Add an insert_entry for gen8_ppgtt >> drm/i915/gt: Add a routine to iterate over the pagetables of a GTT >> drm/i915/gt: Export the pinned context constructor and destructor >> drm/i915/gt: Pipelined page migration >> drm/i915/gt: Pipelined clear >> drm/i915/gt: Setup a default migration context on the GT >> >> Thomas Hellström (3): >> drm/i915: Reference objects on the ww object list >> drm/i915: Break out dma_resv ww locking utilities to separate files >> drm/i915: Introduce a ww transaction helper >> >> drivers/gpu/drm/i915/Makefile | 2 + >> drivers/gpu/drm/i915/gem/i915_gem_object.h | 9 +- >> drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 68 ++ >> drivers/gpu/drm/i915/gt/intel_engine.h | 12 + >> drivers/gpu/drm/i915/gt/intel_engine_cs.c | 27 +- >> drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 2 + >> drivers/gpu/drm/i915/gt/intel_gt.c | 4 + >> drivers/gpu/drm/i915/gt/intel_gt_types.h | 3 + >> drivers/gpu/drm/i915/gt/intel_gtt.h | 7 + >> drivers/gpu/drm/i915/gt/intel_migrate.c | 685 ++++++++++++++++++ >> drivers/gpu/drm/i915/gt/intel_migrate.h | 65 ++ >> drivers/gpu/drm/i915/gt/intel_migrate_types.h | 15 + >> drivers/gpu/drm/i915/gt/intel_renderstate.h | 1 + >> drivers/gpu/drm/i915/gt/intel_ring.h | 1 + >> drivers/gpu/drm/i915/gt/selftest_migrate.c | 671 +++++++++++++++++ >> drivers/gpu/drm/i915/i915_gem.c | 52 -- >> drivers/gpu/drm/i915/i915_gem.h | 12 - >> drivers/gpu/drm/i915/i915_gem_ww.c | 63 ++ >> drivers/gpu/drm/i915/i915_gem_ww.h | 50 ++ >> .../drm/i915/selftests/i915_live_selftests.h | 1 + >> .../drm/i915/selftests/i915_perf_selftests.h | 1 + >> 21 files changed, 1675 insertions(+), 76 deletions(-) >> create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.c >> create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.h >> create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate_types.h >> create mode 100644 drivers/gpu/drm/i915/gt/selftest_migrate.c >> create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.c >> create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.h >> >> -- >> 2.31.1 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx 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 X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93F0FC48BCF for ; Wed, 9 Jun 2021 12:17:17 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2C61860E0C for ; Wed, 9 Jun 2021 12:17:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2C61860E0C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id ADA816E976; Wed, 9 Jun 2021 12:17:16 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 42E8989CD7; Wed, 9 Jun 2021 12:17:15 +0000 (UTC) IronPort-SDR: MorWPcIQxJn24FuXtzjA9Jpu5ejmaraQ4VaT3/ovAx9tjbFEWKU71VvqLJTN9Ba7IjvFw36G8L KlRQUn7Juf3g== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="205022708" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="205022708" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:17:02 -0700 IronPort-SDR: xTIiQOPvJAUrafdTVGhUC13TuU9ZIjU+bf8j4V9gcCvMJAzqewedKAUSUV86uohn90qqmBqM33 Walq3qWmeGDA== X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="440824558" Received: from hkrasnod-mobl1.ger.corp.intel.com (HELO [10.249.254.21]) ([10.249.254.21]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:16:59 -0700 To: Daniel Vetter References: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= Message-ID: <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> Date: Wed, 9 Jun 2021 14:16:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v2 0/9] Prereqs for TTM accelerated migration X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, matthew.auld@intel.com, dri-devel@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDYvOS8yMSAxOjQ4IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIFdlZCwgSnVuIDA5 LCAyMDIxIGF0IDA4OjM0OjI3QU0gKzAyMDAsIFRob21hcyBIZWxsc3Ryw7ZtIHdyb3RlOgo+PiBB IGNvdXBsZSBvZiBwYXRjaGVzIGZyb20gQ2hyaXMgd2hpY2ggaW1wbGVtZW50IHBpcGVsaW5lZCBt aWdyYXRpb24gYW5kCj4+IGNsZWFycyBieSBhdG9taWNhbGx5IHdyaXRpbmcgdGhlIFBURXMgaW4g cGxhY2UgYmVmb3JlIHBlcmZvcm1pbmcgdGhlCj4+IGFjdHVhbCBibGl0Lgo+Pgo+PiBTb21lIHd3 IHV0aWxpdGllcyBtYWlubHkgZm9yIHRoZSBhY2NvbXBhbnlpbmcgc2VsZnRlc3RzIGFkZGVkIGJ5 IFRob21hcywKPj4gYXMgd2VsbCBhcyBtb2RpZmllZCB0aGUgYWJvdmUgcGF0Y2hlcyBmb3Igd3cg bG9ja2luZy0gYW5kIGxtZW0gc3VwcG9ydC4KPj4KPj4gVGhlIGFjdHVhbCBob29rIHVwIHRvIHRo ZSBpOTE1IHR0bSBiYWNrZW5kIGlzIGJlaW5nIHdvcmtlZCBvbiBhbmQgbm90Cj4+IGluY2x1ZGVk IHlldCwgc28gdGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGFuIGVhcmx5IHJldmlldyBvcHBvcnR1 bml0eS4KPj4KPj4gdjI6Cj4+IC0gQSBjb3VwbGUgb2YgbWlub3Igc3R5bGUgZml4ZXMgcG9pbnRl ZCBvdXQgYnkgTWF0dGhldyBBdWxkCj4+IC0gRXhwb3J0IGFuZCB1c2UgaW50ZWxfZW5naW5lX2Rl c3Ryb3lfcGlubmVkX2NvbnRleHQoKSB0byBhZGRyZXNzIGEKPj4gbHMgICBDSSB3YXJuaW5nIC8g ZmFpbHVyZS4KPiBKdXN0IHRvIGNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBsYW46IFRo ZXNlIGFyZSB0aGUgbmV3IHdpbmRvd2VkCj4gY2xlYXIvYmx0IGZ1bmN0aW9ucyB3aGljaCB3ZSBw bGFuIHRvIHVzZSBldmVyeXdoZXJlLCBiZWNhdXNlIGxlc3MgbmFzdHkKPiBsb2NraW5nIGltcGxp Y2F0aW9ucz8gQW5kIHRoZSBjbGVhci9ibHQgd2UgY3VycmVudGx5IGhhdmUgaW4gdXBzdHJlYW0g d2lsbAo+IGJlIHJlcGxhY2VkPwoKWWVzLiBUaGVzZSBhcmUgZm9yIExNRU0gY2xlYXJpbmcgYW5k IG1pZ3JhdGlvbi4gSXQgbG9va3MgdG8gbWUgbGlrZSB0aGUgCm90aGVyIG9uZXMgd2UgaGF2ZSBp biB1cHN0cmVhbSBhcmUgYWN0dWFsbHkgdW51c2VkIGV4Y2VwdCBmb3Igc2VsZnRlc3RzLiAKV2Un cmUgYWN0dWFsbHkgdXNpbmcgQ1BVIGNsZWFyaW5nIGZvciBub3cuCgo+Cj4gSWYgc28gd291bGQg YmUgbmljZSBpZiB0aGlzIHBhdGNoIHNldCBpbmNsdWRlcyB0aGF0IHJlcGxhY2VtZW50IHdvcmsg KEkKPiB0aGluayByaWdodCBub3cgYWxsIHdlIGhhdmUgaXMgdGhlIGNsZWFyIGZvciBsbWVtKSwg aW5jbHVkaW5nIHVwZGF0aW5nIG9mCj4gc2VsZnRlc3RzIGFuZCBzdHVmZiBsaWtlIHRoYXQuIEp1 c3QgdG8gYXZvaWQgaGF2aW5nIHR3byB3YXlzIHRvIGRvIHRoZQo+IHNhbWUgdGhpbmcgaW4gdGhl IGRyaXZlci4KCk9LLCBJJ2xsIGhhdmUgYSBsb29rIGF0IHN0cmlwcGluZyB0aGUgZXhpc3Rpbmcg Y29kZS4gSWYgd2UgbmVlZCBpdCAKbW92aW5nIGZvcndhcmQsIHdlIGNhbiBhbHdheXMgcmUtYWRk LgoKL1Rob21hcwoKCj4gLURhbmllbAo+Cj4+IENocmlzIFdpbHNvbiAoNik6Cj4+ICAgIGRybS9p OTE1L2d0OiBBZGQgYW4gaW5zZXJ0X2VudHJ5IGZvciBnZW44X3BwZ3R0Cj4+ICAgIGRybS9pOTE1 L2d0OiBBZGQgYSByb3V0aW5lIHRvIGl0ZXJhdGUgb3ZlciB0aGUgcGFnZXRhYmxlcyBvZiBhIEdU VAo+PiAgICBkcm0vaTkxNS9ndDogRXhwb3J0IHRoZSBwaW5uZWQgY29udGV4dCBjb25zdHJ1Y3Rv ciBhbmQgZGVzdHJ1Y3Rvcgo+PiAgICBkcm0vaTkxNS9ndDogUGlwZWxpbmVkIHBhZ2UgbWlncmF0 aW9uCj4+ICAgIGRybS9pOTE1L2d0OiBQaXBlbGluZWQgY2xlYXIKPj4gICAgZHJtL2k5MTUvZ3Q6 IFNldHVwIGEgZGVmYXVsdCBtaWdyYXRpb24gY29udGV4dCBvbiB0aGUgR1QKPj4KPj4gVGhvbWFz IEhlbGxzdHLDtm0gKDMpOgo+PiAgICBkcm0vaTkxNTogUmVmZXJlbmNlIG9iamVjdHMgb24gdGhl IHd3IG9iamVjdCBsaXN0Cj4+ICAgIGRybS9pOTE1OiBCcmVhayBvdXQgZG1hX3Jlc3Ygd3cgbG9j a2luZyB1dGlsaXRpZXMgdG8gc2VwYXJhdGUgZmlsZXMKPj4gICAgZHJtL2k5MTU6IEludHJvZHVj ZSBhIHd3IHRyYW5zYWN0aW9uIGhlbHBlcgo+Pgo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX29iamVjdC5oICAgIHwgICA5ICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZ2VuOF9wcGd0dC5jICAgICAgICAgIHwgIDY4ICsrCj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAgIHwgIDEyICsKPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgMjcgKy0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaCAgfCAgIDIgKwo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgICAgICAgICAgICB8ICAgNCArCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCAgICAgIHwgICAzICsKPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaCAgICAgICAgICAgfCAgIDcgKwo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21pZ3JhdGUuYyAgICAgICB8IDY4NSArKysrKysr KysrKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmgg ICAgICAgfCAgNjUgKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRl X3R5cGVzLmggfCAgMTUgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRl cnN0YXRlLmggICB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Zy5oICAgICAgICAgIHwgICAxICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9taWdyYXRlLmMgICAgfCA2NzEgKysrKysrKysrKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgNTIgLS0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5oICAgICAgICAgICAgICAgfCAgMTIgLQo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3d3LmMgICAgICAgICAgICB8ICA2MyArKwo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3d3LmggICAgICAgICAgICB8ICA1MCArKwo+PiAgIC4u Li9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICAgMSArCj4+ICAg Li4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmggIHwgICAxICsKPj4g ICAyMSBmaWxlcyBjaGFuZ2VkLCAxNjc1IGluc2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQo+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdy YXRlLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbWlncmF0ZS5oCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX21pZ3JhdGVfdHlwZXMuaAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9taWdyYXRlLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fd3cuYwo+PiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV93dy5oCj4+Cj4+IC0tIAo+PiAyLjMx LjEKPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=