From: Oleksandr Andrushchenko Subject: Re: [PATCH v4 1/1] cameraif: add ABI for para-virtual camera Date: Tue, 5 Feb 2019 12:44:57 +0200 Message-ID: References: <20190115093853.15495-1-andr2000@gmail.com> <20190115093853.15495-2-andr2000@gmail.com> <393f824d-e543-476c-777f-402bcc1c0bcb@xs4all.nl> <1152536e-9238-4192-653e-b784b34b8a0d@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gqyDv-0000ss-UN for xen-devel@lists.xenproject.org; Tue, 05 Feb 2019 10:45:03 +0000 Received: by mail-lj1-x241.google.com with SMTP id k15-v6so2442408ljc.8 for ; Tue, 05 Feb 2019 02:45:01 -0800 (PST) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Hans Verkuil , Oleksandr Andrushchenko , "xen-devel@lists.xenproject.org" , "konrad.wilk@oracle.com" , "jgross@suse.com" , "boris.ostrovsky@oracle.com" , "mchehab@kernel.org" , "linux-media@vger.kernel.org" , "sakari.ailus@linux.intel.com" , "koji.matsuoka.xm@renesas.com" List-Id: xen-devel@lists.xenproject.org T24gMi81LzE5IDExOjM0IEFNLCBIYW5zIFZlcmt1aWwgd3JvdGU6Cj4gT24gMi81LzE5IDk6NDgg QU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBPbiAxLzIzLzE5IDEwOjE0IEFN LCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+IEFueSBjb21tZW50cyBmcm9tIFhl biBjb21tdW5pdHk/Cj4+PiBLb25yYWQ/Cj4+IFdoaWxlIEkgYW0gc3RpbGwgbG9va2luZyBmb3J3 YXJkIHRvIGFueSBjb21tZW50cyBmcm9tIFhlbiBjb21tdW5pdHkuLi4KPj4+IE9uIDEvMTUvMTkg NDo0NCBQTSwgSGFucyBWZXJrdWlsIHdyb3RlOgo+Pj4+IEhpIE9sZWtzYW5kciwKPj4+Pgo+Pj4+ IEp1c3QgdHdvIHJlbWFpbmluZyBjb21tZW50czoKPj4+Pgo+Pj4+IE9uIDEvMTUvMTkgMTA6Mzgg QU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+PiBGcm9tOiBPbGVrc2FuZHIg QW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+Cj4+ Pj4+IFRoaXMgaXMgdGhlIEFCSSBmb3IgdGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWxp emVkCj4+Pj4+IGNhbWVyYSBkcml2ZXIgd2hpY2ggZXh0ZW5kcyBYZW4ncyByZWFjaCBtdWx0aW1l ZGlhIGNhcGFiaWxpdGllcyBldmVuCj4+Pj4+IGZhcnRoZXIgZW5hYmxpbmcgaXQgZm9yIHZpZGVv IGNvbmZlcmVuY2luZywgSW4tVmVoaWNsZSBJbmZvdGFpbm1lbnQsCj4+Pj4+IGhpZ2ggZGVmaW5p dGlvbiBtYXBzIGV0Yy4KPj4+Pj4KPj4+Pj4gVGhlIGluaXRpYWwgZ29hbCBpcyB0byBzdXBwb3J0 IG1vc3QgbmVlZGVkIGZ1bmN0aW9uYWxpdHkgd2l0aCB0aGUKPj4+Pj4gZmluYWwgaWRlYSB0byBt YWtlIGl0IHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUgcHJvdG9jb2wgaWYgbmVlZCBiZToKPj4+Pj4K Pj4+Pj4gMS4gUHJvdmlkZSBtZWFucyBmb3IgYmFzZSB2aXJ0dWFsIGRldmljZSBjb25maWd1cmF0 aW9uOgo+Pj4+PiAgwqDCoCAtIHBpeGVsIGZvcm1hdHMKPj4+Pj4gIMKgwqAgLSByZXNvbHV0aW9u cwo+Pj4+PiAgwqDCoCAtIGZyYW1lIHJhdGVzCj4+Pj4+IDIuIFN1cHBvcnQgYmFzaWMgY2FtZXJh IGNvbnRyb2xzOgo+Pj4+PiAgwqDCoCAtIGNvbnRyYXN0Cj4+Pj4+ICDCoMKgIC0gYnJpZ2h0bmVz cwo+Pj4+PiAgwqDCoCAtIGh1ZQo+Pj4+PiAgwqDCoCAtIHNhdHVyYXRpb24KPj4+Pj4gMy4gU3Vw cG9ydCBzdHJlYW1pbmcgY29udHJvbAo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2Fu ZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+ IC0tLQo+Pj4+PiAgwqDCoCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY2FtZXJhaWYuaCB8IDEzNjQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICDCoMKgIDEgZmlsZSBjaGFuZ2Vk LCAxMzY0IGluc2VydGlvbnMoKykKPj4+Pj4gIMKgwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9p bmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvaW8vY2FtZXJhaWYuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1l cmFpZi5oCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAw MC4uMjQ2ZWIyNDU3ZjQwCj4+Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4gKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL2lvL2NhbWVyYWlmLmgKPj4+Pj4gQEAgLTAsMCArMSwxMzY0IEBACj4+Pj4gPHNu aXA+Cj4+Pj4KPj4+Pj4gKy8qCj4+Pj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+Pj4+ICsg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRVZFTlQgQ09ERVMKPj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4g KyAqLwo+Pj4+PiArI2RlZmluZSBYRU5DQU1FUkFfRVZUX0ZSQU1FX0FWQUlMwqDCoMKgwqDCoCAw eDAwCj4+Pj4+ICsjZGVmaW5lIFhFTkNBTUVSQV9FVlRfQ1RSTF9DSEFOR0XCoMKgwqDCoMKgIDB4 MDEKPj4+Pj4gKwo+Pj4+PiArLyogUmVzb2x1dGlvbiBoYXMgY2hhbmdlZC4gKi8KPj4+Pj4gKyNk ZWZpbmUgWEVOQ0FNRVJBX0VWVF9DRkdfRkxHX1JFU09MwqDCoMKgICgxIDw8IDApCj4+Pj4gSSB0 aGluayB0aGlzIGZsYWcgaXMgYSBsZWZ0LW92ZXIgZnJvbSB2MiBhbmQgc2hvdWxkIGJlIHJlbW92 ZWQuCj4+Pj4KPj4+PiA8c25pcD4KPj4+Pgo+Pj4+PiArICogUmVxdWVzdCBudW1iZXIgb2YgYnVm ZmVycyB0byBiZSB1c2VkOgo+Pj4+PiArICrCoMKgwqDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDLCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDPCoMKgwqDCoMKgwqDCoCBvY3RldAo+Pj4+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4+Pj4+ICsgKiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IF9PUF9CVUZfUkVRVUVTVHzCoMKgIHJlc2Vy dmVkwqDCoMKgwqAgfCA0Cj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAqIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXNlcnZl ZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA4Cj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAqIHzCoMKgwqAgbnVtX2J1ZnPC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzZXJ2ZWTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTIKPj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+Pj4+PiArICogfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2VydmVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE2Cj4+Pj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsg KiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVzZXJ2ZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNjQKPj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+PiArICoKPj4+Pj4g KyAqIG51bV9idWZzIC0gdWludDhfdCwgZGVzaXJlZCBudW1iZXIgb2YgYnVmZmVycyB0byBiZSB1 c2VkLiBUaGlzIGlzCj4+Pj4+ICsgKsKgwqAgbGltaXRlZCB0byB0aGUgdmFsdWUgY29uZmlndXJl ZCBpbiBYZW5TdG9yZS5tYXgtYnVmZmVycy4KPj4+Pj4gKyAqwqDCoCBQYXNzaW5nIHplcm8gbnVt X2J1ZnMgaW4gdGhpcyByZXF1ZXN0IChhZnRlciBzdHJlYW1pbmcgaGFzIHN0b3BwZWQKPj4+Pj4g KyAqwqDCoCBhbmQgYWxsIGJ1ZmZlcnMgZGVzdHJveWVkKSB1bmJsb2NrcyBjYW1lcmEgY29uZmln dXJhdGlvbiBjaGFuZ2VzLgo+Pj4+IEkgdGhpbmsgdGhlIHBocmFzZSAndW5ibG9ja3MgY2FtZXJh IGNvbmZpZ3VyYXRpb24gY2hhbmdlcycgaXMgY29uZnVzaW5nLgo+Pj4+Cj4+Pj4gSW4gdjMgdGhp cyBzZW50ZW5jZSBjYW1lIGFmdGVyIHRoZSB0aGlyZCBub3RlIGJlbG93LCBhbmQgc28gaXQgbWFk ZSBzZW5zZQo+Pj4+IGluIHRoYXQgY29udGV4dCwgYnV0IG5vdyB0aGUgb3JkZXIgaGFzIGJlZW4g cmV2ZXJzZWQgYW5kIGl0IGJlY2FtZSBoYXJkIHRvCj4+Pj4gdW5kZXJzdGFuZC4KPj4+Pgo+Pj4+ IEknbSBub3Qgc3VyZSB3aGF0IHRoZSBiZXN0IGFwcHJvYWNoIGlzIHRvIGZpeCB0aGlzLiBPbmUg b3B0aW9uIGlzIHRvIHJlbW92ZQo+Pj4+IHRoZSB0aGlyZCBub3RlIGFuZCBpbnRlZ3JhdGUgaXQg c29tZWhvdyBpbiB0aGUgc2VudGVuY2UgYWJvdmUuIE9yIHBlcmhhcHMKPj4+PiBkbyBhd2F5IHdp dGggdGhlICdub3RlcycgYXQgYWxsIGFuZCBqdXN0IHdyaXRlIGEgbW9yZSBleHRlbnNpdmUgZG9j dW1lbnRhdGlvbgo+Pj4+IGZvciB0aGlzIG9wLiBJIGxlYXZlIHRoYXQgdXAgdG8geW91Lgo+PiBI YW5zLCBob3cgYWJvdXQ6Cj4+Cj4+ICDCoCogbnVtX2J1ZnMgLSB1aW50OF90LCBkZXNpcmVkIG51 bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQuCj4+ICDCoCoKPj4gIMKgKiBUaGUgbnVtYmVyIG9m IGJ1ZmZlcnMgaW4gdGhpcyByZXF1ZXN0IG11c3Qgbm90IGV4Y2VlZCB0aGUgdmFsdWUgY29uZmln dXJlZAo+PiAgwqAqIGluIFhlblN0b3JlLm1heC1idWZmZXJzLiBJZiB0aGUgbnVtYmVyIG9mIGJ1 ZmZlcnMgaXMgbm90IHplcm8gdGhlbiBhZnRlciB0aGlzCj4+ICDCoCogcmVxdWVzdCB0aGUgY2Ft ZXJhIGNvbmZpZ3VyYXRpb24gY2Fubm90IGJlIGNoYW5nZWQuIEluIG9yZGVyIHRvIGFsbG93IGNh bWVyYQo+PiAgwqAqIChyZSljb25maWd1cmF0aW9uIHRoaXMgcmVxdWVzdCBtdXN0IGJlIHNlbnQg d2l0aCBudW1fYnVmcyBzZXQgdG8gemVybyBhbmQKPj4gIMKgKiB0aGUgc3RyZWFtaW5nIG11c3Qg YmUgc3RvcHBlZCBhbmQgYnVmZmVycyBkZXN0cm95ZWQuCj4+ICDCoCogSXQgaXMgYWxsb3dlZCBm b3IgdGhlIGZyb250ZW5kIHRvIHNlbmQgbXVsdGlwbGUgWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNU Cj4+ICDCoCogcmVxdWVzdHMgYmVmb3JlIHNlbmRpbmcgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVEFS VCByZXF1ZXN0IHRvIHVwZGF0ZSBvcgo+PiAgwqAqIHR1bmUgdGhlIGZpbmFsIGNvbmZpZ3VyYXRp b24uCj4+ICDCoCogRnJvbnRlbmQgaXMgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRoZSBjb3Jy ZXNwb25kaW5nIHJlc3BvbnNlIGluIG9yZGVyIHRvCj4+ICDCoCogc2VlIGlmIHRoZSB2YWx1ZXMg cmVwb3J0ZWQgYmFjayBieSB0aGUgYmFja2VuZCBkbyBtYXRjaCB0aGUgZGVzaXJlZCBvbmVzCj4+ ICDCoCogYW5kIGNhbiBiZSBhY2NlcHRlZC4KPj4gIMKgKgo+PiAgwqAqIFNlZSByZXNwb25zZSBm b3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KPj4gIMKgKi8KPiBIbW0sIGl0IHN0aWxsIGlzIGF3a3dh cmQuIFBhcnQgb2YgdGhlIHJlYXNvbiBmb3IgdGhhdCBpcyB0aGF0IFZJRElPQ19SRVFCVUZTCj4g aXMganVzdCB3ZWlyZCBpbiB0aGF0IGEgdmFsdWUgb2YgMCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcu Cj4KPiBQZXJoYXBzIGl0IHdvdWxkIGJlIG11Y2ggY2xlYW5lciBmb3IgdGhlIFhlbiBpbXBsZW1l bnRhdGlvbiB0byBqdXN0IGFkZCBhIG5ldwo+IE9QOiBfT1BfRlJFRV9BTExfQlVGUyAob3IgcGVy aGFwcyBfUkVMRUFTRV9BTExfQlVGUykgdGhhdCBlZmZlY3RpdmVseSBkb2VzCj4gVklESU9DX1JF UUJVRlMgd2l0aCBhIDAgY291bnQgdmFsdWUuIEFuZCB0aGlzIE9QX0JVRl9SRVFVRVNUICh3b3Vs ZG4ndAo+IE9QX1JFUVVFU1RfQlVGUyBiZSBhIGJldHRlciBuYW1lPykKSSBoYXZlIGFsbCBvcGVy YXRpb24gY2F0ZWdvcml6ZWQsIGUuZy4gdGhlcmUgYXJlIGNvbW1hbmRzCmZvciBjb25maWd1cmF0 aW9uIChYRU5DQU1FUkFfT1BfQ09ORklHX1hYWCksCmJ1ZmZlciBoYW5kbGluZyAoWEVOQ0FNRVJB X09QX0JVRl9YWFgpIGV0Yy4sIHNvIEkgcHJlZmVyIHRvCmtlZXAgdGhlIG5hbWUgYXMgaXMuCj4g ICB3b3VsZCB0aGVuIGRvIG5vdGhpbmcgb3IgcmV0dXJuIGFuIGVycm9yCj4gaWYgbnVtX2J1ZnMg PT0gMC4KPgo+IElmIHlvdSBkb24ndCB3YW50IHRvIGNyZWF0ZSBhIG5ldyBYZW4gb3AsIHRoZW4g SSB3b3VsZCBjaGFuZ2UgdGhlIHRleHQgc29tZQo+IG1vcmUgc2luY2UgeW91IGRvIG5vdCBhY3R1 YWxseSBleHBsYWluIHdoYXQgdGhlIG9wIGRvZXMgaWYgbnVtX2J1ZnMgaXMgMC4KV2VsbCwgSSB0 ZW5kIHRvIGtlZXAgdGhpcyBhcyBpcyB3aXRoIG5vIGFkZGl0aW9uYWwgb3AuCj4KPiBJIHdvdWxk IHdyaXRlIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4KPiBJZiBudW1fYnVmcyBpcyBncmVhdGVyIHRo YW4gMCwgdGhlbiA8ZGVzY3JpYmUgd2hhdCBoYXBwZW5zPi4KPgo+IElmIG51bV9idWZzIGlzIGVx dWFsIHRvIDAsIHRoZW4gPGRlc2NyaWJlIHdoYXQgaGFwcGVucz4uCj4KPiBJZiBudW1fYnVmcyBp cyBub3QgemVybyB0aGVuIGFmdGVyIHRoaXMgcmVxdWVzdCB0aGUgY2FtZXJhIGNvbmZpZ3VyYXRp b24KPiBjYW5ub3QgYmUgY2hhbmdlZC4gSW4gb3JkZXIgdG8gYWxsb3cgY2FtZXJhIChyZSljb25m aWd1cmF0aW9uIHRoaXMgcmVxdWVzdAo+IG11c3QgYmUgc2VudCB3aXRoIG51bV9idWZzIHNldCB0 byB6ZXJvIGFuZCB0aGUgc3RyZWFtaW5nIG11c3QgYmUgc3RvcHBlZAo+IGFuZCBidWZmZXJzIGRl c3Ryb3llZC4KTmV4dCB0cnk6CgogwqAqIG51bV9idWZzIC0gdWludDhfdCwgZGVzaXJlZCBudW1i ZXIgb2YgYnVmZmVycyB0byBiZSB1c2VkLgogwqAqCiDCoCogSWYgbnVtX2J1ZnMgaXMgbm90IHpl cm8gdGhlbiB0aGUgYmFja2VuZCB2YWxpZGF0ZXMgdGhlIHJlcXVlc3RlZCAKbnVtYmVyIG9mCiDC oCogYnVmZmVycyBhbmQgcmVzcG9uZHMgd2l0aCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYWxsb3dl ZCBmb3IgdGhpcyAKZnJvbnRlbmQuCiDCoCogRnJvbnRlbmQgaXMgcmVzcG9uc2libGUgZm9yIGNo ZWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGluIApvcmRlciB0bwogwqAqIHNlZSBp ZiB0aGUgdmFsdWVzIHJlcG9ydGVkIGJhY2sgYnkgdGhlIGJhY2tlbmQgZG8gbWF0Y2ggdGhlIGRl c2lyZWQgb25lcwogwqAqIGFuZCBjYW4gYmUgYWNjZXB0ZWQuCiDCoCogRnJvbnRlbmQgaXMgYWxs b3dlZCB0byBzZW5kIG11bHRpcGxlIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVCByZXF1ZXN0cwog wqAqIGJlZm9yZSBzZW5kaW5nIFhFTkNBTUVSQV9PUF9TVFJFQU1fU1RBUlQgcmVxdWVzdCB0byB1 cGRhdGUgb3IgdHVuZSB0aGUKIMKgKiBmaW5hbCBjb25maWd1cmF0aW9uLgogwqAqIEZyb250ZW5k IGlzIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYW5kL29yIGNh bWVyYQogwqAqIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgdGhlIHN0cmVhbWluZyBoYXMgc3RhcnRlZC4K IMKgKgogwqAqIEluIG9yZGVyIHRvIGFsbG93IGNhbWVyYSAocmUpY29uZmlndXJhdGlvbiB0aGlz IHJlcXVlc3QgbXVzdCBiZSBzZW50IAp3aXRoCiDCoCogbnVtX2J1ZnMgc2V0IHRvIHplcm8gYW5k IHRoZSBzdHJlYW1pbmcgbXVzdCBiZSBzdG9wcGVkIGFuZCBidWZmZXJzIApkZXN0cm95ZWQuCiDC oCoKIMKgKiBQbGVhc2Ugbm90ZSwgdGhhdCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhpcyBy ZXF1ZXN0IG11c3Qgbm90IGV4Y2VlZAogwqAqIHRoZSB2YWx1ZSBjb25maWd1cmVkIGluIFhlblN0 b3JlLm1heC1idWZmZXJzLgogwqAqCiDCoCogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyBy ZXF1ZXN0LgoKPiBSZWdhcmRzLAo+Cj4gCUhhbnMKPgo+Pj4+PiArICoKPj4+Pj4gKyAqIFNlZSBy ZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBOb3Rl czoKPj4+Pj4gKyAqwqAgLSBmcm9udGVuZCBtdXN0IGNoZWNrIHRoZSBjb3JyZXNwb25kaW5nIHJl c3BvbnNlIGluIG9yZGVyIHRvIHNlZQo+Pj4+PiArICrCoMKgwqAgaWYgdGhlIHZhbHVlcyByZXBv cnRlZCBiYWNrIGJ5IHRoZSBiYWNrZW5kIGRvIG1hdGNoIHRoZSBkZXNpcmVkIG9uZXMKPj4+Pj4g KyAqwqDCoMKgIGFuZCBjYW4gYmUgYWNjZXB0ZWQuCj4+Pj4+ICsgKsKgIC0gZnJvbnRlbmQgbWF5 IHNlbmQgbXVsdGlwbGUgWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNUIHJlcXVlc3RzIGJlZm9yZQo+ Pj4+PiArICrCoMKgwqAgc2VuZGluZyBYRU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUIHJlcXVlc3Qg dG8gdXBkYXRlIG9yIHR1bmUgdGhlCj4+Pj4+ICsgKsKgwqDCoCBjb25maWd1cmF0aW9uLgo+Pj4+ PiArICrCoCAtIGFmdGVyIHRoaXMgcmVxdWVzdCBjYW1lcmEgY29uZmlndXJhdGlvbiBjYW5ub3Qg YmUgY2hhbmdlZCwgdW5sZXNzCj4+Pj4gY2FtZXJhIGNvbmZpZ3VyYXRpb24gLT4gdGhlIGNhbWVy YSBjb25maWd1cmF0aW9uCj4+Pj4KPj4+Pj4gKyAqwqDCoMKgIHN0cmVhbWluZyBpcyBzdG9wcGVk IGFuZCBidWZmZXJzIGRlc3Ryb3llZAo+Pj4+PiArICovCj4+Pj4gUmVnYXJkcywKPj4+Pgo+Pj4+ ICDCoMKgwqDCoEhhbnMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs