From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH 15/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Mon, 30 Jul 2018 19:12:55 -0700 Message-ID: <1533003183-22793-16-git-send-email-manasi.d.navare@intel.com> References: <1533003183-22793-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 984C06E273 for ; Tue, 31 Jul 2018 02:10:39 +0000 (UTC) In-Reply-To: <1533003183-22793-1-git-send-email-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KClRoaXMgcGF0 Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6CgoxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKRFNDIHNwZWNpZmljYXRpb24uIFRoZXNlIGFy ZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKdG8gY29tcHV0ZSB0aGUgUFBTIHBhcmFt ZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgU2luay4KMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCnN0YXRlIG9mIGludGVsX2NydGNfc3Rh dGUuCjMuIENvbXB1dGUgYWxsIHBhcmFtZXRlcnMgdGhhdCBhcmUgVkVTQSBEU0Mgc3BlY2lmaWMK ClRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmlu Zwpjb21wdXRlX2NvbmZpZygpIHRvIHZhbGlkYXRlIGlmIGRpc3BsYXkgc3RyZWFtIGNvbXByZXNz aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2NSAoRnJvbSBNYW5h c2kpOgoqIEFkZCBsb2dpYyB0byBsaW1pdCB0aGUgbWF4IGxpbmUgYnVmIGRlcHRoIGZvciBEU0Mg MS4xIHRvIDEzCmFzIHBlciBEU0MgMS4xIHNwZWMKCnY0IChGcm9tIEdhdXJhdik6CiogUmViYXNl IG9uIGxhdGVzdCBkcm0gdGlwCiogcmVuYW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQoqIFBvcHVs YXRlIGxpbmVidWZfZGVwdGggdmFyaWFibGUoTWFuYXNpKQoKdjMgKEZyb20gR2F1cmF2KToKKiBS ZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hlcyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0IHBhdGNo CnNlcmllcwoqIFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kpCiogQ2hhbmdlIHRo ZSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nKEdhdXJh dikKCkZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlOgoqIERvbid0IHVzZSBtYWNybyBU V09TX0NPTVBMRU1FTlQKKiBNZW50aW9uIGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJjZSBvZiBS QyBwYXJhbXMKKiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKKiBVc2luZyBz aW5nbGUgYXNzc2lnbm1lbnQgZm9yIGFzc2lnbmluZyByY19yYW5nZV9wYXJhbXMKKiBVc2luZyA8 PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQgcmVtb3ZpbmcgdGhlIGNvbW1lbnRzCmFib3V0IHRoZSBm aXhlZCBwb2ludCBudW1iZXJzCgp2MiAoRnJvbSBNYW5hc2kpOgoqIFVwZGF0ZSBsb2dpYyBmb3Ig bWlub3IgdmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2YWx1ZQphbmQgd2hhdCBzdXBwb3J0 ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCiogVXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBpbnN0ZWFk IG9mIGludGVsX2RwIHN0cnVjdAoqIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBo ZWFkZXIgZmlsZQoqIFVzZSB1MTYsIHU4IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5vdCBuZWVk ZWQKKiAqIENvbXB1dGUgdGhlIERTQyBwYXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNvbXB1dGUg Y29uZmlnCnNpbmNlIHRoZSBjb21wdXRhdGlvbiBjYW4gZmFpbCAoTWFuYXNpKQoKQ2M6IEphbmkg TmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hh LnNyaXZhdHNhQGludGVsLmNvbT4KQ2M6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBp bnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBp bnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgIHwgICAzICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgfCAgIDcgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Zkc2MuYyB8IDQ1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgIHwgICAzICsKIGluY2x1ZGUvZHJtL2RybV9k c2MuaCAgICAgICAgICAgICB8ICAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NzYgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDU3OTRmMTAuLmRlYWYy ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xNTMsNyArMTUzLDggQEAgaTkxNS15ICs9IGR2 b19jaDcwMTcubyBcCiAJICBpbnRlbF9zZHZvLm8gXAogCSAgaW50ZWxfdHYubyBcCiAJICB2bHZf ZHNpLm8gXAotCSAgdmx2X2RzaV9wbGwubworCSAgdmx2X2RzaV9wbGwubyBcCisJICBpbnRlbF92 ZHNjLm8KIAogIyBQb3N0LW1vcnRlbSBkZWJ1ZyBhbmQgR1BVIGhhbmcgc3RhdGUgY2FwdHVyZQog aTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSArPSBpOTE1X2dwdV9lcnJvci5v CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBmYjE3OWYxLi5kN2ZjNTBmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKQEAgLTIwNDIsNiArMjA0MiwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9k cF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCXJldHVy biBmYWxzZTsKIAkJfQogCX0KKwlpZiAoaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKGludGVs X2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7CisJCURSTV9FUlJPUigiQ2Fubm90IGNvbXB1dGUgdmFs aWQgRFNDIHBhcmFtZXRlcnMgZm9yIElucHV0IEJwcCA9ICVkIgorCQkJICAiQ29tcHJlc3NlZCBC UFAgPSAlZFxuIiwKKwkJCSAgcGlwZV9jb25maWctPnBpcGVfYnBwLAorCQkJICBwaXBlX2NvbmZp Zy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAJcGlw ZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKIAlEUk1fREVC VUdfS01TKCJEUCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAlZCAiCiAJCSAgICAgICJD b21wcmVzc2VkIEJwcCA9ICVkIFNsaWNlIENvdW50ID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCmluZGV4IGFiNTY3YzMuLjAxYWIyM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CkBAIC0xNzQ5LDYgKzE3NDksMTAgQEAgdWludDE2X3QgaW50ZWxfZHBfZHNjX2dldF9vdXRwdXRf YnBwKGludCBsaW5rX2Nsb2NrLCB1aW50OF90IGxhbmVfY291bnQsCiB1aW50OF90IGludGVsX2Rw X2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1vZGVf Y2xvY2ssCiAJCQkJICAgICBpbnQgbW9kZV9oZGlzcGxheSk7CiAKKy8qIGludGVsX3Zkc2MuYyAq LworaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAorCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOworCiBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBsYW5l X2NvdW50KQogewogCXJldHVybiB+KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF92ZHNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MzNiNTMwMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zk c2MuYwpAQCAtMCwwICsxLDQ1OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4K KyAqICAgICAgICAgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KKyAq LworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KKyNp bmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2Rydi5oIgorCitlbnVtIFJPV19J TkRFWF9CUFAgeworCVJPV19JTkRFWF82QlBQID0gMCwKKwlST1dfSU5ERVhfOEJQUCwKKwlST1df SU5ERVhfMTBCUFAsCisJUk9XX0lOREVYXzEyQlBQLAorCVJPV19JTkRFWF8xNUJQUCwKKwlNQVhf Uk9XX0lOREVYCit9OworCitlbnVtIENPTFVNTl9JTkRFWF9CUEMgeworCUNPTFVNTl9JTkRFWF84 QlBDID0gMCwKKwlDT0xVTU5fSU5ERVhfMTBCUEMsCisJQ09MVU1OX0lOREVYXzEyQlBDLAorCUNP TFVNTl9JTkRFWF8xNEJQQywKKwlDT0xVTU5fSU5ERVhfMTZCUEMsCisJTUFYX0NPTFVNTl9JTkRF WAorfTsKKworI2RlZmluZSBEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOCQkxCisKKy8qIEZyb20g RFNDX3YxLjExIHNwZWMsIHJjX3BhcmFtZXRlcl9TZXQgc3ludGF4IGVsZW1lbnQgdHlwaWNhbGx5 IGNvbnN0YW50ICovCitzdGF0aWMgdTE2IHJjX2J1Zl90aHJlc2hbXSA9IHsKKwk4OTYsIDE3OTIs IDI2ODgsIDM1ODQsIDQ0ODAsIDUzNzYsIDYyNzIsIDY3MjAsIDcxNjgsIDc2MTYsCisJNzc0NCwg Nzg3MiwgODAwMCwgODA2NAorfTsKKworc3RydWN0IHJjX3BhcmFtZXRlcnMgeworCXUxNiBpbml0 aWFsX3htaXRfZGVsYXk7CisJdTggZmlyc3RfbGluZV9icGdfb2Zmc2V0OworCXUxNiBpbml0aWFs X29mZnNldDsKKwl1OCBmbGF0bmVzc19taW5fcXA7CisJdTggZmxhdG5lc3NfbWF4X3FwOworCXU4 IHJjX3F1YW50X2luY3JfbGltaXQwOworCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOworCXN0cnVj dCBkc2NfcmNfcmFuZ2VfcGFyYW1ldGVycyByY19yYW5nZV9wYXJhbXNbRFNDX05VTV9CVUZfUkFO R0VTXTsKK307CisKKy8qCisgKiBTZWxlY3RlZCBSYXRlIENvbnRyb2wgUmVsYXRlZCBQYXJhbWV0 ZXIgUmVjb21tZW5kZWQgVmFsdWVzCisgKiBmcm9tIERTQ192MS4xMSBzcGVjICYgQyBNb2RlbCBy ZWxlYXNlOiBEU0NfbW9kZWxfMjAxNjEyMTIKKyAqLworc3RhdGljIHN0cnVjdCByY19wYXJhbWV0 ZXJzIHJjX3BhcmFtc1tdW01BWF9DT0xVTU5fSU5ERVhdID0geworeworCS8qIDZCUFAvOEJQQyAq LworCXsgNzY4LCAxNSwgNjE0NCwgMywgMTMsIDExLCAxMSwgeworCQl7IDAsIDQsIDAgfSwgeyAx LCA2LCAtMiB9LCB7IDMsIDgsIC0yIH0sIHsgNCwgOCwgLTQgfSwKKwkJeyA1LCA5LCAtNiB9LCB7 IDUsIDksIC02IH0sIHsgNiwgOSwgLTYgfSwgeyA2LCAxMCwgLTggfSwKKwkJeyA3LCAxMSwgLTgg fSwgeyA4LCAxMiwgLTEwIH0sIHsgOSwgMTIsIC0xMCB9LCB7IDEwLCAxMiwgLTEyIH0sCisJCXsg MTAsIDEyLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEzLCAxNCwgLTEyIH0KKwkJfQorCX0s CisJLyogNkJQUC8xMEJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgNywgMTcsIDE1LCAxNSwgewor CQl7IDAsIDgsIDAgfSwgeyAzLCAxMCwgLTIgfSwgeyA3LCAxMiwgLTIgfSwgeyA4LCAxMiwgLTQg fSwKKwkJeyA5LCAxMywgLTYgfSwgeyA5LCAxMywgLTYgfSwgeyAxMCwgMTMsIC02IH0sIHsgMTAs IDE0LCAtOCB9LAorCQl7IDExLCAxNSwgLTggfSwgeyAxMiwgMTYsIC0xMCB9LCB7IDEzLCAxNiwg LTEwIH0sCisJCXsgMTQsIDE2LCAtMTIgfSwgeyAxNCwgMTYsIC0xMiB9LCB7IDE1LCAxNiwgLTEy IH0sCisJCXsgMTcsIDE4LCAtMTIgfQorCQl9CisJfSwKKwkvKiA2QlBQLzEyQlBDICovCisJeyA3 NjgsIDE1LCA2MTQ0LCAxMSwgMjEsIDE5LCAxOSwgeworCQl7IDAsIDEyLCAwIH0sIHsgNSwgMTQs IC0yIH0sIHsgMTEsIDE2LCAtMiB9LCB7IDEyLCAxNiwgLTQgfSwKKwkJeyAxMywgMTcsIC02IH0s IHsgMTMsIDE3LCAtNiB9LCB7IDE0LCAxNywgLTYgfSwgeyAxNCwgMTgsIC04IH0sCisJCXsgMTUs IDE5LCAtOCB9LCB7IDE2LCAyMCwgLTEwIH0sIHsgMTcsIDIwLCAtMTAgfSwKKwkJeyAxOCwgMjAs IC0xMiB9LCB7IDE4LCAyMCwgLTEyIH0sIHsgMTksIDIwLCAtMTIgfSwKKwkJeyAyMSwgMjIsIC0x MiB9CisJCX0KKwl9LAorCS8qIDZCUFAvMTRCUEMgKi8KKwl7IDc2OCwgMTUsIDYxNDQsIDE1LCAy NSwgMjMsIDI3LCB7CisJCXsgMCwgMTYsIDAgfSwgeyA3LCAxOCwgLTIgfSwgeyAxNSwgMjAsIC0y IH0sIHsgMTYsIDIwLCAtNCB9LAorCQl7IDE3LCAyMSwgLTYgfSwgeyAxNywgMjEsIC02IH0sIHsg MTgsIDIxLCAtNiB9LCB7IDE4LCAyMiwgLTggfSwKKwkJeyAxOSwgMjMsIC04IH0sIHsgMjAsIDI0 LCAtMTAgfSwgeyAyMSwgMjQsIC0xMCB9LAorCQl7IDIyLCAyNCwgLTEyIH0sIHsgMjIsIDI0LCAt MTIgfSwgeyAyMywgMjQsIC0xMiB9LAorCQl7IDI1LCAyNiwgLTEyIH0KKwkJfQorCX0sCisJLyog NkJQUC8xNkJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgMTksIDI5LCAyNywgMjcsIHsKKwkJeyAw LCAyMCwgMCB9LCB7IDksIDIyLCAtMiB9LCB7IDE5LCAyNCwgLTIgfSwgeyAyMCwgMjQsIC00IH0s CisJCXsgMjEsIDI1LCAtNiB9LCB7IDIxLCAyNSwgLTYgfSwgeyAyMiwgMjUsIC02IH0sIHsgMjIs IDI2LCAtOCB9LAorCQl7IDIzLCAyNywgLTggfSwgeyAyNCwgMjgsIC0xMCB9LCB7IDI1LCAyOCwg LTEwIH0sCisJCXsgMjYsIDI4LCAtMTIgfSwgeyAyNiwgMjgsIC0xMiB9LCB7IDI3LCAyOCwgLTEy IH0sCisJCXsgMjksIDMwLCAtMTIgfQorCQl9CisJfSwKK30sCit7CisJLyogOEJQUC84QlBDICov CisJeyA1MTIsIDEyLCA2MTQ0LCAzLCAxMiwgMTEsIDExLCB7CisJCXsgMCwgNCwgMiB9LCB7IDAs IDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7IDMs IDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0sIHsg MywgMTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwgeyA1LCAxMiwgLTEyIH0sCisJCXsgNSwgMTMs IC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9CisJCX0KKwl9LAorCS8qIDhC UFAvMTBCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDcsIDE2LCAxNSwgMTUsIHsKKwkJeyAwLCA0 LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAgfSwgeyA1LCAxMCwgLTIgfSwKKwkJeyA3LCAx MSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKKwkJ eyA3LCAxMywgLTggfSwgeyA3LCAxNCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9LCB7IDksIDE2LCAt MTIgfSwKKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEsIDE3LCAtMTIgfSwgeyAxNywgMTksIC0xMiB9 CisJCX0KKwl9LAorCS8qIDhCUFAvMTJCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDExLCAyMCwg MTksIDE5LCB7CisJCXsgMCwgMTIsIDIgfSwgeyA0LCAxMiwgMCB9LCB7IDksIDEzLCAwIH0sIHsg OSwgMTQsIC0yIH0sCisJCXsgMTEsIDE1LCAtNCB9LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUs IC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9 LCB7IDEzLCAxOSwgLTEwIH0sCisJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7 IDE1LCAyMSwgLTEyIH0sCisJCXsgMjEsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkvKiA4QlBQLzE0 QlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDEyLCAw IH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMiwgMTcsIC0yIH0sCisJCXsgMTUs IDE5LCAtNCB9LCB7IDE1LCAxOSwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9 LAorCQl7IDE1LCAyMSwgLTggfSwgeyAxNSwgMjIsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCisJ CXsgMTcsIDIzLCAtMTIgfSwgeyAxNywgMjMsIC0xMiB9LCB7IDIxLCAyNCwgLTEyIH0sCisJCXsg MjQsIDI1LCAtMTIgfQorCQl9CisJfSwKKwkvKiA4QlBQLzE2QlBDICovCisJeyA1MTIsIDEyLCA2 MTQ0LCAxOSwgMjgsIDI3LCAyNywgeworCQl7IDAsIDEyLCAyIH0sIHsgNiwgMTQsIDAgfSwgeyAx MywgMTcsIDAgfSwgeyAxNSwgMjAsIC0yIH0sCisJCXsgMTksIDIzLCAtNCB9LCB7IDE5LCAyMywg LTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAorCQl7IDE5LCAyNSwgLTggfSwg eyAxOSwgMjYsIC0xMCB9LCB7IDIxLCAyNiwgLTEwIH0sCisJCXsgMjEsIDI3LCAtMTIgfSwgeyAy MSwgMjcsIC0xMiB9LCB7IDI1LCAyOCwgLTEyIH0sCisJCXsgMjgsIDI5LCAtMTIgfQorCQl9CisJ fSwKK30sCit7CisJLyogMTBCUFAvOEJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMywgMTIsIDEx LCAxMSwgeworCQl7IDAsIDMsIDIgfSwgeyAwLCA0LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDIsIDYs IC0yIH0sCisJCXsgMywgNywgLTQgfSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywg OCwgLTggfSwKKwkJeyAzLCA5LCAtOCB9LCB7IDMsIDksIC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwg eyA1LCAxMCwgLTEwIH0sCisJCXsgNSwgMTEsIC0xMiB9LCB7IDcsIDExLCAtMTIgfSwgeyAxMSwg MTIsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQLzEwQlBDICovCisJeyA0MTAsIDE1LCA1NjMy LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwgNywgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAw IH0sIHsgNiwgMTAsIC0yIH0sCisJCXsgNywgMTEsIC00IH0sIHsgNywgMTEsIC02IH0sIHsgNywg MTEsIC04IH0sIHsgNywgMTIsIC04IH0sCisJCXsgNywgMTMsIC04IH0sIHsgNywgMTMsIC0xMCB9 LCB7IDksIDE0LCAtMTAgfSwgeyA5LCAxNCwgLTEwIH0sCisJCXsgOSwgMTUsIC0xMiB9LCB7IDEx LCAxNSwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMEJQUC8xMkJQQyAq LworCXsgNDEwLCAxNSwgNTYzMiwgMTEsIDIwLCAxOSwgMTksIHsKKwkJeyAwLCAxMSwgMiB9LCB7 IDQsIDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMCwgMTQsIC0yIH0sCisJCXsgMTEsIDE1LCAt NCB9LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7 IDExLCAxNywgLTggfSwgeyAxMSwgMTcsIC0xMCB9LCB7IDEzLCAxOCwgLTEwIH0sCisJCXsgMTMs IDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMiB9LCB7IDE1LCAxOSwgLTEyIH0sCisJCXsgMTksIDIw LCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMEJQUC8xNEJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwg MTUsIDI0LCAyMywgMjMsIHsKKwkJeyAwLCAxMSwgMiB9LCB7IDUsIDEzLCAwIH0sIHsgMTEsIDE1 LCAwIH0sIHsgMTMsIDE4LCAtMiB9LAorCQl7IDE1LCAxOSwgLTQgfSwgeyAxNSwgMTksIC02IH0s IHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwKKwkJeyAxNSwgMjEsIC04IH0sIHsgMTUs IDIxLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LAorCQl7IDE3LCAyMiwgLTEwIH0sIHsgMTcsIDIz LCAtMTIgfSwgeyAxOSwgMjMsIC0xMiB9LAorCQl7IDIzLCAyNCwgLTEyIH0KKwkJfQorCX0sCisJ LyogMTBCUFAvMTZCUEMgKi8KKwl7IDQxMCwgMTUsIDU2MzIsIDE5LCAyOCwgMjcsIDI3LCB7CisJ CXsgMCwgMTEsIDIgfSwgeyA2LCAxNCwgMCB9LCB7IDEzLCAxNywgMCB9LCB7IDE2LCAyMCwgLTIg fSwKKwkJeyAxOSwgMjMsIC00IH0sIHsgMTksIDIzLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAx OSwgMjQsIC04IH0sCisJCXsgMTksIDI1LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI2 LCAtMTAgfSwKKwkJeyAyMSwgMjYsIC0xMCB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjMsIDI3LCAt MTIgfSwKKwkJeyAyNywgMjgsIC0xMiB9CisJCX0KKwl9LAorfSwKK3sKKwkvKiAxMkJQUC84QlBD ICovCisJeyAzNDEsIDE1LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7CisJCXsgMCwgMiwgMiB9LCB7 IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7 IDMsIDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0s IHsgMywgMTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwKKwkJeyA1LCAxMiwgLTEyIH0sIHsgNSwg MTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9CisJCX0KKwl9LAorCS8q IDEyQlBQLzEwQlBDICovCisJeyAzNDEsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsg MCwgMiwgMiB9LCB7IDIsIDUsIDAgfSwgeyAzLCA3LCAwIH0sIHsgNCwgOCwgLTIgfSwKKwkJeyA2 LCA5LCAtNCB9LCB7IDcsIDEwLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEyLCAtOCB9LAor CQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsgOSwgMTYs IC0xMiB9LAorCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEy IH0KKwkJfQorCX0sCisJLyogMTJCUFAvMTJCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDExLCAy MCwgMTksIDE5LCB7CisJCXsgMCwgNiwgMiB9LCB7IDQsIDksIDAgfSwgeyA3LCAxMSwgMCB9LCB7 IDgsIDEyLCAtMiB9LAorCQl7IDEwLCAxMywgLTQgfSwgeyAxMSwgMTQsIC02IH0sIHsgMTEsIDE1 LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKKwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAg fSwgeyAxMywgMTksIC0xMCB9LAorCQl7IDEzLCAyMCwgLTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwg eyAxNSwgMjEsIC0xMiB9LAorCQl7IDIxLCAyMywgLTEyIH0KKwkJfQorCX0sCisJLyogMTJCUFAv MTRCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgNiwg MiB9LCB7IDcsIDEwLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMSwgMTYsIC0yIH0sCisJCXsgMTQs IDE3LCAtNCB9LCB7IDE1LCAxOCwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9 LAorCQl7IDE1LCAyMCwgLTggfSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMSwgLTEwIH0sCisJ CXsgMTcsIDIxLCAtMTIgfSwgeyAxNywgMjEsIC0xMiB9LCB7IDE5LCAyMiwgLTEyIH0sCisJCXsg MjIsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMkJQUC8xNkJQQyAqLworCXsgMzQxLCAxNSwg MjA0OCwgMTksIDI4LCAyNywgMjcsIHsKKwkJeyAwLCA2LCAyIH0sIHsgNiwgMTEsIDAgfSwgeyAx MSwgMTUsIDAgfSwgeyAxNCwgMTgsIC0yIH0sCisJCXsgMTgsIDIxLCAtNCB9LCB7IDE5LCAyMiwg LTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAorCQl7IDE5LCAyNCwgLTggfSwg eyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAyNSwgLTEwIH0sCisJCXsgMjEsIDI1LCAtMTIgfSwgeyAy MSwgMjUsIC0xMiB9LCB7IDIzLCAyNiwgLTEyIH0sCisJCXsgMjYsIDI3LCAtMTIgfQorCQl9CisJ fSwKK30sCit7CisJLyogMTVCUFAvOEJQQyAqLworCXsgMjczLCAxNSwgMjA0OCwgMywgMTIsIDEx LCAxMSwgeworCQl7IDAsIDAsIDEwIH0sIHsgMCwgMSwgOCB9LCB7IDAsIDEsIDYgfSwgeyAwLCAy LCA0IH0sCisJCXsgMSwgMiwgMiB9LCB7IDEsIDMsIDAgfSwgeyAxLCAzLCAtMiB9LCB7IDIsIDQs IC00IH0sCisJCXsgMiwgNSwgLTYgfSwgeyAzLCA1LCAtOCB9LCB7IDQsIDYsIC0xMCB9LCB7IDQs IDcsIC0xMCB9LAorCQl7IDUsIDcsIC0xMiB9LCB7IDcsIDgsIC0xMiB9LCB7IDgsIDksIC0xMiB9 CisJCX0KKwl9LAorCS8qIDE1QlBQLzEwQlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCA3LCAxNiwg MTUsIDE1LCB7CisJCXsgMCwgMiwgMTAgfSwgeyAyLCA1LCA4IH0sIHsgMywgNSwgNiB9LCB7IDQs IDYsIDQgfSwKKwkJeyA1LCA2LCAyIH0sIHsgNSwgNywgMCB9LCB7IDUsIDcsIC0yIH0sIHsgNiwg OCwgLTQgfSwKKwkJeyA2LCA5LCAtNiB9LCB7IDcsIDksIC04IH0sIHsgOCwgMTAsIC0xMCB9LCB7 IDgsIDExLCAtMTAgfSwKKwkJeyA5LCAxMSwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAxMiwg MTMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQLzEyQlBDICovCisJeyAyNzMsIDE1LCAyMDQ4 LCAxMSwgMjAsIDE5LCAxOSwgeworCQl7IDAsIDQsIDEwIH0sIHsgMiwgNywgOCB9LCB7IDQsIDks IDYgfSwgeyA2LCAxMSwgNCB9LAorCQl7IDksIDExLCAyIH0sIHsgOSwgMTEsIDAgfSwgeyA5LCAx MiwgLTIgfSwgeyAxMCwgMTIsIC00IH0sCisJCXsgMTEsIDEzLCAtNiB9LCB7IDExLCAxMywgLTgg fSwgeyAxMiwgMTQsIC0xMCB9LAorCQl7IDEzLCAxNSwgLTEwIH0sIHsgMTMsIDE1LCAtMTIgfSwg eyAxNSwgMTYsIC0xMiB9LAorCQl7IDE2LCAxNywgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAv MTRCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgNCwg MTAgfSwgeyAzLCA4LCA4IH0sIHsgNiwgMTEsIDYgfSwgeyA5LCAxNCwgNCB9LAorCQl7IDEzLCAx NSwgMiB9LCB7IDEzLCAxNSwgMCB9LCB7IDEzLCAxNiwgLTIgfSwgeyAxNCwgMTYsIC00IH0sCisJ CXsgMTUsIDE3LCAtNiB9LCB7IDE1LCAxNywgLTggfSwgeyAxNiwgMTgsIC0xMCB9LAorCQl7IDE3 LCAxOSwgLTEwIH0sIHsgMTcsIDE5LCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAorCQl7IDIwLCAy MSwgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTZCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgs IDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgNCwgMTAgfSwgeyA0LCA5LCA4IH0sIHsgOCwgMTMs IDYgfSwgeyAxMiwgMTcsIDQgfSwKKwkJeyAxNywgMTksIDIgfSwgeyAxNywgMjAsIDAgfSwgeyAx NywgMjAsIC0yIH0sIHsgMTgsIDIwLCAtNCB9LAorCQl7IDE5LCAyMSwgLTYgfSwgeyAxOSwgMjEs IC04IH0sIHsgMjAsIDIyLCAtMTAgfSwKKwkJeyAyMSwgMjMsIC0xMCB9LCB7IDIxLCAyMywgLTEy IH0sIHsgMjMsIDI0LCAtMTIgfSwKKwkJeyAyNCwgMjUsIC0xMiB9CisJCX0KKwl9Cit9Cit9Owor CitzdGF0aWMgaW50IGdldF9yb3dfaW5kZXhfZm9yX3JjX3BhcmFtcyh1MTYgY29tcHJlc3NlZF9i cHApCit7CisJc3dpdGNoIChjb21wcmVzc2VkX2JwcCkgeworCWNhc2UgNjoKKwkJcmV0dXJuIFJP V19JTkRFWF82QlBQOworCWNhc2UgODoKKwkJcmV0dXJuIFJPV19JTkRFWF84QlBQOworCWNhc2Ug MTA6CisJCXJldHVybiBST1dfSU5ERVhfMTBCUFA7CisJY2FzZSAxMjoKKwkJcmV0dXJuIFJPV19J TkRFWF8xMkJQUDsKKwljYXNlIDE1OgorCQlyZXR1cm4gUk9XX0lOREVYXzE1QlBQOworCWRlZmF1 bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKworc3RhdGljIGludCBnZXRfY29sdW1uX2lu ZGV4X2Zvcl9yY19wYXJhbXModTggYml0c19wZXJfY29tcG9uZW50KQoreworCXN3aXRjaCAoYml0 c19wZXJfY29tcG9uZW50KSB7CisJY2FzZSA4OgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzhCUEM7 CisJY2FzZSAxMDoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xMEJQQzsKKwljYXNlIDEyOgorCQly ZXR1cm4gQ09MVU1OX0lOREVYXzEyQlBDOworCWNhc2UgMTQ6CisJCXJldHVybiBDT0xVTU5fSU5E RVhfMTRCUEM7CisJY2FzZSAxNjoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xNkJQQzsKKwlkZWZh dWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK2ludCBpbnRlbF9kcF9jb21wdXRlX2Rz Y19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQoreworCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19j ZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19jZmc7CisJdTE2IGNvbXByZXNzZWRfYnBwID0gcGlw ZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHA7CisJdTggaSA9IDA7CisJdTggcm93 X2luZGV4ID0gMDsKKwl1OCBjb2x1bW5faW5kZXggPSAwOworCXU4IGxpbmVfYnVmX2RlcHRoID0g MDsKKworCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlLmNydGNfaGRpc3BsYXk7CisJdmRzY19jZmctPnBpY19oZWlnaHQgPSBwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJdmRzY19jZmctPnNsaWNlX3dpZHRo ID0gRElWX1JPVU5EX1VQKAorCQkJCQl2ZHNjX2NmZy0+cGljX3dpZHRoLAorCQkJCQlwaXBlX2Nv bmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCk7CisJLyoKKwkgKiBTbGljZSBIZWlnaHQgb2Yg OCB3b3JrcyBmb3IgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgcGFuZWxzLiBTbyBzdGFydAorCSAq IHdpdGggdGhhdCBpZiBwaWNfaGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDguCisJ ICogRXZlbnR1YWxseSBhZGQgbG9naWMgdG8gdHJ5IG11bHRpcGxlIHNsaWNlIGhlaWdodHMuCisJ ICovCisJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQorCQl2ZHNjX2NmZy0+c2xp Y2VfaGVpZ2h0ID0gODsKKwllbHNlIGlmICh2ZHNjX2NmZy0+cGljX2hlaWdodCAlIDQgPT0gMCkK KwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7CisJZWxzZQorCQl2ZHNjX2NmZy0+c2xpY2Vf aGVpZ2h0ID0gMjsKKworCS8qIFZhbHVlcyBmaWxsZWQgZnJvbSBEU0MgU2luayBEUENEICovCisJ dmRzY19jZmctPmRzY192ZXJzaW9uX21ham9yID0gKAorCQkJaW50ZWxfZHAtPmRzY19kcGNkW0RQ X0RTQ19SRVYgLSBEUF9EU0NfU1VQUE9SVF0gJgorCQkJCURQX0RTQ19NQUpPUl9NQVNLKSA+PiBE UF9EU0NfTUFKT1JfU0hJRlQ7CisJdmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID0gbWluKERT Q19TVVBQT1JURURfVkVSU0lPTl9NSU4sCisJCQkoaW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19S RVYgLSBEUF9EU0NfU1VQUE9SVF0gJgorCQkJCURQX0RTQ19NSU5PUl9NQVNLKSA+PiBEUF9EU0Nf TUlOT1JfU0hJRlQpOworCisJdmRzY19jZmctPmNvbnZlcnRfcmdiID0gaW50ZWxfZHAtPmRzY19k cGNkWworCQkJCURQX0RTQ19ERUNfQ09MT1JfRk9STUFUX0NBUCAtIERQX0RTQ19TVVBQT1JUXSAm CisJCQkJCQkJCURQX0RTQ19SR0I7CisKKwlsaW5lX2J1Zl9kZXB0aCA9IGRybV9kcF9kc2Nfc2lu a19saW5lX2J1Zl9kZXB0aChpbnRlbF9kcC0+ZHNjX2RwY2QpOworCWlmICh2ZHNjX2NmZy0+ZHNj X3ZlcnNpb25fbWlub3IgPT0gMikKKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoID0gKGxpbmVf YnVmX2RlcHRoID09IERTQ18xXzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUykgPworCQkJRFNDXzFf Ml9NQVhfTElORUJVRl9ERVBUSF9WQUwgOiBsaW5lX2J1Zl9kZXB0aDsKKwllbHNlCisJCXZkc2Nf Y2ZnLT5saW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA+IERTQ18xXzFfTUFYX0xJTkVC VUZfREVQVEhfQklUUykgPworCQkJRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRTIDogbGlu ZV9idWZfZGVwdGg7CisKKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBZQ2JDciAqLworCXZk c2NfY2ZnLT5lbmFibGU0MjIgPSBmYWxzZTsKKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBW QlIgKi8KKwl2ZHNjX2NmZy0+dmJyX2VuYWJsZSA9IGZhbHNlOworCXZkc2NfY2ZnLT5ibG9ja19w cmVkX2VuYWJsZSA9CisJCQlpbnRlbF9kcC0+ZHNjX2RwY2RbCisJCQlEUF9EU0NfQkxLX1BSRURJ Q1RJT05fU1VQUE9SVCAtIERQX0RTQ19TVVBQT1JUXSAmCisJCQkJCURQX0RTQ19CTEtfUFJFRElD VElPTl9JU19TVVBQT1JURUQ7CisKKwkvKiBHZW4gMTEgb25seSBzdXBwb3J0cyBpbnRlZ3JhbCB2 YWx1ZXMgb2YgYnBwICovCisJdmRzY19jZmctPmJpdHNfcGVyX3BpeGVsID0gY29tcHJlc3NlZF9i cHAgPDwgNDsKKwl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25maWctPnBp cGVfYnBwIC8gMzsKKworCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBp KyspIHsKKwkJLyoKKwkJICogc2l4IDBzIGFyZSBhcHBlbmRlZCB0byB0aGUgbHNiIG9mIGVhY2gg dGhyZXNob2xkIHZhbHVlCisJCSAqIGludGVybmFsbHkgaW4gaC93LgorCQkgKiBPbmx5IDggYml0 cyBhcmUgYWxsb3dlZCBmb3IgcHJvZ3JhbW1pbmcgUmNCdWZUaHJlc2hvbGQKKwkJICovCisJCXZk c2NfY2ZnLT5yY19idWZfdGhyZXNoW2ldID0gcmNfYnVmX3RocmVzaFtpXSA+PiA2OworCX0KKwor CS8qCisJICogRm9yIDZicHAsIFJDIEJ1ZmZlciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBk aWZmZXJlbnQgdmFsdWUKKwkgKiBhcyBwZXIgQyBNb2RlbAorCSAqLworCWlmIChjb21wcmVzc2Vk X2JwcCA9PSA2KSB7CisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoWzEyXSA9IDB4N0M7CisJCXZk c2NfY2ZnLT5yY19idWZfdGhyZXNoWzEzXSA9IDB4N0Q7CisJfQorCisJcm93X2luZGV4ID0gZ2V0 X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1zKGNvbXByZXNzZWRfYnBwKTsKKwljb2x1bW5faW5kZXgg PQorCQlnZXRfY29sdW1uX2luZGV4X2Zvcl9yY19wYXJhbXModmRzY19jZmctPmJpdHNfcGVyX2Nv bXBvbmVudCk7CisKKwlpZiAocm93X2luZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCXZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQorCQly Y19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZpcnN0X2xpbmVfYnBnX29mZnNldDsK Kwl2ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2RlbGF5ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1b Y29sdW1uX2luZGV4XS5pbml0aWFsX3htaXRfZGVsYXk7CisJdmRzY19jZmctPmluaXRpYWxfb2Zm c2V0ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX29mZnNl dDsKKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWluX3FwID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1b Y29sdW1uX2luZGV4XS5mbGF0bmVzc19taW5fcXA7CisJdmRzY19jZmctPmZsYXRuZXNzX21heF9x cCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmxhdG5lc3NfbWF4X3Fw OworCXZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MCA9CisJCXJjX3BhcmFtc1tyb3dfaW5k ZXhdW2NvbHVtbl9pbmRleF0ucmNfcXVhbnRfaW5jcl9saW1pdDA7CisJdmRzY19jZmctPnJjX3F1 YW50X2luY3JfbGltaXQxID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5y Y19xdWFudF9pbmNyX2xpbWl0MTsKKworCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5H RVM7IGkrKykKKwkJdmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXSA9CisJCQlyY19wYXJhbXNb cm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXTsKKworCS8qCisJICog Qml0c1BlckNvbXBvbmVudCB2YWx1ZSBkZXRlcm1pbmVzIG11eF93b3JkX3NpemU6CisJICogV2hl biBCaXRzUGVyQ29tcG9uZW50IGlzIDEyYnBjLCBtdXhXb3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRv IDY0IGJpdHMKKwkgKiBXaGVuIEJpdHNQZXJDb21wb25lbnQgaXMgOCBvciAxMGJwYywgbXV4V29y ZFNpemUgd2lsbCBiZSBlcXVhbCB0bworCSAqIDQ4IGJpdHMKKwkgKi8KKwlpZiAodmRzY19jZmct PmJpdHNfcGVyX2NvbXBvbmVudCA9PSA4IHx8CisJCQkJCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21w b25lbnQgPT0gMTApCisJCXZkc2NfY2ZnLT5tdXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JEX1NJ WkVfOF8xMF9CUEM7CisJZWxzZSBpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAx MikKKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBEU0NfTVVYX1dPUkRfU0laRV8xMl9CUEM7 CisKKwkvKiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBhIDYgYml0IHZhbHVlIHdpdGggMyBmcmFjdGlv bmFsIGJpdHMgKFUzLjMpICovCisJdmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPSAodmRz Y19jZmctPnJjX21vZGVsX3NpemUgPDwgMykgLworCQkJKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXpl IC0gdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBl ci5oCmluZGV4IDBjZjI0MDcuLmYxNzg5MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9k cF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKQEAgLTE4Niw2ICsx ODYsOSBAQAogCiAjZGVmaW5lIERQX0dVSUQJCQkJICAgIDB4MDMwICAgLyogMS4yICovCiAKKyNk ZWZpbmUgRFBfRFNDX1JDX1BJWEVMU19QRVJfR1JPVVAJCTMKKyNkZWZpbmUgRFBfRFNDX1NDQUxF X0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVgJNDA5NQorCiAjZGVmaW5lIERQX0RTQ19TVVBQT1JUICAg ICAgICAgICAgICAgICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovCiAjIGRlZmluZSBEUF9EU0Nf REVDT01QUkVTU0lPTl9JU19TVVBQT1JURUQgICgxIDw8IDApCiAKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9kc2MuaCBiL2luY2x1ZGUvZHJtL2RybV9kc2MuaAppbmRleCA0Y2ZjZDAzLi43 OTZjNzk4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHNjLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2RzYy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBkc2NfcmNfcmFuZ2VfcGFyYW1l dGVycyB7CiAJLyogTWF4IFF1YW50aXphdGlvbiBQYXJhbWV0ZXJzIGFsbG93ZWQgZm9yIHRoaXMg cmFuZ2UgKi8KIAl1OCByYW5nZV9tYXhfcXA7CiAJLyogQml0cy9ncm91cCBvZmZzZXQgdG8gYXBw bHkgdG8gdGFyZ2V0IGZvciB0aGlzIGdyb3VwICovCi0JdTggcmFuZ2VfYnBnX29mZnNldDsKKwlz OCByYW5nZV9icGdfb2Zmc2V0OwogfTsKIAogc3RydWN0IGRybV9kc2NfY29uZmlnIHsKLS0gCjIu Ny40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK