From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 15/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Tue, 28 Aug 2018 16:31:54 -0700 Message-ID: <20180828233154.GB4186@intel.com> References: <1533071239-28815-1-git-send-email-manasi.d.navare@intel.com> <1533071239-28815-16-git-send-email-manasi.d.navare@intel.com> <83F5C7385F545743AD4FB2A62F75B07347F4818F@ORSMSX108.amr.corp.intel.com> <20180828224720.GA4186@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 C4A23891EB for ; Tue, 28 Aug 2018 23:29:25 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180828224720.GA4186@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Srivatsa, Anusha" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBdWcgMjgsIDIwMTggYXQgMDM6NDc6MjFQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBPbiBUdWUsIEF1ZyAyOCwgMjAxOCBhdCAwMzoxODo1NlBNIC0wNzAwLCBTcml2YXRz YSwgQW51c2hhIHdyb3RlOgo+ID4gCj4gPiAKPiA+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQo+ID4gPkZyb206IE5hdmFyZSwgTWFuYXNpIEQKPiA+ID5TZW50OiBUdWVzZGF5LCBKdWx5IDMx LCAyMDE4IDI6MDcgUE0KPiA+ID5UbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gPkNjOiBTaW5naCwgR2F1cmF2IEsgPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT47IEphbmkg TmlrdWxhCj4gPiA+PGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT47IFZpbGxlIFN5cmphbGEg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPjsKPiA+ID5Tcml2YXRzYSwgQW51c2hhIDxh bnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPjsgTmF2YXJlLCBNYW5hc2kgRAo+ID4gPjxtYW5hc2ku ZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPlN1YmplY3Q6IFtQQVRDSCB2MiAxNS8yM10gZHJtL2k5 MTUvZHNjOiBEZWZpbmUgJiBDb21wdXRlIFZFU0EgRFNDIHBhcmFtcwo+ID4gPgo+ID4gPkZyb206 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gPiA+Cj4gPiA+VGhp cyBwYXRjaGVzIGRvZXMgdGhlIGZvbGxvd2luZzoKPiA+ID4KPiA+ID4xLiBUaGlzIHBhdGNoIGRl ZmluZXMgYWxsIHRoZSBEU0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EgRFNDIHNwZWNpZmlj YXRpb24uCj4gPiA+VGhlc2UgYXJlIHN0b3JlZCBpbiB0aGUgZW5jb2RlciBhbmQgdXNlZCB0byBj b21wdXRlIHRoZSBQUFMgcGFyYW1ldGVycyB0byBiZQo+ID4gPnNlbnQgdG8gdGhlIFNpbmsuCj4g PiA+Mi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZy b20gRFNDIHN0YXRlIG9mCj4gPiA+aW50ZWxfY3J0Y19zdGF0ZS4KPiA+ID4zLiBDb21wdXRlIGFs bCBwYXJhbWV0ZXJzIHRoYXQgYXJlIFZFU0EgRFNDIHNwZWNpZmljCj4gPiA+Cj4gPiA+VGhpcyBj b21wdXRhdGlvbiBoYXBwZW5zIGluIHRoZSBhdG9taWMgY2hlY2sgcGhhc2UgZHVyaW5nCj4gPiA+ Y29tcHV0ZV9jb25maWcoKSB0byB2YWxpZGF0ZSBpZiBkaXNwbGF5IHN0cmVhbSBjb21wcmVzc2lv biBjYW4gYmUgZW5hYmxlZCBmb3IKPiA+ID50aGUgcmVxdWVzdGVkIG1vZGUuCj4gPiA+Cj4gPiA+ djUgKEZyb20gTWFuYXNpKToKPiA+ID4qIEFkZCBsb2dpYyB0byBsaW1pdCB0aGUgbWF4IGxpbmUg YnVmIGRlcHRoIGZvciBEU0MgMS4xIHRvIDEzIGFzIHBlciBEU0MgMS4xIHNwZWMKPiA+ID4qIEZp eCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKPiA+ID4KPiA+ID52NCAoRnJvbSBHYXVy YXYpOgo+ID4gPiogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCj4gPiA+KiByZW5hbWUgdmFyaWFi bGUgbmFtZShNYW5hc2kpCj4gPiA+KiBQb3B1bGF0ZSBsaW5lYnVmX2RlcHRoIHZhcmlhYmxlKE1h bmFzaSkKPiA+ID4KPiA+ID52MyAoRnJvbSBHYXVyYXYpOgo+ID4gPiogUmViYXNlIG15IHByZXZp b3VzIHBhdGNoZXMgb24gdG9wIG9mIE1hbmFzaSdzIGxhdGVzdCBwYXRjaCBzZXJpZXMKPiA+ID4q IFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kpCj4gPiA+KiBDaGFuZ2UgdGhlIGNv bW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2hhdCB0aGUgcGF0Y2ggaXMgZG9pbmcoR2F1cmF2KQo+ ID4gPgo+ID4gPkZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlOgo+ID4gPiogRG9uJ3Qg dXNlIG1hY3JvIFRXT1NfQ09NUExFTUVOVAo+ID4gPiogTWVudGlvbiBpbiBjb21tZW50IGFib3V0 IHRoZSBzb3VyY2Ugb2YgUkMgcGFyYW1zCj4gPiA+KiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNl IHN0YXRlbWVudHMKPiA+ID4qIFVzaW5nIHNpbmdsZSBhc3NzaWdubWVudCBmb3IgYXNzaWduaW5n IHJjX3JhbmdlX3BhcmFtcwo+ID4gPiogVXNpbmcgPDxuIHJhdGhlciB0aGFuICoyXm4gYW5kIHJl bW92aW5nIHRoZSBjb21tZW50cyBhYm91dCB0aGUgZml4ZWQgcG9pbnQKPiA+ID5udW1iZXJzCj4g PiA+Cj4gPiA+djIgKEZyb20gTWFuYXNpKToKPiA+ID4qIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3Ig dmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2YWx1ZSBhbmQgd2hhdCBzdXBwb3J0ZWQKPiA+ ID5ieSB0aGUgSFcgcGxhdGZvcm0KPiA+ID4qIFVzZSBEUk0gRFNDIGNvbmZpZyBzdHJ1Y3QgaW5z dGVhZCBvZiBpbnRlbF9kcCBzdHJ1Y3QKPiA+ID4qIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8g RFJNIERTQyBoZWFkZXIgZmlsZQo+ID4gPiogVXNlIHUxNiwgdTggd2hlcmUgYmlnZ2VyIGRhdGEg dHlwZXMgbm90IG5lZWRlZAo+ID4gPiogKiBDb21wdXRlIHRoZSBEU0MgcGFyYW1ldGVycyBhcyBw YXJ0IG9mIERTQyBjb21wdXRlIGNvbmZpZyBzaW5jZSB0aGUKPiA+ID5jb21wdXRhdGlvbiBjYW4g ZmFpbCAoTWFuYXNpKQo+ID4gPgo+ID4gPkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGlu dXguaW50ZWwuY29tPgo+ID4gPkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+ID5DYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPgo+ID4gPkNjOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29t Pgo+ID4gPlNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRl bC5jb20+Cj4gPiA+U2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4KPiA+ID4tLS0KPiA+ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg ICAgIHwgICAzICstCj4gPiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAg NyArCj4gPiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNCArCj4gPiA+ IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyB8IDQ1NQo+ID4gPisrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+IGluY2x1ZGUvZHJtL2RybV9kcF9oZWxw ZXIuaCAgICAgICB8ICAgMyArCj4gPiA+IGluY2x1ZGUvZHJtL2RybV9kc2MuaCAgICAgICAgICAg ICB8ICAgMiArLQo+ID4gPiA2IGZpbGVzIGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKSAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4gPiA+ZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdmRzYy5jCj4gPiA+Cj4gPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID5pbmRleCA1Nzk0 ZjEwLi5kZWFmMmQ0IDEwMDY0NAo+ID4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID5AQCAtMTUz LDcgKzE1Myw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAo+ID4gPiAJICBpbnRlbF9zZHZv Lm8gXAo+ID4gPiAJICBpbnRlbF90di5vIFwKPiA+ID4gCSAgdmx2X2RzaS5vIFwKPiA+ID4tCSAg dmx2X2RzaV9wbGwubwo+ID4gPisJICB2bHZfZHNpX3BsbC5vIFwKPiA+ID4rCSAgaW50ZWxfdmRz Yy5vCj4gPiA+Cj4gPiA+ICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRlIGNh cHR1cmUKPiA+ID4gaTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSArPSBpOTE1 X2dwdV9lcnJvci5vIGRpZmYgLS1naXQKPiA+ID5hL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGluZGV4Cj4gPiA+NzEzMmY1 Mi4uZGMwYTNjMiAxMDA2NDQKPiA+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPkBAIC0y MDQyLDYgKzIwNDIsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmln KHN0cnVjdAo+ID4gPmludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gCQkJcmV0dXJuIGZhbHNlOwo+ ID4gPiAJCX0KPiA+ID4gCX0KPiA+ID4rCWlmIChpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMo aW50ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsKPiA+ID4rCQlEUk1fRVJST1IoIkNhbm5vdCBj b21wdXRlIHZhbGlkIERTQyBwYXJhbWV0ZXJzIGZvciBJbnB1dAo+ID4gPkJwcCA9ICVkIgo+ID4g PisJCQkgICJDb21wcmVzc2VkIEJQUCA9ICVkXG4iLAo+ID4gPisJCQkgIHBpcGVfY29uZmlnLT5w aXBlX2JwcCwKPiA+ID4rCQkJICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2Jw cCk7Cj4gPiA+KwkJcmV0dXJuIGZhbHNlOwo+ID4gPisJfQo+ID4gPiAJcGlwZV9jb25maWctPmRz Y19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKPiA+ID4gCURSTV9ERUJVR19LTVMo IkRQIERTQyBjb21wdXRlZCB3aXRoIElucHV0IEJwcCA9ICVkICIKPiA+ID4gCQkgICAgICAiQ29t cHJlc3NlZCBCcHAgPSAlZCBTbGljZSBDb3VudCA9ICVkXG4iLCBkaWZmIC0tZ2l0Cj4gPiA+YS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiA+aW5kZXggYjdjMjY1Mi4uMzNjYzc3NyAxMDA2NDQKPiA+ID4tLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+QEAgLTE3NDksNiArMTc0OSwxMCBAQCB1aW50MTZfdCBp bnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoaW50IGxpbmtfY2xvY2ssCj4gPiA+dWludDhfdCBs YW5lX2NvdW50LCAgdWludDhfdCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBp bnRlbF9kcAo+ID4gPippbnRlbF9kcCwgaW50IG1vZGVfY2xvY2ssCj4gPiA+IAkJCQkgICAgIGlu dCBtb2RlX2hkaXNwbGF5KTsKPiA+ID4KPiA+ID4rLyogaW50ZWxfdmRzYy5jICovCj4gPiA+K2lu dCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiA+ID4rCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gPiA+Kwo+ ID4gPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNr KGludCBsYW5lX2NvdW50KSAgewo+ID4gPiAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3VudCkgLSAx KSAmIDB4ZjsgZGlmZiAtLWdpdAo+ID4gPmEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRz Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gPiA+bmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+ID5pbmRleCAwMDAwMDAwLi5lY2QyNzBjCj4gPiA+LS0tIC9kZXYvbnVsbAo+ ID4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+ID4gPkBAIC0wLDAg KzEsNDU1IEBACj4gPiA+Ky8qCj4gPiA+KyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBv cmF0aW9uCj4gPiA+KyAqCj4gPiA+KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gPiA+K29idGFpbmluZyBhCj4gPiA+KyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUKPiA+ID4rIlNvZnR3YXJlIiksCj4gPiA+KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4gPiA+K2xpbWl0YXRpb24KPiA+ ID4rICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsCj4gPiA+K3N1YmxpY2Vuc2UsCj4gPiA+KyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tCj4gPiA+K3RoZQo+ ID4gPisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+ID4gPisgKgo+ID4gPisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQo+ID4gPitu ZXh0Cj4gPiA+KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucwo+ID4gPitvZiB0aGUKPiA+ID4rICogU29mdHdhcmUuCj4g PiA+KyAqCj4gPiA+KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gPitFWFBSRVNTIE9SCj4gPiA+KyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+ID4rTUVS Q0hBTlRBQklMSVRZLAo+ID4gPisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPiA+ID5FVkVOVAo+ID4gPitTSEFMTAo+ID4gPisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwKPiA+ID5EQU1BR0VTIE9SCj4gPiA+K09USEVSCj4gPiA+KyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4gPitBUklT SU5HCj4gPiA+KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IKPiA+ID5PVEhFUgo+ID4gPisgKiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCj4gPiA+KyAqCj4gPiA+KyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5r LnNpbmdoQGludGVsLmNvbT4KPiA+ID4rICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2ku ZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPisgKi8KPiA+ID4rCj4gPiA+KyNpbmNsdWRlIDxkcm0v ZHJtUC5oPgo+ID4gPisjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gPiA+KyNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ID4gPisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiA+Kwo+ID4gPitlbnVt IFJPV19JTkRFWF9CUFAgewo+ID4gPisJUk9XX0lOREVYXzZCUFAgPSAwLAo+ID4gPisJUk9XX0lO REVYXzhCUFAsCj4gPiA+KwlST1dfSU5ERVhfMTBCUFAsCj4gPiA+KwlST1dfSU5ERVhfMTJCUFAs Cj4gPiA+KwlST1dfSU5ERVhfMTVCUFAsCj4gPiA+KwlNQVhfUk9XX0lOREVYCj4gPiA+K307Cj4g PiA+Kwo+ID4gPitlbnVtIENPTFVNTl9JTkRFWF9CUEMgewo+ID4gPisJQ09MVU1OX0lOREVYXzhC UEMgPSAwLAo+ID4gPisJQ09MVU1OX0lOREVYXzEwQlBDLAo+ID4gPisJQ09MVU1OX0lOREVYXzEy QlBDLAo+ID4gPisJQ09MVU1OX0lOREVYXzE0QlBDLAo+ID4gPisJQ09MVU1OX0lOREVYXzE2QlBD LAo+ID4gPisJTUFYX0NPTFVNTl9JTkRFWAo+ID4gPit9Owo+ID4gPisKPiA+ID4rI2RlZmluZSBE U0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOCQkxCj4gPiA+Kwo+ID4gPisvKiBGcm9tIERTQ192MS4x MSBzcGVjLCByY19wYXJhbWV0ZXJfU2V0IHN5bnRheCBlbGVtZW50IHR5cGljYWxseQo+ID4gPitj b25zdGFudCAqLyBzdGF0aWMgdTE2IHJjX2J1Zl90aHJlc2hbXSA9IHsKPiA+ID4rCTg5NiwgMTc5 MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcyMCwgNzE2OCwgNzYxNiwKPiA+ID4r CTc3NDQsIDc4NzIsIDgwMDAsIDgwNjQKPiA+ID4rfTsKPiA+ID4rCj4gPiA+K3N0cnVjdCByY19w YXJhbWV0ZXJzIHsKPiA+ID4rCXUxNiBpbml0aWFsX3htaXRfZGVsYXk7Cj4gPiA+Kwl1OCBmaXJz dF9saW5lX2JwZ19vZmZzZXQ7Cj4gPiA+Kwl1MTYgaW5pdGlhbF9vZmZzZXQ7Cj4gPiA+Kwl1OCBm bGF0bmVzc19taW5fcXA7Cj4gPiA+Kwl1OCBmbGF0bmVzc19tYXhfcXA7Cj4gPiA+Kwl1OCByY19x dWFudF9pbmNyX2xpbWl0MDsKPiA+ID4rCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOwo+ID4gPisJ c3RydWN0IGRzY19yY19yYW5nZV9wYXJhbWV0ZXJzCj4gPiA+cmNfcmFuZ2VfcGFyYW1zW0RTQ19O VU1fQlVGX1JBTkdFU107Cj4gPiA+K307Cj4gPiA+Kwo+ID4gPisvKgo+ID4gPisgKiBTZWxlY3Rl ZCBSYXRlIENvbnRyb2wgUmVsYXRlZCBQYXJhbWV0ZXIgUmVjb21tZW5kZWQgVmFsdWVzCj4gPiA+ KyAqIGZyb20gRFNDX3YxLjExIHNwZWMgJiBDIE1vZGVsIHJlbGVhc2U6IERTQ19tb2RlbF8yMDE2 MTIxMiAgKi8gc3RhdGljCj4gPiA+K3N0cnVjdCByY19wYXJhbWV0ZXJzIHJjX3BhcmFtc1tdW01B WF9DT0xVTU5fSU5ERVhdID0geyB7Cj4gPiA+KwkvKiA2QlBQLzhCUEMgKi8KPiA+ID4rCXsgNzY4 LCAxNSwgNjE0NCwgMywgMTMsIDExLCAxMSwgewo+ID4gPisJCXsgMCwgNCwgMCB9LCB7IDEsIDYs IC0yIH0sIHsgMywgOCwgLTIgfSwgeyA0LCA4LCAtNCB9LAo+ID4gPisJCXsgNSwgOSwgLTYgfSwg eyA1LCA5LCAtNiB9LCB7IDYsIDksIC02IH0sIHsgNiwgMTAsIC04IH0sCj4gPiA+KwkJeyA3LCAx MSwgLTggfSwgeyA4LCAxMiwgLTEwIH0sIHsgOSwgMTIsIC0xMCB9LCB7IDEwLCAxMiwgLTEyIH0s Cj4gPiA+KwkJeyAxMCwgMTIsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTMsIDE0LCAtMTIg fQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiA2QlBQLzEwQlBDICovCj4gPiA+Kwl7IDc2 OCwgMTUsIDYxNDQsIDcsIDE3LCAxNSwgMTUsIHsKPiA+ID4rCQl7IDAsIDgsIDAgfSwgeyAzLCAx MCwgLTIgfSwgeyA3LCAxMiwgLTIgfSwgeyA4LCAxMiwgLTQgfSwKPiA+ID4rCQl7IDksIDEzLCAt NiB9LCB7IDksIDEzLCAtNiB9LCB7IDEwLCAxMywgLTYgfSwgeyAxMCwgMTQsIC04IH0sCj4gPiA+ KwkJeyAxMSwgMTUsIC04IH0sIHsgMTIsIDE2LCAtMTAgfSwgeyAxMywgMTYsIC0xMCB9LAo+ID4g PisJCXsgMTQsIDE2LCAtMTIgfSwgeyAxNCwgMTYsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCj4g PiA+KwkJeyAxNywgMTgsIC0xMiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwKPiA+ID4rCS8qIDZCUFAv MTJCUEMgKi8KPiA+ID4rCXsgNzY4LCAxNSwgNjE0NCwgMTEsIDIxLCAxOSwgMTksIHsKPiA+ID4r CQl7IDAsIDEyLCAwIH0sIHsgNSwgMTQsIC0yIH0sIHsgMTEsIDE2LCAtMiB9LCB7IDEyLCAxNiwg LTQgfSwKPiA+ID4rCQl7IDEzLCAxNywgLTYgfSwgeyAxMywgMTcsIC02IH0sIHsgMTQsIDE3LCAt NiB9LCB7IDE0LCAxOCwgLTggfSwKPiA+ID4rCQl7IDE1LCAxOSwgLTggfSwgeyAxNiwgMjAsIC0x MCB9LCB7IDE3LCAyMCwgLTEwIH0sCj4gPiA+KwkJeyAxOCwgMjAsIC0xMiB9LCB7IDE4LCAyMCwg LTEyIH0sIHsgMTksIDIwLCAtMTIgfSwKPiA+ID4rCQl7IDIxLCAyMiwgLTEyIH0KPiA+ID4rCQl9 Cj4gPiA+Kwl9LAo+ID4gPisJLyogNkJQUC8xNEJQQyAqLwo+ID4gPisJeyA3NjgsIDE1LCA2MTQ0 LCAxNSwgMjUsIDIzLCAyNywgewo+ID4gPisJCXsgMCwgMTYsIDAgfSwgeyA3LCAxOCwgLTIgfSwg eyAxNSwgMjAsIC0yIH0sIHsgMTYsIDIwLCAtNCB9LAo+ID4gPisJCXsgMTcsIDIxLCAtNiB9LCB7 IDE3LCAyMSwgLTYgfSwgeyAxOCwgMjEsIC02IH0sIHsgMTgsIDIyLCAtOCB9LAo+ID4gPisJCXsg MTksIDIzLCAtOCB9LCB7IDIwLCAyNCwgLTEwIH0sIHsgMjEsIDI0LCAtMTAgfSwKPiA+ID4rCQl7 IDIyLCAyNCwgLTEyIH0sIHsgMjIsIDI0LCAtMTIgfSwgeyAyMywgMjQsIC0xMiB9LAo+ID4gPisJ CXsgMjUsIDI2LCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiA2QlBQLzE2QlBD ICovCj4gPiA+Kwl7IDc2OCwgMTUsIDYxNDQsIDE5LCAyOSwgMjcsIDI3LCB7Cj4gPiA+KwkJeyAw LCAyMCwgMCB9LCB7IDksIDIyLCAtMiB9LCB7IDE5LCAyNCwgLTIgfSwgeyAyMCwgMjQsIC00IH0s Cj4gPiA+KwkJeyAyMSwgMjUsIC02IH0sIHsgMjEsIDI1LCAtNiB9LCB7IDIyLCAyNSwgLTYgfSwg eyAyMiwgMjYsIC04IH0sCj4gPiA+KwkJeyAyMywgMjcsIC04IH0sIHsgMjQsIDI4LCAtMTAgfSwg eyAyNSwgMjgsIC0xMCB9LAo+ID4gPisJCXsgMjYsIDI4LCAtMTIgfSwgeyAyNiwgMjgsIC0xMiB9 LCB7IDI3LCAyOCwgLTEyIH0sCj4gPiA+KwkJeyAyOSwgMzAsIC0xMiB9Cj4gPiA+KwkJfQo+ID4g PisJfSwKPiA+ID4rfSwKPiA+ID4rewo+ID4gPisJLyogOEJQUC84QlBDICovCj4gPiA+Kwl7IDUx MiwgMTIsIDYxNDQsIDMsIDEyLCAxMSwgMTEsIHsKPiA+ID4rCQl7IDAsIDQsIDIgfSwgeyAwLCA0 LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDEsIDYsIC0yIH0sCj4gPiA+KwkJeyAzLCA3LCAtNCB9LCB7 IDMsIDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAo+ID4gPisJCXsgMywgOSwg LTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LCB7IDUsIDEyLCAtMTIgfSwKPiA+ ID4rCQl7IDUsIDEzLCAtMTIgfSwgeyA3LCAxMywgLTEyIH0sIHsgMTMsIDE1LCAtMTIgfQo+ID4g PisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiA4QlBQLzEwQlBDICovCj4gPiA+Kwl7IDUxMiwgMTIs IDYxNDQsIDcsIDE2LCAxNSwgMTUsIHsKPiA+ID4rCQl7IDAsIDQsIDIgfSwgeyA0LCA4LCAwIH0s IHsgNSwgOSwgMCB9LCB7IDUsIDEwLCAtMiB9LAo+ID4gPisJCXsgNywgMTEsIC00IH0sIHsgNywg MTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0sCj4gPiA+KwkJeyA3LCAxMywg LTggfSwgeyA3LCAxNCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9LCB7IDksIDE2LCAtMTIgfSwKPiA+ ID4rCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEyIH0KPiA+ ID4rCQl9Cj4gPiA+Kwl9LAo+ID4gPisJLyogOEJQUC8xMkJQQyAqLwo+ID4gPisJeyA1MTIsIDEy LCA2MTQ0LCAxMSwgMjAsIDE5LCAxOSwgewo+ID4gPisJCXsgMCwgMTIsIDIgfSwgeyA0LCAxMiwg MCB9LCB7IDksIDEzLCAwIH0sIHsgOSwgMTQsIC0yIH0sCj4gPiA+KwkJeyAxMSwgMTUsIC00IH0s IHsgMTEsIDE1LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCj4gPiA+KwkJ eyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9LAo+ID4gPisJ CXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0sCj4gPiA+ KwkJeyAyMSwgMjMsIC0xMiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwKPiA+ID4rCS8qIDhCUFAvMTRC UEMgKi8KPiA+ID4rCXsgNTEyLCAxMiwgNjE0NCwgMTUsIDI0LCAyMywgMjMsIHsKPiA+ID4rCQl7 IDAsIDEyLCAwIH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMiwgMTcsIC0yIH0s Cj4gPiA+KwkJeyAxNSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwg eyAxNSwgMjAsIC04IH0sCj4gPiA+KwkJeyAxNSwgMjEsIC04IH0sIHsgMTUsIDIyLCAtMTAgfSwg eyAxNywgMjIsIC0xMCB9LAo+ID4gPisJCXsgMTcsIDIzLCAtMTIgfSwgeyAxNywgMjMsIC0xMiB9 LCB7IDIxLCAyNCwgLTEyIH0sCj4gPiA+KwkJeyAyNCwgMjUsIC0xMiB9Cj4gPiA+KwkJfQo+ID4g PisJfSwKPiA+ID4rCS8qIDhCUFAvMTZCUEMgKi8KPiA+ID4rCXsgNTEyLCAxMiwgNjE0NCwgMTks IDI4LCAyNywgMjcsIHsKPiA+ID4rCQl7IDAsIDEyLCAyIH0sIHsgNiwgMTQsIDAgfSwgeyAxMywg MTcsIDAgfSwgeyAxNSwgMjAsIC0yIH0sCj4gPiA+KwkJeyAxOSwgMjMsIC00IH0sIHsgMTksIDIz LCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCj4gPiA+KwkJeyAxOSwgMjUs IC04IH0sIHsgMTksIDI2LCAtMTAgfSwgeyAyMSwgMjYsIC0xMCB9LAo+ID4gPisJCXsgMjEsIDI3 LCAtMTIgfSwgeyAyMSwgMjcsIC0xMiB9LCB7IDI1LCAyOCwgLTEyIH0sCj4gPiA+KwkJeyAyOCwg MjksIC0xMiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwKPiA+ID4rfSwKPiA+ID4rewo+ID4gPisJLyog MTBCUFAvOEJQQyAqLwo+ID4gPisJeyA0MTAsIDE1LCA1NjMyLCAzLCAxMiwgMTEsIDExLCB7Cj4g PiA+KwkJeyAwLCAzLCAyIH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAyLCA2LCAtMiB9 LAo+ID4gPisJCXsgMywgNywgLTQgfSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywg OCwgLTggfSwKPiA+ID4rCQl7IDMsIDksIC04IH0sIHsgMywgOSwgLTEwIH0sIHsgNSwgMTAsIC0x MCB9LCB7IDUsIDEwLCAtMTAgfSwKPiA+ID4rCQl7IDUsIDExLCAtMTIgfSwgeyA3LCAxMSwgLTEy IH0sIHsgMTEsIDEyLCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxMEJQUC8x MEJQQyAqLwo+ID4gPisJeyA0MTAsIDE1LCA1NjMyLCA3LCAxNiwgMTUsIDE1LCB7Cj4gPiA+KwkJ eyAwLCA3LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAgfSwgeyA2LCAxMCwgLTIgfSwKPiA+ ID4rCQl7IDcsIDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEy LCAtOCB9LAo+ID4gPisJCXsgNywgMTMsIC04IH0sIHsgNywgMTMsIC0xMCB9LCB7IDksIDE0LCAt MTAgfSwgeyA5LCAxNCwgLTEwIH0sCj4gPiA+KwkJeyA5LCAxNSwgLTEyIH0sIHsgMTEsIDE1LCAt MTIgfSwgeyAxNSwgMTYsIC0xMiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwKPiA+ID4rCS8qIDEwQlBQ LzEyQlBDICovCj4gPiA+Kwl7IDQxMCwgMTUsIDU2MzIsIDExLCAyMCwgMTksIDE5LCB7Cj4gPiA+ KwkJeyAwLCAxMSwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMCwgMTQsIC0y IH0sCj4gPiA+KwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9LCB7IDExLCAxNSwgLTgg fSwgeyAxMSwgMTYsIC04IH0sCj4gPiA+KwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE3LCAtMTAg fSwgeyAxMywgMTgsIC0xMCB9LAo+ID4gPisJCXsgMTMsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0x MiB9LCB7IDE1LCAxOSwgLTEyIH0sCj4gPiA+KwkJeyAxOSwgMjAsIC0xMiB9Cj4gPiA+KwkJfQo+ ID4gPisJfSwKPiA+ID4rCS8qIDEwQlBQLzE0QlBDICovCj4gPiA+Kwl7IDQxMCwgMTUsIDU2MzIs IDE1LCAyNCwgMjMsIDIzLCB7Cj4gPiA+KwkJeyAwLCAxMSwgMiB9LCB7IDUsIDEzLCAwIH0sIHsg MTEsIDE1LCAwIH0sIHsgMTMsIDE4LCAtMiB9LAo+ID4gPisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1 LCAxOSwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAo+ID4gPisJCXsgMTUs IDIxLCAtOCB9LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIyLCAtMTAgfSwKPiA+ID4rCQl7IDE3 LCAyMiwgLTEwIH0sIHsgMTcsIDIzLCAtMTIgfSwgeyAxOSwgMjMsIC0xMiB9LAo+ID4gPisJCXsg MjMsIDI0LCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxMEJQUC8xNkJQQyAq Lwo+ID4gPisJeyA0MTAsIDE1LCA1NjMyLCAxOSwgMjgsIDI3LCAyNywgewo+ID4gPisJCXsgMCwg MTEsIDIgfSwgeyA2LCAxNCwgMCB9LCB7IDEzLCAxNywgMCB9LCB7IDE2LCAyMCwgLTIgfSwKPiA+ ID4rCQl7IDE5LCAyMywgLTQgfSwgeyAxOSwgMjMsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5 LCAyNCwgLTggfSwKPiA+ID4rCQl7IDE5LCAyNSwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIx LCAyNiwgLTEwIH0sCj4gPiA+KwkJeyAyMSwgMjYsIC0xMCB9LCB7IDIxLCAyNywgLTEyIH0sIHsg MjMsIDI3LCAtMTIgfSwKPiA+ID4rCQl7IDI3LCAyOCwgLTEyIH0KPiA+ID4rCQl9Cj4gPiA+Kwl9 LAo+ID4gPit9LAo+ID4gPit7Cj4gPiA+KwkvKiAxMkJQUC84QlBDICovCj4gPiA+Kwl7IDM0MSwg MTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKPiA+ID4rCQl7IDAsIDIsIDIgfSwgeyAwLCA0LCAw IH0sIHsgMSwgNSwgMCB9LCB7IDEsIDYsIC0yIH0sCj4gPiA+KwkJeyAzLCA3LCAtNCB9LCB7IDMs IDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAo+ID4gPisJCXsgMywgOSwgLTgg fSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LAo+ID4gPisJCXsgNSwgMTIsIC0xMiB9 LCB7IDUsIDEzLCAtMTIgfSwgeyA3LCAxMywgLTEyIH0sIHsgMTMsIDE1LCAtMTIgfQo+ID4gPisJ CX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxMkJQUC8xMEJQQyAqLwo+ID4gPisJeyAzNDEsIDE1LCAy MDQ4LCA3LCAxNiwgMTUsIDE1LCB7Cj4gPiA+KwkJeyAwLCAyLCAyIH0sIHsgMiwgNSwgMCB9LCB7 IDMsIDcsIDAgfSwgeyA0LCA4LCAtMiB9LAo+ID4gPisJCXsgNiwgOSwgLTQgfSwgeyA3LCAxMCwg LTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKPiA+ID4rCQl7IDcsIDEzLCAtOCB9 LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsgOSwgMTYsIC0xMiB9LAo+ID4gPisJ CXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcsIDE5LCAtMTIgfQo+ID4gPisJ CX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxMkJQUC8xMkJQQyAqLwo+ID4gPisJeyAzNDEsIDE1LCAy MDQ4LCAxMSwgMjAsIDE5LCAxOSwgewo+ID4gPisJCXsgMCwgNiwgMiB9LCB7IDQsIDksIDAgfSwg eyA3LCAxMSwgMCB9LCB7IDgsIDEyLCAtMiB9LAo+ID4gPisJCXsgMTAsIDEzLCAtNCB9LCB7IDEx LCAxNCwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAo+ID4gPisJCXsgMTEs IDE3LCAtOCB9LCB7IDExLCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTAgfSwKPiA+ID4rCQl7IDEz LCAyMCwgLTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwgeyAxNSwgMjEsIC0xMiB9LAo+ID4gPisJCXsg MjEsIDIzLCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxMkJQUC8xNEJQQyAq Lwo+ID4gPisJeyAzNDEsIDE1LCAyMDQ4LCAxNSwgMjQsIDIzLCAyMywgewo+ID4gPisJCXsgMCwg NiwgMiB9LCB7IDcsIDEwLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMSwgMTYsIC0yIH0sCj4gPiA+ KwkJeyAxNCwgMTcsIC00IH0sIHsgMTUsIDE4LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwg MjAsIC04IH0sCj4gPiA+KwkJeyAxNSwgMjAsIC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywg MjEsIC0xMCB9LAo+ID4gPisJCXsgMTcsIDIxLCAtMTIgfSwgeyAxNywgMjEsIC0xMiB9LCB7IDE5 LCAyMiwgLTEyIH0sCj4gPiA+KwkJeyAyMiwgMjMsIC0xMiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwK PiA+ID4rCS8qIDEyQlBQLzE2QlBDICovCj4gPiA+Kwl7IDM0MSwgMTUsIDIwNDgsIDE5LCAyOCwg MjcsIDI3LCB7Cj4gPiA+KwkJeyAwLCA2LCAyIH0sIHsgNiwgMTEsIDAgfSwgeyAxMSwgMTUsIDAg fSwgeyAxNCwgMTgsIC0yIH0sCj4gPiA+KwkJeyAxOCwgMjEsIC00IH0sIHsgMTksIDIyLCAtNiB9 LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCj4gPiA+KwkJeyAxOSwgMjQsIC04IH0s IHsgMTksIDI1LCAtMTAgfSwgeyAyMSwgMjUsIC0xMCB9LAo+ID4gPisJCXsgMjEsIDI1LCAtMTIg fSwgeyAyMSwgMjUsIC0xMiB9LCB7IDIzLCAyNiwgLTEyIH0sCj4gPiA+KwkJeyAyNiwgMjcsIC0x MiB9Cj4gPiA+KwkJfQo+ID4gPisJfSwKPiA+ID4rfSwKPiA+ID4rewo+ID4gPisJLyogMTVCUFAv OEJQQyAqLwo+ID4gPisJeyAyNzMsIDE1LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7Cj4gPiA+KwkJ eyAwLCAwLCAxMCB9LCB7IDAsIDEsIDggfSwgeyAwLCAxLCA2IH0sIHsgMCwgMiwgNCB9LAo+ID4g PisJCXsgMSwgMiwgMiB9LCB7IDEsIDMsIDAgfSwgeyAxLCAzLCAtMiB9LCB7IDIsIDQsIC00IH0s Cj4gPiA+KwkJeyAyLCA1LCAtNiB9LCB7IDMsIDUsIC04IH0sIHsgNCwgNiwgLTEwIH0sIHsgNCwg NywgLTEwIH0sCj4gPiA+KwkJeyA1LCA3LCAtMTIgfSwgeyA3LCA4LCAtMTIgfSwgeyA4LCA5LCAt MTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxNUJQUC8xMEJQQyAqLwo+ID4gPisJ eyAyNzMsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7Cj4gPiA+KwkJeyAwLCAyLCAxMCB9LCB7 IDIsIDUsIDggfSwgeyAzLCA1LCA2IH0sIHsgNCwgNiwgNCB9LAo+ID4gPisJCXsgNSwgNiwgMiB9 LCB7IDUsIDcsIDAgfSwgeyA1LCA3LCAtMiB9LCB7IDYsIDgsIC00IH0sCj4gPiA+KwkJeyA2LCA5 LCAtNiB9LCB7IDcsIDksIC04IH0sIHsgOCwgMTAsIC0xMCB9LCB7IDgsIDExLCAtMTAgfSwKPiA+ ID4rCQl7IDksIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEyLCAxMywgLTEyIH0KPiA+ ID4rCQl9Cj4gPiA+Kwl9LAo+ID4gPisJLyogMTVCUFAvMTJCUEMgKi8KPiA+ID4rCXsgMjczLCAx NSwgMjA0OCwgMTEsIDIwLCAxOSwgMTksIHsKPiA+ID4rCQl7IDAsIDQsIDEwIH0sIHsgMiwgNywg OCB9LCB7IDQsIDksIDYgfSwgeyA2LCAxMSwgNCB9LAo+ID4gPisJCXsgOSwgMTEsIDIgfSwgeyA5 LCAxMSwgMCB9LCB7IDksIDEyLCAtMiB9LCB7IDEwLCAxMiwgLTQgfSwKPiA+ID4rCQl7IDExLCAx MywgLTYgfSwgeyAxMSwgMTMsIC04IH0sIHsgMTIsIDE0LCAtMTAgfSwKPiA+ID4rCQl7IDEzLCAx NSwgLTEwIH0sIHsgMTMsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9LAo+ID4gPisJCXsgMTYs IDE3LCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+KwkvKiAxNUJQUC8xNEJQQyAqLwo+ ID4gPisJeyAyNzMsIDE1LCAyMDQ4LCAxNSwgMjQsIDIzLCAyMywgewo+ID4gPisJCXsgMCwgNCwg MTAgfSwgeyAzLCA4LCA4IH0sIHsgNiwgMTEsIDYgfSwgeyA5LCAxNCwgNCB9LAo+ID4gPisJCXsg MTMsIDE1LCAyIH0sIHsgMTMsIDE1LCAwIH0sIHsgMTMsIDE2LCAtMiB9LCB7IDE0LCAxNiwgLTQg fSwKPiA+ID4rCQl7IDE1LCAxNywgLTYgfSwgeyAxNSwgMTcsIC04IH0sIHsgMTYsIDE4LCAtMTAg fSwKPiA+ID4rCQl7IDE3LCAxOSwgLTEwIH0sIHsgMTcsIDE5LCAtMTIgfSwgeyAxOSwgMjAsIC0x MiB9LAo+ID4gPisJCXsgMjAsIDIxLCAtMTIgfQo+ID4gPisJCX0KPiA+ID4rCX0sCj4gPiA+Kwkv KiAxNUJQUC8xNkJQQyAqLwo+ID4gPisJeyAyNzMsIDE1LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywg ewo+ID4gPisJCXsgMCwgNCwgMTAgfSwgeyA0LCA5LCA4IH0sIHsgOCwgMTMsIDYgfSwgeyAxMiwg MTcsIDQgfSwKPiA+ID4rCQl7IDE3LCAxOSwgMiB9LCB7IDE3LCAyMCwgMCB9LCB7IDE3LCAyMCwg LTIgfSwgeyAxOCwgMjAsIC00IH0sCj4gPiA+KwkJeyAxOSwgMjEsIC02IH0sIHsgMTksIDIxLCAt OCB9LCB7IDIwLCAyMiwgLTEwIH0sCj4gPiA+KwkJeyAyMSwgMjMsIC0xMCB9LCB7IDIxLCAyMywg LTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwKPiA+ID4rCQl7IDI0LCAyNSwgLTEyIH0KPiA+ID4rCQl9 Cj4gPiA+Kwl9Cj4gPiA+K30KPiA+ID4rfTsKPiA+ID4rCj4gPiA+K3N0YXRpYyBpbnQgZ2V0X3Jv d19pbmRleF9mb3JfcmNfcGFyYW1zKHUxNiBjb21wcmVzc2VkX2JwcCkgewo+ID4gPisJc3dpdGNo IChjb21wcmVzc2VkX2JwcCkgewo+ID4gPisJY2FzZSA2Ogo+ID4gPisJCXJldHVybiBST1dfSU5E RVhfNkJQUDsKPiA+ID4rCWNhc2UgODoKPiA+ID4rCQlyZXR1cm4gUk9XX0lOREVYXzhCUFA7Cj4g PiA+KwljYXNlIDEwOgo+ID4gPisJCXJldHVybiBST1dfSU5ERVhfMTBCUFA7Cj4gPiA+KwljYXNl IDEyOgo+ID4gPisJCXJldHVybiBST1dfSU5ERVhfMTJCUFA7Cj4gPiA+KwljYXNlIDE1Ogo+ID4g PisJCXJldHVybiBST1dfSU5ERVhfMTVCUFA7Cj4gPiA+KwlkZWZhdWx0Ogo+ID4gPisJCXJldHVy biAtRUlOVkFMOwo+ID4gPisJfQo+ID4gPit9Cj4gPiA+Kwo+ID4gPitzdGF0aWMgaW50IGdldF9j b2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh1OCBiaXRzX3Blcl9jb21wb25lbnQpIHsKPiA+ID4r CXN3aXRjaCAoYml0c19wZXJfY29tcG9uZW50KSB7Cj4gPiA+KwljYXNlIDg6Cj4gPiA+KwkJcmV0 dXJuIENPTFVNTl9JTkRFWF84QlBDOwo+ID4gPisJY2FzZSAxMDoKPiA+ID4rCQlyZXR1cm4gQ09M VU1OX0lOREVYXzEwQlBDOwo+ID4gPisJY2FzZSAxMjoKPiA+ID4rCQlyZXR1cm4gQ09MVU1OX0lO REVYXzEyQlBDOwo+ID4gPisJY2FzZSAxNDoKPiA+ID4rCQlyZXR1cm4gQ09MVU1OX0lOREVYXzE0 QlBDOwo+ID4gPisJY2FzZSAxNjoKPiA+ID4rCQlyZXR1cm4gQ09MVU1OX0lOREVYXzE2QlBDOwo+ ID4gPisJZGVmYXVsdDoKPiA+ID4rCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4rCX0KPiA+ID4rfQo+ ID4gPisKPiA+ID4raW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ID4gPisJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykgewo+ID4gPisJc3RydWN0IGRybV9kc2NfY29uZmlnICp2ZHNjX2NmZyA9ICZwaXBlX2Nv bmZpZy0+ZHBfZHNjX2NmZzsKPiA+ID4rCXUxNiBjb21wcmVzc2VkX2JwcCA9IHBpcGVfY29uZmln LT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwOwo+ID4gPisJdTggaSA9IDA7Cj4gPiA+Kwl1OCBy b3dfaW5kZXggPSAwOwo+ID4gPisJdTggY29sdW1uX2luZGV4ID0gMDsKPiA+ID4rCXU4IGxpbmVf YnVmX2RlcHRoID0gMDsKPiA+ID4rCj4gPiA+Kwl2ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+ID4gPisJdmRzY19jZmct PnBpY19oZWlnaHQgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3Bs YXk7Cj4gPiA+Kwl2ZHNjX2NmZy0+c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmct PnBpY193aWR0aCwKPiA+ID4rCQkJCQkgICAgIHBpcGVfY29uZmlnLQo+ID4gPj5kc2NfcGFyYW1z LnNsaWNlX2NvdW50KTsKPiA+ID4rCS8qCj4gPiA+KwkgKiBTbGljZSBIZWlnaHQgb2YgOCB3b3Jr cyBmb3IgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgcGFuZWxzLiBTbyBzdGFydAo+ID4gPisJICog d2l0aCB0aGF0IGlmIHBpY19oZWlnaHQgaXMgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgOC4KPiA+ ID4rCSAqIEV2ZW50dWFsbHkgYWRkIGxvZ2ljIHRvIHRyeSBtdWx0aXBsZSBzbGljZSBoZWlnaHRz Lgo+ID4gPisJICovCj4gPiA+KwlpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA4ID09IDApCj4g PiA+KwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDg7Cj4gPiA+KwllbHNlIGlmICh2ZHNjX2Nm Zy0+cGljX2hlaWdodCAlIDQgPT0gMCkKPiA+ID4rCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0ID0g NDsKPiA+ID4rCWVsc2UKPiA+ID4rCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0ID0gMjsKPiA+ID4r Cj4gPiA+KwkvKiBWYWx1ZXMgZmlsbGVkIGZyb20gRFNDIFNpbmsgRFBDRCAqLwo+ID4gPisJdmRz Y19jZmctPmRzY192ZXJzaW9uX21ham9yID0gKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVW IC0KPiA+ID5EUF9EU0NfU1VQUE9SVF0gJgo+ID4gPisJCQkJICAgICAgIERQX0RTQ19NQUpPUl9N QVNLKSA+Pgo+ID4gPkRQX0RTQ19NQUpPUl9TSElGVDsKPiA+ID4rCXZkc2NfY2ZnLT5kc2NfdmVy c2lvbl9taW5vciA9IG1pbihEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOLAo+ID4gPisJCQkJCSAg KGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0KPiA+ID5EUF9EU0NfU1VQUE9SVF0gJgo+ ID4gPisJCQkJCSAgIERQX0RTQ19NSU5PUl9NQVNLKSA+Pgo+ID4gPkRQX0RTQ19NSU5PUl9TSElG VCk7Cj4gPiA+Kwo+ID4gPisJdmRzY19jZmctPmNvbnZlcnRfcmdiID0gaW50ZWxfZHAtCj4gPiA+ PmRzY19kcGNkW0RQX0RTQ19ERUNfQ09MT1JfRk9STUFUX0NBUCAtIERQX0RTQ19TVVBQT1JUXSAm Cj4gPiA+KwkJRFBfRFNDX1JHQjsKPiA+ID4rCj4gPiA+KwlsaW5lX2J1Zl9kZXB0aCA9IGRybV9k cF9kc2Nfc2lua19saW5lX2J1Zl9kZXB0aChpbnRlbF9kcC0+ZHNjX2RwY2QpOwo+ID4gPisJaWYg KHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9PSAyKQo+ID4gPisJCXZkc2NfY2ZnLT5saW5l X2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA9PQo+ID4gPkRTQ18xXzJfTUFYX0xJTkVCVUZf REVQVEhfQklUUykgPwo+ID4gPisJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX1ZBTCA6IGxp bmVfYnVmX2RlcHRoOwo+ID4gU2hvdWxkbid0ICB0aGlzIGJlIGxpbmVfYnVmX2RlcHRoID49IERT Q18xXzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUz8KPiAKPiBJZiB5b3UgbG9vayBhdCBkcm1fZHBf ZHNjX3NpbmtfbGluZV9idWZfZGVwdGgoKSBmdW5jdGlvbiwgaXQgd2lsbCBvbmx5IHJldHVybiBt YXhpbXVtIG9mIDE2Lgo+IEdyZWF0ZXIgdGhhbiBEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX0JJ VFMgaXMgbm90IGEgdmFsaWQgdmFsdWUgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiAwIGZv ciB0aGF0Lgo+CgpCdXQgaWYgYXQgYWxsIGl0cyBhbiBpbnZhbGlkIHZhbHVlIGdyZWF0ZXIgdGhh biAxNiwgdGhlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLCBzbyBJIHdpbGwgbmVlZCB0bwphZGQg YSBjaGVjayBmb3IgaXQgdG8gYmUgZ3JlYXRlciB0aGFuIDAuClRoYW5rcyBmb3IgY2F0Y2hpbmcg dGhpcyEKCk1hbmFzaQogCj4gPiAKPiA+ID4rCWVsc2UKPiA+ID4rCQl2ZHNjX2NmZy0+bGluZV9i dWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPgo+ID4gCQkJCQkJTGluZV9idWZfZGVwdGggPj0g IERTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhfQklUUz8/Cj4gCj4gVGhpcyBzaG91bGQgYmUgb25s eSBncmVhdGVyIHRoYW4gc2luY2UgaWYgaXRzIGVxdWFsIHRvIHRoZSBtYXggdGhlbiBpdCBjYW4g anVzdCB1c2UgdGhlIG1heGltdW0gdmFsdWUuCj4gCj4gTWFuYXNpCj4gCj4gPiAKPiA+IEFudXNo YSAKPiA+ID5EU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMpID8KPiA+ID4rCQkJRFNDXzFf MV9NQVhfTElORUJVRl9ERVBUSF9CSVRTIDogbGluZV9idWZfZGVwdGg7Cj4gPiA+Kwo+ID4gPisJ LyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgWUNiQ3IgKi8KPiA+ID4rCXZkc2NfY2ZnLT5lbmFi bGU0MjIgPSBmYWxzZTsKPiA+ID4rCS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFZCUiAqLwo+ ID4gPisJdmRzY19jZmctPnZicl9lbmFibGUgPSBmYWxzZTsKPiA+ID4rCXZkc2NfY2ZnLT5ibG9j a19wcmVkX2VuYWJsZSA9Cj4gPiA+KwkJCWludGVsX2RwLQo+ID4gPj5kc2NfZHBjZFtEUF9EU0Nf QkxLX1BSRURJQ1RJT05fU1VQUE9SVCAtIERQX0RTQ19TVVBQT1JUXSAmCj4gPiA+KwkJRFBfRFND X0JMS19QUkVESUNUSU9OX0lTX1NVUFBPUlRFRDsKPiA+ID4rCj4gPiA+KwkvKiBHZW4gMTEgb25s eSBzdXBwb3J0cyBpbnRlZ3JhbCB2YWx1ZXMgb2YgYnBwICovCj4gPiA+Kwl2ZHNjX2NmZy0+Yml0 c19wZXJfcGl4ZWwgPSBjb21wcmVzc2VkX2JwcCA8PCA0Owo+ID4gPisJdmRzY19jZmctPmJpdHNf cGVyX2NvbXBvbmVudCA9IHBpcGVfY29uZmlnLT5waXBlX2JwcCAvIDM7Cj4gPiA+Kwo+ID4gPisJ Zm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7IGkrKykgewo+ID4gPisJCS8q Cj4gPiA+KwkJICogc2l4IDBzIGFyZSBhcHBlbmRlZCB0byB0aGUgbHNiIG9mIGVhY2ggdGhyZXNo b2xkIHZhbHVlCj4gPiA+KwkJICogaW50ZXJuYWxseSBpbiBoL3cuCj4gPiA+KwkJICogT25seSA4 IGJpdHMgYXJlIGFsbG93ZWQgZm9yIHByb2dyYW1taW5nIFJjQnVmVGhyZXNob2xkCj4gPiA+KwkJ ICovCj4gPiA+KwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbaV0gPSByY19idWZfdGhyZXNoW2ld ID4+IDY7Cj4gPiA+Kwl9Cj4gPiA+Kwo+ID4gPisJLyoKPiA+ID4rCSAqIEZvciA2YnBwLCBSQyBC dWZmZXIgdGhyZXNob2xkIDEyIGFuZCAxMyBuZWVkIGEgZGlmZmVyZW50IHZhbHVlCj4gPiA+Kwkg KiBhcyBwZXIgQyBNb2RlbAo+ID4gPisJICovCj4gPiA+KwlpZiAoY29tcHJlc3NlZF9icHAgPT0g Nikgewo+ID4gPisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoWzEyXSA9IDB4N0M7Cj4gPiA+KwkJ dmRzY19jZmctPnJjX2J1Zl90aHJlc2hbMTNdID0gMHg3RDsKPiA+ID4rCX0KPiA+ID4rCj4gPiA+ Kwlyb3dfaW5kZXggPSBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXMoY29tcHJlc3NlZF9icHAp Owo+ID4gPisJY29sdW1uX2luZGV4ID0KPiA+ID4rCQlnZXRfY29sdW1uX2luZGV4X2Zvcl9yY19w YXJhbXModmRzY19jZmctCj4gPiA+PmJpdHNfcGVyX2NvbXBvbmVudCk7Cj4gPiA+Kwo+ID4gPisJ aWYgKHJvd19pbmRleCA8IDAgfHwgY29sdW1uX2luZGV4IDwgMCkKPiA+ID4rCQlyZXR1cm4gLUVJ TlZBTDsKPiA+ID4rCj4gPiA+Kwl2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0ID0KPiA+ ID4rCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZpcnN0X2xpbmVfYnBnX29m ZnNldDsKPiA+ID4rCXZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXkgPQo+ID4gPisJCXJjX3Bh cmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uaW5pdGlhbF94bWl0X2RlbGF5Owo+ID4gPisJ dmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ID0KPiA+ID4rCQlyY19wYXJhbXNbcm93X2luZGV4XVtj b2x1bW5faW5kZXhdLmluaXRpYWxfb2Zmc2V0Owo+ID4gPisJdmRzY19jZmctPmZsYXRuZXNzX21p bl9xcCA9Cj4gPiA+KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVz c19taW5fcXA7Cj4gPiA+Kwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWF4X3FwID0KPiA+ID4rCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZsYXRuZXNzX21heF9xcDsKPiA+ID4rCXZk c2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MCA9Cj4gPiA+KwkJcmNfcGFyYW1zW3Jvd19pbmRl eF1bY29sdW1uX2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MDsKPiA+ID4rCXZkc2NfY2ZnLT5y Y19xdWFudF9pbmNyX2xpbWl0MSA9Cj4gPiA+KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1u X2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MTsKPiA+ID4rCj4gPiA+Kwlmb3IgKGkgPSAwOyBp IDwgRFNDX05VTV9CVUZfUkFOR0VTOyBpKyspCj4gPiA+KwkJdmRzY19jZmctPnJjX3JhbmdlX3Bh cmFtc1tpXSA9Cj4gPiA+Kwo+ID4gPglyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LnJjX3JhbmdlX3BhcmFtc1tpXTsKPiA+ID4rCj4gPiA+KwkvKgo+ID4gPisJICogQml0c1BlckNv bXBvbmVudCB2YWx1ZSBkZXRlcm1pbmVzIG11eF93b3JkX3NpemU6Cj4gPiA+KwkgKiBXaGVuIEJp dHNQZXJDb21wb25lbnQgaXMgMTJicGMsIG11eFdvcmRTaXplIHdpbGwgYmUgZXF1YWwgdG8gNjQK PiA+ID5iaXRzCj4gPiA+KwkgKiBXaGVuIEJpdHNQZXJDb21wb25lbnQgaXMgOCBvciAxMGJwYywg bXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0bwo+ID4gPisJICogNDggYml0cwo+ID4gPisJICov Cj4gPiA+KwlpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSA4IHx8Cj4gPiA+Kwkg ICAgdmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMCkKPiA+ID4rCQl2ZHNjX2NmZy0+ bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzhfMTBfQlBDOwo+ID4gPisJZWxzZSBp ZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMikKPiA+ID4rCQl2ZHNjX2NmZy0+ bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzEyX0JQQzsKPiA+ID4rCj4gPiA+Kwkv KiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBhIDYgYml0IHZhbHVlIHdpdGggMyBmcmFjdGlvbmFsIGJp dHMgKFUzLjMpICovCj4gPiA+Kwl2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92YWx1ZSA9ICh2ZHNj X2NmZy0+cmNfbW9kZWxfc2l6ZSA8PCAzKSAvCj4gPiA+KwkJKHZkc2NfY2ZnLT5yY19tb2RlbF9z aXplIC0gdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKPiA+ID4rCj4gPiA+KwlyZXR1cm4gMDsK PiA+ID4rfQo+ID4gPmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9p bmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggaW5kZXgKPiA+ID4wY2YyNDA3Li5mMTc4OTMzIDEw MDY0NAo+ID4gPi0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ID4gPisrKyBiL2lu Y2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ID4gPkBAIC0xODYsNiArMTg2LDkgQEAKPiA+ID4K PiA+ID4gI2RlZmluZSBEUF9HVUlECQkJCSAgICAweDAzMCAgIC8qIDEuMiAqLwo+ID4gPgo+ID4g PisjZGVmaW5lIERQX0RTQ19SQ19QSVhFTFNfUEVSX0dST1VQCQkzCj4gPiA+KyNkZWZpbmUgRFBf RFNDX1NDQUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVgJNDA5NQo+ID4gPisKPiA+ID4gI2RlZmlu ZSBEUF9EU0NfU1VQUE9SVCAgICAgICAgICAgICAgICAgICAgICAweDA2MCAgIC8qIERQIDEuNCAq Lwo+ID4gPiAjIGRlZmluZSBEUF9EU0NfREVDT01QUkVTU0lPTl9JU19TVVBQT1JURUQgICgxIDw8 IDApCj4gPiA+Cj4gPiA+ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kc2MuaCBiL2luY2x1 ZGUvZHJtL2RybV9kc2MuaCBpbmRleAo+ID4gPjRjZmNkMDMuLjc5NmM3OTggMTAwNjQ0Cj4gPiA+ LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oCj4gPiA+KysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rz Yy5oCj4gPiA+QEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IGRzY19yY19yYW5nZV9wYXJhbWV0ZXJz IHsKPiA+ID4gCS8qIE1heCBRdWFudGl6YXRpb24gUGFyYW1ldGVycyBhbGxvd2VkIGZvciB0aGlz IHJhbmdlICovCj4gPiA+IAl1OCByYW5nZV9tYXhfcXA7Cj4gPiA+IAkvKiBCaXRzL2dyb3VwIG9m ZnNldCB0byBhcHBseSB0byB0YXJnZXQgZm9yIHRoaXMgZ3JvdXAgKi8KPiA+ID4tCXU4IHJhbmdl X2JwZ19vZmZzZXQ7Cj4gPiA+KwlzOCByYW5nZV9icGdfb2Zmc2V0Owo+ID4gPiB9Owo+ID4gPgo+ ID4gPiBzdHJ1Y3QgZHJtX2RzY19jb25maWcgewo+ID4gPi0tCj4gPiA+Mi43LjQKPiA+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK