From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v6 16/28] drm/i915/dsc: Define & Compute VESA DSC params Date: Wed, 24 Oct 2018 15:28:28 -0700 Message-ID: <20181024222840.25683-17-manasi.d.navare@intel.com> References: <20181024222840.25683-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181024222840.25683-1-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Manasi Navare , Anusha Srivatsa , Gaurav K Singh List-Id: intel-gfx@lists.freedesktop.org RnJvbTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KClRoaXMgcGF0 Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6CgoxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKRFNDIHNwZWNpZmljYXRpb24uIFRoZXNlIGFy ZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKdG8gY29tcHV0ZSB0aGUgUFBTIHBhcmFt ZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgU2luay4KMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCnN0YXRlIG9mIGludGVsX2NydGNfc3Rh dGUuCjMuIENvbXB1dGUgYWxsIHBhcmFtZXRlcnMgdGhhdCBhcmUgVkVTQSBEU0Mgc3BlY2lmaWMK ClRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmlu Zwpjb21wdXRlX2NvbmZpZygpIHRvIHZhbGlkYXRlIGlmIGRpc3BsYXkgc3RyZWFtIGNvbXByZXNz aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2NzogKEZyb20gTWFu YXNpKQoqIERvbnQgdXNlIHNpZ25lZCBpbnQgZm9yIHJjX3JhbmdlX3BhcmFtcyAoTWFuYXNpKQoq IE1hc2sgdGhlIHJhbmdlX2JwZ19vZmZzZXQgdG8gdXNlIG9ubHkgNiBiaXRzCiogQWRkIFNQRFgg aWRlbnRpZmllciAoQ2hyaXMgV2lsc29uKQp2NiAoRnJvbSBNYW5hc2kpOgoqIEFkZCBhIGNoZWNr IGZvciBsaW5lX2J1Zl9kZXB0aCByZXR1cm4gdmFsdWUgKEFudXNoYSkKKiBSZW1vdmUgRFJNIERT QyBjb25zdGFudHMgdG8gZGlmZmVyZW50IHBhdGNoIChNYW5hc2kpCnY1IChGcm9tIE1hbmFzaSk6 CiogQWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBtYXggbGluZSBidWYgZGVwdGggZm9yIERTQyAxLjEg dG8gMTMKYXMgcGVyIERTQyAxLjEgc3BlYwoqIEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9j aGVja3MKCnY0IChGcm9tIEdhdXJhdik6CiogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCiogcmVu YW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQoqIFBvcHVsYXRlIGxpbmVidWZfZGVwdGggdmFyaWFi bGUoTWFuYXNpKQoKdjMgKEZyb20gR2F1cmF2KToKKiBSZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hl cyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0IHBhdGNoCnNlcmllcwoqIFVzaW5nID4+biByYXRo ZXIgdGhhbiAvMl5uIChNYW5hc2kpCiogQ2hhbmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBs YWluIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nKEdhdXJhdikKCkZpeGVkIHJldmlldyBjb21tZW50 cyBmcm9tIFZpbGxlOgoqIERvbid0IHVzZSBtYWNybyBUV09TX0NPTVBMRU1FTlQKKiBNZW50aW9u IGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJjZSBvZiBSQyBwYXJhbXMKKiBSZXR1cm4gZGlyZWN0 bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKKiBVc2luZyBzaW5nbGUgYXNzc2lnbm1lbnQgZm9yIGFz c2lnbmluZyByY19yYW5nZV9wYXJhbXMKKiBVc2luZyA8PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQg cmVtb3ZpbmcgdGhlIGNvbW1lbnRzCmFib3V0IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCgp2MiAo RnJvbSBNYW5hc2kpOgoqIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRl ciB0aGUgZHBjZCB2YWx1ZQphbmQgd2hhdCBzdXBwb3J0ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCiog VXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBpbnN0ZWFkIG9mIGludGVsX2RwIHN0cnVjdAoqIE1v dmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBoZWFkZXIgZmlsZQoqIFVzZSB1MTYsIHU4 IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5vdCBuZWVkZWQKKiAqIENvbXB1dGUgdGhlIERTQyBw YXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNvbXB1dGUgY29uZmlnCnNpbmNlIHRoZSBjb21wdXRh dGlvbiBjYW4gZmFpbCAoTWFuYXNpKQoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KQ2M6 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CkNvLWRldmVsb3BlZC1i eTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg fCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIHwgNDU1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAg IHwgICAzICsKIDUgZmlsZXMgY2hhbmdlZCwgNDcxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDI4YzdkNzg4NGU4OC4uYTUxYTlhZTBmNDk2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMTU2LDcgKzE1Niw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3 Lm8gXAogCSAgaW50ZWxfc2R2by5vIFwKIAkgIGludGVsX3R2Lm8gXAogCSAgdmx2X2RzaS5vIFwK LQkgIHZsdl9kc2lfcGxsLm8KKwkgIHZsdl9kc2lfcGxsLm8gXAorCSAgaW50ZWxfdmRzYy5vCiAK ICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRlIGNhcHR1cmUKIGk5MTUtJChD T05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikgKz0gaTkxNV9ncHVfZXJyb3IubwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKaW5kZXggYTg4ZjkzNzFkZDMyLi4zNTE2MmMzYmM4MTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwpAQCAtMjEwMyw2ICsyMTAzLDEzIEBAIHN0YXRpYyBib29sIGludGVs X2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJcmV0 dXJuIGZhbHNlOwogCQl9CiAJfQorCWlmIChpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50 ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsKKwkJRFJNX0VSUk9SKCJDYW5ub3QgY29tcHV0ZSB2 YWxpZCBEU0MgcGFyYW1ldGVycyBmb3IgSW5wdXQgQnBwID0gJWQiCisJCQkgICJDb21wcmVzc2Vk IEJQUCA9ICVkXG4iLAorCQkJICBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCisJCQkgIHBpcGVfY29u ZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAlw aXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwogCURSTV9E RUJVR19LTVMoIkRQIERTQyBjb21wdXRlZCB3aXRoIElucHV0IEJwcCA9ICVkICIKIAkJICAgICAg IkNvbXByZXNzZWQgQnBwID0gJWQgU2xpY2UgQ291bnQgPSAlZFxuIiwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKaW5kZXggMjdkNDc5NTBmNDM4Li5jNGJlNGJhN2FkYWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCkBAIC0xODQ0LDYgKzE4NDQsMTAgQEAgdWludDE2X3QgaW50ZWxfZHBfZHNj X2dldF9vdXRwdXRfYnBwKGludCBsaW5rX2Nsb2NrLCB1aW50OF90IGxhbmVfY291bnQsCiB1aW50 OF90IGludGVsX2RwX2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgaW50IG1vZGVfY2xvY2ssCiAJCQkJICAgICBpbnQgbW9kZV9oZGlzcGxheSk7CiAKKy8qIGlu dGVsX3Zkc2MuYyAqLworaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAorCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp Zyk7CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGludGVsX2RwX3VudXNlZF9sYW5lX21h c2soaW50IGxhbmVfY291bnQpCiB7CiAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3VudCkgLSAxKSAm IDB4ZjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjM1MWVhN2Q3MWMyMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtMCwwICsxLDQ1NSBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBv cmF0aW9uCisgKgorICogQXV0aG9yOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50 ZWwuY29tPgorICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwu Y29tPgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2Ry bS5oPgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisKK2Vu dW0gUk9XX0lOREVYX0JQUCB7CisJUk9XX0lOREVYXzZCUFAgPSAwLAorCVJPV19JTkRFWF84QlBQ LAorCVJPV19JTkRFWF8xMEJQUCwKKwlST1dfSU5ERVhfMTJCUFAsCisJUk9XX0lOREVYXzE1QlBQ LAorCU1BWF9ST1dfSU5ERVgKK307CisKK2VudW0gQ09MVU1OX0lOREVYX0JQQyB7CisJQ09MVU1O X0lOREVYXzhCUEMgPSAwLAorCUNPTFVNTl9JTkRFWF8xMEJQQywKKwlDT0xVTU5fSU5ERVhfMTJC UEMsCisJQ09MVU1OX0lOREVYXzE0QlBDLAorCUNPTFVNTl9JTkRFWF8xNkJQQywKKwlNQVhfQ09M VU1OX0lOREVYCit9OworCisjZGVmaW5lIERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4JCTEKKwor LyogRnJvbSBEU0NfdjEuMTEgc3BlYywgcmNfcGFyYW1ldGVyX1NldCBzeW50YXggZWxlbWVudCB0 eXBpY2FsbHkgY29uc3RhbnQgKi8KK3N0YXRpYyB1MTYgcmNfYnVmX3RocmVzaFtdID0geworCTg5 NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcyMCwgNzE2OCwgNzYxNiwK Kwk3NzQ0LCA3ODcyLCA4MDAwLCA4MDY0Cit9OworCitzdHJ1Y3QgcmNfcGFyYW1ldGVycyB7CisJ dTE2IGluaXRpYWxfeG1pdF9kZWxheTsKKwl1OCBmaXJzdF9saW5lX2JwZ19vZmZzZXQ7CisJdTE2 IGluaXRpYWxfb2Zmc2V0OworCXU4IGZsYXRuZXNzX21pbl9xcDsKKwl1OCBmbGF0bmVzc19tYXhf cXA7CisJdTggcmNfcXVhbnRfaW5jcl9saW1pdDA7CisJdTggcmNfcXVhbnRfaW5jcl9saW1pdDE7 CisJc3RydWN0IGRzY19yY19yYW5nZV9wYXJhbWV0ZXJzIHJjX3JhbmdlX3BhcmFtc1tEU0NfTlVN X0JVRl9SQU5HRVNdOworfTsKKworLyoKKyAqIFNlbGVjdGVkIFJhdGUgQ29udHJvbCBSZWxhdGVk IFBhcmFtZXRlciBSZWNvbW1lbmRlZCBWYWx1ZXMKKyAqIGZyb20gRFNDX3YxLjExIHNwZWMgJiBD IE1vZGVsIHJlbGVhc2U6IERTQ19tb2RlbF8yMDE2MTIxMgorICovCitzdGF0aWMgc3RydWN0IHJj X3BhcmFtZXRlcnMgcmNfcGFyYW1zW11bTUFYX0NPTFVNTl9JTkRFWF0gPSB7Cit7CisJLyogNkJQ UC84QlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAzLCAxMywgMTEsIDExLCB7CisJCXsgMCwgNCwg MCB9LCB7IDEsIDYsIC0yIH0sIHsgMywgOCwgLTIgfSwgeyA0LCA4LCAtNCB9LAorCQl7IDUsIDks IC02IH0sIHsgNSwgOSwgLTYgfSwgeyA2LCA5LCAtNiB9LCB7IDYsIDEwLCAtOCB9LAorCQl7IDcs IDExLCAtOCB9LCB7IDgsIDEyLCAtMTAgfSwgeyA5LCAxMiwgLTEwIH0sIHsgMTAsIDEyLCAtMTIg fSwKKwkJeyAxMCwgMTIsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTMsIDE0LCAtMTIgfQor CQl9CisJfSwKKwkvKiA2QlBQLzEwQlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCA3LCAxNywgMTUs IDE1LCB7CisJCXsgMCwgOCwgMCB9LCB7IDMsIDEwLCAtMiB9LCB7IDcsIDEyLCAtMiB9LCB7IDgs IDEyLCAtNCB9LAorCQl7IDksIDEzLCAtNiB9LCB7IDksIDEzLCAtNiB9LCB7IDEwLCAxMywgLTYg fSwgeyAxMCwgMTQsIC04IH0sCisJCXsgMTEsIDE1LCAtOCB9LCB7IDEyLCAxNiwgLTEwIH0sIHsg MTMsIDE2LCAtMTAgfSwKKwkJeyAxNCwgMTYsIC0xMiB9LCB7IDE0LCAxNiwgLTEyIH0sIHsgMTUs IDE2LCAtMTIgfSwKKwkJeyAxNywgMTgsIC0xMiB9CisJCX0KKwl9LAorCS8qIDZCUFAvMTJCUEMg Ki8KKwl7IDc2OCwgMTUsIDYxNDQsIDExLCAyMSwgMTksIDE5LCB7CisJCXsgMCwgMTIsIDAgfSwg eyA1LCAxNCwgLTIgfSwgeyAxMSwgMTYsIC0yIH0sIHsgMTIsIDE2LCAtNCB9LAorCQl7IDEzLCAx NywgLTYgfSwgeyAxMywgMTcsIC02IH0sIHsgMTQsIDE3LCAtNiB9LCB7IDE0LCAxOCwgLTggfSwK KwkJeyAxNSwgMTksIC04IH0sIHsgMTYsIDIwLCAtMTAgfSwgeyAxNywgMjAsIC0xMCB9LAorCQl7 IDE4LCAyMCwgLTEyIH0sIHsgMTgsIDIwLCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAorCQl7IDIx LCAyMiwgLTEyIH0KKwkJfQorCX0sCisJLyogNkJQUC8xNEJQQyAqLworCXsgNzY4LCAxNSwgNjE0 NCwgMTUsIDI1LCAyMywgMjcsIHsKKwkJeyAwLCAxNiwgMCB9LCB7IDcsIDE4LCAtMiB9LCB7IDE1 LCAyMCwgLTIgfSwgeyAxNiwgMjAsIC00IH0sCisJCXsgMTcsIDIxLCAtNiB9LCB7IDE3LCAyMSwg LTYgfSwgeyAxOCwgMjEsIC02IH0sIHsgMTgsIDIyLCAtOCB9LAorCQl7IDE5LCAyMywgLTggfSwg eyAyMCwgMjQsIC0xMCB9LCB7IDIxLCAyNCwgLTEwIH0sCisJCXsgMjIsIDI0LCAtMTIgfSwgeyAy MiwgMjQsIC0xMiB9LCB7IDIzLCAyNCwgLTEyIH0sCisJCXsgMjUsIDI2LCAtMTIgfQorCQl9CisJ fSwKKwkvKiA2QlBQLzE2QlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAxOSwgMjksIDI3LCAyNywg eworCQl7IDAsIDIwLCAwIH0sIHsgOSwgMjIsIC0yIH0sIHsgMTksIDI0LCAtMiB9LCB7IDIwLCAy NCwgLTQgfSwKKwkJeyAyMSwgMjUsIC02IH0sIHsgMjEsIDI1LCAtNiB9LCB7IDIyLCAyNSwgLTYg fSwgeyAyMiwgMjYsIC04IH0sCisJCXsgMjMsIDI3LCAtOCB9LCB7IDI0LCAyOCwgLTEwIH0sIHsg MjUsIDI4LCAtMTAgfSwKKwkJeyAyNiwgMjgsIC0xMiB9LCB7IDI2LCAyOCwgLTEyIH0sIHsgMjcs IDI4LCAtMTIgfSwKKwkJeyAyOSwgMzAsIC0xMiB9CisJCX0KKwl9LAorfSwKK3sKKwkvKiA4QlBQ LzhCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDMsIDEyLCAxMSwgMTEsIHsKKwkJeyAwLCA0LCAy IH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAorCQl7IDMsIDcsIC00 IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCisJCXsgMywgOSwg LTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LCB7IDUsIDEyLCAtMTIgfSwKKwkJ eyA1LCAxMywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KKwkJfQorCX0s CisJLyogOEJQUC8xMEJQQyAqLworCXsgNTEyLCAxMiwgNjE0NCwgNywgMTYsIDE1LCAxNSwgewor CQl7IDAsIDQsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDUsIDEwLCAtMiB9LAor CQl7IDcsIDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEyLCAt OCB9LAorCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsg OSwgMTYsIC0xMiB9LAorCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAx OSwgLTEyIH0KKwkJfQorCX0sCisJLyogOEJQUC8xMkJQQyAqLworCXsgNTEyLCAxMiwgNjE0NCwg MTEsIDIwLCAxOSwgMTksIHsKKwkJeyAwLCAxMiwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMs IDAgfSwgeyA5LCAxNCwgLTIgfSwKKwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9LCB7 IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCisJCXsgMTEsIDE3LCAtOCB9LCB7IDExLCAx OCwgLTEwIH0sIHsgMTMsIDE5LCAtMTAgfSwKKwkJeyAxMywgMjAsIC0xMiB9LCB7IDEzLCAyMSwg LTEyIH0sIHsgMTUsIDIxLCAtMTIgfSwKKwkJeyAyMSwgMjMsIC0xMiB9CisJCX0KKwl9LAorCS8q IDhCUFAvMTRCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsg MCwgMTIsIDAgfSwgeyA1LCAxMywgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDEyLCAxNywgLTIgfSwK KwkJeyAxNSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwg MjAsIC04IH0sCisJCXsgMTUsIDIxLCAtOCB9LCB7IDE1LCAyMiwgLTEwIH0sIHsgMTcsIDIyLCAt MTAgfSwKKwkJeyAxNywgMjMsIC0xMiB9LCB7IDE3LCAyMywgLTEyIH0sIHsgMjEsIDI0LCAtMTIg fSwKKwkJeyAyNCwgMjUsIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAvMTZCUEMgKi8KKwl7IDUx MiwgMTIsIDYxNDQsIDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgMTIsIDIgfSwgeyA2LCAxNCwg MCB9LCB7IDEzLCAxNywgMCB9LCB7IDE1LCAyMCwgLTIgfSwKKwkJeyAxOSwgMjMsIC00IH0sIHsg MTksIDIzLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTksIDI1 LCAtOCB9LCB7IDE5LCAyNiwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKKwkJeyAyMSwgMjcsIC0x MiB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjUsIDI4LCAtMTIgfSwKKwkJeyAyOCwgMjksIC0xMiB9 CisJCX0KKwl9LAorfSwKK3sKKwkvKiAxMEJQUC84QlBDICovCisJeyA0MTAsIDE1LCA1NjMyLCAz LCAxMiwgMTEsIDExLCB7CisJCXsgMCwgMywgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0s IHsgMiwgNiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTgg fSwgeyAzLCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0sIHsgMywgOSwgLTEwIH0sIHsgNSwgMTAs IC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwKKwkJeyA1LCAxMSwgLTEyIH0sIHsgNywgMTEsIC0xMiB9 LCB7IDExLCAxMiwgLTEyIH0KKwkJfQorCX0sCisJLyogMTBCUFAvMTBCUEMgKi8KKwl7IDQxMCwg MTUsIDU2MzIsIDcsIDE2LCAxNSwgMTUsIHsKKwkJeyAwLCA3LCAyIH0sIHsgNCwgOCwgMCB9LCB7 IDUsIDksIDAgfSwgeyA2LCAxMCwgLTIgfSwKKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYg fSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKKwkJeyA3LCAxMywgLTggfSwgeyA3LCAx MywgLTEwIH0sIHsgOSwgMTQsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwKKwkJeyA5LCAxNSwgLTEy IH0sIHsgMTEsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQ LzEyQlBDICovCisJeyA0MTAsIDE1LCA1NjMyLCAxMSwgMjAsIDE5LCAxOSwgeworCQl7IDAsIDEx LCAyIH0sIHsgNCwgMTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDEwLCAxNCwgLTIgfSwKKwkJeyAx MSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04 IH0sCisJCXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxNywgLTEwIH0sIHsgMTMsIDE4LCAtMTAgfSwK KwkJeyAxMywgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEyIH0sIHsgMTUsIDE5LCAtMTIgfSwKKwkJ eyAxOSwgMjAsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQLzE0QlBDICovCisJeyA0MTAsIDE1 LCA1NjMyLCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDExLCAyIH0sIHsgNSwgMTMsIDAgfSwg eyAxMSwgMTUsIDAgfSwgeyAxMywgMTgsIC0yIH0sCisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAx OSwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMSwgLTgg fSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCisJCXsgMTcsIDIyLCAtMTAgfSwg eyAxNywgMjMsIC0xMiB9LCB7IDE5LCAyMywgLTEyIH0sCisJCXsgMjMsIDI0LCAtMTIgfQorCQl9 CisJfSwKKwkvKiAxMEJQUC8xNkJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMTksIDI4LCAyNywg MjcsIHsKKwkJeyAwLCAxMSwgMiB9LCB7IDYsIDE0LCAwIH0sIHsgMTMsIDE3LCAwIH0sIHsgMTYs IDIwLCAtMiB9LAorCQl7IDE5LCAyMywgLTQgfSwgeyAxOSwgMjMsIC02IH0sIHsgMTksIDIzLCAt OCB9LCB7IDE5LCAyNCwgLTggfSwKKwkJeyAxOSwgMjUsIC04IH0sIHsgMTksIDI1LCAtMTAgfSwg eyAyMSwgMjYsIC0xMCB9LAorCQl7IDIxLCAyNiwgLTEwIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAy MywgMjcsIC0xMiB9LAorCQl7IDI3LCAyOCwgLTEyIH0KKwkJfQorCX0sCit9LAoreworCS8qIDEy QlBQLzhCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKKwkJeyAwLCAy LCAyIH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAorCQl7IDMsIDcs IC00IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCisJCXsgMywg OSwgLTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LAorCQl7IDUsIDEyLCAtMTIg fSwgeyA1LCAxMywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KKwkJfQor CX0sCisJLyogMTJCUFAvMTBCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUs IHsKKwkJeyAwLCAyLCAyIH0sIHsgMiwgNSwgMCB9LCB7IDMsIDcsIDAgfSwgeyA0LCA4LCAtMiB9 LAorCQl7IDYsIDksIC00IH0sIHsgNywgMTAsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIs IC04IH0sCisJCXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7IDksIDE1LCAtMTAgfSwg eyA5LCAxNiwgLTEyIH0sCisJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcs IDE5LCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMkJQUC8xMkJQQyAqLworCXsgMzQxLCAxNSwgMjA0 OCwgMTEsIDIwLCAxOSwgMTksIHsKKwkJeyAwLCA2LCAyIH0sIHsgNCwgOSwgMCB9LCB7IDcsIDEx LCAwIH0sIHsgOCwgMTIsIC0yIH0sCisJCXsgMTAsIDEzLCAtNCB9LCB7IDExLCAxNCwgLTYgfSwg eyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwg MTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0sCisJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEs IC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0sCisJCXsgMjEsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkv KiAxMkJQUC8xNEJQQyAqLworCXsgMzQxLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKKwkJ eyAwLCA2LCAyIH0sIHsgNywgMTAsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDExLCAxNiwgLTIgfSwK KwkJeyAxNCwgMTcsIC00IH0sIHsgMTUsIDE4LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwg MjAsIC04IH0sCisJCXsgMTUsIDIwLCAtOCB9LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIxLCAt MTAgfSwKKwkJeyAxNywgMjEsIC0xMiB9LCB7IDE3LCAyMSwgLTEyIH0sIHsgMTksIDIyLCAtMTIg fSwKKwkJeyAyMiwgMjMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEyQlBQLzE2QlBDICovCisJeyAz NDEsIDE1LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywgeworCQl7IDAsIDYsIDIgfSwgeyA2LCAxMSwg MCB9LCB7IDExLCAxNSwgMCB9LCB7IDE0LCAxOCwgLTIgfSwKKwkJeyAxOCwgMjEsIC00IH0sIHsg MTksIDIyLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTksIDI0 LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI1LCAtMTAgfSwKKwkJeyAyMSwgMjUsIC0x MiB9LCB7IDIxLCAyNSwgLTEyIH0sIHsgMjMsIDI2LCAtMTIgfSwKKwkJeyAyNiwgMjcsIC0xMiB9 CisJCX0KKwl9LAorfSwKK3sKKwkvKiAxNUJQUC84QlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCAz LCAxMiwgMTEsIDExLCB7CisJCXsgMCwgMCwgMTAgfSwgeyAwLCAxLCA4IH0sIHsgMCwgMSwgNiB9 LCB7IDAsIDIsIDQgfSwKKwkJeyAxLCAyLCAyIH0sIHsgMSwgMywgMCB9LCB7IDEsIDMsIC0yIH0s IHsgMiwgNCwgLTQgfSwKKwkJeyAyLCA1LCAtNiB9LCB7IDMsIDUsIC04IH0sIHsgNCwgNiwgLTEw IH0sIHsgNCwgNywgLTEwIH0sCisJCXsgNSwgNywgLTEyIH0sIHsgNywgOCwgLTEyIH0sIHsgOCwg OSwgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTBCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgs IDcsIDE2LCAxNSwgMTUsIHsKKwkJeyAwLCAyLCAxMCB9LCB7IDIsIDUsIDggfSwgeyAzLCA1LCA2 IH0sIHsgNCwgNiwgNCB9LAorCQl7IDUsIDYsIDIgfSwgeyA1LCA3LCAwIH0sIHsgNSwgNywgLTIg fSwgeyA2LCA4LCAtNCB9LAorCQl7IDYsIDksIC02IH0sIHsgNywgOSwgLTggfSwgeyA4LCAxMCwg LTEwIH0sIHsgOCwgMTEsIC0xMCB9LAorCQl7IDksIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9 LCB7IDEyLCAxMywgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTJCUEMgKi8KKwl7IDI3Mywg MTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgNCwgMTAgfSwgeyAyLCA3LCA4IH0s IHsgNCwgOSwgNiB9LCB7IDYsIDExLCA0IH0sCisJCXsgOSwgMTEsIDIgfSwgeyA5LCAxMSwgMCB9 LCB7IDksIDEyLCAtMiB9LCB7IDEwLCAxMiwgLTQgfSwKKwkJeyAxMSwgMTMsIC02IH0sIHsgMTEs IDEzLCAtOCB9LCB7IDEyLCAxNCwgLTEwIH0sCisJCXsgMTMsIDE1LCAtMTAgfSwgeyAxMywgMTUs IC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCisJCXsgMTYsIDE3LCAtMTIgfQorCQl9CisJfSwKKwkv KiAxNUJQUC8xNEJQQyAqLworCXsgMjczLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKKwkJ eyAwLCA0LCAxMCB9LCB7IDMsIDgsIDggfSwgeyA2LCAxMSwgNiB9LCB7IDksIDE0LCA0IH0sCisJ CXsgMTMsIDE1LCAyIH0sIHsgMTMsIDE1LCAwIH0sIHsgMTMsIDE2LCAtMiB9LCB7IDE0LCAxNiwg LTQgfSwKKwkJeyAxNSwgMTcsIC02IH0sIHsgMTUsIDE3LCAtOCB9LCB7IDE2LCAxOCwgLTEwIH0s CisJCXsgMTcsIDE5LCAtMTAgfSwgeyAxNywgMTksIC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCisJ CXsgMjAsIDIxLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxNUJQUC8xNkJQQyAqLworCXsgMjczLCAx NSwgMjA0OCwgMTksIDI4LCAyNywgMjcsIHsKKwkJeyAwLCA0LCAxMCB9LCB7IDQsIDksIDggfSwg eyA4LCAxMywgNiB9LCB7IDEyLCAxNywgNCB9LAorCQl7IDE3LCAxOSwgMiB9LCB7IDE3LCAyMCwg MCB9LCB7IDE3LCAyMCwgLTIgfSwgeyAxOCwgMjAsIC00IH0sCisJCXsgMTksIDIxLCAtNiB9LCB7 IDE5LCAyMSwgLTggfSwgeyAyMCwgMjIsIC0xMCB9LAorCQl7IDIxLCAyMywgLTEwIH0sIHsgMjEs IDIzLCAtMTIgfSwgeyAyMywgMjQsIC0xMiB9LAorCQl7IDI0LCAyNSwgLTEyIH0KKwkJfQorCX0K K30KK307CisKK3N0YXRpYyBpbnQgZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1zKHUxNiBjb21w cmVzc2VkX2JwcCkKK3sKKwlzd2l0Y2ggKGNvbXByZXNzZWRfYnBwKSB7CisJY2FzZSA2OgorCQly ZXR1cm4gUk9XX0lOREVYXzZCUFA7CisJY2FzZSA4OgorCQlyZXR1cm4gUk9XX0lOREVYXzhCUFA7 CisJY2FzZSAxMDoKKwkJcmV0dXJuIFJPV19JTkRFWF8xMEJQUDsKKwljYXNlIDEyOgorCQlyZXR1 cm4gUk9XX0lOREVYXzEyQlBQOworCWNhc2UgMTU6CisJCXJldHVybiBST1dfSU5ERVhfMTVCUFA7 CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQorCitzdGF0aWMgaW50IGdldF9j b2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh1OCBiaXRzX3Blcl9jb21wb25lbnQpCit7CisJc3dp dGNoIChiaXRzX3Blcl9jb21wb25lbnQpIHsKKwljYXNlIDg6CisJCXJldHVybiBDT0xVTU5fSU5E RVhfOEJQQzsKKwljYXNlIDEwOgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzEwQlBDOworCWNhc2Ug MTI6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTJCUEM7CisJY2FzZSAxNDoKKwkJcmV0dXJuIENP TFVNTl9JTkRFWF8xNEJQQzsKKwljYXNlIDE2OgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzE2QlBD OworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKworaW50IGludGVsX2RwX2Nv bXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKK3sKKwlzdHJ1Y3QgZHJtX2RzY19jb25maWcg KnZkc2NfY2ZnID0gJnBpcGVfY29uZmlnLT5kcF9kc2NfY2ZnOworCXUxNiBjb21wcmVzc2VkX2Jw cCA9IHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwOworCXU4IGkgPSAwOwor CXU4IHJvd19pbmRleCA9IDA7CisJdTggY29sdW1uX2luZGV4ID0gMDsKKwl1OCBsaW5lX2J1Zl9k ZXB0aCA9IDA7CisKKwl2ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5OworCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5OworCXZkc2NfY2ZnLT5zbGlj ZV93aWR0aCA9IERJVl9ST1VORF9VUCh2ZHNjX2NmZy0+cGljX3dpZHRoLAorCQkJCQkgICAgIHBp cGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50KTsKKwkvKgorCSAqIFNsaWNlIEhlaWdo dCBvZiA4IHdvcmtzIGZvciBhbGwgY3VycmVudGx5IGF2YWlsYWJsZSBwYW5lbHMuIFNvIHN0YXJ0 CisJICogd2l0aCB0aGF0IGlmIHBpY19oZWlnaHQgaXMgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2Yg OC4KKwkgKiBFdmVudHVhbGx5IGFkZCBsb2dpYyB0byB0cnkgbXVsdGlwbGUgc2xpY2UgaGVpZ2h0 cy4KKwkgKi8KKwlpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA4ID09IDApCisJCXZkc2NfY2Zn LT5zbGljZV9oZWlnaHQgPSA4OworCWVsc2UgaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgNCA9 PSAwKQorCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0ID0gNDsKKwllbHNlCisJCXZkc2NfY2ZnLT5z bGljZV9oZWlnaHQgPSAyOworCisJLyogVmFsdWVzIGZpbGxlZCBmcm9tIERTQyBTaW5rIERQQ0Qg Ki8KKwl2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25fbWFqb3IgPQorCQkoaW50ZWxfZHAtPmRzY19kcGNk W0RQX0RTQ19SRVYgLSBEUF9EU0NfU1VQUE9SVF0gJgorCQkgRFBfRFNDX01BSk9SX01BU0spID4+ IERQX0RTQ19NQUpPUl9TSElGVDsKKwl2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25fbWlub3IgPQorCQlt aW4oRFNDX1NVUFBPUlRFRF9WRVJTSU9OX01JTiwKKwkJICAgIChpbnRlbF9kcC0+ZHNjX2RwY2Rb RFBfRFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCisJCSAgICAgRFBfRFNDX01JTk9SX01BU0sp ID4+IERQX0RTQ19NSU5PUl9TSElGVCk7CisKKwl2ZHNjX2NmZy0+Y29udmVydF9yZ2IgPSBpbnRl bF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0RFQ19DT0xPUl9GT1JNQVRfQ0FQIC0gRFBfRFNDX1NVUFBP UlRdICYKKwkJRFBfRFNDX1JHQjsKKworCWxpbmVfYnVmX2RlcHRoID0gZHJtX2RwX2RzY19zaW5r X2xpbmVfYnVmX2RlcHRoKGludGVsX2RwLT5kc2NfZHBjZCk7CisJaWYgKCFsaW5lX2J1Zl9kZXB0 aCkgeworCQlEUk1fREVCVUdfS01TKCJEU0MgU2luayBMaW5lIEJ1ZmZlciBEZXB0aCBpbnZhbGlk XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICh2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25f bWlub3IgPT0gMikKKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoID0gKGxpbmVfYnVmX2RlcHRo ID09IERTQ18xXzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUykgPworCQkJRFNDXzFfMl9NQVhfTElO RUJVRl9ERVBUSF9WQUwgOiBsaW5lX2J1Zl9kZXB0aDsKKwllbHNlCisJCXZkc2NfY2ZnLT5saW5l X2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA+IERTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhf QklUUykgPworCQkJRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRTIDogbGluZV9idWZfZGVw dGg7CisKKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBZQ2JDciAqLworCXZkc2NfY2ZnLT5l bmFibGU0MjIgPSBmYWxzZTsKKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBWQlIgKi8KKwl2 ZHNjX2NmZy0+dmJyX2VuYWJsZSA9IGZhbHNlOworCXZkc2NfY2ZnLT5ibG9ja19wcmVkX2VuYWJs ZSA9CisJCQlpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0JMS19QUkVESUNUSU9OX1NVUFBPUlQg LSBEUF9EU0NfU1VQUE9SVF0gJgorCQlEUF9EU0NfQkxLX1BSRURJQ1RJT05fSVNfU1VQUE9SVEVE OworCisJLyogR2VuIDExIG9ubHkgc3VwcG9ydHMgaW50ZWdyYWwgdmFsdWVzIG9mIGJwcCAqLwor CXZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCA9IGNvbXByZXNzZWRfYnBwIDw8IDQ7CisJdmRzY19j ZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9IHBpcGVfY29uZmlnLT5waXBlX2JwcCAvIDM7CisKKwlm b3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7CisJCS8qCisJCSAq IHNpeCAwcyBhcmUgYXBwZW5kZWQgdG8gdGhlIGxzYiBvZiBlYWNoIHRocmVzaG9sZCB2YWx1ZQor CQkgKiBpbnRlcm5hbGx5IGluIGgvdy4KKwkJICogT25seSA4IGJpdHMgYXJlIGFsbG93ZWQgZm9y IHByb2dyYW1taW5nIFJjQnVmVGhyZXNob2xkCisJCSAqLworCQl2ZHNjX2NmZy0+cmNfYnVmX3Ro cmVzaFtpXSA9IHJjX2J1Zl90aHJlc2hbaV0gPj4gNjsKKwl9CisKKwkvKgorCSAqIEZvciA2YnBw LCBSQyBCdWZmZXIgdGhyZXNob2xkIDEyIGFuZCAxMyBuZWVkIGEgZGlmZmVyZW50IHZhbHVlCisJ ICogYXMgcGVyIEMgTW9kZWwKKwkgKi8KKwlpZiAoY29tcHJlc3NlZF9icHAgPT0gNikgeworCQl2 ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFsxMl0gPSAweDdDOworCQl2ZHNjX2NmZy0+cmNfYnVmX3Ro cmVzaFsxM10gPSAweDdEOworCX0KKworCXJvd19pbmRleCA9IGdldF9yb3dfaW5kZXhfZm9yX3Jj X3BhcmFtcyhjb21wcmVzc2VkX2JwcCk7CisJY29sdW1uX2luZGV4ID0KKwkJZ2V0X2NvbHVtbl9p bmRleF9mb3JfcmNfcGFyYW1zKHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQpOworCisJaWYg KHJvd19pbmRleCA8IDAgfHwgY29sdW1uX2luZGV4IDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisK Kwl2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRl eF1bY29sdW1uX2luZGV4XS5maXJzdF9saW5lX2JwZ19vZmZzZXQ7CisJdmRzY19jZmctPmluaXRp YWxfeG1pdF9kZWxheSA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uaW5p dGlhbF94bWl0X2RlbGF5OworCXZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCA9CisJCXJjX3BhcmFt c1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uaW5pdGlhbF9vZmZzZXQ7CisJdmRzY19jZmctPmZs YXRuZXNzX21pbl9xcCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmxh dG5lc3NfbWluX3FwOworCXZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXAgPQorCQlyY19wYXJhbXNb cm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZsYXRuZXNzX21heF9xcDsKKwl2ZHNjX2NmZy0+cmNf cXVhbnRfaW5jcl9saW1pdDAgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LnJjX3F1YW50X2luY3JfbGltaXQwOworCXZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSA9 CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcXVhbnRfaW5jcl9saW1p dDE7CisKKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTOyBpKyspIHsKKwkJdmRz Y19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9taW5fcXAgPQorCQkJcmNfcGFyYW1zW3Jv d19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwOwor CQl2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21heF9xcCA9CisJCQlyY19wYXJh bXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhf cXA7CisJCS8qCisJCSAqIFJhbmdlIEJQRyBPZmZzZXQgdXNlcyAyJ3MgY29tcGxlbWVudCBhbmQg aXMgb25seSBhIDYgYml0cy4gU28KKwkJICogbWFzayBpdCB0byBnZXQgb25seSA2IGJpdHMuCisJ CSAqLworCQl2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX2JwZ19vZmZzZXQgPQor CQkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0u cmFuZ2VfYnBnX29mZnNldCAmCisJCQlEU0NfUkFOR0VfQlBHX09GRlNFVF9NQVNLOworCX0KKwor CS8qCisJICogQml0c1BlckNvbXBvbmVudCB2YWx1ZSBkZXRlcm1pbmVzIG11eF93b3JkX3NpemU6 CisJICogV2hlbiBCaXRzUGVyQ29tcG9uZW50IGlzIDEyYnBjLCBtdXhXb3JkU2l6ZSB3aWxsIGJl IGVxdWFsIHRvIDY0IGJpdHMKKwkgKiBXaGVuIEJpdHNQZXJDb21wb25lbnQgaXMgOCBvciAxMGJw YywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0bworCSAqIDQ4IGJpdHMKKwkgKi8KKwlpZiAo dmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSA4IHx8CisJICAgIHZkc2NfY2ZnLT5iaXRz X3Blcl9jb21wb25lbnQgPT0gMTApCisJCXZkc2NfY2ZnLT5tdXhfd29yZF9zaXplID0gRFNDX01V WF9XT1JEX1NJWkVfOF8xMF9CUEM7CisJZWxzZSBpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBv bmVudCA9PSAxMikKKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBEU0NfTVVYX1dPUkRfU0la RV8xMl9CUEM7CisKKwkvKiBSQ19NT0RFTF9TSVpFIGlzIGEgY29uc3RhbnQgYWNyb3NzIGFsbCBj b25maWd1cmF0aW9ucyAqLworCXZkc2NfY2ZnLT5yY19tb2RlbF9zaXplID0gRFNDX1JDX01PREVM X1NJWkVfQ09OU1Q7CisJLyogSW5pdGlhbFNjYWxlVmFsdWUgaXMgYSA2IGJpdCB2YWx1ZSB3aXRo IDMgZnJhY3Rpb25hbCBiaXRzIChVMy4zKSAqLworCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3Zh bHVlID0gKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIDw8IDMpIC8KKwkJKHZkc2NfY2ZnLT5yY19t b2RlbF9zaXplIC0gdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKKworCXJldHVybiAwOworfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJt X2RwX2hlbHBlci5oCmluZGV4IDczMDI0M2RkNDFlMi4uMjY0OTUyOWQwZDhmIDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hl bHBlci5oCkBAIC0xODcsNiArMTg3LDkgQEAKIAogI2RlZmluZSBEUF9HVUlECQkJCSAgICAweDAz MCAgIC8qIDEuMiAqLwogCisjZGVmaW5lIERQX0RTQ19SQ19QSVhFTFNfUEVSX0dST1VQCQkzCisj ZGVmaW5lIERQX0RTQ19TQ0FMRV9ERUNSRU1FTlRfSU5URVJWQUxfTUFYCTQwOTUKKwogI2RlZmlu ZSBEUF9EU0NfU1VQUE9SVCAgICAgICAgICAgICAgICAgICAgICAweDA2MCAgIC8qIERQIDEuNCAq LwogIyBkZWZpbmUgRFBfRFNDX0RFQ09NUFJFU1NJT05fSVNfU1VQUE9SVEVEICAoMSA8PCAwKQog Ci0tIAoyLjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=