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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 610C2C83F01 for ; Thu, 31 Aug 2023 14:44:03 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0089510E68B; Thu, 31 Aug 2023 14:44:03 +0000 (UTC) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 36F3D10E68F for ; Thu, 31 Aug 2023 14:44:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693493041; x=1725029041; h=message-id:subject:from:to:date:in-reply-to:references: content-transfer-encoding:mime-version; bh=4r50mSEucyk6nObrnFXqp3/a04D/bEwug45H73v5xVs=; b=kKmRo6q9tYZg1fJQAQN6DKflhlzne4EFKukccPUlJsAko8uD431ba3/e GpxGO5PWJbsgMwnajLhzYfuL7RWIHAlj07IofTJRfA16mcFW1DUn9HYin uPEIpNTUqb4OAapG4ZOCJInbIcqMwT3x4DdL16x7cjG+ZIX3SSmpRFPKZ e3kAa6afGyhC3fixC3GyJdSy1T2aqlyIPvD8Hf25fAkL5ekAFEU80XmWc 73WcXIN/BjbKEqD3FykfbBLhAYhjhAvWAn0tpv3LhTi75fWeV7Ruys1qq bghRH+aN+6WvKPOXFGm9FHNZUqzHkgbbVxkTrw0cX8TSmMJO7PI4H9GP5 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10819"; a="366192902" X-IronPort-AV: E=Sophos;i="6.02,217,1688454000"; d="scan'208";a="366192902" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2023 07:44:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10819"; a="863098153" X-IronPort-AV: E=Sophos;i="6.02,217,1688454000"; d="scan'208";a="863098153" Received: from krchrist-mobl2.ger.corp.intel.com (HELO [10.249.254.164]) ([10.249.254.164]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2023 07:43:59 -0700 Message-ID: <4e7045b07c2b09f011ed8f1bc0009296a850f7e0.camel@linux.intel.com> From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: intel-xe@lists.freedesktop.org Date: Thu, 31 Aug 2023 16:43:57 +0200 In-Reply-To: <20230831092937.2197-2-thomas.hellstrom@linux.intel.com> References: <20230831092937.2197-1-thomas.hellstrom@linux.intel.com> <20230831092937.2197-2-thomas.hellstrom@linux.intel.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 Subject: Re: [Intel-xe] [PATCH v3 1/6] drm/xe/bo: Simplify xe_bo_lock() X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gVGh1LCAyMDIzLTA4LTMxIGF0IDExOjI5ICswMjAwLCBUaG9tYXMgSGVsbHN0csO2bSB3cm90 ZToKPiB4ZV9ib19sb2NrKCkgd2FzLCBhbHRob3VnaCBpdCBvbmx5IGdyYWJiZWQgYSBzaW5nbGUg bG9jaywKPiB1bm5lY2Vzc2FyaWx5Cj4gdXNpbmcgdHRtX2V1X3Jlc2VydmVfYnVmZmVycygpLiBT aW1wbGlmeSBhbmQgZG9jdW1lbnQgdGhlIGludGVyZmFjZS4KPiAKPiB2MjoKPiAtIFVwZGF0ZSBh bHNvIHRoZSB4ZV9kaXNwbGF5IHN1YnN5c2VtLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBI ZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIHzCoCA1ICstLQo+IMKg ZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX2JvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAyNCArKysrKy0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0MiArKysrKysrKysrKystLS0tLS0KPiAtLQo+ IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgIDUgKy0tCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfYm9fZXZpY3QuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE5ICsrKystLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJt L3hlL3hlX2d0X3BhZ2VmYXVsdC5jwqDCoMKgwqDCoMKgwqDCoCB8IDQxICsrKysrKystLS0tLS0t LS0tLQo+IC0KPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV92bS5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgMjIgKysrKystLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL3hl L3hlX3ZtX21hZHZpc2UuY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMzAgKysrKysrLS0tLS0tLS0K PiDCoDggZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBp bmRleCBkNmI0ODFmMzNiNDUuLjlkZjgwODFmNzhkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTY5MzgsMTEgKzY5MzgsMTAgQEAg c3RhdGljIGludAo+IGk5MTVfZ2VtX29iamVjdF9yZWFkX2Zyb21fcGFnZShzdHJ1Y3QgeGVfYm8g KmJvLAo+IMKgwqDCoMKgwqDCoMKgwqB2b2lkICp2aXJ0dWFsOwo+IMKgwqDCoMKgwqDCoMKgwqBi b29sIGlzX2lvbWVtOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IC3CoMKgwqDCoMKgwqDC oHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBYRV9XQVJO X09OKHNpemUgIT0gOCk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqByZXQgPSB4ZV9ib19sb2NrKGJv LCAmd3csIDAsIHRydWUpOwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHhlX2JvX2xvY2soYm8sIHRy dWUpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoAo+IEBAIC02OTU5LDcgKzY5NTgsNyBAQCBzdGF0aWMg aW50Cj4gaTkxNV9nZW1fb2JqZWN0X3JlYWRfZnJvbV9wYWdlKHN0cnVjdCB4ZV9ibyAqYm8sCj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgdHRtX2JvX2t1bm1hcCgmbWFwKTsKPiDCoG91dF91bmxvY2s6 Cj4gLcKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDC oHhlX2JvX3VubG9jayhibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX2JvLmMK PiBiL2RyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9iby5jCj4gaW5kZXggYjMyYTkwNjhkNzZj Li4zMWZkNGY5YjJkNWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hl X2JvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfYm8uYwo+IEBAIC0yMDMs OSArMjAzLDkgQEAgc3RhdGljIGludCBldmljdF90ZXN0X3J1bl9ndChzdHJ1Y3QgeGVfZGV2aWNl Cj4gKnhlLCBzdHJ1Y3QgeGVfZ3QgKmd0LCBzdHJ1Y3Qga3VuaQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gY2xlYW51cF9ibzsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9ib19sb2NrKGV4dGVybmFsLCAmd3csIDAsIGZhbHNlKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwgZmFsc2UpOwo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fcGluX2V4dGVybmFsKGV4dGVy bmFsKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGV4dGVy bmFsLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2so ZXh0ZXJuYWwpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikgewo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEtVTklUX0ZB SUwodGVzdCwgImV4dGVybmFsIGJvIHBpbiBlcnI9JXBlXG4iLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9Q VFIoZXJyKSk7Cj4gQEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgaW50IGV2aWN0X3Rlc3RfcnVu X2d0KHN0cnVjdCB4ZV9kZXZpY2UKPiAqeGUsIHN0cnVjdCB4ZV9ndCAqZ3QsIHN0cnVjdCBrdW5p Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIoZXJyKSk7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gY2xlYW51cF9hbGw7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfYm9fbG9jayhleHRlcm5hbCwgJnd3LCAwLCBmYWxzZSk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGV4dGVybmFsLCBmYWxz ZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJy ID0geGVfYm9fdmFsaWRhdGUoZXh0ZXJuYWwsIE5VTEwsIGZhbHNlKTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhleHRlcm5hbCwg Jnd3KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhl X2JvX3VubG9jayhleHRlcm5hbCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGVycikgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBLVU5JVF9GQUlMKHRlc3QsICJleHRl cm5hbCBibyB2YWxpZAo+IGVycj0lcGVcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEVSUl9QVFIoZXJyKSk7Cj4gQEAgLTI3OCwyOCArMjc4LDI4IEBAIHN0YXRpYyBpbnQgZXZpY3Rf dGVzdF9ydW5fZ3Qoc3RydWN0IHhlX2RldmljZQo+ICp4ZSwgc3RydWN0IHhlX2d0ICpndCwgc3Ry dWN0IGt1bmkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhleHRlcm5hbCwgJnd3LCAwLCBmYWxzZSk7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soZXh0ZXJuYWwsIGZh bHNlKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VucGluX2V4dGVy bmFsKGV4dGVybmFsKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5s b2NrKGV4dGVybmFsLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9i b191bmxvY2soZXh0ZXJuYWwpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ib19wdXQoZXh0ZXJuYWwpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHhlX2JvX2xvY2soYm8sICZ3dywgMCwgZmFsc2UpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB4ZV9ib19sb2NrKGJvLCBmYWxzZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBfX3hlX2JvX3Vuc2V0X2J1bGtfbW92ZShibyk7Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX3B1dChibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjb250aW51ZTsKPiDCoAo+IMKgY2xlYW51cF9hbGw6Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX2xvY2soZXh0ZXJuYWwsICZ3dywgMCwgZmFsc2UpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGV4dGVybmFsLCBmYWxzZSk7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bnBpbl9leHRlcm5hbChleHRlcm5h bCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhleHRlcm5h bCwgJnd3KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGV4 dGVybmFsKTsKPiDCoGNsZWFudXBfZXh0ZXJuYWw6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9ib19wdXQoZXh0ZXJuYWwpOwo+IMKgY2xlYW51cF9ibzoKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhibywgJnd3LCAwLCBmYWxzZSk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soYm8sIGZhbHNlKTsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9feGVfYm9fdW5zZXRfYnVsa19tb3ZlKGJvKTsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fcHV0KGJvKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Jv LmMKPiBpbmRleCA2YThhNDFkYWZlODguLjlkNzBkMTJlNzliMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfYm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5j Cj4gQEAgLTEwNzksMTMgKzEwNzksMTEgQEAgc3RhdGljIHZvaWQgeGVfZ2VtX29iamVjdF9jbG9z ZShzdHJ1Y3QKPiBkcm1fZ2VtX29iamVjdCAqb2JqLAo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg eGVfYm8gKmJvID0gZ2VtX3RvX3hlX2JvKG9iaik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYg KGJvLT52bSAmJiAheGVfdm1faW5fZmF1bHRfbW9kZShiby0+dm0pKSB7Cj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiAtCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9XQVJOX09OKCF4ZV9ib19pc191c2VyKGJvKSk7 Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9jayhibywgJnd3 LCAwLCBmYWxzZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2so Ym8sIGZhbHNlKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR0bV9ib19zZXRf YnVsa19tb3ZlKCZiby0+dHRtLCBOVUxMKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ib191bmxvY2soYm8pOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqB9Cj4gwqAKPiBAQCAt MTg2MywyNiArMTg2MSwzNiBAQCBpbnQgeGVfZ2VtX21tYXBfb2Zmc2V0X2lvY3RsKHN0cnVjdAo+ IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiAtaW50IHhlX2JvX2xvY2soc3RydWN0IHhlX2JvICpibywgc3RydWN0IHd3 X2FjcXVpcmVfY3R4ICp3dywKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IG51bV9y ZXN2LCBib29sIGludHIpCj4gKy8qKgo+ICsgKiB4ZV9ib19sb2NrKCkgLSBMb2NrIHRoZSBidWZm ZXIgb2JqZWN0J3MgZG1hX3Jlc3Ygb2JqZWN0Cj4gKyAqIEBibzogVGhlIHN0cnVjdCB4ZV9ibyB3 aG9zZSBsb2NrIGlzIHRvIGJlIHRha2VuCj4gKyAqIEBpbnRyOiBXaGV0aGVyIHRvIHBlcmZvcm0g YW55IHdhaXQgaW50ZXJydXB0aWJsZQo+ICsgKgo+ICsgKiBMb2NrcyB0aGUgYnVmZmVyIG9iamVj dCdzIGRtYV9yZXN2IG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBvYmplY3QKPiBpcwo+ICsgKiBwb2lu dGluZyB0byBhIHNoYXJlZCBkbWFfcmVzdiBvYmplY3QsIHRoYXQgc2hhcmVkIGxvY2sgaXMgbG9j a2VkLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlRSIGlmIEBpbnRyIGlz IHRydWUgYW5kIHRoZSB3YWl0IGZvciBhCj4gKyAqIGNvbnRlbmRlZCBsb2NrIHdhcyBpbnRlcnJ1 cHRlZC4KPiArICovCj4gK2ludCB4ZV9ib19sb2NrKHN0cnVjdCB4ZV9ibyAqYm8sIGJvb2wgaW50 cikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHRtX3ZhbGlkYXRlX2J1ZmZlciB0dl9i bzsKPiAtwqDCoMKgwqDCoMKgwqBMSVNUX0hFQUQob2Jqcyk7Cj4gLcKgwqDCoMKgwqDCoMKgTElT VF9IRUFEKGR1cHMpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRyKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZG1hX3Jlc3ZfbG9ja19pbnRlcnJ1cHRpYmxlKGJvLT50 dG0uYmFzZS5yZXN2LAo+IE5VTEwpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgWEVfV0FSTl9PTigh d3cpOwo+ICvCoMKgwqDCoMKgwqDCoGRtYV9yZXN2X2xvY2soYm8tPnR0bS5iYXNlLnJlc3YsIE5V TEwpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgdHZfYm8ubnVtX3NoYXJlZCA9IG51bV9yZXN2Owo+ IC3CoMKgwqDCoMKgwqDCoHR2X2JvLmJvID0gJmJvLT50dG07Cj4gLcKgwqDCoMKgwqDCoMKgbGlz dF9hZGRfdGFpbCgmdHZfYm8uaGVhZCwgJm9ianMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gdHRtX2V1X3Jlc2VydmVfYnVmZmVycyh3dywgJm9ianMsIGludHIsICZkdXBzKTsKPiArwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC12b2lkIHhlX2JvX3VubG9jayhzdHJ1 Y3QgeGVfYm8gKmJvLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3KQo+ICsvKioKPiArICogeGVf Ym9fdW5sb2NrKCkgLSBVbmxvY2sgdGhlIGJ1ZmZlciBvYmplY3QncyBkbWFfcmVzdiBvYmplY3QK PiArICogQGJvOiBUaGUgc3RydWN0IHhlX2JvIHdob3NlIGxvY2sgaXMgdG8gYmUgcmVsZWFzZWQu Cj4gKyAqCj4gKyAqIFVubG9jayBhIGJ1ZmZlciBvYmplY3QgbG9jayB0aGF0IHdhcyBsb2NrZWQg YnkgeGVfYm9fbG9jaygpLgo+ICsgKi8KPiArdm9pZCB4ZV9ib191bmxvY2soc3RydWN0IHhlX2Jv ICpibykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgZG1hX3Jlc3ZfdW5sb2NrKGJvLT50dG0uYmFz ZS5yZXN2KTsKPiAtwqDCoMKgwqDCoMKgwqB3d19hY3F1aXJlX2Zpbmkod3cpOwo+IMKgfQo+IMKg Cj4gwqAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2JvLmggYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfYm8uaAo+IGluZGV4IDA4MjNkZGEwZjMxYi4uYTdiOWU3MDg0MjI1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9iby5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX2JvLmgKPiBAQCAtMTQ5LDEwICsxNDksOSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgeGVfYm9fYXNzZXJ0X2hlbGQoc3RydWN0Cj4geGVfYm8gKmJvKQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoKGJvKS0+dHRtLmJhc2Uu cmVzdik7Cj4gwqB9Cj4gwqAKPiAtaW50IHhlX2JvX2xvY2soc3RydWN0IHhlX2JvICpibywgc3Ry dWN0IHd3X2FjcXVpcmVfY3R4ICp3dywKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50 IG51bV9yZXN2LCBib29sIGludHIpOwo+ICtpbnQgeGVfYm9fbG9jayhzdHJ1Y3QgeGVfYm8gKmJv LCBib29sIGludHIpOwo+IMKgCj4gLXZvaWQgeGVfYm9fdW5sb2NrKHN0cnVjdCB4ZV9ibyAqYm8s IHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3cpOwo+ICt2b2lkIHhlX2JvX3VubG9jayhzdHJ1Y3Qg eGVfYm8gKmJvKTsKPiDCoAo+IMKgc3RhdGljIGlubGluZSB2b2lkIHhlX2JvX3VubG9ja192bV9o ZWxkKHN0cnVjdCB4ZV9ibyAqYm8pCj4gwqB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9ib19ldmljdC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm9fZXZpY3QuYwo+ IGluZGV4IDBkNWMzYTIwOGFiNC4uNDljMDVkZGVhMTY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ib19ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2Jv X2V2aWN0LmMKPiBAQCAtMjcsNyArMjcsNiBAQAo+IMKgaW50IHhlX2JvX2V2aWN0X2FsbChzdHJ1 Y3QgeGVfZGV2aWNlICp4ZSkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR0bV9kZXZp Y2UgKmJkZXYgPSAmeGUtPnR0bTsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggd3c7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm87Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZV90aWxlICp0aWxlOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGlzdF9o ZWFkIHN0aWxsX2luX2xpc3Q7Cj4gQEAgLTYyLDkgKzYxLDkgQEAgaW50IHhlX2JvX2V2aWN0X2Fs bChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGxpc3RfbW92ZV90YWlsKCZiby0+cGlubmVkX2xpbmssICZzdGlsbF9pbl9saXN0KTsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fdW5sb2NrKCZ4ZS0+cGlubmVkLmxvY2sp Owo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2soYm8sICZ3 dywgMCwgZmFsc2UpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2Nr KGJvLCBmYWxzZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSB4ZV9i b19ldmljdF9waW5uZWQoYm8pOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9i b191bmxvY2soYm8sICZ3dyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2Jv X3VubG9jayhibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19wdXQo Ym8pOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkgewo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9jaygmeGUt PnBpbm5lZC5sb2NrKTsKPiBAQCAtOTYsOSArOTUsOSBAQCBpbnQgeGVfYm9fZXZpY3RfYWxsKHN0 cnVjdCB4ZV9kZXZpY2UgKnhlKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlz dF9tb3ZlX3RhaWwoJmJvLT5waW5uZWRfbGluaywgJnhlLQo+ID5waW5uZWQuZXZpY3RlZCk7Cj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGluX3VubG9jaygmeGUtPnBpbm5lZC5s b2NrKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGJv LCAmd3csIDAsIGZhbHNlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9f bG9jayhibywgZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0g eGVfYm9fZXZpY3RfcGlubmVkKGJvKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg eGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9ib191bmxvY2soYm8pOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9f cHV0KGJvKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsK PiBAQCAtMTIzLDcgKzEyMiw2IEBAIGludCB4ZV9ib19ldmljdF9hbGwoc3RydWN0IHhlX2Rldmlj ZSAqeGUpCj4gwqAgKi8KPiDCoGludCB4ZV9ib19yZXN0b3JlX2tlcm5lbChzdHJ1Y3QgeGVfZGV2 aWNlICp4ZSkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm87Cj4gwqDCoMKgwqDCoMKgwqDCoGlu dCByZXQ7Cj4gwqAKPiBAQCAtMTQwLDkgKzEzOCw5IEBAIGludCB4ZV9ib19yZXN0b3JlX2tlcm5l bChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGxpc3RfbW92ZV90YWlsKCZiby0+cGlubmVkX2xpbmssICZ4ZS0KPiA+cGlubmVkLmtlcm5lbF9i b19wcmVzZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fdW5sb2Nr KCZ4ZS0+cGlubmVkLmxvY2spOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2JvX2xvY2soYm8sICZ3dywgMCwgZmFsc2UpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9ib19sb2NrKGJvLCBmYWxzZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXQgPSB4ZV9ib19yZXN0b3JlX3Bpbm5lZChibyk7Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChyZXQpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4ZV9ib19wdXQoYm8pOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gQEAgLTE4NCw3ICsxODIsNiBAQCBp bnQgeGVfYm9fcmVzdG9yZV9rZXJuZWwoc3RydWN0IHhlX2RldmljZSAqeGUpCj4gwqAgKi8KPiDC oGludCB4ZV9ib19yZXN0b3JlX3VzZXIoc3RydWN0IHhlX2RldmljZSAqeGUpCj4gwqB7Cj4gLcKg wqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3Owo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgeGVfYm8gKmJvOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfdGlsZSAqdGlsZTsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxpc3RfaGVhZCBzdGlsbF9pbl9saXN0Owo+IEBAIC0y MDYsOSArMjAzLDkgQEAgaW50IHhlX2JvX3Jlc3RvcmVfdXNlcihzdHJ1Y3QgeGVfZGV2aWNlICp4 ZSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX2dldChibyk7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGluX3VubG9jaygmeGUtPnBpbm5lZC5sb2Nr KTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19sb2NrKGJvLCAm d3csIDAsIGZhbHNlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fbG9j ayhibywgZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0geGVf Ym9fcmVzdG9yZV9waW5uZWQoYm8pOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhl X2JvX3VubG9jayhibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib19w dXQoYm8pOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkgewo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9jaygm eGUtPnBpbm5lZC5sb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0 X3BhZ2VmYXVsdC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfcGFnZWZhdWx0LmMKPiBp bmRleCBiNmY3ODFiM2Q5ZDcuLjczZmM5Mzg5YTY2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfZ3RfcGFnZWZhdWx0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3RfcGFnZWZhdWx0LmMKPiBAQCAtMTcxLDIwICsxNzEsMTggQEAgc3RhdGljIGludCBoYW5kbGVf cGFnZWZhdWx0KHN0cnVjdCB4ZV9ndCAqZ3QsCj4gc3RydWN0IHBhZ2VmYXVsdCAqcGYpCj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgLyogTG9jayBWTSBhbmQgQk9zIGRtYS1yZXN2ICovCj4gwqDCoMKg wqDCoMKgwqDCoGJvID0geGVfdm1hX2JvKHZtYSk7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKG9ubHlf bmVlZHNfYm9fbG9jayhibykpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog VGhpcyBwYXRoIGVuc3VyZXMgdGhlIEJPJ3MgTFJVIGlzIHVwZGF0ZWQgKi8KPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0geGVfYm9fbG9jayhibywgJnd3LCB4ZS0+aW5mby50 aWxlX2NvdW50LAo+IGZhbHNlKTsKPiAtwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKgwqDC oMKgwqDCoGlmICghb25seV9uZWVkc19ib19sb2NrKGJvKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdHZfdm0ubnVtX3NoYXJlZCA9IHhlLT5pbmZvLnRpbGVfY291bnQ7Cj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dl92bS5ibyA9IHhlX3ZtX3R0bV9ibyh2 bSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2FkZCgmdHZfdm0uaGVh ZCwgJm9ianMpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYm8pIHsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR2X2JvLmJvID0g JmJvLT50dG07Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0dl9iby5udW1fc2hhcmVkID0geGUtPmluZm8udGlsZV9jb3VudDsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfYWRkKCZ0dl9iby5oZWFkLCAm b2Jqcyk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmd3csICZvYmpz LCBmYWxzZSwKPiAmZHVwcyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqBp ZiAoYm8pIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHZfYm8uYm8gPSAmYm8t PnR0bTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHZfYm8ubnVtX3NoYXJlZCA9 IHhlLT5pbmZvLnRpbGVfY291bnQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxp c3RfYWRkKCZ0dl9iby5oZWFkLCAmb2Jqcyk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDC oMKgwqDCoMKgwqByZXQgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKCZ3dywgJm9ianMsIGZhbHNl LCAmZHVwcyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIHVubG9ja192bTsKPiDCoAo+IEBAIC0yMjcsMTAgKzIyNSw3IEBA IHN0YXRpYyBpbnQgaGFuZGxlX3BhZ2VmYXVsdChzdHJ1Y3QgeGVfZ3QgKmd0LAo+IHN0cnVjdCBw YWdlZmF1bHQgKnBmKQo+IMKgwqDCoMKgwqDCoMKgwqB2bWEtPnVzbS50aWxlX2ludmFsaWRhdGVk ICY9IH5CSVQoZ3RfdG9fdGlsZShndCktPmlkKTsKPiDCoAo+IMKgdW5sb2NrX2RtYV9yZXN2Ogo+ IC3CoMKgwqDCoMKgwqDCoGlmIChvbmx5X25lZWRzX2JvX2xvY2soYm8pKQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gLcKgwqDCoMKgwqDC oMKgZWxzZQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dG1fZXVfYmFja29mZl9y ZXNlcnZhdGlvbigmd3csICZvYmpzKTsKPiArwqDCoMKgwqDCoMKgwqB0dG1fZXVfYmFja29mZl9y ZXNlcnZhdGlvbigmd3csICZvYmpzKTsKPiDCoHVubG9ja192bToKPiDCoMKgwqDCoMKgwqDCoMKg aWYgKCFyZXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2bS0+dXNtLmxhc3Rf ZmF1bHRfdm1hID0gdm1hOwo+IEBAIC01MzQsMjggKzUyOSwyMiBAQCBzdGF0aWMgaW50IGhhbmRs ZV9hY2Moc3RydWN0IHhlX2d0ICpndCwgc3RydWN0Cj4gYWNjICphY2MpCj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgLyogTG9jayBWTSBhbmQgQk9zIGRtYS1yZXN2ICovCj4gwqDCoMKgwqDCoMKgwqDC oGJvID0geGVfdm1hX2JvKHZtYSk7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKG9ubHlfbmVlZHNfYm9f bG9jayhibykpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVGhpcyBwYXRo IGVuc3VyZXMgdGhlIEJPJ3MgTFJVIGlzIHVwZGF0ZWQgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0ID0geGVfYm9fbG9jayhibywgJnd3LCB4ZS0+aW5mby50aWxlX2NvdW50 LAo+IGZhbHNlKTsKPiAtwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKgwqDCoMKgwqDCoGlm ICghb25seV9uZWVkc19ib19sb2NrKGJvKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdHZfdm0ubnVtX3NoYXJlZCA9IHhlLT5pbmZvLnRpbGVfY291bnQ7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dl92bS5ibyA9IHhlX3ZtX3R0bV9ibyh2bSk7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2FkZCgmdHZfdm0uaGVhZCwgJm9ianMp Owo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dl9iby5ibyA9ICZiby0+dHRtOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dl9iby5udW1fc2hhcmVkID0geGUtPmlu Zm8udGlsZV9jb3VudDsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9hZGQo JnR2X2JvLmhlYWQsICZvYmpzKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmd3csICZvYmpzLCBmYWxzZSwKPiAmZHVwcyk7Cj4g wqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB0dl9iby5ibyA9ICZiby0+dHRtOwo+ ICvCoMKgwqDCoMKgwqDCoHR2X2JvLm51bV9zaGFyZWQgPSB4ZS0+aW5mby50aWxlX2NvdW50Owo+ ICvCoMKgwqDCoMKgwqDCoGxpc3RfYWRkKCZ0dl9iby5oZWFkLCAmb2Jqcyk7Cj4gK8KgwqDCoMKg wqDCoMKgcmV0ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmd3csICZvYmpzLCBmYWxzZSwgJmR1 cHMpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ290byB1bmxvY2tfdm07Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogTWlncmF0 ZSB0byBWUkFNLCBtb3ZlIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBWTUEgZmlyc3QgKi8KPiDCoMKg wqDCoMKgwqDCoMKgcmV0ID0geGVfYm9fbWlncmF0ZShibywgWEVfUExfVlJBTTAgKyB0aWxlLT5p ZCk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZiAob25seV9uZWVkc19ib19sb2NrKGJvKSkKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+IC3C oMKgwqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHRtX2V1 X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnd3LCAmb2Jqcyk7Cj4gK8KgwqDCoMKgwqDCoMKgdHRtX2V1 X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnd3LCAmb2Jqcyk7Cj4gwqB1bmxvY2tfdm06Cj4gwqDCoMKg wqDCoMKgwqDCoHVwX3JlYWQoJnZtLT5sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgeGVfdm1fcHV0 KHZtKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMgYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfdm0uYwo+IGluZGV4IDljYmYyZjYzZDY0MS4uNTY3OWM0N2Y0N2NhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV92bS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX3ZtLmMKPiBAQCAtMjY3LDEwICsyNjcsOSBAQCBzdGF0aWMgdm9pZCBhcm1f cHJlZW1wdF9mZW5jZXMoc3RydWN0IHhlX3ZtICp2bSwKPiBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0 KQo+IMKgc3RhdGljIGludCBhZGRfcHJlZW1wdF9mZW5jZXMoc3RydWN0IHhlX3ZtICp2bSwgc3Ry dWN0IHhlX2JvICpibykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2V4ZWNfcXVl dWUgKnE7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3Owo+IMKgwqDC oMKgwqDCoMKgwqBpbnQgZXJyOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9j ayhibywgJnd3LCB2bS0+cHJlZW1wdC5udW1fZXhlY19xdWV1ZXMsIHRydWUpOwo+ICvCoMKgwqDC oMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sIHRydWUpOwoKTG9va3MgbGlrZSB0aGUgZmVuY2Ug c2xvdCByZXNlcnZhdGlvbiBnb3QgbG9zdCBpbiB0aGUgcmViYXNlIGhlcmUuIFdpbGwKZml4IGlu IG5leHQgcmV2aXNpb24uCgovVGhvbWFzCgoKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqAKPiBAQCAtMjgx LDggKzI4MCw4IEBAIHN0YXRpYyBpbnQgYWRkX3ByZWVtcHRfZmVuY2VzKHN0cnVjdCB4ZV92bSAq dm0sCj4gc3RydWN0IHhlX2JvICpibykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1B X1JFU1ZfVVNBR0VfQk9PS0tFRVApOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+ICvCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTEwMjEsMTIg KzEwMjAsMTEgQEAgYm9faGFzX3ZtX3JlZmVyZW5jZXNfbG9ja2VkKHN0cnVjdCB4ZV9ibyAqYm8s Cj4gc3RydWN0IHhlX3ZtICp2bSwKPiDCoHN0YXRpYyBib29sIGJvX2hhc192bV9yZWZlcmVuY2Vz KHN0cnVjdCB4ZV9ibyAqYm8sIHN0cnVjdCB4ZV92bSAqdm0sCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVf dm1hICppZ25vcmUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4 IHd3Owo+IMKgwqDCoMKgwqDCoMKgwqBib29sIHJldDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHhl X2JvX2xvY2soYm8sICZ3dywgMCwgZmFsc2UpOwo+ICvCoMKgwqDCoMKgwqDCoHhlX2JvX2xvY2so Ym8sIGZhbHNlKTsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gISFib19oYXNfdm1fcmVmZXJlbmNl c19sb2NrZWQoYm8sIHZtLCBpZ25vcmUpOwo+IC3CoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhi bywgJnd3KTsKPiArwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gQEAgLTIyNjcsNyArMjI2NSw2IEBAIHZtX2Jp bmRfaW9jdGxfb3BzX2NyZWF0ZShzdHJ1Y3QgeGVfdm0gKnZtLAo+IHN0cnVjdCB4ZV9ibyAqYm8s Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBv cGVyYXRpb24sIHU4IHRpbGVfbWFzaywgdTMyIHJlZ2lvbikKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBibyA/ICZiby0+dHRtLmJhc2UgOiBOVUxM Owo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGRybV9ncHV2YV9vcHMgKm9wczsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGRybV9ncHV2YV9vcCAqX19vcDsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3ZtYV9vcCAq b3A7Cj4gQEAgLTIzMjUsMTEgKzIzMjIsMTEgQEAgdm1fYmluZF9pb2N0bF9vcHNfY3JlYXRlKHN0 cnVjdCB4ZV92bSAqdm0sCj4gc3RydWN0IHhlX2JvICpibywKPiDCoMKgwqDCoMKgwqDCoMKgY2Fz ZSBYRV9WTV9CSU5EX09QX1VOTUFQX0FMTDoKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFhFX1dBUk5fT04oIWJvKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlcnIgPSB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG9wcyA9IGRybV9ncHV2YV9nZW1fdW5tYXBfb3BzX2NyZWF0ZSgm dm0tPm1nciwgb2JqKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5s b2NrKGJvLCAmd3cpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxv Y2soYm8pOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihvcHMp KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biBvcHM7Cj4gwqAKPiBAQCAtMjM2NSwxMyArMjM2MiwxMiBAQCBzdGF0aWMgc3RydWN0IHhlX3Zt YSAqbmV3X3ZtYShzdHJ1Y3QgeGVfdm0KPiAqdm0sIHN0cnVjdCBkcm1fZ3B1dmFfb3BfbWFwICpv cCwKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibyA9IG9wLT5nZW0ub2Jq ID8gZ2VtX3RvX3hlX2JvKG9wLT5nZW0ub2JqKSA6Cj4gTlVMTDsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHhlX3ZtYSAqdm1hOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0 eCB3dzsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVycjsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBs b2NrZGVwX2Fzc2VydF9oZWxkX3dyaXRlKCZ2bS0+bG9jayk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgaWYgKGJvKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2Jv X2xvY2soYm8sICZ3dywgMCwgdHJ1ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVyciA9IHhlX2JvX2xvY2soYm8sIHRydWUpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKGVycikKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gRVJSX1BUUihlcnIpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gQEAgLTIz ODAsNyArMjM3Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGVfdm1hICpuZXdfdm1hKHN0cnVjdCB4ZV92 bSAqdm0sCj4gc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgKm9wLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcC0+dmEucmFuZ2UgLSAxLCBy ZWFkX29ubHksIGlzX251bGwsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHRpbGVfbWFzayk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChibykK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGlmICh4ZV92bWFfaXNfdXNlcnB0cih2bWEpKSB7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV92bWFfdXNlcnB0cl9waW5fcGFnZXModm1h KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtX21hZHZpc2UuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtX21hZHZpc2UuYwo+IGluZGV4IGM5YmM1OWJlNTA5NC4u MDUwODFmYTBmYmVkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV92bV9tYWR2 aXNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm1fbWFkdmlzZS5jCj4gQEAgLTI4 LDE2ICsyOCwxNSBAQCBzdGF0aWMgaW50IG1hZHZpc2VfcHJlZmVycmVkX21lbV9jbGFzcyhzdHJ1 Y3QKPiB4ZV9kZXZpY2UgKnhlLCBzdHJ1Y3QgeGVfdm0gKnZtLAo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoGZvciAoaSA9IDA7IGkgPCBudW1fdm1hczsgKytpKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfYm8gKmJvOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggd3c7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJvID0geGVfdm1hX2JvKHZtYXNbaV0pOwo+IMKgCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sICZ3dywgMCwgdHJ1ZSk7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sIHRy dWUpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8tPnByb3BzLnByZWZlcnJlZF9tZW1fY2xh c3MgPSB2YWx1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3BsYWNl bWVudF9mb3JfZmxhZ3MoeGUsIGJvLCBiby0+ZmxhZ3MpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiBAQCAtNTMsMTYgKzUyLDE1IEBAIHN0YXRpYyBpbnQg bWFkdmlzZV9wcmVmZXJyZWRfZ3Qoc3RydWN0IHhlX2RldmljZQo+ICp4ZSwgc3RydWN0IHhlX3Zt ICp2bSwKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZtYXM7ICsr aSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibzsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3 Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBibyA9IHhlX3ZtYV9ibyh2 bWFzW2ldKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9i b19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlcnIgPSB4ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChlcnIpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJv LT5wcm9wcy5wcmVmZXJyZWRfZ3QgPSB2YWx1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHhlX2JvX3BsYWNlbWVudF9mb3JfZmxhZ3MoeGUsIGJvLCBiby0+ZmxhZ3MpOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibyk7Cj4gwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiBAQCAtODksMTcgKzg3 LDE2IEBAIHN0YXRpYyBpbnQgbWFkdmlzZV9wcmVmZXJyZWRfbWVtX2NsYXNzX2d0KHN0cnVjdAo+ IHhlX2RldmljZSAqeGUsCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG51 bV92bWFzOyArK2kpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4 ZV9ibyAqYm87Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3d19hY3F1 aXJlX2N0eCB3dzsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8gPSB4 ZV92bWFfYm8odm1hc1tpXSk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZXJyID0geGVfYm9fbG9jayhibywgJnd3LCAwLCB0cnVlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgdHJ1ZSk7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBiby0+cHJvcHMucHJlZmVycmVkX21lbV9jbGFzcyA9IG1lbV9jbGFzczsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvLT5wcm9wcy5wcmVmZXJyZWRfZ3QgPSBndF9p ZDsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3BsYWNlbWVudF9mb3Jf ZmxhZ3MoeGUsIGJvLCBiby0+ZmxhZ3MpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ib191bmxvY2soYm8sICZ3dyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHhlX2JvX3VubG9jayhibyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiBAQCAtMTEyLDEzICsxMDksMTIgQEAgc3RhdGljIGludCBtYWR2aXNl X2NwdV9hdG9taWMoc3RydWN0IHhlX2RldmljZQo+ICp4ZSwgc3RydWN0IHhlX3ZtICp2bSwKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZtYXM7ICsraSkgewo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibzsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHd3Owo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBibyA9IHhlX3ZtYV9ibyh2bWFzW2ldKTsK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChYRV9JT0NUTF9EQkcoeGUsICEo Ym8tPmZsYWdzICYKPiBYRV9CT19DUkVBVEVfU1lTVEVNX0JJVCkpKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+IMKgCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xvY2soYm8sICZ3dywg MCwgdHJ1ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2JvX2xv Y2soYm8sIHRydWUpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZXJyOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm8tPnByb3BzLmNwdV9hdG9t aWMgPSAhIXZhbHVlOwo+IEBAIC0xMzAsNyArMTI2LDcgQEAgc3RhdGljIGludCBtYWR2aXNlX2Nw dV9hdG9taWMoc3RydWN0IHhlX2RldmljZQo+ICp4ZSwgc3RydWN0IHhlX3ZtICp2bSwKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKGJvLT5wcm9wcy5jcHVfYXRvbWljKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR0bV9ib191bm1hcF92aXJ0dWFsKCZiby0+dHRt KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+IMKg wqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gQEAgLTE0 MywxOCArMTM5LDE3IEBAIHN0YXRpYyBpbnQgbWFkdmlzZV9kZXZpY2VfYXRvbWljKHN0cnVjdAo+ IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV92bSAqdm0sCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg Zm9yIChpID0gMDsgaSA8IG51bV92bWFzOyArK2kpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB4ZV9ibyAqYm87Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB3d19hY3F1aXJlX2N0eCB3dzsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYm8gPSB4ZV92bWFfYm8odm1hc1tpXSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoWEVfSU9DVExfREJHKHhlLCAhKGJvLT5mbGFncyAmCj4gWEVfQk9f Q1JFQVRFX1ZSQU0wX0JJVCkgJiYKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICEoYm8tPmZsYWdzICYKPiBYRV9CT19DUkVB VEVfVlJBTTFfQklUKSkpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgJnd3LCAwLCB0cnVlKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfYm9fbG9jayhibywgdHJ1ZSk7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBiby0+cHJvcHMuZGV2aWNlX2F0b21pYyA9ICEhdmFsdWU7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2JvX3VubG9jayhibywgJnd3KTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvKTsKPiDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IEBAIC0xNzQsMTYgKzE2OSwx NSBAQCBzdGF0aWMgaW50IG1hZHZpc2VfcHJpb3JpdHkoc3RydWN0IHhlX2RldmljZQo+ICp4ZSwg c3RydWN0IHhlX3ZtICp2bSwKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwg bnVtX3ZtYXM7ICsraSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHhlX2JvICpibzsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHd3X2Fj cXVpcmVfY3R4IHd3Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBibyA9 IHhlX3ZtYV9ibyh2bWFzW2ldKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBlcnIgPSB4ZV9ib19sb2NrKGJvLCAmd3csIDAsIHRydWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBlcnIgPSB4ZV9ib19sb2NrKGJvLCB0cnVlKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJvLT50dG0ucHJpb3JpdHkgPSB2YWx1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dHRtKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfYm9fdW5sb2NrKGJvLCAmd3cpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ib191bmxvY2soYm8pOwo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cgo=