From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Design review request: DRM color manager Date: Wed, 07 May 2014 19:52:44 +0530 Message-ID: <536A41B4.4030800@intel.com> References: <20140422134757.GO10722@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 3CC626E70C for ; Wed, 7 May 2014 07:23:54 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: uma.shakar@intel.com List-Id: intel-gfx@lists.freedesktop.org SGVsbG8gYWxsLAoKQXMgcGVyIHByZXZpb3VzIGRpc2N1c3Npb25zLCBJIGFtIHNlbmRpbmcgdGhl IGRybS1jb2xvci1tYW5hZ2VyIGRlc2lnbiAKZm9yIHJldmlldywgYXMgaW5saW5lIHRleHQuIFBs ZWFzZSBoYXZlIGEgbG9vayBhbmQgbGV0IG1lIGtub3cgeW91ciAKZmVlZGJhY2suCgooSSB0cmll ZCBoYXJkIHRvIGFsaWduIHRoZSBpbmxpbmUgdGV4dCBkaWFncmFtIGluIG1haWwsIGhvcGUgeW91 IGNhbiBzZWUgCnRoZSBwcm9wZXIgcGljdHVyZSB0b28pCgo9PT09PT09PT09PT09PT09PQpEUk0g Q29sb3IgTWFuYWdlcgo9PT09PT09PT09PT09PT09PQoKLSBDb2xvciBtYW5hZ2VyIHByb3ZpZGVz IGEgY29tbW9uIGludGVyZmFjZSBmb3IgYWxsIGNvbG9yIGNvcnJlY3Rpb24gLwogICBlbmhhbmNl bWVudCBwcm9wZXJ0aWVzIHN1cHBvcnRlZCBieSB2YXJpb3VzIGhhcmR3YXJlcy4KLSBDb2xvciBt YW5hZ2VyIHdpbGwgYmUgb25lIFVtYnJlbGxhIERSTSBwcm9wZXJ0eSAoYmxvYiB0eXBlKQotIERy aXZlciBjYW4gcmVnaXN0ZXIgdGhlIGNvbG9yIGNvcnJlY3Rpb24gcHJvcGVydGllcyBvZiBpdHMg SFcgZHVyaW5nCiAgIHRoZSBpbml0IHRpbWUsIGFuZCBhbGwgdGhlIGNvcnJlY3Rpb25zIGNhbiBi ZSBhcHBsaWVkIHVzaW5nIHRoZSBzYW1lCiAgIGludGVyZmFjZS4KCkhvdyBkb2VzIGEgZHJpdmVy IHJlZ2lzdGVyIGNvbG9yIHByb3BlcnRpZXMgd2l0aCBEUk0gY29sb3IgbWFuYWdlcjoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoKLSBBIERSTSBkcml2ZXIgd2lsbCBjYWxsIGRybV9yZWdpc3Rlcl9jb2xvcl9tYW5hZ2Vy KCkgZnVuY3Rpb24gd2l0aCAKZm9sbG93aW5nIGluZm9ybWF0aW9uOgoJLnByb3Bfc2V0X2hhbmRs ZXIKCS5wcm9wX2dldF9oYW5sZGVyCgkuY29sb3JfcHJvcF9pZGVudGlmaWVyIHN0cnVjdHVyZQoJ CXtwb3JwX25hbWUsIHByb3BfaWR9CgkJe3BvcnBfbmFtZSwgcHJvcF9pZH0KCQl7cG9ycF9uYW1l LCBwcm9wX2lkfQoKRm9yIGV4YW1wbGU6IEk5MTUgZHJpdmVyIGNhbiByZWdpc3RlciBhczoKICAJ LnByb3Bfc2V0X2hhbmRsZXIgPSBpbnRlbF9jbHJtZ3Jfc2V0KCkKCS5wcm9wX2dldF9oYW5sZGVy ID0gaW50ZWxfY2xybWdyX2dldCgpCgkuY29sb3JfcHJvcF9pZGVudGlmaWVyIHN0cnVjdHVyZQoJ CXtnYW1tYV9jb3JyZWN0aW9uLCAwfQoJCXtjc2NfY29ycmVjdGlvbiwgMX0KCQl7aHVlX3NhdHVy YXRpb24sIDJ9CgoKCkhvdyB3aWxsIGNvbG9yX21hbmFnZXJfc2V0L2dldCgpIGZ1bmN0aW9ucyB3 b3JrOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpD b2xvciBFRElEOgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cnx8IHByb3BlcnR5CXx8IEVuYWJsZS8JfHwgUGlw ZS9QbGFuZS8JfHwgTm8gb2YJfHwJCnx8CUlECXx8IERpc2FibGUJfHwgSWRlbnRpZmllcgl8fCBE YXRhIGJ5dGVzIAl8fGRhdGEuLgp8fCA8MSBCeXRlPgl8fCA8MSBCeXRlPgl8fCA8MSBCeXRlPgl8 fCA8MSBCeXRlPgl8fCAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLSBDb2xvciBFRElEIGlzIGEgcHJvdG9jb2wg dG8gZXh0cmFjdCB0aGUgY29sb3IgY29ycmVjdGlvbgogICBjaGFyYWN0ZXJpY3RpY3MgZnJvbSBh IGJsb2IsIGNvbWluZyBmcm9tIERSTSBsYXllcgogICBhcyBwcm9wZXJ0eV9zZXRfYmxvYigpIG9y IGxvYWRpbmcgYSBibG9iIGZvciBwcm9wZXJ0eV9nZXRfYmxvYigpCgotIFVzZXJzcGFjZSB3aWxs IGxvYWQgdGhpcyBibG9iIHdpdGggY29ycmVzcG9uZGluZyB2YWx1ZXMgYW5kIHVzZSB0aGUKICAg ZHJtX3NldF9ibG9iKGNvbG9yLW1hbmFnZXIpIGludGVyZmFjZS4KLSBEUk0gbGF5ZXIgb2YgZ2V0 L3NldF9jb2xvcl9tYW5hZ2VyKCkgd2lsbCB2YWxpZGF0ZSB0aGUgZW50cnksIGV4dHJhY3QKICAg dGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBmcm9tIGJsb2IKCS0gcHJvcGVydHkKCS0gZW5hYmxl L2Rpc2FibGUKCS0gaWRlbnRpZmllcgoJLSBwdHIgdG8gc3RhcnQgb2YgcmF3IGRhdGEKLSBXaXRo IHRoaXMgaW5mb3JtYXRpb24sIGRybV9nZXQvc2V0X2NvbG9yX21hbmFnZXIoKSBsYXllciB3aWxs IGNhbGwKICAgZHJpdmVyJ3MgLmdldC9zZXRfaGFuZGxlcigpCiAgIHdoaWNoIHdpbGwgZG8gdGhl IGNvcnJlY3Rpb24gdXNpbmcgdGhvc2UgdmFsdWVzLgotIEJhc2VkIG9uIHRoZSBkcml2ZXIncyBy ZXF1aXJlbWVudCwgdXNlciBzcGFjZSBjYW4gc2VuZCBhbnkgdHlwZSBvZgogICB2YWx1ZXMgaW4g Ynl0ZSBzdHJlYW0sIGxpa2UKICAgZGlyZWN0IHJlZyB2YWx1ZXMsIGNvcnJlY3Rpb24gY29lZmZp Y2llbnRzIG9yIGFueSBvdGhlciBmb3JtIG9mIGRhdGEuCgpCZW5lZml0cyBvZiB0aGlzIGNvbW1v biBpbnRlcmZhY2U6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTaW5nbGUg aW50ZXJmYWNlIGZvciBhbGwgY29sb3IgcHJvcGVydGllcy4gTm8gbmVlZCB0byBjcmVhdGUgbXVs dGlwbGUKICAgcHJvcGVydGllcy4KLSBIVyBhZ29uaXN0LiBJdHMgaW4gaGFuZHMgb2YgZHJpdmVy IHRvIHJlZ2lzdGVyIHRoZSBwcm9wZXJ0aWVzLgotIEFueSBubyBvZiBwcm9wZXJ0aWVzIGNhbiBi ZSByZWdpc3RlcmVkLgotIENhbiBiZSBjbHViYmVkIHdpdGggbW9kZXNldCBpbXBsZW1lbnRhdGlv bnMuCgoKCgpSZWdhcmRzClNoYXNoYW5rCgpPbiA1LzcvMjAxNCA3OjQxIFBNLCBTaGFybWEsIFNo YXNoYW5rIHdyb3RlOgo+IEZZSQo+Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiBGcm9t OiBTaGFybWEsIFNoYXNoYW5rCj4gU2VudDogVHVlc2RheSwgQXByaWwgMjIsIDIwMTQgODozMiBQ TQo+IFRvOiBEYW5pZWwgVmV0dGVyCj4gQ2M6IERhdmlkIEhlcnJtYW5uOyBpbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnOyBDbiwgUmFtYWtyaXNobmFuOyBKaW5kYWwsIFNvbmlrYTsgU2hh bmthciwgVW1hCj4gU3ViamVjdDogUkU6IFtJbnRlbC1nZnhdIERlc2lnbiByZXZpZXcgcmVxdWVz dDogRFJNIGNvbG9yIG1hbmFnZXIKPgo+IERhdmlkLAo+IE15IGFwb2xvZ2llcyBmb3Igc3RhcnRp bmcgYSBwcmUtbWF0dXJlIGRlc2lnbiBkaXNjdXNzaW9uLgo+Cj4gRGFuaWVsLAo+IFRoYW5rcyBm b3IgcG9pbnRpbmcgb3V0IGZpcnN0IHR3byB0aGluZ3MsIEl0IHdhcyBub3Qga25vd24gdG8gbWUs IEkgd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyBpbiBmdXR1cmUuCj4KPiBGaXJzdCB0aW1lIEkgcHJl c2VudGVkIGNvbG9yLW1hbmFnZXIgZGVzaWduLCBpbiBpbnRlcm5hbCBkaXNwbGF5IGRlc2lnbiBm b3J1bSwgd2hlcmUgbW9zdCBvZiB0aGUgcmV2aWV3ZXJzIHdlcmUgbm90IHRoZXJlLgo+IFdlIHRv b2sgdGhlIGZlZWRiYWNrIGZyb20gcGVvcGxlIHdobyB3ZXJlIHByZXNlbnQsIGFuZCBpbXBsZW1l bnRlZCB0aGUgZGVzaWduLgo+Cj4gV2hlbiB3ZSBzaGFyZWQgY29sb3IgbWFuYWdlciBpbXBsZW1l bnRhdGlvbiwgdGhhdCBkZXNpZ24gd2FzIHJlamVjdGVkIGFuZCBvbmUgb2YgdGhlIGZlZWRiYWNr cyB3YXMgdGhhdCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZGlzY3VzcyBpdCBvbiBkcmktZGV2ZWwg d2hlcmUgcGVvcGxlIG91dHNpZGUgSW50ZWwgY2FuIGdpdmUgdGhlaXIgb3BpbmlvbiwgYW5kIHRo YXTigJlzIHRoZSBvbmx5IHJlYXNvbiB3aHkgSSBhZGRlZCBkcmktZGV2ZWwgZm9yIHRoZSBuZXcg ZGVzaWduIChQbGVhc2Ugc2VlIHRoZSBhdHRhY2hlZCBtYWlsLCBJIHJlcGxpZWQgdG8gYWxsIHdo byB3ZXJlIGluIGxhc3QgY29tbXVuaWNhdGlvbikuCj4gUGxlYXNlIGxldCBtZSBrbm93IGhvdyBk byB3ZSB3YW50IHRvIHByb2NlZWQgbm93Lgo+Cj4KPiBSZWdhcmRzCj4gU2hhc2hhbmsKPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IERhbmllbCBWZXR0ZXIgW21haWx0bzpkYW5p ZWwudmV0dGVyQGZmd2xsLmNoXSBPbiBCZWhhbGYgT2YgRGFuaWVsIFZldHRlcgo+IFNlbnQ6IFR1 ZXNkYXksIEFwcmlsIDIyLCAyMDE0IDc6MTggUE0KPiBUbzogU2hhcm1hLCBTaGFzaGFuawo+IENj OiBEYXZpZCBIZXJybWFubjsgaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgVGhpZXJyeSBSZWRpbmc7IENuLCBSYW1ha3Jpc2hu YW47IEFsZXggRGV1Y2hlcjsgSmluZGFsLCBTb25pa2E7IFNoYW5rYXIsIFVtYQo+IFN1YmplY3Q6 IFJlOiBbSW50ZWwtZ2Z4XSBEZXNpZ24gcmV2aWV3IHJlcXVlc3Q6IERSTSBjb2xvciBtYW5hZ2Vy Cj4KPiBPbiBUdWUsIEFwciAyMiwgMjAxNCBhdCAxMjowNzo0MVBNICswMDAwLCBTaGFybWEsIFNo YXNoYW5rIHdyb3RlOgo+PiBUaGFua3MgYWdhaW4gRGF2aWQsCj4+IENvbW1lbnRzIGlubGluZS4K Pgo+IFRocmVlIHRoaW5nczoKPiAtIFBsZWFzZSBkb24ndCBzZW5kIG91dCAucHB0eCBmaWxlcyB0 byB1cHN0cmVhbS9wdWJsaWMgbWFpbGluZyBsaXN0cywKPiAgICB0aGF0J3MganVzdCBub3QgaG93 IHRoZSB1cHN0cmVhbSBjb21tdW5pdHkgd29ya3MuCj4KPiAtIFBsZWFzZSBlaXRoZXIgZml4IHVw IG1zIG91dGxvb2sgdG8gZG8gcHJvcGVyIGluLWxpbmUgcXVvdGluZyBvciBzd2l0Y2gKPiAgICB0 byBhIHByb3BlciBtYWlsIGNsaWVudCBmb3IgZGlzY3Vzc2lvbnMgb24gZHJpLWRldmVsLiBJJ20g b2sgd2l0aCB0aGlzCj4gICAgb24gaW50ZWwtZ2Z4IHRvIHNvbWUgZXh0ZW5kIHNpbmNlIHRoYXQn cyBvdXIgb3duIHR1cmYsIGJ1dCBvbiBkcmktZGV2ZWwKPiAgICB0aGUgdXN1YWwgcnVsZXMgYXBw bHkuCj4KPiAtIEkgdGhpbmsgd2Ugc2hvdWxkIGRpc2N1c3MgdGhpcyBpbnRlcm5hbGx5IGZpcnN0 IG9yIGF0IGxlYXN0IGp1c3Qgb24KPiAgICBpbnRlbC1nZnguCj4KPiBEYXZpZCwgdGhhbmtzIGZv ciB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYnV0IGltbyB0aGlzIHNob3VsZG4ndCBoYXZlIGVzY2Fw ZWQgeWV0IHRvIHRoZSBwdWJsaWMuIE15IGFwb2xvZ2llcyBmb3Igd2FzdGluZyB5b3VyIHRpbWUg dHJ5aW5nIHRvIHJldmlldyB0aGlzIHByb3Bvc2FsLgo+Cj4gVGhhbmtzLCBEYW5pZWwKPgo+Pgo+ PiBSZWdhcmRzCj4+IFNoYXNoYW5rCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZy b206IERhdmlkIEhlcnJtYW5uIFttYWlsdG86ZGguaGVycm1hbm5AZ21haWwuY29tXQo+PiBTZW50 OiBUdWVzZGF5LCBBcHJpbCAyMiwgMjAxNCA1OjEwIFBNCj4+IFRvOiBTaGFybWEsIFNoYXNoYW5r Cj4+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnOwo+PiBWaWxsZSBTeXJqw6Rsw6Q7IFRoaWVycnkgUmVkaW5nOyBBbGV4 IERldWNoZXI7IFNlYW4gUGF1bDsKPj4gcm9iZGNsYXJrQGdtYWlsLmNvbTsgTXVraGVyamVlLCBJ bmRyYW5pbDsgSmluZGFsLCBTb25pa2E7IEtvcmphbmksCj4+IFZpa2FzOyBTaGFua2FyLCBVbWE7 IENuLCBSYW1ha3Jpc2huYW4KPj4gU3ViamVjdDogUmU6IERlc2lnbiByZXZpZXcgcmVxdWVzdDog RFJNIGNvbG9yIG1hbmFnZXIKPj4KPj4gSGkKPj4KPj4gT24gVHVlLCBBcHIgMjIsIDIwMTQgYXQg MTI6MjEgUE0sIFNoYXJtYSwgU2hhc2hhbmsgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+IHdy b3RlOgo+Pj4gMSkgV2h5IGRvIHlvdSByZWdpc3RlciBvbmx5IGEgc2luZ2xlIHByb3BlcnR5PyBX aHkgbm90IHJlZ2lzdGVyIGEgc2VwYXJhdGUgcHJvcGVydHkgZm9yIGVhY2ggY29sb3ItY29ycmVj dGlvbiB0aGF0IGlzIGF2YWlsYWJsZT8gVGhpcyB3YXkgeW91IGNhbiBkcm9wIHRoZSBwcm9wZXJ0 eS1pZCBhbmQgdXNlIHRoZSBoaWdoLWxldmVsIERSTS1wcm9wIElEcy9uYW1lcy4KPj4+Pj4gVGhh dOKAmXMgdGhlIHdob2xlIGlkZWEgb2YgY29sb3IgbWFuYWdlci4gSWYgd2Uga2VlcCBvbiBjcmVh dGluZyBwcm9wZXJ0aWVzIGZvciBlYWNoIGNvbG9yIGNvcnJlY3Rpb24sIHRoZXJlIHdvdWxkIGJl IGEgYmlnIGxpc3QgYW5kIGEgbG90IG9mIHByb3BlcnRpZXMgd2lsbCBiZSBleHBvc2VkLiBJbnN0 ZWFkIG9uZSBjb21tb24gYmxvYiB3aGljaCBjYW4gcmVwcmVzZW50IGFsbCB0aGUgcHJvcGVydGll cywgY29ycmVjdGlvbiB2YWx1ZXMgYW5kIGlkZW50aWZpZXJzLiBJdCB3b3VsZCBiZSBlYXN5IHRv IGNsdWIgd2l0aCBhdG9taWMgbW9kZXNldCBraW5kLW9mIGRlc2lnbnMgYWxzbyBJIGJlbGlldmUu Cj4+Cj4+IFdoZXJlIGlzIHRoZSBkaWZmZXJlbmNlPyBXaXRoIG9uZSBfd2VsbC1kZWZpbmVkXyBw cm9wZXJ0eSBmb3IgZWFjaCB0eXBlIHdlIHNpbXBseSBtb3ZlIHRoZSBpZGVudGlmaWNhdGlvbiBv bmUgbGV2ZWwgdXAuIFdpdGggeW91ciBhcHByb2FjaCB5b3UganVzdCBtb3ZlIHRoZSB0eXBlLWlk IG9uZSBsZXZlbCBkb3duIGludG8gdGhlIGJsb2IuCj4+Cj4+IE9yIGluIG90aGVyIHdvcmRzOiBX aGVyZSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNhbGxpbmcKPj4gU2V0UHJvcGVydHkoKSBu LXRpbWVzLCBvciBjYWxsaW5nIGl0IG9uY2UgYnV0IHdpdGggYSBwYXJhbWV0ZXIgZGVzY3JpYmlu ZyBuLXByb3BlcnRpZXM/IFdpdGggYXRvbWljLW1vZGVzZXR0aW5nIHdlIGNhbiBzZXQgYXMgbWFu eSBwcm9wZXJ0aWVzIGFzIHdlIHdhbnQgYW5kIG1ha2UgdGhlIGtlcm5lbCBhcHBseSB0aGVtIGF0 b21pY2FsbHkuCj4+Cj4+Pj4+IEFjdHVhbGx5IHdlIGFsc28gZG8gbm90IHdhbnQgdG8gcG9wdWxh dGUgdGhlIHByb3BlcnR5IHNwYWNlIGFsc28sIGFzIGlmIHRoZXJlIGFyZSAxMCBjb2xvciBjb3Jy ZWN0aW9uIG1ldGhvZHMgcG9zc2libGUgZm9yIGEgaGFyZHdhcmUsIHdlIG1pZ2h0IGVuZCB1cCBs aXN0aW5nIDEwIHByb3BlcnRpZXMuICBBbmQgdGhlcmUgd29uJ3QgYmUgY29tbW9uIHByb3BlcnRp ZXMgYWNyb3NzIGFsbCB0aGUgaGFyZHdhcmVzIGFsc28uIEZvciBleGFtcGxlLCBIYXJkd2FyZSBB IGNhbiBoYXZlIHByb3BlcnRpZXMgWCBZIFogYnV0IEhhcmR3YXJlIEIgY2FuIGhhdmUgVyBYIGFu ZCBaLiBUaGlzIHdpbGwgbWFrZSB0aGUgcHJvcGVydHkgc3BhY2UgaW5jb25zaXN0ZW50LiBCdXQg aWYgd2UgcHJvdmlkZSBvbmUgY29tbW9uIGludGVyZmFjZSB3aGljaCB3aWxsIGNvdmVyIGZvciBh bGwgdGhlIHByb3BlcnRpZXMsIGZvciBhbGwgdGhlIGhhcmR3YXJlcyBpbiBhIHNpbmdsZSBibG9i LiBUaGUgZHJpdmVyIHdpbGwgZHluYW1pY2FsbHkgcmVnaXN0ZXIgaXRzIHByb3BlcnR5LCBpbiBp dHMgb3duIHByZWZlcnJlZCBuYW1lLiBBIGdldF9wcm9wKCkgd2lsbCBhbHdheXMgbGlzdCBkb3du IGFsbCB0aGUgc3VwcG9ydGVkIGNvbG9yIHByb3BlcnR5IGJ5IHRoaXMgaGFyZHdhcmUgYW5kIGRy aXZlci4KPj4KPj4+IDIpIFdoYXQgaXMgdGhlIENSVEMtSUQgZm9yPyBEUk0gcHJvcGVydGllcyBj YW4gYmUgc2V0IG9uIGEgc3BlY2lmaWMgQ1JUQyBhbmQvb3IgcGxhbmUuIElzbid0IHRoYXQgZW5v dWdoIGluZm9ybWF0aW9uIGZvciB0aGUgZHJpdmVyPwo+Pj4+PiBUaGlzIGlzIHRvIG1ha2UgaXQg SFcgYWdvbmlzdC4gQWN0dWFsbHkgdGhhdCdzIENSVEMgSUQgLyBQbGFuZSBJRCAvIFBJUEUgSUQg LyBhbGwgdG9nZXRoZXIgYW4gaWRlbnRpZmllci4gRm9yIGV4YW1wbGUgaWYgSSB3YW50IHRvIHNl dCBnYW1tYSBjb3JyZWN0aW9uIGZvciBzcHJpdGUgcGxhbmVzIG9ubHksIG5vdCBvbiBwcmltYXJ5 IHBsYW5lIG9yIHBpcGUgbGV2ZWwsIG9uIFZMViwgaXRzIHBvc3NpYmxlLiBUaGlzIGdpdmVzIG1l IGZsZXhpYmlsaXR5IHRvIG1lbnRpb24gZmluZS10dW5lZCBjb3JyZWN0aW9uIGV2ZW4gaW4gYSBD UlRDLiAgVGhlIGRyaXZlcidzIC5lbmFibGUgbWV0aG9kIGNhbiB0YWtlIGRlY2lzaW9uIG9uIHRo aXMgaWRlbnRpZmllciBiYXNlZCBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgo+Pgo+PiBZ ZWFoLCBidXQgSSBtZWFudCB0aGUgZHJtTW9kZU9iamVjdFNldFByb3BlcnR5KCkgaW9jdGwgYWxy ZWFkeSB0YWxlcyBhCj4+IENSVEMvUGxhbmUvQ29ubmVjdG9yIElELiBTbyB3aHkgZHVwbGljYXRl IHRoYXQgaW5mb3JtYXRpb24gaW4gdGhlCj4+IGJsb2I/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3 aGF0IGhhcHBlbnMgaWYgeW91IGNhbGwKPj4gZHJtTW9kZU9iamVjdFNldFByb3BlcnR5KCkgb24g YSBwbGFuZSBidXQgc3BlY2lmeSBhIENSVEMgSUQgaW4gdGhlIGJsb2I/IFNlZW1zIHdlaXJkIHRv IG1lIHRvIHN1cHBvcnQgc3VjaCBzZXR1cHMuCj4+Cj4+Pj4+IFRoZSBkZXNpZ24gaXMgdG8gcmVn aXN0ZXIgY29sb3ItbWFuYWdlciBhcyBhIENSVEMgcHJvcGVydHksIHRvIG1ha2UgaXQgY29uc2lz dGVudCwgYW5kIHRoZW4gZ2l2ZSB0aGUgZmluZSB0dW5pbmcgdmlhIHRoaXMgaWRlbnRpZmllciBi eXRlLgo+PiBFbHNlIHdlIGhhdmUgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGluIHVzZXJzcGFjZSwg dGhhdCB3aGljaCBwcm9wZXJ0eSBpcyB2YWxpZCBmb3Igd2hpY2ggZXh0ZW50LiBGb3IgZXhhbXBs ZSwgSHVlIGFuZCBzYXR1cmF0aW9uIGNvcnJlY3Rpb24sIG9uIFZMViwgY2FuIGJlIGFwcGxpZWQg b24gU3ByaXRlIHBsYW5lcyBvbmx5KG5vdCBvbiBwcmltYXJ5IHBsYW5lKS4gU28gd2UgaGF2ZSB0 byBzZW5kIGEgcGxhbmUgYXMgYW4gb2JqZWN0IGhlcmUuCj4+IFJhdGhlciBpbiBjb2xvciBtYW5h Z2VyIGNhc2UsIHdlIHdpbGwgYWx3YXlzIHNlbmQgdGhlIENSVEMgYXMgYW4gb2JqZWN0IHRvIElP Q1RMLCBidXQgd2lsbCBzcGVjaWZ5IFNQUklURV9QTEFORSBhcyBpZGVudGlmaWVyLiBEb2VzIHRo aXMgc291bmQgbGVzcyB3ZWlyZCBub3cgIDopID8KPj4KPj4+IDMpIFBsZWFzZSBkb2N1bWVudCB0 aGUgcGF5bG9hZCBmb3IgZWFjaCBvZiB0aGUgcHJvcGVydGllcyB5b3UgZGVmaW5lLgo+Pj4gSWYg dGhlIHByb3BlcnR5IGlzIGEgYmxvYiwgdGhlcmUgaXMgbm8gcmVhc29uIHRvIG1ha2UgdGhlIHBy b3BlcnRpZXMgZ2VuZXJpYy4gVXNlci1zcGFjZSByZXF1aXJlcyBhIGNvbW1vbiBzeW50YXggYWNy b3NzIGFsbCBkcml2ZXJzLCBvdGhlcndpc2UsIGl0IGNhbm5vdCBtYWtlIHVzZSBvZiBnZW5lcmlj IHByb3BlcnRpZXMgYW5kIHlvdSBzaG91bGQgdXNlIGRyaXZlci1kZXBlbmRlbnQgcHJvcGVydGll cyBpbnN0ZWFkLgo+Pj4+PiBDYW4geW91IHBsZWFzZSBlbGFib3JhdGUgYSBiaXQgbW9yZSA/IEkg YmVsaWV2ZSB0aGF0IGEgYmxvYiBpcyBhIHN1cGVyc2V0IG9mIHNpbmdsZSBhbmQgbXVsdGktdmFs dWVkIHByb3BlcnRpZXMuIFNvIHdlIGNhbiB1c2UgdGhlIGJ5dGUgZGVmaW5lZCBmb3IgPG5vIG9m IGNvcnJlY3Rpb24gYnl0ZXM+IGFuZCBzcGVjaWZ5IGJvdGggc2luZ2xlIHZhbHVlIGFuZCBtdWx0 aSB2YWx1ZSBjb3JyZWN0aW9uIHVzaW5nIHRoZSBzYW1lIGludGVyZmFjZSwgPj4gbWV0aG9kIGFu ZCBwcm90b2NvbC4gIFNvIGFueSB1c2Vyc3BhY2UgY2FuIGp1c3QgZm9sbG93IHRoaXMsIGFueSBj YW4gZ2l2ZSBjb21tYW5kcyB0byBhbnkgZHJpdmVyLgo+Pgo+PiBXZWxsLCB5b3VyIGRvY3VtZW50 IGRvZXNuJ3QgZGVzY3JpYmUgdGhlIHBheWxvYWQgYXQgYWxsLiBJIGp1c3Qgd2FudGVkIGEgZGVz Y3JpcHRpb24gb2Ygd2hhdCBraW5kIG9mIGluZm9ybWF0aW9uIGlzIGV4cGVjdGVkLiBOdW1iZXIg b2YgYXJndW1lbnRzLCBhcmd1bWVudCBzaXplLCBhcmd1bWVudCB0eXBlcywgYXJndW1lbnQgZGVz Y3JpcHRpb24uLiBhbmQgc28gb24uCj4+Pj4+PiBTdXJlLCBJIHdpbGwgZnVydGhlciBkb2N1bWVu dCBpdCB2ZXJ5IGNsZWFybHkgYWJvdXQgYXJndW1lbnRzIGFuZCBkZXNjcmlwdGlvbnMuIEFjdHVh bGx5IHdlIGhhdmUgZGlzY3Vzc2VkIHRoZSBwcm90b2NvbCBpbiB0aGUgY29sb3IgRURJRCBzZWN0 aW9uLCB3aGljaCB0ZWxscyB1cyBhYm91dCB0aGUgNCBieXRlIHByb3RvY29sIGFuZCBleHBlY3Rh dGlvbiwgYnV0IHRoYXTigJlzIGVsZW1lbnRhcnkuCj4+Cj4+PiA0KSBXZSBoYXZlIGEgdHVwbGUt dHlwZSBmb3IgcHJvcGVydGllcy4gU28gaW4gY2FzZSB5b3Ugb25seSBuZWVkIDMyYml0IHBheWxv YWRzIGZvciBhIGdpdmVuIHByb3BlcnR5LCB5b3UgY2FuIGNvbWJpbmUgZW5hYmxlL2Rpc2FibGUg YW5kIHZhbHVlIGluIGEgc2luZ2xlIDY0Yml0IHByb3BlcnR5Lgo+Pj4+PiBCdXQgcHJvcGVydGll cyBsaWtlIENTQyBhbmQgR2FtbWEgY29ycmVjdGlvbiBuZWVkIG11bHRpcGxlIGNvcnJlY3Rpb24g dmFsdWVzLCB1cCB0byAyNTYgMzItYml0IHZhbHVlcy4gRm9yIHRoaXMgd2UgbmVlZCBtb3JlIG5v IG9mIHZhbHVlcy4gQU0gSSBnZXR0aW5nIGl0IHJpZ2h0ID8KPj4gU3VyZS4KPj4KPj4gVGhhbmtz Cj4+IERhdmlkCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cj4KPiAtLQo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xs LmNoCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK