From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: Re: [PATCH 3/4] drm/bridge: sii902x: Implement HDMI audio support Date: Mon, 25 Feb 2019 16:40:55 +0200 Message-ID: <66c5aefb-935b-6280-5a3a-b098fb995cd7@ti.com> References: <9b7d96b02731cd53359a924e4c5f8b8f2d550717.1551090126.git.jsarha@ti.com> <791b87f2-a238-a9c1-7187-95933049ec37@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <791b87f2-a238-a9c1-7187-95933049ec37@samsung.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda , dri-devel@lists.freedesktop.org, "devicetree@vger.kernel.org" Cc: fabrizio.castro@bp.renesas.com, Songjun.Wu@atmel.com, peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, voice.shen@atmel.com List-Id: devicetree@vger.kernel.org T24gMjUvMDIvMjAxOSAxNTo1NywgQW5kcnplaiBIYWpkYSB3cm90ZToKPiBPbiAyNS4wMi4yMDE5 IDEyOjIzLCBKeXJpIFNhcmhhIHdyb3RlOgo+PiBJbXBsZW1lbnQgSERNSSBhdWRpbyBzdXBwb3J0 IGJ5IHVzaW5nIEFTb0MgSERNSSBjb2RlYy4gVGhlIGNvbW1pdAo+PiBpbXBsZW1lbnRzIHRoZSBu ZWNlc3NhcnkgY2FsbGJhY2tzIGFuZCBjb25maWd1cmF0aW9uIGZvciB0aGUgSERNSQo+PiBjb2Rl YyBhbmQgcmVnaXN0ZXJzIGEgdmlydHVhbCBwbGF0Zm9ybSBkZXZpY2UgZm9yIHRoZSBjb2RlYyB0 byBhdHRhY2guCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ Cj4+IC0tLQo+PiAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3NpaTkwMngudHh0ICAgICAg IHwgIDI0ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jICAgICAgICAgICAg ICB8IDQ1NiArKysrKysrKysrKysrKysrKy0KPj4gIGluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQv c2lpOTAyeC1hdWRpby5oICAgICB8ICAxMSArCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDQ4NSBpbnNl cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv ZHQtYmluZGluZ3Mvc291bmQvc2lpOTAyeC1hdWRpby5oCj4+Cj4+IGRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAyeC50eHQg Yi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lpOTAy eC50eHQKPj4gaW5kZXggNzJkMmRjNmMzZTZiLi5hMWNmZjkxZTRlODQgMTAwNjQ0Cj4+IC0tLSBh L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9zaWk5MDJ4 LnR4dAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9i cmlkZ2Uvc2lpOTAyeC50eHQKPj4gQEAgLTgsNiArOCwyMSBAQCBPcHRpb25hbCBwcm9wZXJ0aWVz Ogo+PiAgCS0gaW50ZXJydXB0czogZGVzY3JpYmUgdGhlIGludGVycnVwdCBsaW5lIHVzZWQgdG8g aW5mb3JtIHRoZSBob3N0IAo+PiAgCSAgYWJvdXQgaG90cGx1ZyBldmVudHMuCj4+ICAJLSByZXNl dC1ncGlvczogT0YgZGV2aWNlLXRyZWUgZ3BpbyBzcGVjaWZpY2F0aW9uIGZvciBSU1RfTiBwaW4u Cj4+ICsJLSBpMnMtZmlmby1yb3V0aW5nOiBBcnJheSBvZiBleGFjdGx5IDQgaW50ZWdlcnMgaW5k aWNhdGluZyBpMnMKPj4gKwkgIHBpbnMgZm9yIGF1ZGlvIGZpZm8gcm91dGluZy4gRmlyc3QgaW50 ZWdlciBkZWZpbmVzIHJvdXRpbmcgdG8KPj4gKwkgIGZpZm8gMCBhbmQgc2Vjb25kIHRvIGZpZm8g MSwgZXRjLiBJbnRlZ2VycyBjYW4gYmUgZmlsbGVkIHdpdGgKPj4gKwkgIGRlZmluaXRpb25zIGZy b206IGluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQvc2lpOTAyeC1hdWRpby5oCj4+ICsJICBUaGUg YXZhaWxhYmxlIGRlZmluaXRpb25zIGFyZToKPj4gKwkgIC0gRU5BQkxFX0JJVDoJZW5hYmxlIHRo aXMgYXVkaW8gZmlmbwo+PiArCSAgLSBDT05ORUNUX1NEIzogcm91dGUgYXVkaW8gaW5wdXQgZnJv bSBTRDAsIFNEMSwgU0QyLCBvciBTRDMgaTJzCj4+ICsJCQkgZGF0YSBpbnB1dCBwaW4KPj4gKwkg IC0gTEVGVF9SSUdIVF9TV0FQX0JJVDogc3dhcCBpMnMgaW5wdXQgY2hhbm5lbHMgZm9yIHRoaXMg Zmlmbwo+PiArCSAgSTJTIEhETUkgYXVkaW8gaXMgY29uZmlndXJlZCBvbmx5IGlmIHRoaXMgcHJv cGVydHkgaXMgZm91bmQuCj4+ICsJLSBjbG9ja3M6IGRlc2NyaWJlcyBTSUk5MDJ4IE1DTEsgaW5w dXQuIE1DTEsgaXMgdXNlZCB0byBwcm9kdWNlCj4+ICsJICBIRE1JIGF1ZGlvIENUUyB2YWx1ZXMu IFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgaWYKPj4gKwkgICJpMnMtZmlmby1yb3V0aW5nIi1w cm9wZXJ0eSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IGZvbGxvd3MKPj4gKwkgIERvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKPj4gKwkg IGNvbnN1bWVyIGJpbmRpbmcuCj4gCj4gCj4gSSB3b25kZXIgaWYgaXQgd291bGRuJ3QgYmUgYmV0 dGVyIHRvIHVzZSBvZl9ncmFwaCB0byBzaG93IGNvbm5lY3Rpb25zCj4gYmV0d2VlbiBhdWRpbyBw cm9kdWNlciAoQS9WIG1lZGlhIHByb2Nlc3NvcikgYW5kIHRoZSB0cmFuc21pdHRlciwKPiBpMnMt Zmlmby1yb3V0aW5nIHZhbHVlIHNob3VsZCBiZSB0aGVuIGRlcml2ZWQgZnJvbSB0aGVzZSBiaW5k aW5ncy4KPiAKPiAKCkkgZG8gbm90IHRoaW5rIGFueWJvZHkgd2lsbCBjb21lIHVwIHdpdGggYSBj b25maWd1cmF0aW9uIHdoZXJlIHRoZXJlCndvdWxkIGJlIG1vcmUgdGhhbiBvbmUgYXVkaW8gcHJv ZHVjZXIuIFdoaWxlIHRoZXJlIGlzIG11bHRpcGxlIGkycyBpbnB1dApkYXRhIHBpbnMsIHRoZXJl IGlzIG9ubHkgb25lIGkycy1jbG9jay1waW4uIFRoZSBtdWx0aXBsZSBwaW5zIGFyZSB0aGVyZQp0 byBwcm92aWRlIDIsIDQsIDYsIG9yIDggY2hhbm5lbCBIRE1JIGF1ZGlvICh0d28gY2hhbm5lbHMg cGVyIHdpcmUpLCBub3QKZm9yIG11bHRpcGxlIGF1ZGlvIHByb2R1Y2Vycy4KCkFGQUlLLCBubyBk cml2ZXIgZGVzY3JpYmVzIGkycy13aXJlIG9uZSBieSBvbmUgd2l0aCBvZl9ncmFwaHMuIEhvd2V2 ZXIsCnRoZXJlIGFyZSBkaWZmZXJlbnQga2luZCBvZiBBU29DIGNhcmQtZHJpdmVycyBwdWxsaW5n IHRoZSBkaWZmZXJlbnQKQVNvQy1jb21wb25lbnRzLCBidXQgdGhlIGNvZGVjIGRyaXZlciAobGlr ZSB0aGUgc2lpOTAyeCB3aXRoIGNvbmZpZ3VyZWQKYXVkaW8gd291bGQgYmUpIGRvIG5vdCB0YWtl IHBhcnQgaW4gc3VjaCBiaW5kaW5nLgoKVGhlbiBhZ2FpbiB3ZSBtYXkgbmV2ZXIgbmVlZCB0aGUg ZmxleGliaWxpdHkgcHJvdmlkZWQgaGVyZS4gTWF5YmUgd2UKY291bGQgc3Vydml2ZSB3aXRoIGp1 c3QgdGhlIG51bWJlciBvZiB3aXJlcyBjb25uZWN0ZWQuIFRoYXQgd291bGQKcmVxdWlyZSB0aGF0 IGFsbCBIVyBkZXNpZ25lcnMgd2lsbCBoYXZlIGRlY2VuY3kgdG8gY29ubmVjdCB0aGUgaTJzLXdp cmVzCmluIHRoZSByaWdodCBvcmRlciB3aXRob3V0IHNraXBwaW5nIG9yIGNyb3NzaW5nIHRoZSB3 aXJlcy4KCkFkZGluZyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZyB0byBjYywgc2luY2UgSSBm b3Jnb3QgaXQgZnJvbSB0aGUKb3JpZ2luYWwgcmVjaXBpZW50IGxpc3QuCgo+PiAgCj4+ICBPcHRp b25hbCBzdWJub2RlczoKPj4gIAktIHZpZGVvIGlucHV0OiB0aGlzIHN1Ym5vZGUgY2FuIGNvbnRh aW4gYSB2aWRlbyBpbnB1dCBwb3J0IG5vZGUKPj4gQEAgLTIxLDYgKzM2LDE1IEBAIEV4YW1wbGU6 Cj4+ICAJCWNvbXBhdGlibGUgPSAic2lsLHNpaTkwMjIiOwo+PiAgCQlyZWcgPSA8MHgzOT47Cj4+ ICAJCXJlc2V0LWdwaW9zID0gPCZwaW9BIDEgMD47Cj4+ICsKPj4gKwkJaTJzLWZpZm8tcm91dGlu ZyA9IDwKPj4gKwkJCShFTkFCTEVfQklUfENPTk5FQ1RfU0QwKQo+PiArCQkJMAo+PiArCQkJMAo+ PiArCQkJMAo+PiArCQk+Owo+PiArCQljbG9ja3MgPSA8Jm1jbGs+Owo+PiArCj4+ICAJCXBvcnRz IHsKPj4gIAkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+PiAgCQkJI3NpemUtY2VsbHMgPSA8MD47 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jCj4+IGluZGV4IDBlMjFmYTQxOWQyNy4uZjI5NmEz M2M1N2M3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYwo+PiBAQCAtMjcsMTIgKzI3 LDE2IEBACj4+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+ICAKPj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiAgI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljX2hlbHBlci5oPgo+PiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K Pj4gICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPj4gIAo+PiArI2luY2x1ZGUgPHNvdW5kL2hk bWktY29kZWMuaD4KPj4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9zb3VuZC9zaWk5MDJ4LWF1ZGlv Lmg+Cj4+ICsKPj4gICNkZWZpbmUgU0lJOTAyWF9UUElfVklERU9fREFUQQkJCTB4MAo+PiAgCj4+ ICAjZGVmaW5lIFNJSTkwMlhfVFBJX1BJWEVMX1JFUEVUSVRJT04JCTB4OAo+PiBAQCAtNzQsNiAr NzgsNzcgQEAKPj4gICNkZWZpbmUgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfTVNLCQlHRU5NQVNL KDEsIDApCj4+ICAjZGVmaW5lIFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX0QobCkJCSgobCkgJiBT SUk5MDJYX0FWSV9QT1dFUl9TVEFURV9NU0spCj4+ICAKPj4gKy8qIEF1ZGlvICAqLwo+PiArI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfRU5BQkxFX01BUFBJTkdfUkVHCTB4MWYKPj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfSTJTX0NPTkZJR19GSUZPMAkJCSgwIDw8IDApCj4+ICsjZGVmaW5lIFNJSTkw MlhfVFBJX0kyU19DT05GSUdfRklGTzEJCQkoMSA8PCAwKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQ SV9JMlNfQ09ORklHX0ZJRk8yCQkJKDIgPDwgMCkKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJT X0NPTkZJR19GSUZPMwkJCSgzIDw8IDApCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19MRUZU X1JJR0hUX1NXQVAJCQkoMSA8PCAyKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfQVVUT19E T1dOU0FNUExFCQkJKDEgPDwgMykKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9T RDAJCQkoMCA8PCA0KQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMQkJCSgx IDw8IDQpCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRUxFQ1RfU0QyCQkJKDIgPDwgNCkK Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDMJCQkoMyA8PCA0KQo+PiArI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfRklGT19FTkFCTEUJCQkoMSA8PCA3KQo+PiArCj4+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0kyU19JTlBVVF9DT05GSUdfUkVHCTB4MjAKPj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9ZRVMJCSgwIDw8IDApCj4+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0kyU19GSVJTVF9CSVRfU0hJRlRfTk8JCSgxIDw8IDApCj4+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0kyU19TRF9ESVJFQ1RJT05fTVNCX0ZJUlNUCQkoMCA8PCAxKQo+PiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9JMlNfU0RfRElSRUNUSU9OX0xTQl9GSVJTVAkJKDEgPDwgMSkKPj4gKyNk ZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfTEVGVAkJCSgwIDw8IDIpCj4+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0kyU19TRF9KVVNUSUZZX1JJR0hUCQkoMSA8PCAyKQo+PiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9JMlNfV1NfUE9MQVJJVFlfTE9XCQkJKDAgPDwgMykKPj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfSTJTX1dTX1BPTEFSSVRZX0hJR0gJCSgxIDw8IDMpCj4+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJRVJfMTI4CQkoMCA8PCA0KQo+PiArI2RlZmluZSBT SUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBMSUVSXzI1NgkJKDEgPDwgNCkKPj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfSTJTX01DTEtfTVVMVElQTElFUl8zODQJCSgyIDw8IDQpCj4+ICsjZGVmaW5l IFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJRVJfNTEyCQkoMyA8PCA0KQo+PiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBMSUVSXzc2OAkJKDQgPDwgNCkKPj4gKyNkZWZp bmUgU0lJOTAyWF9UUElfSTJTX01DTEtfTVVMVElQTElFUl8xMDI0CQkoNSA8PCA0KQo+PiArI2Rl ZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBMSUVSXzExNTIJCSg2IDw8IDQpCj4+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJRVJfMTkyCQkoNyA8PCA0KQo+PiAr I2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0NLX0VER0VfRkFMTElORwkJKDAgPDwgNykKPj4gKyNk ZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NDS19FREdFX1JJU0lORwkJCSgxIDw8IDcpCj4+ICsKPj4g KyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NUUk1fSERSX0JBU0UJMHgyMQo+PiArI2RlZmluZSBT SUk5MDJYX1RQSV9JMlNfU1RSTV9IRFJfU0laRQk1Cj4+ICsKPj4gKyNkZWZpbmUgU0lJOTAyWF9U UElfQVVESU9fQ09ORklHX0JZVEUyX1JFRwkweDI2Cj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FV RElPX0NPRElOR19TVFJFQU1fSEVBREVSCQkoMCA8PCAwKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19DT0RJTkdfUENNCQkJKDEgPDwgMCkKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVE SU9fQ09ESU5HX0FDMwkJCSgyIDw8IDApCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NP RElOR19NUEVHMQkJCSgzIDw8IDApCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElO R19NUDMJCQkoNCA8PCAwKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfTVBF RzIJCQkoNSA8PCAwKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfQUFDCQkJ KDYgPDwgMCkKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX0RUUwkJCSg3IDw8 IDApCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19BVFJBQwkJCSg4IDw8IDAp Cj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRElTQUJMRQkJCSgwIDw8IDQpCj4+ ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRU5BQkxFCQkJKDEgPDwgNCkKPj4gKyNk ZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fTEFZT1VUXzJfQ0hBTk5FTFMJCSgwIDw8IDUpCj4+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0xBWU9VVF84X0NIQU5ORUxTCQkoMSA8PCA1KQo+PiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfRElTQUJMRQkJKDAgPDwgNikKPj4g KyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fSU5URVJGQUNFX1NQRElGCQkoMSA8PCA2KQo+PiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfSTJTCQkJKDIgPDwgNikKPj4gKwo+ PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTNfUkVHCTB4MjcKPj4gKyNk ZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJFUV9TVFJFQU0JCQkoMCA8PCAzKQo+PiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzMyS0haCQkJKDEgPDwgMykKPj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVVESU9fRlJFUV80NEtIWgkJCSgyIDw8IDMpCj4+ICsjZGVmaW5lIFNJSTkwMlhf VFBJX0FVRElPX0ZSRVFfNDhLSFoJCQkoMyA8PCAzKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9B VURJT19GUkVRXzg4S0haCQkJKDQgPDwgMykKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9f RlJFUV85NktIWgkJCSg1IDw8IDMpCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFf MTc2S0haCQkJKDYgPDwgMykKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJFUV8xOTJL SFoJCQkoNyA8PCAzKQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV9T VFJFQU0JCSgwIDw8IDYpCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpF XzE2CQkoMSA8PCA2KQo+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8y MAkJKDIgPDwgNikKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMjQJ CSgzIDw8IDYpCj4+ICsKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZVEU0 X1JFRwkweDI4Cj4+ICsKPj4gICNkZWZpbmUgU0lJOTAyWF9JTlRfRU5BQkxFCQkJMHgzYwo+PiAg I2RlZmluZSBTSUk5MDJYX0lOVF9TVEFUVVMJCQkweDNkCj4+ICAjZGVmaW5lIFNJSTkwMlhfSE9U UExVR19FVkVOVAkJCUJJVCgwKQo+PiBAQCAtODEsNiArMTU2LDE2IEBACj4+ICAKPj4gICNkZWZp bmUgU0lJOTAyWF9SRUdfVFBJX1JRQgkJCTB4YzcKPj4gIAo+PiArLyogSW5kaXJlY3QgaW50ZXJu YWwgcmVnaXN0ZXIgYWNjZXNzICovCj4+ICsjZGVmaW5lIFNJSTkwMlhfSU5EX1NFVF9QQUdFCQkJ MHhiYwo+PiArI2RlZmluZSBTSUk5MDJYX0lORF9PRkZTRVQJCQkweGJkCj4+ICsjZGVmaW5lIFNJ STkwMlhfSU5EX1ZBTFVFCQkJMHhiZQo+PiArCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX01JU0Nf SU5GT0ZSQU1FX0JBU0UJCTB4YmYKPj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJB TUVfRU5ECQkweGRlCj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX1NJWkUJ XAo+PiArCShTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9FTkQgLSBTSUk5MDJYX1RQSV9NSVND X0lORk9GUkFNRV9CQVNFKQo+PiArCj4+ICAjZGVmaW5lIFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJ VElPTl9USU1FT1VUX01TCTUwMAo+PiAgCj4+ICBzdHJ1Y3Qgc2lpOTAyeCB7Cj4+IEBAIC05MCw2 ICsxNzUsMTIgQEAgc3RydWN0IHNpaTkwMnggewo+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNv bm5lY3RvcjsKPj4gIAlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+PiAgCXN0cnVjdCBp MmNfbXV4X2NvcmUgKmkyY211eDsKPj4gKwlzdHJ1Y3QgbXV0ZXggbXV0ZXg7Cj4gCj4gCj4gTWF5 YmUgYWRkaW5nIG11dGV4IHNob3VsZCBiZSBwcmVwYXJhdG9yeSBwYXRjaC4KPiAKCkkgY2FuIGRv IHRoYXQsIGJ1dCB3aXRob3V0IGF1ZGlvIGl0IHdvdWxkIGJlIGEgYml0IHBvaW50bGVzcy4KCj4g Cj4+ICsJc3RydWN0IHNpaTkwMnhfYXVkaW8gewo+PiArCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2Owo+PiArCQlzdHJ1Y3QgY2xrICptY2xrOwo+PiArCQl1MzIgaTJzX2ZpZm9fcm91dGlu Z1s0XTsKPj4gKwl9IGF1ZGlvOwo+PiAgfTsKPj4gIAo+PiAgc3RhdGljIGludCBzaWk5MDJ4X3Jl YWRfdW5sb2NrZWQoc3RydWN0IGkyY19jbGllbnQgKmkyYywgdTggcmVnLCB1OCAqdmFsKQo+PiBA QCAtMTYxLDggKzI1MiwxMiBAQCBzaWk5MDJ4X2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPj4gIAlzdHJ1Y3Qgc2lpOTAyeCAqc2lp OTAyeCA9IGNvbm5lY3Rvcl90b19zaWk5MDJ4KGNvbm5lY3Rvcik7Cj4+ICAJdW5zaWduZWQgaW50 IHN0YXR1czsKPj4gIAo+PiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPj4gKwo+PiAg CXJlZ21hcF9yZWFkKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTlRfU1RBVFVTLCAmc3RhdHVz KTsKPj4gIAo+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiArCj4+ICAJcmV0 dXJuIChzdGF0dXMgJiBTSUk5MDJYX1BMVUdHRURfU1RBVFVTKSA/Cj4+ICAJICAgICAgIGNvbm5l Y3Rvcl9zdGF0dXNfY29ubmVjdGVkIDogY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4+ ICB9Cj4+IEBAIC0xODQsNiArMjc5LDggQEAgc3RhdGljIGludCBzaWk5MDJ4X2dldF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgCXU4IG91dHB1dF9tb2RlID0gU0lJ OTAyWF9TWVNfQ1RSTF9PVVRQVVRfRFZJOwo+PiAgCWludCBudW0gPSAwLCByZXQ7Cj4+ICAKPj4g KwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+ICsKPj4gIAllZGlkID0gZHJtX2dldF9l ZGlkKGNvbm5lY3Rvciwgc2lpOTAyeC0+aTJjbXV4LT5hZGFwdGVyWzBdKTsKPj4gIAlkcm1fY29u bmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4+ICAJaWYgKGVk aWQpIHsKPj4gQEAgLTE5NywxNCArMjk0LDE5IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9nZXRfbW9k ZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gIAlyZXQgPSBkcm1fZGlzcGxh eV9pbmZvX3NldF9idXNfZm9ybWF0cygmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8sCj4+ICAJCQkJ CSAgICAgICAmYnVzX2Zvcm1hdCwgMSk7Cj4+ICAJaWYgKHJldCkKPj4gLQkJcmV0dXJuIHJldDsK Pj4gKwkJZ290byBlcnJvcl9vdXQ7Cj4+ICAKPj4gIAlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMo c2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsCj4+ICAJCQkJIFNJSTkwMlhf U1lTX0NUUkxfT1VUUFVUX01PREUsIG91dHB1dF9tb2RlKTsKPj4gIAlpZiAocmV0KQo+PiAtCQly ZXR1cm4gcmV0Owo+PiArCQlnb3RvIGVycm9yX291dDsKPj4gKwo+PiArCXJldCA9IG51bTsKPj4g IAo+PiAtCXJldHVybiBudW07Cj4+ICtlcnJvcl9vdXQ6Cj4+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5 MDJ4LT5tdXRleCk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiAgfQo+PiAgCj4+ICBzdGF0aWMg ZW51bSBkcm1fbW9kZV9zdGF0dXMgc2lpOTAyeF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+IEBAIC0yMjQsMjAgKzMyNiwyOCBAQCBzdGF0aWMgdm9pZCBzaWk5 MDJ4X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+ICB7Cj4+ICAJ c3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChicmlkZ2UpOwo+PiAg Cj4+ICsJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiArCj4+ICAJcmVnbWFwX3VwZGF0 ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLAo+PiAgCQkJICAg U0lJOTAyWF9TWVNfQ1RSTF9QV1JfRFdOLAo+PiAgCQkJICAgU0lJOTAyWF9TWVNfQ1RSTF9QV1Jf RFdOKTsKPj4gKwo+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiAgfQo+PiAg Cj4+ICBzdGF0aWMgdm9pZCBzaWk5MDJ4X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKPj4gIHsKPj4gIAlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGJyaWRnZV90b19z aWk5MDJ4KGJyaWRnZSk7Cj4+ICAKPj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+ ICsKPj4gIAlyZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1BXUl9T VEFURV9DVFJMLAo+PiAgCQkJICAgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfTVNLLAo+PiAgCQkJ ICAgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfRCgwKSk7Cj4+ICAJcmVnbWFwX3VwZGF0ZV9iaXRz KHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLAo+PiAgCQkJICAgU0lJOTAy WF9TWVNfQ1RSTF9QV1JfRFdOLCAwKTsKPj4gKwo+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+ bXV0ZXgpOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBzaWk5MDJ4X2JyaWRnZV9tb2RlX3Nl dChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+PiBAQCAtMjYzLDI2ICszNzMsMzEgQEAgc3Rh dGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSwKPj4gIAlidWZbOV0gPSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfUkFOR0VfQVVUTyB8Cj4+ICAJ CSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfQ09MT1JTUEFDRV9SR0I7Cj4+ICAKPj4gKwltdXRleF9s b2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+ICsKPj4gIAlyZXQgPSByZWdtYXBfYnVsa193cml0ZShy ZWdtYXAsIFNJSTkwMlhfVFBJX1ZJREVPX0RBVEEsIGJ1ZiwgMTApOwo+PiAgCWlmIChyZXQpCj4+ IC0JCXJldHVybjsKPj4gKwkJZ290byBvdXQ7Cj4+ICAKPj4gIAlyZXQgPSBkcm1faGRtaV9hdmlf aW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKCZmcmFtZSwgYWRqLCBmYWxzZSk7Cj4+ICAJaWYg KHJldCA8IDApIHsKPj4gIAkJRFJNX0VSUk9SKCJjb3VsZG4ndCBmaWxsIEFWSSBpbmZvZnJhbWVc biIpOwo+PiAtCQlyZXR1cm47Cj4+ICsJCWdvdG8gb3V0Owo+PiAgCX0KPj4gIAo+PiAgCXJldCA9 IGhkbWlfYXZpX2luZm9mcmFtZV9wYWNrKCZmcmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7Cj4+ICAJ aWYgKHJldCA8IDApIHsKPj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGFjayBBVkkgaW5mb2Zy YW1lOiAlZFxuIiwgcmV0KTsKPj4gLQkJcmV0dXJuOwo+PiArCQlnb3RvIG91dDsKPj4gIAl9Cj4+ ICAKPj4gIAkvKiBEbyBub3Qgc2VuZCB0aGUgaW5mb2ZyYW1lIGhlYWRlciwgYnV0IGtlZXAgdGhl IENSQyBmaWVsZC4gKi8KPj4gIAlyZWdtYXBfYnVsa193cml0ZShyZWdtYXAsIFNJSTkwMlhfVFBJ X0FWSV9JTkZPRlJBTUUsCj4+ICAJCQkgIGJ1ZiArIEhETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpF IC0gMSwKPj4gIAkJCSAgSERNSV9BVklfSU5GT0ZSQU1FX1NJWkUgKyAxKTsKPj4gKwo+PiArb3V0 Ogo+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiAgfQo+PiAgCj4+ICBzdGF0 aWMgaW50IHNpaTkwMnhfYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ PiBAQCAtMzIzLDYgKzQzOCwzMjkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1 bmNzIHNpaTkwMnhfYnJpZGdlX2Z1bmNzID0gewo+PiAgCS5lbmFibGUgPSBzaWk5MDJ4X2JyaWRn ZV9lbmFibGUsCj4+ICB9Owo+PiAgCj4+ICtzdGF0aWMgaW50IHNpaTkwMnhfbXV0ZShzdHJ1Y3Qg c2lpOTAyeCAqc2lpOTAyeCwgaW50IG11dGUpCj4gCj4gCj4gbWF5YmU6IGJvb2wgbXV0ZQoKQWJz b2x1dGVseSwgSSdsbCBjaGFuZ2UgdGhhdC4KCj4gCj4gCj4+ICt7Cj4+ICsJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnNpaTkwMngtPmkyYy0+ZGV2Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAo bXV0ZSkgewo+PiArCQlkZXZfZGJnKGRldiwgIiVzOiBNdXRlZCAoJWQpXG4iLCBfX2Z1bmNfXywg bXV0ZSk7Cj4+ICsJCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsCj4+ ICsJCQkJCSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTJfUkVHLAo+PiArCQkJCQkgU0lJ OTAyWF9UUElfQVVESU9fTVVURV9FTkFCTEUsCj4+ICsJCQkJCSBTSUk5MDJYX1RQSV9BVURJT19N VVRFX0VOQUJMRSk7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJZGV2X2RiZyhkZXYsICIlczogVW5tdXRl ZCAoJWQpXG4iLCBfX2Z1bmNfXywgbXV0ZSk7Cj4+ICsJCXJldCA9IHJlZ21hcF91cGRhdGVfYml0 cyhzaWk5MDJ4LT5yZWdtYXAsCj4+ICsJCQkJCSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllU RTJfUkVHLAo+PiArCQkJCQkgU0lJOTAyWF9UUElfQVVESU9fTVVURV9FTkFCTEUsCj4+ICsJCQkJ CSBTSUk5MDJYX1RQSV9BVURJT19NVVRFX0RJU0FCTEUpOwo+PiArCX0KPiAKPiAKPiBZb3UgY2Fu IHJlcGxhY2UgdGhpcyBiaWcgJ2lmJyB3aXRoIG9uZSBjYWxsIHRvOgo+IAo+IHZhbCA9IG11dGUg PyBTSUk5MDJYX1RQSV9BVURJT19NVVRFX0VOQUJMRSA6IFNJSTkwMlhfVFBJX0FVRElPX01VVEVf RElTQUJMRTsKPiAKPiByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLAo+ IMKgwqDCoCBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTJfUkVHLAo+IMKgwqDCoCBTSUk5 MDJYX1RQSV9BVURJT19NVVRFX0VOQUJMRSwKPiDCoMKgwqAgdmFsKTsKPiAKCkxvb2tzIGNsZWFu ZXIuIEknbGwgY2hhbmdlIHRoYXQuCgo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtdID0gewo+PiAr CTEyOCwgMjU2LCAzODQsIDUxMiwgNzY4LCAxMDI0LCAxMTUyLCAxOTIgfTsKPj4gKwo+PiArc3Rh dGljIGludCBzaWk5MDJ4X3NlbGVjdF9tY2xrX2Rpdih1OCAqaTJzX2NvbmZpZ19yZWcsIHVuc2ln bmVkIGludCByYXRlLAo+PiArCQkJCSAgIHVuc2lnbmVkIGludCBtY2xrKQo+PiArewo+PiArCWlu dCBkaXN0YW5jZSA9IDEwMDAwMDsKPj4gKwl1OCBpLCBuZWFyZXN0ID0gMDsKPj4gKwo+PiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpaTkwMnhfbWNsa19kaXZfdGFibGUpOyBpKyspIHsK Pj4gKwkJdW5zaWduZWQgaW50IGRpdiA9IG1jbGsgLyByYXRlOwo+PiArCj4+ICsJCWlmIChhYnMo ZGl2IC0gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtpXSkgPCBkaXN0YW5jZSkgewo+PiArCQkJbmVh cmVzdCA9IGk7Cj4+ICsJCQlkaXN0YW5jZSA9IGFicyhkaXYgLSBzaWk5MDJ4X21jbGtfZGl2X3Rh YmxlW2ldKTsKPj4gKwkJfQo+PiArCQlpZiAoZGl2ID09IHNpaTkwMnhfbWNsa19kaXZfdGFibGVb aV0pCj4+ICsJCQlicmVhazsKPiAKPiB1bnNpZ25lZCBpbnQgZGl2ID0gbWNsayAvIHJhdGU7Cj4g Cj4gCj4gZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2lpOTAyeF9tY2xrX2Rpdl90YWJsZSk7 IGkrKykgewo+IAo+IMKgwqDCoCB1bnNpZ25lZCBpbnQgZCA9IGFicyhkaXYgLSBzaWk5MDJ4X21j bGtfZGl2X3RhYmxlW2ldKTsKPiAKPiDCoMKgwqAgaWYgKGQgPj0gZGlzdGFuY2UpCj4gCj4gwqDC oMKgIMKgwqDCoCBjb250aW51ZTsKPiAKPiDCoMKgwqAgbmVhcmVzdCA9IGk7Cj4gCj4gwqDCoMKg IGlmIChkID09IDApCj4gCj4gwqDCoMKgIMKgwqDCoCBicmVhazsKPiAKPiDCoMKgwqAgZGlzdGFu Y2UgPSBkOwo+IAo+IH0KPiAKCk9rLCB3aWxsIGNoYW5nZS4KCj4gCj4+ICsJfQo+PiArCj4+ICsJ Kmkyc19jb25maWdfcmVnIHw9IG5lYXJlc3QgPDwgNDsKPj4gKwo+PiArCWlmIChpID09IEFSUkFZ X1NJWkUoc2lpOTAyeF9tY2xrX2Rpdl90YWJsZSkpCj4+ICsJCXJldHVybiBzaWk5MDJ4X21jbGtf ZGl2X3RhYmxlW25lYXJlc3RdOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc2lpOTAyeF9zYW1wbGVfZnJlcSB7Cj4+ICsJdTMyIGZyZXE7Cj4+ ICsJdTggdmFsOwo+PiArfSBzaWk5MDJ4X3NhbXBsZV9mcmVxW10gPSB7Cj4+ICsJeyAuZnJlcSA9 IDMyMDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJFUV8zMktIWiB9LAo+PiArCXsgLmZy ZXEgPSA0NDAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfNDRLSFogfSwKPj4gKwl7 IC5mcmVxID0gNDgwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ4S0haIH0sCj4+ ICsJeyAuZnJlcSA9IDg4MDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJFUV84OEtIWiB9 LAo+PiArCXsgLmZyZXEgPSA5NjAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfOTZL SFogfSwKPj4gKwl7IC5mcmVxID0gMTc2MDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJF UV8xNzZLSFogfSwKPj4gKwl7IC5mcmVxID0gMTkyMDAwLAkudmFsID0gU0lJOTAyWF9UUElfQVVE SU9fRlJFUV8xOTJLSFogfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9hdWRp b19od19wYXJhbXMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiArCQkJCSAgIHN0 cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFpZm10LAo+PiArCQkJCSAgIHN0cnVjdCBoZG1pX2Nv ZGVjX3BhcmFtcyAqcGFyYW1zKQo+PiArewo+PiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsJdTggaTJzX2NvbmZpZ19yZWcgPSBTSUk5MDJYX1RQ SV9JMlNfU0RfRElSRUNUSU9OX01TQl9GSVJTVDsKPj4gKwl1OCBjb25maWdfYnl0ZTJfcmVnID0g KFNJSTkwMlhfVFBJX0FVRElPX0lOVEVSRkFDRV9JMlMgfAo+PiArCQkJICAgICAgIFNJSTkwMlhf VFBJX0FVRElPX01VVEVfRU5BQkxFIHwKPj4gKwkJCSAgICAgICBTSUk5MDJYX1RQSV9BVURJT19D T0RJTkdfUENNKTsKPj4gKwl1OCBjb25maWdfYnl0ZTNfcmVnID0gMDsKPj4gKwl1OCBpbmZvZnJh bWVfYnVmW0hETUlfSU5GT0ZSQU1FX1NJWkUoQVVESU8pXTsKPj4gKwl1bnNpZ25lZCBsb25nIG1j bGtfcmF0ZTsKPj4gKwlpbnQgaSwgcmV0Owo+PiArCj4+ICsJaWYgKGRhaWZtdC0+Yml0X2Nsa19t YXN0ZXIgfHwgZGFpZm10LT5mcmFtZV9jbGtfbWFzdGVyKSB7Cj4+ICsJCWRldl9kYmcoZGV2LCAi JXM6IEkyUyBtYXN0ZXIgbW9kZSBub3Qgc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7Cj4+ICsJCXJl dHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXN3aXRjaCAoZGFpZm10LT5mbXQpIHsKPj4g KwljYXNlIEhETUlfSTJTOgo+PiArCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNf RklSU1RfQklUX1NISUZUX1lFUyB8Cj4+ICsJCQlTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9M RUZUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhETUlfUklHSFRfSjoKPj4gKwkJaTJzX2NvbmZp Z19yZWcgfD0gU0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfUklHSFQ7Cj4+ICsJCWJyZWFrOwo+ PiArCWNhc2UgSERNSV9MRUZUX0o6Cj4+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJ X0kyU19TRF9KVVNUSUZZX0xFRlQ7Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJCWRl dl9kYmcoZGV2LCAiJXM6IFVuc3VwcG9ydGVkIGkycyBmb3JtYXQgJXVcbiIsIF9fZnVuY19fLAo+ PiArCQkJZGFpZm10LT5mbXQpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsKPj4g KwlpZiAoZGFpZm10LT5iaXRfY2xrX2ludikKPj4gKwkJaTJzX2NvbmZpZ19yZWcgfD0gU0lJOTAy WF9UUElfSTJTX1NDS19FREdFX0ZBTExJTkc7Cj4+ICsJZWxzZQo+PiArCQlpMnNfY29uZmlnX3Jl ZyB8PSBTSUk5MDJYX1RQSV9JMlNfU0NLX0VER0VfUklTSU5HOwo+PiArCj4+ICsJaWYgKGRhaWZt dC0+ZnJhbWVfY2xrX2ludikKPj4gKwkJaTJzX2NvbmZpZ19yZWcgfD0gU0lJOTAyWF9UUElfSTJT X1dTX1BPTEFSSVRZX0xPVzsKPj4gKwllbHNlCj4+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkw MlhfVFBJX0kyU19XU19QT0xBUklUWV9ISUdIOwo+PiArCj4+ICsJaWYgKHBhcmFtcy0+Y2hhbm5l bHMgPiAyKQo+PiArCQljb25maWdfYnl0ZTJfcmVnIHw9IFNJSTkwMlhfVFBJX0FVRElPX0xBWU9V VF84X0NIQU5ORUxTOwo+PiArCWVsc2UKPj4gKwkJY29uZmlnX2J5dGUyX3JlZyB8PSBTSUk5MDJY X1RQSV9BVURJT19MQVlPVVRfMl9DSEFOTkVMUzsKPj4gKwo+PiArCXN3aXRjaCAocGFyYW1zLT5z YW1wbGVfd2lkdGgpIHsKPj4gKwljYXNlIDE2Ogo+PiArCQljb25maWdfYnl0ZTNfcmVnIHw9IFNJ STkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzE2Owo+PiArCQlicmVhazsKPj4gKwljYXNlIDIw Ogo+PiArCQljb25maWdfYnl0ZTNfcmVnIHw9IFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpF XzIwOwo+PiArCQlicmVhazsKPj4gKwljYXNlIDI0Ogo+PiArCWNhc2UgMzI6Cj4+ICsJCWNvbmZp Z19ieXRlM19yZWcgfD0gU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMjQ7Cj4+ICsJCWJy ZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJCWRldl9lcnIoZGV2LCAiJXM6IFVuc3VwcG9ydGVkIHNh bXBsZSB3aWR0aCAldVxuIiwgX19mdW5jX18sCj4+ICsJCQlwYXJhbXMtPnNhbXBsZV93aWR0aCk7 Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX07Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShzaWk5MDJ4X3NhbXBsZV9mcmVxKTsgaSsrKSB7Cj4+ICsJCWlmIChwYXJhbXMt PnNhbXBsZV9yYXRlID09IHNpaTkwMnhfc2FtcGxlX2ZyZXFbaV0uZnJlcSkgewo+PiArCQkJY29u ZmlnX2J5dGUzX3JlZyB8PSBzaWk5MDJ4X3NhbXBsZV9mcmVxW2ldLnZhbDsKPj4gKwkJCWJyZWFr Owo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJbWNsa19yYXRlID0gY2xrX2dldF9yYXRlKHNpaTkw MngtPmF1ZGlvLm1jbGspOwo+PiArCj4+ICsJcmV0ID0gc2lpOTAyeF9zZWxlY3RfbWNsa19kaXYo Jmkyc19jb25maWdfcmVnLCBwYXJhbXMtPnNhbXBsZV9yYXRlLAo+PiArCQkJCSAgICAgIG1jbGtf cmF0ZSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZGV2X2RiZyhkZXYsICJJbmFjY3VyYXRlIHJlZmVy ZW5jZSBjbG9jayAoJWxkLyVkICE9ICV1KVxuIiwKPj4gKwkJCW1jbGtfcmF0ZSwgcmV0LCBwYXJh bXMtPnNhbXBsZV9yYXRlKTsKPj4gKwo+PiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShzaWk5 MDJ4LT5hdWRpby5tY2xrKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiRW5h YmxpbmcgbWNsayBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0K Pj4gKwo+PiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPj4gKwo+PiArCXJldCA9IHJl Z21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsCj4+ICsJCQkgICBTSUk5MDJYX1RQSV9BVURJT19D T05GSUdfQllURTJfUkVHLAo+PiArCQkJICAgY29uZmlnX2J5dGUyX3JlZyk7Cj4+ICsJaWYgKHJl dCA8IDApCj4+ICsJCWdvdG8gb3V0Owo+PiArCj4+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkw MngtPnJlZ21hcCwgU0lJOTAyWF9UUElfSTJTX0lOUFVUX0NPTkZJR19SRUcsCj4+ICsJCQkgICBp MnNfY29uZmlnX3JlZyk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBvdXQ7Cj4+ICsKPj4gKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19yb3V0aW5n KTsgaSsrKQo+PiArCQlyZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLAo+PiArCQkJICAgICBT SUk5MDJYX1RQSV9JMlNfRU5BQkxFX01BUFBJTkdfUkVHLAo+PiArCQkJICAgICBzaWk5MDJ4LT5h dWRpby5pMnNfZmlmb19yb3V0aW5nW2ldKTsKPj4gKwo+PiArCXJldCA9IHJlZ21hcF93cml0ZShz aWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFM19SRUcsCj4+ICsJ CQkgICBjb25maWdfYnl0ZTNfcmVnKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsKPj4g Kwo+PiArCXJldCA9IHJlZ21hcF9idWxrX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9U UElfSTJTX1NUUk1fSERSX0JBU0UsCj4+ICsJCQkJcGFyYW1zLT5pZWMuc3RhdHVzLAo+PiArCQkJ CW1pbigoc2l6ZV90KSBTSUk5MDJYX1RQSV9JMlNfU1RSTV9IRFJfU0laRSwKPj4gKwkJCQkgICAg c2l6ZW9mKHBhcmFtcy0+aWVjLnN0YXR1cykpKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91 dDsKPj4gKwo+PiArCXJldCA9IGhkbWlfYXVkaW9faW5mb2ZyYW1lX3BhY2soJnBhcmFtcy0+Y2Vh LCBpbmZvZnJhbWVfYnVmLAo+PiArCQkJCQlzaXplb2YoaW5mb2ZyYW1lX2J1ZikpOwo+PiArCWlm IChyZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiJXM6IEZhaWxlZCB0byBwYWNrIGF1ZGlv IGluZm9mcmFtZTogJWRcbiIsCj4+ICsJCQlfX2Z1bmNfXywgcmV0KTsKPj4gKwkJZ290byBvdXQ7 Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gcmVnbWFwX2J1bGtfd3JpdGUoc2lpOTAyeC0+cmVnbWFw LAo+PiArCQkJCVNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0JBU0UsCj4+ICsJCQkJaW5mb2Zy YW1lX2J1ZiwKPj4gKwkJCQltaW4ocmV0LCBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9TSVpF KSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBvdXQ7Cj4+ICsKPj4gKwkvKiBEZWNvZGUgTGV2 ZWwgMCBQYWNrZXRzICovCj4+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwg U0lJOTAyWF9JTkRfU0VUX1BBR0UsIDB4MDIpOwo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gb3V0 Owo+PiArCj4+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9J TkRfT0ZGU0VULCAweDI0KTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsKPj4gKwo+PiAr CXJldCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5EX1ZBTFVFLCAw eDAyKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsKPj4gKwo+PiArCWRldl9kYmcoZGV2 LCAiJXM6IGhkbWkgYXVkaW8gZW5hYmxlZFxuIiwgX19mdW5jX18pOwo+PiArb3V0Ogo+PiArCW11 dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiArCj4+ICsJaWYgKHJldCkgewo+PiArCQlj bGtfZGlzYWJsZV91bnByZXBhcmUoc2lpOTAyeC0+YXVkaW8ubWNsayk7Cj4+ICsJCWRldl9lcnIo ZGV2LCAiJXM6IGhkbWkgYXVkaW8gZW5hYmxlIGZhaWxlZDogJWRcbiIsIF9fZnVuY19fLAo+PiAr CQkJcmV0KTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBzaWk5MDJ4X2F1ZGlvX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+PiArCj4+ICsJ cmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZ VEUyX1JFRywKPj4gKwkJICAgICBTSUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfRElTQUJMRSk7 Cj4+ICsKPj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKPj4gKwo+PiArCWNsa19k aXNhYmxlX3VucHJlcGFyZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPj4gK30KPj4gKwo+PiAraW50 IHNpaTkwMnhfYXVkaW9fZGlnaXRhbF9tdXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgYm9vbCBlbmFibGUpCj4+ICt7Cj4+ICsJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPj4gKwo+PiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsK Pj4gKwo+PiArCXNpaTkwMnhfbXV0ZShzaWk5MDJ4LCBlbmFibGUpOwo+PiArCj4+ICsJbXV0ZXhf dW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2dldF9lbGQoc3RydWN0IGRldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+PiArCQkJCSB1aW50OF90ICpidWYsIHNpemVfdCBsZW4pCj4+ICt7Cj4+ICsJ c3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPj4gKwo+PiAr CW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPj4gKwo+PiArCW1lbWNweShidWYsIHNpaTkw MngtPmNvbm5lY3Rvci5lbGQsCj4+ICsJICAgICAgIG1pbihzaXplb2Yoc2lpOTAyeC0+Y29ubmVj dG9yLmVsZCksIGxlbikpOwo+PiArCj4+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7 Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBo ZG1pX2NvZGVjX29wcyBzaWk5MDJ4X2F1ZGlvX2NvZGVjX29wcyA9IHsKPj4gKwkuaHdfcGFyYW1z ID0gc2lpOTAyeF9hdWRpb19od19wYXJhbXMsCj4+ICsJLmF1ZGlvX3NodXRkb3duID0gc2lpOTAy eF9hdWRpb19zaHV0ZG93biwKPj4gKwkuZGlnaXRhbF9tdXRlID0gc2lpOTAyeF9hdWRpb19kaWdp dGFsX211dGUsCj4+ICsJLmdldF9lbGQgPSBzaWk5MDJ4X2F1ZGlvX2dldF9lbGQsCj4+ICt9Owo+ PiArCj4+ICtzdGF0aWMgaW50IHNpaTkwMnhfYXVkaW9fY29kZWNfaW5pdChzdHJ1Y3Qgc2lpOTAy eCAqc2lpOTAyeCwKPj4gKwkJCQkgICAgc3RydWN0IGRldmljZSAqZGV2KQo+PiArewo+PiArCXN0 YXRpYyBjb25zdCB1OCBpMnNfZmlmb19kZWZhdWx0c1tdID0gewo+PiArCQlTSUk5MDJYX1RQSV9J MlNfQ09ORklHX0ZJRk8wLAo+PiArCQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8xLAo+PiAr CQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8yLAo+PiArCQlTSUk5MDJYX1RQSV9JMlNfQ09O RklHX0ZJRk8zLAo+PiArCX07Cj4+ICsJc3RydWN0IGhkbWlfY29kZWNfcGRhdGEgY29kZWNfZGF0 YSA9IHsKPj4gKwkJLm9wcyA9ICZzaWk5MDJ4X2F1ZGlvX2NvZGVjX29wcywKPj4gKwkJLmkycyA9 IDEsIC8qIE9ubHkgaTJzIHN1cHBvcnQgZm9yIG5vdy4gKi8KPj4gKwkJLnNwZGlmID0gMCwKPj4g KwkJLm1heF9pMnNfY2hhbm5lbHMgPSAwLAo+PiArCX07Cj4+ICsJaW50IHJldCwgaTsKPj4gKwo+ PiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5KGRldi0+b2Zfbm9kZSwgImkycy1m aWZvLXJvdXRpbmciLAo+PiArCQkJCQkgc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fcm91dGluZywK Pj4gKwkJCQkJIEFSUkFZX1NJWkUoc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fcm91dGluZykpOwo+ PiArCj4+ICsJaWYgKHJldCAhPSAwKSB7Cj4+ICsJCWlmIChyZXQgPT0gLUVJTlZBTCkKPj4gKwkJ CWRldl9kYmcoZGV2LCAiJXM6IE5vIFwiaTJzLWZpZm8tcm91dGluZ1wiLCBubyBhdWRpb1xuIiwK Pj4gKwkJCV9fZnVuY19fKTsKPj4gKwkJZWxzZQo+PiArCQkJZGV2X2VycihkZXYsCj4+ICsJCQkJ IiVzOiBFcnJvciBnZXR0aW4gXCJpMnMtZmlmby1yb3V0aW5nXCI6ICVkXG4iLAo+PiArCQkJCV9f ZnVuY19fLCByZXQpOwo+PiArCQlyZXR1cm4gMDsKPj4gKwl9Cj4+ICsKPj4gKwlzaWk5MDJ4LT5h dWRpby5tY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7Cj4+ICsJaWYgKElTX0VSUihzaWk5 MDJ4LT5hdWRpby5tY2xrKSkgewo+PiArCQlkZXZfZXJyKGRldiwgIiVzOiBObyBjbG9jayAoYXVk aW8gbWNsaykgZm91bmQ6ICVsZFxuIiwKPj4gKwkJCV9fZnVuY19fLCBQVFJfRVJSKHNpaTkwMngt PmF1ZGlvLm1jbGspKTsKPj4gKwkJcmV0dXJuIDA7Cj4+ICsJfQo+PiArCj4+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fcm91dGluZyk7IGkrKykg ewo+PiArCQlpZiAoc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fcm91dGluZ1tpXSB8IEVOQUJMRV9C SVQpCj4gCj4gCj4gSXQgaXMgYWx3YXlzIHRydWUuCgoKT2gsIHRoYXRzIGEgYnVnLiAnfCcgc2hv dWxkIG9mY291cnNlIGhhdmUgYmVlbiAnJicuCgo+IAo+IAo+IFJlZ2FyZHMKPiAKPiBBbmRyemVq Cj4gCj4gCj4+ICsJCQljb2RlY19kYXRhLm1heF9pMnNfY2hhbm5lbHMgKz0gMjsKPj4gKwkJc2lp OTAyeC0+YXVkaW8uaTJzX2ZpZm9fcm91dGluZ1tpXSB8PSBpMnNfZmlmb19kZWZhdWx0c1tpXTsK Pj4gKwl9Cj4+ICsKPj4gKwlzaWk5MDJ4LT5hdWRpby5wZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3Jl Z2lzdGVyX2RhdGEoCj4+ICsJCWRldiwgSERNSV9DT0RFQ19EUlZfTkFNRSwgUExBVEZPUk1fREVW SURfQVVUTywKPj4gKwkJJmNvZGVjX2RhdGEsIHNpemVvZihjb2RlY19kYXRhKSk7Cj4+ICsKPj4g KwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHNpaTkwMngtPmF1ZGlvLnBkZXYpOwo+PiArfQo+PiAr Cj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZSBzaWk5MDJ4X3ZvbGF0aWxlX3Jh bmdlc1tdID0gewo+PiAgCXsgLnJhbmdlX21pbiA9IDAsIC5yYW5nZV9tYXggPSAweGZmIH0sCj4+ ICB9Owo+PiBAQCAtMzM1LDYgKzc3Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2Fj Y2Vzc190YWJsZSBzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlID0gewo+PiAgc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdtYXBfY29uZmlnIHNpaTkwMnhfcmVnbWFwX2NvbmZpZyA9IHsKPj4gIAkucmVnX2Jp dHMgPSA4LAo+PiAgCS52YWxfYml0cyA9IDgsCj4+ICsJLm1heF9yZWdpc3RlciA9IFNJSTkwMlhf VFBJX01JU0NfSU5GT0ZSQU1FX0VORCwKPj4gIAkudm9sYXRpbGVfdGFibGUgPSAmc2lpOTAyeF92 b2xhdGlsZV90YWJsZSwKPj4gIAkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsCj4+ICB9Owo+ PiBAQCAtNTA3LDYgKzk0Niw5IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LAo+PiAgCQlyZXR1cm4gUFRSX0VSUihzaWk5MDJ4LT5yZXNldF9ncGlv KTsKPj4gIAl9Cj4+ICAKPj4gKwkvKiBwcm90ZWN0IGF1ZGlvIGFuZCB2aWRlbyBmdW5jdGlvbnMg ZnJvbSBlYWNoIG90aGVyICovCj4+ICsJbXV0ZXhfaW5pdCgmc2lpOTAyeC0+bXV0ZXgpOwo+PiAr Cj4+ICAJc2lpOTAyeF9yZXNldChzaWk5MDJ4KTsKPj4gIAo+PiAgCXJldCA9IHJlZ21hcF93cml0 ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfUkVHX1RQSV9SUUIsIDB4MCk7Cj4+IEBAIC01NDcs NiArOTg5LDggQEAgc3RhdGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQsCj4+ICAJc2lpOTAyeC0+YnJpZGdlLnRpbWluZ3MgPSAmZGVmYXVsdF9zaWk5MDJ4X3Rp bWluZ3M7Cj4+ICAJZHJtX2JyaWRnZV9hZGQoJnNpaTkwMngtPmJyaWRnZSk7Cj4+ICAKPj4gKwlz aWk5MDJ4X2F1ZGlvX2NvZGVjX2luaXQoc2lpOTAyeCwgZGV2KTsKPj4gKwo+PiAgCWkyY19zZXRf Y2xpZW50ZGF0YShjbGllbnQsIHNpaTkwMngpOwo+PiAgCj4+ICAJc2lpOTAyeC0+aTJjbXV4ID0g aTJjX211eF9hbGxvYyhjbGllbnQtPmFkYXB0ZXIsIGRldiwKPj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHQtYmluZGluZ3Mvc291bmQvc2lpOTAyeC1hdWRpby5oIGIvaW5jbHVkZS9kdC1iaW5kaW5n cy9zb3VuZC9zaWk5MDJ4LWF1ZGlvLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXgg MDAwMDAwMDAwMDAwLi4zMmU1MGE5MjZiNmYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9pbmNs dWRlL2R0LWJpbmRpbmdzL3NvdW5kL3NpaTkwMngtYXVkaW8uaAo+PiBAQCAtMCwwICsxLDExIEBA Cj4+ICsjaWZuZGVmIF9fRFRfU0lJOTAyMl9BVURJT19ICj4+ICsjZGVmaW5lIF9fRFRfU0lJOTAy Ml9BVURJT19ICj4+ICsKPj4gKyNkZWZpbmUgRU5BQkxFX0JJVAkJCTB4ODAKPj4gKyNkZWZpbmUg Q09OTkVDVF9TRDAJCQkweDAwCj4+ICsjZGVmaW5lIENPTk5FQ1RfU0QxCQkJMHgxMAo+PiArI2Rl ZmluZSBDT05ORUNUX1NEMgkJCTB4MjAKPj4gKyNkZWZpbmUgQ09OTkVDVF9TRDMJCQkweDMwCj4+ ICsjZGVmaW5lIExFRlRfUklHSFRfU1dBUF9CSVQJCTB4MDQKPj4gKwo+PiArI2VuZGlmIC8qIF9f RFRfU0lJOTAyMl9BVURJT19IICovCj4gCj4gCgoKLS0gClRleGFzIEluc3RydW1lbnRzIEZpbmxh bmQgT3ksIFBvcmtrYWxhbmthdHUgMjIsIDAwMTgwIEhlbHNpbmtpLgpZLXR1bm51cy9CdXNpbmVz cyBJRDogMDYxNTUyMS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=