From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 25/55] drm/i915: Update i915_gem_object_sync() to take a request structure Date: Thu, 04 Jun 2015 13:57:16 +0100 Message-ID: <55704B2C.8040905@Intel.com> References: <1432917856-12261-1-git-send-email-John.C.Harrison@Intel.com> <1432917856-12261-26-git-send-email-John.C.Harrison@Intel.com> <556DF56A.3040408@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 2CA3E6E0B7 for ; Thu, 4 Jun 2015 05:57:19 -0700 (PDT) In-Reply-To: <556DF56A.3040408@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tomas Elf , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMDIvMDYvMjAxNSAxOToyNiwgVG9tYXMgRWxmIHdyb3RlOgo+IE9uIDI5LzA1LzIwMTUgMTc6 NDMsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IEpvaG4gSGFycmlz b24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+Cj4+IFRoZSBwbGFuIGlzIHRvIHBhc3Mg cmVxdWVzdHMgYXJvdW5kIGFzIHRoZSBiYXNpYyBzdWJtaXNzaW9uIHRyYWNraW5nIAo+PiBzdHJ1 Y3R1cmUKPj4gcmF0aGVyIHRoYW4gcmluZ3MgYW5kIGNvbnRleHRzLiBUaGlzIHBhdGNoIHVwZGF0 ZXMgdGhlIAo+PiBpOTE1X2dlbV9vYmplY3Rfc3luYygpCj4+IGNvZGUgcGF0aC4KPj4KPj4gdjI6 IE11Y2ggbW9yZSBjb21wbGV4IHBhdGNoIHRvIHNoYXJlIGEgc2luZ2xlIHJlcXVlc3QgYmV0d2Vl biB0aGUgCj4+IHN5bmMgYW5kIHRoZQo+PiBwYWdlIGZsaXAuIFRoZSBfc3luYygpIGZ1bmN0aW9u IG5vdyBzdXBwb3J0cyBsYXp5IGFsbG9jYXRpb24gb2YgdGhlIAo+PiByZXF1ZXN0Cj4+IHN0cnVj dHVyZS4gVGhhdCBpcywgaWYgb25lIGlzIHBhc3NlZCBpbiB0aGVuIHRoYXQgd2lsbCBiZSB1c2Vk LiBJZiAKPj4gb25lIGlzIG5vdCwKPj4gdGhlbiBhIHJlcXVlc3Qgd2lsbCBiZSBhbGxvY2F0ZWQg YW5kIHBhc3NlZCBiYWNrIG91dC4gTm90ZSB0aGF0IHRoZSAKPj4gX3N5bmMoKSBjb2RlCj4+IGRv ZXMgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgYSByZXF1ZXN0LiBUaHVzIG9uZSB3aWxsIG9ubHkg YmUgY3JlYXRlZCAKPj4gdW50aWwKPj4gY2VydGFpbiBzaXR1YXRpb25zLiBUaGUgcmVhc29uIHRo ZSBsYXp5IGFsbG9jYXRpb24gbXVzdCBiZSBkb25lIAo+PiB3aXRoaW4gdGhlCj4+IF9zeW5jKCkg Y29kZSBpdHNlbGYgaXMgYmVjYXVzZSB0aGUgZGVjaXNpb24gdG8gbmVlZCBvbmUgb3Igbm90IGlz IG5vdCAKPj4gcmVhbGx5Cj4+IHNvbWV0aGluZyB0aGF0IGNvZGUgYWJvdmUgY2FuIHNlY29uZCBn dWVzcyAoZXhjZXB0IGluIHRoZSBjYXNlIHdoZXJlIAo+PiBvbmUgaXMKPj4gZGVmaW5pdGVseSBu b3QgcmVxdWlyZWQgYmVjYXVzZSBubyByaW5nIGlzIHBhc3NlZCBpbikuCj4+Cj4+IFRoZSBjYWxs IGNoYWlucyBhYm92ZSBfc3luYygpIG5vdyBzdXBwb3J0IHBhc3NpbmcgYSByZXF1ZXN0IHRocm91 Z2ggCj4+IHdoaWNoIG1vc3QKPj4gY2FsbGVycyBwYXNzaW5nIGluIE5VTEwgYW5kIGFzc3VtaW5n IHRoYXQgbm8gcmVxdWVzdCB3aWxsIGJlIHJlcXVpcmVkIAo+PiAoYmVjYXVzZQo+PiB0aGV5IGFs c28gcGFzcyBpbiBOVUxMIGZvciB0aGUgcmluZyBhbmQgdGhlcmVmb3JlIGNhbid0IGJlIGdlbmVy YXRpbmcgCj4+IGFueSByaW5nCj4+IGNvZGUpLgo+Pgo+PiBUaGUgZXhlY2VwdGlvbiBpcyBpbnRl bF9jcnRjX3BhZ2VfZmxpcCgpIHdoaWNoIG5vdyBzdXBwb3J0cyBoYXZpbmcgYSAKPj4gcmVxdWVz dAo+Cj4gMS4gIlRoZSBleGVjZXB0aW9uIiAtPiAiVGhlIGV4Y2VwdGlvbiIKPgo+PiByZXR1cm5l ZCBmcm9tIF9zeW5jKCkuIElmIG9uZSBpcywgdGhlbiB0aGF0IHJlcXVlc3QgaXMgc2hhcmVkIGJ5 IHRoZSAKPj4gcGFnZSBmbGlwCj4+IChpZiB0aGUgcGFnZSBmbGlwIGlzIG9mIGEgdHlwZSB0byBu ZWVkIGEgcmVxdWVzdCkuIElmIF9zeW5jKCkgZG9lcyAKPj4gbm90IGdlbmVyYXRlCj4+IGEgcmVx dWVzdCBidXQgdGhlIHBhZ2UgZmxpcCBkb2VzIG5lZWQgb25lLCB0aGVuIHRoZSBwYWdlIGZsaXAg cGF0aCAKPj4gd2lsbCBjcmVhdGUKPj4gaXRzIG93biByZXF1ZXN0Lgo+Pgo+PiB2MzogVXBkYXRl ZCBjb21tZW50IGRlc2NyaXB0aW9uIHRvIGJlIGNsZWFyZXIgYWJvdXQgJ3RvX3JlcScgCj4+IHBh cmFtZXRlciAoVG9tYXMKPj4gRWxmIHJldmlldyByZXF1ZXN0KS4gUmViYXNlZCBvbnRvIG5ld2Vy IHRyZWUgdGhhdCBzaWduaWZpY2FudGx5IAo+PiBjaGFuZ2VkIHRoZQo+PiBzeW5jaHJvbmlzYXRp b24gY29kZS4KPj4KPj4gRm9yOiBWSVotNTExNQo+PiBTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJp c29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgICA0ICsrLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8ICAgNDggCj4+ICsrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgfCAgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j ICAgICAgIHwgICAxNyArKysrKysrLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgICAgICAgIHwgICAgMyArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiZGV2LmMgICAgICAgICB8ICAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyAgICAgICAgICAgfCAgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ZlcmxheS5jICAgICAgIHwgICAgMiArLQo+PiAgIDggZmlsZXMgY2hhbmdlZCwgNTggaW5z ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPj4gaW5kZXggNjRhMTBmYS4uZjY5ZTljYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4+IEBAIC0yNzc4LDcgKzI3NzgsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgCj4+IGk5MTVf Z2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ Pgo+PiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3Ry dWN0IGRybV9kZXZpY2UgCj4+ICpkZXYpOwo+PiAgIGludCBpOTE1X2dlbV9vYmplY3Rfc3luYyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAtICAgICAgICAgICAgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnRvKTsKPj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICp0bywKPj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKip0 b19yZXEpOwo+PiAgIHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1h ICp2bWEsCj4+ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KTsKPj4gICBpbnQgaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCj4+IEBAIC0yODg5LDYgKzI4OTAsNyBAQCBpbnQgX19tdXN0X2NoZWNrCj4+ICAgaTkxNV9n ZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4+ICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGFsaWdubWVudCwKPj4gICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4+ICsg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwaXBlbGlu ZWRfcmVxdWVzdCwKPj4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgKnZpZXcpOwo+PiAgIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlz cGxheV9wbGFuZShzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldyk7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIAo+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggYjdkNjZhYS4uZGI5MDA0MyAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0zMDk4LDI1ICszMDk4LDI2IEBA IG91dDoKPj4gICBzdGF0aWMgaW50Cj4+ICAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnRvLAo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKmZyb21fcmVxLAo+PiArICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICoqdG9fcmVxKQo+PiAgIHsKPj4gICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZnJv bTsKPj4gICAgICAgaW50IHJldDsKPj4KPj4gLSAgICBmcm9tID0gaTkxNV9nZW1fcmVxdWVzdF9n ZXRfcmluZyhyZXEpOwo+PiArICAgIGZyb20gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKGZy b21fcmVxKTsKPj4gICAgICAgaWYgKHRvID09IGZyb20pCj4+ICAgICAgICAgICByZXR1cm4gMDsK Pj4KPj4gLSAgICBpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSkKPj4g KyAgICBpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoZnJvbV9yZXEsIHRydWUpKQo+PiAg ICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+IC0gICAgcmV0ID0gaTkxNV9nZW1fY2hlY2tfb2xyKHJl cSk7Cj4+ICsgICAgcmV0ID0gaTkxNV9nZW1fY2hlY2tfb2xyKGZyb21fcmVxKTsKPj4gICAgICAg aWYgKHJldCkKPj4gICAgICAgICAgIHJldHVybiByZXQ7Cj4+Cj4+ICAgICAgIGlmICghaTkxNV9z ZW1hcGhvcmVfaXNfZW5hYmxlZChvYmotPmJhc2UuZGV2KSkgewo+PiAgICAgICAgICAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+PiAtICAg ICAgICByZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcSwKPj4gKyAgICAgICAgcmV0ID0gX19p OTE1X3dhaXRfcmVxdWVzdChmcm9tX3JlcSwKPj4gYXRvbWljX3JlYWQoJmk5MTUtPmdwdV9lcnJv ci5yZXNldF9jb3VudGVyKSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgaTkxNS0+bW0uaW50 ZXJydXB0aWJsZSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKPj4gQEAgLTMxMjQs MTUgKzMxMjUsMjUgQEAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgCj4+IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPj4gICAgICAgICAgIGlmIChyZXQpCj4+ICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPj4KPj4gLSAgICAgICAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9yZXF1ZXN0 KG9iaiwgcmVxKTsKPj4gKyAgICAgICAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9yZXF1ZXN0KG9i aiwgZnJvbV9yZXEpOwo+PiAgICAgICB9IGVsc2Ugewo+PiAgICAgICAgICAgaW50IGlkeCA9IGlu dGVsX3Jpbmdfc3luY19pbmRleChmcm9tLCB0byk7Cj4+IC0gICAgICAgIHUzMiBzZXFubyA9IGk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSk7Cj4+ICsgICAgICAgIHUzMiBzZXFubyA9IGk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKGZyb21fcmVxKTsKPj4KPj4gKyAgICAgICAgV0FSTl9P TighdG9fcmVxKTsKPj4gKwo+PiArICAgICAgICAvKiBPcHRpbWl6YXRpb246IEF2b2lkIHNlbWFw aG9yZSBzeW5jIHdoZW4gd2UgYXJlIHN1cmUgd2UgCj4+IGFscmVhZHkKPj4gKyAgICAgICAgICog d2FpdGVkIGZvciBhbiBvYmplY3Qgd2l0aCBoaWdoZXIgc2Vxbm8gKi8KPgo+IDIuIEhvdyBhYm91 dCB1c2luZyB0aGUgc3RhbmRhcmQgbXVsdGktbGluZSBjb21tZW50IGZvcm1hdD8KPgoKTm90IG15 IGNvbW1lbnQuIEl0IGxvb2tzIGxpa2UgQ2hyaXMgcmVtb3ZlZCBpdCBpbiBoaXMgcmUtd3JpdGUg b2YgdGhlIApzeW5jIGNvZGUgYW5kIEkgYWNjaWRlbnRhbGx5IHB1dCBpdCBiYWNrIGluIHdoZW4g cmVzb2x2aW5nIHRoZSBtZXJnZSAKY29uZmxpY3RzLiBJJ2xsIGRyb3AgaXQgYWdhaW4uCgo+IC8q IChlbXB0eSBsaW5lKQo+ICAqIChmaXJzdCBsaW5lKQo+ICAqIChzZWNvbmQgbGluZSkKPiAgKi8K Pgo+PiAgICAgICAgICAgaWYgKHNlcW5vIDw9IGZyb20tPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lk eF0pCj4+ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+IC0gICAgICAgIHRyYWNlX2k5MTVf Z2VtX3Jpbmdfc3luY190byhmcm9tLCB0bywgcmVxKTsKPj4gKyAgICAgICAgaWYgKCp0b19yZXEg PT0gTlVMTCkgewo+PiArICAgICAgICAgICAgcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyh0 bywgdG8tPmRlZmF1bHRfY29udGV4dCwgCj4+IHRvX3JlcSk7Cj4+ICsgICAgICAgICAgICBpZiAo cmV0KQo+PiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAgICAgIH0KPj4gKwo+ PiArICAgICAgICB0cmFjZV9pOTE1X2dlbV9yaW5nX3N5bmNfdG8oZnJvbSwgdG8sIGZyb21fcmVx KTsKPj4gICAgICAgICAgIHJldCA9IHRvLT5zZW1hcGhvcmUuc3luY190byh0bywgZnJvbSwgc2Vx bm8pOwo+PiAgICAgICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ PiBAQCAtMzE1Myw2ICszMTY0LDkgQEAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgCj4+ IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gICAgKgo+PiAgICAqIEBvYmo6IG9iamVjdCB3 aGljaCBtYXkgYmUgaW4gdXNlIG9uIGFub3RoZXIgcmluZy4KPj4gICAgKiBAdG86IHJpbmcgd2Ug d2lzaCB0byB1c2UgdGhlIG9iamVjdCBvbi4gTWF5IGJlIE5VTEwuCj4+ICsgKiBAdG9fcmVxOiBy ZXF1ZXN0IHdlIHdpc2ggdG8gdXNlIHRoZSBvYmplY3QgZm9yLiBTZWUgYmVsb3cuCj4+ICsgKiAg ICAgICAgICBUaGlzIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCBpZiBhIHJlcXVlc3Qg aXMKPj4gKyAqICAgICAgICAgIHJlcXVpcmVkIGJ1dCBub3QgcGFzc2VkIGluLgo+PiAgICAqCj4+ ICAgICogVGhpcyBjb2RlIGlzIG1lYW50IHRvIGFic3RyYWN0IG9iamVjdCBzeW5jaHJvbml6YXRp b24gd2l0aCB0aGUgR1BVLgo+PiAgICAqIENhbGxpbmcgd2l0aCBOVUxMIGltcGxpZXMgc3luY2hy b25pemluZyB0aGUgb2JqZWN0IHdpdGggdGhlIENQVQo+PiBAQCAtMzE2OCwxMSArMzE4MiwyMiBA QCBfX2k5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+PiAgICAqIC0gSWYgd2UgYXJlIGEgd3JpdGUgcmVxdWVzdCAocGVuZGluZ193cml0ZV9k b21haW4gaXMgc2V0KSwgdGhlIG5ldwo+PiAgICAqICAgcmVxdWVzdCBtdXN0IHdhaXQgZm9yIG91 dHN0YW5kaW5nIHJlYWQgcmVxdWVzdHMgdG8gY29tcGxldGUuCj4+ICAgICoKPj4gKyAqIEZvciBD UFUgc3luY2hyb25pc2F0aW9uIChOVUxMIHRvKSBubyByZXF1ZXN0IGlzIHJlcXVpcmVkLiBGb3Ig Cj4+IHN5bmNpbmcgd2l0aAo+PiArICogcmluZ3MgdG9fcmVxIG11c3QgYmUgbm9uLU5VTEwuIEhv d2V2ZXIsIGEgcmVxdWVzdCBkb2VzIG5vdCBoYXZlIAo+PiB0byBiZQo+PiArICogcHJlLWFsbG9j YXRlZC4gSWYgKnRvX3JlcSBpcyBudWxsIGFuZCBzeW5jIGNvbW1hbmRzIHdpbGwgYmUgCj4+IGVt aXR0ZWQgdGhlbiBhCj4+ICsgKiByZXF1ZXN0IHdpbGwgYmUgYWxsb2NhdGVkIGF1dG9tYXRpY2Fs bHkgYW5kIHJldHVybmVkIHRocm91Z2ggCj4+ICp0b19yZXEuIE5vdGUKPj4gKyAqIHRoYXQgaXQg aXMgbm90IGd1YXJhbnRlZWQgdGhhdCBjb21tYW5kcyB3aWxsIGJlIGVtaXR0ZWQgKGJlY2F1c2Ug dGhlCj4+ICsgKiBtaWdodCBhbHJlYWR5IGJlIGlkbGUpLiBIZW5jZSB0aGVyZSBpcyBubyBuZWVk IHRvIGNyZWF0ZSBhIAo+PiByZXF1ZXN0IHRoYXQKPj4gKyAqIG1pZ2h0IG5ldmVyIGhhdmUgYW55 IHdvcmsgc3VibWl0dGVkLiBOb3RlIGZ1cnRoZXIgdGhhdCBpZiBhIAo+PiByZXF1ZXN0IGlzCj4+ ICsgKiByZXR1cm5lZCBpbiAqdG9fcmVxLCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhl IGNhbGxlciB0byAKPj4gc3VibWl0Cj4+ICsgKiB0aGF0IHJlcXVlc3QgKGFmdGVyIHBvdGVudGlh bGx5IGFkZGluZyBtb3JlIHdvcmsgdG8gaXQpLgo+PiArICoKPgo+IDMuICIoYmVjYXVzZSB0aGUg bWlnaHQgYWxyZWFkeSBiZSBpZGxlKSIgOiBUaGUgd2hhdD8gVGhlIGVuZ2luZT8KPiA0LiAiTlVM TCIgYW5kICJudWxsIiBtaXhlZC4gUGxlYXNlIGJlIGNvbnNpc3RlbnQuCj4KPiBPdmVyYWxsLCB0 aGUgZXhwbGFuYXRpb24gaXMgYmV0dGVyIHRoYW4gaW4gdGhlIGxhc3QgcGF0Y2ggdmVyc2lvbgo+ Cj4gV2l0aCB0aG9zZSBtaW5vciBjaGFuZ2VzOgo+Cj4gUmV2aWV3ZWQtYnk6IFRvbWFzIEVsZiA8 dG9tYXMuZWxmQGludGVsLmNvbT4KPgo+IFRoYW5rcywKPiBUb21hcwo+Cj4+ICAgICogUmV0dXJu cyAwIGlmIHN1Y2Nlc3NmdWwsIGVsc2UgcHJvcGFnYXRlcyB1cCB0aGUgbG93ZXIgbGF5ZXIgZXJy b3IuCj4+ICAgICovCj4+ICAgaW50Cj4+ICAgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gLSAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICp0bykKPj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywK Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKip0b19yZXEpCj4+ ICAgewo+PiAgICAgICBjb25zdCBib29sIHJlYWRvbmx5ID0gb2JqLT5iYXNlLnBlbmRpbmdfd3Jp dGVfZG9tYWluID09IDA7Cj4+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx W0k5MTVfTlVNX1JJTkdTXTsKPj4gQEAgLTMxOTQsNyArMzIxOSw3IEBAIGk5MTVfZ2VtX29iamVj dF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IAo+PiAqb2JqLAo+PiAgICAgICAgICAg ICAgICAgICByZXFbbisrXSA9IG9iai0+bGFzdF9yZWFkX3JlcVtpXTsKPj4gICAgICAgfQo+PiAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Cj4+IC0gICAgICAgIHJldCA9IF9faTkxNV9n ZW1fb2JqZWN0X3N5bmMob2JqLCB0bywgcmVxW2ldKTsKPj4gKyAgICAgICAgcmV0ID0gX19pOTE1 X2dlbV9vYmplY3Rfc3luYyhvYmosIHRvLCByZXFbaV0sIHRvX3JlcSk7Cj4+ICAgICAgICAgICBp ZiAocmV0KQo+PiAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICAgICAgIH0KPj4gQEAgLTQx NDQsMTIgKzQxNjksMTMgQEAgaW50Cj4+ICAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5 X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgdTMyIGFsaWdubWVudCwKPj4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwaXBlbGluZWRfcmVxdWVzdCwKPj4gICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4+ICAgewo+ PiAgICAgICB1MzIgb2xkX3JlYWRfZG9tYWlucywgb2xkX3dyaXRlX2RvbWFpbjsKPj4gICAgICAg aW50IHJldDsKPj4KPj4gLSAgICByZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHBpcGVs aW5lZCk7Cj4+ICsgICAgcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCBwaXBlbGluZWQs IHBpcGVsaW5lZF9yZXF1ZXN0KTsKPj4gICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgIHJldHVy biByZXQ7Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4+IGluZGV4IDUwYjFjZWQuLmJlYTkyYWQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4gQEAgLTg5OSw3ICs4OTksNyBAQCBpOTE1X2dl bV9leGVjYnVmZmVyX21vdmVfdG9fZ3B1KHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPj4gICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEt Pm9iajsKPj4KPj4gICAgICAgICAgIGlmIChvYmotPmFjdGl2ZSAmIG90aGVyX3JpbmdzKSB7Cj4+ IC0gICAgICAgICAgICByZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJlcS0+cmluZyk7 Cj4+ICsgICAgICAgICAgICByZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJlcS0+cmlu ZywgJnJlcSk7Cj4+ICAgICAgICAgICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPj4gICAgICAgICAgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPj4gaW5kZXggNjU3YTMzMy4uNjUyOGFkYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMjMzOCw3ICsyMzM4LDggQEAgaW50Cj4+ICAgaW50 ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAgICAg ICAgICAgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4+ICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4+IC0gICAgICAg ICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQpCj4+ICsgICAgICAgICAg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4+ICsgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwaXBlbGluZWRfcmVxdWVzdCkKPj4gICB7 Cj4+ICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYi0+ZGV2Owo+PiAgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiBAQCAt MjQwMyw3ICsyNDA0LDcgQEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9w bGFuZSAKPj4gKnBsYW5lLAo+Pgo+PiAgICAgICBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSA9 IGZhbHNlOwo+PiAgICAgICByZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxh bmUob2JqLCBhbGlnbm1lbnQsIAo+PiBwaXBlbGluZWQsCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAmdmlldyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZWRf cmVxdWVzdCwgJnZpZXcpOwo+PiAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgZ290byBlcnJf aW50ZXJydXB0aWJsZTsKPj4KPj4gQEAgLTExMTE5LDYgKzExMTIwLDcgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgCj4+IGRybV9jcnRjICpjcnRjLAo+PiAgICAgICBz dHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKPj4gICAgICAgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZzsKPj4gICAgICAgYm9vbCBtbWlvX2ZsaXA7Cj4+ICsgICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVMTDsKPj4gICAgICAgaW50IHJldDsKPj4KPj4g ICAgICAgLyoKPj4gQEAgLTExMjI1LDcgKzExMjI3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgCj4+IGRybV9jcnRjICpjcnRjLAo+PiAgICAgICAgKi8KPj4gICAg ICAgcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooY3J0Yy0+cHJpbWFyeSwgZmIsCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+cHJpbWFyeS0+c3RhdGUsCj4+IC0gICAgICAg ICAgICAgICAgICAgICBtbWlvX2ZsaXAgPyAKPj4gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhv YmotPmxhc3Rfd3JpdGVfcmVxKSA6IHJpbmcpOwo+PiArICAgICAgICAgICAgICAgICAgICAgbW1p b19mbGlwID8gCj4+IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcob2JqLT5sYXN0X3dyaXRlX3Jl cSkgOiByaW5nLCAmcmVxdWVzdCk7Cj4+ICAgICAgIGlmIChyZXQpCj4+ICAgICAgICAgICBnb3Rv IGNsZWFudXBfcGVuZGluZzsKPj4KPj4gQEAgLTExMjU2LDYgKzExMjU4LDkgQEAgc3RhdGljIGlu dCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgCj4+IGRybV9jcnRjICpjcnRjLAo+PiAgICAg ICAgICAgICAgICAgICAgICAgaW50ZWxfcmluZ19nZXRfcmVxdWVzdChyaW5nKSk7Cj4+ICAgICAg IH0KPj4KPj4gKyAgICBpZiAocmVxdWVzdCkKPj4gKyAgICAgICAgaTkxNV9hZGRfcmVxdWVzdF9u b19mbHVzaChyZXF1ZXN0LT5yaW5nKTsKPj4gKwo+PiAgICAgICB3b3JrLT5mbGlwX3F1ZXVlZF92 YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY291bnQoY3J0Yyk7Cj4+ICAgICAgIHdvcmstPmVuYWJs ZV9zdGFsbF9jaGVjayA9IHRydWU7Cj4+Cj4+IEBAIC0xMTI3Myw2ICsxMTI3OCw4IEBAIHN0YXRp YyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IAo+PiBkcm1fY3J0YyAqY3J0YywKPj4g ICBjbGVhbnVwX3VucGluOgo+PiAgICAgICBpbnRlbF91bnBpbl9mYl9vYmooZmIsIGNydGMtPnBy aW1hcnktPnN0YXRlKTsKPj4gICBjbGVhbnVwX3BlbmRpbmc6Cj4+ICsgICAgaWYgKHJlcXVlc3Qp Cj4+ICsgICAgICAgIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHJlcXVlc3QpOwo+PiAgICAgICBh dG9taWNfZGVjKCZpbnRlbF9jcnRjLT51bnBpbl93b3JrX2NvdW50KTsKPj4gICAgICAgbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ICAgY2xlYW51cDoKPj4gQEAgLTEzMTcxLDcg KzEzMTc4LDcgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPj4gICAgICAgICAgIGlmIChyZXQpCj4+ICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygi ZmFpbGVkIHRvIGF0dGFjaCBwaHlzIG9iamVjdFxuIik7Cj4+ICAgICAgIH0gZWxzZSB7Cj4+IC0g ICAgICAgIHJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHBsYW5lLCBmYiwgbmV3X3N0 YXRlLCBOVUxMKTsKPj4gKyAgICAgICAgcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoo cGxhbmUsIGZiLCBuZXdfc3RhdGUsIE5VTEwsIAo+PiBOVUxMKTsKPj4gICAgICAgfQo+Pgo+PiAg ICAgICBpZiAocmV0ID09IDApCj4+IEBAIC0xNTIxOCw3ICsxNTIyNSw3IEBAIHZvaWQgaW50ZWxf bW9kZXNldF9nZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAKPj4gKmRldikKPj4gICAgICAgICAg IHJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGMtPnByaW1hcnksCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGMtPnByaW1hcnktPmZiLAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjLT5wcmltYXJ5LT5zdGF0ZSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKPj4gICAgICAg ICAgIG11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+PiAgICAgICAgICAgaWYgKHJl dCkgewo+PiAgICAgICAgICAgICAgIERSTV9FUlJPUigiZmFpbGVkIHRvIHBpbiBib290IGZiIG9u IHBpcGUgJWRcbiIsCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCAwMmQ4 MzE3Li43MzY1MGFlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtMTAz NCw3ICsxMDM0LDggQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0 IAo+PiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAgaW50IGludGVsX3Bpbl9hbmRfZmVu Y2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPj4gICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4+IC0gICAgICAgICAgICAg ICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcGlwZWxpbmVkKTsKPj4gKyAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpwaXBlbGluZWQsCj4+ICsgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGlwZWxpbmVkX3JlcXVlc3Qp Owo+PiAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+PiAgIF9faW50ZWxfZnJhbWVidWZmZXJf Y3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgICAgICAgICAgICAgICAgc3RydWN0 IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmRldi5jCj4+IGluZGV4IDRlN2U3ZGEuLmRkOWYzYjIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJkZXYuYwo+PiBAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9h bGxvYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAKPj4gKmhlbHBlciwKPj4gICAgICAgfQo+Pgo+PiAg ICAgICAvKiBGbHVzaCBldmVyeXRoaW5nIG91dCwgd2UnbGwgYmUgZG9pbmcgR1RUIG9ubHkgZnJv bSBub3cgb24gKi8KPj4gLSAgICByZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihOVUxM LCBmYiwgTlVMTCwgTlVMTCk7Cj4+ICsgICAgcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9v YmooTlVMTCwgZmIsIE5VTEwsIE5VTEwsIE5VTEwpOwo+PiAgICAgICBpZiAocmV0KSB7Cj4+ICAg ICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gb2JqOiAlZFxuIiwgcmV0KTsKPj4gICAg ICAgICAgIGdvdG8gb3V0X2ZiOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5k ZXggNmQwMDViMS4uZjhlOGZkYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4g QEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19tb3ZlX3RvX2dwdShzdHJ1 Y3QgCj4+IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4+ICAgICAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4+Cj4+ICAgICAgICAgICBpZiAob2Jq LT5hY3RpdmUgJiBvdGhlcl9yaW5ncykgewo+PiAtICAgICAgICAgICAgcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3N5bmMob2JqLCByZXEtPnJpbmcpOwo+PiArICAgICAgICAgICAgcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3N5bmMob2JqLCByZXEtPnJpbmcsICZyZXEpOwo+PiAgICAgICAgICAgICAgIGlm IChyZXQpCj4+ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICAgICAgICAgICB9Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4+IGluZGV4IGU3NTM0YjkuLjBm ODE4N2EgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPj4gQEAgLTcy NCw3ICs3MjQsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9fcHV0X2ltYWdlKHN0cnVj dCAKPj4gaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPj4gICAgICAgaWYgKHJldCAhPSAwKQo+PiAg ICAgICAgICAgcmV0dXJuIHJldDsKPj4KPj4gLSAgICByZXQgPSBpOTE1X2dlbV9vYmplY3RfcGlu X3RvX2Rpc3BsYXlfcGxhbmUobmV3X2JvLCAwLCBOVUxMLAo+PiArICAgIHJldCA9IGk5MTVfZ2Vt X29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShuZXdfYm8sIDAsIE5VTEwsIE5VTEwsCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7Cj4+ICAg ICAgIGlmIChyZXQgIT0gMCkKPj4gICAgICAgICAgIHJldHVybiByZXQ7Cj4+Cj4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==