From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Ujfalusi Subject: Re: ASoC: TLV320AIC3x: Adding additional functionality for 3106 with [Patch] for discuss Date: Thu, 31 Mar 2016 15:58:33 +0300 Message-ID: <56FD1EF9.2030408@ti.com> References: <56E69B3F.8090306@mcsplus.ru> <56E6CEE9.5030802@ti.com> <56E7FC3C.1030503@mcsplus.ru> <56E802D9.4040501@ti.com> <56E834B0.5010808@mcsplus.ru> <56E91FEE.4070604@ti.com> <56E934CB.4040209@mcsplus.ru> <56E97A75.7030700@ti.com> <56E98F99.2060100@mcsplus.ru> <56EA7833.7080302@ti.com> <56F2B48B.9030903@mcsplus.ru> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bear.ext.ti.com (bear.ext.ti.com [192.94.94.41]) by alsa0.perex.cz (Postfix) with ESMTP id 327AF266483 for ; Thu, 31 Mar 2016 14:58:42 +0200 (CEST) In-Reply-To: <56F2B48B.9030903@mcsplus.ru> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Timur Karaldin , alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org VGltdXIsCgpPbiAwMy8yMy8xNiAxNzoyMSwgVGltdXIgS2FyYWxkaW4gd3JvdGU6Cj4gSGkgUGV0 ZXIhCj4gSGVyZSBpcyBteSBwYXRjaCB2Mi4gSXQgd29ya3Mgb25seSBmb3IgYWljMzEwNiwgYnV0 IEkgZG9uJ3QgaGF2ZSBhbnkgb3RoZXJzLgo+IEFsc28gcGF0Y2ggY29udGFpbnMgc29tZSBkZWJ1 ZyBvdXRwdXQsIEkgd291bGQgY2xlYW4gaXQuIEkgbGlrZSBiZWhhdmlvdXIgb2YKPiB0aGlzIGlt cHJvdmVtZW50cyBhbmQgSSBkaWRuJ3Qga25vdyBhbnkgaXNzdWUgcmlnaHQgbm93IGZvciB0aGVz ZSBhZGQtb25zCj4gZXhjZXB0IGRlYnVnIG91dHB1dCBhbmQgdGhhdCBpdCdzIGNvcnJlY3Qgb25s eSBmb3IgYWljMzEwNiAoZGlkbid0IGNoZWNrIGZvcgo+IG90aGVycyBldmVuIG9uIGRhdGFzaGVl dCBsZXZlbCkuIFRoYW5rIHlvdSBmb3IgYWxsIHlvdXIgaGVscCEKCnNvcnJ5IGZvciB0aGUgZGVs YXksIEkgd2FzIGRyYWdnZWQgYXdheSBmb3IgYSBiaXQuCgpDYW4geW91IHNlbmQgdGhlc2UgYXMg c2VwYXJhdGVkIHBhdGNoZXMgcGVyIG5ldyBmdW5jdGlvbmFsaXR5PyBQbGVhc2UgdXNlCmdpdCBm b3JtYXQtcGF0Y2ggdG8gY3JlYXRlIHRoZSBwYXRjaGVzIGFuZCB0cnkgdG8gY2xlYW4gdGhlbSB1 cCBzbyBpdCBpcyBnb2luZwp0byBiZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGVtLgoKQ2FuIHlv dSBjaGVjayB5b3VyIG1haWwgY2xpZW50IHRvIHdyYXAgbGluZXMgY29ycmVjdGx5PwpZb3UgaGF2 ZSB2ZXJ5IGxvbmcgbGluZXMsIGZvciBleGFtcGxlOgpodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xp c3RzL2Fsc2EtZGV2ZWwvbXNnNDc3OTMuaHRtbApodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3Rz L2Fsc2EtZGV2ZWwvbXNnNDgxOTkuaHRtbAoKV2hpbGUgdGhleSBzaG91bGQgYmUgc29tZXRoaW5n IGxpa2U6Cmh0dHA6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvYWxzYS1kZXZlbC9tc2c0Nzc5Ny5o dG1sCgpDb3VwbGUgb2YgY29tbWVudHMsIGJ1dCBpdCB3b3VsZCBiZSBtb3JlIGJlbmVmaWNpYWwg dG8gc2VlIGEgc2VyaWVzLi4uCgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9jb2RlY3MvdGx2MzIwYWljM3guYyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3gu Ywo+IGluZGV4IGQ3MzQ5YmMuLjJjMDZlMjEgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVj cy90bHYzMjBhaWMzeC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jCj4g QEAgLTg5LDYgKzg5LDcgQEAgc3RydWN0IGFpYzN4X3ByaXYgewo+IAo+ICAgICAgICAgLyogU2Vs ZWN0cyB0aGUgbWljYmlhcyB2b2x0YWdlICovCj4gICAgICAgICBlbnVtIGFpYzN4X21pY2JpYXNf dm9sdGFnZSBtaWNiaWFzX3ZnOwo+ICsgICAgICAgdW5zaWduZWQgY2hhciBjYWNoZWRfZ2FpbltM SU5FMUxfMl9SQURDX0NUUkwtTUlDM0xSXzJfTEFEQ19DVFJMKzFdOwoKc3BhY2VzIGFyb3VuZCAn KycgJy0nICc9JwoKU2VlOiBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCgpBbHNvLCBtYWtlIHN1 cmUgdGhhdCB0YWJzIGFyZSBub3QgcmVwbGFjZWQgYnkgc3BhY2VzIGFuZCBjaGVjayB0aGUgcGF0 Y2ggZm9yCmxvbmcgbGluZXMgYWxzby4KClJ1biBzY3JpcHRzL2NoZWNrcGF0Y2gucGwgLS1zdHJp Y3Qgb24gdGhlIHBhdGNoZXMuCgo+ICB9Owo+IAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ19k ZWZhdWx0IGFpYzN4X3JlZ1tdID0gewo+IEBAIC0xMzQsMTYgKzEzNSwxNzUgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGFpYzN4X3JlZ21hcCA9IHsKPiAKPiAgI2RlZmluZSBT T0NfREFQTV9TSU5HTEVfQUlDM1goeG5hbWUsIHJlZywgc2hpZnQsIG1hc2ssIGludmVydCkgXAo+ ICAgICAgICAgU09DX1NJTkdMRV9FWFQoeG5hbWUsIHJlZywgc2hpZnQsIG1hc2ssIGludmVydCwg XAo+IC0gICAgICAgICAgICAgICBzbmRfc29jX2RhcG1fZ2V0X3ZvbHN3LCBzbmRfc29jX2RhcG1f cHV0X3ZvbHN3X2FpYzN4KQo+ICsgICAgICAgICAgICAgICBzbmRfc29jX2RhcG1fZ2V0X3ZvbHN3 X2FpYzN4LCBzbmRfc29jX2RhcG1fcHV0X3ZvbHN3X2FpYzN4KQo+ICsKPiArI2RlZmluZSBTT0Nf RE9VQkxFX1JfQUlDM1hfVExWKHhuYW1lLCByZWcsIHJyZWcsIHNoaWZ0LCBtYXNrLCBpbnZlcnQp IFwKPiArICAgICAgIFNPQ19ET1VCTEVfUl9FWFRfVExWKHhuYW1lLCByZWcsIHJyZWcsIHNoaWZ0 LCBtYXNrLCBpbnZlcnQsIFwKPiArICAgICAgIHNuZF9zb2NfZ2V0X2dhaW5fYWljM3gsIHNuZF9z b2NfcHV0X2dhaW5fYWljM3gsIGdhaW5fc3RhZ2VfdGx2KQo+ICsKPiArI2RlZmluZSBTT0NfU0lO R0xFX0FJQzNYX1RMVih4bmFtZSwgcmVnLCBzaGlmdCwgbWFzaywgaW52ZXJ0KSBcCj4gKyAgICAg ICBTT0NfU0lOR0xFX0VYVF9UTFYoeG5hbWUsIHJlZywgc2hpZnQsIG1hc2ssIGludmVydCwgXAo+ ICsgICAgICAgc25kX3NvY19nZXRfZ2Fpbl9haWMzeCwgc25kX3NvY19wdXRfZ2Fpbl9haWMzeCwg Z2Fpbl9zdGFnZV90bHYpCj4gKwo+ICsjZGVmaW5lICAgICAgICBTT0NfU0lOR0xFX0VYVF9WT0wo eG5hbWUsIHJlZywgc2hpZnQsIG1hc2ssIGludmVydCkgXAo+ICsgICAgICAgU09DX1NJTkdMRV9F WFQoeG5hbWUsIHJlZywgc2hpZnQsIG1hc2ssIGludmVydCwgXAo+ICsgICAgICAgICAgICAgICBz bmRfc29jX2dldF92b2xzd191bmNhY2hlZCwgc25kX3NvY19wdXRfdm9sc3cpCj4gKwo+ICsvKgo+ ICsgKiBIZWFkc2V0IGRldGVjdCBmbGFnLCBidXR0b24gcHJlc3MgZGV0ZWN0IGZsYWcgYW5kIGhl YWRzZXQgdHlwZSBmbGFnIGlzCj4gcmVhZCBvbmx5IHJlZ2lzdGVyLAo+ICsgKiBidXQgd2UgY291 bGQgbm90IGRlY2xhcmUgdGhlc2UgcmVncyBhcyB2b2xhdGlsZSBiZWNhdXNlIG90aGVyIGJpdHMg YXJlIFJXLAo+IHNvIHdlIHVzZQo+ICsgKiB1bmNoYWNoZWQgZ2V0IGhhbmxlciBmb3IgdGhlc2Ug cmVncy4KPiArKi8KPiArc3RhdGljIGludCBzbmRfc29jX2dldF92b2xzd191bmNhY2hlZCggc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBzbmRf Y3RsX2VsZW1fdmFsdWUgKiB1Y29udHJvbCkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArICAg ICAgIHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250 cm9sKTsKPiArICAgICAgIHN0cnVjdCBhaWMzeF9wcml2ICphaWMzeCA9IHNuZF9zb2NfY29kZWNf Z2V0X2RydmRhdGEoY29kZWMpOwo+ICsKPiArICAgICAgIHJlZ2NhY2hlX2NhY2hlX2J5cGFzcyhh aWMzeC0+cmVnbWFwLCB0cnVlKTsKPiArICAgICAgIHJldCA9IHNuZF9zb2NfZ2V0X3ZvbHN3KGtj b250cm9sLCB1Y29udHJvbCk7Cj4gKyAgICAgICByZWdjYWNoZV9jYWNoZV9ieXBhc3MoYWljM3gt PnJlZ21hcCwgZmFsc2UpOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArLyoKPiAr ICogQWxsIGlucHV0IGxpbmVzIGhhdmUgYWRkaXRpb25hbCBnYWluIGNvbnRyb2xzIHdoaWNoIGNh biBiZSBjb250cm9sZWQgYnkKPiB2b2x1bWUgY29udHJvbC4KPiArICogMHgwIC0gbWVhbnMgMGRC IGFuZCAweDggLSBtZWFucyAtMTIgZEIuIEl0J3MgYSBsaXRsbGUgYml0IHRyaWNreSBiZWNhdXNl Cj4gdmFsdWUgMHhGIG1lYW5zIG11dGUuCj4gKyAqICB2YWx1ZSAweDktMHhFIHJlc2VydmVyZCwg c28gaW4gY2FzZSBvZiBzd2l0Y2ggbXV0ZWQgd2Ugc2hvdWxkIHN0b3JlIHZhbHVlCj4gaW4gY2Fj aGUgYW5kIHNob3VsZAo+ICsgKiBub3Qgc2V0IHVwIGl0IHRvIHJlZ2lzdGVyCj4gKyovCj4gK3N0 YXRpYyBpbnQgc25kX3NvY19wdXRfZ2Fpbl9haWMzeChzdHJ1Y3Qgc25kX2tjb250cm9sKiBrY29u dHJvbCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV92YWx1ZSogdWNvbnRyb2wpCgpQbGVhc2Uga2VlcCB0aGUgcGFyYW1ldGVyIGlu ZGVudGF0aW9uIHVuaWZvcm0uCgo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qgc25kX3NvY19jb2RlYyAq Y29kZWMgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7Cj4gKyAgICAgICBzdHJ1Y3QgYWlj M3hfcHJpdiAqYWljM3ggPSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGNvZGVjKTsKPiArICAg ICAgIHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqbWMgPSAoc3RydWN0IHNvY19taXhlcl9jb250 cm9sCj4gKilrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKPiArICAgICAgIHVuc2lnbmVkIGludCBy ZWc7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgc2hpZnQgPSBtYy0+c2hpZnQ7Cj4gKyAgICAgICBp bnQgbWF4ID0gbWMtPm1heDsKPiArICAgICAgIHVuc2lnbmVkIGludCBtYXNrID0gKDE8PGZscyht YXgpKS0xOwo+ICsgICAgICAgdW5zaWduZWQgaW50IGludmVydCA9IG1jLT5pbnZlcnQ7Cj4gKwo+ ICsgICAgICAgdTggcmVnZGF0YSwgbmV3dmFsLCByZWd2YWw7Cj4gKyAgICAgICAgdTggbG9vcCA9 IDA7Cj4gKwo+ICsgICAgICAgLy9GaXJzdCBvZiBhbGwgd2UgbmVlZCB0byBjYWNoZSB2YWx1ZS4g VGhlbiB3ZSBuZWVkIHRvIHRlc3QgZWFjaCB2YWx1ZQo+IG9uIG11dGUgaW4gcmVnaXN0ZXIKPiAr ICAgICAgIC8vSWYgbm90IG11dGVkLCB3ZSBzaG91bGQgc2V0dXAgbmV3IHZhbHVlCj4gKyAgICAg ICByZWcgPSBtYy0+cmVnOwo+ICsgICAgICAgIG5ld3ZhbCA9ICggdWNvbnRyb2wtPnZhbHVlLmlu dGVnZXIudmFsdWVbMF0gJiBtYXNrICk7Cj4gKyAgICAgICBwcmludGsoS0VSTl9JTkZPICJzZXQg Z2FpbiBjb250cm9sIHJlZzolZCB2YWw6JTBYIG1hc2s6JTBYIHNoaWZ0OiUwWAo+IGludmVydCAl ZFxuIiwgcmVnLG5ld3ZhbCwgbWFzaywgc2hpZnQsaW52ZXJ0KTsKPiArICAgICAgICBkbwo+ICsg ICAgICAgIHsKCkl0IHdvdWxkIGJlIGJldHRlciB0byBkbyB0aGlzIHcvbyBkbyB7fXdoaWxlIGxv b3AsIHNlZSBzbmRfc29jX3B1dF92b2xzdygpIGZvcgpleGFtcGxlLgoKPiArICAgICAgICAgICAg ICAgaWYoaW52ZXJ0KQo+ICsgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgbmV3dmFsID0gKCA4IC0gbmV3dmFsICkgJiBtYXNrOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHByaW50ayhLRVJOX0lORk8gImludmVydGVkIHZhbCAlMFhcbiIsIG5ld3ZhbCk7Cj4gKyAg ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgLy9yZWFkLCB0ZXN0IGFuZCB1cGRhdGUg aWYgZmlyc3QgcmVnIGlmIG5lZWRzCj4gKyAgICAgICAgICAgICAgIHJlZ2RhdGEgPSBzbmRfc29j X3JlYWQoY29kZWMsIHJlZyk7Cj4gKyAgICAgICAgICAgICAgIHJlZ3ZhbCA9ICggcmVnZGF0YSA+ PiBzaGlmdCkgJiBtYXNrOwo+ICsKPiArICAgICAgICAgICAgICAgaWYoIHJlZyA+PSBNSUMzTFJf Ml9MQURDX0NUUkwgJiYgcmVnIDw9IExJTkUxTF8yX1JBRENfQ1RSTCApCj4gKyAgICAgICAgICAg ICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9JTkZPICJjYWNoZWRf Z2FpbiBiZWZvcmUKPiAlMFhcbiIsYWljM3gtPmNhY2hlZF9nYWluW3JlZy1NSUMzTFJfMl9MQURD X0NUUkxdKTsKPiArIGFpYzN4LT5jYWNoZWRfZ2FpbltyZWctTUlDM0xSXzJfTEFEQ19DVFJMXSY9 fihtYXNrPDxzaGlmdCk7Cj4gKyBhaWMzeC0+Y2FjaGVkX2dhaW5bcmVnLU1JQzNMUl8yX0xBRENf Q1RSTF18PShuZXd2YWw8PHNoaWZ0KTsKPiArICAgICAgICAgICAgICAgICAgICAgICBwcmludGso S0VSTl9JTkZPICJjYWNoZWRfZ2FpbiBhZnRlcgo+ICUwWFxuIixhaWMzeC0+Y2FjaGVkX2dhaW5b cmVnLU1JQzNMUl8yX0xBRENfQ1RSTF0pOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAg ICAgICAgICAgICBpZiAoIHJlZ3ZhbCE9MHhmICYmIHJlZ3ZhbCE9bmV3dmFsICkKPiArICAgICAg ICAgICAgICAgICAgICAgICBzbmRfc29jX3VwZGF0ZV9iaXRzKCBjb2RlYywgcmVnLCBtYXNrPDxz aGlmdCwKPiBuZXd2YWw8PHNoaWZ0ICk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYoc25kX3Nv Y192b2xzd19pc19zdGVyZW8obWMpKQo+ICsgICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBsb29wPSFsb29wOyAgICAgLy9zd2l0Y2ggbG9vcCwgc28gZm9yIGZpcnN0 IHRpbWUgbG9vcAo+IHdpbGwgYmUgdHJ1ZSBhZnRlciBhbmQgZm9yIHNlY29uZCB0aW1lIGl0IHdp bGwgYmUgZmFsc2UsIHNvIHdlIHdpbGwgZmluaXNoIGxvb3AKPiArICAgICAgICAgICAgICAgICAg ICAgICAgaWYobG9vcCkgLy9pZiBmaXJzdCB0aW1lCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWc9bWMtPnJyZWc7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsID0gKHVjb250cm9sLT52YWx1ZS5p bnRlZ2VyLnZhbHVlWzFdICYKPiBtYXNrKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaW50ayhLRVJOX0lORk8gImNvbnRyb2wgaXMgc3RlcmVvIHNlY29uZAo+IHJlZzolZCB2 YWw6JTBYXG4iLCByZWcsbmV3dmFsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg ICAgfQo+ICsKPiArICAgICAgICB9d2hpbGUobG9vcCk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiAr fQo+ICsKPiArLyoKPiArICogQWxsIGlucHV0IGxpbmVzIGhhdmUgYWRkaXRpb25hbCBnYWluIGNv bnRyb2xzIHdoaWNoIGNhbiBiZSBjb250cm9sZWQgYnkKPiB2b2x1bWUgY29udHJvbC4KPiArICog MHgwIC0gbWVhbnMgMGRCIGFuZCAweDggLSBtZWFucyAtMTIgZEIuIEl0J3MgYSBsaXRsbGUgYml0 IHRyaWNreSBiZWNhdXNlCj4gdmFsdWUgMHhGIG1lYW5zIG11dGUuCj4gKyAqIHZhbHVlIDB4OS0w eEUgcmVzZXJ2ZXJkLCBzbyBpbiBjYXNlIG9mIHN3aXRjaCBtdXRlZCB3ZSBzaG91bGQgcmVhZCB2 YWx1ZQo+IGZyb20gY2FjaGUgaW4gYWljM3hfcHJpdgo+ICsgKiBhbmQgc2hvdWxkIG5vdCByZWFk IGl0IGZyb20gcmVnY2FjaGUgb3IgcmVnaXN0ZXIKPiArKi8KPiArc3RhdGljIGludCBzbmRfc29j X2dldF9nYWluX2FpYzN4KCBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVj b250cm9sKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMgPSBzbmRf a2NvbnRyb2xfY2hpcChrY29udHJvbCk7Cj4gKyAgICAgICBzdHJ1Y3QgYWljM3hfcHJpdiAqYWlj M3ggPSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGNvZGVjKTsKPiArICAgICAgIHN0cnVjdCBz b2NfbWl4ZXJfY29udHJvbCAqbWMgPSAoc3RydWN0IHNvY19taXhlcl9jb250cm9sCj4gKilrY29u dHJvbC0+cHJpdmF0ZV92YWx1ZTsKPiArICAgICAgIHVuc2lnbmVkIGludCByZWc7Cj4gKyAgICAg ICB1bnNpZ25lZCBpbnQgc2hpZnQgPSBtYy0+c2hpZnQ7Cj4gKyAgICAgICBpbnQgbWF4ID0gbWMt Pm1heDsKPiArICAgICAgIHVuc2lnbmVkIGludCBtYXNrID0gKDE8PGZscyhtYXgpKS0xOwo+ICsg ICAgICAgdW5zaWduZWQgaW50IGludmVydCA9IG1jLT5pbnZlcnQ7Cj4gKwo+ICsgICAgICAgdTgg cmVnZGF0YSwgcmVndmFsOwo+ICsgICAgICAgIHU4IGxvb3AgPSAwOwo+ICsKPiArICAgICAgIC8v Rmlyc3Qgb2YgYWxsIHdlIG5lZWQgdG8gY2FjaGUgdmFsdWUuIFRoZW4gd2UgbmVlZCB0byB0ZXN0 IGVhY2ggdmFsdWUKPiBvbiBtdXRlIGluIHJlZ2lzdGVyCj4gKyAgICAgICAvL0lmIG5vdCBtdXRl ZCwgd2Ugc2hvdWxkIHNldCB1cCBuZXcgdmFsdWUKPiArICAgICAgIHJlZyA9IG1jLT5yZWc7Cj4g Kwo+ICsgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAiZ2V0IGdhaW4gY29udHJvbCByZWc6JWQgbWFz azolMFggc2hpZnQ6JTBYIGludmVydAo+ICVkXG4iLCByZWcsIG1hc2ssIHNoaWZ0LGludmVydCk7 Cj4gKyAgICAgICAgZG8KPiArICAgICAgICB7CgpzYW1lIGhlcmUsIHBsZWFzZSByZW1vdmUgdGhl IGxvb3AuCgo+ICsgICAgICAgICAgICAgICByZWdkYXRhID0gc25kX3NvY19yZWFkKGNvZGVjLCBy ZWcpOwo+ICsgICAgICAgICAgICAgICByZWd2YWwgPSAoIHJlZ2RhdGEgPj4gc2hpZnQpICYgbWFz azsKPiArICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAicmVndmFsOiUwWFxuIiwgcmVn dmFsKTsKPiArCj4gKyAgICAgICAgICAgICAgIC8vY2hlY2sgaWYgcmVnaXN0ZXIgaXMgbXV0ZWQg dGhlbiByZXR1cm4gY2FjaGVkIHZhbHVlCj4gKyAgICAgICAgICAgICAgIGlmKCByZWd2YWwgPT0g MHhmICkKPiArICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmKCBy ZWcgPj1NSUMzTFJfMl9MQURDX0NUUkwgJiYgcmVnIDw9Cj4gTElORTFMXzJfUkFEQ19DVFJMICkK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ3ZhbCA9Cj4gKGFpYzN4LT5jYWNo ZWRfZ2FpbltyZWctTUlDM0xSXzJfTEFEQ19DVFJMXT4+c2hpZnQpICYgbWFzazsKPiArICAgICAg ICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9JTkZPICJyZWd2YWwgZnJvbSBjYWNoZTolMFhc biIsIHJlZ3ZhbCk7Cj4gKwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIGlm KCBpbnZlcnQgKQo+ICsgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmVndmFsID0gKDggLSByZWd2YWwpICYgbWFzazsKPiArICAgICAgICAgICAgICAgICAgICAgICBw cmludGsoS0VSTl9JTkZPICJyZWd2YWwgYWZ0ZXIgaW52ZXJ0OiUwWFxuIiwgcmVndmFsKTsKPiAr ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdl ci52YWx1ZVtsb29wXSA9IHJlZ3ZhbDsKPiArCj4gKyAgICAgICAgICAgICAgICBpZihzbmRfc29j X3ZvbHN3X2lzX3N0ZXJlbyhtYykpCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGxvb3A9bG9vcD8wOjE7IC8vc3dpdGNoIGxvb3AsIHNvIGZvciBmaXJzdCB0 aW1lIGxvb3AKPiB3aWxsIGJlIDEgYWZ0ZXIgYW5kIGZvciBzZWNvbmQgdGltZSBpdCB3aWxsIGJl IDAsIHNvIHdlIHdpbGwgZXhpdCBmcm9tIHdoaWxlLWxvb3AKPiArICAgICAgICAgICAgICAgICAg ICAgICAgaWYobG9vcCkgLy9pZiBmaXJzdCB0aW1lCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWc9bWMtPnJyZWc7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9JTkZPICJjb250cm9sIGlz IHN0ZXJlbyBzZWNvbmQKPiByZWc6JWRcbiIsIHJlZyk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAg ICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgfXdoaWxlKGxvb3ApOwo+ICsgICAgICAgcmV0 dXJuIDA7Cj4gK30KPiAKPiAgLyoKPiAgICogQWxsIGlucHV0IGxpbmVzIGFyZSBjb25uZWN0ZWQg d2hlbiAhMHhmIGFuZCBkaXNjb25uZWN0ZWQgd2l0aCAweGYgYml0IGZpZWxkLAo+IC0gKiBzbyB3 ZSBoYXZlIHRvIHVzZSBzcGVjaWZpYyBkYXBtX3B1dCBjYWxsIGZvciBpbnB1dCBtaXhlcgo+ICsg KiBzbyB3ZSBoYXZlIHRvIHVzZSBzcGVjaWZpYyBkYXBtX3B1dCBjYWxsIGZvciBpbnB1dCBtaXhl ci4gSW4gY2FzZSBvZiB1bm11dGUKPiArICogd2Ugc2hvdWxkIHNldCB1cCByZWdpc3RlciB2YWx1 ZSBmcm9tIGNhY2hlZCB2YWx1ZXMgZnJvbSBhaWMzeF9wcml2IHN0cnVjdC4KPiAgICovCj4gIHN0 YXRpYyBpbnQgc25kX3NvY19kYXBtX3B1dF92b2xzd19haWMzeChzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBz bmRfc29jX2NvZGVjICpjb2RlYyA9IHNuZF9zb2NfZGFwbV9rY29udHJvbF9jb2RlYyhrY29udHJv bCk7Cj4gKyAgICAgICBzdHJ1Y3QgYWljM3hfcHJpdiAqYWljM3ggPSBzbmRfc29jX2NvZGVjX2dl dF9kcnZkYXRhKGNvZGVjKTsKPiArCj4gICAgICAgICBzdHJ1Y3Qgc29jX21peGVyX2NvbnRyb2wg Km1jID0KPiAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqKWtjb250 cm9sLT5wcml2YXRlX3ZhbHVlOwo+ICAgICAgICAgdW5zaWduZWQgaW50IHJlZyA9IG1jLT5yZWc7 Cj4gQEAgLTE1MSwyMCArMzExLDMyIEBAIHN0YXRpYyBpbnQgc25kX3NvY19kYXBtX3B1dF92b2xz d19haWMzeChzdHJ1Y3QKPiBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAo+ICAgICAgICAgaW50IG1h eCA9IG1jLT5tYXg7Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgxIDw8IGZscyhtYXgp KSAtIDE7Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgaW52ZXJ0ID0gbWMtPmludmVydDsKPiAtICAg ICAgIHVuc2lnbmVkIHNob3J0IHZhbDsKPiArICAgICAgIHVuc2lnbmVkIGludCB2YWw7Cj4gICAg ICAgICBzdHJ1Y3Qgc25kX3NvY19kYXBtX3VwZGF0ZSB1cGRhdGU7Cj4gICAgICAgICBpbnQgY29u bmVjdCwgY2hhbmdlOwo+IAo+ICAgICAgICAgdmFsID0gKHVjb250cm9sLT52YWx1ZS5pbnRlZ2Vy LnZhbHVlWzBdICYgbWFzayk7Cj4gKyAgICAgICBwcmludGsoS0VSTl9JTkZPICJkYXBtIHB1dCB2 b2xzdyB2YWw6JVggcmVnOiVYIG1hc2s6JVggc2hpZnQ6JVgKPiBpbnZlcnQ6JVhcbiIsIHZhbCwg cmVnLCBtYXNrLCBzaGlmdCwgaW52ZXJ0KTsKPiAKPiAgICAgICAgIG1hc2sgPSAweGY7Cj4gICAg ICAgICBpZiAodmFsKQo+ICsgICAgICAgewo+ICAgICAgICAgICAgICAgICB2YWwgPSBtYXNrOwo+ IC0KPiArICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAibmV3IHZhbDolWFxuIiwgdmFs KTsKPiArICAgICAgIH0KPiAgICAgICAgIGNvbm5lY3QgPSAhIXZhbDsKPiAKPiAgICAgICAgIGlm IChpbnZlcnQpCj4gKyAgICAgICB7Cj4gICAgICAgICAgICAgICAgIHZhbCA9IG1hc2sgLSB2YWw7 Cj4gKyAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gInZhbCBhZnRlciBpbnZlcnQ6JVhc biIsIHZhbCk7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBpZiAoIXZhbCkKPiArICAgICAgIHsKPiAr ICAgICAgICAgICAgICAgaWYoIHJlZz49TUlDM0xSXzJfTEFEQ19DVFJMICYmIHJlZzw9TElORTFM XzJfUkFEQ19DVFJMICkKPiArICAgICAgICAgICAgICAgICAgICAgICB2YWwgPQo+IChhaWMzeC0+ Y2FjaGVkX2dhaW5bcmVnLU1JQzNMUl8yX0xBRENfQ1RSTF0+PnNoaWZ0KSAmIG1hc2s7Cj4gKyAg ICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gImNhY2hlZCB2YWw6JVhcbiIsIHZhbCk7Cj4g KyAgICAgICB9Cgp0aGlzIGdlbmVyYWxseSBsb29rcyBnb29kLCBidXQgcGxlYXNlIGNsZWFuIHVw IHRoZSBwYXRjaC4KCj4gCj4gICAgICAgICBtYXNrIDw8PSBzaGlmdDsKPiAgICAgICAgIHZhbCA8 PD0gc2hpZnQ7Cj4gQEAgLTE4Myw2ICszNTUsMzYgQEAgc3RhdGljIGludCBzbmRfc29jX2RhcG1f cHV0X3ZvbHN3X2FpYzN4KHN0cnVjdAo+IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCj4gICAgICAg ICByZXR1cm4gY2hhbmdlOwo+ICB9Cj4gCj4gKy8qCj4gKyAqIEJhc2VkIG9uIHN0YW5kYXJ0IGhh bmRsZXIgc25kX3NvY19kYXBtX2dldF92b2xzdywgYnV0IGNoYW5naW5nIG1hc2sgdG8gMHhGCj4g KyAqCj4gKyAqLwo+ICtzdGF0aWMgaW50IHNuZF9zb2NfZGFwbV9nZXRfdm9sc3dfYWljM3goc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3Qgc29jX21peGVyX2NvbnRyb2wgKm1jID0KPiArICAgICAgICAgICAgICAg KHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqKWtjb250cm9sLT5wcml2YXRlX3ZhbHVlOwo+ICsg ICAgICAgdW5zaWduZWQgaW50IHJlZyA9IG1jLT5yZWc7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQg c2hpZnQgPSBtYy0+c2hpZnQ7Cj4gKyAgICAgICBpbnQgbWF4ID0gbWMtPm1heDsKPiArICAgICAg IHVuc2lnbmVkIGludCBtYXNrID0gKDEgPDwgZmxzKG1heCkpIC0gMTsKPiArICAgICAgIGludCBy ZXQ7Cj4gKwo+ICsgICAgICAgLy9yZWdpc3RlciBjb250YWlucyA0IGJpdHMsIHNvIHdlIGNoYW5n ZSBtYXggdGVtb3ByYWxseSB0byByZWFkCj4gcmVnaXN0ZXIgYnkgb3JpZ2luYWwgaGFuZGxlciwg dGhlbiByZXR1cm4gaXQgYmFjawo+ICsgICAgICAgbWMtPm1heCA9IDE1Owo+ICsgICAgICAgcmV0 ID0gc25kX3NvY19kYXBtX2dldF92b2xzdygga2NvbnRyb2wsIHVjb250cm9sKTsKPiArICAgICAg IHByaW50ayhLRVJOX0lORk8gInNvY19kYXBtX2dldF92b2xzd19haWMzeDolbGQgcmVnOiVYIHNo aWZ0OiVYIG1heDolWAo+IG5ld21heDolWFxuIiwgdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFs dWVbMF0sIHJlZywgc2hpZnQsIG1heCwgbWMtPm1heCApOwo+ICsgICAgICAgbWMtPm1heCA9IG1h eDsKPiArCj4gKyAgICAgICAvL2FsbCBnYWlucyBleGNlcHQgbXV0ZSAoMHhmKSBhZnRlciBpbnZl cnRpb24gaXMgbm90IGVxdWwgdG8gMCwgc28gd2UKPiBuZWVkIHRvIHNldCAxKG9uKQo+ICsgICAg ICAgLy9mb3IgYWxsIHZhbHVlcyBleGNlcHQgMC4gMCBpcyBtdXRlLCBzbyB3ZSBkbyBub3QgbmVl ZCB0byBjaGFuZ2UgaXQKPiArICAgICAgIGlmKHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVl WzBdIT0wKQo+ICsgICAgICAgICAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsw XT0xOwo+ICsgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAibmV3IHZhbHVlOiVsZFxuIiwgdWNvbnRy b2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0pOwo+ICsKPiArICAgICAgIHJldHVybiByZXQ7Cj4g K30KPiArCj4gIC8qCj4gICAqIG1pYyBiaWFzIHBvd2VyIG9uL29mZiBzaGFyZSB0aGUgc2FtZSBy ZWdpc3RlciBiaXRzIHdpdGgKPiAgICogb3V0cHV0IHZvbHRhZ2Ugb2YgbWljIGJpYXMuIHdoZW4g cG93ZXIgb24gbWljIGJpYXMsIHdlCj4gQEAgLTI3MCw2ICs0NzIsMTQgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9hZ2NfZGVjYXlfZW51bVtdID0gewo+ICAgICAgICAgU09D X0VOVU1fU0lOR0xFKFJBR0NfQ1RSTF9BLCAwLCA0LCBhaWMzeF9hZ2NfZGVjYXkpLAo+ICB9Owo+ IAo+ICtzdGF0aWMgY29uc3QgY2hhciAqYWljM3hfaGVhZHNldF9kZWJvdW5jZVtdID0geyAiMTZt cyIsICIzMm1zIiwgIjY0bXMiLAo+ICIxMjhtcyIsICIyNTZtcyIsICI1MTJtcyIgfTsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9oZWFkc2V0X2RlYm91bmNlX2VudW0gPQo+ ICtTT0NfRU5VTV9TSU5HTEUoIEFJQzNYX0hFQURTRVRfREVURUNUX0NUUkxfQSwgMiwgNiwgYWlj M3hfaGVhZHNldF9kZWJvdW5jZSk7Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqYWljM3hfYnV0 dG9uX2RlYm91bmNlW10gPSB7ICIwbXMiLCAiOG1zIiwgIjE2bXMiLCAiMzJtcyIgfTsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9idXR0b25fZGVib3VuY2VfZW51bSA9Cj4g K1NPQ19FTlVNX1NJTkdMRSggQUlDM1hfSEVBRFNFVF9ERVRFQ1RfQ1RSTF9BLCAwLCA0LCBhaWMz eF9idXR0b25fZGVib3VuY2UpOwo+ICsKPiAgLyoKPiAgICogREFDIGRpZ2l0YWwgdm9sdW1lcy4g RnJvbSAtNjMuNSB0byAwIGRCIGluIDAuNSBkQiBzdGVwcwo+ICAgKi8KPiBAQCAtMjg3LDYgKzQ5 Nyw5IEBAIHN0YXRpYyBERUNMQVJFX1RMVl9EQl9TQ0FMRShhZGNfdGx2LCAwLCA1MCwgMCk7Cj4g ICAqLwo+ICBzdGF0aWMgREVDTEFSRV9UTFZfREJfU0NBTEUob3V0cHV0X3N0YWdlX3RsdiwgLTU5 MDAsIDUwLCAxKTsKPiAKPiArc3RhdGljIERFQ0xBUkVfVExWX0RCX1NDQUxFKGdhaW5fc3RhZ2Vf dGx2LCAtMTIwMCwgMTUwLCAwKTsKPiArCj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9r Y29udHJvbF9uZXcgYWljM3hfc25kX2NvbnRyb2xzW10gPSB7Cj4gICAgICAgICAvKiBPdXRwdXQg Ki8KPiAgICAgICAgIFNPQ19ET1VCTEVfUl9UTFYoIlBDTSBQbGF5YmFjayBWb2x1bWUiLAo+IEBA IC0zOTksNiArNjEyLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBh aWMzeF9zbmRfY29udHJvbHNbXQo+ID0gewo+ICAgICAgICAgU09DX0RPVUJMRV9SKCJQR0EgQ2Fw dHVyZSBTd2l0Y2giLCBMQURDX1ZPTCwgUkFEQ19WT0wsIDcsIDB4MDEsIDEpLAo+IAo+ICAgICAg ICAgU09DX0VOVU0oIkFEQyBIUEYgQ3V0LW9mZiIsIGFpYzN4X2VudW1bQURDX0hQRl9FTlVNXSks Cj4gKyAgICAgICAvKiBBZGRpdGlvbmFsIGNvbnRyb2xzICovCj4gKyAgICAgICBTT0NfRE9VQkxF X1JfQUlDM1hfVExWKCJNaWMzTCBWb2x1bWUiLCBNSUMzTFJfMl9MQURDX0NUUkwsCj4gTUlDM0xS XzJfUkFEQ19DVFJMLCA0LCA4LCAxKSwKPiArICAgICAgIFNPQ19ET1VCTEVfUl9BSUMzWF9UTFYo Ik1pYzNSIFZvbHVtZSIsIE1JQzNMUl8yX0xBRENfQ1RSTCwKPiBNSUMzTFJfMl9SQURDX0NUUkws IDAsIDgsIDEpLAo+ICsgICAgICAgU09DX0RPVUJMRV9SX0FJQzNYX1RMVigiTGluZTFMIFZvbHVt ZSIsIExJTkUxTF8yX0xBRENfQ1RSTCwKPiBMSU5FMUxfMl9SQURDX0NUUkwsIDMsIDgsIDEpLAo+ ICsgICAgICAgU09DX0RPVUJMRV9SX0FJQzNYX1RMVigiTGluZTFSIFZvbHVtZSIsIExJTkUxUl8y X0xBRENfQ1RSTCwKPiBMSU5FMVJfMl9SQURDX0NUUkwsIDMsIDgsIDEpLAo+ICsgICAgICAgU09D X1NJTkdMRV9BSUMzWF9UTFYoIkxpbmUyTCBWb2x1bWUiLCBMSU5FMkxfMl9MQURDX0NUUkwsIDMs IDgsIDEpLAo+ICsgICAgICAgU09DX1NJTkdMRV9BSUMzWF9UTFYoIkxpbmUyUiBWb2x1bWUiLCBM SU5FMlJfMl9SQURDX0NUUkwsIDMsIDgsIDEpLAo+ICsgICAgICAgU09DX0VOVU0oIkhlYWRzZXQg SmFjayBEZWJvdW5jZSIsIGFpYzN4X2hlYWRzZXRfZGVib3VuY2VfZW51bSApLAo+ICsgICAgICAg U09DX0VOVU0oIkJ1dHRvbiBQcmVzcyBEZWJvdW5jZSIsIGFpYzN4X2J1dHRvbl9kZWJvdW5jZV9l bnVtICksCj4gKyAgICAgICBTT0NfU0lOR0xFKCJIZWFkc2V0IERldGVjdCBFbmFibGUiLCBBSUMz WF9IRUFEU0VUX0RFVEVDVF9DVFJMX0EsIDcsIDEsCj4gMCksCj4gKyAgICAgICBTT0NfU0lOR0xF X0VYVF9WT0woIkhlYWRzZXQgRGV0ZWN0IFR5cGUiLCBBSUMzWF9IRUFEU0VUX0RFVEVDVF9DVFJM X0EsCj4gKyAgICAgICAgICAgICAgIEFJQzNYX0hFQURTRVRfREVURUNUX0FfU0hJRlQsIEFJQzNY X0hFQURTRVRfREVURUNUX0FfTUFTSywgMCksCj4gKyAgICAgICBTT0NfU0lOR0xFX0VYVF9WT0wo IkJ1dHRvbiBEZXRlY3QgRmxhZyIsIEFJQzNYX0hFQURTRVRfREVURUNUX0NUUkxfQiwKPiArICAg ICAgICAgICAgICAgQUlDM1hfQlVUVE9OX0RFVEVDVF9TSElGVCwgQUlDM1hfQlVUVE9OX0RFVEVD VF9NQVNLLCAwKSwKPiArICAgICAgIFNPQ19TSU5HTEVfRVhUX1ZPTCgiSGVhZHNldCBEZXRlY3Qg RmxhZyIsIEFJQzNYX0hFQURTRVRfREVURUNUX0NUUkxfQiwKPiArICAgICAgICAgICAgICAgQUlD M1hfSEVBRFNFVF9ERVRFQ1RfQl9TSElGVCwgQUlDM1hfSEVBRFNFVF9ERVRFQ1RfQl9NQVNLLCAw KSwKPiArICAgICAgIFNPQ19TSU5HTEUoIkhpZ2ggcG93ZXIgb3V0cHV0IEFjLWNvdXBsZWQiLAo+ IEFJQzNYX0hFQURTRVRfREVURUNUX0NUUkxfQiwgNywgMSwgMCksCj4gKyAgICAgICBTT0NfU0lO R0xFKCJTdGVyZW8gcHNldWRvZGlmZmVyZW50aWFsIG91dHB1dCIsCj4gQUlDM1hfSEVBRFNFVF9E RVRFQ1RfQ1RSTF9CLCAzLCAxLCAwKSwKPiAgfTsKPiAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBz bmRfa2NvbnRyb2xfbmV3IGFpYzN4X21vbm9fY29udHJvbHNbXSA9IHsKPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNz L3RsdjMyMGFpYzN4LmggYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmgKPiBpbmRleCBl NTIxYWMzLi5iY2FjODdmIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWlj M3guaAo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guaAo+IEBAIC0yNzEsOSAr MjcxLDIwIEBAIGVudW0gewo+ICAgICAgICAgQUlDM1hfQlVUVE9OX0RFQk9VTkNFXzMyTVMgICAg ICA9IDMKPiAgfTsKPiAKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgc3RydWN0IHBsYXRmb3Jt X2RldmljZSogcGRldjsKPiArICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY192YWx1ZTsK PiArICAgIHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYzsKPiArfSBhaWMzMTA2X2RldGVjdF90 Owo+ICsKPiAgI2RlZmluZSBBSUMzWF9IRUFEU0VUX0RFVEVDVF9FTkFCTEVEICAgMHg4MAo+IC0j ZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNUX1NISUZUICAgICA1Cj4gLSNkZWZpbmUgQUlDM1hf SEVBRFNFVF9ERVRFQ1RfTUFTSyAgICAgIDMKPiArI2RlZmluZSBBSUMzWF9IRUFEU0VUX0RFVEVD VF9BX1NISUZUICAgNQo+ICsjZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNUX0FfTUFTSyAgICAz Cj4gKwo+ICsjZGVmaW5lIEFJQzNYX0JVVFRPTl9ERVRFQ1RfU0hJRlQgICAgICA1Cj4gKyNkZWZp bmUgQUlDM1hfQlVUVE9OX0RFVEVDVF9NQVNLICAgICAgIDEKPiArI2RlZmluZSBBSUMzWF9IRUFE U0VUX0RFVEVDVF9CX1NISUZUICAgNAo+ICsjZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNUX0Jf TUFTSyAgICAxCj4gICNkZWZpbmUgQUlDM1hfSEVBRFNFVF9ERUJPVU5DRV9TSElGVCAgIDIKPiAg I2RlZmluZSBBSUMzWF9IRUFEU0VUX0RFQk9VTkNFX01BU0sgICAgNwo+ICAjZGVmaW5lIEFJQzNY X0JVVFRPTl9ERUJPVU5DRV9TSElGVCAgICAwCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCkl0IHdvdWxkIGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBjbGVhbiB0aGlzIHVw LCBoYXZlIHNlcGFyYXRlIHBhdGNoZXMgaW4gb3JkZXIKdG8gYmUgYWJsZSB0byByZXZpZXcgdGhl IGNoYW5nZXMgYW5kIGFsc28gdG8gYmUgYWJsZSB0byB0ZXN0IGl0LgpJdCBsb29rcyBwcm9taXNp bmcgOykKCi0tIApQw6l0ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qu b3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNh LWRldmVsCg==