From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Anand, Jerome" Subject: Re: [PATCH 1/7] drm/i915: setup bridge for HDMI LPE audio driver Date: Thu, 15 Dec 2016 06:10:07 +0000 Message-ID: References: <20161212181043.12512-1-jerome.anand@intel.com> <20161212181043.12512-2-jerome.anand@intel.com> <20161214125227.iasl2ff4ud6cdize@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161214125227.iasl2ff4ud6cdize@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: "tiwai@suse.de" , "intel-gfx@lists.freedesktop.org" , "broonie@kernel.org" , "Ughreja, Rakesh A" , "alsa-devel@alsa-project.org" List-Id: alsa-devel@alsa-project.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogRGFuaWVsIFZldHRlciBbbWFp bHRvOmRhbmllbC52ZXR0ZXJAZmZ3bGwuY2hdIE9uIEJlaGFsZiBPZiBEYW5pZWwKPiBWZXR0ZXIK PiBTZW50OiBXZWRuZXNkYXksIERlY2VtYmVyIDE0LCAyMDE2IDY6MjIgUE0KPiBUbzogQW5hbmQs IEplcm9tZSA8amVyb21lLmFuYW5kQGludGVsLmNvbT4KPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnOwo+IHRpd2FpQHN1c2Uu ZGU7IGJyb29uaWVAa2VybmVsLm9yZzsgVWdocmVqYSwgUmFrZXNoIEEKPiA8cmFrZXNoLmEudWdo cmVqYUBpbnRlbC5jb20+Cj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSCAxLzddIGRy bS9pOTE1OiBzZXR1cCBicmlkZ2UgZm9yIEhETUkgTFBFCj4gYXVkaW8gZHJpdmVyCj4gCj4gT24g TW9uLCBEZWMgMTIsIDIwMTYgYXQgMTE6NDA6MzdQTSArMDUzMCwgSmVyb21lIEFuYW5kIHdyb3Rl Ogo+ID4gRW5hYmxlIHN1cHBvcnQgZm9yIEhETUkgTFBFIGF1ZGlvIG1vZGUgb24gQmF5dHJhaWwg YW5kIENoZXJyeXRyYWlsCj4gPiB3aGVuIEhEYXVkaW8gY29udHJvbGxlciBpcyBub3QgZGV0ZWN0 ZWQKPiA+Cj4gPiBTZXR1cCBtaW5pbXVtIHJlcXVpcmVkIHJlc291cmNlcyBkdXJpbmcgaTkxNV9k cml2ZXJfbG9hZDoKPiA+IDEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlP L0lSUSByZXNvdXJjZXMgMi4gTWFrZSB0aGUKPiA+IHBsYXRmb3JtIGRldmljZSBjaGlsZCBvZiBp OTE1IGRldmljZSBmb3IgcnVudGltZSBQTS4KPiA+IDMuIENyZWF0ZSBJUlEgY2hpcCB0byBmb3J3 YXJkIEhETUkgTFBFIGF1ZGlvIGlycXMuCj4gPgo+ID4gSERNSSBMUEUgYXVkaW8gZHJpdmVyIChh IHN0YW5kYWxvbmUgc291bmQgZHJpdmVyKSBwcm9iZXMgdGhlIExQRSBhdWRpbwo+ID4gZGV2aWNl IGFuZCBjcmVhdGVzIGEgbmV3IHNvdW5kIGNhcmQuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogUGll cnJlLUxvdWlzIEJvc3NhcnQKPiA+IDxwaWVycmUtbG91aXMuYm9zc2FydEBsaW51eC5pbnRlbC5j b20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKZXJvbWUgQW5hbmQgPGplcm9tZS5hbmFuZEBpbnRlbC5j b20+Cj4gPiAtLS0KPiA+ICBEb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdCAgICAgICAgICAgICB8 ICAgOSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgfCAgIDMg Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgICA4ICstCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgMTUgKysKPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICB8ICAyNyArKysKPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICB8ICAgMyArCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMgfCAzNjMKPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ICBpbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaCAgICAgICAg ICB8ICA0NSArKysrCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA0NzEgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlCj4gPiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHBlX2F1ZGlvLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaW50 ZWxfbHBlX2F1ZGlvLmgKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvaTkx NS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ID4gaW5kZXggMzg0M2VmNi4uZjk0 YTRlNSAxMDA2NDQKPiA+IC0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2k5MTUucnN0Cj4gPiArKysg Yi9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ID4gQEAgLTIxMyw2ICsyMTMsMTUgQEAgVmlk ZW8gQklPUyBUYWJsZSAoVkJUKSAgLi4ga2VybmVsLWRvYzo6Cj4gPiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92YnRfZGVmcy5oCj4gPiAgICAgOmludGVybmFsOgo+ID4KPiA+ICtpbnRlbCBo ZG1pIGxwZSBhdWRpbyBzdXBwb3J0Cj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ ID4gKwo+ID4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scGVf YXVkaW8uYwo+ID4gKyAgIDpkb2M6ICBMUEUgQXVkaW8gaW50ZWdyYXRpb24gZm9yIEhETUkgb3Ig RFAgcGxheWJhY2sKPiA+ICsKPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHBlX2F1ZGlvLmMKPiA+ICsgICA6aW50ZXJuYWw6Cj4gPiArCj4gPiAgTWVtb3J5 IE1hbmFnZW1lbnQgYW5kIENvbW1hbmQgU3VibWlzc2lvbgo+ID4gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBpbmRl eCAzYzMwOTE2Li45ZDQ3OGM0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiBAQCAt MTI3LDYgKzEyNyw5IEBAIGk5MTUteSArPSBpbnRlbF9ndnQubyAgaW5jbHVkZSAkKHNyYykvZ3Z0 L01ha2VmaWxlCj4gPiBlbmRpZgo+ID4KPiA+ICsjIExQRSBBdWRpbyBmb3IgVkxWIGFuZCBDSFQK PiA+ICtpOTE1LXkgKz0gaW50ZWxfbHBlX2F1ZGlvLm8KPiA+ICsKPiA+ICBvYmotJChDT05GSUdf RFJNX0k5MTUpICs9IGk5MTUubwo+ID4KPiA+ICBDRkxBR1NfaTkxNV90cmFjZV9wb2ludHMubyA6 PSAtSSQoc3JjKSBkaWZmIC0tZ2l0Cj4gPiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiBpbmRleCA2NDI4NTg4Li45 Mjc5NmZkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gQEAgLTExMzIsNyAr MTEzMiw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdAo+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gPiAg CQlpbnRlbF9ncHVfaXBzX2luaXQoZGV2X3ByaXYpOwo+ID4KPiA+IC0JaTkxNV9hdWRpb19jb21w b25lbnRfaW5pdChkZXZfcHJpdik7Cj4gPiArCWlmIChpbnRlbF9scGVfYXVkaW9faW5pdChkZXZf cHJpdikgPCAwKQo+ID4gKwkJaTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChkZXZfcHJpdik7Cj4g Pgo+ID4gIAkvKgo+ID4gIAkgKiBTb21lIHBvcnRzIHJlcXVpcmUgY29ycmVjdGx5IHNldC11cCBo cGQgcmVnaXN0ZXJzIGZvciBkZXRlY3Rpb24KPiA+IHRvIEBAIC0xMTUwLDcgKzExNTEsMTAgQEAg c3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiAgICovCj4gPiAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfdW5yZWdp c3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiB7Cj4gPiAtCWk5MTVf YXVkaW9fY29tcG9uZW50X2NsZWFudXAoZGV2X3ByaXYpOwo+ID4gKwlpZiAoSEFTX0xQRV9BVURJ TyhkZXZfcHJpdikpCj4gPiArCQlpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oZGV2X3ByaXYpOwo+ ID4gKwllbHNlCj4gPiArCQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9jbGVhbnVwKGRldl9wcml2KTsK PiA+Cj4gPiAgCWludGVsX2dwdV9pcHNfdGVhcmRvd24oKTsKPiA+ICAJYWNwaV92aWRlb191bnJl Z2lzdGVyKCk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IDQwYzU1YzkuLjEz MTc4MzQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBAQCAtMjUxNCw2ICsy NTE0LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiA+ICAJLyogVXNlZCB0byBzYXZl IHRoZSBwaXBlLXRvLWVuY29kZXIgbWFwcGluZyBmb3IgYXVkaW8gKi8KPiA+ICAJc3RydWN0IGlu dGVsX2VuY29kZXIgKmF2X2VuY19tYXBbSTkxNV9NQVhfUElQRVNdOwo+ID4KPiA+ICsJLyogbmVj ZXNzYXJ5IHJlc291cmNlIHNoYXJpbmcgd2l0aCBIRE1JIExQRSBhdWRpbyBkcml2ZXIuICovCj4g PiArCXN0cnVjdCB7Cj4gPiArCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2Owo+ID4g KwkJaW50CWlycTsKPiA+ICsJfSBscGVfYXVkaW87Cj4gPiArCj4gPiAgCS8qCj4gPiAgCSAqIE5P VEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZ b3VyCj4gcGF0Y2gKPiA+ICAJICogd2lsbCBiZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZvciBh IGJldHRlciBwbGFjZS4KPiA+IEBAIC0yOTEyLDYgKzI5MTgsOCBAQCBpbnRlbF9pbmZvKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpCj4gPgo+ID4gICNkZWZpbmUg SEFTX1BPT0xFRF9FVShkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX3Bvb2xlZF9ldSkK PiA+Cj4gPiArI2RlZmluZSBIQVNfTFBFX0FVRElPKGRldl9wcml2KSAoKGRldl9wcml2KS0+bHBl X2F1ZGlvLnBsYXRkZXYgIT0KPiA+ICtOVUxMKQo+ID4gKwo+ID4gICNkZWZpbmUgSU5URUxfUENI X0RFVklDRV9JRF9NQVNLCQkweGZmMDAKPiA+ICAjZGVmaW5lIElOVEVMX1BDSF9JQlhfREVWSUNF X0lEX1RZUEUJCTB4M2IwMAo+ID4gICNkZWZpbmUgSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQ RQkJMHgxYzAwCj4gPiBAQCAtMzY4Miw2ICszNjkwLDEzIEBAIGV4dGVybiBpbnQgaTkxNV9yZXN0 b3JlX3N0YXRlKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyAgdm9pZCBp OTE1X3NldHVwX3N5c2ZzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyAg dm9pZCBpOTE1X3RlYXJkb3duX3N5c2ZzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ID4KPiA+ICsvKiBpOTE1X2xwZV9hdWRpby5jICovCj4gPiAraW50ICBpbnRlbF9s cGVfYXVkaW9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyBpbnQKPiA+ ICtpbnRlbF9scGVfYXVkaW9fc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsgdm9pZAo+ID4gK2ludGVsX2xwZV9hdWRpb190ZWFyZG93bihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOyB2b2lkCj4gPiAraW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7IGJvb2wKPiA+ICtpbnRlbF9scGVfYXVk aW9fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiArCj4gPiAg LyogaW50ZWxfaTJjLmMgKi8KPiA+ICBleHRlcm4gaW50IGludGVsX3NldHVwX2dtYnVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiBleHRlcm4gdm9pZCBpbnRlbF90ZWFy ZG93bl9nbWJ1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyBpbmRleCBhMGU3MGY1Li45YjcyZTc3IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gQEAgLTE4OTQsNiArMTg5NCwxNCBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgdmFsbGV5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLAo+IHZvaWQgKmFyZykKPiA+ ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRz KTsKPiA+Cj4gPiAgCQkvKgo+ID4gKwkJICogTFBFIGF1ZGlvIGludGVycnVwdHMgYXJlIG9ubHkg ZW5hYmxlZCBvbiBCYXl0cmFpbCBhbmQKPiA+ICsJCSAqIENoZXJyeVZpZXcgcGxhdGZvcm1zIHdp dGhvdXQgSERhdWRpbwo+ID4gKwkJICovCj4gCj4gQmlrZXNoZWQ6IEkgZG9uJ3Qgc2VlIG11Y2gg aG93IHRoaXMgY29tbWVudCBhZGRzIGFueXRoaW5nLCB1bmNvbmRpdGlvbmFsbHkKPiBoYW5kbGlu ZyBpbnRlcnJ1cHRzIGJ1dCBvbmx5IGVuYWJsaW5nIHRoZW0gaW4gaHcgd2hlbiBuZWVkZWQgaXMg dGhlIG5vcm1hbAo+IHBhdHRlcm4gaW4gaTkxNS4gU2FtZSBiZWxvdy4KPiAKCk9LIC0gY29tbWVu dCBjYW4gYmUgcmVtb3ZlZAoKPiA+ICsJCWlmIChpaXIgJiAoSTkxNV9MUEVfUElQRV9BX0lOVEVS UlVQVCB8Cj4gPiArCQkJICAgSTkxNV9MUEVfUElQRV9CX0lOVEVSUlVQVCkpCj4gPiArCQkJaW50 ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKGRldl9wcml2KTsKPiA+ICsKPiA+ICsJCS8qCj4gPiAg CQkgKiBWTFZfSUlSIGlzIHNpbmdsZSBidWZmZXJlZCwgYW5kIHJlZmxlY3RzIHRoZSBsZXZlbAo+ ID4gIAkJICogZnJvbSBQSVBFU1RBVC9QT1JUX0hPVFBMVUdfU1RBVCwgaGVuY2UgY2xlYXIgaXQg bGFzdC4KPiA+ICAJCSAqLwo+ID4gQEAgLTE5NzQsNiArMTk4MiwxNSBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLAo+IHZvaWQgKmFyZykKPiA+ICAJ CXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsK PiA+Cj4gPiAgCQkvKgo+ID4gKwkJICogTFBFIGF1ZGlvIGludGVycnVwdHMgYXJlIG9ubHkgZW5h YmxlZCBvbiBCYXl0cmFpbCBhbmQKPiA+ICsJCSAqIENoZXJyeVZpZXcgcGxhdGZvcm1zIHdpdGhv dXQgSERhdWRpbwo+ID4gKwkJICovCgpPSyAtIGNvbW1lbnQgY2FuIGJlIHJlbW92ZWQKCj4gPiAr CQlpZiAoaWlyICYgKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+ID4gKwkJCSAgIEk5MTVf TFBFX1BJUEVfQl9JTlRFUlJVUFQgfAo+ID4gKwkJCSAgIEk5MTVfTFBFX1BJUEVfQ19JTlRFUlJV UFQpKQo+ID4gKwkJCWludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gPiAr Cj4gPiArCQkvKgo+ID4gIAkJICogVkxWX0lJUiBpcyBzaW5nbGUgYnVmZmVyZWQsIGFuZCByZWZs ZWN0cyB0aGUgbGV2ZWwKPiA+ICAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQs IGhlbmNlIGNsZWFyIGl0IGxhc3QuCj4gPiAgCQkgKi8KPiA+IEBAIC0yOTE0LDYgKzI5MzEsNyBA QCBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9pcnFfcG9zdGluc3RhbGwoc3RydWN0Cj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgCXUzMiBwaXBlc3RhdF9tYXNrOwo+ID4gIAl1MzIg ZW5hYmxlX21hc2s7Cj4gPiAgCWVudW0gcGlwZSBwaXBlOwo+ID4gKwl1MzIgdmFsOwo+ID4KPiA+ ICAJcGlwZXN0YXRfbWFzayA9IFBMQU5FX0ZMSVBfRE9ORV9JTlRfU1RBVFVTX1ZMViB8Cj4gPiAg CQkJUElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTOwo+ID4gQEAgLTI5MzAsNiArMjk0OCwx NSBAQCBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9pcnFfcG9zdGluc3RhbGwoc3RydWN0Cj4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Cj4gPiAgCVdBUk5fT04oZGV2X3ByaXYtPmly cV9tYXNrICE9IH4wKTsKPiA+Cj4gPiArCS8qIGFkZCBpbnRlcnJ1cHQgbWFza3MgdW5jb25kaXRp YWxseSBoZXJlLCB0aGUgYWN0dWFsIHVubWFzawo+ID4gKwkgKiB3aWxsIHRha2UgcGxhY2Ugb25s eSBpZiB0aGUgTFBFX0FVRElPIG1vZGUgaXMgZGV0ZWN0ZWQKPiA+ICsJICovCj4gCj4gU2FtZSBo ZXJlLCB0aGlzIGlzIGp1c3QgaG93IHdlIHJvbGwuCj4gCgpPSyAtIGNvbW1lbnQgY2FuIGJlIHJl bW92ZWQKCj4gPiArCXZhbCA9IChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKPiA+ICsJCUk5 MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQgfAo+ID4gKwkJSTkxNV9MUEVfUElQRV9DX0lOVEVSUlVQ VCk7Cj4gPiArCj4gPiArCWVuYWJsZV9tYXNrIHw9IHZhbDsKPiA+ICsKPiA+ICAJZGV2X3ByaXYt PmlycV9tYXNrID0gfmVuYWJsZV9tYXNrOwo+ID4KPiA+ICAJR0VONV9JUlFfSU5JVChWTFZfLCBk ZXZfcHJpdi0+aXJxX21hc2ssIGVuYWJsZV9tYXNrKTsgZGlmZiAtLWdpdAo+ID4gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ID4gaW5kZXggOTA2ODVkMi4uNmZhMGUyNSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiA+IEBAIC0yNDI0LDYgKzI0MjQsOSBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxz IHsKPiA+ICAjZGVmaW5lIEk5MTVfQVNMRV9JTlRFUlJVUFQJCQkJKDE8PDApCj4gPiAgI2RlZmlu ZSBJOTE1X0JTRF9VU0VSX0lOVEVSUlVQVAo+IAkoMTw8MjUpCj4gPgo+ID4gKyNkZWZpbmUgSTkx NV9IRE1JX0xQRV9BVURJT19CQVNFCShWTFZfRElTUExBWV9CQVNFICsKPiAweDY1MDAwKQo+ID4g KyNkZWZpbmUgSTkxNV9IRE1JX0xQRV9BVURJT19TSVpFCTB4MTAwMAo+ID4gKwo+ID4gICNkZWZp bmUgR0VONl9CU0RfUk5DSUQJCQlfTU1JTygweDEyMTk4KQo+ID4KPiA+ICAjZGVmaW5lIEdFTjdf RkZfVEhSRUFEX01PREUJCV9NTUlPKDB4MjBhMCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scGVfYXVkaW8uYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scGVfYXVkaW8uYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw MDAuLmUxMmU1ZjcKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xwZV9hdWRpby5jCj4gPiBAQCAtMCwwICsxLDM2MyBAQAo+ID4gKy8qCj4gPiAr ICogQ29weXJpZ2h0IChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv bgo+ID4gK29idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gKyJTb2Z0d2FyZSIpLAo+ID4gKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0Cj4gPiArbGltaXRhdGlvbgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+ID4gK3N1YmxpY2Vuc2UsCj4gPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20KPiA+ICt0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZwo+ID4gK3RoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4gPiArb2YgdGhlCj4gPiAr ICogU29mdHdhcmUuCj4gPiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPiBLSU5ELAo+ID4gK0VYUFJFU1MgT1IKPiA+ ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCj4gPiArTUVSQ0hBTlRBQklMSVRZLAo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTgo+IE5PIEVWRU5UCj4gPiArU0hBTEwK PiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwKPiBEQU1BR0VTCj4gPiArT1IgT1RIRVIKPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4gT1RIRVJXSVNFLAo+ID4gK0FS SVNJTkcKPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFCj4gT1IKPiA+ICtPVEhFUiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBT T0ZUV0FSRS4KPiA+ICsgKgo+ID4gKyAqIEF1dGhvcnM6Cj4gPiArICogICAgUGllcnJlLUxvdWlz IEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KPiA+ICsgKiAg ICBKZXJvbWUgQW5hbmQgPGplcm9tZS5hbmFuZEBpbnRlbC5jb20+Cj4gPiArICogICAgYmFzZWQg b24gVkVEIHBhdGNoZXMKPiA+ICsgKgo+ID4gKyAqLwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIERP QzogTFBFIEF1ZGlvIGludGVncmF0aW9uIGZvciBIRE1JIG9yIERQIHBsYXliYWNrCj4gPiArICoK PiA+ICsgKiBNb3RpdmF0aW9uOgo+ID4gKyAqIEF0b20gcGxhdGZvcm1zIChlLmcuIHZhbGxleXZp ZXcgYW5kIGNoZXJyeVRyYWlsKSBpbnRlZ3JhdGVzIGEKPiA+ICtETUEtYmFzZWQKPiA+ICsgKiBp bnRlcmZhY2UgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHRyYWRpdGlvbmFsIEhEYXVkaW8gcGF0 aC4gV2hpbGUKPiA+ICt0aGlzCj4gPiArICogbW9kZSBpcyB1bnJlbGF0ZWQgdG8gdGhlIExQRSBh a2EgU1NUIGF1ZGlvIGVuZ2luZSwgdGhlCj4gPiArZG9jdW1lbnRhdGlvbiByZWZlcnMKPiA+ICsg KiB0byB0aGlzIG1vZGUgYXMgTFBFIHNvIHdlIGtlZXAgdGhpcyBub3RhdGlvbiBmb3IgdGhlIHNh a2Ugb2YKPiBjb25zaXN0ZW5jeS4KPiA+ICsgKgo+ID4gKyAqIFRoZSBpbnRlcmZhY2UgaXMgaGFu ZGxlZCBieSBhIHNlcGFyYXRlIHN0YW5kYWxvbmUgZHJpdmVyCj4gPiArbWFpbnRhaW5lZCBpbiB0 aGUKPiA+ICsgKiBBTFNBIHN1YnN5c3RlbSBmb3Igc2ltcGxpY2l0eS4gVG8gbWluaW1pemUgdGhl IGludGVyYWN0aW9uIGJldHdlZW4KPiA+ICt0aGUgdHdvCj4gPiArICogc3Vic3lzdGVtcywgYSBi cmlkZ2UgaXMgc2V0dXAgYmV0d2VlbiB0aGUgaGRtaS1scGUtYXVkaW8gYW5kIGk5MTU6Cj4gPiAr ICogMS4gQ3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHRvIHNoYXJlIE1NSU8vSVJRIHJlc291cmNl cwo+ID4gKyAqIDIuIE1ha2UgdGhlIHBsYXRmb3JtIGRldmljZSBjaGlsZCBvZiBpOTE1IGRldmlj ZSBmb3IgcnVudGltZSBQTS4KPiA+ICsgKiAzLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9yd2FyZCB0 aGUgTFBFIGF1ZGlvIGlycXMuCj4gPiArICogdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBwcm9i ZXMgdGhlIGxwZSBhdWRpbyBkZXZpY2UgYW5kIGNyZWF0ZXMKPiA+ICthIG5ldwo+ID4gKyAqIHNv dW5kIGNhcmQKPiA+ICsgKgo+ID4gKyAqIFRocmVhdHM6Cj4gPiArICogRHVlIHRvIHRoZSByZXN0 cmljdGlvbiBpbiBMaW51eCBwbGF0Zm9ybSBkZXZpY2UgbW9kZWwsIHVzZXIgbmVlZAo+ID4gK21h bnVhbGx5Cj4gPiArICogdW5pbnN0YWxsIHRoZSBoZG1pLWxwZS1hdWRpbyBkcml2ZXIgYmVmb3Jl IHVuaW5zdGFsbGluZyBpOTE1Cj4gPiArbW9kdWxlLAo+ID4gKyAqIG90aGVyd2lzZSB3ZSBtaWdo dCBydW4gaW50byB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYWZ0ZXIgaTkxNQo+ID4gK3JlbW92ZXMg dGhlCj4gPiArICogcGxhdGZvcm0gZGV2aWNlOiBldmVuIHRob3VnaCBoZG1pLWxwZS1hdWRpbyBk cml2ZXIgaXMgcmVsZWFzZWQsCj4gPiArdGhlIG1vZHVsZXMKPiA+ICsgKiBpcyBzdGlsbCBpbiAi aW5zdGFsbGVkIiBzdGF0dXMuCj4gPiArICoKPiA+ICsgKiBJbXBsZW1lbnRhdGlvbjoKPiA+ICsg KiBUaGUgTU1JTy9SRUcgcGxhdGZvcm0gcmVzb3VyY2VzIGFyZSBjcmVhdGVkIGFjY29yZGluZyB0 byB0aGUKPiA+ICtyZWdpc3RlcnMKPiA+ICsgKiBzcGVjaWZpY2F0aW9uLgo+ID4gKyAqIFdoZW4g Zm9yd2FyZGluZyBMUEUgYXVkaW8gaXJxcywgdGhlIGZsb3cgY29udHJvbCBoYW5kbGVyIHNlbGVj dGlvbgo+ID4gK2RlcGVuZHMKPiA+ICsgKiBvbiB0aGUgcGxhdGZvcm0sIGZvciBleGFtcGxlIG9u IHZhbGxleXZpZXcgaGFuZGxlX3NpbXBsZV9pcnEgaXMKPiBlbm91Z2guCj4gPiArICoKPiA+ICsg Ki8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvYWNwaS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4gPiArCj4gPiArI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gPiArI2luY2x1 ZGUgPGRybS9pbnRlbF9scGVfYXVkaW8uaD4KPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RldmljZSoKPiA+ICtscGVfYXVkaW9fcGxhdGRldl9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KSB7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2 X3ByaXYtPmRybTsKPiA+ICsJaW50IHJldDsKPiA+ICsJc3RydWN0IHJlc291cmNlIHJzY1syXSA9 IHt9Owo+ID4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2Owo+ID4gKwl1NjQgKmRt YV9tYXNrOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRtaV9scGVfYXVkaW9fcGRhdGEgKnBkYXRhOwo+ ID4gKwo+ID4gKwlpZiAoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPCAwKQo+ID4gKwkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiArCj4gPiArCXBsYXRkZXYgPSBwbGF0Zm9ybV9kZXZpY2Vf YWxsb2MoImhkbWktbHBlLWF1ZGlvIiwgLTEpOwo+ID4gKwlpZiAoIXBsYXRkZXYpIHsKPiA+ICsJ CXJldCA9IC1FTk9NRU07Cj4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBMUEUg YXVkaW8gcGxhdGZvcm0KPiBkZXZpY2VcbiIpOwo+ID4gKwkJZ290byBlcnI7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJLyogdG8gd29yay1hcm91bmQgY2hlY2tfYWRkciBpbiBub21tdV9tYXBfc2coKSAq Lwo+ID4gKwlkbWFfbWFzayA9IGttYWxsb2Moc2l6ZW9mKCpwbGF0ZGV2LT5kZXYuZG1hX21hc2sp LAo+IEdGUF9LRVJORUwpOwo+ID4gKwlpZiAoIWRtYV9tYXNrKSB7Cj4gPiArCQlyZXQgPSAtRU5P TUVNOwo+ID4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgZG1hX21hc2tcbiIpOwo+ ID4gKwkJZ290byBlcnJfcHV0X2RldjsKPiA+ICsJfQo+ID4gKwkqZG1hX21hc2sgPSBETUFfQklU X01BU0soMzIpOwo+ID4gKwlwbGF0ZGV2LT5kZXYuZG1hX21hc2sgPSBkbWFfbWFzazsKPiA+ICsJ cGxhdGRldi0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrID0gKmRtYV9tYXNrOwo+ID4gKwo+ID4gKwly c2NbMF0uc3RhcnQgICAgPSByc2NbMF0uZW5kID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4g PiArCXJzY1swXS5mbGFncyAgICA9IElPUkVTT1VSQ0VfSVJROwo+ID4gKwlyc2NbMF0ubmFtZSAg ICAgPSAiaGRtaS1scGUtYXVkaW8taXJxIjsKPiA+ICsKPiA+ICsJcnNjWzFdLnN0YXJ0ICAgID0g cGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCkgKwo+ID4gKwkJSTkxNV9IRE1JX0xQRV9B VURJT19CQVNFOwo+ID4gKwlyc2NbMV0uZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2 LT5wZGV2LCAwKSArCj4gPiArCQlJOTE1X0hETUlfTFBFX0FVRElPX0JBU0UgKwo+IEk5MTVfSERN SV9MUEVfQVVESU9fU0laRSAtIDE7Cj4gPiArCXJzY1sxXS5mbGFncyAgICA9IElPUkVTT1VSQ0Vf TUVNOwo+ID4gKwlyc2NbMV0ubmFtZSAgICAgPSAiaGRtaS1scGUtYXVkaW8tbW1pbyI7Cj4gPiAr Cj4gPiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHBsYXRkZXYsIHJzYywg Mik7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCByZXNv dXJjZSBmb3IgcGxhdGZvcm0gZGV2aWNlOgo+ICVkXG4iLAo+ID4gKwkJCXJldCk7Cj4gPiArCQln b3RvIGVycl9wdXRfZGV2Owo+ID4gKwl9Cj4gPiArCj4gPiArCXBkYXRhID0ga3phbGxvYyhzaXpl b2YoKnBkYXRhKSwgR0ZQX0tFUk5FTCk7Cj4gPiArCj4gPiArCWlmIChwZGF0YSA9PSBOVUxMKSB7 Cj4gPiArCQlyZXQgPSAtRU5PTUVNOwo+ID4gKwkJZ290byBlcnJfcHV0X2RldjsKPiA+ICsJfQo+ ID4gKwlwbGF0ZGV2LT5kZXYucGxhdGZvcm1fZGF0YSA9IHBkYXRhOwo+ID4gKwlzcGluX2xvY2tf aW5pdCgmcGRhdGEtPmxwZV9hdWRpb19zbG9jayk7Cj4gPiArCj4gPiArCS8qIGZvciBMUEUgYXVk aW8gZHJpdmVyJ3MgcnVudGltZS1QTSAqLwo+ID4gKwlwbGF0ZGV2LT5kZXYucGFyZW50ID0gZGV2 LT5kZXY7Cj4gPiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGQocGxhdGRldik7Cj4gPiArCWlm IChyZXQpIHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCBMUEUgYXVkaW8gcGxhdGZv cm0gZGV2aWNlOgo+ICVkXG4iLAo+ID4gKwkJCXJldCk7Cj4gPiArCQlnb3RvIGVycl9wdXRfZGV2 Owo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiBwbGF0ZGV2Owo+ID4gK2Vycl9wdXRfZGV2Ogo+ ID4gKwlwbGF0Zm9ybV9kZXZpY2VfcHV0KHBsYXRkZXYpOwo+ID4gKwlrZnJlZShkbWFfbWFzayk7 Cj4gPiArZXJyOgo+ID4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgdm9pZCBscGVfYXVkaW9fcGxhdGRldl9kZXN0cm95KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlCj4gPiArKmRldl9wcml2KSB7Cj4gPiArCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRl dl9wcml2LT5scGVfYXVkaW8ucGxhdGRldik7Cj4gPiArCWtmcmVlKGRldl9wcml2LT5scGVfYXVk aW8ucGxhdGRldi0+ZGV2LmRtYV9tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg bHBlX2F1ZGlvX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKSB7Cj4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGQtPmNoaXBfZGF0YTsKPiA+ICsJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKPiA+ICsJdTMyIHZhbCA9IChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBU IHwKPiA+ICsJCUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQpOwo+IAo+IFBJUEVfQyBtaXNzaW5n Pwo+IAoKTm8gUElQRV9DIG9uIHZsdgoKPiA+ICsKPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmRl dl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBWTFZf SUVSIGlzIGFscmVhZHkgc2V0IGluIHRoZSB2bHZfZGlzcGxheV9wb3N0aW5zdGFsbCgpLAo+ID4g KwkgKiB3ZSBvbmx5IGNoYW5nZSBWTFZfSUlSIGFuZCBWTFZfSU1SCj4gPiArCSAqLwo+ID4gKwlk ZXZfcHJpdi0+aXJxX21hc2sgJj0gfnZhbDsKPiA+ICsJSTkxNV9XUklURShWTFZfSUlSLCB2YWwp Owo+ID4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7Cj4gPiArCUk5MTVfV1JJVEUoVkxWX0lN UiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiA+ICsJUE9TVElOR19SRUFEKFZMVl9JTVIpOwo+IAo+ IHZsdl91cGRhdGVfZGlzcGxheV9pcnEgc2ltaWxhciB0byBpbGtfdXBkYXRlX2Rpc3BsYXlfaXJx IGluIGk5MTVfaXJxLmMgd291bGQKPiBiZSBnb29kIGltby4gQW5kIGFnYWluIHRoZSBjb21tZW50 IGtpbmRhIGV4cGxhaW5zIHRoZSB1c3VhbC4gU2FtZSBiZWxvdy4KPiAKCk9LIC0gY29tbWVudCBj YW4gYmUgcmVtb3ZlZAoKPiA+ICsKPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPmlycV9sb2NrLCBpcnFmbGFncyk7IH0KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBscGVfYXVk aW9faXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKSB7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGQtPmNoaXBfZGF0YTsKPiA+ICsJdW5zaWduZWQgbG9uZyBpcnFm bGFnczsKPiA+ICsJdTMyIHZhbCA9IChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKPiA+ICsJ CUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQpOwo+ID4gKwo+ID4gKwlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAq IFZMVl9JRVIgaXMgYWxyZWFkeSBzZXQgaW4gdGhlIHZsdl9kaXNwbGF5X3Bvc3RpbnN0YWxsKCks Cj4gPiArCSAqIHdlIG9ubHkgY2hhbmdlIFZMVl9JSVIgYW5kIFZMVl9JTVIKPiA+ICsJICovCgpP SyAtIGNvbW1lbnQgY2FuIGJlIHJlbW92ZWQKCj4gPiArCWRldl9wcml2LT5pcnFfbWFzayB8PSB2 YWw7Cj4gPiArCUk5MTVfV1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiA+ICsJ STkxNV9XUklURShWTFZfSUlSLCB2YWwpOwo+ID4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7 Cj4gPiArCVBPU1RJTkdfUkVBRChWTFZfSUlSKTsKPiA+ICsKPiA+ICsJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7IH0KPiA+ICsKPiA+ICtzdGF0 aWMgc3RydWN0IGlycV9jaGlwIGxwZV9hdWRpb19pcnFjaGlwID0gewo+ID4gKwkubmFtZSA9ICJo ZG1pX2xwZV9hdWRpb19pcnFjaGlwIiwKPiA+ICsJLmlycV9tYXNrID0gbHBlX2F1ZGlvX2lycV9t YXNrLAo+ID4gKwkuaXJxX3VubWFzayA9IGxwZV9hdWRpb19pcnFfdW5tYXNrLAo+ID4gK307Cj4g PiArCj4gPiArc3RhdGljIGludCBscGVfYXVkaW9faXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KSB7Cj4gPiArCWludCBpcnEgPSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmly cTsKPiA+ICsKPiA+ICsJV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSk7Cj4g PiArCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwKPiA+ICsJCQkJJmxwZV9hdWRp b19pcnFjaGlwLAo+ID4gKwkJCQloYW5kbGVfc2ltcGxlX2lycSwKPiA+ICsJCQkJImhkbWlfbHBl X2F1ZGlvX2lycV9oYW5kbGVyIik7Cj4gPiArCj4gPiArCXJldHVybiBpcnFfc2V0X2NoaXBfZGF0 YShpcnEsIGRldl9wcml2KTsgfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGludGVsX2xwZV9hdWRp b19pcnFfaGFuZGxlcigpIC0gZm9yd2FyZHMgdGhlIExQRSBhdWRpbyBpcnEKPiA+ICsgKiBAZGV2 X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gPiArICoKPiA+ICsgKiB0 aGUgTFBFIEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5kbGVyIHJlZ2lzdGVy ZWQgYnkKPiA+ICtMUEUgYXVkaW8KPiA+ICsgKiBkcml2ZXIuCj4gPiArICovCj4gPiArdm9pZCBp bnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KSB7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXJldCA9IGdlbmVyaWNfaGFuZGxlX2ly cShkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlEUk1fRVJS T1JfUkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBhdWRpbyBpcnE6Cj4gJWRcbiIsCj4g PiArCQkJCXJldCk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGludGVsX2xwZV9hdWRp b19kZXRlY3QoKSAtIGNoZWNrICYgc2V0dXAgbHBlIGF1ZGlvIGlmIHByZXNlbnQKPiA+ICsgKiBA ZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gPiArICoKPiA+ICsg KiBEZXRlY3QgaWYgbHBlIGF1ZGlvIGlzIHByZXNlbnQKPiA+ICsgKgo+ID4gKyAqIFJldHVybjog dHJ1ZSBpZiBscGUgYXVkaW8gcHJlc2VudCBlbHNlIFJldHVybiA9IGZhbHNlICAqLyBib29sCj4g PiAraW50ZWxfbHBlX2F1ZGlvX2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpIHsKPiA+ICsJaW50IGxwZV9wcmVzZW50ID0gZmFsc2U7Cj4gPiArCj4gPiArCWlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ID4gKwkJ c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0b21faGRhdWRpb19pZHNbXSA9IHsK PiA+ICsJCQkvKiBCYXl0cmFpbCAqLwo+ID4gKwkJCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURf SU5URUwsIDB4MGYwNCl9LAo+ID4gKwkJCS8qIEJyYXN3ZWxsICovCj4gPiArCQkJe1BDSV9ERVZJ Q0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgyMjg0KX0sCj4gPiArCQkJe30KPiA+ICsJCX07Cj4g PiArCj4gPiArCQlpZiAoIXBjaV9kZXZfcHJlc2VudChhdG9tX2hkYXVkaW9faWRzKSkgewo+ID4g KwkJCURSTV9JTkZPKCIlcyVzXG4iLCAiSERhdWRpbyBjb250cm9sbGVyIG5vdAo+IGRldGVjdGVk LCIsCj4gPiArCQkJCSJ1c2luZyBMUEUgYXVkaW8gaW5zdGVhZFxuIik7Cj4gPiArCQkJbHBlX3By ZXNlbnQgPSB0cnVlOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCXJldHVybiBscGVfcHJlc2VudDsK PiA+ICt9Cj4gPiArCj4gPiArLyoqCj4gPiArICogaW50ZWxfbHBlX2F1ZGlvX3NldHVwKCkgLSBz ZXR1cCB0aGUgYnJpZGdlIGJldHdlZW4gSERNSSBMUEUgQXVkaW8KPiA+ICsgKiBkcml2ZXIgYW5k IGk5MTUKPiA+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRh Cj4gPiArICoKPiA+ICsgKiBzZXQgdXAgdGhlIG1pbmltdW0gcmVxdWlyZWQgcmVzb3VyY2VzIGZv ciB0aGUgYnJpZGdlOiBpcnEgY2hpcCwKPiA+ICsgKiBwbGF0Zm9ybSByZXNvdXJjZSBhbmQgcGxh dGZvcm0gZGV2aWNlLiBpOTE1IGRldmljZSBpcyBzZXQgYXMKPiA+ICtwYXJlbnQKPiA+ICsgKiBv ZiB0aGUgbmV3IHBsYXRmb3JtIGRldmljZS4KPiA+ICsgKgo+ID4gKyAqIFJldHVybjogMCBpZiBz dWNjZXNzZnVsLiBub24temVybyBpZiBhbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uCj4gPiArZmFp bHMgICovIGludCBpbnRlbF9scGVfYXVkaW9fc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUK PiA+ICsqZGV2X3ByaXYpIHsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJZGV2X3ByaXYtPmxw ZV9hdWRpby5pcnEgPSBpcnFfYWxsb2NfZGVzYygwKTsKPiA+ICsJaWYgKGRldl9wcml2LT5scGVf YXVkaW8uaXJxIDwgMCkgewo+ID4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgSVJR IGRlc2M6ICVkXG4iLAo+ID4gKwkJCWRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiA+ICsJCXJl dCA9IGRldl9wcml2LT5scGVfYXVkaW8uaXJxOwo+ID4gKwkJZ290byBlcnI7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJRFJNX0RFQlVHKCJpcnEgPSAlZFxuIiwgZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEp Owo+ID4gKwo+ID4gKwlyZXQgPSBscGVfYXVkaW9faXJxX2luaXQoZGV2X3ByaXYpOwo+ID4gKwo+ ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIGly cWNoaXAgZm9yIGxwZSBhdWRpbzogJWRcbiIsCj4gPiArCQkJcmV0KTsKPiA+ICsJCWdvdG8gZXJy X2ZyZWVfaXJxOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRl diA9IGxwZV9hdWRpb19wbGF0ZGV2X2NyZWF0ZShkZXZfcHJpdik7Cj4gPiArCj4gPiArCWlmIChJ U19FUlIoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KSkgewo+ID4gKwkJcmV0ID0gUFRSX0VS UihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpOwo+ID4gKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gY3JlYXRlIGxwZSBhdWRpbyBwbGF0Zm9ybSBkZXZpY2U6Cj4gJWRcbiIsCj4gPiArCQkJcmV0 KTsKPiA+ICsJCWdvdG8gZXJyX2ZyZWVfaXJxOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAw Owo+ID4gK2Vycl9mcmVlX2lycToKPiA+ICsJaXJxX2ZyZWVfZGVzYyhkZXZfcHJpdi0+bHBlX2F1 ZGlvLmlycSk7Cj4gPiArZXJyOgo+ID4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSA9IC0xOwo+ ID4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYgPSBOVUxMOwo+ID4gKwlyZXR1cm4gcmV0 Owo+ID4gK30KPiA+ICsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbnRlbF9scGVfYXVkaW9faW5p dCgpIC0gZGV0ZWN0IGFuZCBzZXR1cCB0aGUgYnJpZGdlIGJldHdlZW4gSERNSQo+ID4gK0xQRSBB dWRpbwo+ID4gKyAqIGRyaXZlciBhbmQgaTkxNQo+ID4gKyAqIEBkZXZfcHJpdjogdGhlIGk5MTUg ZHJtIGRldmljZSBwcml2YXRlIGRhdGEKPiA+ICsgKgo+ID4gKyAqIFJldHVybjogMCBpZiBzdWNj ZXNzZnVsLiBub24temVybyBpZiBkZXRlY3Rpb24gb3IKPiA+ICsgKiBsbG9jYXRpb24vaW5pdGlh bGl6YXRpb24gZmFpbHMKPiA+ICsgKi8KPiA+ICtpbnQgaW50ZWxfbHBlX2F1ZGlvX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7Cj4gPiArCWludCByZXQgPSAtRU5PREVW Owo+ID4gKwo+ID4gKwlpZiAoaW50ZWxfbHBlX2F1ZGlvX2RldGVjdChkZXZfcHJpdikpIHsKPiA+ ICsJCXJldCA9IGludGVsX2xwZV9hdWRpb19zZXR1cChkZXZfcHJpdik7Cj4gPiArCQlpZiAocmV0 IDwgMCkKPiA+ICsJCQlEUk1fRVJST1IoImZhaWxlZCB0byBzZXR1cCBMUEUgQXVkaW8gYnJpZGdl XG4iKTsKPiA+ICsJfQo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ ICsgKiBpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oKSAtIGRlc3Ryb3kgdGhlIGJyaWRnZSBiZXR3 ZWVuIEhETUkgTFBFCj4gPiArICogYXVkaW8gZHJpdmVyIGFuZCBpOTE1Cj4gPiArICogQGRldl9w cml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ID4gKyAqCj4gPiArICogcmVs ZWFzZSBhbGwgdGhlIHJlc291cmNlcyBmb3IgTFBFIGF1ZGlvIDwtPiBpOTE1IGJyaWRnZS4KPiA+ ICsgKi8KPiA+ICt2b2lkIGludGVsX2xwZV9hdWRpb190ZWFyZG93bihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpIHsKPiA+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ICsJ c3RydWN0IGlycV9kZXNjICpkZXNjOwo+ID4gKwo+ID4gKwlpZiAoIUhBU19MUEVfQVVESU8oZGV2 X3ByaXYpKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlkZXNjID0gaXJxX3RvX2Rlc2MoZGV2 X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogbWFzayBMUEUg YXVkaW8gaXJxIGJlZm9yZSBkZXN0cm95aW5nCj4gPiArCSAqLwo+ID4gKwlscGVfYXVkaW9faXJx X21hc2soJmRlc2MtPmlycV9kYXRhKTsKPiA+ICsKPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmRl dl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwo+ID4gKwo+ID4gKwlscGVfYXVkaW9fcGxhdGRl dl9kZXN0cm95KGRldl9wcml2KTsKPiA+ICsKPiA+ICsJaXJxX2ZyZWVfZGVzYyhkZXZfcHJpdi0+ bHBlX2F1ZGlvLmlycSk7Cj4gPiArCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9w cml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOyB9Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v aW50ZWxfbHBlX2F1ZGlvLmgKPiA+IGIvaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmggbmV3 IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgKPiA+IDAwMDAwMDAuLmE2NGM0NDkKPiA+IC0tLSAvZGV2 L251bGwKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2ludGVsX2xwZV9hdWRpby5oCj4gPiBAQCAtMCww ICsxLDQ1IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYgSW50ZWwgQ29ycG9y YXRpb24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gPiArb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4g PiArIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiA+ICtsaW1pdGF0aW9uCj4gPiArICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs Cj4gPiArc3VibGljZW5zZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+ID4gK3RoZQo+ID4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4gPiArdGhlIG5leHQKPiA+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMKPiA+ICtvZiB0aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQo+IEtJ TkQsCj4gPiArRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+ICtNRVJDSEFOVEFCSUxJVFksCj4gPiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO Cj4gTk8gRVZFTlQKPiA+ICtTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+IERBTUFHRVMKPiA+ICtPUiBPVEhFUgo+ ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IKPiBPVEhFUldJU0UsCj4gPiArQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UKPiBPUgo+ID4gK09USEVSIERF QUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5k ZWYgX0lOVEVMX0xQRV9BVURJT19IXwo+ID4gKyNkZWZpbmUgX0lOVEVMX0xQRV9BVURJT19IXwo+ ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gKwo+ID4gKyNkZWZpbmUgSERN SV9NQVhfRUxEX0JZVEVTCTEyOAo+ID4gKwo+ID4gK3N0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRp b19lbGQgewo+ID4gKwlpbnQgcG9ydF9pZDsKPiA+ICsJdW5zaWduZWQgY2hhciBlbGRfZGF0YVtI RE1JX01BWF9FTERfQllURVNdOyB9Owo+ID4gKwo+ID4gK3N0cnVjdCBpbnRlbF9oZG1pX2xwZV9h dWRpb19wZGF0YSB7Cj4gPiArCWJvb2wgbm90aWZ5X3BlbmRpbmc7Cj4gPiArCWludCB0bWRzX2Ns b2NrX3NwZWVkOwo+ID4gKwlib29sIGhkbWlfY29ubmVjdGVkOwo+ID4gKwlzdHJ1Y3QgaW50ZWxf aGRtaV9scGVfYXVkaW9fZWxkIGVsZDsKPiA+ICsJdm9pZCAoKm5vdGlmeV9hdWRpb19scGUpKHZv aWQgKmF1ZGlvX3B0cik7Cj4gPiArCXNwaW5sb2NrX3QgbHBlX2F1ZGlvX3Nsb2NrOwo+ID4gK307 Cj4gPiArCj4gPiArI2VuZGlmIC8qIF9JOTE1X0xQRV9BVURJT19IXyAqLwo+IAo+IEJlc2lkZXMg dGhlIGZldyBiaWtlc2hlZHMgc2VlbXMgYWxsIHJlYXNvbmFibGUsIHdpdGggdGhvc2UgYWRkcmVz c2VkCj4gCj4gQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4gCgpUaGFua3MKCj4gLi4uIGZvciBtZXJnaW5nIHRocm91Z2ggc291bmQgdHJlZS4gU2luY2Ug d2UncmUgc3VwZXIgZWFybHkgaW4gNC4xMSBhIHRvcGljCj4gYnJhbmNoIGZvciBtZSB0byBwdWxs IGluIHRvIGF2b2lkIHN5bmMgaGVhZGFjaGVzIHdvdWxkIGJlIGdvb2QuCj4gLURhbmllbAo+IC0t Cj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=