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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 97BA1C48BC2 for ; Fri, 25 Jun 2021 19:21:11 +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 13BF061973 for ; Fri, 25 Jun 2021 19:21:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 13BF061973 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 8FDD86EE1C; Fri, 25 Jun 2021 19:21:10 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC70B6EE1C; Fri, 25 Jun 2021 19:21:09 +0000 (UTC) IronPort-SDR: Bg1R5Mgbm2pEnbouDN0X/tqBvKFF3qmZv33ZA8S5+WFGxjG7YzbmzBDxN3bmrlvaIFtdLV1LWZ RA3Y5jd9+Nrw== X-IronPort-AV: E=McAfee;i="6200,9189,10026"; a="188112578" X-IronPort-AV: E=Sophos;i="5.83,299,1616482800"; d="scan'208";a="188112578" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jun 2021 12:21:06 -0700 IronPort-SDR: KaDWrmw2ahzNbBKfbH0vPJw6Q2HS7oZHfo/6OQ+XcBKxko+vsceMq1bj1A8RSvzpJRcpOKtooV N3TJ449mvv7w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,299,1616482800"; d="scan'208";a="556945989" Received: from irsmsx603.ger.corp.intel.com ([163.33.146.9]) by orsmga004.jf.intel.com with ESMTP; 25 Jun 2021 12:21:05 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by irsmsx603.ger.corp.intel.com (163.33.146.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Fri, 25 Jun 2021 20:21:04 +0100 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2242.008; Fri, 25 Jun 2021 12:21:02 -0700 From: "Ruhl, Michael J" To: =?utf-8?B?VGhvbWFzIEhlbGxzdHLDtm0=?= , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Thread-Topic: [PATCH 4/4] drm/i915/gem: Migrate to system at dma-buf map time Thread-Index: AQHXaSc1dzuN1f3cQESNhHfcl61w5ask2PrggACFU4D//5sZkIAAf14A//+K6tCAAIUXgP//i05AAA9PqYAADl/6EA== Date: Fri, 25 Jun 2021 19:21:02 +0000 Message-ID: References: <20210624183110.22582-1-thomas.hellstrom@linux.intel.com> <20210624183110.22582-5-thomas.hellstrom@linux.intel.com> <5304ae661abb43a0816a485db9d3bbb5@intel.com> <5e9a46340f254928be6264e4e61eeab8@intel.com> <8cffb2f2-4401-2cdf-1ab3-98cc2d879b00@linux.intel.com> <6ca4bd4f3fde427ea8e2b0de61bbde65@intel.com> <3aa6d76f-eb4e-c2c7-0e8c-f87960cbff00@linux.intel.com> <694e0c7a-4878-8ac4-3a09-6fd453b6811b@linux.intel.com> In-Reply-To: <694e0c7a-4878-8ac4-3a09-6fd453b6811b@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 x-originating-ip: [10.1.200.100] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 4/4] drm/i915/gem: Migrate to system at dma-buf map time 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: "Auld, Matthew" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IFRob21hcyBIZWxsc3Ryw7Zt IDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4NCj5TZW50OiBGcmlkYXksIEp1bmUg MjUsIDIwMjEgMzoxMCBQTT5UbzogUnVobCwgTWljaGFlbCBKIDxtaWNoYWVsLmoucnVobEBpbnRl bC5jb20+OyBpbnRlbC0NCj5nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQo+Q2M6IEF1bGQsIE1hdHRoZXcgPG1hdHRoZXcuYXVsZEBpbnRl bC5jb20+DQo+U3ViamVjdDogUmU6IFtQQVRDSCA0LzRdIGRybS9pOTE1L2dlbTogTWlncmF0ZSB0 byBzeXN0ZW0gYXQgZG1hLWJ1ZiBtYXANCj50aW1lDQo+DQo+DQo+T24gNi8yNS8yMSA5OjA3IFBN LCBSdWhsLCBNaWNoYWVsIEogd3JvdGU6DQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4+PiBGcm9tOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRl bC5jb20+DQo+Pj4gU2VudDogRnJpZGF5LCBKdW5lIDI1LCAyMDIxIDI6NTAgUE0NCj4+PiBUbzog UnVobCwgTWljaGFlbCBKIDxtaWNoYWVsLmoucnVobEBpbnRlbC5jb20+OyBpbnRlbC0NCj4+PiBn ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn DQo+Pj4gQ2M6IEF1bGQsIE1hdHRoZXcgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+DQo+Pj4gU3Vi amVjdDogUmU6IFtQQVRDSCA0LzRdIGRybS9pOTE1L2dlbTogTWlncmF0ZSB0byBzeXN0ZW0gYXQg ZG1hLWJ1Zg0KPm1hcA0KPj4+IHRpbWUNCj4+Pg0KPj4+IEhpLCBNaWtlLA0KPj4+DQo+Pj4gT24g Ni8yNS8yMSA3OjU3IFBNLCBSdWhsLCBNaWNoYWVsIEogd3JvdGU6DQo+Pj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPj4+Pj4gRnJvbTogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5o ZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPj4+Pj4gU2VudDogRnJpZGF5LCBKdW5lIDI1LCAy MDIxIDE6NTIgUE0NCj4+Pj4+IFRvOiBSdWhsLCBNaWNoYWVsIEogPG1pY2hhZWwuai5ydWhsQGlu dGVsLmNvbT47IGludGVsLQ0KPj4+Pj4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+Pj4gQ2M6IEF1bGQsIE1hdHRoZXcgPG1hdHRo ZXcuYXVsZEBpbnRlbC5jb20+DQo+Pj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIDQvNF0gZHJtL2k5 MTUvZ2VtOiBNaWdyYXRlIHRvIHN5c3RlbSBhdCBkbWEtYnVmDQo+Pj4gbWFwDQo+Pj4+PiB0aW1l DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+IE9uIDYvMjUvMjEgNzozOCBQTSwgUnVobCwgTWljaGFlbCBK IHdyb3RlOg0KPj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+Pj4+PiBGcm9t OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+DQo+ Pj4+Pj4+IFNlbnQ6IEZyaWRheSwgSnVuZSAyNSwgMjAyMSAxMjoxOCBQTQ0KPj4+Pj4+PiBUbzog UnVobCwgTWljaGFlbCBKIDxtaWNoYWVsLmoucnVobEBpbnRlbC5jb20+OyBpbnRlbC0NCj4+Pj4+ Pj4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZw0KPj4+Pj4+PiBDYzogQXVsZCwgTWF0dGhldyA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4N Cj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSCA0LzRdIGRybS9pOTE1L2dlbTogTWlncmF0ZSB0 byBzeXN0ZW0gYXQgZG1hLQ0KPmJ1Zg0KPj4+Pj4gbWFwDQo+Pj4+Pj4+IHRpbWUNCj4+Pj4+Pj4N Cj4+Pj4+Pj4gSGksIE1pY2hhZWwsDQo+Pj4+Pj4+DQo+Pj4+Pj4+IHRoYW5rcyBmb3IgbG9va2lu ZyBhdCB0aGlzLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBPbiA2LzI1LzIxIDY6MDIgUE0sIFJ1aGwsIE1p Y2hhZWwgSiB3cm90ZToNCj4+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+ Pj4+Pj4+IEZyb206IGRyaS1kZXZlbCA8ZHJpLWRldmVsLWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnPiBPbg0KPj4+IEJlaGFsZg0KPj4+Pj4gT2YNCj4+Pj4+Pj4+PiBUaG9tYXMgSGVsbHN0 csO2bQ0KPj4+Pj4+Pj4+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDI0LCAyMDIxIDI6MzEgUE0NCj4+ Pj4+Pj4+PiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLQ0KPmRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+Pj4+Pj4+IENjOiBUaG9tYXMgSGVsbHN0csO2bSA8 dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+OyBBdWxkLA0KPj4+Pj4+PiBNYXR0aGV3 DQo+Pj4+Pj4+Pj4gPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+DQo+Pj4+Pj4+Pj4gU3ViamVjdDog W1BBVENIIDQvNF0gZHJtL2k5MTUvZ2VtOiBNaWdyYXRlIHRvIHN5c3RlbSBhdCBkbWEtYnVmDQo+ Pj4gbWFwDQo+Pj4+Pj4+IHRpbWUNCj4+Pj4+Pj4+PiBVbnRpbCB3ZSBzdXBwb3J0IHAycCBkbWEg b3IgYXMgYSBjb21wbGVtZW50IHRvIHRoYXQsIG1pZ3JhdGUgZGF0YQ0KPj4+Pj4+Pj4+IHRvIHN5 c3RlbSBtZW1vcnkgYXQgZG1hLWJ1ZiBtYXAgdGltZSBpZiBwb3NzaWJsZS4NCj4+Pj4+Pj4+Pg0K Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtDQo+Pj4gPHRob21hcy5o ZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPj4+Pj4+Pj4+IC0tLQ0KPj4+Pj4+Pj4+IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYyB8IDkgKysrKysrKystDQo+Pj4+ Pj4+Pj4gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPj4+ Pj4+Pj4+DQo+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9kbWFidWYuYw0KPj4+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2RtYWJ1Zi5jDQo+Pj4+Pj4+Pj4gaW5kZXggNjE2YzNhMmYxYmFmLi5hNTJmODg1YmMw OWEgMTAwNjQ0DQo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2RtYWJ1Zi5jDQo+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2RtYWJ1Zi5jDQo+Pj4+Pj4+Pj4gQEAgLTI1LDcgKzI1LDE0IEBAIHN0YXRpYyBzdHJ1 Y3Qgc2dfdGFibGUNCj4+Pj4+Pj4gKmk5MTVfZ2VtX21hcF9kbWFfYnVmKHN0cnVjdA0KPj4+Pj4+ Pj4+IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWUNCj4+Pj4+Pj4+PiAJc3RydWN0IHNjYXR0 ZXJsaXN0ICpzcmMsICpkc3Q7DQo+Pj4+Pj4+Pj4gCWludCByZXQsIGk7DQo+Pj4+Pj4+Pj4NCj4+ Pj4+Pj4+PiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXNfdW5sb2NrZWQob2JqKTsN Cj4+Pj4+Pj4+PiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2Jq LCBOVUxMKTsNCj4+Pj4+Pj4+IEhtbSwgSSBiZWxpZXZlIGluIG1vc3QgY2FzZXMgdGhhdCB0aGUg Y2FsbGVyIHNob3VsZCBiZSBob2xkaW5nIHRoZQ0KPj4+Pj4+Pj4gbG9jayAob2JqZWN0IGRtYS1y ZXN2KSBvbiB0aGlzIG9iamVjdCBhbHJlYWR5Lg0KPj4+Pj4+PiBZZXMsIEkgYWdyZWUsIEluIHBh cnRpY3VsYXIgZm9yIG90aGVyIGluc3RhbmNlcyBvZiBvdXIgb3duIGRyaXZlcizCoCBhdA0KPj4+ Pj4+PiBsZWFzdCBzaW5jZSB0aGUgZG1hX3Jlc3YgaW50cm9kdWN0aW9uLg0KPj4+Pj4+Pg0KPj4+ Pj4+PiBCdXQgSSBhbHNvIHRoaW5rIHRoYXQncyBhIHByZS1leGlzdGluZyBidWcsIHNpbmNlDQo+ Pj4+Pj4+IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXNfdW5sb2NrZWQoKSB3aWxsIGFsc28gdGFr ZSB0aGUgbG9jay4NCj4+Pj4+PiBPdWNoIHllcy4gIE1pc3NlZCB0aGF0Lg0KPj4+Pj4+DQo+Pj4+ Pj4+IEkgVGhpbmsgd2UgbmVlZCB0byBpbml0aWFsbHkgbWFrZSB0aGUgZXhwb3J0ZXIgZHluYW1p Yy1jYXBhYmxlIHRvDQo+Pj4+Pj4+IHJlc29sdmUgdGhpcywgYW5kIGRyb3AgdGhlIGxvY2tpbmcg aGVyZSBjb21wbGV0ZWx5LCBhcyBkbWEtYnVmIGRvY3MNCj5zYXlzDQo+Pj4+Pj4+IHRoYXQgd2Un cmUgdGhlbiBndWFyYW50ZWVkIHRvIGdldCBjYWxsZWQgd2l0aCB0aGUgb2JqZWN0IGxvY2sgaGVs ZC4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gSSBmaWd1cmUgaWYgd2UgbWFrZSB0aGUgZXhwb3J0ZXIgZHlu YW1pYywgd2UgbmVlZCB0byBtaWdyYXRlIGFscmVhZHkNCj5hdA0KPj4+Pj4+PiBkbWFfYnVmX3Bp biB0aW1lIHNvIHdlIGRvbid0IHBpbiB0aGUgb2JqZWN0IGluIHRoZSB3cm9uZyBsb2NhdGlvbi4N Cj4+Pj4+PiBUaGUgZXhwb3J0ZXIgYXMgZHluYW1pYyAgKG9wcy0+cGluIGlzIGF2YWlsYWJsZSkg aXMgb3B0aW9uYWwsIGJ1dA0KPmltcG9ydGVyDQo+Pj4+Pj4gZHluYW1pYyAob3BzLT5tb3ZlX25v dGlmeSkgaXMgcmVxdWlyZWQuDQo+Pj4+Pj4NCj4+Pj4+PiBXaXRoIHRoYXQgaW4gbWluZCwgaXQg d291bGQgc2VlbSB0aGF0IHRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZQ0KPj4+IGNvbWJpbmF0aW9u cw0KPj4+Pj4+IGZvciB0aGUgbWlncmF0ZSB0byBiZSBhdHRlbXB0ZWQ6DQo+Pj4+Pj4NCj4+Pj4+ PiAxKSBpbiB0aGUgb3BzLT5waW4gZnVuY3Rpb24gKGV4cG9ydF9keW5hbWljICE9IGltcG9ydF9k eW5hbWljLA0KPmR1cmluZw0KPj4+Pj4gYXR0YWNoKQ0KPj4+Pj4+IDIpIGluIHRoZSBvcHMtPnBp biBmdW5jdGlvbiAoZXhwb3J0X2R5bmFtaWMgYW5kDQo+Pj4+PiAhQ09ORklHX0RNQUJVRl9NT1ZF X05PVElGWSkgZHVyaW5nIG1hcHBpbmcNCj4+Pj4+PiAzKSBhbmQgcG9zc2libHkgaW4gb3BzLT5t YXBfZG1hX2J1ZiAoZXhvcnRfZHluYW1pYyBpYW5kDQo+Pj4+PiBDT05GSUdfRE1BQlVGX01PVkVf Tk9USUZZKQ0KPj4+Pj4+IFNpbmNlIG9uZSBwb3NzaWJpbGl0eSBoYXMgdG8gYmUgaW4gdGhlIG1h cHBpbmcgZnVuY3Rpb24sIGl0IHNlZW1zIHRoYXQgaWYNCj53ZQ0KPj4+Pj4+IGNhbiBmaWd1cmUg b3V0IHRoZSBsb2NraW5nLCB0aGF0IHRoZSBtaWdyYXRlIHNob3VsZCBwcm9iYWJseSBiZQ0KPmF2 YWlsYWJsZQ0KPj4+Pj4gaGVyZS4NCj4+Pj4+PiBNaWtlDQo+Pj4+PiBTbyBwZXJoYXBzIGp1c3Qg dG8gaW5pdGlhbGx5IGZpeCB0aGUgYnVnLCB3ZSBjb3VsZCBqdXN0IGltcGxlbWVudCBOT1ANCj4+ Pj4+IHBpbigpIGFuZCB1bnBpbigpIGNhbGxiYWNrcyBhbmQgZHJvcCB0aGUgbG9ja2luZyBpbiBt YXBfYXR0YWNoKCkgYW5kDQo+Pj4+PiByZXBsYWNlIGl0IHdpdGggYW4gYXNzZXJ0X29iamVjdF9o ZWxkKCk7DQo+Pj4+IFRoYXQgaXMgdGhlIHN0aWNreSBwYXJ0IG9mIHRoZSBtb3ZlIG5vdGlmeSBB UEkuDQo+Pj4+DQo+Pj4+IElmIHlvdSBkbyB0aGUgYXR0YWNoX2R5bmFtaWMgeW91IGhhdmUgdG8g aGF2ZSBhbiBvcHMgd2l0aCBtb3ZlX25vdGlmeS4NCj4+Pj4NCj4+Pj4gKGh0dHBzOi8vZWxpeGly LmJvb3RsaW4uY29tL2xpbnV4L3Y1LjEzLXJjNy9zb3VyY2UvZHJpdmVycy9kbWEtYnVmL2RtYS0N Cj4+PiBidWYuYyNMNzMwKQ0KPj4+PiBJZiB5b3UgZG9uJ3QgaGF2ZSB0aGF0LCBpLmUuIGp1c3Qg dGhlIHBpbiBpbnRlcmZhY2UsIHRoZSBhdHRhY2ggd2lsbCBiZQ0KPj4+PiByZWplY3RlZCwgYW5k IHlvdSB3aWxsIG5vdCBnZXQgdGhlIGNhbGxiYWNrcy4NCj4+PiBJIHVuZGVyc3Rvb2QgdGhhdCBh cyB0aGUgcmVxdWlyZW1lbnQgZm9yIG1vdmVfbm90aWZ5IGlzIG9ubHkgaWYgdGhlDQo+Pj4gKmlt cG9ydGVyKiBkZWNsYXJlcyBkeW5hbWljLiBBIGR5bmFtaWMgZXhwb3J0ZXIgY291bGQgY2hvb3Nl IHdoZXRoZXINCj50bw0KPj4+IGNhbGwgbW92ZV9ub3RpZnkoKSBvbiBldmljdGlvbiBvciB0byBw aW4gYW5kIG5ldmVyIGV2aWN0LiBJZiB0aGUNCj4+PiBpbXBvcnRlciBpcyBub24tZHluYW1pYywg dGhlIGNvcmUgY2FsbHMgcGluKCkgYW5kIHRoZSBvbmx5IGNob2ljZSBpcyB0bw0KPj4+IHBpbiBh bmQgbmV2ZXIgZXZpY3QuDQo+Pj4NCj4+PiBTbyBpZiB3ZSB0ZW1wb3JhcmlseSBjaG9vc2UgdG8g cGluIGFuZCBuZXZlciBldmljdCBmb3IgKmV2ZXJ5dGhpbmcqLCAoYXMNCj4+PiB0aGUgY3VycmVu dCBjb2RlIGRvZXMgbm93KSwgSSB0aGluayB3ZSBzaG91bGQgYmUgZ29vZCBmb3Igbm93LCBhbmQg dGhlbg0KPj4+IHdlIGNhbiBpbXBsZW1lbnQgYWxsIGZhbmN5IHAycCBhbmQgbW92ZV9ub3RpZnkg c3R1ZmYgb24gdG9wIG9mIHRoYXQuDQo+PiAvc2lnaC4NCj4+DQo+PiBZb3UgYXJlIGNvcnJlY3Qu ICBJIHdhcyBtaXN0YWtlbmx5IHBsYWNpbmcgdGhlIHBpbiBBUEkgKGRtYV9idWZfb3BzKSBpbiB0 aGUNCj4+IGF0dGFjaF9vcHMuIPCfmJAgTXVzdCBiZSBGcmlkYXkuDQo+Pg0KPj4gVXBvbiBmdXJ0 aGVyIHJlZmxlY3Rpb24sIEkgdGhpbmsgdGhhdCB5b3VyIHBhdGggd2lsbCB3b3JrLg0KPj4NCj4+ IEhvd2V2ZXIsIGlzIGRvaW5nIGEgcGluICh3aXRoIG5vIGxvY2tpbmcpIGZyb20gdGhlIGRtYV9i dWZfbWFwcGluZyBhbnkNCj5kaWZmZXJlbnQNCj4+IGZyb20gdXNpbmcgdGhlIHBpbiBBUEkgKyBl eHBvcnRfZHluYW1pYz8NCj4+DQo+PiBNDQo+DQo+WWVzLCBpdCdzIGRpZmZlcmVudCBmb3IgZHlu YW1pYyBpbXBvcnRlcnMgb25seSB0aGF0IHdvdWxkIG90aGVyd2lzZQ0KPm5ldmVyIHBpbiwgYW5k IHdlIGNvdWxkIG1pc3Rha2VubHkgZXZpY3QgdGhlIG9iamVjdCB3aXRob3V0IGhhdmluZw0KPmlt cGxlbWVudGVkIGNhbGxpbmcgbW92ZV9ub3RpZnkuIElmIHdlIHBpbiwgd2UgbmV2ZXIgZXZpY3Qu DQoNCkFoaC4gIEdvdCBpdC4gIFRoYXQgaXMgYW4gaW50ZXJlc3RpbmcgbnVhbmNlLiAgSSBuZWVk IHRvIHJlbWVtYmVyIHRoYXQNCnRoZXJlIGFyZSBvdGhlciB0aGluZ3MgdGhhbiBpOTE1Li4uIPCf mIoNCg0KU28gdGhhdCB3b3VsZCBkZWZpbml0ZWx5IHB1dCB0aGUgbWlncmF0ZSBjb2RlIGluIHRo ZSBwaW4gcGF0aC4NCg0KTQ0KDQoNCj4vVGhvbWFzDQo+DQo+DQo+DQo+Pj4gL1Rob21hcw0KPj4+ DQo+Pj4NCj4+Pj4gU28gSSB0aGluayB0aGF0IHRoZSBvbmx5IHRoaW5nIHdlIGNhbiBkbyBmb3Ig bm93IGlzIHRvIGRvcCB0aGUgbG9ja2luZyBhbmQNCj5hZGQNCj4+PiB0aGUNCj4+Pj4gYXNzZXJ0 X29iamVjdF9oZWxkKCk7DQo+Pj4+DQo+Pj4+IE0NCj4+Pg0KPj4+DQo+Pj4+PiAvVGhvbWFzDQo+ Pj4+Pg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==