From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v10 10/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Tue, 20 Nov 2018 10:37:23 -0800 Message-ID: <20181120183736.28054-11-manasi.d.navare@intel.com> References: <20181120183736.28054-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: <20181120183736.28054-1-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KClRoaXMgcGF0 Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6CgoxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKRFNDIHNwZWNpZmljYXRpb24uIFRoZXNlIGFy ZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKdG8gY29tcHV0ZSB0aGUgUFBTIHBhcmFt ZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgU2luay4KMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCnN0YXRlIG9mIGludGVsX2NydGNfc3Rh dGUuCjMuIENvbXB1dGUgYWxsIHBhcmFtZXRlcnMgdGhhdCBhcmUgVkVTQSBEU0Mgc3BlY2lmaWMK ClRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmlu Zwpjb21wdXRlX2NvbmZpZygpIHRvIHZhbGlkYXRlIGlmIGRpc3BsYXkgc3RyZWFtIGNvbXByZXNz aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2OCAoRnJvbSBNYW5h c2kpOgoqIERFQlVHX0tNUyBpbnN0ZWFkIG9mIERSTV9FUlJPUiBmb3IgdXNlciB0cmlnZ2VyYWJs ZQplcnJvcnMgKFZpbGxlKQp2NzogKEZyb20gTWFuYXNpKQoqIERvbnQgdXNlIHNpZ25lZCBpbnQg Zm9yIHJjX3JhbmdlX3BhcmFtcyAoTWFuYXNpKQoqIE1hc2sgdGhlIHJhbmdlX2JwZ19vZmZzZXQg dG8gdXNlIG9ubHkgNiBiaXRzCiogQWRkIFNQRFggaWRlbnRpZmllciAoQ2hyaXMgV2lsc29uKQp2 NiAoRnJvbSBNYW5hc2kpOgoqIEFkZCBhIGNoZWNrIGZvciBsaW5lX2J1Zl9kZXB0aCByZXR1cm4g dmFsdWUgKEFudXNoYSkKKiBSZW1vdmUgRFJNIERTQyBjb25zdGFudHMgdG8gZGlmZmVyZW50IHBh dGNoIChNYW5hc2kpCnY1IChGcm9tIE1hbmFzaSk6CiogQWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBt YXggbGluZSBidWYgZGVwdGggZm9yIERTQyAxLjEgdG8gMTMKYXMgcGVyIERTQyAxLjEgc3BlYwoq IEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKCnY0IChGcm9tIEdhdXJhdik6Ciog UmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCiogcmVuYW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQoq IFBvcHVsYXRlIGxpbmVidWZfZGVwdGggdmFyaWFibGUoTWFuYXNpKQoKdjMgKEZyb20gR2F1cmF2 KToKKiBSZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hlcyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0 IHBhdGNoCnNlcmllcwoqIFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kpCiogQ2hh bmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5n KEdhdXJhdikKCkZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlOgoqIERvbid0IHVzZSBt YWNybyBUV09TX0NPTVBMRU1FTlQKKiBNZW50aW9uIGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJj ZSBvZiBSQyBwYXJhbXMKKiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKKiBV c2luZyBzaW5nbGUgYXNzc2lnbm1lbnQgZm9yIGFzc2lnbmluZyByY19yYW5nZV9wYXJhbXMKKiBV c2luZyA8PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQgcmVtb3ZpbmcgdGhlIGNvbW1lbnRzCmFib3V0 IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCgp2MiAoRnJvbSBNYW5hc2kpOgoqIFVwZGF0ZSBsb2dp YyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2YWx1ZQphbmQgd2hhdCBz dXBwb3J0ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCiogVXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBp bnN0ZWFkIG9mIGludGVsX2RwIHN0cnVjdAoqIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJN IERTQyBoZWFkZXIgZmlsZQoqIFVzZSB1MTYsIHU4IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5v dCBuZWVkZWQKKiAqIENvbXB1dGUgdGhlIERTQyBwYXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNv bXB1dGUgY29uZmlnCnNpbmNlIHRoZSBjb21wdXRhdGlvbiBjYW4gZmFpbCAoTWFuYXNpKQoKQ2M6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJq YWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8 YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KQ2M6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5z aW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5z aW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+CkNvLWRldmVsb3BlZC1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQu bmF2YXJlQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNy aXZhdHNhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAg fCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAgNyArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdmRzYy5jIHwgNDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgIHwgICAzICsKIDUgZmlsZXMgY2hhbmdlZCwg NDcxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDBm Zjg3OGM5OTRlMi4uODM3MGI5ZGU2ZTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTU3LDcg KzE1Nyw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAogCSAgaW50ZWxfc2R2by5vIFwKIAkg IGludGVsX3R2Lm8gXAogCSAgdmx2X2RzaS5vIFwKLQkgIHZsdl9kc2lfcGxsLm8KKwkgIHZsdl9k c2lfcGxsLm8gXAorCSAgaW50ZWxfdmRzYy5vCiAKICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQ VSBoYW5nIHN0YXRlIGNhcHR1cmUKIGk5MTUtJChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJP UikgKz0gaTkxNV9ncHVfZXJyb3IubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggNzhlYzc3 NWFhOTBhLi5mMWJjNjJkZjFmNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMTk1Miw2 ICsxOTUyLDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQorCWlmIChp bnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsK KwkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IGNvbXB1dGUgdmFsaWQgRFNDIHBhcmFtZXRlcnMgZm9y IElucHV0IEJwcCA9ICVkIgorCQkJICAgICAgIkNvbXByZXNzZWQgQlBQID0gJWRcbiIsCisJCQkg ICAgICBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCisJCQkgICAgICBwaXBlX2NvbmZpZy0+ZHNjX3Bh cmFtcy5jb21wcmVzc2VkX2JwcCk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAJcGlwZV9jb25maWct PmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKIAlEUk1fREVCVUdfS01TKCJE UCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAlZCAiCiAJCSAgICAgICJDb21wcmVzc2Vk IEJwcCA9ICVkIFNsaWNlIENvdW50ID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmlu ZGV4IDEwNDc2ZmVjOTQ4NS4uZDY0NjZjNDAxMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aApAQCAtMTg1MSw2ICsxODUxLDEwIEBAIHVpbnQxNl90IGludGVsX2RwX2RzY19nZXRfb3V0cHV0 X2JwcChpbnQgbGlua19jbG9jaywgdWludDhfdCBsYW5lX2NvdW50LAogdWludDhfdCBpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2Rl X2Nsb2NrLAogCQkJCSAgICAgaW50IG1vZGVfaGRpc3BsYXkpOwogCisvKiBpbnRlbF92ZHNjLmMg Ki8KK2ludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOworCiBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBsYW5l X2NvdW50KQogewogCXJldHVybiB+KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF92ZHNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wYTE5MThmMmY2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF92ZHNjLmMKQEAgLTAsMCArMSw0NTUgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoK KyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KKyAq ICAgICAgICAgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KKyAqLwor CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KKyNpbmNs dWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2Rydi5oIgorCitlbnVtIFJPV19JTkRF WF9CUFAgeworCVJPV19JTkRFWF82QlBQID0gMCwKKwlST1dfSU5ERVhfOEJQUCwKKwlST1dfSU5E RVhfMTBCUFAsCisJUk9XX0lOREVYXzEyQlBQLAorCVJPV19JTkRFWF8xNUJQUCwKKwlNQVhfUk9X X0lOREVYCit9OworCitlbnVtIENPTFVNTl9JTkRFWF9CUEMgeworCUNPTFVNTl9JTkRFWF84QlBD ID0gMCwKKwlDT0xVTU5fSU5ERVhfMTBCUEMsCisJQ09MVU1OX0lOREVYXzEyQlBDLAorCUNPTFVN Tl9JTkRFWF8xNEJQQywKKwlDT0xVTU5fSU5ERVhfMTZCUEMsCisJTUFYX0NPTFVNTl9JTkRFWAor fTsKKworI2RlZmluZSBEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOCQkxCisKKy8qIEZyb20gRFND X3YxLjExIHNwZWMsIHJjX3BhcmFtZXRlcl9TZXQgc3ludGF4IGVsZW1lbnQgdHlwaWNhbGx5IGNv bnN0YW50ICovCitzdGF0aWMgdTE2IHJjX2J1Zl90aHJlc2hbXSA9IHsKKwk4OTYsIDE3OTIsIDI2 ODgsIDM1ODQsIDQ0ODAsIDUzNzYsIDYyNzIsIDY3MjAsIDcxNjgsIDc2MTYsCisJNzc0NCwgNzg3 MiwgODAwMCwgODA2NAorfTsKKworc3RydWN0IHJjX3BhcmFtZXRlcnMgeworCXUxNiBpbml0aWFs X3htaXRfZGVsYXk7CisJdTggZmlyc3RfbGluZV9icGdfb2Zmc2V0OworCXUxNiBpbml0aWFsX29m ZnNldDsKKwl1OCBmbGF0bmVzc19taW5fcXA7CisJdTggZmxhdG5lc3NfbWF4X3FwOworCXU4IHJj X3F1YW50X2luY3JfbGltaXQwOworCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOworCXN0cnVjdCBk cm1fZHNjX3JjX3JhbmdlX3BhcmFtZXRlcnMgcmNfcmFuZ2VfcGFyYW1zW0RTQ19OVU1fQlVGX1JB TkdFU107Cit9OworCisvKgorICogU2VsZWN0ZWQgUmF0ZSBDb250cm9sIFJlbGF0ZWQgUGFyYW1l dGVyIFJlY29tbWVuZGVkIFZhbHVlcworICogZnJvbSBEU0NfdjEuMTEgc3BlYyAmIEMgTW9kZWwg cmVsZWFzZTogRFNDX21vZGVsXzIwMTYxMjEyCisgKi8KK3N0YXRpYyBzdHJ1Y3QgcmNfcGFyYW1l dGVycyByY19wYXJhbXNbXVtNQVhfQ09MVU1OX0lOREVYXSA9IHsKK3sKKwkvKiA2QlBQLzhCUEMg Ki8KKwl7IDc2OCwgMTUsIDYxNDQsIDMsIDEzLCAxMSwgMTEsIHsKKwkJeyAwLCA0LCAwIH0sIHsg MSwgNiwgLTIgfSwgeyAzLCA4LCAtMiB9LCB7IDQsIDgsIC00IH0sCisJCXsgNSwgOSwgLTYgfSwg eyA1LCA5LCAtNiB9LCB7IDYsIDksIC02IH0sIHsgNiwgMTAsIC04IH0sCisJCXsgNywgMTEsIC04 IH0sIHsgOCwgMTIsIC0xMCB9LCB7IDksIDEyLCAtMTAgfSwgeyAxMCwgMTIsIC0xMiB9LAorCQl7 IDEwLCAxMiwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAxMywgMTQsIC0xMiB9CisJCX0KKwl9 LAorCS8qIDZCUFAvMTBCUEMgKi8KKwl7IDc2OCwgMTUsIDYxNDQsIDcsIDE3LCAxNSwgMTUsIHsK KwkJeyAwLCA4LCAwIH0sIHsgMywgMTAsIC0yIH0sIHsgNywgMTIsIC0yIH0sIHsgOCwgMTIsIC00 IH0sCisJCXsgOSwgMTMsIC02IH0sIHsgOSwgMTMsIC02IH0sIHsgMTAsIDEzLCAtNiB9LCB7IDEw LCAxNCwgLTggfSwKKwkJeyAxMSwgMTUsIC04IH0sIHsgMTIsIDE2LCAtMTAgfSwgeyAxMywgMTYs IC0xMCB9LAorCQl7IDE0LCAxNiwgLTEyIH0sIHsgMTQsIDE2LCAtMTIgfSwgeyAxNSwgMTYsIC0x MiB9LAorCQl7IDE3LCAxOCwgLTEyIH0KKwkJfQorCX0sCisJLyogNkJQUC8xMkJQQyAqLworCXsg NzY4LCAxNSwgNjE0NCwgMTEsIDIxLCAxOSwgMTksIHsKKwkJeyAwLCAxMiwgMCB9LCB7IDUsIDE0 LCAtMiB9LCB7IDExLCAxNiwgLTIgfSwgeyAxMiwgMTYsIC00IH0sCisJCXsgMTMsIDE3LCAtNiB9 LCB7IDEzLCAxNywgLTYgfSwgeyAxNCwgMTcsIC02IH0sIHsgMTQsIDE4LCAtOCB9LAorCQl7IDE1 LCAxOSwgLTggfSwgeyAxNiwgMjAsIC0xMCB9LCB7IDE3LCAyMCwgLTEwIH0sCisJCXsgMTgsIDIw LCAtMTIgfSwgeyAxOCwgMjAsIC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCisJCXsgMjEsIDIyLCAt MTIgfQorCQl9CisJfSwKKwkvKiA2QlBQLzE0QlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAxNSwg MjUsIDIzLCAyNywgeworCQl7IDAsIDE2LCAwIH0sIHsgNywgMTgsIC0yIH0sIHsgMTUsIDIwLCAt MiB9LCB7IDE2LCAyMCwgLTQgfSwKKwkJeyAxNywgMjEsIC02IH0sIHsgMTcsIDIxLCAtNiB9LCB7 IDE4LCAyMSwgLTYgfSwgeyAxOCwgMjIsIC04IH0sCisJCXsgMTksIDIzLCAtOCB9LCB7IDIwLCAy NCwgLTEwIH0sIHsgMjEsIDI0LCAtMTAgfSwKKwkJeyAyMiwgMjQsIC0xMiB9LCB7IDIyLCAyNCwg LTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwKKwkJeyAyNSwgMjYsIC0xMiB9CisJCX0KKwl9LAorCS8q IDZCUFAvMTZCUEMgKi8KKwl7IDc2OCwgMTUsIDYxNDQsIDE5LCAyOSwgMjcsIDI3LCB7CisJCXsg MCwgMjAsIDAgfSwgeyA5LCAyMiwgLTIgfSwgeyAxOSwgMjQsIC0yIH0sIHsgMjAsIDI0LCAtNCB9 LAorCQl7IDIxLCAyNSwgLTYgfSwgeyAyMSwgMjUsIC02IH0sIHsgMjIsIDI1LCAtNiB9LCB7IDIy LCAyNiwgLTggfSwKKwkJeyAyMywgMjcsIC04IH0sIHsgMjQsIDI4LCAtMTAgfSwgeyAyNSwgMjgs IC0xMCB9LAorCQl7IDI2LCAyOCwgLTEyIH0sIHsgMjYsIDI4LCAtMTIgfSwgeyAyNywgMjgsIC0x MiB9LAorCQl7IDI5LCAzMCwgLTEyIH0KKwkJfQorCX0sCit9LAoreworCS8qIDhCUFAvOEJQQyAq LworCXsgNTEyLCAxMiwgNjE0NCwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDQsIDIgfSwgeyAw LCA0LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDEsIDYsIC0yIH0sCisJCXsgMywgNywgLTQgfSwgeyAz LCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywgOCwgLTggfSwKKwkJeyAzLCA5LCAtOCB9LCB7 IDMsIDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sIHsgNSwgMTIsIC0xMiB9LAorCQl7IDUsIDEz LCAtMTIgfSwgeyA3LCAxMywgLTEyIH0sIHsgMTMsIDE1LCAtMTIgfQorCQl9CisJfSwKKwkvKiA4 QlBQLzEwQlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwg NCwgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAwIH0sIHsgNSwgMTAsIC0yIH0sCisJCXsgNywg MTEsIC00IH0sIHsgNywgMTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0sCisJ CXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7IDksIDE1LCAtMTAgfSwgeyA5LCAxNiwg LTEyIH0sCisJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcsIDE5LCAtMTIg fQorCQl9CisJfSwKKwkvKiA4QlBQLzEyQlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAxMSwgMjAs IDE5LCAxOSwgeworCQl7IDAsIDEyLCAyIH0sIHsgNCwgMTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7 IDksIDE0LCAtMiB9LAorCQl7IDExLCAxNSwgLTQgfSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1 LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKKwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAg fSwgeyAxMywgMTksIC0xMCB9LAorCQl7IDEzLCAyMCwgLTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwg eyAxNSwgMjEsIC0xMiB9LAorCQl7IDIxLCAyMywgLTEyIH0KKwkJfQorCX0sCisJLyogOEJQUC8x NEJQQyAqLworCXsgNTEyLCAxMiwgNjE0NCwgMTUsIDI0LCAyMywgMjMsIHsKKwkJeyAwLCAxMiwg MCB9LCB7IDUsIDEzLCAwIH0sIHsgMTEsIDE1LCAwIH0sIHsgMTIsIDE3LCAtMiB9LAorCQl7IDE1 LCAxOSwgLTQgfSwgeyAxNSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTgg fSwKKwkJeyAxNSwgMjEsIC04IH0sIHsgMTUsIDIyLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LAor CQl7IDE3LCAyMywgLTEyIH0sIHsgMTcsIDIzLCAtMTIgfSwgeyAyMSwgMjQsIC0xMiB9LAorCQl7 IDI0LCAyNSwgLTEyIH0KKwkJfQorCX0sCisJLyogOEJQUC8xNkJQQyAqLworCXsgNTEyLCAxMiwg NjE0NCwgMTksIDI4LCAyNywgMjcsIHsKKwkJeyAwLCAxMiwgMiB9LCB7IDYsIDE0LCAwIH0sIHsg MTMsIDE3LCAwIH0sIHsgMTUsIDIwLCAtMiB9LAorCQl7IDE5LCAyMywgLTQgfSwgeyAxOSwgMjMs IC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKKwkJeyAxOSwgMjUsIC04IH0s IHsgMTksIDI2LCAtMTAgfSwgeyAyMSwgMjYsIC0xMCB9LAorCQl7IDIxLCAyNywgLTEyIH0sIHsg MjEsIDI3LCAtMTIgfSwgeyAyNSwgMjgsIC0xMiB9LAorCQl7IDI4LCAyOSwgLTEyIH0KKwkJfQor CX0sCit9LAoreworCS8qIDEwQlBQLzhCUEMgKi8KKwl7IDQxMCwgMTUsIDU2MzIsIDMsIDEyLCAx MSwgMTEsIHsKKwkJeyAwLCAzLCAyIH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAyLCA2 LCAtMiB9LAorCQl7IDMsIDcsIC00IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMs IDgsIC04IH0sCisJCXsgMywgOSwgLTggfSwgeyAzLCA5LCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0s IHsgNSwgMTAsIC0xMCB9LAorCQl7IDUsIDExLCAtMTIgfSwgeyA3LCAxMSwgLTEyIH0sIHsgMTEs IDEyLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMEJQUC8xMEJQQyAqLworCXsgNDEwLCAxNSwgNTYz MiwgNywgMTYsIDE1LCAxNSwgeworCQl7IDAsIDcsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwg MCB9LCB7IDYsIDEwLCAtMiB9LAorCQl7IDcsIDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcs IDExLCAtOCB9LCB7IDcsIDEyLCAtOCB9LAorCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDEzLCAtMTAg fSwgeyA5LCAxNCwgLTEwIH0sIHsgOSwgMTQsIC0xMCB9LAorCQl7IDksIDE1LCAtMTIgfSwgeyAx MSwgMTUsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0KKwkJfQorCX0sCisJLyogMTBCUFAvMTJCUEMg Ki8KKwl7IDQxMCwgMTUsIDU2MzIsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgMTEsIDIgfSwg eyA0LCAxMiwgMCB9LCB7IDksIDEzLCAwIH0sIHsgMTAsIDE0LCAtMiB9LAorCQl7IDExLCAxNSwg LTQgfSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKKwkJ eyAxMSwgMTcsIC04IH0sIHsgMTEsIDE3LCAtMTAgfSwgeyAxMywgMTgsIC0xMCB9LAorCQl7IDEz LCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTIgfSwgeyAxNSwgMTksIC0xMiB9LAorCQl7IDE5LCAy MCwgLTEyIH0KKwkJfQorCX0sCisJLyogMTBCUFAvMTRCUEMgKi8KKwl7IDQxMCwgMTUsIDU2MzIs IDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgMTEsIDIgfSwgeyA1LCAxMywgMCB9LCB7IDExLCAx NSwgMCB9LCB7IDEzLCAxOCwgLTIgfSwKKwkJeyAxNSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9 LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sCisJCXsgMTUsIDIxLCAtOCB9LCB7IDE1 LCAyMSwgLTEwIH0sIHsgMTcsIDIyLCAtMTAgfSwKKwkJeyAxNywgMjIsIC0xMCB9LCB7IDE3LCAy MywgLTEyIH0sIHsgMTksIDIzLCAtMTIgfSwKKwkJeyAyMywgMjQsIC0xMiB9CisJCX0KKwl9LAor CS8qIDEwQlBQLzE2QlBDICovCisJeyA0MTAsIDE1LCA1NjMyLCAxOSwgMjgsIDI3LCAyNywgewor CQl7IDAsIDExLCAyIH0sIHsgNiwgMTQsIDAgfSwgeyAxMywgMTcsIDAgfSwgeyAxNiwgMjAsIC0y IH0sCisJCXsgMTksIDIzLCAtNCB9LCB7IDE5LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsg MTksIDI0LCAtOCB9LAorCQl7IDE5LCAyNSwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAy NiwgLTEwIH0sCisJCXsgMjEsIDI2LCAtMTAgfSwgeyAyMSwgMjcsIC0xMiB9LCB7IDIzLCAyNywg LTEyIH0sCisJCXsgMjcsIDI4LCAtMTIgfQorCQl9CisJfSwKK30sCit7CisJLyogMTJCUFAvOEJQ QyAqLworCXsgMzQxLCAxNSwgMjA0OCwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDIsIDIgfSwg eyAwLCA0LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDEsIDYsIC0yIH0sCisJCXsgMywgNywgLTQgfSwg eyAzLCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywgOCwgLTggfSwKKwkJeyAzLCA5LCAtOCB9 LCB7IDMsIDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sCisJCXsgNSwgMTIsIC0xMiB9LCB7IDUs IDEzLCAtMTIgfSwgeyA3LCAxMywgLTEyIH0sIHsgMTMsIDE1LCAtMTIgfQorCQl9CisJfSwKKwkv KiAxMkJQUC8xMEJQQyAqLworCXsgMzQxLCAxNSwgMjA0OCwgNywgMTYsIDE1LCAxNSwgeworCQl7 IDAsIDIsIDIgfSwgeyAyLCA1LCAwIH0sIHsgMywgNywgMCB9LCB7IDQsIDgsIC0yIH0sCisJCXsg NiwgOSwgLTQgfSwgeyA3LCAxMCwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwK KwkJeyA3LCAxMywgLTggfSwgeyA3LCAxNCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9LCB7IDksIDE2 LCAtMTIgfSwKKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEsIDE3LCAtMTIgfSwgeyAxNywgMTksIC0x MiB9CisJCX0KKwl9LAorCS8qIDEyQlBQLzEyQlBDICovCisJeyAzNDEsIDE1LCAyMDQ4LCAxMSwg MjAsIDE5LCAxOSwgeworCQl7IDAsIDYsIDIgfSwgeyA0LCA5LCAwIH0sIHsgNywgMTEsIDAgfSwg eyA4LCAxMiwgLTIgfSwKKwkJeyAxMCwgMTMsIC00IH0sIHsgMTEsIDE0LCAtNiB9LCB7IDExLCAx NSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCisJCXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxOCwgLTEw IH0sIHsgMTMsIDE5LCAtMTAgfSwKKwkJeyAxMywgMjAsIC0xMiB9LCB7IDEzLCAyMSwgLTEyIH0s IHsgMTUsIDIxLCAtMTIgfSwKKwkJeyAyMSwgMjMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEyQlBQ LzE0QlBDICovCisJeyAzNDEsIDE1LCAyMDQ4LCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDYs IDIgfSwgeyA3LCAxMCwgMCB9LCB7IDksIDEzLCAwIH0sIHsgMTEsIDE2LCAtMiB9LAorCQl7IDE0 LCAxNywgLTQgfSwgeyAxNSwgMTgsIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTgg fSwKKwkJeyAxNSwgMjAsIC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjEsIC0xMCB9LAor CQl7IDE3LCAyMSwgLTEyIH0sIHsgMTcsIDIxLCAtMTIgfSwgeyAxOSwgMjIsIC0xMiB9LAorCQl7 IDIyLCAyMywgLTEyIH0KKwkJfQorCX0sCisJLyogMTJCUFAvMTZCUEMgKi8KKwl7IDM0MSwgMTUs IDIwNDgsIDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgNiwgMiB9LCB7IDYsIDExLCAwIH0sIHsg MTEsIDE1LCAwIH0sIHsgMTQsIDE4LCAtMiB9LAorCQl7IDE4LCAyMSwgLTQgfSwgeyAxOSwgMjIs IC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKKwkJeyAxOSwgMjQsIC04IH0s IHsgMTksIDI1LCAtMTAgfSwgeyAyMSwgMjUsIC0xMCB9LAorCQl7IDIxLCAyNSwgLTEyIH0sIHsg MjEsIDI1LCAtMTIgfSwgeyAyMywgMjYsIC0xMiB9LAorCQl7IDI2LCAyNywgLTEyIH0KKwkJfQor CX0sCit9LAoreworCS8qIDE1QlBQLzhCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgsIDMsIDEyLCAx MSwgMTEsIHsKKwkJeyAwLCAwLCAxMCB9LCB7IDAsIDEsIDggfSwgeyAwLCAxLCA2IH0sIHsgMCwg MiwgNCB9LAorCQl7IDEsIDIsIDIgfSwgeyAxLCAzLCAwIH0sIHsgMSwgMywgLTIgfSwgeyAyLCA0 LCAtNCB9LAorCQl7IDIsIDUsIC02IH0sIHsgMywgNSwgLTggfSwgeyA0LCA2LCAtMTAgfSwgeyA0 LCA3LCAtMTAgfSwKKwkJeyA1LCA3LCAtMTIgfSwgeyA3LCA4LCAtMTIgfSwgeyA4LCA5LCAtMTIg fQorCQl9CisJfSwKKwkvKiAxNUJQUC8xMEJQQyAqLworCXsgMjczLCAxNSwgMjA0OCwgNywgMTYs IDE1LCAxNSwgeworCQl7IDAsIDIsIDEwIH0sIHsgMiwgNSwgOCB9LCB7IDMsIDUsIDYgfSwgeyA0 LCA2LCA0IH0sCisJCXsgNSwgNiwgMiB9LCB7IDUsIDcsIDAgfSwgeyA1LCA3LCAtMiB9LCB7IDYs IDgsIC00IH0sCisJCXsgNiwgOSwgLTYgfSwgeyA3LCA5LCAtOCB9LCB7IDgsIDEwLCAtMTAgfSwg eyA4LCAxMSwgLTEwIH0sCisJCXsgOSwgMTEsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTIs IDEzLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxNUJQUC8xMkJQQyAqLworCXsgMjczLCAxNSwgMjA0 OCwgMTEsIDIwLCAxOSwgMTksIHsKKwkJeyAwLCA0LCAxMCB9LCB7IDIsIDcsIDggfSwgeyA0LCA5 LCA2IH0sIHsgNiwgMTEsIDQgfSwKKwkJeyA5LCAxMSwgMiB9LCB7IDksIDExLCAwIH0sIHsgOSwg MTIsIC0yIH0sIHsgMTAsIDEyLCAtNCB9LAorCQl7IDExLCAxMywgLTYgfSwgeyAxMSwgMTMsIC04 IH0sIHsgMTIsIDE0LCAtMTAgfSwKKwkJeyAxMywgMTUsIC0xMCB9LCB7IDEzLCAxNSwgLTEyIH0s IHsgMTUsIDE2LCAtMTIgfSwKKwkJeyAxNiwgMTcsIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQ LzE0QlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDQs IDEwIH0sIHsgMywgOCwgOCB9LCB7IDYsIDExLCA2IH0sIHsgOSwgMTQsIDQgfSwKKwkJeyAxMywg MTUsIDIgfSwgeyAxMywgMTUsIDAgfSwgeyAxMywgMTYsIC0yIH0sIHsgMTQsIDE2LCAtNCB9LAor CQl7IDE1LCAxNywgLTYgfSwgeyAxNSwgMTcsIC04IH0sIHsgMTYsIDE4LCAtMTAgfSwKKwkJeyAx NywgMTksIC0xMCB9LCB7IDE3LCAxOSwgLTEyIH0sIHsgMTksIDIwLCAtMTIgfSwKKwkJeyAyMCwg MjEsIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQLzE2QlBDICovCisJeyAyNzMsIDE1LCAyMDQ4 LCAxOSwgMjgsIDI3LCAyNywgeworCQl7IDAsIDQsIDEwIH0sIHsgNCwgOSwgOCB9LCB7IDgsIDEz LCA2IH0sIHsgMTIsIDE3LCA0IH0sCisJCXsgMTcsIDE5LCAyIH0sIHsgMTcsIDIwLCAwIH0sIHsg MTcsIDIwLCAtMiB9LCB7IDE4LCAyMCwgLTQgfSwKKwkJeyAxOSwgMjEsIC02IH0sIHsgMTksIDIx LCAtOCB9LCB7IDIwLCAyMiwgLTEwIH0sCisJCXsgMjEsIDIzLCAtMTAgfSwgeyAyMSwgMjMsIC0x MiB9LCB7IDIzLCAyNCwgLTEyIH0sCisJCXsgMjQsIDI1LCAtMTIgfQorCQl9CisJfQorfQorfTsK Kworc3RhdGljIGludCBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXModTE2IGNvbXByZXNzZWRf YnBwKQoreworCXN3aXRjaCAoY29tcHJlc3NlZF9icHApIHsKKwljYXNlIDY6CisJCXJldHVybiBS T1dfSU5ERVhfNkJQUDsKKwljYXNlIDg6CisJCXJldHVybiBST1dfSU5ERVhfOEJQUDsKKwljYXNl IDEwOgorCQlyZXR1cm4gUk9XX0lOREVYXzEwQlBQOworCWNhc2UgMTI6CisJCXJldHVybiBST1df SU5ERVhfMTJCUFA7CisJY2FzZSAxNToKKwkJcmV0dXJuIFJPV19JTkRFWF8xNUJQUDsKKwlkZWZh dWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2NvbHVtbl9p bmRleF9mb3JfcmNfcGFyYW1zKHU4IGJpdHNfcGVyX2NvbXBvbmVudCkKK3sKKwlzd2l0Y2ggKGJp dHNfcGVyX2NvbXBvbmVudCkgeworCWNhc2UgODoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF84QlBD OworCWNhc2UgMTA6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTBCUEM7CisJY2FzZSAxMjoKKwkJ cmV0dXJuIENPTFVNTl9JTkRFWF8xMkJQQzsKKwljYXNlIDE0OgorCQlyZXR1cm4gQ09MVU1OX0lO REVYXzE0QlBDOworCWNhc2UgMTY6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTZCUEM7CisJZGVm YXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQorCitpbnQgaW50ZWxfZHBfY29tcHV0ZV9k c2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQoreworCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19j ZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19jZmc7CisJdTE2IGNvbXByZXNzZWRfYnBwID0gcGlw ZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHA7CisJdTggaSA9IDA7CisJdTggcm93 X2luZGV4ID0gMDsKKwl1OCBjb2x1bW5faW5kZXggPSAwOworCXU4IGxpbmVfYnVmX2RlcHRoID0g MDsKKworCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlLmNydGNfaGRpc3BsYXk7CisJdmRzY19jZmctPnBpY19oZWlnaHQgPSBwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJdmRzY19jZmctPnNsaWNlX3dpZHRo ID0gRElWX1JPVU5EX1VQKHZkc2NfY2ZnLT5waWNfd2lkdGgsCisJCQkJCSAgICAgcGlwZV9jb25m aWctPmRzY19wYXJhbXMuc2xpY2VfY291bnQpOworCS8qCisJICogU2xpY2UgSGVpZ2h0IG9mIDgg d29ya3MgZm9yIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKKwkgKiB3 aXRoIHRoYXQgaWYgcGljX2hlaWdodCBpcyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiA4LgorCSAq IEV2ZW50dWFsbHkgYWRkIGxvZ2ljIHRvIHRyeSBtdWx0aXBsZSBzbGljZSBoZWlnaHRzLgorCSAq LworCWlmICh2ZHNjX2NmZy0+cGljX2hlaWdodCAlIDggPT0gMCkKKwkJdmRzY19jZmctPnNsaWNl X2hlaWdodCA9IDg7CisJZWxzZSBpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0ID09IDApCisJ CXZkc2NfY2ZnLT5zbGljZV9oZWlnaHQgPSA0OworCWVsc2UKKwkJdmRzY19jZmctPnNsaWNlX2hl aWdodCA9IDI7CisKKwkvKiBWYWx1ZXMgZmlsbGVkIGZyb20gRFNDIFNpbmsgRFBDRCAqLworCXZk c2NfY2ZnLT5kc2NfdmVyc2lvbl9tYWpvciA9CisJCShpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFND X1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCisJCSBEUF9EU0NfTUFKT1JfTUFTSykgPj4gRFBfRFND X01BSk9SX1NISUZUOworCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9CisJCW1pbihEU0Nf U1VQUE9SVEVEX1ZFUlNJT05fTUlOLAorCQkgICAgKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0Nf UkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKKwkJICAgICBEUF9EU0NfTUlOT1JfTUFTSykgPj4gRFBf RFNDX01JTk9SX1NISUZUKTsKKworCXZkc2NfY2ZnLT5jb252ZXJ0X3JnYiA9IGludGVsX2RwLT5k c2NfZHBjZFtEUF9EU0NfREVDX0NPTE9SX0ZPUk1BVF9DQVAgLSBEUF9EU0NfU1VQUE9SVF0gJgor CQlEUF9EU0NfUkdCOworCisJbGluZV9idWZfZGVwdGggPSBkcm1fZHBfZHNjX3NpbmtfbGluZV9i dWZfZGVwdGgoaW50ZWxfZHAtPmRzY19kcGNkKTsKKwlpZiAoIWxpbmVfYnVmX2RlcHRoKSB7CisJ CURSTV9ERUJVR19LTVMoIkRTQyBTaW5rIExpbmUgQnVmZmVyIERlcHRoIGludmFsaWRcbiIpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJaWYgKHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9 PSAyKQorCQl2ZHNjX2NmZy0+bGluZV9idWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPT0gRFND XzFfMl9NQVhfTElORUJVRl9ERVBUSF9CSVRTKSA/CisJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RF UFRIX1ZBTCA6IGxpbmVfYnVmX2RlcHRoOworCWVsc2UKKwkJdmRzY19jZmctPmxpbmVfYnVmX2Rl cHRoID0gKGxpbmVfYnVmX2RlcHRoID4gRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRTKSA/ CisJCQlEU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0aDsKKwor CS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFlDYkNyICovCisJdmRzY19jZmctPmVuYWJsZTQy MiA9IGZhbHNlOworCS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFZCUiAqLworCXZkc2NfY2Zn LT52YnJfZW5hYmxlID0gZmFsc2U7CisJdmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlID0KKwkJ CWludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfQkxLX1BSRURJQ1RJT05fU1VQUE9SVCAtIERQX0RT Q19TVVBQT1JUXSAmCisJCURQX0RTQ19CTEtfUFJFRElDVElPTl9JU19TVVBQT1JURUQ7CisKKwkv KiBHZW4gMTEgb25seSBzdXBwb3J0cyBpbnRlZ3JhbCB2YWx1ZXMgb2YgYnBwICovCisJdmRzY19j ZmctPmJpdHNfcGVyX3BpeGVsID0gY29tcHJlc3NlZF9icHAgPDwgNDsKKwl2ZHNjX2NmZy0+Yml0 c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25maWctPnBpcGVfYnBwIC8gMzsKKworCWZvciAoaSA9 IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsKKwkJLyoKKwkJICogc2l4IDBz IGFyZSBhcHBlbmRlZCB0byB0aGUgbHNiIG9mIGVhY2ggdGhyZXNob2xkIHZhbHVlCisJCSAqIGlu dGVybmFsbHkgaW4gaC93LgorCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBmb3IgcHJvZ3Jh bW1pbmcgUmNCdWZUaHJlc2hvbGQKKwkJICovCisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoW2ld ID0gcmNfYnVmX3RocmVzaFtpXSA+PiA2OworCX0KKworCS8qCisJICogRm9yIDZicHAsIFJDIEJ1 ZmZlciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKKwkgKiBhcyBw ZXIgQyBNb2RlbAorCSAqLworCWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7CisJCXZkc2NfY2Zn LT5yY19idWZfdGhyZXNoWzEyXSA9IDB4N0M7CisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoWzEz XSA9IDB4N0Q7CisJfQorCisJcm93X2luZGV4ID0gZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1z KGNvbXByZXNzZWRfYnBwKTsKKwljb2x1bW5faW5kZXggPQorCQlnZXRfY29sdW1uX2luZGV4X2Zv cl9yY19wYXJhbXModmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCk7CisKKwlpZiAocm93X2lu ZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZkc2Nf Y2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1 bW5faW5kZXhdLmZpcnN0X2xpbmVfYnBnX29mZnNldDsKKwl2ZHNjX2NmZy0+aW5pdGlhbF94bWl0 X2RlbGF5ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX3ht aXRfZGVsYXk7CisJdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ID0KKwkJcmNfcGFyYW1zW3Jvd19p bmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX29mZnNldDsKKwl2ZHNjX2NmZy0+ZmxhdG5lc3Nf bWluX3FwID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVzc19t aW5fcXA7CisJdmRzY19jZmctPmZsYXRuZXNzX21heF9xcCA9CisJCXJjX3BhcmFtc1tyb3dfaW5k ZXhdW2NvbHVtbl9pbmRleF0uZmxhdG5lc3NfbWF4X3FwOworCXZkc2NfY2ZnLT5yY19xdWFudF9p bmNyX2xpbWl0MCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcXVh bnRfaW5jcl9saW1pdDA7CisJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQxID0KKwkJcmNf cGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MTsKKwor CWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQl2ZHNjX2NmZy0+ cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21pbl9xcCA9CisJCQlyY19wYXJhbXNbcm93X2luZGV4 XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9taW5fcXA7CisJCXZkc2Nf Y2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4X3FwID0KKwkJCXJjX3BhcmFtc1tyb3df aW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21heF9xcDsKKwkJ LyoKKwkJICogUmFuZ2UgQlBHIE9mZnNldCB1c2VzIDIncyBjb21wbGVtZW50IGFuZCBpcyBvbmx5 IGEgNiBiaXRzLiBTbworCQkgKiBtYXNrIGl0IHRvIGdldCBvbmx5IDYgYml0cy4KKwkJICovCisJ CXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBnX29mZnNldCA9CisJCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9i cGdfb2Zmc2V0ICYKKwkJCURTQ19SQU5HRV9CUEdfT0ZGU0VUX01BU0s7CisJfQorCisJLyoKKwkg KiBCaXRzUGVyQ29tcG9uZW50IHZhbHVlIGRldGVybWluZXMgbXV4X3dvcmRfc2l6ZToKKwkgKiBX aGVuIEJpdHNQZXJDb21wb25lbnQgaXMgMTJicGMsIG11eFdvcmRTaXplIHdpbGwgYmUgZXF1YWwg dG8gNjQgYml0cworCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyA4IG9yIDEwYnBjLCBtdXhX b3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvCisJICogNDggYml0cworCSAqLworCWlmICh2ZHNjX2Nm Zy0+Yml0c19wZXJfY29tcG9uZW50ID09IDggfHwKKwkgICAgdmRzY19jZmctPmJpdHNfcGVyX2Nv bXBvbmVudCA9PSAxMCkKKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBEU0NfTVVYX1dPUkRf U0laRV84XzEwX0JQQzsKKwllbHNlIGlmICh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09 IDEyKQorCQl2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzEyX0JQ QzsKKworCS8qIFJDX01PREVMX1NJWkUgaXMgYSBjb25zdGFudCBhY3Jvc3MgYWxsIGNvbmZpZ3Vy YXRpb25zICovCisJdmRzY19jZmctPnJjX21vZGVsX3NpemUgPSBEU0NfUkNfTU9ERUxfU0laRV9D T05TVDsKKwkvKiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBhIDYgYml0IHZhbHVlIHdpdGggMyBmcmFj dGlvbmFsIGJpdHMgKFUzLjMpICovCisJdmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPSAo dmRzY19jZmctPnJjX21vZGVsX3NpemUgPDwgMykgLworCQkodmRzY19jZmctPnJjX21vZGVsX3Np emUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVs cGVyLmgKaW5kZXggNTczNmM5NDJjODViLi42MWM2ZWNjMGEwMmIgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgK QEAgLTE4Nyw2ICsxODcsOSBAQAogCiAjZGVmaW5lIERQX0dVSUQJCQkJICAgIDB4MDMwICAgLyog MS4yICovCiAKKyNkZWZpbmUgRFBfRFNDX1JDX1BJWEVMU19QRVJfR1JPVVAJCTMKKyNkZWZpbmUg RFBfRFNDX1NDQUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVgJNDA5NQorCiAjZGVmaW5lIERQX0RT Q19TVVBQT1JUICAgICAgICAgICAgICAgICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovCiAjIGRl ZmluZSBEUF9EU0NfREVDT01QUkVTU0lPTl9JU19TVVBQT1JURUQgICgxIDw8IDApCiAKLS0gCjIu MTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==