From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/31] drm/i915/execlists: Direct submission of new requests (avoid tasklet/ksoftirqd) Date: Wed, 27 Jun 2018 16:21:24 +0100 Message-ID: References: <20180625094842.8499-1-chris@chris-wilson.co.uk> <20180625094842.8499-7-chris@chris-wilson.co.uk> <19c973ee-d66f-6d97-9478-82fb134fb3af@linux.intel.com> <153009710446.8693.17213302224198368765@mail.alporthouse.com> <153010615201.8693.9974934609472013548@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A8778914C for ; Wed, 27 Jun 2018 15:21:30 +0000 (UTC) In-Reply-To: <153010615201.8693.9974934609472013548@mail.alporthouse.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI3LzA2LzIwMTggMTQ6MjksIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTA2LTI3IDE0OjE1OjIyKQo+Pgo+PiBPbiAyNy8wNi8yMDE4IDExOjU4 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE4LTA2 LTI3IDExOjQwOjMyKQo+Pj4+Cj4+Pj4gT24gMjUvMDYvMjAxOCAxMDo0OCwgQ2hyaXMgV2lsc29u IHdyb3RlOgo+Pj4+PiBCYWNrIGluIGNvbW1pdCAyN2FmNWVlYTU0ZDEgKCJkcm0vaTkxNTogTW92 ZSBleGVjbGlzdHMgaXJxIGhhbmRsZXIgdG8gYQo+Pj4+PiBib3R0b20gaGFsZiIpLCB3ZSBjYW1l IHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgcnVubmluZyBvdXIgQ1NCIHByb2Nlc3NpbmcKPj4+Pj4g YW5kIEVMU1Agc3VibWlzc2lvbiBmcm9tIGluc2lkZSB0aGUgaXJxIGhhbmRsZXIgd2FzIGEgYmFk IGlkZWEuIEEgcmVhbGx5Cj4+Pj4+IGJhZCBpZGVhIGFzIHdlIGNvdWxkIGltcG9zZSBuZWFybHkg MXMgbGF0ZW5jeSBvbiBvdGhlciB1c2VycyBvZiB0aGUKPj4+Pj4gc3lzdGVtLCBvbiBhdmVyYWdl ISBEZWZlcnJpbmcgb3VyIHdvcmsgdG8gYSB0YXNrbGV0IGFsbG93ZWQgdXMgdG8gZG8gdGhlCj4+ Pj4+IHByb2Nlc3Npbmcgd2l0aCBpcnFzIGVuYWJsZWQsIHJlZHVjaW5nIHRoZSBpbXBhY3QgdG8g YW4gYXZlcmFnZSBvZiBhYm91dAo+Pj4+PiA1MHVzLgo+Pj4+Pgo+Pj4+PiBXZSBoYXZlIHNpbmNl IGVyYWRpY2F0ZWQgdGhlIHVzZSBvZiBmb3JjZXdha2VkIG1taW8gZnJvbSBpbnNpZGUgdGhlIENT Qgo+Pj4+PiBwcm9jZXNzaW5nIGFuZCBFTFNQIHN1Ym1pc3Npb24sIGJyaW5naW5nIHRoZSBpbXBh Y3QgZG93biB0byBhcm91bmQgNXVzCj4+Pj4+IChvbiBLYWJ5bGFrZSk7IGFuIG9yZGVyIG9mIG1h Z25pdHVkZSBiZXR0ZXIgdGhhbiBvdXIgbWVhc3VyZW1lbnRzIDIKPj4+Pj4geWVhcnMgYWdvIG9u IEJyb2Fkd2VsbCBhbmQgb25seSBhYm91dCAyeCB3b3JzZSBvbiBhdmVyYWdlIHRoYW4gdGhlCj4+ Pj4+IGdlbV9zeXNsYXRlbmN5IG9uIGFuIHVubGFkZW4gc3lzdGVtLgo+Pj4+Pgo+Pj4+PiBJbiB0 aGlzIGl0ZXJhdGlvbiBvZiB0aGUgdGFza2xldC12cy1kaXJlY3Qgc3VibWlzc2lvbiBkZWJhdGUs IHdlIHNlZWsgYQo+Pj4+PiBjb21wcm9taXNlIHdoZXJlIGJ5IHdlIHN1Ym1pdCBuZXcgcmVxdWVz dHMgaW1tZWRpYXRlbHkgdG8gdGhlIEhXIGJ1dAo+Pj4+PiBkZWZlciBwcm9jZXNzaW5nIHRoZSBD UyBpbnRlcnJ1cHQgb250byBhIHRhc2tsZXQuIFdlIGdhaW4gdGhlIGFkdmFudGFnZQo+Pj4+PiBv ZiBsb3ctbGF0ZW5jeSBhbmQga3NvZnRpcnFkIGF2b2lkYW5jZSB3aGVuIHdha2luZyB1cCB0aGUg SFcsIHdoaWxlCj4+Pj4+IGF2b2lkaW5nIHRoZSBzeXN0ZW0td2lkZSBzdGFydmF0aW9uIG9mIG91 ciBDUyBpcnEtc3Rvcm1zLgo+Pj4+Pgo+Pj4+PiBDb21wYXJpbmcgdGhlIGltcGFjdCBvbiB0aGUg bWF4aW11bSBsYXRlbmN5IG9ic2VydmVkICh0aGF0IGlzIHRoZSB0aW1lCj4+Pj4+IHN0b2xlbiBm cm9tIGFuIFJUIHByb2Nlc3MpIG92ZXIgYSAxMjBzIGludGVydmFsLCByZXBlYXRlZCBzZXZlcmFs IHRpbWVzCj4+Pj4+ICh1c2luZyBnZW1fc3lzbGF0ZW5jeSwgc2ltaWxhciB0byBSVCdzIGN5Y2xp Y3Rlc3QpIHdoaWxlIHRoZSBzeXN0ZW0gaXMKPj4+Pj4gZnVsbHkgbGFkZW4gd2l0aCBpOTE1IG5v cHMsIHdlIHNlZSB0aGF0IGRpcmVjdCBzdWJtaXNzaW9uIGFuIGFjdHVhbGx5Cj4+Pj4+IGltcHJv dmUgdGhlIHdvcnNlIGNhc2UuCj4+Pj4+Cj4+Pj4+IE1heGltdW0gbGF0ZW5jeSBpbiBtaWNyb3Nl Y29uZHMgb2YgYSB0aGlyZCBwYXJ0eSBSVCB0aHJlYWQKPj4+Pj4gKGdlbV9zeXNsYXRlbmN5IC10 IDEyMCAtZiAyKQo+Pj4+PiAgICAgIHggQWx3YXlzIHVzaW5nIHRhc2tsZXRzIChhIGNvdXBsZSBv ZiA+MTAwMHVzIG91dGxpZXJzIHJlbW92ZWQpCj4+Pj4+ICAgICAgKyBPbmx5IHVzaW5nIHRhc2ts ZXRzIGZyb20gQ1MgaXJxLCBkaXJlY3Qgc3VibWlzc2lvbiBvZiByZXF1ZXN0cwo+Pj4+PiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwo+Pj4+PiB8ICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICAgICAgICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+Pj4+PiB8ICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICAgICAgICsgICAgICAgKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ PiB8ICAgICAgICAgICsgKyAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICAgICsgICsgKyAgICAgKyAgeCAgICAgeCAg ICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICAg KysrICsgKyAgICAgKyAgeCAgeCAgeCAgeCAgeCAgeCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAo+Pj4+PiB8ICAgICAgKysrICsgKysgICsgKyAgKnggeCAgeCAgeCAgeCAgeCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICAgKysrICsgKysg ICsgKiAgKnggeCAgKiAgeCAgeCAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAo+Pj4+PiB8ICAgICsgKysrICsgKysgICogKiArKnh4eCAgKiAgeCAgeCAgeHggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8ICAgICogKysrICsgKysrKyogKngrKip4 eCsgKiAgeCAgeCB4eHh4IHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiB8 ICAgKip4KysrKyorKyoqKyp4KngqKioqeCsgKiAreCB4eCB4eHh4IHggICAgICAgICAgeCAgICAg ICAgICAgICAgICAgICAgfAo+Pj4+PiB8eCogKioqKioqKyoqKioqKioqKioqKioqKisrKisqKip4 eHh4eHgqIHh4KnggICAgIHh4eCArICAgICAgICAgICAgICAgIHgrfAo+Pj4+PiB8ICAgICAgICAg ICAgIHxfX19fX19fX19fTUFfX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+Pj4+PiB8ICAgICAgfF9fX19fX01fX0FfX19fX19fX3wgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+PiArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+PiAgICAgICAgTiAgICAgICAgICAgTWluICAgICAgICAgICBNYXggICAgICAgIE1lZGlhbiAg ICAgICAgICAgQXZnICAgICAgICBTdGRkZXYKPj4+Pj4geCAxMTggICAgICAgICAgICA5MSAgICAg ICAgICAgMTg2ICAgICAgICAgICAxMjQgICAgIDEyNS4yODgxNCAgICAgMTYuMjc5MTM3Cj4+Pj4+ ICsgMTIwICAgICAgICAgICAgOTIgICAgICAgICAgIDE4NyAgICAgICAgICAgMTA5ICAgICAxMTIu MDA4MzMgICAgIDEzLjQ1ODYxNwo+Pj4+PiBEaWZmZXJlbmNlIGF0IDk1LjAlIGNvbmZpZGVuY2UK Pj4+Pj4gICAgICAgICAtMTMuMjc5OCArLy0gMy43OTIxOQo+Pj4+PiAgICAgICAgIC0xMC41OTk0 JSArLy0gMy4wMjY3NyUKPj4+Pj4gICAgICAgICAoU3R1ZGVudCdzIHQsIHBvb2xlZCBzID0gMTQu OTIzNykKPj4+Pj4KPj4+Pj4gSG93ZXZlciB0aGUgbWVhbiBsYXRlbmN5IGlzIGFkdmVyc2VseSBh ZmZlY3RlZDoKPj4+Pj4KPj4+Pj4gTWVhbiBsYXRlbmN5IGluIG1pY3Jvc2Vjb25kcyBvZiBhIHRo aXJkIHBhcnR5IFJUIHRocmVhZAo+Pj4+PiAoZ2VtX3N5c2xhdGVuY3kgLXQgMTIwIC1mIDEpCj4+ Pj4+ICAgICAgeCBBbHdheXMgdXNpbmcgdGFza2xldHMKPj4+Pj4gICAgICArIE9ubHkgdXNpbmcg dGFza2xldHMgZnJvbSBDUyBpcnEsIGRpcmVjdCBzdWJtaXNzaW9uIG9mIHJlcXVlc3RzCj4+Pj4+ ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+IHwgICAgICAgICAgIHh4eHh4eCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArICAgKysgICAgICAgICB8Cj4+Pj4+IHwgICAgICAg ICAgIHh4eHh4eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgKysg ICAgICAgICB8Cj4+Pj4+IHwgICAgICAgICAgIHh4eHh4eCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKyArKysgKysgICAgICAgICB8Cj4+Pj4+IHwgICAgICAgICAgIHh4eHh4 eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKysrKysgKysgICAgICAgICB8 Cj4+Pj4+IHwgICAgICAgICAgIHh4eHh4eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKysrKysgKysgICAgICAgICB8Cj4+Pj4+IHwgICAgICAgICAgIHh4eHh4eHggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKysrKysgKysrICAgICAgICB8Cj4+Pj4+IHwg ICAgICAgICAgIHh4eHh4eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKysr KysrKysrKyAgICAgICB8Cj4+Pj4+IHwgICAgICAgICAgIHh4eHh4eHh4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKysgKysrKysrKysrKyAgICAgICB8Cj4+Pj4+IHwgICAgICAgICAg IHh4eHh4eHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKysgKysrKysrKysrKyAg ICAgICB8Cj4+Pj4+IHwgICAgICAgICAgeHh4eHh4eHh4eCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKysrKysrKysrKysrKysrICAgICB8Cj4+Pj4+IHwgICAgICAgICB4eHh4eHh4eHh4 eCAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKysrKysrKysrKysrKysrICAgICB8Cj4+ Pj4+IHx4ICAgICAgIHh4eHh4eHh4eHh4eHggICB4ICAgICAgICAgICArICAgICAgICAgICAgKyAr KysrKysrKysrKysrKysrKysgICt8Cj4+Pj4+IHwgICAgICAgICAgIHxfX0FfX3wgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4+IHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X19fX0Ff X198ICAgICAgICB8Cj4+Pj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICAgICAgICBOICAgICAg ICAgICBNaW4gICAgICAgICAgIE1heCAgICAgICAgTWVkaWFuICAgICAgICAgICBBdmcgICAgICAg IFN0ZGRldgo+Pj4+PiB4IDEyMCAgICAgICAgIDMuNTA2ICAgICAgICAgMy43MjcgICAgICAgICAz LjYzMSAgICAgMy42MzIxNDE3ICAgIDAuMDI3NzMxMDkKPj4+Pj4gKyAxMjAgICAgICAgICAzLjgz NCAgICAgICAgIDQuMTQ5ICAgICAgICAgNC4wMzkgICAgIDQuMDM3NTE2NyAgIDAuMDQxMjIxNjc2 Cj4+Pj4+IERpZmZlcmVuY2UgYXQgOTUuMCUgY29uZmlkZW5jZQo+Pj4+PiAgICAgICAgIDAuNDA1 Mzc1ICsvLSAwLjAwODg4OTEzCj4+Pj4+ICAgICAgICAgMTEuMTYwOCUgKy8tIDAuMjQ0NzM1JQo+ Pj4+PiAgICAgICAgIChTdHVkZW50J3MgdCwgcG9vbGVkIHMgPSAwLjAzNTEzKQo+Pj4+Pgo+Pj4+ PiBIb3dldmVyLCBzaW5jZSB0aGUgbWVhbiBsYXRlbmN5IGNvcnJlc3BvbmRzIHRvIHRoZSBhbW91 bnQgb2YgaXJxc29mZgo+Pj4+PiBwcm9jZXNzaW5nIHdlIGhhdmUgdG8gZG8gZm9yIGEgQ1MgaW50 ZXJydXB0LCB3ZSBvbmx5IG5lZWQgdG8gc3BlZWQgdGhhdAo+Pj4+PiB1cCB0byBiZW5lZml0IG5v dCBqdXN0IHN5c3RlbSBsYXRlbmN5IGJ1dCBvdXIgb3duIHRocm91Z2hwdXQuCj4+Pj4+Cj4+Pj4+ IHYyOiBSZW1lbWJlciB0byBkZWZlciBzdWJtaXNzaW9ucyB3aGVuIHVuZGVyIHJlc2V0Lgo+Pj4+ PiB2NDogT25seSB1c2UgZGlyZWN0IHN1Ym1pc3Npb24gZm9yIG5ldyByZXF1ZXN0cwo+Pj4+PiB2 NTogQmUgYXdhcmUgdGhhdCB3aXRoIG1peGluZyBkaXJlY3QgdGFza2xldCBldmFsdWF0aW9uIGFu ZCBkZWZlcnJlZAo+Pj4+PiB0YXNrbGV0cywgd2UgbWF5IGVuZCB1cCBpZGxpbmcgYmVmb3JlIHJ1 bm5pbmcgdGhlIGRlZmVycmVkIHRhc2tsZXQuCj4+Pj4+Cj4+Pj4+IFRlc3RjYXNlOiBpZ3QvZ2Vt X2V4ZWNfbGF0ZW5jeS8qcnRob2cqCj4+Pj4+IFJlZmVyZW5jZXM6IDI3YWY1ZWVhNTRkMSAoImRy bS9pOTE1OiBNb3ZlIGV4ZWNsaXN0cyBpcnEgaGFuZGxlciB0byBhIGJvdHRvbSBoYWxmIikKPj4+ Pj4gU3VnZ2VzdGVkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPj4+Pj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4+Pj4+IC0tLQo+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaCAgICAg ICAgIHwgICA1ICsKPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAg ICAgICB8ICAxMSArLQo+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5l X2NzLmMgIHwgICA4ICstCj4+Pj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyAgICAgICAgfCAxNDcgKysrKysrKysrKysrKystLS0tLS0tLS0tCj4+Pj4+ICAgICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDEgLQo+Pj4+PiAgICAgNSBmaWxl cyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5oCj4+Pj4+IGluZGV4IDI2MWRhNTc3ODI5YS4uNzg5MmFjNzcz OTE2IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCj4+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKPj4+Pj4gQEAgLTg4LDQg Kzg4LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fdGFza2xldF9lbmFibGVfc3luY19vbmNlKHN0 cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKPj4+Pj4gICAgICAgICAgICAgICAgIHRhc2tsZXRfa2ls bCh0KTsKPj4+Pj4gICAgIH0KPj4+Pj4gICAgIAo+Pj4+PiArc3RhdGljIGlubGluZSBib29sIF9f dGFza2xldF9pc19lbmFibGVkKGNvbnN0IHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKPj4+Pj4g K3sKPj4+Pj4gKyAgICAgcmV0dXJuIGxpa2VseSghYXRvbWljX3JlYWQoJnQtPmNvdW50KSk7Cj4+ Pj4+ICt9Cj4+Pj4+ICsKPj4+Pgo+Pj4+IEZvciB0aGUgdW5saWtlbHktbGlrZWx5IGNoYWluIGZy b20KPj4+PiBfX3N1Ym1pdF9xdWV1ZS0+cmVzZXRfaW5fcHJvZ3Jlc3MtPl9fdGFza2xldF9pc19l bmFibGVkIEkgdGhpbmsgaXQgd291bGQKPj4+PiBiZSBiZXR0ZXIgdG8gZHJvcCB0aGUgbGlrZWx5 L3VubGlrZWx5IGZyb20gbG93LWxldmVsIGhlbHBlcnMgYW5kIHB1dCB0aGUKPj4+PiBvbmUgdW5s aWtlbHkgaW50byB0aGUgX19zdWJtaXRfcXVldWUuCj4+Pgo+Pj4gVGFza2xldHMgYXJlIHJhcmVs eSBkaXNhYmxlZCwgSSB0aGluayB0aGF0J3MgcXVpdGUgaW1wb3J0YW50IHRvIHN0cmVzcy4KPj4+ IFRhc2tsZXRzIGRvIG5vdCBmdW5jdGlvbiB2ZXJ5IHdlbGwgKGhlYXZ5IHNwaW5uaW5nKSB3aGls ZSBkaXNhYmxlZC4KPj4KPj4gSSB0aGluayB3ZSBzaG91bGRuJ3QgYmUgY29uY2VybmVkIGJ5IHRo YXQuIFB1cnBvc2Ugb2YgdGhpcyBpcyB0byB3cmFwCj4+IGludGVybmFsIGltcGxlbWVudGF0aW9u IHdlIGV2ZW4gc2hvdWxkbid0IGJlIHRvdWNoaW5nIGlmIHdlIGNvdWxkIGhlbHAKPj4gaXQsIGFu ZCBJIGZlZWwgY29ycmVjdCB0aGluZyBpcyB0byBleHByZXNzIHRoZSBicmFuY2hpbmcgaGludCBo aWdoZXIgdXAKPj4gdGhlIHN0YWNrLiBDYWxsZXIgd2FudHMgdG8gb3B0aW1pemUgY2VydGFpbiBz Y2VuYXJpb3MsIHdoaWxlIHRoZSBoZWxwZXIKPj4gZG9lc24ndCBrbm93IHdobyBpcyBjYWxsaW5n IGl0IGFuZCB3aHkuIE9uIHRvcCB3ZSBoYXZlIHRoaXMKPj4gbGlrZWx5LXVubGlrbGV5IGNoYWlu IHdoaWNoIEkgbWVudGlvbmVkLiBFdmVuIGp1c3Qgb25lIHVubGlrZWx5IGluCj4+IHJlc2V0X2lu X3Byb2dyZXNzIHdvdWxkIHByb2JhYmx5IGJlIGVub3VnaCBmb3Igd2hhdCB5b3Ugd2FudGVkIHRv IGVuc3VyZS4KPiAKPiBJIGFscmVhZHkgYWNxdWllc2NlZCBhbmQgZGlkIGV4dHJhIHRoYXQuCgpP a2F5LgoKPiAKPj4+Pj4gICAgICNlbmRpZiAvKiBfX0k5MTVfR0VNX0hfXyAqLwo+Pj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKPj4+Pj4gaW5kZXggNDZhYWVmNWMxODUxLi4zMTZkMGIwOGQ0MGYg MTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+Pj4+PiBAQCAtMTQ2OSwxNCAr MTQ2OSwxMCBAQCBzdGF0aWMgdm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+PiAgICAgc3RhdGljIHZvaWQKPj4+Pj4gICAgIGdlbjhf Y3NfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgaWlyKQo+ Pj4+PiAgICAgewo+Pj4+PiAtICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNv bnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPj4+Pj4gICAgICAgICBib29sIHRh c2tsZXQgPSBmYWxzZTsKPj4+Pj4gICAgIAo+Pj4+PiAtICAgICBpZiAoaWlyICYgR1RfQ09OVEVY VF9TV0lUQ0hfSU5URVJSVVBUKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKFJFQURfT05DRShl bmdpbmUtPmV4ZWNsaXN0cy5hY3RpdmUpKQo+Pj4+Cj4+Pj4gV2hhdCBpcyB0aGUgdGhpbmtpbmcg YmVoaW5kIHRoaXMgY2hhbmdlPyBJdCB1c2VkIHRvIGJlIHRoYXQgd2Ugc2NoZWR1bGVkCj4+Pj4g dGhlIHRhc2tsZXQgb25seSB3aGVuIHdlIGtuZXcgd2UgYXJlIGV4cGVjdGluZyBpbnRlcnJ1cHRz IGFuZCBub3cgd2UKPj4+PiBkb24ndCBjYXJlIGFueSBtb3JlIGZvciBzb21lIHJlYXNvbj8KPj4+ Cj4+PiBUaGUgZmlsdGVyaW5nIGlzIGRvbmUgaW5zaWRlIHByb2Nlc3NfY3NiKCkuIFdlIGZpbHRl cmVkIG9uIGFjdGl2ZQo+Pj4gcHJldmlvdXNseSBhcyBzb21lIGludGVycnVwdHMgd2VyZSBzZWVt aW5nbHkgZ29pbmcgYXN0cmF5LCBub3cgSSBhbSBtdWNoCj4+PiBtb3JlIGNvbmZpZGVudCB0aGF0 IGFsbCBhcmUgYWNjb3VudGVkIGZvci4KPj4KPj4gSG0gaG93PyBXZSBmaWx0ZXIgZXh0cmEgaW50 ZXJydXB0cywgd2UgY2FuJ3QgZmlsdGVyIHRvIGdldCB3aGF0J3MgbWlzc2luZz8KPiAKPiBOb3Qg cXVpdGUsIHNpbmNlIHdlIHByb2Nlc3MgdGhlIENTQiBtb3JlIGZyZXF1ZW50bHkgdGhhbiBpbnRl cnJ1cHRzLCB3ZQo+IG1heSBhbHNvIGdldCBhbiBpbnRlcnJ1cHQgYWZ0ZXIgaGF2aW5nIGFscmVh ZHkgcHJvY2Vzc2VkIHRoZSBDU0IuCgpJZiBpdCBpcyBhbGwgcHJvY2Vzc2VkIGFscmVhZHkgdGhl biB3aHkgc2NoZWR1bGUgdGhlIHRhc2tsZXQ/CgpPciBmcm9tIGEgZGlmZmVyZW50IG9sZCBhbmds ZSAtIGRvZXMgdGhpcyBiZWxvbmcgaW4gdGhpcyBwYXRjaD8KCj4gCj4+Pj4+IC0gICAgICAgICAg ICAgICAgICAgICB0YXNrbGV0ID0gIXRlc3RfYW5kX3NldF9iaXQoRU5HSU5FX0lSUV9FWEVDTElT VCwKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZW5naW5lLT5pcnFfcG9zdGVkKTsKPj4+Pgo+Pj4+IEFuZCB0aGlzIGlzIGdvbmUgYXMgd2Vs bC4gQ2FuIHlvdSBwdXQgYSBwYXJhZ3JhcGggaW4gdGhlIGNvbW1pdCBtZXNzYWdlCj4+Pj4gZXhw bGFpbmluZyB0aGUgY2hhbmdlPyBJdCBkb2Vzbid0IHNlZW0gaW1tZWRpYXRlbHkgY29ubmVjdGVk IHdpdGggZGlyZWN0Cj4+Pj4gc3VibWlzc2lvbi4KPj4+Cj4+PiBSZW1vdmluZyBvbmUgaGVhdnl3 ZWlnaHQgYXRvbWljIG9wZXJhdGlvbiBpbiB0aGUgbGF0ZW5jeSBzZW5zaXRpdmUKPj4+IGludGVy cnVwdC4KPj4KPj4gQnV0IG9uIHRoZSBoaWdoZXIgbGV2ZWwgLSB3aHkgd2UgZG9uJ3QgbmVlZCB0 aGlzIGFueSBtb3JlLgo+IAo+IEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBDU0IsIG9rIEkgdGhp bmsgdGhhdCBjYW4gYmUgYSBzZXBhcmF0ZSBzdGVwLgoKQ29vbC4KCj4gCj4+Pj4+ICsgICAgIGlm IChpaXIgJiBHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQpCj4+Pj4+ICsgICAgICAgICAgICAg dGFza2xldCA9IHRydWU7Cj4+Pj4+ICAgICAKPj4+Pj4gICAgICAgICBpZiAoaWlyICYgR1RfUkVO REVSX1VTRVJfSU5URVJSVVBUKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgICBub3RpZnlfcmluZyhl bmdpbmUpOwo+Pj4+PiBAQCAtMTQ4NCw3ICsxNDgwLDcgQEAgZ2VuOF9jc19pcnFfaGFuZGxlcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpaXIpCj4+Pj4+ICAgICAgICAgfQo+ Pj4+PiAgICAgCj4+Pj4+ICAgICAgICAgaWYgKHRhc2tsZXQpCj4+Pj4+IC0gICAgICAgICAgICAg dGFza2xldF9oaV9zY2hlZHVsZSgmZXhlY2xpc3RzLT50YXNrbGV0KTsKPj4+Pj4gKyAgICAgICAg ICAgICB0YXNrbGV0X2hpX3NjaGVkdWxlKCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0KTsKPj4+ Pj4gICAgIH0KPj4+Pj4gICAgIAo+Pj4+PiAgICAgc3RhdGljIHZvaWQgZ2VuOF9ndF9pcnFfYWNr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+Pj4+PiBAQCAtMjIxNiw3ICsyMjEyLDYg QEAgc3RhdGljIGlycXJldHVybl90IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQo+Pj4+PiAgICAgCj4+Pj4+ICAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKFZMVl9J RVIsIGllcik7Cj4+Pj4+ICAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKEdFTjhfTUFTVEVSX0lS USwgR0VOOF9NQVNURVJfSVJRX0NPTlRST0wpOwo+Pj4+PiAtICAgICAgICAgICAgIFBPU1RJTkdf UkVBRChHRU44X01BU1RFUl9JUlEpOwo+Pj4+Cj4+Pj4gV2hhdCBpcyB0aGlzPwo+Pj4KPj4+IFNv bWV0aGluZyB0aGF0IEkgaGF2ZW4ndCBtYW5hZ2VkIHRvIGtpbGwgeWV0Lgo+Pgo+PiBObyBzbmVh a2luZyBpbiB0aGlzIHBhdGNoIHRoZW4gZWl0aGVyISA6RAo+IAo+IEp1c3QgY2xvc2UgeW91ciBl eWVzLiBOb3RoaW5nIHRvIHNlZSBoZXJlLgoKWW91IHNoYWxsIG5vdCBwYXNzISA6RAoKPiAKPj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4+Pj4gaW5kZXggNzIwOWMy Mjc5OGU2Li5hY2U5Mzk1ODY4OWUgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV9jcy5jCj4+Pj4+IEBAIC0xMzUzLDEyICsxMzUzLDEwIEBAIHN0YXRpYyB2b2lk IGludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+Pj4+PiAgICAgICAgICAgICAgICAgcHRyID0gSTkxNV9SRUFEKFJJTkdfQ09O VEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkpOwo+Pj4+PiAgICAgICAgICAgICAgICAgcmVhZCA9IEdF TjhfQ1NCX1JFQURfUFRSKHB0cik7Cj4+Pj4+ICAgICAgICAgICAgICAgICB3cml0ZSA9IEdFTjhf Q1NCX1dSSVRFX1BUUihwdHIpOwo+Pj4+PiAtICAgICAgICAgICAgIGRybV9wcmludGYobSwgIiAg ICBFeGVjbGlzdCBDU0IgcmVhZCAlZCBbJWQgY2FjaGVkXSwgd3JpdGUgJWQgWyVkIGZyb20gaHdz XSwgaW50ZXJydXB0IHBvc3RlZD8gJXMsIHRhc2tsZXQgcXVldWVkPyAlcyAoJXMpXG4iLAo+Pj4+ PiArICAgICAgICAgICAgIGRybV9wcmludGYobSwgIiAgICBFeGVjbGlzdCBDU0IgcmVhZCAlZCBb JWQgY2FjaGVkXSwgd3JpdGUgJWQgWyVkIGZyb20gaHdzXSwgdGFza2xldCBxdWV1ZWQ/ICVzICgl cylcbiIsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsIGV4ZWNsaXN0cy0+ Y3NiX2hlYWQsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAo+Pj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwg aW50ZWxfaHdzX2NzYl93cml0ZV9pbmRleChlbmdpbmUtPmk5MTUpKSwKPj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgIHllc25vKHRlc3RfYml0KEVOR0lORV9JUlFfRVhFQ0xJU1QsCj4+Pj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5naW5lLT5pcnFfcG9z dGVkKSksCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc25vKHRlc3RfYml0KFRB U0tMRVRfU1RBVEVfU0NIRUQsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0LnN0YXRlKSksCj4+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWRkaXNhYmxlZCghYXRvbWljX3JlYWQoJmVuZ2lu ZS0+ZXhlY2xpc3RzLnRhc2tsZXQuY291bnQpKSk7Cj4+Pj4+IEBAIC0xNTcwLDExICsxNTY4LDkg QEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4+Pj4+ICAgICAgICAgc3Bpbl91bmxvY2soJmItPnJiX2xvY2spOwo+Pj4+PiAgICAgICAgIGxv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPj4+Pj4gICAgIAo+Pj4+PiAtICAgICBkcm1fcHJpbnRm KG0sICJJUlE/IDB4JWx4IChicmVhZGNydW1icz8gJXMpIChleGVjbGlzdHM/ICVzKVxuIiwKPj4+ Pj4gKyAgICAgZHJtX3ByaW50ZihtLCAiSVJRPyAweCVseCAoYnJlYWRjcnVtYnM/ICVzKVxuIiwK Pj4+Pj4gICAgICAgICAgICAgICAgICAgIGVuZ2luZS0+aXJxX3Bvc3RlZCwKPj4+Pj4gICAgICAg ICAgICAgICAgICAgIHllc25vKHRlc3RfYml0KEVOR0lORV9JUlFfQlJFQURDUlVNQiwKPj4+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5naW5lLT5pcnFfcG9zdGVkKSksCj4+ Pj4+IC0gICAgICAgICAgICAgICAgeWVzbm8odGVzdF9iaXQoRU5HSU5FX0lSUV9FWEVDTElTVCwK Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmdpbmUtPmlycV9wb3N0 ZWQpKSk7Cj4+Pj4+ICAgICAKPj4+Pj4gICAgICAgICBkcm1fcHJpbnRmKG0sICJIV1NQOlxuIik7 Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+Pj4+IGluZGV4IDVhMTJiOGZjOWQ4Zi4u YzgyZWZhM2FjMTA1IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+Pj4+ PiBAQCAtNTYyLDEzICs1NjIsMTUgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfcHJlZW1wdF9jb250 ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCj4+Pj4+ICAgICB7 Cj4+Pj4+ICAgICAgICAgR0VNX0JVR19PTighZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMs IEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCkpOwo+Pj4+PiAgICAgCj4+Pj4+ICsgICAgIF9fdW53 aW5kX2luY29tcGxldGVfcmVxdWVzdHMoY29udGFpbmVyX29mKGV4ZWNsaXN0cywKPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MpLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleGVjbGlzdHMpKTsKPj4+Pj4gICAgICAgICBleGVjbGlzdHNfY2Fu Y2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKPj4+Pj4gLSAgICAgZXhlY2xpc3RzX3Vud2lu ZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGV4ZWNsaXN0cyk7Cj4+Pj4KPj4+PiBJcyB0aGUgb3JkZXJp bmcgY2hhbmdlIHNpZ25pZmljYW50IGFuZCB3aHk/Cj4+Pgo+Pj4gTW9zdGx5IGZvciBjb25zaXN0 ZW5jeSBhbmQgcmVhc29uaW5nIGFib3V0IHJlcXVlc3QgcmVmZXJlbmNlIGxpZmV0aW1lcy4KPj4+ IChVbndpbmQgPT4gd2UgcmV0YWluIHRoZSByZXF1ZXN0IHJlZmVyZW5jZSwgYXMgaXQgaXMgbW92 ZWQgYmFjayB0byB0aGUKPj4+IHByb3RlY3RlZCBleGVjdXRpb24gbGlzdHMuKQo+Pgo+PiBSZW1v dmUgZnJvbSB0aGlzIHBhdGNoIHRoZW4/Cj4gCj4gTW92ZSB0byBhbiBlYXJsaWVyIHBhdGNoIHRo ZW4uCgpDb29sLgoKPiAKPj4+Pj4gK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rh c2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+Pj4+PiArewo+Pj4+PiArICAgICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilk YXRhOwo+Pj4+PiArICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+PiArCj4+Pj4+ICsgICAg IEdFTV9UUkFDRSgiJXMgYXdha2U/PSVkLCBhY3RpdmU9JXhcbiIsCj4+Pj4+ICsgICAgICAgICAg ICAgICBlbmdpbmUtPm5hbWUsCj4+Pj4+ICsgICAgICAgICAgICAgICBlbmdpbmUtPmk5MTUtPmd0 LmF3YWtlLAo+Pj4+PiArICAgICAgICAgICAgICAgZW5naW5lLT5leGVjbGlzdHMuYWN0aXZlKTsK Pj4+Pj4gKwo+Pj4+PiArICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5s b2NrLCBmbGFncyk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKGVuZ2luZS0+aTkxNS0+Z3QuYXdh a2UpIC8qIHdlIG1heSBiZSBkZWxheWVkIHVudGlsIGFmdGVyIHdlIGlkbGUhICovCj4+Pj4+ICsg ICAgICAgICAgICAgX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0KGVuZ2luZSk7Cj4+Pj4K Pj4+PiBTb3VuZHMgcXVpdGUgYmFkISB0aGlzIG1lYW5zIHdlIGZhaWwgdG8gcHJvY2VzcyBwZW5k aW5nIENTQi4gQW5kIGdvaW5nCj4+Pj4gaWRsZSBzeW5jcyB0aGUgdGFza2xldHMgc28gd2hhdCBh bSBJIG1pc3Npbmc/Cj4+Pgo+Pj4gVGhhdCB0YXNrbGV0cyBnZXQga2lja2VkIHJhbmRvbWx5LCBJ IHRoaW5rIHdhcyB0aGUgY3VscHJpdC4KPj4KPj4gV2hhdCBkbyB5b3UgbWVhbj8gSSBob3BlIHdl IGhhdmUgYnVzeS1pZGxlIHF1aXRlIGNvbnRyb2xsZWQgYW5kIHdlIGtub3cKPj4gd2hlbiB3ZSBz aG91bGQgYW5kIHNob3VsZCBleHBlY3QgYSB0YXNrbGV0LiBJZiB3ZSBzeW5jZWQgdGhlbSB3aGVu Cj4+IHRyYW5zaXRpb25pbmcgdG8gaWRsZSB0aGV5IGNhbm5vdCBoYXBwZW4uIE90aGVyd2lzZSB3 ZSBiZXR0ZXIgYmUgYWN0aXZlIQo+PiBHRU1fQlVHX09OKCFlbmdpbmUtPmk5MTUtPmd0LmF3YWtl KSBpbnN0ZWFkPyBEb2VzIHRoYXQgdHJpZ2dlcj8hCj4gCj4gdGFza2xldF9zY2hlZHVsZSgpIGlz IGNhbGxlZCBvZmYgdGhlIG1haW4gcGF0aCwgd2l0aG91dCBsb2NraW5nLCBzbwo+IHVuc3luY2hy b25pemVkIHRvIHBhcmtpbmcuIEp1c3QgYmVjYXVzZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRo aXMgLSB3aGljaCBtYWluIHBhdGg/IFN1Ym1pc3Npb24gLSB3ZSB3aWxsIGJlIAptYXJrX2J1c3ku IEFmdGVyIGxhc3QgcmVxdWVzdCAtIHdlIHdpbGwgaWRsZSB0aGUgZW5naW5lcyBhbmQgc3luYyB0 aGUgCnRhc2tsZXQuCgpUaGVyZSBpcyBldmVuIEdFTV9CVUdfT04oIWVuZ2luZS0+aTkxNS0+Z3Qu YXdha2UpOyBpbiAKX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0LgoKUmVnYXJkcywKClR2 cnRrbwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==