From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Jakobi Subject: Re: [PATCH v3] drm/exynos: mixer: configure layers once in mixer_atomic_flush() Date: Wed, 28 Sep 2016 11:06:43 +0200 Message-ID: <57EB8823.8070602@math.uni-bielefeld.de> References: <1474889789-26721-1-git-send-email-tjakobi@math.uni-bielefeld.de> <57EA0D68.401@samsung.com> <57EA5664.3040106@math.uni-bielefeld.de> <130cf67d-4082-1e29-8f14-7c952c8a8012@samsung.com> <57EAA3C2.5000409@math.uni-bielefeld.de> <57EB014D.6010908@samsung.com> <57EB08B4.4070201@math.uni-bielefeld.de> <57EB235E.2050808@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <57EB235E.2050808@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Inki Dae , Andrzej Hajda , linux-samsung-soc@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, m.szyprowski@samsung.com List-Id: linux-samsung-soc@vger.kernel.org SW5raSBEYWUgd3JvdGU6Cj4gCj4gCj4gMjAxNuuFhCAwOeyblCAyOOydvCAwOTowM+yXkCBUb2Jp YXMgSmFrb2JpIOydtCjqsIApIOyTtCDquIA6Cj4+IEhleSBJbmtpLAo+Pgo+Pgo+PiBJbmtpIERh ZSB3cm90ZToKPj4+Cj4+Pgo+Pj4gMjAxNuuFhCAwOeyblCAyOOydvCAwMTo1MuyXkCBUb2JpYXMg SmFrb2JpIOydtCjqsIApIOyTtCDquIA6Cj4+Pj4gSGVsbG8gQW5kcnplaiwKPj4+Pgo+Pj4+Cj4+ Pj4gQW5kcnplaiBIYWpkYSB3cm90ZToKPj4+Pj4gT24gMjcuMDkuMjAxNiAxMzoyMiwgVG9iaWFz IEpha29iaSB3cm90ZToKPj4+Pj4+IEhlbGxvIElua2ksCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IElu a2kgRGFlIHdyb3RlOgo+Pj4+Pj4+IDIwMTbrhYQgMDnsm5QgMjbsnbwgMjA6Mzbsl5AgVG9iaWFz IEpha29iaSDsnbQo6rCAKSDsk7Qg6riAOgo+Pj4+Pj4+PiBPbmx5IG1hbmlwdWxhdGUgdGhlIE1Y Ul9DRkcgYW5kIE1YUl9MQVlFUl9DRkcgcmVnaXN0ZXJzIG9uY2UKPj4+Pj4+Pj4gaW4gbWl4ZXJf Y2ZnX2xheWVyKCkuCj4+Pj4+Pj4+IFRyaWdnZXIgdGhpcyB2aWEgYXRvbWljIGZsdXNoLgo+Pj4+ Pj4+Pgo+Pj4+Pj4+PiBDaGFuZ2VzIGluIHYyOgo+Pj4+Pj4+PiAtIGlzc3VlIG1peGVyX2NmZ19s YXllcigpIGluIG1peGVyX2Rpc2FibGUoKQo+Pj4+Pj4+PiAtIHJlbmFtZSBmaWVsZHMgYXMgc3Vn Z2VzdGVkIGJ5IEFuZHJ6ZWoKPj4+Pj4+Pj4gLSBhZGRlZCBkb2N1IHRvIG1peGVyIGNvbnRleHQg c3RydWN0Cj4+Pj4+Pj4+IC0gc2ltcGxpZnkgbWl4ZXJfd2luX3Jlc2V0KCkgYXMgd2VsbAo+Pj4+ Pj4+Pgo+Pj4+Pj4+PiBDaGFuZ2VzIGluIHYzOgo+Pj4+Pj4+PiAtIHNpbXBsaWZ5IHNvbWUgY29u ZGl0aW9ucyBhcyBzdWdnZXN0ZWQgYnkgSW5raQo+Pj4+Pj4+PiAtIGFkZCBkb2N1IHRvIG1peGVy X2NmZ19sYXllcigpCj4+Pj4+Pj4+IC0gZm9sZCBzd2l0Y2ggc3RhdGVtZW50cyBpbnRvIGEgc2lu Z2xlIG9uZQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBUb2JpYXMgSmFrb2JpIDx0 amFrb2JpQG1hdGgudW5pLWJpZWxlZmVsZC5kZT4KPj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+ICBkcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jIHwgMTM1ICsrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0KPj4+Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvcmVncy1t aXhlci5oICAgfCAgIDIgKwo+Pj4+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25z KCspLCA0NSBkZWxldGlvbnMoLSkKPj4+Pj4+Pj4KPj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19taXhlci5jCj4+Pj4+Pj4+IGluZGV4IDFlNzhkNTcuLjRmMDZmNGQgMTAwNjQ0Cj4+ Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMKPj4+Pj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIuYwo+Pj4+Pj4+PiBA QCAtOTMsMTIgKzkzLDI1IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCB2cF9mb3JtYXRzW10gPSB7 Cj4+Pj4+Pj4+ICAJRFJNX0ZPUk1BVF9OVjIxLAo+Pj4+Pj4+PiAgfTsKPj4+Pj4+Pj4gIAo+Pj4+ Pj4+PiArLyoKPj4+Pj4+Pj4gKyAqIE1peGVyIGNvbnRleHQgc3RydWN0dXJlLgo+Pj4+Pj4+PiAr ICoKPj4+Pj4+Pj4gKyAqIEBjcnRjOiBUaGUgSERNSSBDUlRDIGF0dGFjaGVkIHRvIHRoZSBtaXhl ci4KPj4+Pj4+Pj4gKyAqIEBwbGFuZXM6IEFycmF5IG9mIHBsYW5lIG9iamVjdHMgZm9yIGVhY2gg b2YgdGhlIG1peGVyIHdpbmRvd3MuCj4+Pj4+Pj4+ICsgKiBAYWN0aXZlX3dpbmRvd3M6IENhY2hl IG9mIHRoZSBtaXhlcidzIGhhcmR3YXJlIHN0YXRlLgo+Pj4+Pj4+PiArICogICAgICAgVHJhY2tz IHdoaWNoIG1peGVyIHdpbmRvd3MgYXJlIGFjdGl2ZS9pbmFjdGl2ZS4KPj4+Pj4+Pj4gKyAqIEBw aXBlOiBUaGUgQ1JUQyBpbmRleC4KPj4+Pj4+Pj4gKyAqIEBmbGFnczogQml0ZmllbGQgYnVpbGQg ZnJvbSB0aGUgbWl4ZXJfZmxhZ19iaXRzIGVudW1lcmF0b3IuCj4+Pj4+Pj4+ICsgKiBAbWl4ZXJf cmVzb3VyY2VzOiBBIHN0cnVjdCBjb250YWluaW5nIHJlZ2lzdGVycywgY2xvY2tzLCBldGMuCj4+ Pj4+Pj4+ICsgKiBAbXhyX3ZlcjogVGhlIGhhcmR3YXJlIHJldmlzaW9uL3ZlcnNpb24gb2YgdGhl IG1peGVyLgo+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+ICBzdHJ1Y3QgbWl4ZXJfY29udGV4dCB7Cj4+ Pj4+Pj4+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPj4+Pj4+Pj4gIAlzdHJ1Y3Qg ZGV2aWNlCQkqZGV2Owo+Pj4+Pj4+PiAgCXN0cnVjdCBkcm1fZGV2aWNlCSpkcm1fZGV2Owo+Pj4+ Pj4+PiAgCXN0cnVjdCBleHlub3NfZHJtX2NydGMJKmNydGM7Cj4+Pj4+Pj4+ICAJc3RydWN0IGV4 eW5vc19kcm1fcGxhbmUJcGxhbmVzW01JWEVSX1dJTl9OUl07Cj4+Pj4+Pj4+ICsJdW5zaWduZWQg bG9uZwkJYWN0aXZlX3dpbmRvd3M7Cj4+Pj4+Pj4+ICAJaW50CQkJcGlwZTsKPj4+Pj4+Pj4gIAl1 bnNpZ25lZCBsb25nCQlmbGFnczsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiBAQCAtNDE4LDM3ICs0MzEs NzAgQEAgc3RhdGljIHZvaWQgbWl4ZXJfY2ZnX3JnYl9mbXQoc3RydWN0IG1peGVyX2NvbnRleHQg KmN0eCwgdW5zaWduZWQgaW50IGhlaWdodCkKPj4+Pj4+Pj4gIAltaXhlcl9yZWdfd3JpdGVtYXNr KHJlcywgTVhSX0NGRywgdmFsLCBNWFJfQ0ZHX1JHQl9GTVRfTUFTSyk7Cj4+Pj4+Pj4+ICB9Cj4+ Pj4+Pj4+ICAKPj4+Pj4+Pj4gLXN0YXRpYyB2b2lkIG1peGVyX2NmZ19sYXllcihzdHJ1Y3QgbWl4 ZXJfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgd2luLAo+Pj4+Pj4+PiAtCQkJICAgIHVuc2ln bmVkIGludCBwcmlvcml0eSwgYm9vbCBlbmFibGUpCj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4gKyAq IG1peGVyX2NmZ19sYXllciAtIGFwcGx5IGxheWVyIGNvbmZpZ3VyYXRpb24gdG8gaGFyZHdhcmUK Pj4+Pj4+Pj4gKyAqIEBjdHg6IG1peGVyIGNvbnRleHQKPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ICsg KiBUaGlzIGNvbmZpZ3VyZXMgdGhlIE1YUl9DRkcgYW5kIE1YUl9MQVlFUl9DRkcgaGFyZHdhcmUg cmVnaXN0ZXJzCj4+Pj4+Pj4+ICsgKiB1c2luZyB0aGUgJ2FjdGl2ZV93aW5kb3dzJyBmaWVsZCBv ZiB0aGUgdGhlIG1peGVyIGNvbnRlbnQsIGFuZAo+Pj4+Pj4+PiArICogdGhlIHBpeGVsIGZvcm1h dCBvZiB0aGUgZnJhbWVidWZmZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5hYmxlZAo+Pj4+Pj4+ PiArICogd2luZG93cy4KPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ICsgKiBIYXMgdG8gYmUgY2FsbGVk IHVuZGVyIG1peGVyIGxvY2suCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gK3N0YXRpYyB2b2lkIG1p eGVyX2NmZ19sYXllcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQo+Pj4+Pj4+PiAgewo+Pj4+ Pj4+PiAgCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMgKnJlcyA9ICZjdHgtPm1peGVyX3JlczsKPj4+ Pj4+Pj4gLQl1MzIgdmFsID0gZW5hYmxlID8gfjAgOiAwOwo+Pj4+Pj4+PiAtCj4+Pj4+Pj4+IC0J c3dpdGNoICh3aW4pIHsKPj4+Pj4+Pj4gLQljYXNlIDA6Cj4+Pj4+Pj4+IC0JCW1peGVyX3JlZ193 cml0ZW1hc2socmVzLCBNWFJfQ0ZHLCB2YWwsIE1YUl9DRkdfR1JQMF9FTkFCTEUpOwo+Pj4+Pj4+ PiAtCQltaXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0xBWUVSX0NGRywKPj4+Pj4+Pj4gLQkJ CQkgICAgTVhSX0xBWUVSX0NGR19HUlAwX1ZBTChwcmlvcml0eSksCj4+Pj4+Pj4+IC0JCQkJICAg IE1YUl9MQVlFUl9DRkdfR1JQMF9NQVNLKTsKPj4+Pj4+Pj4gLQkJYnJlYWs7Cj4+Pj4+Pj4+IC0J Y2FzZSAxOgo+Pj4+Pj4+PiAtCQltaXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0NGRywgdmFs LCBNWFJfQ0ZHX0dSUDFfRU5BQkxFKTsKPj4+Pj4+Pj4gLQkJbWl4ZXJfcmVnX3dyaXRlbWFzayhy ZXMsIE1YUl9MQVlFUl9DRkcsCj4+Pj4+Pj4+IC0JCQkJICAgIE1YUl9MQVlFUl9DRkdfR1JQMV9W QUwocHJpb3JpdHkpLAo+Pj4+Pj4+PiAtCQkJCSAgICBNWFJfTEFZRVJfQ0ZHX0dSUDFfTUFTSyk7 Cj4+Pj4+Pj4+ICsJdW5zaWduZWQgaW50IHdpbjsKPj4+Pj4+Pj4gIAo+Pj4+Pj4+PiAtCQlicmVh azsKPj4+Pj4+Pj4gLQljYXNlIFZQX0RFRkFVTFRfV0lOOgo+Pj4+Pj4+PiAtCQlpZiAodGVzdF9i aXQoTVhSX0JJVF9WUF9FTkFCTEVELCAmY3R4LT5mbGFncykpIHsKPj4+Pj4+Pj4gLQkJCXZwX3Jl Z193cml0ZW1hc2socmVzLCBWUF9FTkFCTEUsIHZhbCwgVlBfRU5BQkxFX09OKTsKPj4+Pj4+Pj4g LQkJCW1peGVyX3JlZ193cml0ZW1hc2socmVzLCBNWFJfQ0ZHLCB2YWwsCj4+Pj4+Pj4+IC0JCQkJ TVhSX0NGR19WUF9FTkFCTEUpOwo+Pj4+Pj4+PiAtCQkJbWl4ZXJfcmVnX3dyaXRlbWFzayhyZXMs IE1YUl9MQVlFUl9DRkcsCj4+Pj4+Pj4+IC0JCQkJCSAgICBNWFJfTEFZRVJfQ0ZHX1ZQX1ZBTChw cmlvcml0eSksCj4+Pj4+Pj4+IC0JCQkJCSAgICBNWFJfTEFZRVJfQ0ZHX1ZQX01BU0spOwo+Pj4+ Pj4+PiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpzdGF0ZTsKPj4+Pj4+Pj4gKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPj4+Pj4+Pj4gKwl1bnNpZ25lZCBpbnQgcHJpb3Jp dHk7Cj4+Pj4+Pj4+ICsJdTMyIG14cl9jZmcgPSAwLCBteHJfbGF5ZXJfY2ZnID0gMCwgdnBfZW5h YmxlID0gMDsKPj4+Pj4+Pj4gKwlib29sIGVuYWJsZTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCWZv ciAod2luID0gMDsgd2luIDwgTUlYRVJfV0lOX05SOyArK3dpbikgewo+Pj4+Pj4+PiArCQlzdGF0 ZSA9IHRvX2V4eW5vc19wbGFuZV9zdGF0ZShjdHgtPnBsYW5lc1t3aW5dLmJhc2Uuc3RhdGUpOwo+ Pj4+Pj4+PiArCQlmYiA9IHN0YXRlLT5mYjsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCQlwcmlvcml0 eSA9IHN0YXRlLT5iYXNlLm5vcm1hbGl6ZWRfenBvcyArIDE7Cj4+Pj4+Pj4+ICsJCWVuYWJsZSA9 IHRlc3RfYml0KHdpbiwgJmN0eC0+YWN0aXZlX3dpbmRvd3MpOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ ICsJCWlmICghZW5hYmxlKQo+Pj4+Pj4+PiArCQkJY29udGludWU7Cj4+Pj4+Pj4+ICsKPj4+Pj4+ Pj4gKwkJQlVHX09OKCFmYik7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkJLyoKPj4+Pj4+Pj4gKwkJ ICogVE9ETzogRG9uJ3QgZW5hYmxlIGFscGhhIGJsZW5kaW5nIGZvciB0aGUgYm90dG9tIHdpbmRv dy4KPj4+Pj4+Pj4gKwkJICovCj4+Pj4+Pj4+ICsJCXN3aXRjaCAod2luKSB7Cj4+Pj4+Pj4+ICsJ CWNhc2UgMDoKPj4+Pj4+Pj4gKwkJCW14cl9jZmcgfD0gIE1YUl9DRkdfR1JQMF9FTkFCTEU7Cj4+ Pj4+Pj4+ICsJCQlteHJfbGF5ZXJfY2ZnIHw9IE1YUl9MQVlFUl9DRkdfR1JQMF9WQUwocHJpb3Jp dHkpOwo+Pj4+Pj4+PiArCQkJbWl4ZXJfY2ZnX2dmeF9ibGVuZChjdHgsIHdpbiwgaXNfYWxwaGFf Zm9ybWF0KGZiLT5waXhlbF9mb3JtYXQpKTsKPj4+Pj4+Pj4gKwkJCWJyZWFrOwo+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+ICsJCWNhc2UgMToKPj4+Pj4+Pj4gKwkJCW14cl9jZmcgfD0gIE1YUl9DRkdfR1JQ MV9FTkFCTEU7Cj4+Pj4+Pj4+ICsJCQlteHJfbGF5ZXJfY2ZnIHw9IE1YUl9MQVlFUl9DRkdfR1JQ MV9WQUwocHJpb3JpdHkpOwo+Pj4+Pj4+PiArCQkJbWl4ZXJfY2ZnX2dmeF9ibGVuZChjdHgsIHdp biwgaXNfYWxwaGFfZm9ybWF0KGZiLT5waXhlbF9mb3JtYXQpKTsKPj4+Pj4+Pj4gKwkJCWJyZWFr Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJCWNhc2UgVlBfREVGQVVMVF9XSU46Cj4+Pj4+Pj4+ICsJ CQl2cF9lbmFibGUgPSBWUF9FTkFCTEVfT047Cj4+Pj4+Pj4+ICsJCQlteHJfY2ZnIHw9ICBNWFJf Q0ZHX1ZQX0VOQUJMRTsKPj4+Pj4+Pj4gKwkJCW14cl9sYXllcl9jZmcgfD0gTVhSX0xBWUVSX0NG R19WUF9WQUwocHJpb3JpdHkpOwo+Pj4+Pj4+PiArCQkJbWl4ZXJfY2ZnX3ZwX2JsZW5kKGN0eCk7 Cj4+Pj4+Pj4+ICsJCQlicmVhazsKPj4+Pj4+Pj4gIAkJfQo+Pj4+Pj4+PiAtCQlicmVhazsKPj4+ Pj4+Pj4gIAl9Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwlpZiAodGVzdF9iaXQoTVhSX0JJVF9WUF9F TkFCTEVELCAmY3R4LT5mbGFncykpCj4+Pj4+Pj4+ICsJCXZwX3JlZ193cml0ZW1hc2socmVzLCBW UF9FTkFCTEUsIHZwX2VuYWJsZSwgVlBfRU5BQkxFX09OKTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiAr CW1peGVyX3JlZ193cml0ZW1hc2socmVzLCBNWFJfQ0ZHLCBteHJfY2ZnLCBNWFJfQ0ZHX0VOQUJM RV9NQVNLKTsKPj4+Pj4+Pj4gKwltaXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0xBWUVSX0NG RywgbXhyX2xheWVyX2NmZywgTVhSX0xBWUVSX0NGR19NQVNLKTsKPj4+Pj4+Pj4gIH0KPj4+Pj4+ Pj4gIAo+Pj4+Pj4+PiAgc3RhdGljIHZvaWQgbWl4ZXJfcnVuKHN0cnVjdCBtaXhlcl9jb250ZXh0 ICpjdHgpCj4+Pj4+Pj4+IEBAIC00NzgsNyArNTI0LDYgQEAgc3RhdGljIHZvaWQgdnBfdmlkZW9f YnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsCj4+Pj4+Pj4+ICAJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUgPSAmc3RhdGUtPmJhc2UuY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21v ZGU7Cj4+Pj4+Pj4+ICAJc3RydWN0IG1peGVyX3Jlc291cmNlcyAqcmVzID0gJmN0eC0+bWl4ZXJf cmVzOwo+Pj4+Pj4+PiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmZiOwo+ Pj4+Pj4+PiAtCXVuc2lnbmVkIGludCBwcmlvcml0eSA9IHN0YXRlLT5iYXNlLm5vcm1hbGl6ZWRf enBvcyArIDE7Cj4+Pj4+Pj4+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+Pj4+Pj4gIAlkbWFf YWRkcl90IGx1bWFfYWRkclsyXSwgY2hyb21hX2FkZHJbMl07Cj4+Pj4+Pj4+ICAJYm9vbCB0aWxl ZF9tb2RlID0gZmFsc2U7Cj4+Pj4+Pj4+IEBAIC01NjMsOCArNjA4LDYgQEAgc3RhdGljIHZvaWQg dnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsCj4+Pj4+Pj4+ICAKPj4+ Pj4+Pj4gIAltaXhlcl9jZmdfc2NhbihjdHgsIG1vZGUtPnZkaXNwbGF5KTsKPj4+Pj4+Pj4gIAlt aXhlcl9jZmdfcmdiX2ZtdChjdHgsIG1vZGUtPnZkaXNwbGF5KTsKPj4+Pj4+Pj4gLQltaXhlcl9j ZmdfbGF5ZXIoY3R4LCBwbGFuZS0+aW5kZXgsIHByaW9yaXR5LCB0cnVlKTsKPj4+Pj4+Pj4gLQlt aXhlcl9jZmdfdnBfYmxlbmQoY3R4KTsKPj4+Pj4+PiBZb3UgcmVtb3ZlZCB0aGUgZnVuY3Rpb24g Y2FsbCB0byBzZXQgTVhSX0NGRyBhbmQgTVhSX0xBWUVSX0NGRyByZWdpc3RlcnMgc28gd2hhdCBp ZiBsYWdhY3kgc2V0IHBsYW5lIGlvY3RsIGlzIGNhbGxlZCBieSB1c2VyIHVzZXIgc3BhY2U/IFdo ZXJlIHRoZXNlIHJlZ2lzdGVyIGFyZSB1cGRhdGVkPwo+Pj4+Pj4geWVzLCB5b3UncmUgcmlnaHQu IEkgY29tcGxldGx5IGZvcmdvdCBhYm91dCB0aGUgbGVnYWN5IGNvZGVwYXRocy4gU29ycnkKPj4+ Pj4+IGFib3V0IHRoYXQhCj4+Pj4+Cj4+Pj4+IEFyZSB5b3UgdGFsa2luZyBhYm91dCBEUk1fSU9D VExfTU9ERV9TRVRQTEFORT8KPj4+Pj4gSXQgZG9lcyBub3Qgc2VlbSB0byBiZSBsZWdhY3ksIG9y IHRvIGJlIG1vcmUgcHJlY2lzZSBpdCBjYWxscwo+Pj4+PiAudXBkYXRlX3BsYW5lIGFuZCAuZGlz YWJsZV9wbGFuZQo+Pj4+PiBjYWxsYmFja3Mgd2hpY2ggaW4gZXh5bm9zIGFyZSBzZXQgYXMgZm9s bG93Ogo+Pj4+PiAgICAgLnVwZGF0ZV9wbGFuZSAgICA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0 ZV9wbGFuZSwKPj4+Pj4gICAgIC5kaXNhYmxlX3BsYW5lICAgID0gZHJtX2F0b21pY19oZWxwZXJf ZGlzYWJsZV9wbGFuZSwKPj4+Pj4KPj4+Pj4gU28gRFJNX0lPQ1RMX01PREVfU0VUUExBTkUgY2Fs bHMgYXRvbWljIGNvZGVwYXRoIGFueXdheS4KPj4+PiB0aGFua3MgYSBsb3QgZm9yIHRoZSBoZWFk cy11cC4gSSBjYW4gY29uZmlybSB0aGF0IGRybV9tb2RlX3NldHBsYW5lKCkKPj4+PiBhbHNvIGdv ZXMgdGhyb3VnaCB0aGUgYXRvbWljIHBhdGguCj4+Pj4KPj4+PiBUaGUgc2ltcGxpZmllZCBjYWxs c3RhY2s6Cj4+Pj4gLSBkcm1fbW9kZV9zZXRwbGFuZSgpCj4+Pj4gICAtIF9fc2V0cGxhbmVfaW50 ZXJuYWwoKQo+Pj4+ICAgICAtIGRpc2FibGVfcGxhbmUoKSAoc2V0IGluIHBsYW5lX2hlbHBlcl9m dW5jcyBpbiBleHlub3NfZHJtX3BsYW5lLmMpCj4+Pj4gICAgIC0gdXBkYXRlX3BsYW5lKCkgKHNh bWUgaGVyZSkKPj4+Cj4+PiBTb3JyeSBmb3IgcHJldmlvdXMgY29tbWVudHMgbm90IGVub3VnaC4K Pj4+Cj4+PiB1cGRhdGVfcGxhbmUKPj4+IAkuLi4KPj4+IAktIG1peGVyX3VwZGF0ZV9wbGFuZQo+ Pj4gCQktIHZwX3ZpZGVvX2J1ZmZlciBvciBtaXhlcl9ncmFwaF9idWZmZXIKPj4+Cj4+PiBIb3dl dmVyLCB5b3UgcmVtb3ZlZCBtaXhlcl9jZmdfbGF5ZXIgY2FsbCBmcm9tIGFib3ZlIGZ1bmN0aW9u cy4KPj4gZXhhY3RseSwgYmVjYXVzZSB0aGF0IGlzIHRoZSB2ZXJ5IHB1cnBvc2Ugb2YgdGhpcyBw YXRjaC4KPj4KPj4KPj4+IFNvIG15IGludGVudGlvbiB3YXMgdG8ga2VlcCB0aGUgbW9kaWZlZCBt aXhlcl9jZmdfbGF5ZXIgY2FsbCBvbiB2cF92aWRlb19idWZmZXIgYW5kIG1peGVyX2dycGFoX2J1 ZmZlciBmdW5jdGlvbnMuCj4+IFRoYXQgaXMgbm90IG15IGludGVudGlvbi4gSSB3YW50IHRvIG1v dmUgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIHRvIHRoZQo+PiBhdG9taWMgZmx1c2ggc3RlcC4KPj4K Pj4KPj4+IG1peGVyX2F0b21pY19mbHVzaCBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHByb3BlciBw bGFjZSB0byBjYWxsIG1peGVyX2NmZ19sYXllciBmdW5jdGlvbiBldmVuIG1peGVyX3dpbl9yZXNl dC4KPj4gV2h5IGRvIHlvdSB0aGluayBzbz8gSSB0aGluayBpdCBtYWtlcyBwZXJmZWN0IHNlbnNl IHRvIHB1dCBpdCB0aGVyZS4gV2UKPj4gZmx1c2ggdGhlIG5ldyBjb25maWd1cmF0aW9uIHRvIHRo ZSBoYXJkd2FyZSByZWdpc3RlcnMgdGhlcmUuCj4+Cj4+Cj4+PiBGb3IgdGhpcyBJIG1lbnRpb25l ZCBhbHJlYWR5IGF0IHByZXZpb3VzIG15IGNvbW1lbnQsCj4+PiAiYXRvbWljX2ZsdXNoIGNhbGxi YWNrIHdpbGwgYmUgdXNlZCB0byBtYWtlIHN1cmUgcmVnaXN0ZXJzIHRvIGJlIHVwZGF0ZWQgdG8g dGhlIHJlYWwgaGFyZHdhcmUuIFNvIGNhbGxpbmcgbWl4ZXJfY2ZnX2xheWVyIGZ1bmN0aW9uIGhl cmUgd291bGRuJ3QgYmUgcmVhc29uYWJsZS4iCj4+IFlvdSdyZSBjb25mdXNpbmcgbWUuIFRoYXQg aXMgZXhhY3RseSB3aGF0IG15IHBhdGNoIGlzIGRvaW5nLiBJdCBtb3Zlcwo+PiBtb3JlIG9mIHRo ZSBhY3R1YWwgaGFyZHdhcmUgcmVnaXN0ZXIgdXBkYXRpbmcgdG8gdGhlIGF0b21pYyBmbHVzaCBz dGVwLgo+Pgo+Pgo+Pj4gQWxzbyBpdCB3b3VsZCBiZSByZWFzb25hYmxlIHRvIHJlbW92ZSBtaXhl cl9jZmdfbGF5ZXIgZnVuY3Rpb24gY2FsbCBmcm9tIG1peGVyX3dpbl9yZXNldCBmdW5jdGlvbi4K Pj4gV2h5IGlzIHRoYXQ/IEluIG1peGVyX3dpbl9yZXNldCgpIHdlIHdhbnQgdG8gYXBwbHkgYSBk ZWZhdWx0Cj4+IGNvbmZpZ3VyYXRpb24gdG8gdGhlIHZhcmlvdXMgcmVnaXN0ZXJzLiBIZW5jZSB3 ZSBzZXQgYWN0aXZlX3dpbmRvd3MgdG8KPj4gemVybyBhbmQgY2FsbCBtaXhlcl9jZmdfbGF5ZXIo KS4KPiAKPiBtaXhlcl93aW5fcmVzZXQgZnVuY3Rpb24gc2V0cyByZWdpc3RlcnMgdG8gZGVmYXVs dCB2YWx1ZSBiZWNhdXNlIG1peGVyIGRldmljZSBoYXMgbm8gcmVzZXQgSFcgcmVnaXN0ZXIgbGlr ZSB2cCBkaWQuCj4gU28gb3JpZ2luYWwgY29kZXMgc2V0IHRoZSByZWdpc3RlcnMgdG8gZGVmYXVs dCB2YWx1ZSBidXQgeW91IHJlbW92ZWQgdGhlbSBsaWtlIGJlbG93LAo+IC0gICAgICAgLyogcmVz ZXQgZGVmYXVsdCBsYXllciBwcmlvcml0eSAqLwo+IC0gICAgICAgbWl4ZXJfcmVnX3dyaXRlKHJl cywgTVhSX0xBWUVSX0NGRywgMCk7Cj4gCj4gCj4gLSAgICAgICAvKiBkaXNhYmxlIGFsbCBsYXll cnMgKi8KPiAtICAgICAgIG1peGVyX3JlZ193cml0ZW1hc2socmVzLCBNWFJfQ0ZHLCAwLCBNWFJf Q0ZHX0dSUDBfRU5BQkxFKTsKPiAtICAgICAgIG1peGVyX3JlZ193cml0ZW1hc2socmVzLCBNWFJf Q0ZHLCAwLCBNWFJfQ0ZHX0dSUDFfRU5BQkxFKTsKPiAtICAgICAgIGlmICh0ZXN0X2JpdChNWFJf QklUX1ZQX0VOQUJMRUQsICZjdHgtPmZsYWdzKSkKPiAtICAgICAgICAgICAgICAgbWl4ZXJfcmVn X3dyaXRlbWFzayhyZXMsIE1YUl9DRkcsIDAsIE1YUl9DRkdfVlBfRU5BQkxFKTsKPiAKPiBhbmQg Y2FsbGVkIG1peGVyX2NmZ19sYXllciBmdW5jdGlvbiB3aGljaCBjb25maWd1cmVzIG92ZXJsYXkg cmVnaXN0ZXJzIGFzIHByZXZpb3VzIHBsYW5lIHN0YXRlIGJ1dCBub3QgSFcgZGVmYXVsdCB2YWx1 ZXMuCk9LLCBsZXQgbWUgZXhwbGFpbiB5b3UuCgpUaGUgcHJldmlvdXMgY29kZSBkb2VzIHRoZSBm b2xsb3dpbmc6Ci0gd3JpdGUgemVybyB0byBNWFJfTEFZRVJfQ0ZHCi0gd3JpdGUgemVybyB0byB0 aGUgR1JQMF9FTkFCTEUsIEdSUDFfRU5BQkxFIGFuZCBtYXliZSBWUF9FTkFCTEUgYml0cyBvZgpN WFJfQ0ZHCgpBIGJyaWVmIG5vdGUgYWJvdXQgdGhlIE1YUl9MQVlFUl9DRkcgcmVnaXN0ZXIuIE9u bHkgdGhlIHJlZ2lvbiBbMTE6MF0gaXMKdG8gYmUgbWFuaXB1bGF0ZWQsIGJpdHMgWzMxOjEyXSBz aG91bGQgYmUgbGVmdCB6ZXJvLiBUaGUgcmVnaW9uIFsxMTowXQppcyB0aGUgbmV3bHkgaW50cm9k dWNlZCBtYXNrIE1YUl9MQVlFUl9DRkdfTUFTSy4KClRoZSBuZXcgY29kZSBkb2VzIHRoZSBmb2xs b3dpbmc6Ci0gc2V0IGFjdGl2ZV93aW5kb3dzIHRvIHplcm8KLSBpc3N1ZSBtaXhlcl9jZmdfbGF5 ZXIoKSwgd2hpY2ggbm93IGRvZXMgdGhlIGZvbGxvd2luZzoKICAtIGluaXRpYWxpemVzIGxvY2Fs IHZhcmlhYmxlcyBteHJfY2ZnLCBteHJfbGF5ZXJfY2ZnLCB2cF9lbmFibGUKICAtIGl0ZXJhdGVz IG92ZXIgcGxhbmVzCiAgLSBzaW5jZSBubyBwbGFuZSBpcyBlbmFibGVkLCBhbGwgdGhyZWUgdmFy aWFibGVzIGFib3ZlCiAgICBzdGF5IHplcm8KICAtIHplcm8gaXMgd3JpdHRlbiB0byBNWFJfQ0ZH IHdpdGggd3JpdGVtYXNrIE1YUl9DRkdfRU5BQkxFX01BU0sKICAtIHplcm8gaXMgd3JpdHRlbiB0 byBNWFJfTEFZRVJfQ0ZHIHdpdGggd3JpdGVtYXNrIE1YUl9MQVlFUl9DRkdfTUFTSwoKU28gaW4g dGhlIGVuZCwgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IGNvZGUgd3JpdGUgZXhhY3RseSB0aGUg c2FtZQp0aGluZyBpbnRvIE1YUl9DRkcgYW5kIE1YUl9MQVlFUl9DRkcuCgpJIGhvcGUgdGhpcyBj bGVhcnMgdGhpbmdzIHVwISA6LSkKCgo+IFdpdGggdGhpcyBwYXRjaCBkbyB5b3Uga25vdyB0aGF0 IGhvdyBtYW55IHRpbWVzIG1peGVyX2NmZ19sYXllciBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3 ZSByZXF1ZXN0ZWQgYXRvbWljIG9wZXJhdGlvbj8KRm9yIHlvdXIgdHlwaWNhbCBvcGVyYXRpb24s IHdoZXJlIG1peGVyX3tlbmFibGUsZGlzYWJsZX0oKSBpcyBub3QKY2FsbGVkLCBpdCBzaG91bGQg bm93IGJlIGp1c3Qgb25jZSAoaW4gbWl4ZXJfYXRvbWljX2ZsdXNoKCkpLgoKCldpdGggYmVzdCB3 aXNoZXMsClRvYmlhcwoKCj4+IFdpdGggYmVzdCB3aXNoZXMsCj4+IFRvYmlhcwo+Pgo+Pgo+Pgo+ Pj4+IEZvciBjb21wbGV0ZW5lc3MgSSd2ZSBhbHNvIGNoZWNrZWQgZHJtX21vZGVfc2V0Y3J0Yygp LCB0aGUgb3RoZXIgbGVnYWN5Cj4+Pj4gRFJNIGNhbGwgdGhhdCBtYW5pcHVsYXRlcyB0aGUgcHJp bWFyeSBwbGFuZS4KPj4+Pgo+Pj4+IEl0IGdvZXMgdGhlIGZvbGxvd2luZyByb3V0ZToKPj4+PiAt IGRybV9tb2RlX3NldGNydGMKPj4+PiAgIC0gZHJtX21vZGVfc2V0X2NvbmZpZ19pbnRlcm5hbCgp Cj4+Pj4gICAgIC0gc2V0X2NvbmZpZygpIChzZXQgaW4gZXh5bm9zX2NydGNfZnVuY3MgaW4gZXh5 bm9zX2RybV9jcnRjLmMpCj4+Pj4KPj4+PiBBbHNvIGhlcmU6IC5zZXRfY29uZmlnID0gZHJtX2F0 b21pY19oZWxwZXJfc2V0X2NvbmZpZwo+Pj4+Cj4+Pj4gQm90aCBEUk1fSU9DVExfTU9ERV9TRVRQ TEFORSBhbmQgRFJNX0lPQ1RMX01PREVfQ1JUQyBnbyB0aGUgYXRvbWljCj4+Pj4gcm91dGUsIHNv IHRoZSBwYXRjaCBpcyBmaW5lIHRoaXMgd2F5Lgo+Pj4+Cj4+Pj4gQElua2k6IENhbiB5b3Ugc3Rp bGwgcXVldWUgdGhpcyB1cCBmb3IgNC45Lnk/Cj4+Pj4KPj4+Pgo+Pj4+IFdpdGggYmVzdCB3aXNo ZXMsCj4+Pj4gVG9iaWFzCj4+Pj4KPj4+Pgo+Pj4+Pgo+Pj4+PiBSZWdhcmRzCj4+Pj4+IEFuZHJ6 ZWoKPj4+Pj4KPj4+Pgo+Pj4+IC0tCj4+Pj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6 IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXNhbXN1bmctc29jIiBpbgo+Pj4+IHRo ZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4+Pj4gTW9y ZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5m by5odG1sCj4+Pj4KPj4+Pgo+Pj4+Cj4+PiAtLQo+Pj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlz IGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXNhbXN1bmctc29jIiBpbgo+ Pj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKPj4+ IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21v LWluZm8uaHRtbAo+Pj4KPj4KPj4KPj4KPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=