From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [PATCH 2/2] drm/ast: Support AST2500 Date: Thu, 16 Feb 2017 22:40:48 +1100 Message-ID: <1487245248.23576.78.camel@kernel.crashing.org> References: <1487236149.23576.67.camel@kernel.crashing.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id 507EE6EAC9 for ; Thu, 16 Feb 2017 11:41:01 +0000 (UTC) In-Reply-To: <1487236149.23576.67.camel@kernel.crashing.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: airlied@redhat.com, eich@suse.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE3LTAyLTE2IGF0IDIwOjA5ICsxMTAwLCBCZW5qYW1pbiBIZXJyZW5zY2htaWR0 IHdyb3RlOgo+IEZyb206ICJZLkMuIENoZW4iIDx5Y19jaGVuQGFzcGVlZHRlY2guY29tPgo+IAo+ IEFkZCBkZXRlY3Rpb24gYW5kIFBPU1QgY29kZSBmb3IgQVNUMjUwMCBnZW5lcmF0aW9uIGNoaXAs Cj4gY29kZSBvcmlnaW5hbGx5IGZyb20gQXNwZWVkIGFuZCBzbGlnaHRseSByZXdvcmtlZCBmb3IK PiBjb2Rpbmcgc3R5bGUgbW9zdGx5IGJ5IEJlbi4KCkkganVzdCBub3RpY2VkIHRoZXJlJ3Mgc3Rp bGwgYSBidW5jaCBvZiBtaW5vciBjaGVja3BhdGNoIHdhcm5pbmdzLApJJ2xsIGRvIGEgbmV3IHNw aW4gdG9tb3Jyb3cgYnV0IHdpdGhvdXQgY29kZSBjaGFuZ2VzLgoKWS5DLiBDYW4geW91IHN0aWxs IHRlc3QgdGhpcyBvbmUgcGxlYXNlIHRvIG1ha2Ugc3VyZSBJIGRpZG4ndCBicmVhawpQT1NUID8g Oi0pCgpDaGVlcnMsCkJlbi4KCj4gU2lnbmVkLW9mZi1ieTogWS5DLiBDaGVuIDx5Y19jaGVuQGFz cGVlZHRlY2guY29tPgo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJl bmhAa2VybmVsLmNyYXNoaW5nLm9yZz4KPiAtLS0KPiB2Mi4gW0JlbkhdCj4gwqAgLSBDb2Rpbmcg c3R5bGUgZml4ZXMKPiDCoCAtIEFkZCB0aW1lb3V0IHRvIG1haW4gRFJBTSBpbml0IGxvb3AKPiDC oCAtIEltcHJvdmUgYm9vdCB0aW1lIGRpc3BsYXkgb2YgUkFNIGluZm8KPiAKPiBZLkMuIFBsZWFz ZSBjaGVjayB0aGF0IEkgZGlkbid0IGJyZWFrIFBPU1QgYXMgSSBoYXZlbid0IG1hbmFnZSB0bwo+ IHRlc3QKPiB0aGF0ICh3ZSBjYW4ndCBib290IG91ciBtYWNoaW5lcyBpZiB0aGUgQk1DIGlzbid0 IGFscmVhZHkgUE9TVGVkKS4KPiAKPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry YW1fdGFibGVzLmggfMKgwqA2MiArKysrKwo+IMKgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2 LmjCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMyArCj4gwqBkcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9tYWluLmPCoMKgwqDCoMKgwqDCoMKgfMKgwqAzMiArKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X21vZGUuY8KgwqDCoMKgwqDCoMKgwqB8wqDCoDI1ICstCj4gwqBkcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9wb3N0LmPCoMKgwqDCoMKgwqDCoMKgfCA0OTEKPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90YWJsZXMuaMKg wqDCoMKgwqDCoHzCoMKgNTcgKysrLQo+IMKgNiBmaWxlcyBjaGFuZ2VkLCA1ODYgaW5zZXJ0aW9u cygrKSwgODQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2RyYW1fdGFibGVzLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RyYW1fdGFi bGVzLmgKPiBpbmRleCBjYzA0NTM5Li4wMjI2NWI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X2RyYW1fdGFibGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9kcmFtX3RhYmxlcy5oCj4gQEAgLTE0MSw0ICsxNDEsNjYgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhc3RfZHJhbXN0cnVjdAo+IGFzdDIxMDBfZHJhbV90YWJsZV9kYXRhW10gPSB7Cj4gwqAJeyAw eGZmZmYsIDB4ZmZmZmZmZmYgfSwKPiDCoH07Cj4gwqAKPiArLyoKPiArICogQVNUMjUwMCBEUkFN IHNldHRpbmdzIG1vZHVsZXMKPiArICovCj4gKyNkZWZpbmUgUkVHVEJMX05VTcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAxNwo+ICsjZGVmaW5lIFJFR0lEWF8wMTDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MAo+ICsjZGVmaW5lIFJFR0lEWF8wMTTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMQo+ICsjZGVmaW5l IFJFR0lEWF8wMTjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMgo+ICsjZGVmaW5lIFJFR0lEWF8wMjDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgMwo+ICsjZGVmaW5lIFJFR0lEWF8wMjTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgNAo+ICsjZGVmaW5lIFJFR0lEWF8wMkPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgNQo+ ICsjZGVmaW5lIFJFR0lEWF8wMzDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgNgo+ICsjZGVmaW5lIFJF R0lEWF8yMTTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgNwo+ICsjZGVmaW5lIFJFR0lEWF8yRTDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgOAo+ICsjZGVmaW5lIFJFR0lEWF8yRTTCoMKgwqDCoMKgwqDCoMKg wqDCoMKgOQo+ICsjZGVmaW5lIFJFR0lEWF8yRTjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMTAKPiAr I2RlZmluZSBSRUdJRFhfMkVDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDExCj4gKyNkZWZpbmUgUkVH SURYXzJGMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMgo+ICsjZGVmaW5lIFJFR0lEWF8yRjTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgMTMKPiArI2RlZmluZSBSRUdJRFhfMkY4wqDCoMKgwqDCoMKgwqDC oMKgwqDCoDE0Cj4gKyNkZWZpbmUgUkVHSURYX1JGQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAxNQo+ ICsjZGVmaW5lIFJFR0lEWF9QTEzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMTYKPiArCj4gK3N0YXRp YyB1MzIgYXN0MjUwMF9kZHIzXzE2MDBfdGltaW5nX3RhYmxlW1JFR1RCTF9OVU1dID0gewo+ICsJ MHg2NDYwNEQzOCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAxMCAq Lwo+ICsJMHgyOTY5MDU5OSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAw eDAxNCAqLwo+ICsJMHgwMDAwMDMwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiAweDAxOCAqLwo+ICsJMHgwMDAwMDAwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiAweDAyMCAqLwo+ICsJMHgwMDAwMDAwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiAweDAyNCAqLwo+ICsJMHgwMjE4MUU3MCzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAyQyAqLwo+ICsJMHgwMDAwMDA0MCzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAzMCAqLwo+ICsJMHgwMDAwMDAyNCzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDIxNCAqLwo+ICsJMHgwMjAwMTMw MCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFMCAqLwo+ICsJMHgw RTAwMDBBMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFNCAqLwo+ ICsJMHgwMDBFMDAxQizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJF OCAqLwo+ICsJMHgzNUI4QzEwNSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiAweDJFQyAqLwo+ICsJMHgwODA5MDQwOCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiAweDJGMCAqLwo+ICsJMHg5QjAwMDgwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAvKiAweDJGNCAqLwo+ICsJMHgwRTQwMEEwMCzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiAweDJGOCAqLwo+ICsJMHg5OTcxNDUyRizCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0UkZDwqDCoCovCj4gKwkweDAwMDA3MUMxCQnCoMKg wqDCoMKgLyogUExMwqDCoMKgKi8KPiArfTsKPiArCj4gK3N0YXRpYyB1MzIgYXN0MjUwMF9kZHI0 XzE2MDBfdGltaW5nX3RhYmxlW1JFR1RCTF9OVU1dID0gewo+ICsJMHg2MzYwNEUzNyzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAxMCAqLwo+ICsJMHhFOTdBRkE5OSzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAxNCAqLwo+ICsJMHgwMDAx OTAwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAxOCAqLwo+ICsJ MHgwODAwMDAwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDAyMCAq Lwo+ICsJMHgwMDAwMDQwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAw eDAyNCAqLwo+ICsJMHgwMDAwMDQxMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiAweDAyQyAqLwo+ICsJMHgwMDAwMDEwMSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiAweDAzMCAqLwo+ICsJMHgwMDAwMDAyNCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiAweDIxNCAqLwo+ICsJMHgwMzAwMjkwMCzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFMCAqLwo+ICsJMHgwRTAwMDBBMCzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFNCAqLwo+ICsJMHgwMDBFMDAxQyzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFOCAqLwo+ICsJMHgzNUI4QzEw NizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJFQyAqLwo+ICsJMHgw ODA4MDYwNyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJGMCAqLwo+ ICsJMHg5QjAwMDkwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAweDJG NCAqLwo+ICsJMHgwRTQwMEEwMCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiAweDJGOCAqLwo+ICsJMHg5OTcxNDU0NSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiB0UkZDwqDCoCovCj4gKwkweDAwMDA3MUMxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBQTEzCoMKgwqAqLwo+ICt9Owo+ICsKPiDCoCNlbmRpZgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJ2LmgKPiBpbmRleCAzYmVkY2Y3Li4yZGI5N2UyIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHJ2LmgKPiBAQCAtNjQsNiArNjQsNyBAQCBlbnVtIGFzdF9jaGlwIHsKPiDCoAlBU1QyMTUw LAo+IMKgCUFTVDIzMDAsCj4gwqAJQVNUMjQwMCwKPiArCUFTVDI1MDAsCj4gwqAJQVNUMTE4MCwK PiDCoH07Cj4gwqAKPiBAQCAtODAsNiArODEsNyBAQCBlbnVtIGFzdF90eF9jaGlwIHsKPiDCoCNk ZWZpbmUgQVNUX0RSQU1fMUd4MzLCoMKgwqAzCj4gwqAjZGVmaW5lIEFTVF9EUkFNXzJHeDE2wqDC oMKgNgo+IMKgI2RlZmluZSBBU1RfRFJBTV80R3gxNsKgwqDCoDcKPiArI2RlZmluZSBBU1RfRFJB TV84R3gxNsKgwqDCoDgKPiDCoAo+IMKgc3RydWN0IGFzdF9mYmRldjsKPiDCoAo+IEBAIC0zOTcs NiArMzk5LDcgQEAgYm9vbCBhc3RfaXNfdmdhX2VuYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gwqB2b2lkIGFzdF9wb3N0X2dwdShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiDCoHUz MiBhc3RfbWluZHdtKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgcik7Cj4gwqB2b2lkIGFz dF9tb3V0ZHdtKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgciwgdTMyIHYpOwo+ICsKPiDC oC8qIGFzdCBkcDUwMSAqLwo+IMKgaW50IGFzdF9sb2FkX2RwNTAxX21pY3JvY29kZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiDCoHZvaWQgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTggbW9kZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X21haW4uYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCj4g aW5kZXggZDQyYTRmNS4uNjBmMjNjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9tYWluLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMKPiBAQCAt MzIsOCArMzIsNiBAQAo+IMKgI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gwqAjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+IMKgCj4gLSNpbmNsdWRlICJhc3RfZHJhbV90 YWJsZXMuaCIKPiAtCj4gwqB2b2lkIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soc3RydWN0IGFzdF9w cml2YXRlICphc3QsCj4gwqAJCQnCoMKgwqDCoHVpbnQzMl90IGJhc2UsIHVpbnQ4X3QgaW5kZXgs Cj4gwqAJCQnCoMKgwqDCoHVpbnQ4X3QgbWFzaywgdWludDhfdCB2YWwpCj4gQEAgLTEwNiw3ICsx MDQsMTAgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UKPiAq ZGV2LCBib29sICpuZWVkX3Bvc3QpCj4gwqAJCWFzdC0+Y2hpcCA9IEFTVDExMDA7Cj4gwqAJCURS TV9JTkZPKCJBU1QgMTE4MCBkZXRlY3RlZFxuIik7Cj4gwqAJfSBlbHNlIHsKPiAtCQlpZiAoZGV2 LT5wZGV2LT5yZXZpc2lvbiA+PSAweDMwKSB7Cj4gKwkJaWYgKGRldi0+cGRldi0+cmV2aXNpb24g Pj0gMHg0MCkgewo+ICsJCQlhc3QtPmNoaXAgPSBBU1QyNTAwOwo+ICsJCQlEUk1fSU5GTygiQVNU IDI1MDAgZGV0ZWN0ZWRcbiIpOwo+ICsJCX0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+ PSAweDMwKSB7Cj4gwqAJCQlhc3QtPmNoaXAgPSBBU1QyNDAwOwo+IMKgCQkJRFJNX0lORk8oIkFT VCAyNDAwIGRldGVjdGVkXG4iKTsKPiDCoAkJfSBlbHNlIGlmIChkZXYtPnBkZXYtPnJldmlzaW9u ID49IDB4MjApIHsKPiBAQCAtMTc0LDYgKzE3NSw5IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9j aGlwKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgCQkJaWYg KGFzdC0+Y2hpcCA9PSBBU1QyNDAwICYmCj4gwqAJCQnCoMKgwqDCoChzY3VfcmV2ICYgMHgzMDAp ID09IDB4MTAwKSAvKiBhc3QxNDAwCj4gKi8KPiDCoAkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3Jl ZW4gPSB0cnVlOwo+ICsJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI1MDAgJiYKPiArCQkJwqDCoMKg wqBzY3VfcmV2ID09IDB4MTAwKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhc3QyNTEwCj4gKi8K PiArCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7Cj4gwqAJCX0KPiDCoAkJYnJl YWs7Cj4gwqAJfQo+IEBAIC0yNzYsNyArMjgwLDIzIEBAIHN0YXRpYyBpbnQgYXN0X2dldF9kcmFt X2luZm8oc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2KQo+IMKgCWVsc2UKPiDCoAkJYXN0LT5kcmFt X2J1c193aWR0aCA9IDMyOwo+IMKgCj4gLQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0 LT5jaGlwID09IEFTVDI0MDApIHsKPiArCWlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgewo+ICsJ CXN3aXRjaCAobWNyX2NmZyAmIDB4MDMpIHsKPiArCQljYXNlIDA6Cj4gKwkJCWFzdC0+ZHJhbV90 eXBlID0gQVNUX0RSQU1fMUd4MTY7Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJY2Fz ZSAxOgo+ICsJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzJHeDE2Owo+ICsJCQlicmVhazsK PiArCQljYXNlIDI6Cj4gKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fNEd4MTY7Cj4gKwkJ CWJyZWFrOwo+ICsJCWNhc2UgMzoKPiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV84R3gx NjsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfSBlbHNlIGlmIChhc3QtPmNoaXAgPT0gQVNUMjMw MCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkgewo+IMKgCQlzd2l0Y2ggKG1jcl9jZmcgJiAweDAz KSB7Cj4gwqAJCWNhc2UgMDoKPiDCoAkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fNTEyTXgx NjsKPiBAQCAtNDc0LDcgKzQ5NCw4IEBAIGludCBhc3RfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiB1bnNpZ25lZCBsb25nIGZsYWdzKQo+IMKgCQlpZiAocmV0KQo+IMKgCQkJ Z290byBvdXRfZnJlZTsKPiDCoAkJYXN0LT52cmFtX3NpemUgPSBhc3RfZ2V0X3ZyYW1faW5mbyhk ZXYpOwo+IC0JCURSTV9JTkZPKCJkcmFtICVkICVkICVkICUwOHhcbiIsIGFzdC0+bWNsaywgYXN0 LQo+ID5kcmFtX3R5cGUsIGFzdC0+ZHJhbV9idXNfd2lkdGgsIGFzdC0+dnJhbV9zaXplKTsKPiAr CQlEUk1fSU5GTygiZHJhbSBNQ0xLPSV1IHR5cGU9JWQgYnVzX3dpZHRoPSVkCj4gc2l6ZT0lMDh4 XG4iLAo+ICsJCQnCoGFzdC0+bWNsaywgYXN0LT5kcmFtX3R5cGUsIGFzdC0KPiA+ZHJhbV9idXNf d2lkdGgsIGFzdC0+dnJhbV9zaXplKTsKPiDCoAl9Cj4gwqAKPiDCoAlpZiAobmVlZF9wb3N0KQo+ IEBAIC00OTcsNiArNTE4LDcgQEAgaW50IGFzdF9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gwqAJwqDCoMKgwqBhc3QtPmNoaXAgPT0g QVNUMjIwMCB8fAo+IMKgCcKgwqDCoMKgYXN0LT5jaGlwID09IEFTVDIzMDAgfHwKPiDCoAnCoMKg wqDCoGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8Cj4gKwnCoMKgwqDCoGFzdC0+Y2hpcCA9PSBBU1Qy NTAwIHx8Cj4gwqAJwqDCoMKgwqBhc3QtPmNoaXAgPT0gQVNUMTE4MCkgewo+IMKgCQlkZXYtPm1v ZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7Cj4gwqAJCWRldi0+bW9kZV9jb25maWcubWF4X2hl aWdodCA9IDIwNDg7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUu Ywo+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jCj4gaW5kZXggZTI2Yzk4Zi4uMDJi ZWJmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKPiBAQCAtMjcxLDcgKzI3MSwxMCBAQCBz dGF0aWMgdm9pZCBhc3Rfc2V0X2NydGNfcmVnKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjLCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kCj4gwqB7Cj4gwqAJc3RydWN0IGFzdF9wcml2YXRlICph c3QgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwo+IMKgCXU4IGpyZWcwNSA9IDAsIGpyZWcwNyA9 IDAsIGpyZWcwOSA9IDAsIGpyZWdBQyA9IDAsIGpyZWdBRCA9Cj4gMCwganJlZ0FFID0gMDsKPiAt CXUxNiB0ZW1wOwo+ICsJdTE2IHRlbXAsIHByZWNhY2hlID0gMDsKPiArCj4gKwlpZiAoKGFzdC0+ Y2hpcCA9PSBBU1QyNTAwKSAmJiAodmJpb3NfbW9kZS0+ZW5oX3RhYmxlLT5mbGFncwo+ICYgQVNU MjUwMFByZUNhdGNoQ1JUKSkKPiArCQlwcmVjYWNoZSA9IDQwOwo+IMKgCj4gwqAJYXN0X3NldF9p bmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4MTEsIDB4N2YsCj4gMHgwMCk7 Cj4gwqAKPiBAQCAtMjk3LDEyICszMDAsMTIgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9jcnRjX3Jl ZyhzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZAo+ IMKgCQlqcmVnQUQgfD0gMHgwMTvCoMKgLyogSEJFIERbNV0gKi8KPiDCoAlhc3Rfc2V0X2luZGV4 X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwMywgMHhFMCwKPiAodGVtcCAmIDB4 MWYpKTsKPiDCoAo+IC0JdGVtcCA9IChtb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID4+IDMpIC0gMTsK PiArCXRlbXAgPSAoKG1vZGUtPmNydGNfaHN5bmNfc3RhcnQtcHJlY2FjaGUpID4+IDMpIC0gMTsK PiDCoAlpZiAodGVtcCAmIDB4MTAwKQo+IMKgCQlqcmVnQUMgfD0gMHg0MDsgLyogSFJTIERbNV0g Ki8KPiDCoAlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgw NCwgMHgwMCwKPiB0ZW1wKTsKPiDCoAo+IC0JdGVtcCA9ICgobW9kZS0+Y3J0Y19oc3luY19lbmQg Pj4gMykgLSAxKSAmIDB4M2Y7Cj4gKwl0ZW1wID0gKCgobW9kZS0+Y3J0Y19oc3luY19lbmQtcHJl Y2FjaGUpID4+IDMpIC0gMSkgJiAweDNmOwo+IMKgCWlmICh0ZW1wICYgMHgyMCkKPiDCoAkJanJl Z0FEIHw9IDB4MDQ7IC8qIEhSRSBEWzVdICovCj4gwqAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4MDUsIDB4NjAsCj4gKHU4KSgodGVtcCAmIDB4MWYpIHwg anJlZzA1KSk7Cj4gQEAgLTM2Myw2ICszNjYsMTEgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9jcnRj X3JlZyhzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZAo+IMKgCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweDA5 LCAweGRmLAo+IGpyZWcwOSk7Cj4gwqAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4QUUsIDB4MDAsCj4gKGpyZWdBRSB8IDB4ODApKTsKPiDCoAo+ICvCoMKg wqDCoGlmIChwcmVjYWNoZSkKPiArCQlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhiNiwKPiAweDNmLCAweDgwKTsKPiArwqDCoMKgwqBlbHNlCj4gKwkJYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YjYsCj4gMHgzZiwg MHgwMCk7Cj4gKwo+IMKgCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweDExLCAweDdmLAo+IDB4ODApOwo+IMKgfQo+IMKgCj4gQEAgLTM4MywxMiArMzkxLDE1 IEBAIHN0YXRpYyB2b2lkIGFzdF9zZXRfZGNsa19yZWcoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2 LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW8KPiDCoAlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFz dCA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJc3RydWN0IGFzdF92Ymlvc19kY2xrX2luZm8gKmNs a19pbmZvOwo+IMKgCj4gLQljbGtfaW5mbyA9ICZkY2xrX3RhYmxlW3ZiaW9zX21vZGUtPmVuaF90 YWJsZS0+ZGNsa19pbmRleF07Cj4gKwlpZiAoYXN0LT5jaGlwID09IEFTVDI1MDApCj4gKwkJY2xr X2luZm8gPSAmZGNsa190YWJsZV9hc3QyNTAwW3ZiaW9zX21vZGUtCj4gPmVuaF90YWJsZS0+ZGNs a19pbmRleF07Cj4gKwllbHNlCj4gKwkJY2xrX2luZm8gPSAmZGNsa190YWJsZVt2Ymlvc19tb2Rl LT5lbmhfdGFibGUtCj4gPmRjbGtfaW5kZXhdOwo+IMKgCj4gwqAJYXN0X3NldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YzAsIDB4MDAsCj4gY2xrX2luZm8tPnBhcmFt MSk7Cj4gwqAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 YzEsIDB4MDAsCj4gY2xrX2luZm8tPnBhcmFtMik7Cj4gwqAJYXN0X3NldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YmIsIDB4MGYsCj4gLQkJCcKgwqDCoMKgwqDCoMKg KGNsa19pbmZvLT5wYXJhbTMgJiAweDgwKSB8Cj4gKChjbGtfaW5mby0+cGFyYW0zICYgMHgzKSA8 PCA0KSk7Cj4gKwkJCcKgwqDCoMKgwqDCoMKgKGNsa19pbmZvLT5wYXJhbTMgJiAweGMwKSB8Cj4g KChjbGtfaW5mby0+cGFyYW0zICYgMHgzKSA8PCA0KSk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2 b2lkIGFzdF9zZXRfZXh0X3JlZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdAo+IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsCj4gQEAgLTQyMSw3ICs0MzIsNyBAQCBzdGF0aWMgdm9pZCBhc3Rf c2V0X2V4dF9yZWcoc3RydWN0IGRybV9jcnRjCj4gKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlCj4gwqAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4YTgsIDB4ZmQsCj4ganJlZ0E4KTsKPiDCoAo+IMKgCS8qIFNldCBUaHJlc2hvbGQgKi8K PiAtCWlmIChhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkgewo+ ICsJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8IGFz dC0KPiA+Y2hpcCA9PSBBU1QyNTAwKSB7Cj4gwqAJCWFzdF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNU X0lPX0NSVENfUE9SVCwgMHhhNywKPiAweDc4KTsKPiDCoAkJYXN0X3NldF9pbmRleF9yZWcoYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCAweGE2LAo+IDB4NjApOwo+IMKgCX0gZWxzZSBpZiAoYXN0LT5j aGlwID09IEFTVDIxMDAgfHwKPiBAQCAtNzk0LDcgKzgwNSw3IEBAIHN0YXRpYyBpbnQgYXN0X21v ZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IKPiAqY29ubmVjdG9yLAo+IMKgCQlpZiAoKG1v ZGUtPmhkaXNwbGF5ID09IDE2MDApICYmIChtb2RlLT52ZGlzcGxheSA9PQo+IDkwMCkpCj4gwqAJ CQlyZXR1cm4gTU9ERV9PSzsKPiDCoAo+IC0JCWlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8 IChhc3QtPmNoaXAgPT0gQVNUMjIwMCkKPiB8fCAoYXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChh c3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwgKGFzdC0+Y2hpcCA9PQo+IEFTVDExODApKSB7Cj4gKwkJ aWYgKChhc3QtPmNoaXAgPT0gQVNUMjEwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyMjAwKQo+IHx8 IChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8fCAoYXN0 LT5jaGlwID09Cj4gQVNUMjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QxMTgwKSkgewo+IMKgCQkJ aWYgKChtb2RlLT5oZGlzcGxheSA9PSAxOTIwKSAmJiAobW9kZS0KPiA+dmRpc3BsYXkgPT0gMTA4 MCkpCj4gwqAJCQkJcmV0dXJuIE1PREVfT0s7Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfcG9zdC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMK PiBpbmRleCA3MTk3NjM1Li4wYjQxZmI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X3Bvc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYwo+IEBA IC0zMSw3ICszMSw4IEBACj4gwqAKPiDCoCNpbmNsdWRlICJhc3RfZHJhbV90YWJsZXMuaCIKPiDC oAo+IC1zdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzIzMDAoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gK3N0YXRpYyB2b2lkIGFzdF9wb3N0X2NoaXBfMjMwMChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiArc3RhdGljIHZvaWQgYXN0X3Bvc3RfY2hpcF8yNTAwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+IMKgCj4gwqB2b2lkIGFzdF9lbmFibGVfdmdhKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gwqB7Cj4gQEAgLTgyLDcgKzgzLDcgQEAgYXN0X3NldF9kZWZfZXh0X3JlZyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+IMKgCWZvciAoaSA9IDB4ODE7IGkgPD0gMHg4ZjsgaSsrKQo+IMKg CQlhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIGksIDB4MDApOwo+IMKg Cj4gLQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsK PiArCWlmIChhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fCBh c3QtCj4gPmNoaXAgPT0gQVNUMjUwMCkgewo+IMKgCQlpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+ PSAweDIwKQo+IMKgCQkJZXh0X3JlZ19pbmZvID0gZXh0cmVnaW5mb19hc3QyMzAwOwo+IMKgCQll bHNlCj4gQEAgLTEwNiw3ICsxMDcsNyBAQCBhc3Rfc2V0X2RlZl9leHRfcmVnKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gwqAKPiDCoAkvKiBFbmFibGUgUkFNREFDIGZvciBBMSAqLwo+IMKgCXJl ZyA9IDB4MDQ7Cj4gLQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFT VDI0MDApCj4gKwlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0 MDAgfHwgYXN0LQo+ID5jaGlwID09IEFTVDI1MDApCj4gwqAJCXJlZyB8PSAweDIwOwo+IMKgCWFz dF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LCAweGZmLAo+ IHJlZyk7Cj4gwqB9Cj4gQEAgLTM4MCw4ICszODEsMTAgQEAgdm9pZCBhc3RfcG9zdF9ncHUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlhc3Rfc2V0X2RlZl9leHRfcmVnKGRldik7Cj4gwqAK PiDCoAlpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgewo+ICsJCWlmIChhc3Qt PmNoaXAgPT0gQVNUMjUwMCkKPiArCQkJYXN0X3Bvc3RfY2hpcF8yNTAwKGRldik7Cj4gwqAJCWlm IChhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkKPiAtCQkJYXN0 X2luaXRfZHJhbV8yMzAwKGRldik7Cj4gKwkJCWFzdF9wb3N0X2NoaXBfMjMwMChkZXYpOwo+IMKg CQllbHNlCj4gwqAJCQlhc3RfaW5pdF9kcmFtX3JlZyhkZXYpOwo+IMKgCj4gQEAgLTQ0NSw4NSAr NDQ4LDUzIEBAIHN0YXRpYyBjb25zdCB1MzIgcGF0dGVybls4XSA9IHsKPiDCoAkweDdDNjFEMjUz Cj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBpbnQgbW1jX3Rlc3RfYnVyc3Qoc3RydWN0IGFzdF9wcml2 YXRlICphc3QsIHUzMiBkYXRhZ2VuKQo+ICtzdGF0aWMgaW50IG1tY190ZXN0KHN0cnVjdCBhc3Rf cHJpdmF0ZSAqYXN0LCB1MzIgZGF0YWdlbiwgdTgKPiB0ZXN0X2N0bCkKPiDCoHsKPiDCoAl1MzIg ZGF0YSwgdGltZW91dDsKPiDCoAo+IMKgCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgw MDAwMDAwMCk7Cj4gLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MDAwMDAwYzEgfCAo ZGF0YWdlbiA8PCAzKSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIChkYXRhZ2Vu IDw8IDMpIHwgdGVzdF9jdGwpOwo+IMKgCXRpbWVvdXQgPSAwOwo+IMKgCWRvIHsKPiDCoAkJZGF0 YSA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUwMDcwKSAmIDB4MzAwMDsKPiDCoAkJaWYgKGRhdGEg JiAweDIwMDApIHsKPiAtCQkJcmV0dXJuIDA7Cj4gKwkJCXJldHVybiAtMTsKPiDCoAkJfQo+IMKg CQlpZiAoKyt0aW1lb3V0ID4gVElNRU9VVCkgewo+IMKgCQkJYXN0X21vdXRkd20oYXN0LCAweDFl NmUwMDcwLCAweDAwMDAwMDAwKTsKPiAtCQkJcmV0dXJuIDA7Cj4gKwkJCXJldHVybiAtMTsKPiDC oAkJfQo+IMKgCX0gd2hpbGUgKCFkYXRhKTsKPiArCWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgx ZTZlMDA3OCk7Cj4gKwlkYXRhID0gKGRhdGEgfCAoZGF0YSA+PiAxNikpICYgMHhmZmZmOwo+IMKg CWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwMDAwMDAwMCk7Cj4gLQlyZXR1cm4gMTsK PiArCXJldHVybiBkYXRhOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbW1jX3Rlc3RfYnVyc3Qy KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgZGF0YWdlbikKPiArCj4gK3N0YXRpYyBpbnQg bW1jX3Rlc3RfYnVyc3Qoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBkYXRhZ2VuKQo+IMKg ewo+IC0JdTMyIGRhdGEsIHRpbWVvdXQ7Cj4gKwlyZXR1cm4gbW1jX3Rlc3QoYXN0LCBkYXRhZ2Vu LCAweGMxKTsKPiArfQo+IMKgCj4gLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MDAw MDAwMDApOwo+IC0JYXN0X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAwMDAwMDQxIHwgKGRh dGFnZW4gPDwgMykpOwo+IC0JdGltZW91dCA9IDA7Cj4gLQlkbyB7Cj4gLQkJZGF0YSA9IGFzdF9t aW5kd20oYXN0LCAweDFlNmUwMDcwKSAmIDB4MTAwMDsKPiAtCQlpZiAoKyt0aW1lb3V0ID4gVElN RU9VVCkgewo+IC0JCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MCk7Cj4gLQkJCXJl dHVybiAtMTsKPiAtCQl9Cj4gLQl9IHdoaWxlICghZGF0YSk7Cj4gLQlkYXRhID0gYXN0X21pbmR3 bShhc3QsIDB4MWU2ZTAwNzgpOwo+IC0JZGF0YSA9IChkYXRhIHwgKGRhdGEgPj4gMTYpKSAmIDB4 ZmZmZjsKPiAtCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwKTsKPiAtCXJldHVybiBk YXRhOwo+ICtzdGF0aWMgaW50IG1tY190ZXN0X2J1cnN0MihzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFz dCwgdTMyIGRhdGFnZW4pCj4gK3sKPiArCXJldHVybiBtbWNfdGVzdChhc3QsIGRhdGFnZW4sIDB4 NDEpOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IG1tY190ZXN0X3NpbmdsZShzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCwgdTMyIGRhdGFnZW4pCj4gwqB7Cj4gLQl1MzIgZGF0YSwgdGltZW91dDsK PiAtCj4gLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MDAwMDAwMDApOwo+IC0JYXN0 X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAwMDAwMGM1IHwgKGRhdGFnZW4gPDwgMykpOwo+ IC0JdGltZW91dCA9IDA7Cj4gLQlkbyB7Cj4gLQkJZGF0YSA9IGFzdF9taW5kd20oYXN0LCAweDFl NmUwMDcwKSAmIDB4MzAwMDsKPiAtCQlpZiAoZGF0YSAmIDB4MjAwMCkKPiAtCQkJcmV0dXJuIDA7 Cj4gLQkJaWYgKCsrdGltZW91dCA+IFRJTUVPVVQpIHsKPiAtCQkJYXN0X21vdXRkd20oYXN0LCAw eDFlNmUwMDcwLCAweDApOwo+IC0JCQlyZXR1cm4gMDsKPiAtCQl9Cj4gLQl9IHdoaWxlICghZGF0 YSk7Cj4gLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MCk7Cj4gLQlyZXR1cm4gMTsK PiArCXJldHVybiBtbWNfdGVzdChhc3QsIGRhdGFnZW4sIDB4YzUpOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgaW50IG1tY190ZXN0X3NpbmdsZTIoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBk YXRhZ2VuKQo+IMKgewo+IC0JdTMyIGRhdGEsIHRpbWVvdXQ7Cj4gKwlyZXR1cm4gbW1jX3Rlc3Qo YXN0LCBkYXRhZ2VuLCAweDA1KTsKPiArfQo+IMKgCj4gLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2 ZTAwNzAsIDB4MDAwMDAwMDApOwo+IC0JYXN0X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAw MDAwMDA1IHwgKGRhdGFnZW4gPDwgMykpOwo+IC0JdGltZW91dCA9IDA7Cj4gLQlkbyB7Cj4gLQkJ ZGF0YSA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUwMDcwKSAmIDB4MTAwMDsKPiAtCQlpZiAoKyt0 aW1lb3V0ID4gVElNRU9VVCkgewo+IC0JCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4 MCk7Cj4gLQkJCXJldHVybiAtMTsKPiAtCQl9Cj4gLQl9IHdoaWxlICghZGF0YSk7Cj4gLQlkYXRh ID0gYXN0X21pbmR3bShhc3QsIDB4MWU2ZTAwNzgpOwo+IC0JZGF0YSA9IChkYXRhIHwgKGRhdGEg Pj4gMTYpKSAmIDB4ZmZmZjsKPiAtCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwKTsK PiAtCXJldHVybiBkYXRhOwo+ICtzdGF0aWMgaW50IG1tY190ZXN0X3NpbmdsZV8yNTAwKHN0cnVj dCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIKPiBkYXRhZ2VuKQo+ICt7Cj4gKwlyZXR1cm4gbW1jX3Rl c3QoYXN0LCBkYXRhZ2VuLCAweDg1KTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBjYnJfdGVz dChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKPiBAQCAtNjAzLDkgKzU3NCw5IEBAIHN0YXRpYyB1 MzIgY2JyX3NjYW4yKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+IMKgCj4gwqBzdGF0aWMgdTMy IGNicl90ZXN0MyhzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKPiDCoHsKPiAtCWlmICghbW1jX3Rl c3RfYnVyc3QoYXN0LCAwKSkKPiArCWlmIChtbWNfdGVzdF9idXJzdChhc3QsIDApIDwgMCkKPiDC oAkJcmV0dXJuIDA7Cj4gLQlpZiAoIW1tY190ZXN0X3NpbmdsZShhc3QsIDApKQo+ICsJaWYgKG1t Y190ZXN0X3NpbmdsZShhc3QsIDApIDwgMCkKPiDCoAkJcmV0dXJuIDA7Cj4gwqAJcmV0dXJuIDE7 Cj4gwqB9Cj4gQEAgLTE2MDksNyArMTU4MCw3IEBAIHN0YXRpYyB2b2lkIGRkcjJfaW5pdChzdHJ1 Y3QgYXN0X3ByaXZhdGUgKmFzdCwKPiBzdHJ1Y3QgYXN0MjMwMF9kcmFtX3BhcmFtICpwYXJhbSkK PiDCoAo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGFzdF9pbml0X2RyYW1fMjMwMChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBhc3RfcG9zdF9jaGlwXzIzMDAoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiDCoHsKPiDCoAlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gwqAJc3RydWN0IGFzdDIzMDBfZHJhbV9wYXJhbSBwYXJhbTsKPiBA QCAtMTY2MCwzICsxNjMxLDQwNSBAQCBzdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzIzMDAoc3Ry dWN0Cj4gZHJtX2RldmljZSAqZGV2KQo+IMKgCX0gd2hpbGUgKChyZWcgJiAweDQwKSA9PSAwKTsK PiDCoH0KPiDCoAo+ICtzdGF0aWMgYm9vbCBjYnJfdGVzdF8yNTAwKHN0cnVjdCBhc3RfcHJpdmF0 ZSAqYXN0KQo+ICt7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNzQsIDB4MDAwMEZGRkYp Owo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDdDLCAweEZGMDBGRjAwKTsKPiArCWlmICht bWNfdGVzdF9idXJzdChhc3QsIDApIDwgMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwlpZiAobW1j X3Rlc3Rfc2luZ2xlXzI1MDAoYXN0LCAwKSA8IDApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGRkcl90ZXN0XzI1MDAoc3RydWN0IGFz dF9wcml2YXRlICphc3QpCj4gK3sKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3NCwgMHgw MDAwRkZGRik7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwN0MsIDB4RkYwMEZGMDApOwo+ ICsJaWYgKG1tY190ZXN0X2J1cnN0KGFzdCwgMCkgPCAwKQo+ICsJCXJldHVybiBmYWxzZTsKPiAr CWlmIChtbWNfdGVzdF9idXJzdChhc3QsIDEpIDwgMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwlp ZiAobW1jX3Rlc3RfYnVyc3QoYXN0LCAyKSA8IDApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYg KG1tY190ZXN0X2J1cnN0KGFzdCwgMykgPCAwKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCWlmICht bWNfdGVzdF9zaW5nbGVfMjUwMChhc3QsIDApIDwgMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwly ZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRkcl9pbml0X2NvbW1vbl8yNTAw KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwMzQsMHgwMDAyMDA4MCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDgsMHgyMDAz MDAwRik7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzgsMHgwMDAwMEZGRik7Cj4gKwlh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNDAsMHg4ODQ0ODg0NCk7Cj4gKwlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwNDQsMHgyNDQyMjI4OCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAw NDgsMHgyMjIyMjIyMik7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNEMsMHgyMjIyMjIy Mik7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNTAsMHg4MDAwMDAwMCk7Cj4gKwlhc3Rf bW91dGR3bShhc3QsIDB4MUU2RTAyMDgsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTAyMTgsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMjAs MHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMjgsMHgwMDAwMDAwMCk7 Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMzAsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAyQTgsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyQjAsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyNDAsMHg4 NjAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyNDQsMHgwMDAwODYwMCk7Cj4g Kwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyNDgsMHg4MDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAyNEMsMHg4MDgwODA4MCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRk cl9waHlfaW5pdF8yNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKwl1MzIgZGF0 YSwgcGFzcywgdGltZWNudDsKPiArCj4gKwlwYXNzID0gMDsKPiArCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDA2MCwweDAwMDAwMDA1KTsKPiArCXdoaWxlICghcGFzcykgewo+ICsJCWZvcih0aW1l Y250ID0gMDt0aW1lY250IDwgVElNRU9VVDt0aW1lY250KyspIHsKPiArCQkJZGF0YSA9IGFzdF9t aW5kd20oYXN0LCAweDFFNkUwMDYwKSAmIDB4MTsKPiArCQkJaWYgKCFkYXRhKQo+ICsJCQkJYnJl YWs7Cj4gKwkJfQo+ICsJCWlmICh0aW1lY250ICE9IFRJTUVPVVQpIHsKPiArCQkJZGF0YSA9IGFz dF9taW5kd20oYXN0LCAweDFFNkUwMzAwKSAmCj4gMHgwMDBBMDAwMDsKPiArCQkJaWYgKCFkYXRh KQo+ICsJCQkJcGFzcyA9IDE7Cj4gKwkJfQo+ICsJCWlmICghcGFzcykgewo+ICsJCQlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwNjAsMHgwMDAwMDAwMCk7Cj4gKwkJCXVkZWxheSgxMCk7IC8qIGRl bGF5IDEwIHVzICovCj4gKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA2MCwweDAwMDAwMDA1 KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAw MDAwMDYpOwo+ICt9Cj4gKwo+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICoqKioqKioqKioqCj4gKyBDaGVjayBE UkFNIFNpemUKPiArIDFHYiA6IDB4ODAwMDAwMDAgfiAweDg3RkZGRkZGCj4gKyAyR2IgOiAweDgw MDAwMDAwIH4gMHg4RkZGRkZGRgo+ICsgNEdiIDogMHg4MDAwMDAwMCB+IDB4OUZGRkZGRkYKPiAr IDhHYiA6IDB4ODAwMDAwMDAgfiAweEJGRkZGRkZGCj4gKyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKioqKioqKioq Lwo+ICtzdGF0aWMgdm9pZCBjaGVja19kcmFtX3NpemVfMjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUg KmFzdCwgdTMyIHRSRkMpCj4gK3sKPiArCXUzMiByZWdfMDQsIHJlZ18xNDsKPiArCj4gKwlyZWdf MDQgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDAwNCkgJiAweGZmZmZmZmZjOwo+ICsJcmVnXzE0 ID0gYXN0X21pbmR3bShhc3QsIDB4MUU2RTAwMTQpICYgMHhmZmZmZmYwMDsKPiArCj4gKwlhc3Rf bW91dGR3bShhc3QsIDB4QTAxMDAwMDAsIDB4NDE0MjQzNDQpOwo+ICsJYXN0X21vdXRkd20oYXN0 LCAweDkwMTAwMDAwLCAweDM1MzYzNzM4KTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHg4ODEwMDAw MCwgMHgyOTJBMkIyQyk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4ODAxMDAwMDAsIDB4MUQxRTFG MTApOwo+ICsKPiArCS8qIENoZWNrIDhHYml0ICovCj4gKwlpZiAoYXN0X21pbmR3bShhc3QsIDB4 QTAxMDAwMDApID09IDB4NDE0MjQzNDQpIHsKPiArCQlyZWdfMDQgfD0gMHgwMzsKPiArCQlyZWdf MTQgfD0gKHRSRkMgPj4gMjQpICYgMHhGRjsKPiArCQkvKiBDaGVjayA0R2JpdCAqLwo+ICsJfSBl bHNlIGlmIChhc3RfbWluZHdtKGFzdCwgMHg5MDEwMDAwMCkgPT0gMHgzNTM2MzczOCkgewo+ICsJ CXJlZ18wNCB8PSAweDAyOwo+ICsJCXJlZ18xNCB8PSAodFJGQyA+PiAxNikgJiAweEZGOwo+ICsJ CS8qIENoZWNrIDJHYml0ICovCj4gKwl9IGVsc2UgaWYgKGFzdF9taW5kd20oYXN0LCAweDg4MTAw MDAwKSA9PSAweDI5MkEyQjJDKSB7Cj4gKwkJcmVnXzA0IHw9IDB4MDE7Cj4gKwkJcmVnXzE0IHw9 ICh0UkZDID4+IDgpICYgMHhGRjsKPiArCX0gZWxzZSB7Cj4gKwkJcmVnXzE0IHw9IHRSRkMgJiAw eEZGOwo+ICsJfQo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDA0LCByZWdfMDQpOwo+ICsJ YXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE0LCByZWdfMTQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBlbmFibGVfY2FjaGVfMjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKPiArewo+ICsJ dTMyIHJlZ18wNCwgZGF0YTsKPiArCj4gKwlyZWdfMDQgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZF MDAwNCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQsIHJlZ18wNCB8IDB4MTAwMCk7 Cj4gKwo+ICsJZG8KPiArCQlkYXRhID0gYXN0X21pbmR3bShhc3QsIDB4MUU2RTAwMDQpOwo+ICsJ d2hpbGUgKCEoZGF0YSAmIDB4ODAwMDApKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAw NCwgcmVnXzA0IHwgMHg0MDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXRfbXBsbF8yNTAw KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKwl1MzIgYWRkciwgZGF0YSwgcGFyYW07 Cj4gKwo+ICsJLyogUmVzZXQgTU1DICovCj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDAs MHhGQzYwMDMwOSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAyMDA4MCk7 Cj4gKwlmb3IgKGFkZHIgPSAweDFlNmUwMDA0OyBhZGRyIDwgMHgxZTZlMDA5MDspIHsKPiArCQlh c3RfbW91dGR3bShhc3QsIGFkZHIsIDB4MCk7Cj4gKwkJYWRkciArPSA0Owo+ICsJfQo+ICsJYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMDM0LDB4MDAwMjAwMDApOwo+ICsKPiArCWFzdF9tb3V0ZHdt KGFzdCwgMHgxRTZFMjAwMCwgMHgxNjg4QThBOCk7Cj4gKwlkYXRhID0gYXN0X21pbmR3bShhc3Qs IDB4MUU2RTIwNzApICYgMHgwMDgwMDAwMDsKPiArCWlmIChkYXRhKSB7Cj4gKwkJLyogQ0xLSU4g PSAyNU1IeiAqLwo+ICsJCXBhcmFtID0gMHg5MzAwMjNFMDsKPiArCQlhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTIxNjAsIDB4MDAwMTEzMjApOwo+ICsJfSBlbHNlIHsKPiArCQkvKiBDTEtJTiA9IDI0 TUh6ICovCj4gKwkJcGFyYW0gPSAweDkzMDAyNDAwOwo+ICsJfQo+ICsJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUyMDIwLCBwYXJhbSk7Cj4gKwl1ZGVsYXkoMTAwKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgcmVzZXRfbW1jXzI1MDAoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCj4gK3sKPiArCWFz dF9tb3V0ZHdtKGFzdCwgMHgxRTc4NTA1QywweDAwMDAwMDA0KTsKPiArCWFzdF9tb3V0ZHdtKGFz dCwgMHgxRTc4NTA0NCwweDAwMDAwMDAxKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTc4NTA0 OCwweDAwMDA0NzU1KTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTc4NTA0QywweDAwMDAwMDEz KTsKPiArCW1kZWxheSgxMDApOwkJCQkJLyogZGVsYXkKPiAxMDBtcyAqLwo+ICsJYXN0X21vdXRk d20oYXN0LCAweDFFNzg1MDU0LDB4MDAwMDAwNzcpOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMDAwLDB4RkM2MDAzMDkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkZHIzX2luaXRfMjUw MChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyICpkZHJfdGFibGUpCj4gK3sKPiArCj4gKwlh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQsMHgwMDAwMDMwMyk7Cj4gKwlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwMTAsZGRyX3RhYmxlW1JFR0lEWF8wMTBdKTsKPiArCWFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDAxNCxkZHJfdGFibGVbUkVHSURYXzAxNF0pOwo+ICsJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMDE4LGRkcl90YWJsZVtSRUdJRFhfMDE4XSk7Cj4gKwlhc3RfbW91dGR3bShhc3Qs Cj4gMHgxRTZFMDAyMCxkZHJfdGFibGVbUkVHSURYXzAyMF0pO8KgwqDCoMKgwqDCoMKgwqDCoMKg LyogTU9ERVJFRzQvNiAqLwo+ICsJYXN0X21vdXRkd20oYXN0LAo+IDB4MUU2RTAwMjQsZGRyX3Rh YmxlW1JFR0lEWF8wMjRdKTvCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE1PREVSRUc1ICovCj4gKwlh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMkMsZGRyX3RhYmxlW1JFR0lEWF8wMkNdIHwKPiAweDEw MCk7wqDCoC8qIE1PREVSRUcwLzIgKi8KPiArCWFzdF9tb3V0ZHdtKGFzdCwKPiAweDFFNkUwMDMw LGRkcl90YWJsZVtSRUdJRFhfMDMwXSk7wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBNT0RFUkVHMS8z ICovCj4gKwo+ICsJLyogRERSIFBIWSBTZXR0aW5nICovCj4gKwlhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyMDAsMHgwMjQ5MkFBRSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMDQsMHgw MDAwMTAwMSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMEMsMHg1NUUwMEIwQik7Cj4g Kwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMTAsMHgyMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAyMTQsZGRyX3RhYmxlW1JFR0lEWF8yMTRdKTsKPiArCWFzdF9tb3V0ZHdt KGFzdCwgMHgxRTZFMDJFMCxkZHJfdGFibGVbUkVHSURYXzJFMF0pOwo+ICsJYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMkU0LGRkcl90YWJsZVtSRUdJRFhfMkU0XSk7Cj4gKwlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAyRTgsZGRyX3RhYmxlW1JFR0lEWF8yRThdKTsKPiArCWFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDJFQyxkZHJfdGFibGVbUkVHSURYXzJFQ10pOwo+ICsJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMkYwLGRkcl90YWJsZVtSRUdJRFhfMkYwXSk7Cj4gKwlhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTAyRjQsZGRyX3RhYmxlW1JFR0lEWF8yRjRdKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDJGOCxkZHJfdGFibGVbUkVHSURYXzJGOF0pOwo+ICsJYXN0X21vdXRkd20oYXN0LCAw eDFFNkUwMjkwLDB4MDAxMDAwMDgpOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkMwLDB4 MDAwMDAwMDYpOwo+ICsKPiArCS8qIENvbnRyb2xsZXIgU2V0dGluZyAqLwo+ICsJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDM0LDB4MDAwMjAwOTEpOwo+ICsKPiArCS8qIFdhaXQgRERSIFBIWSBp bml0IGRvbmUgKi8KPiArCWRkcl9waHlfaW5pdF8yNTAwKGFzdCk7Cj4gKwo+ICsJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMTIwLGRkcl90YWJsZVtSRUdJRFhfUExMXSk7Cj4gKwlhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwMEMsMHg0MkFBNUM4MSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwMzQsMHgwMDAxQUY5Myk7Cj4gKwo+ICsJY2hlY2tfZHJhbV9zaXplXzI1MDAoYXN0LCBkZHJf dGFibGVbUkVHSURYX1JGQ10pOwo+ICsJZW5hYmxlX2NhY2hlXzI1MDAoYXN0KTsKPiArCWFzdF9t b3V0ZHdtKGFzdCwgMHgxRTZFMDAxQywweDAwMDAwMDA4KTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDAzOCwweEZGRkZGRjAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGRyNF9pbml0 XzI1MDAoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiAqZGRyX3RhYmxlKQo+ICt7Cj4gKwl1 MzIgZGF0YSwgZGF0YTIsIHBhc3MsIHJldHJ5Y250Owo+ICsJdTMyIGRkcl92cmVmLCBwaHlfdnJl ZjsKPiArCXUzMiBtaW5fZGRyX3ZyZWY9MCwgbWluX3BoeV92cmVmPTA7Cj4gKwl1MzIgbWF4X2Rk cl92cmVmPTAsIG1heF9waHlfdnJlZj0wOwo+ICsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDAwNCwweDAwMDAwMzEzKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxMCxkZHJfdGFi bGVbUkVHSURYXzAxMF0pOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE0LGRkcl90YWJs ZVtSRUdJRFhfMDE0XSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMTgsZGRyX3RhYmxl W1JFR0lEWF8wMThdKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwKPiAweDFFNkUwMDIwLGRkcl90YWJs ZVtSRUdJRFhfMDIwXSk7wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBNT0RFUkVHNC82ICovCj4gKwlh c3RfbW91dGR3bShhc3QsCj4gMHgxRTZFMDAyNCxkZHJfdGFibGVbUkVHSURYXzAyNF0pO8KgwqDC oMKgwqDCoMKgwqDCoMKgLyogTU9ERVJFRzUgKi8KPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDAyQyxkZHJfdGFibGVbUkVHSURYXzAyQ10gfAo+IDB4MTAwKTvCoMKgLyogTU9ERVJFRzAvMiAq Lwo+ICsJYXN0X21vdXRkd20oYXN0LAo+IDB4MUU2RTAwMzAsZGRyX3RhYmxlW1JFR0lEWF8wMzBd KTvCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE1PREVSRUcxLzMgKi8KPiArCj4gKwkvKiBERFIgUEhZ IFNldHRpbmcgKi8KPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwMCwweDQyNDkyQUFFKTsK PiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwNCwweDA5MDAyMDAwKTsKPiArCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMDIwQywweDU1RTAwQjBCKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDIxMCwweDIwMDAwMDAwKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIxNCxkZHJf dGFibGVbUkVHSURYXzIxNF0pOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkUwLGRkcl90 YWJsZVtSRUdJRFhfMkUwXSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRTQsZGRyX3Rh YmxlW1JFR0lEWF8yRTRdKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJFOCxkZHJfdGFi bGVbUkVHSURYXzJFOF0pOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkVDLGRkcl90YWJs ZVtSRUdJRFhfMkVDXSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjAsZGRyX3RhYmxl W1JFR0lEWF8yRjBdKTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGNCxkZHJfdGFibGVb UkVHSURYXzJGNF0pOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY4LGRkcl90YWJsZVtS RUdJRFhfMkY4XSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyOTAsMHgwMDEwMDAwOCk7 Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQzQsMHgzQzE4M0MzQyk7Cj4gKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAyQzgsMHgwMDYzMUUwRSk7Cj4gKwo+ICsJLyogQ29udHJvbGxlciBT ZXR0aW5nICovCj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAxQTk5MSk7Cj4g Kwo+ICsJLyogVHJhaW4gUEhZIFZyZWYgZmlyc3QgKi8KPiArCXBhc3MgPSAwOwo+ICsKPiArCWZv ciAocmV0cnljbnQgPSAwO3JldHJ5Y250IDwgNCAmJiBwYXNzID09IDA7cmV0cnljbnQrKykgewo+ ICsJCW1heF9waHlfdnJlZiA9IDB4MDsKPiArCQlwYXNzID0gMDsKPiArCQlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAyQzAsMHgwMDAwMUMwNik7Cj4gKwkJZm9yIChwaHlfdnJlZiA9IDB4NDA7cGh5 X3ZyZWYgPCAweDgwO3BoeV92cmVmKyspIHsKPiArCQkJYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MDBDLDB4MDAwMDAwMDApOwo+ICsJCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNjAsMHgwMDAw MDAwMCk7Cj4gKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDQyxwaHlfdnJlZiB8Cj4gKHBo eV92cmVmIDw8IDgpKTsKPiArCQkJLyogRmlyZSBERkkgSW5pdCAqLwo+ICsJCQlkZHJfcGh5X2lu aXRfMjUwMChhc3QpOwo+ICsJCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwNUMw MSk7Cj4gKwkJCWlmIChjYnJfdGVzdF8yNTAwKGFzdCkpIHsKPiArCQkJCXBhc3MrKzsKPiArCQkJ CWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDNEMCk7Cj4gKwkJCQlkYXRhMiA9IGRhdGEg Pj4gODsKPiArCQkJCWRhdGHCoMKgPSBkYXRhICYgMHhmZjsKPiArCQkJCWlmIChkYXRhID4gZGF0 YTIpCj4gKwkJCQkJZGF0YSA9IGRhdGEyOwo+ICsJCQkJaWYgKG1heF9waHlfdnJlZiA8IGRhdGEp IHsKPiArCQkJCQltYXhfcGh5X3ZyZWYgPSBkYXRhOwo+ICsJCQkJCW1pbl9waHlfdnJlZiA9IHBo eV92cmVmOwo+ICsJCQkJfQo+ICsJCQl9IGVsc2UgaWYgKHBhc3MgPiAwKQo+ICsJCQkJYnJlYWs7 Cj4gKwkJfQo+ICsJfQo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkNDLG1pbl9waHlfdnJl ZiB8IChtaW5fcGh5X3ZyZWYgPDwKPiA4KSk7Cj4gKwo+ICsJLyogVHJhaW4gRERSIFZyZWYgbmV4 dCAqLwo+ICsJcGFzcyA9IDA7Cj4gKwo+ICsJZm9yIChyZXRyeWNudCA9IDA7cmV0cnljbnQgPCA0 ICYmIHBhc3MgPT0gMDtyZXRyeWNudCsrKSB7Cj4gKwkJbWluX2Rkcl92cmVmID0gMHhGRjsKPiAr CQltYXhfZGRyX3ZyZWYgPSAweDA7Cj4gKwkJcGFzcyA9IDA7Cj4gKwkJZm9yIChkZHJfdnJlZiA9 IDB4MDA7ZGRyX3ZyZWYgPCAweDQwO2Rkcl92cmVmKyspIHsKPiArCQkJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMDBDLDB4MDAwMDAwMDApOwo+ICsJCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAw NjAsMHgwMDAwMDAwMCk7Cj4gKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAw MDA2IHwKPiAoZGRyX3ZyZWYgPDwgOCkpOwo+ICsJCQkvKiBGaXJlIERGSSBJbml0ICovCj4gKwkJ CWRkcl9waHlfaW5pdF8yNTAwKGFzdCk7Cj4gKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAw QywweDAwMDA1QzAxKTsKPiArCQkJaWYgKGNicl90ZXN0XzI1MDAoYXN0KSkgewo+ICsJCQkJcGFz cysrOwo+ICsJCQkJaWYgKG1pbl9kZHJfdnJlZiA+IGRkcl92cmVmKQo+ICsJCQkJCW1pbl9kZHJf dnJlZiA9IGRkcl92cmVmOwo+ICsJCQkJaWYgKG1heF9kZHJfdnJlZiA8IGRkcl92cmVmKQo+ICsJ CQkJCW1heF9kZHJfdnJlZiA9IGRkcl92cmVmOwo+ICsJCQl9IGVsc2UgaWYgKHBhc3MgIT0gMCkK PiArCQkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwMEMsMHgwMDAwMDAwMCk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNjAsMHgwMDAw MDAwMCk7Cj4gKwlkZHJfdnJlZiA9IChtaW5fZGRyX3ZyZWYgKyBtYXhfZGRyX3ZyZWYgKyAxKSA+ PiAxOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkMwLDB4MDAwMDAwMDYgfCAoZGRyX3Zy ZWYgPDwgOCkpOwo+ICsKPiArCS8qIFdhaXQgRERSIFBIWSBpbml0IGRvbmUgKi8KPiArCWRkcl9w aHlfaW5pdF8yNTAwKGFzdCk7Cj4gKwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMTIwLGRk cl90YWJsZVtSRUdJRFhfUExMXSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHg0 MkFBNUM4MSk7Cj4gKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAxQUY5Myk7Cj4g Kwo+ICsJY2hlY2tfZHJhbV9zaXplXzI1MDAoYXN0LCBkZHJfdGFibGVbUkVHSURYX1JGQ10pOwo+ ICsJZW5hYmxlX2NhY2hlXzI1MDAoYXN0KTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAx QywweDAwMDAwMDA4KTsKPiArCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzOCwweEZGRkZGRjAw KTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgYXN0X2RyYW1faW5pdF8yNTAwKHN0cnVjdCBhc3Rf cHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKwl1MzIgZGF0YTsKPiArCXUzMiBtYXhfdHJpZXMgPSA1Owo+ ICsKPiArCWRvIHsKPiArCQlpZiAobWF4X3RyaWVzLS0gPT0gMCkKPiArCQkJcmV0dXJuIGZhbHNl Owo+ICsJCXNldF9tcGxsXzI1MDAoYXN0KTsKPiArCQlyZXNldF9tbWNfMjUwMChhc3QpOwo+ICsJ CWRkcl9pbml0X2NvbW1vbl8yNTAwKGFzdCk7Cj4gKwo+ICsJCWRhdGEgPSBhc3RfbWluZHdtKGFz dCwgMHgxRTZFMjA3MCk7Cj4gKwkJaWYgKGRhdGEgJiAweDAxMDAwMDAwKQo+ICsJCQlkZHI0X2lu aXRfMjUwMChhc3QsCj4gYXN0MjUwMF9kZHI0XzE2MDBfdGltaW5nX3RhYmxlKTsKPiArCQllbHNl Cj4gKwkJCWRkcjNfaW5pdF8yNTAwKGFzdCwKPiBhc3QyNTAwX2RkcjNfMTYwMF90aW1pbmdfdGFi bGUpOwo+ICsJfSB3aGlsZSAoIWRkcl90ZXN0XzI1MDAoYXN0KSk7Cj4gKwo+ICsJYXN0X21vdXRk d20oYXN0LCAweDFFNkUyMDQwLCBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMjA0MCkgfAo+IDB4NDEp Owo+ICsKPiArCS8qIFBhdGNoIGNvZGUgKi8KPiArCWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgx RTZFMjAwQykgJiAweEY5RkZGRkZGOwo+ICsJYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDBDLCBk YXRhIHwgMHgxMDAwMDAwMCk7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3ZvaWQg YXN0X3Bvc3RfY2hpcF8yNTAwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVj dCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXUzMiB0ZW1wOwo+ICsJ dTggcmVnOwo+ICsKPiArCXJlZyA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweGQwLAo+IDB4ZmYpOwo+ICsJaWYgKChyZWcgJiAweDgwKSA9PSAwKSB7Lyog dmdhIG9ubHkgKi8KPiArwqDCoAkJLyogQ2xlYXIgYnVzIGxvY2sgY29uZGl0aW9uICovCj4gK8Kg wqAJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTYwMDAwMCwweEFFRUQxQTAzKTsKPiArCQlhc3RfbW91 dGR3bShhc3QsIDB4MWU2MDAwODQsMHgwMDAxMDAwMCk7Cj4gKwkJYXN0X21vdXRkd20oYXN0LCAw eDFlNjAwMDg4LDB4MDAwMDAwMDApOwo+ICsJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMjAwMCww eDE2ODhBOEE4KTsKPiArCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwNCwgMHgxZTZlMDAwMCk7Cj4g KwkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7Cj4gKwkJYXN0X3dyaXRlMzIoYXN0LCAw eDEyMDAwLCAweDE2ODhhOGE4KTsKPiArCQl3aGlsZSAoYXN0X3JlYWQzMihhc3QsIDB4MTIwMDAp ICE9IDB4MSkKPiArCQkJOwo+ICsKPiArCQlhc3Rfd3JpdGUzMihhc3QsIDB4MTAwMDAsIDB4ZmM2 MDAzMDkpOwo+ICsJCXdoaWxlIChhc3RfcmVhZDMyKGFzdCwgMHgxMDAwMCkgIT0gMHgxKQo+ICsJ CQk7Cj4gKwo+ICsJCS8qIFNsb3cgZG93biBDUFUvQUhCIENMSyBpbiBWR0Egb25seSBtb2RlICov Cj4gKwkJdGVtcCA9IGFzdF9yZWFkMzIoYXN0LCAweDEyMDA4KTsKPiArCQl0ZW1wIHw9IDB4NzM7 Cj4gKwkJYXN0X3dyaXRlMzIoYXN0LCAweDEyMDA4LCB0ZW1wKTsKPiArCj4gKwkJLyogUmVzZXQg VVNCIHBvcnQgdG8gcGF0Y2ggVVNCIHVua25vd24gZGV2aWNlIGlzc3VlCj4gKi8KPiArwqAJwqAJ YXN0X21vdXRkd20oYXN0LCAweDFlNmUyMDkwLCAweDIwMDAwMDAwKTsKPiArCQl0ZW1wwqDCoD0g YXN0X21pbmR3bShhc3QsIDB4MWU2ZTIwOTQpOwo+ICsJCXRlbXAgfD0gMHgwMDAwNDAwMDsKPiAr CQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIwOTQsIHRlbXApOwo+ICsJCXRlbXDCoMKgPSBhc3Rf bWluZHdtKGFzdCwgMHgxZTZlMjA3MCk7Cj4gKwkJaWYgKHRlbXAgJiAweDAwODAwMDAwKSB7Cj4g KwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMjA3YywgMHgwMDgwMDAwMCk7Cj4gKwkJCW1kZWxh eSgxMDApOwo+ICsJCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIwNzAsIDB4MDA4MDAwMDApOwo+ ICsJCX0KPiArCj4gKwkJaWYgKCFhc3RfZHJhbV9pbml0XzI1MDAoYXN0KSkgewo+ICsJCQlEUk1f RVJST1IoIkRSQU0gaW5pdCBmYWlsZWQgIVxuIik7Cj4gKwkJfQo+ICsKPiArCQl0ZW1wID0gYXN0 X21pbmR3bShhc3QsIDB4MWU2ZTIwNDApOwo+ICsJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMjA0 MCwgdGVtcCB8IDB4NDApOwo+ICsJfQo+ICsKPiArCS8qIHdhaXQgcmVhZHkgKi8KPiArCWRvIHsK PiArCQlyZWcgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwK PiAweGQwLCAweGZmKTsKPiArCX0gd2hpbGUgKChyZWcgJiAweDQwKSA9PSAwKTsKPiArfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90YWJsZXMuaAo+IGIvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKPiBpbmRleCAzNjA4ZDVhLi4yNGRhNGMyIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3RhYmxlcy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKPiBAQCAtNDcsNiArNDcsNyBAQAo+IMKgI2RlZmluZSBT eW5jUE4JCQkoUFZTeW5jIHwgTkhTeW5jKQo+IMKgI2RlZmluZSBTeW5jTlAJCQkoTlZTeW5jIHwg UEhTeW5jKQo+IMKgI2RlZmluZSBTeW5jTk4JCQkoTlZTeW5jIHwgTkhTeW5jKQo+ICsjZGVmaW5l IEFTVDI1MDBQcmVDYXRjaENSVAkJMHgwMDAwNDAwMAo+IMKgCj4gwqAvKiBEQ0xLIEluZGV4ICov Cj4gwqAjZGVmaW5lIFZDTEsyNV8xNzXCoMKgwqDCoMKgCQkweDAwCj4gQEAgLTEwOCw2ICsxMDks MzYgQEAgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZGNsa19pbmZvIGRjbGtfdGFibGVbXSA9Cj4g ewo+IMKgCXsweDNiLCAweDJjLCAweDgxfSwJCQkJCS8KPiAqIDFBOiBWQ0xLMTE4XzI1CSovCj4g wqB9Owo+IMKgCj4gK3N0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2RjbGtfaW5mbyBkY2xrX3RhYmxl X2FzdDI1MDBbXSA9IHsKPiArCXsweDJDLCAweEU3LCAweDAzfSwJCQkJCS8KPiAqIDAwOiBWQ0xL MjVfMTc1CSovCj4gKwl7MHg5NSwgMHg2MiwgMHgwM30sCQkJCcKgwqDCoMKgwqDCoMKgwqAvCj4g KiAwMTogVkNMSzI4XzMyMgkqLwo+ICsJezB4NjcsIDB4NjMsIDB4MDF9LAkJCQnCoMKgwqDCoMKg wqDCoMKgLwo+ICogMDI6IFZDTEszMV81wqDCoMKgwqDCoMKgwqDCoMKgKi8KPiArCXsweDc2LCAw eDYzLCAweDAxfSwJCQkJwqDCoMKgwqDCoMKgwqDCoC8KPiAqIDAzOiBWQ0xLMzbCoMKgwqDCoMKg wqDCoMKgwqAJKi8KPiArCXsweEVFLCAweDY3LCAweDAxfSwJCQkJwqDCoMKgwqDCoMKgwqDCoC8K PiAqIDA0OiBWQ0xLNDDCoMKgwqDCoMKgwqDCoMKgwqDCoAkqLwo+ICsJezB4ODIsIDB4NjIsIDB4 MDF9LMKgCQkJwqDCoMKgwqDCoMKgwqDCoC8qIDA1Ogo+IFZDTEs0OV81wqDCoMKgwqDCoMKgwqDC oAkqLwo+ICsJezB4QzYsIDB4NjQsIDB4MDF9LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoAnCoMKgwqDCoMKgwqDCoMKgLwo+ICogMDY6IFZDTEs1MMKgwqDC oMKgwqDCoMKgwqDCoMKgCSovCj4gKwl7MHg5NCwgMHg2MiwgMHgwMX0swqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCcKgwqDCoMKgwqDCoMKgwqAvCj4gKiAw NzogVkNMSzU2XzI1wqDCoMKgwqDCoMKgwqAJKi8KPiArCXsweDgwLCAweDY0LCAweDAwfSzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAJwqDCoMKgwqDCoMKg wqDCoC8KPiAqIDA4OiBWQ0xLNjUJCSovCj4gKwl7MHg3QiwgMHg2MywgMHgwMH0swqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCcKgwqDCoMKgwqDCoMKgwqAv Cj4gKiAwOTogVkNMSzc1CcKgwqDCoMKgwqDCoMKgwqAqLwo+ICsJezB4NjcsIDB4NjIsIDB4MDB9 LAkJCQnCoMKgwqDCoMKgwqDCoMKgLwo+ICogMEE6IFZDTEs3OF83NcKgwqDCoMKgwqDCoMKgCSov Cj4gKwl7MHg3QywgMHg2MiwgMHgwMH0swqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgCcKgwqDCoMKgwqDCoMKgwqAvCj4gKiAwQjogVkNMSzk0XzXCoMKgwqDC oMKgwqDCoMKgCSovCj4gKwl7MHg4RSwgMHg2MiwgMHgwMH0swqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCcKgwqDCoMKgwqDCoMKgwqAvCj4gKiAwQzogVkNM SzEwOMKgwqDCoMKgwqDCoMKgwqDCoAkqLwo+ICsJezB4ODUsIDB4MjQsIDB4MDB9LMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAnCoMKgwqDCoMKgwqDCoMKg Lwo+ICogMEQ6IFZDTEsxMzXCoMKgwqDCoMKgwqDCoMKgwqAJKi8KPiArCXsweDY3LCAweDIyLCAw eDAwfSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAJwqDC oMKgwqDCoMKgwqDCoC8KPiAqIDBFOiBWQ0xLMTU3XzXCoMKgwqDCoMKgwqDCoAkqLwo+ICsJezB4 NkEsIDB4MjIsIDB4MDB9LAkJCQnCoMKgwqDCoMKgwqDCoMKgLwo+ICogMEY6IFZDTEsxNjLCoMKg wqDCoMKgwqDCoMKgwqAJKi8KPiArCXsweDRkLCAweDRjLCAweDgwfSwJCQkJwqDCoMKgwqDCoMKg wqDCoC8KPiAqIDEwOiBWQ0xLMTU0wqDCoMKgwqDCoMKgCSovCj4gKwl7MHhhNywgMHg3OCwgMHg4 MH0sCQkJCQkvCj4gKiAxMTogVkNMSzgzLjXCoMKgwqDCoMKgwqDCoMKgwqAqLwo+ICsJezB4Mjgs IDB4NDksIDB4ODB9LAkJCQkJLwo+ICogMTI6IFZDTEsxMDYuNcKgwqDCoMKgwqDCoMKgwqAqLwo+ ICsJezB4MzcsIDB4NDksIDB4ODB9LAkJCQkJLwo+ICogMTM6IFZDTEsxNDYuMjXCoMKgwqDCoMKg wqDCoCovCj4gKwl7MHgxZiwgMHg0NSwgMHg4MH0sCQkJCQkvCj4gKiAxNDogVkNMSzE0OC41wqDC oMKgwqDCoMKgwqDCoCovCj4gKwl7MHg0NywgMHg2YywgMHg4MH0sCQkJCQkvCj4gKiAxNTogVkNM SzcxwqDCoMKgwqDCoMKgwqAqLwo+ICsJezB4MjUsIDB4NjUsIDB4ODB9LAkJCQkJLwo+ICogMTY6 IFZDTEs4OC43NcKgwqDCoMKgKi8KPiArCXsweDU4LCAweDAxLCAweDQyfSwJCQkJCS8KPiAqIDE3 OiBWQ0xLMTE5wqDCoMKgwqDCoMKgKi8KPiArCXsweDMyLCAweDY3LCAweDgwfSwJCQkJwqDCoMKg wqAvKgo+IDE4OiBWQ0xLODVfNcKgwqDCoMKgwqAqLwo+ICsJezB4NmEsIDB4NmQsIDB4ODB9LAkJ CQkJLwo+ICogMTk6IFZDTEs5N183NQkqLwo+ICsJezB4NDQsIDB4MjAsIDB4NDN9LAkJCQkJLwo+ ICogMUE6IFZDTEsxMThfMjUJKi8KPiArfTsKPiArCj4gwqBzdGF0aWMgc3RydWN0IGFzdF92Ymlv c19zdGR0YWJsZSB2Ymlvc19zdGR0YWJsZVtdID0gewo+IMKgCS8qIE1EXzJfM180MDAgKi8KPiDC oAl7Cj4gQEAgLTI0NCwzMiArMjc1LDMyIEBAIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRh YmxlCj4gcmVzXzE2MDB4MTIwMFtdID0gewo+IMKgLyogMTY6OSAqLwo+IMKgc3RhdGljIHN0cnVj dCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzEzNjB4NzY4W10gPSB7Cj4gwqAJezE3OTIsIDEzNjAs IDY0LDExMiwgNzk1LMKgwqA3NjgsIDMsIDYsIFZDTEs4NV81LAnCoMKgwqDCoMKgCj4gwqDCoMKg wqAvKiA2MEh6ICovCj4gLQnCoChTeW5jUFAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8 IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM5IH0sCj4gKwnCoChT eW5jUFAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBO ZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM5IH0sCj4gwqAJezE3 OTIsIDEzNjAsIDY0LDExMiwgNzk1LMKgwqA3NjgsIDMsIDYsIFZDTEs4NV81LAnCoMKgwqDCoMKg Cj4gwqDCoMKgwqAvKiBlbmQgKi8KPiDCoAnCoChTeW5jUFAgfCBDaGFyeDhEb3QgfCBMaW5lQ29t cGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDB4RkYsIDEsIDB4Mzkg fSwKPiDCoH07Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18x NjAweDkwMFtdID0gewo+IMKgCXsxNzYwLCAxNjAwLCA0OCwgMzIsIDkyNizCoMKgOTAwLCAzLCA1 LCBWQ0xLOTdfNzUsCS8qCj4gNjBIeiBDVlQgUkIgKi8KPiAtCcKgKFN5bmNOUCB8IENoYXJ4OERv dCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfAo+IE5ld01vZGVJbmZvKSwgNjAs IDEsIDB4M0EgfSwKPiAtCXsyMTEyLCAxNjAwLCA4OCwxNjgsIDkzNCzCoMKgOTAwLCAzLCA1LCBW Q0xLMTE4XzI1LAkvKgo+IDYwSHogQ1ZUICovCj4gLQnCoChTeW5jUE4gfCBDaGFyeDhEb3QgfCBM aW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYwLCAyLCAw eDNBIH0sCj4gLQl7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQswqDCoDkwMCwgMywgNSwgVkNMSzEx OF8yNSwJLyoKPiA2MEh6IENWVCAqLwo+IC0JwqAoU3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNv bXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8Cj4gTmV3TW9kZUluZm8pLCAweEZGLCAyLCAweDNB IH0sCj4gKwnCoChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3Jl ZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDNB IH0sCj4gK8KgwqDCoMKgezIxMTIsIDE2MDAsIDg4LDE2OCwgOTM0LMKgwqA5MDAsIDMsIDUsIFZD TEsxMThfMjUsCS8qIDYwSHoKPiBDVlQgKi8KPiArwqDCoMKgwqDCoChTeW5jUE4gfCBDaGFyeDhE b3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYw LCAyLCAweDNBIH0sCj4gK8KgwqDCoMKgezIxMTIsIDE2MDAsIDg4LDE2OCwgOTM0LMKgwqA5MDAs IDMsIDUsIFZDTEsxMThfMjUsCS8qIDYwSHoKPiBDVlQgKi8KPiArwqDCoMKgwqDCoChTeW5jUE4g fCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2Rl SW5mbyksIDB4RkYsIDIsIDB4M0EgfSwKPiDCoH07Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgYXN0 X3ZiaW9zX2VuaHRhYmxlIHJlc18xOTIweDEwODBbXSA9IHsKPiDCoAl7MjIwMCwgMTkyMCwgODgs IDQ0LCAxMTI1LCAxMDgwLCA0LCA1LCBWQ0xLMTQ4XzUsCS8qCj4gNjBIeiAqLwo+IC0JwqAoU3lu Y05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8Cj4gTmV3 TW9kZUluZm8pLCA2MCwgMSwgMHgzOCB9LAo+ICsJwqAoU3luY05QIHwgQ2hhcng4RG90IHwgTGlu ZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8Cj4gTmV3TW9kZUluZm8gfCBBU1QyNTAwUHJl Q2F0Y2hDUlQpLCA2MCwgMSwgMHgzOCB9LAo+IMKgCXsyMjAwLCAxOTIwLCA4OCwgNDQsIDExMjUs IDEwODAsIDQsIDUsIFZDTEsxNDhfNSwJLyoKPiA2MEh6ICovCj4gLQnCoChTeW5jTlAgfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyks IDB4RkYsIDEsIDB4MzggfSwKPiArCcKgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJl T2ZmIHwgV2lkZVNjcmVlbk1vZGUgfAo+IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JU KSwgMHhGRiwgMSwgMHgzOCB9LAo+IMKgfTsKPiDCoAo+IMKgCj4gwqAvKiAxNjoxMCAqLwo+IMKg c3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzEyODB4ODAwW10gPSB7Cj4gwqAJ ezE0NDAsIDEyODAsIDQ4LCAzMizCoMKgODIzLMKgwqA4MDAsIDMsIDYsIFZDTEs3MSwJLyoKPiA2 MEh6IFJCICovCj4gLQnCoChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdp ZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM1IH0sCj4gKwnCoChTeW5j TlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdN b2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM1IH0sCj4gwqAJezE2ODAs IDEyODAsIDcyLDEyOCzCoMKgODMxLMKgwqA4MDAsIDMsIDYsIFZDTEs4M181LAkvKgo+IDYwSHog Ki8KPiDCoAnCoChTeW5jUE4gfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3Jl ZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYwLCAyLCAweDM1IH0sCj4gwqAJezE2ODAsIDEyODAs IDcyLDEyOCzCoMKgODMxLMKgwqA4MDAsIDMsIDYsIFZDTEs4M181LAkvKgo+IDYwSHogKi8KPiBA QCAtMjc5LDcgKzMxMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18x MjgweDgwMFtdID0KPiB7Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxl IHJlc18xNDQweDkwMFtdID0gewo+IMKgCXsxNjAwLCAxNDQwLCA0OCwgMzIswqDCoDkyNizCoMKg OTAwLCAzLCA2LCBWQ0xLODhfNzUsCS8qCj4gNjBIeiBSQiAqLwo+IC0JwqAoU3luY05QIHwgQ2hh cng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8Cj4gTmV3TW9kZUluZm8p LCA2MCwgMSwgMHgzNiB9LAo+ICsJwqAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVP ZmYgfCBXaWRlU2NyZWVuTW9kZSB8Cj4gTmV3TW9kZUluZm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQp LCA2MCwgMSwgMHgzNiB9LAo+IMKgCXsxOTA0LCAxNDQwLCA4MCwxNTIswqDCoDkzNCzCoMKgOTAw LCAzLCA2LCBWQ0xLMTA2XzUsCS8qCj4gNjBIeiAqLwo+IMKgCcKgKFN5bmNQTiB8IENoYXJ4OERv dCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfAo+IE5ld01vZGVJbmZvKSwgNjAs IDIsIDB4MzYgfSwKPiDCoAl7MTkwNCwgMTQ0MCwgODAsMTUyLMKgwqA5MzQswqDCoDkwMCwgMywg NiwgVkNMSzEwNl81LAkvKgo+IDYwSHogKi8KPiBAQCAtMjg4LDcgKzMxOSw3IEBAIHN0YXRpYyBz dHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xNDQweDkwMFtdID0KPiB7Cj4gwqAKPiDCoHN0 YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xNjgweDEwNTBbXSA9IHsKPiDCoAl7 MTg0MCwgMTY4MCwgNDgsIDMyLCAxMDgwLCAxMDUwLCAzLCA2LCBWQ0xLMTE5LAkvKgo+IDYwSHog UkIgKi8KPiAtCcKgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNj cmVlbk1vZGUgfAo+IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzcgfSwKPiArCcKgKFN5bmNOUCB8 IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfAo+IE5ld01vZGVJ bmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgNjAsIDEsIDB4MzcgfSwKPiDCoAl7MjI0MCwgMTY4 MCwxMDQsMTc2LCAxMDg5LCAxMDUwLCAzLCA2LCBWQ0xLMTQ2XzI1LAkvKgo+IDYwSHogKi8KPiDC oAnCoChTeW5jUE4gfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2Rl IHwKPiBOZXdNb2RlSW5mbyksIDYwLCAyLCAweDM3IH0sCj4gwqAJezIyNDAsIDE2ODAsMTA0LDE3 NiwgMTA4OSwgMTA1MCwgMywgNiwgVkNMSzE0Nl8yNSwJLyoKPiA2MEh6ICovCj4gQEAgLTI5Nyw5 ICszMjgsOSBAQCBzdGF0aWMgc3RydWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTY4MHgxMDUw W10KPiA9IHsKPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzE5 MjB4MTIwMFtdID0gewo+IMKgCXsyMDgwLCAxOTIwLCA0OCwgMzIsIDEyMzUsIDEyMDAsIDMsIDYs IFZDTEsxNTQsCS8qCj4gNjBIeiBSQiovCj4gLQnCoChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5l Q29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM0 IH0sCj4gKwnCoChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3Jl ZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM0 IH0sCj4gwqAJezIwODAsIDE5MjAsIDQ4LCAzMiwgMTIzNSwgMTIwMCwgMywgNiwgVkNMSzE1NCwJ LyoKPiA2MEh6IFJCICovCj4gLQnCoChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9m ZiB8IFdpZGVTY3JlZW5Nb2RlIHwKPiBOZXdNb2RlSW5mbyksIDB4RkYsIDEsIDB4MzQgfSwKPiAr CcKgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUg fAo+IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgMHhGRiwgMSwgMHgzNCB9LAo+ IMKgfTsKPiDCoAo+IMKgI2VuZGlmCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=