From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [v11 1/4] drm: Add HDMI colorspace property Date: Fri, 8 Feb 2019 14:52:39 +0200 Message-ID: <20190208125239.GQ20097@intel.com> References: <1549382617-8951-1-git-send-email-uma.shankar@intel.com> <1549382617-8951-2-git-send-email-uma.shankar@intel.com> <20190205163133.GS20097@intel.com> <20190205181307.GV20097@intel.com> <20190207190324.GM20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: "intel-gfx@lists.freedesktop.org" , "Shankar, Uma" , "Syrjala, Ville" , "Lankhorst, Maarten" , "dri-devel@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBGZWIgMDgsIDIwMTkgYXQgMTI6MzY6MjVQTSArMDAwMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gU2hhc2hhbmsKPiAKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4gPiBGcm9tOiBJbnRlbC1nZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0 cy5mcmVlZGVza3RvcC5vcmddIE9uIEJlaGFsZiBPZgo+ID4gU2hhbmthciwgVW1hCj4gPiBTZW50 OiBGcmlkYXksIEZlYnJ1YXJ5IDgsIDIwMTkgNTo0NSBQTQo+ID4gVG86IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogaW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgU3lyamFsYSwgVmlsbGUgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29t PjsgZHJpLQo+ID4gZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBMYW5raG9yc3QsIE1hYXJ0 ZW4gPG1hYXJ0ZW4ubGFua2hvcnN0QGludGVsLmNvbT4KPiA+IFN1YmplY3Q6IFJlOiBbSW50ZWwt Z2Z4XSBbdjExIDEvNF0gZHJtOiBBZGQgSERNSSBjb2xvcnNwYWNlIHByb3BlcnR5Cj4gPiAKPiA+ ID4+ID4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPj4gPj4gPkZyb206IFZpbGxl IFN5cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ID4gPj4g Pj4gPlNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDUsIDIwMTkgMTA6MDIgUE0KPiA+ID4+ID4+ID5U bzogU2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPiA+PiA+PiA+Q2M6IGlu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiA+PiA+PiA+ZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgU3lyamFsYSwgVmlsbGUKPiA+ID4+ID4+ID48dmlsbGUuc3lyamFs YUBpbnRlbC5jb20+OyBMYW5raG9yc3QsIE1hYXJ0ZW4KPiA+ID4+ID4+ID48bWFhcnRlbi5sYW5r aG9yc3RAaW50ZWwuY29tPgo+ID4gPj4gPj4gPlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbdjEx IDEvNF0gZHJtOiBBZGQgSERNSSBjb2xvcnNwYWNlCj4gPiA+PiA+PiA+cHJvcGVydHkKPiA+ID4+ ID4+ID4KPiA+ID4+ID4+ID5PbiBUdWUsIEZlYiAwNSwgMjAxOSBhdCAwOTozMzozNFBNICswNTMw LCBVbWEgU2hhbmthciB3cm90ZToKPiA+ID4+ID4+ID4+IENyZWF0ZSBhIG5ldyBjb25uZWN0b3Ig cHJvcGVydHkgdG8gcHJvZ3JhbSBjb2xvcnNwYWNlIHRvIHNpbmsgZGV2aWNlcy4KPiA+ID4+ID4+ ID4+IE1vZGVybiBzaW5rIGRldmljZXMgc3VwcG9ydCBtb3JlIHRoYW4gMSB0eXBlIG9mIGNvbG9y c3BhY2UgbGlrZQo+ID4gPj4gPj4gPj4gNjAxLCA3MDksIEJUMjAyMCBldGMuIFRoaXMgaGVscHMg dG8gc3dpdGNoIGJhc2VkIG9uIGNvbnRlbnQKPiA+ID4+ID4+ID4+IHR5cGUgd2hpY2ggaXMgdG8g YmUgZGlzcGxheWVkLiBUaGUgZGVjaXNpb24gbGllcyB3aXRoCj4gPiA+PiA+PiA+PiBjb21wb3Np dG9ycyBhcyB0byBpbiB3aGljaCBzY2VuYXJpb3MsIGEgcGFydGljdWxhciBjb2xvcnNwYWNlIHdp bGwgYmUgcGlja2VkLgo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+IFRoaXMgd2lsbCBiZSBoZWxw ZnVsIG1vc3RseSB0byBzd2l0Y2ggdG8gaGlnaGVyIGdhbXV0Cj4gPiA+PiA+PiA+PiBjb2xvcnNw YWNlcyBsaWtlCj4gPiA+PiA+PiA+PiBCVDIwMjAgd2hlbiB0aGUgbWVkaWEgY29udGVudCBpcyBl bmNvZGVkIGFzIEJUMjAyMC4gVGhlcmVieQo+ID4gPj4gPj4gPj4gZ2l2aW5nIGEgZ29vZCB2aXN1 YWwgZXhwZXJpZW5jZSB0byB1c2Vycy4KPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiBUaGUgZXhw ZWN0YXRpb24gZnJvbSB1c2Vyc3BhY2UgaXMgdGhhdCBpdCBzaG91bGQgcGFyc2UgdGhlIEVESUQK PiA+ID4+ID4+ID4+IGFuZCBnZXQgc3VwcG9ydGVkIGNvbG9yc3BhY2VzLiBVc2UgdGhpcyBwcm9w ZXJ0eSBhbmQgc3dpdGNoIHRvCj4gPiA+PiA+PiA+PiB0aGUgb25lIHN1cHBvcnRlZC4gU2luayBz dXBwb3J0ZWQgY29sb3JzcGFjZXMgc2hvdWxkIGJlCj4gPiA+PiA+PiA+PiByZXRyaWV2ZWQgYnkg dXNlcnNwYWNlIGZyb20gRURJRCBhbmQgZHJpdmVyIHdpbGwgbm90IGV4cGxpY2l0bHkKPiA+ID4+ ID4+ID4+IGV4cG9zZQo+ID4gPnRoZW0uCj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4gPj4gQmFzaWNh bGx5IHRoZSBleHBlY3RhdGlvbiBmcm9tIHVzZXJzcGFjZSBpczoKPiA+ID4+ID4+ID4+ICAtIFNl dCB1cCBDUlRDIERFR0FNTUEvQ1RNL0dBTU1BIHRvIGNvbnZlcnQgdG8gc29tZSBzaW5rCj4gPiA+ PiA+PiA+PiAgICBjb2xvcnNwYWNlCj4gPiA+PiA+PiA+PiAgLSBTZXQgdGhpcyBuZXcgcHJvcGVy dHkgdG8gbGV0IHRoZSBzaW5rIGtub3cgd2hhdCBpdAo+ID4gPj4gPj4gPj4gICAgY29udmVydGVk IHRoZSBDUlRDIG91dHB1dCB0by4KPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiB2MjogQWRkcmVz c2VkIE1hYXJ0ZW4gYW5kIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzLiBFbmhhbmNlZCB0aGUKPiA+ ID4+ID4+ID4+IGNvbG9yc3BhY2UgZW51bSB0byBpbmNvcnBvcmF0ZSBib3RoIEhETUkgYW5kIERQ IHN1cHBvcnRlZAo+ID4gPmNvbG9yc3BhY2VzLgo+ID4gPj4gPj4gPj4gQWxzbywgYWRkZWQgYSBk ZWZhdWx0IG9wdGlvbiBmb3IgY29sb3JzcGFjZS4KPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiB2 MzogUmVtb3ZlZCBBZG9iZSByZWZlcmVuY2VzIGZyb20gZW51bSBkZWZpbml0aW9ucyBhcyBwZXIK PiA+ID4+ID4+ID4+IFZpbGxlLCBIYW5zIFZlcmt1aWwgYW5kIEpvbmFzIEthcmxtYW4gc3VnZ2Vz dGlvbnMuIENoYW5nZWQKPiA+ID4+ID4+ID4+IERlZmF1bHQgdG8gYW4gdW5zZXQgc3RhdGUgd2hl cmUgZHJpdmVyIHdpbGwgYXNzaWduIHRoZQo+ID4gPj4gPj4gPj4gY29sb3JzcGFjZSBpcyBub3Qg Y2hvc2VuIGJ5IHVzZXIsIHN1Z2dlc3RlZCBieSBWaWxsZSBhbmQKPiA+ID4+ID4+ID4+IE1hYXJ0 ZW4uIEFkZHJlc3NlZCBvdGhlciBtaXNjIHJldmlldyBjb21tZW50cyBmcm9tIE1hYXJ0ZW4uCj4g PiA+PiA+PiA+PiBTcGxpdCB0aGUgY2hhbmdlcyB0byBoYXZlIHNlcGFyYXRlIGNvbG9yc3BhY2Ug cHJvcGVydHkgZm9yIERQIGFuZCBIRE1JLgo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+IHY0OiBB ZGRyZXNzZWQgQ2hyaXMgYW5kIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzLCBhbmQgY3JlYXRlZCBh Cj4gPiA+PiA+PiA+PiBjb21tb24gY29sb3JzcGFjZSBwcm9wZXJ0eSBmb3IgRFAgYW5kIEhETUks IGZpbHRlcmVkIHRoZSBsaXN0Cj4gPiA+PiA+PiA+PiBiYXNlZCBvbiB0aGUgY29sb3JzcGFjZXMg c3VwcG9ydGVkIGJ5IHRoZSByZXNwZWN0aXZlIHByb3RvY29sIHN0YW5kYXJkLgo+ID4gPj4gPj4g Pj4KPiA+ID4+ID4+ID4+IHY1OiBNYWRlIHRoZSBwcm9wZXJ0eSBjcmVhdGlvbiBoZWxwZXIgYWNj ZXB0IGVudW0gbGlzdCBiYXNlZCBvbgo+ID4gPj4gPj4gPj4gcGxhdGZvcm0gY2FwYWJpbHRpZXMg YXMgc3VnZ2VzdGVkIGJ5IFNoYXNoYW5rLiBDb25zb2xpZGF0ZWQKPiA+ID4+ID4+ID4+IEhETUkg YW5kIERQIHByb3BlcnR5IGNyZWF0aW9uIGluIHRoZSBjb21tb24gaGVscGVyLgo+ID4gPj4gPj4g Pj4KPiA+ID4+ID4+ID4+IHY2OiBBZGRyZXNzZWQgU2hhc2hhbmsncyByZXZpZXcgY29tbWVudHMu Cj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4gPj4gdjc6IEFkZGVkIGRlZmluZXMgaW5zdGVhZCBvZiBl bnVtIGluIHVhcGkgYXMgcGVyIEJyaWFuCj4gPiA+PiA+PiA+PiBTdGFya2V5J3Mgc3VnZ2VzdGlv biBpbiBvcmRlciB0byBnbyB3aXRoIHN0cmluZyBtYXRjaGluZyBhdCB1c2Vyc3BhY2UuCj4gPiA+ PiA+PiA+PiBVcGRhdGVkIHRoZSBjb21taXQgbWVzc2FnZSB0byBhZGQgbW9yZSBkZXRhaWxzIGFz IHdlbGwga2VybmVsIGRvY3MuCj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4gPj4gdjg6IEFkZHJlc3Nl ZCBNYWFydGVuJ3MgcmV2aWV3IGNvbW1lbnRzLgo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+IHY5 OiBSZW1vdmVkIG1hY3JvIGRlZmluZXMgZnJvbSB1YXBpIGFzIHBlciBCcmlhbiBTdGFya2V5IGFu ZAo+ID4gPj4gPj4gPj4gRGFuaWVsIFN0b25lJ3MgY29tbWVudHMgYW5kIG1vdmVkIHRvIGRybSBp bmNsdWRlIGZpbGUuIE1vdmVkCj4gPiA+PiA+PiA+PiBiYWNrIHRvIG9sZGVyIGRlc2lnbiB3aXRo IGV4cG9zaW5nIGFsbCBIRE1JIGNvbG9yc3BhY2VzIHRvCj4gPiA+PiA+PiA+PiB1c2Vyc3BhY2Ug c2luY2UgaW5mb2ZyYW1lIGNhcGFiaWxpdHkgaXMgdGhlcmUgZXZlbiBvbiBsZWdhY3kKPiA+ID4+ ID4+ID4+IHBsYXRmb3JtcywgYXMgcGVyIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzLgo+ID4gPj4g Pj4gPj4KPiA+ID4+ID4+ID4+IHYxMDogRml4ZWQgc3BhcnNlIHdhcm5pbmdzLCB1cGRhdGVkIHRo ZSBSQiBmcm9tIE1hYXJ0ZW4gYW5kIEphbmkncyBhY2suCj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4g Pj4gdjExOiBBZGRyZXNzZWQgVmlsbGUncyByZXZpZXcgY29tbWVudHMuIFVwZGF0ZWQgdGhlIE1h Y3JvCj4gPiA+PiA+PiA+PiBuYW1pbmcgYW5kIGFkZGVkIERDSS1QMyBjb2xvcnNwYWNlIGFzIHdl bGwgZGVmaW5lZCBpbiBDRUEgODYxLkcgc3BlYy4KPiA+ID4+ID4+ID4+Cj4gPiA+PiA+PiA+PiBT aWduZWQtb2ZmLWJ5OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+ID4gPj4g Pj4gPj4gQWNrZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPiA+ PiA+PiA+PiBSZXZpZXdlZC1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50 ZWwuY29tPgo+ID4gPj4gPj4gPj4gUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0Cj4gPiA+ PiA+PiA+PiA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gPj4gPj4gPj4g LS0tCj4gPiA+PiA+PiA+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jIHwgIDQg KysKPiA+ID4+ID4+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jICAgfCA3OAo+ ID4gPj4gPj4gPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPj4g Pj4gPj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICB8IDUwICsrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4+ID4+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRp b25zKCspCj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4gPj4gPj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY191YXBpLmMKPiA+ID4+ID4+ID4+IGluZGV4IDlhMWY0MWEuLjliNWQ0NGYgMTAwNjQ0 Cj4gPiA+PiA+PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+ ID4+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4gPj4g Pj4gPj4gQEAgLTc0Niw2ICs3NDYsOCBAQCBzdGF0aWMgaW50Cj4gPiA+PiA+PiA+PiBkcm1fYXRv bWljX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkoc3RydWN0Cj4gPiA+PiA+PiA+ZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ID4gPj4gPj4gPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ID4gPj4gPj4g Pj4gIAkJfQo+ID4gPj4gPj4gPj4gIAkJc3RhdGUtPmNvbnRlbnRfcHJvdGVjdGlvbiA9IHZhbDsK PiA+ID4+ID4+ID4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPmNvbG9yc3Bh Y2VfcHJvcGVydHkpIHsKPiA+ID4+ID4+ID4+ICsJCXN0YXRlLT5jb2xvcnNwYWNlID0gdmFsOwo+ ID4gPj4gPj4gPj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+d3JpdGViYWNrX2Zi X2lkX3Byb3BlcnR5KSB7Cj4gPiA+PiA+PiA+PiAgCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9Cj4gPiA+ZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChkZXYsCj4gPiA+PiA+PiA+TlVMTCwgdmFs KTsKPiA+ID4+ID4+ID4+ICAJCWludCByZXQgPQo+ID4gPmRybV9hdG9taWNfc2V0X3dyaXRlYmFj a19mYl9mb3JfY29ubmVjdG9yKHN0YXRlLAo+ID4gPj4gPj4gPmZiKTsgQEAKPiA+ID4+ID4+ID4+ IC04MTQsNiArODE2LDggQEAgc3RhdGljIGludAo+ID4gPj4gPj4gPj4gZHJtX2F0b21pY19jb25u ZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdAo+ID4gPj4gPj4gPmRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ID4+ID4+ID4+ICAJCSp2YWwgPSBzdGF0ZS0+cGljdHVyZV9hc3BlY3RfcmF0aW87 Cj4gPiA+PiA+PiA+PiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5jb250ZW50X3R5 cGVfcHJvcGVydHkpIHsKPiA+ID4+ID4+ID4+ICAJCSp2YWwgPSBzdGF0ZS0+Y29udGVudF90eXBl Owo+ID4gPj4gPj4gPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+Y29sb3Jz cGFjZV9wcm9wZXJ0eSkgewo+ID4gPj4gPj4gPj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xvcnNwYWNl Owo+ID4gPj4gPj4gPj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+c2NhbGlu Z19tb2RlX3Byb3BlcnR5KSB7Cj4gPiA+PiA+PiA+PiAgCQkqdmFsID0gc3RhdGUtPnNjYWxpbmdf bW9kZTsKPiA+ID4+ID4+ID4+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PQo+ID4gPj4gPj4gPj4g Y29ubmVjdG9yLT5jb250ZW50X3Byb3RlY3Rpb25fcHJvcGVydHkpCj4gPiA+PiA+PiA+PiB7IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPiA+PiA+PiA+PiBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgaW5kZXggODQ3NTM5Ni4uNDMwOTg3MyAx MDA2NDQKPiA+ID4+ID4+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMK PiA+ID4+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ID4+ ID4+ID4+IEBAIC04MjYsNiArODI2LDMzIEBAIGludAo+ID4gPj4gPj4gPj4gZHJtX2Rpc3BsYXlf aW5mb19zZXRfYnVzX2Zvcm1hdHMoc3RydWN0Cj4gPiA+PiA+PiA+PiBkcm1fZGlzcGxheV9pbmZv ICppbmZvLCAgfTsKPiA+ID4+ID4+ID4+IERSTV9FTlVNX05BTUVfRk4oZHJtX2dldF9jb250ZW50 X3Byb3RlY3Rpb25fbmFtZSwKPiA+ID4+ID4+ID5kcm1fY3BfZW51bV9saXN0KQo+ID4gPj4gPj4g Pj4KPiA+ID4+ID4+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBo ZG1pX2NvbG9yc3BhY2VzW10gPSB7Cj4gPiA+PiA+PiA+PiArCS8qIEZvciBEZWZhdWx0IGNhc2Us IGRyaXZlciB3aWxsIHNldCB0aGUgY29sb3JzcGFjZSAqLwo+ID4gPj4gPj4gPj4gKwl7IERSTV9N T0RFX0NPTE9SSU1FVFJZX0RFRkFVTFQsICJEZWZhdWx0IiB9LAo+ID4gPj4gPj4gPj4gKwkvKiBT dGFuZGFyZCBEZWZpbml0aW9uIENvbG9yaW1ldHJ5IGJhc2VkIG9uIENFQSA4NjEgKi8KPiA+ID4+ ID4+ID4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9TTVBURV8xNzBNLCAiU01QVEVfMTcwTSIg fSwKPiA+ID4+ID4+ID4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDcwOSwgIkJUNzA5IiB9 LAo+ID4gPj4gPj4gPj4gKwkvKiBTdGFuZGFyZCBEZWZpbml0aW9uIENvbG9yaW1ldHJ5IGJhc2Vk IG9uIElFQyA2MTk2Ni0yLTQgKi8KPiA+ID4+ID4+ID4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRS WV9YVllDQ182MDEsICJYVllDQ182MDEiIH0sCj4gPiA+PiA+PiA+PiArCS8qIEhpZ2ggRGVmaW5p dGlvbiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJRUMgNjE5NjYtMi00ICovCj4gPiA+PiA+PiA+PiAr CXsgRFJNX01PREVfQ09MT1JJTUVUUllfWFZZQ0NfNzA5LCAiWFZZQ0NfNzA5IiB9LAo+ID4gPj4g Pj4gPj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJRUMgNjE5NjYtMi0xL0FtZW5kbWVudCAx ICovCj4gPiA+PiA+PiA+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfU1lDQ182MDEsICJTWUND XzYwMSIgfSwKPiA+ID4+ID4+ID4+ICsJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2 LTItNSBbMzNdICovCj4gPiA+PiA+PiA+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfT1BZQ0Nf NjAxLCAib3BZQ0NfNjAxIiB9LAo+ID4gPj4gPj4gPj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBv biBJRUMgNjE5NjYtMi01ICovCj4gPiA+PiA+PiA+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllf T1BSR0IsICJvcFJHQiIgfSwKPiA+ID4+ID4+ID4+ICsJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24g SVRVLVIgQlQuMjAyMCAqLwo+ID4gPj4gPj4gPj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX0JU MjAyMF9ZQ0MsICJCVDIwMjBfWUNDIiB9LAo+ID4gPj4gPj4gPj4gKwkvKiBDb2xvcmltZXRyeSBi YXNlZCBvbiBJVFUtUiBCVC4yMDIwICovCj4gPiA+PiA+PiA+PiArCXsgRFJNX01PREVfQ09MT1JJ TUVUUllfQlQyMDIwX1JHQiwgIkJUMjAyMF9SR0IiIH0sCj4gPiA+PiA+PiA+PiArCS8qIENvbG9y aW1ldHJ5IGJhc2VkIG9uIElUVS1SIEJULjIwMjAgKi8KPiA+ID4+ID4+ID4+ICsJeyBEUk1fTU9E RV9DT0xPUklNRVRSWV9CVDIwMjBfQ1lDQywgIkJUMjAyMF9DWUNDIiB9LAo+ID4gPj4gPj4gPj4g KwkvKiBBZGRlZCBhcyBwYXJ0IG9mIEFkZGl0aW9uYWwgQ29sb3JpbWV0cnkgRXh0ZW5zaW9uIGlu IDg2MS5HICovCj4gPiA+PiA+PiA+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfRENJX1AzX1JH Ql9ENjUsICJEQ0ktCj4gPiA+UDNfUkdCX0Q2NSIgfSwKPiA+ID4+ID4+ID4+ICsJeyBEUk1fTU9E RV9DT0xPUklNRVRSWV9EQ0lfUDNfUkdCX1RIRUFURVIsICJEQ0ktCj4gPiA+PiA+PiA+UDNfUkdC X1RoZWF0ZXIiIH0sCj4gPiA+PiA+PiA+PiArfTsKPiA+ID4+ID4+ID4+ICsKPiA+ID4+ID4+ID4+ ICAvKioKPiA+ID4+ID4+ID4+ICAgKiBET0M6IHN0YW5kYXJkIGNvbm5lY3RvciBwcm9wZXJ0aWVz Cj4gPiA+PiA+PiA+PiAgICoKPiA+ID4+ID4+ID4+IEBAIC0xNTQ4LDYgKzE1NzUsNTcgQEAgaW50 Cj4gPiA+PiA+PiA+PiBkcm1fbW9kZV9jcmVhdGVfYXNwZWN0X3JhdGlvX3Byb3BlcnR5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+PiA+PiA+PiBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2Ny ZWF0ZV9hc3BlY3RfcmF0aW9fcHJvcGVydHkpOwo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+ICAv KioKPiA+ID4+ID4+ID4+ICsgKiBET0M6IHN0YW5kYXJkIGNvbm5lY3RvciBwcm9wZXJ0aWVzCj4g PiA+PiA+PiA+PiArICoKPiA+ID4+ID4+ID4+ICsgKiBDb2xvcnNwYWNlOgo+ID4gPj4gPj4gPj4g KyAqICAgICBkcm1fbW9kZV9jcmVhdGVfY29sb3JzcGFjZV9wcm9wZXJ0eSAtIGNyZWF0ZSBjb2xv cnNwYWNlCj4gPiA+cHJvcGVydHkKPiA+ID4+ID4+ID4+ICsgKiAgICAgVGhpcyBwcm9wZXJ0eSBo ZWxwcyBzZWxlY3QgYSBzdWl0YWJsZSBjb2xvcnNwYWNlIGJhc2VkIG9uIHRoZSBzaW5rCj4gPiA+ PiA+PiA+PiArICogICAgIGNhcGFiaWxpdHkuIE1vZGVybiBzaW5rIGRldmljZXMgc3VwcG9ydCB3 aWRlciBnYW11dCBsaWtlIEJUMjAyMC4KPiA+ID4+ID4+ID4+ICsgKiAgICAgVGhpcyBoZWxwcyBz d2l0Y2ggdG8gQlQyMDIwIG1vZGUgaWYgdGhlIEJUMjAyMCBlbmNvZGVkIHZpZGVvCj4gPiA+c3Ry ZWFtCj4gPiA+PiA+PiA+PiArICogICAgIGlzIGJlaW5nIHBsYXllZCBieSB0aGUgdXNlciwgc2Ft ZSBmb3IgYW55IG90aGVyIGNvbG9yc3BhY2UuIFRoZXJlYnkKPiA+ID4+ID4+ID4+ICsgKiAgICAg Z2l2aW5nIGEgZ29vZCB2aXN1YWwgZXhwZXJpZW5jZSB0byB1c2Vycy4KPiA+ID4+ID4+ID4+ICsg Kgo+ID4gPj4gPj4gPj4gKyAqICAgICBUaGUgZXhwZWN0YXRpb24gZnJvbSB1c2Vyc3BhY2UgaXMg dGhhdCBpdCBzaG91bGQgcGFyc2UgdGhlIEVESUQKPiA+ID4+ID4+ID4+ICsgKiAgICAgYW5kIGdl dCBzdXBwb3J0ZWQgY29sb3JzcGFjZXMuIFVzZSB0aGlzIHByb3BlcnR5IGFuZCBzd2l0Y2ggdG8g dGhlCj4gPiA+PiA+PiA+PiArICogICAgIG9uZSBzdXBwb3J0ZWQuIFNpbmsgc3VwcG9ydGVkIGNv bG9yc3BhY2VzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkKPiA+ID4+ID4+ID4+ICsgKiAgICAgdXNl cnNwYWNlIGZyb20gRURJRCBhbmQgZHJpdmVyIHdpbGwgbm90IGV4cGxpY2l0bHkgZXhwb3NlIHRo ZW0uCj4gPiA+PiA+PiA+PiArICoKPiA+ID4+ID4+ID4+ICsgKiAgICAgQmFzaWNhbGx5IHRoZSBl eHBlY3RhdGlvbiBmcm9tIHVzZXJzcGFjZSBpczoKPiA+ID4+ID4+ID4+ICsgKiAgICAgIC0gU2V0 IHVwIENSVEMgREVHQU1NQS9DVE0vR0FNTUEgdG8gY29udmVydCB0byBzb21lIHNpbmsKPiA+ID4+ ID4+ID4+ICsgKiAgICAgICAgY29sb3JzcGFjZQo+ID4gPj4gPj4gPj4gKyAqICAgICAgLSBTZXQg dGhpcyBuZXcgcHJvcGVydHkgdG8gbGV0IHRoZSBzaW5rIGtub3cgd2hhdCBpdAo+ID4gPj4gPj4g Pj4gKyAqICAgICAgICBjb252ZXJ0ZWQgdGhlIENSVEMgb3V0cHV0IHRvLgo+ID4gPj4gPj4gPj4g KyAqICAgICAgLSBUaGlzIHByb3BlcnR5IGlzIGp1c3QgdG8gaW5mb3JtIHNpbmsgd2hhdCBjb2xv cnNwYWNlCj4gPiA+PiA+PiA+PiArICogICAgICAgIHNvdXJjZSBpcyB0cnlpbmcgdG8gZHJpdmUu Cj4gPiA+PiA+PiA+PiArICoKPiA+ID4+ID4+ID4+ICsgKiBDYWxsZWQgYnkgYSBkcml2ZXIgdGhl IGZpcnN0IHRpbWUgaXQncyBuZWVkZWQsIG11c3QgYmUKPiA+ID4+ID4+ID4+ICthdHRhY2hlZCB0 byBkZXNpcmVkCj4gPiA+PiA+PiA+PiArICogY29ubmVjdG9ycy4KPiA+ID4+ID4+ID4+ICsgKi8K PiA+ID4+ID4+ID4+ICtpbnQgZHJtX21vZGVfY3JlYXRlX2NvbG9yc3BhY2VfcHJvcGVydHkoc3Ry dWN0IGRybV9jb25uZWN0b3IKPiA+ID4+ID4+ID4+ICsqY29ubmVjdG9yKSB7Cj4gPiA+PiA+PiA+ PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiA+ID4+ID4+ID4+ ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKPiA+ID4+ID4+ID4+ICsKPiA+ID4+ID4+ID4+ ICsJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+ID5EUk1fTU9ERV9DT05ORUNU T1JfSERNSUEgfHwKPiA+ID4+ID4+ID4+ICsJICAgIGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUg PT0KPiA+ID5EUk1fTU9ERV9DT05ORUNUT1JfSERNSUIpIHsKPiA+ID4+ID4+ID4+ICsJCXByb3Ag PSBkcm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LAo+ID4gPj4gPj4gPkRSTV9NT0RFX1BST1Bf RU5VTSwKPiA+ID4+ID4+ID4+ICsJCQkJCQkiQ29sb3JzcGFjZSIsCj4gPiA+PiA+PiA+PiArCQkJ CQkJaGRtaV9jb2xvcnNwYWNlcywKPiA+ID4+ID4+ID4+ICsKPiA+ID4+ID4+ID4JQVJSQVlfU0la RShoZG1pX2NvbG9yc3BhY2VzKSk7Cj4gPiA+PiA+PiA+PiArCQlpZiAoIXByb3ApCj4gPiA+PiA+ PiA+PiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+PiA+PiA+PiArCX0gZWxzZSB7Cj4gPiA+PiA+ PiA+PiArCQlEUk1fREVCVUdfS01TKCJDb2xvcnNwYWNlIHByb3BlcnR5IG5vdAo+ID4gPnN1cHBv cnRlZFxuIik7Cj4gPiA+PiA+PiA+PiArCQlyZXR1cm4gMDsKPiA+ID4+ID4+ID4+ICsJfQo+ID4g Pj4gPj4gPj4gKwo+ID4gPj4gPj4gPj4gKwljb25uZWN0b3ItPmNvbG9yc3BhY2VfcHJvcGVydHkg PSBwcm9wOwo+ID4gPj4gPj4gPj4gKwo+ID4gPj4gPj4gPj4gKwlyZXR1cm4gMDsKPiA+ID4+ID4+ ID4+ICt9Cj4gPiA+PiA+PiA+PiArRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9jcmVhdGVfY29sb3Jz cGFjZV9wcm9wZXJ0eSk7Cj4gPiA+PiA+PiA+PiArCj4gPiA+PiA+PiA+PiArLyoqCj4gPiA+PiA+ PiA+PiAgICogZHJtX21vZGVfY3JlYXRlX2NvbnRlbnRfdHlwZV9wcm9wZXJ0eSAtIGNyZWF0ZSBj b250ZW50IHR5cGUKPiA+ID5wcm9wZXJ0eQo+ID4gPj4gPj4gPj4gICAqIEBkZXY6IERSTSBkZXZp Y2UKPiA+ID4+ID4+ID4+ICAgKgo+ID4gPj4gPj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaAo+ID4gPj4gPj4gPj4gYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9y LmggaW5kZXggOTk0MTYxMy4uNThkYjY2ZSAxMDA2NDQKPiA+ID4+ID4+ID4+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gPj4gPj4gPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2Nvbm5lY3Rvci5oCj4gPiA+PiA+PiA+PiBAQCAtMjUzLDYgKzI1Myw0MiBAQCBlbnVtIGRybV9w YW5lbF9vcmllbnRhdGlvbiB7Cj4gPiA+PiA+PiA+PiAgCURSTV9NT0RFX1BBTkVMX09SSUVOVEFU SU9OX1JJR0hUX1VQLAo+ID4gPj4gPj4gPj4gIH07Cj4gPiA+PiA+PiA+Pgo+ID4gPj4gPj4gPj4g Ky8qCj4gPiA+PiA+PiA+PiArICogVGhpcyBpcyBhIGNvbnNvbGlkYXRlZCBjb2xvcmltZXRyeSBs aXN0IHN1cHBvcnRlZCBieSBIRE1JCj4gPiA+PiA+PiA+PiArYW5kCj4gPiA+PiA+PiA+PiArICog RFAgcHJvdG9jb2wgc3RhbmRhcmQuIFRoZSByZXNwZWN0aXZlIGNvbm5lY3RvcnMgd2lsbAo+ID4g Pj4gPj4gPj4gK3JlZ2lzdGVyCj4gPiA+PiA+PiA+PiArICogYSBwcm9wZXJ0eSB3aXRoIHRoZSBz dWJzZXQgb2YgdGhpcyBsaXN0IChzdXBwb3J0ZWQgYnkgdGhhdAo+ID4gPj4gPj4gPj4gKyAqIHJl c3BlY3RpdmUgcHJvdG9jb2wpLiBVc2Vyc3BhY2Ugd2lsbCBzZXQgdGhlIGNvbG9yc3BhY2UKPiA+ ID4+ID4+ID4+ICt0aHJvdWdoCj4gPiA+PiA+PiA+PiArICogYSBjb2xvcnNwYWNlIHByb3BlcnR5 IHdoaWNoIHdpbGwgYmUgY3JlYXRlZCBhbmQgZXhwb3NlZCB0bwo+ID4gPj4gPj4gPj4gKyAqIHVz ZXJzcGFjZS4KPiA+ID4+ID4+ID4+ICsgKi8KPiA+ID4+ID4+ID4+ICsKPiA+ID4+ID4+ID4+ICsv KiBGb3IgRGVmYXVsdCBjYXNlLCBkcml2ZXIgd2lsbCBzZXQgdGhlIGNvbG9yc3BhY2UgKi8KPiA+ ID4+ID4+ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0RFRkFVTFQJCQkwCj4gPiA+ PiA+PiA+PiArLyogQ0VBIDg2MSBOb3JtYWwgQ29sb3JpbWV0cnkgb3B0aW9ucyAqLwo+ID4gPj4g Pj4gPj4gKyNkZWZpbmUgRFJNX01PREVfQ09MT1JJTUVUUllfTk9fREFUQQkJCTAKPiA+ID4+ID4+ ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX1NNUFRFXzE3ME0KPiA+ID4+ID4JMQo+ ID4gPj4gPj4gPj4gKyNkZWZpbmUgRFJNX01PREVfQ09MT1JJTUVUUllfQlQ3MDkJCQkyCj4gPiA+ PiA+PiA+Cj4gPiA+PiA+PiA+U3RpbGwgbWlzc2luZyB0aGUgWUNiQ3IgaW5mb3JtYXRpb24gaW4g dGhlc2UgdHdvLgo+ID4gPj4gPj4KPiA+ID4+ID4+IEFzIHBlciBDVEEgODYxLkcgc3BlYywgd2Ug aGF2ZSB0aGVzZSBhcyBvbmx5IFNNUFRFXzE3ME0gYW5kIElUVS1SCj4gPiA+PiA+PiBCVDcwOSwg d2l0aCBubyBzcGVjaWZpYyBtZW50aW9uIG9mIFJHQiBvciBZQ2JDci4gSGVuY2UsIGtlcHQgaXQg YXMKPiA+ID4+ID4+IHBlciBzcGVjLiBXZSBzZWVtIHRvIGhhdmUgYSBjb21tb24gZmllbGQgZm9y IGJvdGggYXMgcGVyIENUQSBzcGVjLgo+ID4gPj4gPj4gQ29ycmVjdCBtZSBpZiBteSB1bmRlcnN0 YW5kaW5nIGlzIHdyb25nLgo+ID4gPj4gPgo+ID4gPj4gPkNoZWNrCj4gPiA+PiA+IlRhYmxlIDE0 IFBpY3R1cmUgQ29sb3JpbWV0cnkgSW5kaWNhdGVkIGJ5IHRoZSBSR0Igb3IgWUMgQiBDIFIgKFkp LAo+ID4gPj4gPkNvbG9yaW1ldHJ5Cj4gPiA+PiA+KEMpIGFuZCBFeHRlbmRlZCBDb2xvcmltZXRy eSAoRUMpIEZpZWxkIFNldHRpbmdzIgo+ID4gPj4KPiA+ID4+IFRoZXNlICBZMiBZMSBZMCB2YWx1 ZXMgc2hvdWxkIGJlIHByb2dyYW1tZWQgc2VwYXJhdGVseSBhbmQgbm90Cj4gPiA+PiB0aHJvdWdo IHRoZSBjb2xvcnNwYWNlIGFzIHRoZXkgYXJlIGRhdGEgZm9ybWF0cyBpc24ndCBpdC4gSSBmZWVs IHRoaXMKPiA+ID4+IHNob3VsZCBnZXQgY29udHJvbGxlZCBzZXBhcmF0ZWx5IGluZGVwZW5kZW50 IG9mIGNvbG9yaW1ldHJ5LCBvcgo+ID4gPj4gc2hvdWxkIHdlIGFkZCBhbGwgdGhlIFlDYkNyIGFu ZCBSR0IgdmVyc2lvbnMgYW5kIHByb2dyYW0gdGhlbSBhcyBwYXJ0Cj4gPiA+PiBvZiB0aGlzIHBy b3BlcnR5IGl0c2VsZgo+ID4gPj8KPiA+ID4KPiA+ID5JIGRvbid0IHRoaW5rIHdlIGNhbiBzZXBh cmF0ZSB0aGVtLiBUaGUgdmFsdWVzIG9mIHRoZSBjb2xvcmltZXRyeSBiaXRzCj4gPiA+ZG9lc24n dCBtZWFuIGFueXRoaW5nIHdpdGhvdXQgdGhlIFkgYml0cy4gSXQgd291bGQgbWFrZSB0aGUgdWFw aSBraW5kYQo+ID4gPmNyYXp5IGlmIHdlIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgQlQuMjAy MCBSR0IgYnV0IHRoZW4gd2UgYWN0dWFsbHkKPiA+ID5zaWduYWwgQlQuMjAyMCBZQ2JDciBpbiB0 aGUgaW5mb2ZyYW1lLCBvciB2aWNlIHZlcnNhLiBPciB3ZSBqdXN0IHNpZ25hbAo+ID4gPmEgdG90 YWxseSBpbnZhbGlkIHZhbHVlIGZvciBhbGwgdGhlIG90aGVyIGNhc2VzLgo+ID4gCj4gPiBJIGFn cmVlIHdlIG5lZWQgZGF0YSBmb3JtYXQgYWxzbyB0byBiZSBzZW5kIGFsb25nIHdpdGggY29sb3Jz cGFjZSwgYnV0IHRoZXkgYXJlIDIKPiA+IGRpZmZlcmVudCB0aGluZ3MuIFRvIGhhbmRsZSBZQ2JD ciBhbmQgdmFyaWFudHMgKFlVViA0NDQsIDQyMCBvciA0MjIpIGFuZCBSR0IgSSBmZWVsCj4gPiB3 ZSBzaG91bGQgZXhwb3NlIGEgZGlmZmVyZW50IEFQSSBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgb25l LiAgV2UgY2FuIGNyZWF0ZSBhbiBvdXRwdXQKPiA+IGNzYyBwcm9wZXJ0eSB3aGljaCBkb2VzIHRo YXQgam9iIGZvciB1cy4KPiA+IAo+ID4gU28gZnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUgaWYgd2Ug d2FudHMgdG8gc2V0IGEgY29sb3JzcGFjZSB3ZSBzaG91bGQgdXNlIHRoZSBvbmUgaW4KPiA+IHRo aXMgc2VyaWVzIGFuZCBzZXQgdGhlIGRhdGEgZm9ybWF0IHNlcGFyYXRlbHkgdXNpbmcgdGhlIG90 aGVyIGludGVyZmFjZS4gQm90aCB3aWxsIGJlCj4gPiByZWNlaXZlZCBpbiB0aGUgc3RhdGUgdmFy aWFibGVzIGFuZCBsYXRlciBJbmZvZnJhbWUgcGFja2V0IHdpbGwgYmUgY3JlYXRlZCBhY2NvcmRp bmdseS4KPiA+IENsdWJiaW5nIGJvdGggaW4gb25lIG1heSBsZWFkIHRvIGxvdCBvZiBwb3NzaWJs ZSBjb21iaW5hdGlvbnMgZXhwb3NlZCBhcyBlbnVtCj4gPiB3aGljaCBtYXkgbm90IGxvb2sgdG9v IGNsZWFuLgo+ID4gCj4gPiBXaGF0IGRvIHlvdSBzYXkgYWJvdXQgaGFuZGxpbmcgdGhhdCBpbiB0 aGUgb3V0cHV0IGNzYyBwcm9wZXJ0eS4gSSB3aWxsIGdvIHdpdGggd2hhdCB5b3UKPiA+IHJlY29t bWVuZCAuCj4gCj4gUHJvZ3JhbW1pbmcgWTJZMVkwIGlzIGFscmVhZHkgdGFrZW4gY2FyZSBvZiwg d2hlbiB3ZSBhZGRlZCBzdXBwb3J0IGZvciBZQ0JDUiBvdXRwdXRzICg0OjI6MCBpbXBsZW1lbnRh dGlvbikuIAo+IEluIGludGVsX2hkbWkuYzppbnRlbF9oZG1pX3NldF9hdmlfaW5mb2ZyYW1lKCk6 Cj4gCj4gaWYgKGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1B VF9ZQ0JDUjQyMCkKPiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVW NDIwOwo+IGVsc2UgaWYgKGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVU X0ZPUk1BVF9ZQ0JDUjQ0NCkKPiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BB Q0VfWVVWNDQ0Owo+IGVsc2UKPiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BB Q0VfUkdCOwo+IAo+IElNTyBUaGlzIGxvb2tzIGxpa2UgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0 aGlzLCBpZSB3aGlsZSBhZGRpbmcgc3VwcG9ydCBmb3IgYSBuZXcgZm9ybWF0LCBhZGQgc3VwcG9y dCBmb3IgY29ycmVzcG9uZGluZyBBVkkgSUYgZmlsZWRzLiBUaGlzIHdpbGwgYWxzbyBtYWtlIHNj b3BlIG9mIHRoZSBwcm9wZXJ0eSB1bmRlciBkaXNjdXNzaW9uIGxlc3MgY29tcGxpY2F0ZWQuCgpU aGF0J3MgYW4gZXhjZXB0aW9uYWwgY2FzZS4gV2UncmUgcHJvZ3JhbW1pbmcgdGhlIENTQyBpbiB0 aGF0IGNhc2UKdG8gZG8gdGhlIFJHQi0+WUNiQ3IgY29udmVyc2lvbiB3aXRob3V0IHRlbGxpbmcg dXNlcnNwYWNlLiBTbyB3ZQptdXN0IGFsc28gY29uZmlndXJlIHRoZSBZIGJpdHMgYXV0b21hZ2lj YWxseS4KCldoYXQgd2Ugd2FudCBpcyBhIGNoZWNrIGxpa2Ugc286CgppZiAocHJvcC5jb2xvcnNw YWNlICE9IGRlZmF1bHQgJiYgb3V0cHV0X2Zvcm1hdCAhPSBSR0IpCiAgICByZXR1cm4gLUlOVkFM OwoKYmVjYXVzZSB3ZSBjYW4ndCBzZXQgdXAgdGhlIENTQyB0byBtYWtlIGEgbWVzcyBvZiB0aGUg dXNlcidzCmNhcmVmdWxseSBjcmFmdGVkIHBpeGVscy4gVGhlIHBpeGVscyBtaWdodCBub3QgZXZl biBjb250YWluClJHQiBkYXRhIGluIHRoYXQgY2FzZS4KCldlJ2xsIG5lZWQgdG8gZXh0ZW5kIHRo YXQgYSBsaXR0bGUgYml0IG9uY2Ugd2UgYWRkIHRoZSBleHBsaWNpdApjb250cm9sIG9mIHRoZSBv dXRwdXQgQ1NDIHZpYSBhbm90aGVyIHByb3AuIEJ1dCB0aGUgc2FtZQpwcmluY2lwbGUgc2hvdWxk IGhvbGQuCgo+IAo+ID4gCj4gPiBSZWdhcmRzLAo+ID4gVW1hIFNoYW5rYXIKPiA+IAo+ID4gCj4g PiAKPiA+ID4+Cj4gPiA+PiBNeSBpZGVhIHdhcyBqdXN0IHRvIHVwZGF0ZSBjb2xvcmltZXRyeSBm aWVsZHMgYWxvbmUgYXMgcGFydCBvZiB0aGlzIGludGVyZmFjZS4KPiA+ID4+Cj4gPiA+PiA+Pgo+ ID4gPj4gPj4gPgo+ID4gPj4gPj4gPj4gKy8qIENFQSA4NjEgRXh0ZW5kZWQgQ29sb3JpbWV0cnkg T3B0aW9ucyAqLyAjZGVmaW5lCj4gPiA+PiA+PiA+PiArRFJNX01PREVfQ09MT1JJTUVUUllfWFZZ Q0NfNjAxCj4gPiA+CTMKPiA+ID4+ID4+ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZ X1hWWUNDXzcwOQo+ID4gPgk0Cj4gPiA+PiA+PiA+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xPUklN RVRSWV9TWUNDXzYwMQkJCTUKPiA+ID4+ID4+ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1F VFJZX09QWUNDXzYwMQo+ID4gPgk2Cj4gPiA+PiA+PiA+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xP UklNRVRSWV9PUFJHQgkJCTcKPiA+ID4+ID4+ID4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1F VFJZX0JUMjAyMF9ZQ0MKPiA+ID4JOAo+ID4gPj4gPj4gPj4gKy8qIEJvdGggQlQyMDIwX1JHQiBh bmQgQlQyMDIwX1lDYkNiQ3IgaGF2ZSBzYW1lIHZhbHVlICovCj4gPiA+PiA+PiA+PiArI2RlZmlu ZSBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBfUkdCCj4gPiA+CTkKPiA+ID4+ID4+ID4+ICsj ZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0JUMjAyMF9DWUNDCQk5Cj4gPiA+PiA+PiA+Cj4g PiA+PiA+PiA+SSB0aG91Z2ggeW91IGRpZG4ndCB3YW50IHRoZXNlIG51bWJlcnMgdG8gYmUgYmFz ZWQgb24gdGhlIHNwZWMKPiA+ID4+ID4+ID5udW1iZXJzPyBUaGlzIGR1cGxpY2F0ZWQgdmFsdWUg c2VlbXMgdG8gZ28gYWdhaW5zdCB0aGF0IGlkZWEuCj4gPiA+PiA+Pgo+ID4gPj4gPj4gWWVhaCwg Zm9yIEhETUkgc29tZWhvdyB3YXMgdHJ5aW5nIHRvIHV0aWxpemUgdGhlIGRlZmluaXRpb25zIHRv Cj4gPiA+PiA+PiBhZHZhbnRhZ2UuIEJ1dCBJIGZlZWwsIEl0J3MgYmV0dGVyIHRvIGRlLWNvdXBs ZSB0aGlzLiBEZWZpbmUgdGhpcwo+ID4gPj4gPj4gYXMgbm9ybWFsIGVudW0gdmFsdWVzIHNlcXVl bnRpYWxseSBzbyB0aGF0IHVzZXJzcGFjZSBnZXQgcmVhZGFibGUKPiA+ID4+ID4+IHNlcmlhbCBu dW1iZXIKPiA+ID4+ID5raW5kIHZhbHVlcy4KPiA+ID4+ID4+IEFuZCB1c2UgdGhlc2UgaW4gZW5j b2RlciBmaWxlcyB0byBnZXQgcHJvcGVyIHZhbHVlcyB0byBiZQo+ID4gPj4gPj4gcHJvZ3JhbW1l ZCBhcyBwZXIgcmVzcGVjdGl2ZSBzcGVjLCB3aGlsZSBkZWZpbmluZyB0aG9zZSB2YWx1ZXMgcGVy Cj4gPiA+PiA+PiBlbmNvZGVyCj4gPiA+c2VwYXJhdGVseS4KPiA+ID4+ID5Ib3BlIHRoaXMgaXMg ZmluZS4KPiA+ID4+ID4+Cj4gPiA+PiA+PiA+PiArLyogQWRkaXRpb25hbCBDb2xvcmltZXRyeSBl eHRlbnNpb24gYWRkZWQgYXMgcGFydCBvZiBDVEEgODYxLkcgKi8KPiA+ID4+ID4+ID4+ICsjZGVm aW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0RDSV9QM19SR0JfRDY1CQkxMAo+ID4gPj4gPj4gPj4g KyNkZWZpbmUgRFJNX01PREVfQ09MT1JJTUVUUllfRENJX1AzX1JHQl9USEVBVEVSCj4gPiA+PiA+ CTExCj4gPiA+PiA+PiA+PiArCj4gPiA+PiA+PiA+PiArLyogRFAgTVNBIENvbG9yaW1ldHJ5IE9w dGlvbnMgKi8gI2RlZmluZQo+ID4gPj4gPj4gPj4gK0RSTV9NT0RFX0RQX0NPTE9SSU1FVFJZX1lD QkNSX0lUVV82MDEKPiA+ID4JMTIKPiA+ID4+ID4+ID4+ICsjZGVmaW5lIERSTV9NT0RFX0RQX0NP TE9SSU1FVFJZX1lDQkNSX0lUVV83MDkKPiA+ID4JMTMKPiA+ID4+ID4+ID4KPiA+ID4+ID4+ID5T dGlsbCBpbmNvbnNpc3RlbnQgbmFtaW5nIGluIG1hbnkgcGxhY2VzIChJVFVfIHZzLiBCVCwgWUNC Q1IgdnMuCj4gPiA+PiA+PiA+WUNDLCBvcmRlciBvZiB0aGUgdHdvKS4KPiA+ID4+ID4+Cj4gPiA+ PiA+PiBXaWxsIGZpeCB0aGlzLiBUaGFua3MgVmlsbGUuCj4gPiA+PiA+Pgo+ID4gPj4gPj4gPgo+ ID4gPj4gPj4gPj4gKyNkZWZpbmUgRFJNX01PREVfRFBfQ09MT1JJTUVUUllfU1JHQgkJCTE0Cj4g PiA+PiA+PiA+PiArI2RlZmluZSBEUk1fTU9ERV9EUF9DT0xPUklNRVRSWV9SR0JfV0lERV9HQU1V VAo+ID4gPj4gPgkxNQo+ID4gPj4gPj4gPj4gKyNkZWZpbmUgRFJNX01PREVfRFBfQ09MT1JJTUVU UllfU0NSR0IKPiA+ID4JMTYKPiA+ID4+ID4+ID4+ICsKPiA+ID4+ID4+ID4+ICAvKioKPiA+ID4+ ID4+ID4+ICAgKiBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAtIHJ1bnRpbWUgZGF0YSBhYm91dCB0 aGUgY29ubmVjdGVkIHNpbmsKPiA+ID4+ID4+ID4+ICAgKgo+ID4gPj4gPj4gPj4gQEAgLTUwMyw2 ICs1MzksMTMgQEAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewo+ID4gPj4gPj4gPj4gIAl1 bnNpZ25lZCBpbnQgY29udGVudF9wcm90ZWN0aW9uOwo+ID4gPj4gPj4gPj4KPiA+ID4+ID4+ID4+ ICAJLyoqCj4gPiA+PiA+PiA+PiArCSAqIEBjb2xvcnNwYWNlOiBTdGF0ZSB2YXJpYWJsZSBmb3Ig Q29ubmVjdG9yIHByb3BlcnR5IHRvIHJlcXVlc3QKPiA+ID4+ID4+ID4+ICsJICogY29sb3JzcGFj ZSBjaGFuZ2Ugb24gU2luay4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IHVzZWQgdG8KPiA+ID5zd2l0 Y2gKPiA+ID4+ID4+ID4+ICsJICogdG8gd2lkZXIgY29sb3IgZ2FtdXRzIGxpa2UgQlQyMDIwLgo+ ID4gPj4gPj4gPj4gKwkgKi8KPiA+ID4+ID4+ID4+ICsJdTMyIGNvbG9yc3BhY2U7Cj4gPiA+PiA+ PiA+PiArCj4gPiA+PiA+PiA+PiArCS8qKgo+ID4gPj4gPj4gPj4gIAkgKiBAd3JpdGViYWNrX2pv YjogV3JpdGViYWNrIGpvYiBmb3Igd3JpdGViYWNrIGNvbm5lY3RvcnMKPiA+ID4+ID4+ID4+ICAJ ICoKPiA+ID4+ID4+ID4+ICAJICogSG9sZHMgdGhlIGZyYW1lYnVmZmVyIGFuZCBvdXQtZmVuY2Ug Zm9yIGEgd3JpdGViYWNrCj4gPiA+Y29ubmVjdG9yLgo+ID4gPj4gPj4gPj4gQXMgQEAgLTk5NSw2 ICsxMDM4LDEyIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiA+ID4+ID4+ID4+ICAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqY29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5Owo+ID4gPj4gPj4gPj4K PiA+ID4+ID4+ID4+ICAJLyoqCj4gPiA+PiA+PiA+PiArCSAqIEBjb2xvcnNwYWNlX3Byb3BlcnR5 OiBDb25uZWN0b3IgcHJvcGVydHkgdG8gc2V0IHRoZSBzdWl0YWJsZQo+ID4gPj4gPj4gPj4gKwkg KiBjb2xvcnNwYWNlIHN1cHBvcnRlZCBieSB0aGUgc2luay4KPiA+ID4+ID4+ID4+ICsJICovCj4g PiA+PiA+PiA+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmNvbG9yc3BhY2VfcHJvcGVydHk7Cj4g PiA+PiA+PiA+PiArCj4gPiA+PiA+PiA+PiArCS8qKgo+ID4gPj4gPj4gPj4gIAkgKiBAcGF0aF9i bG9iX3B0cjoKPiA+ID4+ID4+ID4+ICAJICoKPiA+ID4+ID4+ID4+ICAJICogRFJNIGJsb2IgcHJv cGVydHkgZGF0YSBmb3IgdGhlIERQIE1TVCBwYXRoIHByb3BlcnR5LiBUaGlzCj4gPiA+PiA+PiA+ PiBzaG91bGQgb25seSBAQCAtMTI2OSw2ICsxMzE4LDcgQEAgaW50Cj4gPiA+PiA+PiA+PiBkcm1f Y29ubmVjdG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0eSgKPiA+ID4+ID4+ID4+ICBpbnQg ZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KAo+ID4gPj4g Pj4gPj4gIAkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7ICBpbnQKPiA+ID4+ID4+ ID4+IGRybV9tb2RlX2NyZWF0ZV9hc3BlY3RfcmF0aW9fcHJvcGVydHkoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gPiA+PiA+PiA+PiAraW50IGRybV9tb2RlX2NyZWF0ZV9jb2xvcnNwYWNlX3By b3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gPiA+PiA+PiA+PiArKmNvbm5lY3Rvcik7Cj4g PiA+PiA+PiA+PiAgaW50IGRybV9tb2RlX2NyZWF0ZV9jb250ZW50X3R5cGVfcHJvcGVydHkoc3Ry dWN0IGRybV9kZXZpY2UKPiA+ID4+ID4+ID4+ICpkZXYpOyB2b2lkIGRybV9oZG1pX2F2aV9pbmZv ZnJhbWVfY29udGVudF90eXBlKHN0cnVjdAo+ID4gPj4gPj4gPj4gaGRtaV9hdmlfaW5mb2ZyYW1l Cj4gPiA+PiA+PiA+KmZyYW1lLAo+ID4gPj4gPj4gPj4gIAkJCQkJIGNvbnN0IHN0cnVjdAo+ID4g PmRybV9jb25uZWN0b3Jfc3RhdGUKPiA+ID4+ID4+ID4qY29ubl9zdGF0ZSk7Cj4gPiA+PiA+PiA+ PiAtLQo+ID4gPj4gPj4gPj4gMS45LjEKPiA+ID4+ID4+ID4+Cj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJq w6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==