From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Ser, Simon" Date: Wed, 17 Jul 2019 13:10:55 +0000 Message-ID: References: <9f4a3f1d1c9df084ec2bf8e9b7475bbeda5f0985.1560374714.git.rodrigosiqueiramelo@gmail.com> <43c3d3c9150fbfd24e0fdf63747fc523b1890c75.camel@intel.com> <20190717014727.ijkoikehrla5la2s@smtp.gmail.com> In-Reply-To: <20190717014727.ijkoikehrla5la2s@smtp.gmail.com> Content-Language: en-US Content-ID: <3CA3FB02550FCC4C8139BABF5202A088@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH V6 i-g-t 5/6] lib/igt_kms: Add igt_output_clone_pipe for cloning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "rodrigosiqueiramelo@gmail.com" Cc: "Latvala, Petri" , "intel-gfx@lists.freedesktop.org" , "Liviu.Dudau@arm.com" , "igt-dev@lists.freedesktop.org" , "daniel@ffwll.ch" , "nd@arm.com" , "Brian.Starkey@arm.com" List-ID: T24gVHVlLCAyMDE5LTA3LTE2IGF0IDIyOjQ3IC0wMzAwLCBSb2RyaWdvIFNpcXVlaXJhIHdyb3Rl Og0KPiBPbiAwNy8xMiwgU2VyLCBTaW1vbiB3cm90ZToNCj4gPiBTbywgdG8gdGVzdCB0aGVzZSBs YXN0IHR3byBwYXRjaGVzIHdlJ2QgbmVlZCBzcGVjaWZpYyBoYXJkd2FyZSByaWdodD8NCj4gPiBC ZWNhdXNlIFZLTVMgZG9lc24ndCBzdXBwb3J0IGNsb25pbmcgeWV0IChkb2VzIGl0PykuDQo+IA0K PiBobW1tLi4uIGFjdHVhbGx5LCBWS01TIHN1Y2Nlc3NmdWxseSBwYXNzIGluIHRoaXMgdGVzdC4g SG93ZXZlciwgaWYgeW91DQo+IGNvbXBhcmUgIndyaXRlYmFjay1jaGVjay1vdXRwdXQiIGFuZCAi d3JpdGViYWNrLWNoZWNrLW91dHB1dC1jbG9uZSIsIHlvdQ0KPiB3aWxsIG5vdGljZSB0aGV5IGFy ZSB2ZXJ5IHNpbWlsYXIuIE1heWJlLCB0aGlzIHRlc3QgZG9lcyBub3QgY29ycmVjdGx5DQo+IHZh bGlkYXRpbmcgY2xvbmluZyBmZWF0dXJlPw0KDQpIbW0uIEFyZSB5b3Ugc3VyZSBpdCBkb2Vzbid0 IHNraXAgYXQgaWd0X3JlcXVpcmUoY2xvbmUpPyBJdCBzaG91bGQsDQpiZWNhdXNlIFZLTVMgb25s eSBleHBvc2VzIG9uZSBjb25uZWN0b3LigKYgTWlnaHQgYmUgYSBidWcgaW4gdGhlIHRlc3QuDQoN Cj4gPiBXaGF0IGtpbmQgb2YgaGFyZHdhcmUgc3VwcG9ydHMgY2xvbmVkIHdyaXRlYmFjayBvdXRw dXRzPyBJIGhhdmUgYQ0KPiA+IFJhc3BiZXJyeSBQaSB3aGljaCBzdXBwb3J0cyB3cml0ZWJhY2sg dmlhIFZDNCwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgaGFzDQo+ID4gd3JpdGViYWNrIGNsb25pbmcu IEknbSBhbHNvIG5vdCB3aWxsaW5nIHRvIGluc3RhbGwgYW55IHByb3ByaWV0YXJ5DQo+ID4gZHJp dmVyLg0KPiA+IA0KPiA+IEkgZ3Vlc3Mgd2UgY291bGQgbGFuZCB0aGUgZmlyc3QgcGFydCBvZiB0 aGUgc2VyaWVzLCBhbmQgd2FpdCBmb3IgVktNUw0KPiA+IHRvIHN1cHBvcnQgY2xvbmVkIG91dHB1 dHMgdG8gbGFuZCB0aGUgbGFzdCB0d28gcGF0Y2hlcy4NCj4gPiANCj4gPiBBbnkgb3RoZXIgaWRl YXM/DQo+IA0KPiBidHcsIEknbSB0b3RhbGx5IGNvbWZvcnRhYmxlIHdpdGggdGhlIGlkZWEgb2Yg Zm9jdXNpbmcgb24gdGhlIGZpcnN0IHBhcnQNCj4gb2YgdGhpcyBzZXJpZXMuDQoNClllYWgsIGxl dCdzIGxhbmQgdGhlIGZpcnN0IHBhcnQgYW5kIGtlZXAgY2xvbmluZyBmb3IgbGF0ZXIgOikNCg0K PiBUaGFua3MNCj4gIA0KPiA+IE9uIFdlZCwgMjAxOS0wNi0xMiBhdCAyMzoxOCAtMDMwMCwgQnJp YW4gU3RhcmtleSB3cm90ZToNCj4gPiA+IEFuIG91dHB1dCBjYW4gYmUgYWRkZWQgYXMgYSBjbG9u ZSBvZiBhbnkgb3RoZXIgb3V0cHV0KHMpIGF0dGFjaGVkIHRvIGENCj4gPiA+IHBpcGUgdXNpbmcg aWd0X291dHB1dF9jbG9uZV9waXBlKCkNCj4gPiA+IA0KPiA+ID4gdjU6IERyb3AgZmllbGQgb3V0 X2ZlbmNlX3JlcXVlc3RlZCBmcm9tIHN0cnVjdCBpZ3RfcGlwZSAoQnJpYW4gU3RhcmtleSkNCj4g PiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQnJpYW4gU3RhcmtleSA8YnJpYW4uc3RhcmtleUBh cm0uY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgbGliL2lndF9rbXMuYyB8IDEwMCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gIGxpYi9pZ3Rf a21zLmggfCAgIDQgKysNCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyks IDM4IGRlbGV0aW9ucygtKQ0KPiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMu YyBiL2xpYi9pZ3Rfa21zLmMNCj4gPiA+IGluZGV4IDE0MGRiMzQ2Li5iODVhMDQwNCAxMDA2NDQN Cj4gPiA+IC0tLSBhL2xpYi9pZ3Rfa21zLmMNCj4gPiA+ICsrKyBiL2xpYi9pZ3Rfa21zLmMNCj4g PiA+IEBAIC0xNzY1LDYgKzE3NjUsMTcgQEAgc3RhdGljIHZvaWQgaWd0X2Rpc3BsYXlfbG9nX3No aWZ0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBzaGlmdCkNCj4gPiA+ICAJaWd0X2Fzc2Vy dChkaXNwbGF5LT5sb2dfc2hpZnQgPj0gMCk7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gK3N0 YXRpYyBpbnQgaWd0X291dHB1dF9pZHgoaWd0X291dHB1dF90ICpvdXRwdXQpDQo+ID4gPiArew0K PiA+ID4gKwlpbnQgaTsNCj4gPiA+ICsNCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IG91dHB1dC0+ ZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspDQo+ID4gPiArCQlpZiAoJm91dHB1dC0+ZGlzcGxheS0+ b3V0cHV0c1tpXSA9PSBvdXRwdXQpDQo+ID4gPiArCQkJcmV0dXJuIGk7DQo+ID4gPiArDQo+ID4g PiArCXJldHVybiAtMTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAgc3RhdGljIHZvaWQgaWd0 X291dHB1dF9yZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0KQ0KPiA+ID4gIHsNCj4gPiA+ICAJ aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsNCj4gPiA+IEBAIC0yMzE3 LDQyICsyMzI4LDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9maW5pKGlndF9kaXNwbGF5X3QgKmRpc3Bs YXkpDQo+ID4gPiAgCWRpc3BsYXktPnBsYW5lcyA9IE5VTEw7DQo+ID4gPiAgfQ0KPiA+ID4gIA0K PiA+ID4gLXN0YXRpYyB2b2lkIGlndF9kaXNwbGF5X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSkNCj4gPiA+IC17DQo+ID4gPiAtCWlndF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiA+ID4gLQlp bnQgaTsNCj4gPiA+IC0NCj4gPiA+IC0JdW5zaWduZWQgbG9uZyBwaXBlc19pbl91c2UgPSAwOw0K PiA+ID4gLQ0KPiA+ID4gLSAgICAgICAvKiBDaGVjayB0aGF0IHR3byBvdXRwdXRzIGFyZW4ndCB0 cnlpbmcgdG8gdXNlIHRoZSBzYW1lIHBpcGUgKi8NCj4gPiA+IC0JZm9yIChpID0gMDsgaSA8IGRp c3BsYXktPm5fb3V0cHV0czsgaSsrKSB7DQo+ID4gPiAtCQlvdXRwdXQgPSAmZGlzcGxheS0+b3V0 cHV0c1tpXTsNCj4gPiA+IC0NCj4gPiA+IC0JCWlmIChvdXRwdXQtPnBlbmRpbmdfcGlwZSAhPSBQ SVBFX05PTkUpIHsNCj4gPiA+IC0JCQlpZiAocGlwZXNfaW5fdXNlICYgKDEgPDwgb3V0cHV0LT5w ZW5kaW5nX3BpcGUpKQ0KPiA+ID4gLQkJCQlnb3RvIHJlcG9ydF9kdXA7DQo+ID4gPiAtDQo+ID4g PiAtCQkJcGlwZXNfaW5fdXNlIHw9IDEgPDwgb3V0cHV0LT5wZW5kaW5nX3BpcGU7DQo+ID4gPiAt CQl9DQo+ID4gPiAtDQo+ID4gPiAtCQlpZiAob3V0cHV0LT5mb3JjZV9yZXByb2JlKQ0KPiA+ID4g LQkJCWlndF9vdXRwdXRfcmVmcmVzaChvdXRwdXQpOw0KPiA+ID4gLQl9DQo+ID4gPiAtDQo+ID4g PiAtCXJldHVybjsNCj4gPiA+IC0NCj4gPiA+IC1yZXBvcnRfZHVwOg0KPiA+ID4gLQlmb3IgKDsg aSA+IDA7IGktLSkgew0KPiA+ID4gLQkJaWd0X291dHB1dF90ICpiID0gJmRpc3BsYXktPm91dHB1 dHNbaSAtIDFdOw0KPiA+ID4gLQ0KPiA+ID4gLQkJaWd0X2Fzc2VydF9mKG91dHB1dC0+cGVuZGlu Z19waXBlICE9DQo+ID4gPiAtCQkJICAgICBiLT5wZW5kaW5nX3BpcGUsDQo+ID4gPiAtCQkJICAg ICAiJXMgYW5kICVzIGFyZSBib3RoIHRyeWluZyB0byB1c2UgcGlwZSAlc1xuIiwNCj4gPiA+IC0J CQkgICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLCBpZ3Rfb3V0cHV0X25hbWUoYiksDQo+ID4g PiAtCQkJICAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPnBlbmRpbmdfcGlwZSkpOw0KPiA+ ID4gLQl9DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gIHN0YXRpYyBpZ3RfcGlwZV90ICppZ3Rf b3V0cHV0X2dldF9kcml2aW5nX3BpcGUoaWd0X291dHB1dF90ICpvdXRwdXQpDQo+ID4gPiAgew0K PiA+ID4gIAlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5Ow0KPiA+ID4g QEAgLTIzNzYsNiArMjM1MSw0MCBAQCBzdGF0aWMgaWd0X3BpcGVfdCAqaWd0X291dHB1dF9nZXRf ZHJpdmluZ19waXBlKGlndF9vdXRwdXRfdCAqb3V0cHV0KQ0KPiA+ID4gIAlyZXR1cm4gJmRpc3Bs YXktPnBpcGVzW3BpcGVdOw0KPiA+ID4gIH0NCj4gPiA+ICANCj4gPiA+ICtzdGF0aWMgdm9pZCBp Z3RfZGlzcGxheV9yZWZyZXNoKGlndF9kaXNwbGF5X3QgKmRpc3BsYXkpDQo+ID4gPiArew0KPiA+ ID4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsNCj4gPiA+ICsJaWd0X3BpcGVfdCAqcGlwZTsNCj4g PiA+ICsJaW50IGk7DQo+ID4gPiArDQo+ID4gPiArCXVuc2lnbmVkIGxvbmcgcGlwZXNfaW5fdXNl ID0gMDsNCj4gPiA+ICsJdW5zaWduZWQgbG9uZyBwZW5kaW5nX2NydGNfaWR4X21hc2s7DQo+ID4g PiArDQo+ID4gPiArCS8qIENoZWNrIHRoYXQgb3V0cHV0cyBhbmQgcGlwZXMgYWdyZWUgd3J0LiBj bG9uaW5nICovDQo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7IGkr Kykgew0KPiA+ID4gKwkJb3V0cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07DQo+ID4gPiArCQlw ZW5kaW5nX2NydGNfaWR4X21hc2sgPSAxIDw8IG91dHB1dC0+cGVuZGluZ19waXBlOw0KPiA+ID4g Kw0KPiA+ID4gKwkJcGlwZSA9IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOw0K PiA+ID4gKwkJaWYgKHBpcGUpIHsNCj4gPiA+ICsJCQlpZ3RfYXNzZXJ0X2YocGlwZS0+b3V0cHV0 cyAmICgxIDw8IGlndF9vdXRwdXRfaWR4KG91dHB1dCkpLA0KPiA+ID4gKwkJCQkgICAgICJPdXRw dXQgJXMgbm90IGV4cGVjdGVkIHRvIGJlIHVzaW5nIHBpcGUgJXNcbiIsDQo+ID4gPiArCQkJCSAg ICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksDQo+ID4gPiArCQkJCSAgICAga21zdGVzdF9waXBl X25hbWUocGlwZS0+cGlwZSkpOw0KPiA+ID4gKw0KPiA+ID4gKwkJCWlmIChwaXBlc19pbl91c2Ug JiBwZW5kaW5nX2NydGNfaWR4X21hc2spDQo+ID4gPiArCQkJCUxPRyhkaXNwbGF5LCAiT3V0cHV0 ICVzIGNsb25lcyBwaXBlICVzXG4iLA0KPiA+ID4gKwkJCQkgICAgaWd0X291dHB1dF9uYW1lKG91 dHB1dCksDQo+ID4gPiArCQkJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSk7DQo+ ID4gPiArCQl9DQo+ID4gPiArDQo+ID4gPiArCQlwaXBlc19pbl91c2UgfD0gcGVuZGluZ19jcnRj X2lkeF9tYXNrOw0KPiA+ID4gKw0KPiA+ID4gKwkJaWYgKG91dHB1dC0+Zm9yY2VfcmVwcm9iZSkN Cj4gPiA+ICsJCQlpZ3Rfb3V0cHV0X3JlZnJlc2gob3V0cHV0KTsNCj4gPiA+ICsJfQ0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICBzdGF0aWMgaWd0X3BsYW5lX3QgKmlndF9waXBlX2dldF9wbGFu ZShpZ3RfcGlwZV90ICpwaXBlLCBpbnQgcGxhbmVfaWR4KQ0KPiA+ID4gIHsNCj4gPiA+ICAJaWd0 X3JlcXVpcmVfZihwbGFuZV9pZHggPj0gMCAmJiBwbGFuZV9pZHggPCBwaXBlLT5uX3BsYW5lcywN Cj4gPiA+IEBAIC0zNzY2LDYgKzM3NzUsNyBAQCB2b2lkIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9k ZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgY29uc3QgZHJtTW9kZU1vZGVJbmZvICptb2RlKQ0KPiA+ ID4gIAlvdXRwdXQtPnVzZV9vdmVycmlkZV9tb2RlID0gISFtb2RlOw0KPiA+ID4gIA0KPiA+ID4g IAlpZiAocGlwZSkgew0KPiA+ID4gKwkJaWd0X2RlYnVnKCJvdmVycmlkaW5nIHBpcGUgbW9kZSBp biAlcyB3YXlcbiIsIG91dHB1dC0+ZGlzcGxheS0+aXNfYXRvbWljID8gImF0b21pYyIgOiAibGVn YWN5Iik7DQo+ID4gPiAgCQlpZiAob3V0cHV0LT5kaXNwbGF5LT5pc19hdG9taWMpDQo+ID4gPiAg CQkJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKHBpcGUsIElHVF9DUlRDX01PREVfSUQs IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KSwgc2l6ZW9mKCptb2RlKSk7DQo+ID4gPiAgCQll bHNlDQo+ID4gPiBAQCAtMzc3Myw2ICszNzgzLDE2IEBAIHZvaWQgaWd0X291dHB1dF9vdmVycmlk ZV9tb2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBjb25zdCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUp DQo+ID4gPiAgCX0NCj4gPiA+ICB9DQo+ID4gPiAgDQo+ID4gPiArdm9pZCBpZ3Rfb3V0cHV0X2Ns b25lX3BpcGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKQ0KPiA+ID4gK3sN Cj4gPiA+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsNCj4gPiA+ ICsJdWludDMyX3QgY3VycmVudF9jbG9uZXMgPSBkaXNwbGF5LT5waXBlc1twaXBlXS5vdXRwdXRz Ow0KPiA+ID4gKw0KPiA+ID4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7DQo+ ID4gPiArDQo+ID4gPiArCWRpc3BsYXktPnBpcGVzW3BpcGVdLm91dHB1dHMgfD0gY3VycmVudF9j bG9uZXM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gIC8qDQo+ID4gPiAgICogaWd0X291dHB1 dF9zZXRfcGlwZToNCj4gPiA+ICAgKiBAb3V0cHV0OiBUYXJnZXQgb3V0cHV0IGZvciB3aGljaCB0 aGUgcGlwZSBpcyBiZWluZyBzZXQgdG8NCj4gPiA+IEBAIC0zNzg5LDExICszODA5LDE1IEBAIHZv aWQgaWd0X291dHB1dF9zZXRfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBp cGUpDQo+ID4gPiAgDQo+ID4gPiAgCWlndF9hc3NlcnQob3V0cHV0LT5uYW1lKTsNCj4gPiA+ICAN Cj4gPiA+IC0JaWYgKG91dHB1dC0+cGVuZGluZ19waXBlICE9IFBJUEVfTk9ORSkNCj4gPiA+ICsJ aWYgKG91dHB1dC0+cGVuZGluZ19waXBlICE9IFBJUEVfTk9ORSkgew0KPiA+ID4gIAkJb2xkX3Bp cGUgPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsNCj4gPiA+ICsJCW9sZF9w aXBlLT5vdXRwdXRzICY9IH4oMSA8PCBpZ3Rfb3V0cHV0X2lkeChvdXRwdXQpKTsNCj4gPiA+ICsJ fQ0KPiA+ID4gIA0KPiA+ID4gLQlpZiAocGlwZSAhPSBQSVBFX05PTkUpDQo+ID4gPiArCWlmIChw aXBlICE9IFBJUEVfTk9ORSkgew0KPiA+ID4gIAkJcGlwZV9vYmogPSAmZGlzcGxheS0+cGlwZXNb cGlwZV07DQo+ID4gPiArCQlwaXBlX29iai0+b3V0cHV0cyA9ICgxIDw8IGlndF9vdXRwdXRfaWR4 KG91dHB1dCkpOw0KPiA+ID4gKwl9DQo+ID4gPiAgDQo+ID4gPiAgCUxPRyhkaXNwbGF5LCAiJXM6 IHNldF9waXBlKCVzKVxuIiwgaWd0X291dHB1dF9uYW1lKG91dHB1dCksDQo+ID4gPiAgCSAgICBr bXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMu aCBiL2xpYi9pZ3Rfa21zLmgNCj4gPiA+IGluZGV4IGNhY2M2YjkwLi42NzY4MzliYiAxMDA2NDQN Cj4gPiA+IC0tLSBhL2xpYi9pZ3Rfa21zLmgNCj4gPiA+ICsrKyBiL2xpYi9pZ3Rfa21zLmgNCj4g PiA+IEBAIC0zNTQsNiArMzU0LDggQEAgc3RydWN0IGlndF9waXBlIHsNCj4gPiA+ICAJdWludDMy X3QgY3J0Y19pZDsNCj4gPiA+ICANCj4gPiA+ICAJaW50MzJfdCBvdXRfZmVuY2VfZmQ7DQo+ID4g PiArDQo+ID4gPiArCXVpbnQzMl90IG91dHB1dHM7DQo+ID4gPiAgfTsNCj4gPiA+ICANCj4gPiA+ ICB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiBAQCAtNDExLDYgKzQxMyw4IEBAIGNvbnN0IGNoYXIg KmlndF9vdXRwdXRfbmFtZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCk7DQo+ID4gPiAgZHJtTW9kZU1v ZGVJbmZvICppZ3Rfb3V0cHV0X2dldF9tb2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0KTsNCj4gPiA+ ICB2b2lkIGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgY29u c3QgZHJtTW9kZU1vZGVJbmZvICptb2RlKTsNCj4gPiA+ICB2b2lkIGlndF9vdXRwdXRfc2V0X3Bp cGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKTsNCj4gPiA+ICt2b2lkIGln dF9vdXRwdXRfY2xvbmVfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUp Ow0KPiA+ID4gKw0KPiA+ID4gIGlndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZShpZ3Rf b3V0cHV0X3QgKm91dHB1dCwgaW50IHBsYW5lX2lkeCk7DQo+ID4gPiAgaWd0X3BsYW5lX3QgKmln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV90 eXBlKTsNCj4gPiA+ICBpbnQgaWd0X291dHB1dF9jb3VudF9wbGFuZV90eXBlKGlndF9vdXRwdXRf dCAqb3V0cHV0LCBpbnQgcGxhbmVfdHlwZSk7DQo+ID4gPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4gaWd0LWRldiBtYWlsaW5nIGxpc3QNCj4g PiA+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldg==