From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v2] drm/connector: Allow max possible encoders to attach to a connector Date: Fri, 6 Sep 2019 17:23:52 +0000 Message-ID: <5edebf4afb975c6a96753c746316db8283399475.camel@intel.com> References: <20190905210927.26540-1-jose.souza@intel.com> <20190906112751.GQ7482@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190906112751.GQ7482-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: "ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org" Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "alexander.deucher-5C7GfCeVMHo@public.gmane.org" , "Pandiyan, Dhinakaran" List-Id: nouveau.vger.kernel.org T24gRnJpLCAyMDE5LTA5LTA2IGF0IDE0OjI3ICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIFRodSwgU2VwIDA1LCAyMDE5IGF0IDAyOjA5OjI3UE0gLTA3MDAsIEpvc8OpIFJvYmVy dG8gZGUgU291emENCj4gd3JvdGU6DQo+ID4gRnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhp bmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gDQo+ID4gQ3VycmVudGx5IHdlIHJlc3Ry aWN0IHRoZSBudW1iZXIgb2YgZW5jb2RlcnMgdGhhdCBjYW4gYmUgbGlua2VkIHRvDQo+ID4gYSBj b25uZWN0b3IgdG8gMywgaW5jcmVhc2UgaXQgdG8gbWF0Y2ggdGhlIG1heGltdW0gbnVtYmVyIG9m DQo+ID4gZW5jb2RlcnMNCj4gPiB0aGF0IGNhbiBiZSBpbml0aWFsaXplZCgzMikuDQo+ID4gDQo+ ID4gVG8gbW9yZSBlZmZpZW50bHkgZG8gdGhhdCBsZXRzIHN3aXRjaCBmcm9tIGFuIGFycmF5IG9m IGVuY29kZXIgaWRzDQo+ID4gdG8NCj4gPiBiaXRtYXNrLg0KPiA+IA0KPiA+IEFsc28gcmVtb3Zp bmcgdGhlIGJlc3RfZW5jb2RlciBob29rIGZyb20gdGhlIGRyaXZlcnMgdGhhdCBvbmx5IGhhdmUN Cj4gPiBvbmUgZW5jb2RlciBwZXIgY29ubmVjdG9yKHRoaXMgb25lcyBoYXZlIG9uZSBlbmNvZGVy IGluIHRoZSB3aG9sZQ0KPiA+IGRyaXZlciksIHBpY2tfc2luZ2xlX2VuY29kZXJfZm9yX2Nvbm5l Y3RvcigpIHdpbGwgZG8gdGhlIHNhbWUgam9iDQo+ID4gd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5n ZS4NCj4gDQo+IEkgZG9uJ3QgdGhpbmsgbm9uLWF0b21pYyBkcml2ZXJzIGhhdmUgdGhhdCBmYWxs YmFjayBpbiBwbGFjZS4NCj4gVGhleSBwcm9iYWJsZSBzaG91bGQuLi4NCg0KTmljZSBjYXRjaCwg dGhhbmtzIEkgd2lsbCBicmluZyBpdCBiYWNrIGFzIGl0IHdhcyByZW1vdmVkIGZyb20gbm9uLQ0K YXRvbWljIGRyaXZlcnMuDQoNCj4gDQo+IEFwYXJ0IGZyb20gdGhhdCBsZ3RtDQo+IFJldmlld2Vk LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiAN Cj4gPiB2MjogRml4aW5nIG1pc3NlZCByZXR1cm4gb24gYW1kZ3B1X2RtX2Nvbm5lY3Rvcl90b19l bmNvZGVyKCkNCj4gPiANCj4gPiBTdWdnZXN0ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVy LmRldWNoZXJAYW1kLmNvbT4NCj4gPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zw0KPiA+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gQ2M6IG5vdXZl YXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnDQo+ID4gU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJh bi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBk ZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIC4uLi9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Nvbm5lY3RvcnMuYyAgICB8IDIzICsrKysrLS0tLS0tLS0tDQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92aXJ0dWFsLmMgICAgICB8ICA1ICsr LQ0KPiA+ICAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgfCAg NiArKystDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYyAgICAgICAgICAgICAg ICB8IDEyIC0tLS0tLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMg ICAgICAgICAgIHwgIDkgKysrKy0tDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21v ZGVzZXQuYyAgICAgICAgICB8ICAzICstDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVj dG9yLmMgICAgICAgICAgICAgICB8IDMxICsrKysrLS0tLS0tLS0NCj4gPiAtLS0tLS0NCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYyAgICAgICAgICAgIHwgIDMgKy0NCj4g PiAgZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgICAgICAgIHwgMTEgLS0t LS0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnYwNC9kaXNwLmMgICAgICAg fCAgMiArLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC9kaXNwLmMgICAg ICAgfCAgMiArLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nvbm5lY3Rv ci5jICAgfCAgNyArKy0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25u ZWN0b3JzLmMgICAgfCAyNyArKysrKystLS0tLS0tLS0NCj4gPiAtDQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2Nvbm5lY3Rvci5jICAgICAgICAgICB8ICA4IC0tLS0tDQo+ID4gIGluY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrLS0tLS0t DQo+ID4gIDE1IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMo LSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2Nvbm5lY3RvcnMuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Nvbm5lY3RvcnMuYw0KPiA+IGluZGV4IGVjZTU1YzhmYTY3My4uZDg3MjkyODVmNzMxIDEwMDY0 NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3Jz LmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY29ubmVjdG9y cy5jDQo+ID4gQEAgLTIxNywxMSArMjE3LDEwIEBAIGFtZGdwdV9jb25uZWN0b3JfdXBkYXRlX3Nj cmF0Y2hfcmVncyhzdHJ1Y3QNCj4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gIAlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgKmNvbm5lY3Rvcl9mdW5jcyA9DQo+ID4gY29ubmVjdG9yLT5oZWxw ZXJfcHJpdmF0ZTsNCj4gPiAgCWJvb2wgY29ubmVjdGVkOw0KPiA+IC0JaW50IGk7DQo+ID4gIA0K PiA+ICAJYmVzdF9lbmNvZGVyID0gY29ubmVjdG9yX2Z1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVj dG9yKTsNCj4gPiAgDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29k ZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9y X2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlpZiAo KGVuY29kZXIgPT0gYmVzdF9lbmNvZGVyKSAmJiAoc3RhdHVzID09DQo+ID4gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQpKQ0KPiA+ICAJCQljb25uZWN0ZWQgPSB0cnVlOw0KPiA+ICAJCWVsc2UN Cj4gPiBAQCAtMjM2LDkgKzIzNSw4IEBAIGFtZGdwdV9jb25uZWN0b3JfZmluZF9lbmNvZGVyKHN0 cnVjdA0KPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwNCj4gPiAgCQkJICAgICAgIGludCBl bmNvZGVyX3R5cGUpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsN Cj4gPiAtCWludCBpOw0KPiA+ICANCj4gPiAtCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2li bGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpDQo+ID4gew0KPiA+ICsJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikgew0KPiA+ ICAJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUgPT0gZW5jb2Rlcl90eXBlKQ0KPiA+ICAJCQly ZXR1cm4gZW5jb2RlcjsNCj4gPiAgCX0NCj4gPiBAQCAtMzQ3LDEwICszNDUsOSBAQCBzdGF0aWMg c3RydWN0IGRybV9lbmNvZGVyICoNCj4gPiAgYW1kZ3B1X2Nvbm5lY3Rvcl9iZXN0X3NpbmdsZV9l bmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yDQo+ID4gKmNvbm5lY3RvcikNCj4gPiAgew0KPiA+ ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOw0KPiA+IC0JaW50IGk7DQo+ID4gIA0KPiA+ ICAJLyogcGljayB0aGUgZmlyc3Qgb25lICovDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNo X3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKQ0KPiA+ICsJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikNCj4gPiAg CQlyZXR1cm4gZW5jb2RlcjsNCj4gPiAgDQo+ID4gIAlyZXR1cm4gTlVMTDsNCj4gPiBAQCAtMTA2 NSw5ICsxMDYyLDggQEAgYW1kZ3B1X2Nvbm5lY3Rvcl9kdmlfZGV0ZWN0KHN0cnVjdA0KPiA+IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4gPiAgCS8qIGZpbmQgYW5hbG9n IGVuY29kZXIgKi8NCj4gPiAgCWlmIChhbWRncHVfY29ubmVjdG9yLT5kYWNfbG9hZF9kZXRlY3Qp IHsNCj4gPiAgCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gLQkJaW50IGk7DQo+ ID4gIA0KPiA+IC0JCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25u ZWN0b3IsDQo+ID4gZW5jb2RlciwgaSkgew0KPiA+ICsJCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsDQo+ID4gZW5jb2Rlcikgew0KPiA+ICAJCQlpZiAo ZW5jb2Rlci0+ZW5jb2Rlcl90eXBlICE9DQo+ID4gRFJNX01PREVfRU5DT0RFUl9EQUMgJiYNCj4g PiAgCQkJICAgIGVuY29kZXItPmVuY29kZXJfdHlwZSAhPQ0KPiA+IERSTV9NT0RFX0VOQ09ERVJf VFZEQUMpDQo+ID4gIAkJCQljb250aW51ZTsNCj4gPiBAQCAtMTExNyw5ICsxMTEzLDggQEAgYW1k Z3B1X2Nvbm5lY3Rvcl9kdmlfZW5jb2RlcihzdHJ1Y3QNCj4gPiBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVfY29u bmVjdG9yID0NCj4gPiB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rvcik7DQo+ID4gIAlzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gLQlpbnQgaTsNCj4gPiAgDQo+ID4gLQlkcm1f Y29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBp KQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihj b25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlpZiAoYW1kZ3B1X2Nvbm5lY3Rvci0+dXNlX2Rp Z2l0YWwgPT0gdHJ1ZSkgew0KPiA+ICAJCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlID09DQo+ ID4gRFJNX01PREVfRU5DT0RFUl9UTURTKQ0KPiA+ICAJCQkJcmV0dXJuIGVuY29kZXI7DQo+ID4g QEAgLTExMzQsNyArMTEyOSw3IEBAIGFtZGdwdV9jb25uZWN0b3JfZHZpX2VuY29kZXIoc3RydWN0 DQo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICANCj4gPiAgCS8qIHRoZW4gY2hl Y2sgdXNlIGRpZ2l0aWFsICovDQo+ID4gIAkvKiBwaWNrIHRoZSBmaXJzdCBvbmUgKi8NCj4gPiAt CWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29k ZXIsIGkpDQo+ID4gKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyKQ0KPiA+ICAJCXJldHVybiBlbmNvZGVyOw0KPiA+ICANCj4gPiAgCXJl dHVybiBOVUxMOw0KPiA+IEBAIC0xMjcxLDkgKzEyNjYsOCBAQCB1MTYNCj4gPiBhbWRncHVfY29u bmVjdG9yX2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKHN0cnVjdA0KPiA+IGRybV9j b25uZWN0b3IgKmNvbm4NCj4gPiAgew0KPiA+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy Ow0KPiA+ICAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlcjsNCj4gPiAtCWlu dCBpOw0KPiA+ICANCj4gPiAtCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rl cihjb25uZWN0b3IsIGVuY29kZXIsIGkpDQo+ID4gew0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9mb3Jf ZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikgew0KPiA+ICAJCWFtZGdw dV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ID4gIA0KPiA+ICAJCXN3 aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQpIHsNCj4gPiBAQCAtMTI5MiwxMCArMTI4 Niw5IEBAIHN0YXRpYyBib29sDQo+ID4gYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVyX2lzX2hicjIo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgew0KPiA+ICAJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyOw0KPiA+ICAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVf ZW5jb2RlcjsNCj4gPiAtCWludCBpOw0KPiA+ICAJYm9vbCBmb3VuZCA9IGZhbHNlOw0KPiA+ICAN Cj4gPiAtCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3Is IGVuY29kZXIsIGkpDQo+ID4gew0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikgew0KPiA+ICAJCWFtZGdwdV9lbmNvZGVyID0g dG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7DQo+ID4gIAkJaWYgKGFtZGdwdV9lbmNvZGVyLT5j YXBzICYNCj4gPiBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9IQlIyKQ0KPiA+ICAJCQlmb3VuZCA9 IHRydWU7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92 aXJ0dWFsLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92aXJ0dWFsLmMN Cj4gPiBpbmRleCBmMWZhZGI1YmExOTEuLjk5ZDEyZTg4ZGU5MiAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdmlydHVhbC5jDQo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3ZpcnR1YWwuYw0KPiA+IEBAIC0yNjAsMTUgKzI2MCwx NCBAQCBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoNCj4gPiAgZGNlX3ZpcnR1YWxfZW5jb2Rl cihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gLQlpbnQgaTsNCj4gPiAgDQo+ID4gLQlkcm1fY29u bmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKQ0K PiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25u ZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlID09IERS TV9NT0RFX0VOQ09ERVJfVklSVFVBTCkNCj4gPiAgCQkJcmV0dXJuIGVuY29kZXI7DQo+ID4gIAl9 DQo+ID4gIA0KPiA+ICAJLyogcGljayB0aGUgZmlyc3Qgb25lICovDQo+ID4gLQlkcm1fY29ubmVj dG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKQ0KPiA+ ICsJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2RlcikNCj4gPiAgCQlyZXR1cm4gZW5jb2RlcjsNCj4gPiAgDQo+ID4gIAlyZXR1cm4gTlVMTDsN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG0uYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG0uYw0KPiA+IGluZGV4IDBhNzFlZDFlNzc2Mi4uZDZlMzkyNWNhNjMzIDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2Rt LmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5jDQo+ID4gQEAgLTQ4MjIsNyArNDgyMiwxMSBAQCBzdGF0aWMgaW50IHRvX2RybV9jb25u ZWN0b3JfdHlwZShlbnVtDQo+ID4gc2lnbmFsX3R5cGUgc3QpDQo+ID4gIA0KPiA+ICBzdGF0aWMg c3RydWN0IGRybV9lbmNvZGVyICphbWRncHVfZG1fY29ubmVjdG9yX3RvX2VuY29kZXIoc3RydWN0 DQo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICB7DQo+ID4gLQlyZXR1cm4gZHJt X2VuY29kZXJfZmluZChjb25uZWN0b3ItPmRldiwgTlVMTCwgY29ubmVjdG9yLQ0KPiA+ID5lbmNv ZGVyX2lkc1swXSk7DQo+ID4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gKw0K PiA+ICsJLyogVGhlcmUgaXMgb25seSBvbmUgZW5jb2RlciBwZXIgY29ubmVjdG9yICovDQo+ID4g Kwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNv ZGVyKQ0KPiA+ICsJCXJldHVybiBlbmNvZGVyOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMg dm9pZCBhbWRncHVfZG1fZ2V0X25hdGl2ZV9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yDQo+ID4g KmNvbm5lY3RvcikNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9k ZS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4gPiBpbmRleCBkMzQ5 YzcyMTUwMWMuLmVlZjk1ZTFhZjA2YiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9tb2RlLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMN Cj4gPiBAQCAtNjg3LDE3ICs2ODcsNiBAQCBzdGF0aWMgdm9pZCBhc3RfZW5jb2Rlcl9kZXN0cm95 KHN0cnVjdA0KPiA+IGRybV9lbmNvZGVyICplbmNvZGVyKQ0KPiA+ICAJa2ZyZWUoZW5jb2Rlcik7 DQo+ID4gIH0NCj4gPiAgDQo+ID4gLQ0KPiA+IC1zdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICph c3RfYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1Y3QNCj4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpDQo+ID4gLXsNCj4gPiAtCWludCBlbmNfaWQgPSBjb25uZWN0b3ItPmVuY29kZXJfaWRzWzBd Ow0KPiA+IC0JLyogcGljayB0aGUgZW5jb2RlciBpZHMgKi8NCj4gPiAtCWlmIChlbmNfaWQpDQo+ ID4gLQkJcmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19p ZCk7DQo+ID4gLQlyZXR1cm4gTlVMTDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtDQo+ID4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgYXN0X2VuY19mdW5jcyA9IHsNCj4gPiAg CS5kZXN0cm95ID0gYXN0X2VuY29kZXJfZGVzdHJveSwNCj4gPiAgfTsNCj4gPiBAQCAtODQ3LDcg KzgzNiw2IEBAIHN0YXRpYyB2b2lkIGFzdF9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QNCj4gPiBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MNCj4gPiBhc3RfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsN Cj4gPiAgCS5tb2RlX3ZhbGlkID0gYXN0X21vZGVfdmFsaWQsDQo+ID4gIAkuZ2V0X21vZGVzID0g YXN0X2dldF9tb2RlcywNCj4gPiAtCS5iZXN0X2VuY29kZXIgPSBhc3RfYmVzdF9zaW5nbGVfZW5j b2RlciwNCj4gPiAgfTsNCj4gPiAgDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9mdW5jcyBhc3RfY29ubmVjdG9yX2Z1bmNzID0gew0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMNCj4gPiBpbmRleCA0NzA2NDM5ZmI0OTAuLmM0NDAwMjdjYjUzNyAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jDQo+ID4gQEAgLTEwNCw4 ICsxMDQsMTMgQEAgZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3QNCj4gPiBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gPiAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAq DQo+ID4gIHBpY2tfc2luZ2xlX2VuY29kZXJfZm9yX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQ0KPiA+ICB7DQo+ID4gLQlXQVJOX09OKGNvbm5lY3Rvci0+ZW5jb2Rl cl9pZHNbMV0pOw0KPiA+IC0JcmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYs IE5VTEwsIGNvbm5lY3Rvci0NCj4gPiA+ZW5jb2Rlcl9pZHNbMF0pOw0KPiA+ICsJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyOw0KPiA+ICsNCj4gPiArCVdBUk5fT04oaHdlaWdodDMyKGNvbm5l Y3Rvci0+cG9zc2libGVfZW5jb2RlcnMpID4gMSk7DQo+ID4gKwlkcm1fY29ubmVjdG9yX2Zvcl9l YWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKQ0KPiA+ICsJCXJldHVybiBl bmNvZGVyOw0KPiA+ICsNCj4gPiArCXJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBz dGF0aWMgaW50IGhhbmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZQ0KPiA+ICpzdGF0ZSwNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9j bGllbnRfbW9kZXNldC5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0 LmMNCj4gPiBpbmRleCBjODkyMmI3Y2FjMDkuLjg5NWI3M2YyMzA3OSAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMNCj4gPiBAQCAtNDE1LDkgKzQxNSw4IEBAIHN0 YXRpYyBib29sIGNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0YyhzdHJ1Y3QNCj4gPiBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsDQo+ID4gIAkJCQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiA+ ICB7DQo+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gLQlpbnQgaTsNCj4g PiAgDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVj dG9yLCBlbmNvZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9z c2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlpZiAoZW5jb2Rlci0+ cG9zc2libGVfY3J0Y3MgJiBkcm1fY3J0Y19tYXNrKGNydGMpKQ0KPiA+ICAJCQlyZXR1cm4gdHJ1 ZTsNCj4gPiAgCX0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYw0KPiA+IGluZGV4IDRj NzY2NjI0YjIwZC4uNDM4OTZjNzExYjUwIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY29ubmVjdG9yLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rv ci5jDQo+ID4gQEAgLTM2NSw4ICszNjUsNiBAQA0KPiA+IEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5l Y3Rvcl9hdHRhY2hfZWRpZF9wcm9wZXJ0eSk7DQo+ID4gIGludCBkcm1fY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gIAkJCQkgc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQ0KPiA+ICB7DQo+ID4gLQlpbnQgaTsNCj4gPiAtDQo+ ID4gIAkvKg0KPiA+ICAJICogSW4gdGhlIHBhc3QsIGRyaXZlcnMgaGF2ZSBhdHRlbXB0ZWQgdG8g bW9kZWwgdGhlIHN0YXRpYw0KPiA+IGFzc29jaWF0aW9uDQo+ID4gIAkgKiBvZiBjb25uZWN0b3Ig dG8gZW5jb2RlciBpbiBzaW1wbGUgY29ubmVjdG9yL2VuY29kZXIgZGV2aWNlcw0KPiA+IHVzaW5n IGENCj4gPiBAQCAtMzgxLDE4ICszNzksMTUgQEAgaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2Vu Y29kZXIoc3RydWN0DQo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPiA+ICAJaWYgKFdB Uk5fT04oY29ubmVjdG9yLT5lbmNvZGVyKSkNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAg DQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb25uZWN0b3ItPmVuY29kZXJfaWRz KTsgaSsrKSB7DQo+ID4gLQkJaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbaV0gPT0gMCkgew0K PiA+IC0JCQljb25uZWN0b3ItPmVuY29kZXJfaWRzW2ldID0gZW5jb2Rlci0+YmFzZS5pZDsNCj4g PiAtCQkJcmV0dXJuIDA7DQo+ID4gLQkJfQ0KPiA+IC0JfQ0KPiA+IC0JcmV0dXJuIC1FTk9NRU07 DQo+ID4gKwljb25uZWN0b3ItPnBvc3NpYmxlX2VuY29kZXJzIHw9IGRybV9lbmNvZGVyX21hc2so ZW5jb2Rlcik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgRVhQT1JUX1NZ TUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKTsNCj4gPiAgDQo+ID4gIC8qKg0KPiA+ IC0gKiBkcm1fY29ubmVjdG9yX2hhc19wb3NzaWJsZV9lbmNvZGVyIC0gY2hlY2sgaWYgdGhlIGNv bm5lY3RvciBhbmQNCj4gPiBlbmNvZGVyIGFyZSBhc3Nvc2ljYXRlZCB3aXRoIGVhY2ggb3RoZXIN Cj4gPiArICogZHJtX2Nvbm5lY3Rvcl9oYXNfcG9zc2libGVfZW5jb2RlciAtIGNoZWNrIGlmIHRo ZSBjb25uZWN0b3IgYW5kDQo+ID4gZW5jb2RlciBhcmUNCj4gPiArICogYXNzb2NpYXRlZCB3aXRo IGVhY2ggb3RoZXINCj4gPiAgICogQGNvbm5lY3RvcjogdGhlIGNvbm5lY3Rvcg0KPiA+ICAgKiBA ZW5jb2RlcjogdGhlIGVuY29kZXINCj4gPiAgICoNCj4gPiBAQCAtNDAyLDE1ICszOTcsNyBAQCBF WFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIpOw0KPiA+ICBib29sIGRy bV9jb25uZWN0b3JfaGFzX3Bvc3NpYmxlX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3INCj4g PiAqY29ubmVjdG9yLA0KPiA+ICAJCQkJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikNCj4g PiAgew0KPiA+IC0Jc3RydWN0IGRybV9lbmNvZGVyICplbmM7DQo+ID4gLQlpbnQgaTsNCj4gPiAt DQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9y LCBlbmMsIGkpIHsNCj4gPiAtCQlpZiAoZW5jID09IGVuY29kZXIpDQo+ID4gLQkJCXJldHVybiB0 cnVlOw0KPiA+IC0JfQ0KPiA+IC0NCj4gPiAtCXJldHVybiBmYWxzZTsNCj4gPiArCXJldHVybiBj b25uZWN0b3ItPnBvc3NpYmxlX2VuY29kZXJzICYNCj4gPiBkcm1fZW5jb2Rlcl9tYXNrKGVuY29k ZXIpOw0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9oYXNfcG9zc2li bGVfZW5jb2Rlcik7DQo+ID4gIA0KPiA+IEBAIC0yMTIxLDcgKzIxMDgsNiBAQCBpbnQgZHJtX21v ZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlDQo+ID4gKmRldiwgdm9pZCAqZGF0YSwN Cj4gPiAgCWludCBlbmNvZGVyc19jb3VudCA9IDA7DQo+ID4gIAlpbnQgcmV0ID0gMDsNCj4gPiAg CWludCBjb3BpZWQgPSAwOw0KPiA+IC0JaW50IGk7DQo+ID4gIAlzdHJ1Y3QgZHJtX21vZGVfbW9k ZWluZm8gdV9tb2RlOw0KPiA+ICAJc3RydWN0IGRybV9tb2RlX21vZGVpbmZvIF9fdXNlciAqbW9k ZV9wdHI7DQo+ID4gIAl1aW50MzJfdCBfX3VzZXIgKmVuY29kZXJfcHRyOw0KPiA+IEBAIC0yMTM2 LDE0ICsyMTIyLDEzIEBAIGludCBkcm1fbW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZp Y2UNCj4gPiAqZGV2LCB2b2lkICpkYXRhLA0KPiA+ICAJaWYgKCFjb25uZWN0b3IpDQo+ID4gIAkJ cmV0dXJuIC1FTk9FTlQ7DQo+ID4gIA0KPiA+IC0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3Nz aWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkNCj4gPiAtCQllbmNvZGVyc19jb3Vu dCsrOw0KPiA+ICsJZW5jb2RlcnNfY291bnQgPSBod2VpZ2h0MzIoY29ubmVjdG9yLT5wb3NzaWJs ZV9lbmNvZGVycyk7DQo+ID4gIA0KPiA+ICAJaWYgKChvdXRfcmVzcC0+Y291bnRfZW5jb2RlcnMg Pj0gZW5jb2RlcnNfY291bnQpICYmDQo+ID4gZW5jb2RlcnNfY291bnQpIHsNCj4gPiAgCQljb3Bp ZWQgPSAwOw0KPiA+ICAJCWVuY29kZXJfcHRyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNpZ25l ZA0KPiA+IGxvbmcpKG91dF9yZXNwLT5lbmNvZGVyc19wdHIpOw0KPiA+ICANCj4gPiAtCQlkcm1f Y29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLA0KPiA+IGVuY29k ZXIsIGkpIHsNCj4gPiArCQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIo Y29ubmVjdG9yLA0KPiA+IGVuY29kZXIpIHsNCj4gPiAgCQkJaWYgKHB1dF91c2VyKGVuY29kZXIt PmJhc2UuaWQsIGVuY29kZXJfcHRyICsNCj4gPiBjb3BpZWQpKSB7DQo+ID4gIAkJCQlyZXQgPSAt RUZBVUxUOw0KPiA+ICAJCQkJZ290byBvdXQ7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJvYmVfaGVscGVyLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVf aGVscGVyLmMNCj4gPiBpbmRleCAzNTFjYmM0MGYwZjguLmE3Yzg3YWJlODhkMCAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jDQo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYw0KPiA+IEBAIC05Myw3ICs5Myw2IEBAIGRy bV9tb2RlX3ZhbGlkYXRlX3BpcGVsaW5lKHN0cnVjdA0KPiA+IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsDQo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7DQo+ID4g IAllbnVtIGRybV9tb2RlX3N0YXR1cyByZXQgPSBNT0RFX09LOw0KPiA+ICAJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyOw0KPiA+IC0JaW50IGk7DQo+ID4gIA0KPiA+ICAJLyogU3RlcCAxOiBW YWxpZGF0ZSBhZ2FpbnN0IGNvbm5lY3RvciAqLw0KPiA+ICAJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9t b2RlX3ZhbGlkKGNvbm5lY3RvciwgbW9kZSk7DQo+ID4gQEAgLTEwMSw3ICsxMDAsNyBAQCBkcm1f bW9kZV92YWxpZGF0ZV9waXBlbGluZShzdHJ1Y3QNCj4gPiBkcm1fZGlzcGxheV9tb2RlICptb2Rl LA0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gIA0KPiA+ICAJLyogU3RlcCAyOiBWYWxpZGF0ZSBh Z2FpbnN0IGVuY29kZXJzIGFuZCBjcnRjcyAqLw0KPiA+IC0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFj aF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkNCj4gPiB7DQo+ID4gKwlk cm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVy KSB7DQo+ID4gIAkJc3RydWN0IGRybV9jcnRjICpjcnRjOw0KPiA+ICANCj4gPiAgCQlyZXQgPSBk cm1fZW5jb2Rlcl9tb2RlX3ZhbGlkKGVuY29kZXIsIG1vZGUpOw0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21vZGUuYw0KPiA+IGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMNCj4gPiBpbmRleCA1ZTc3OGI1ZjFhMTAuLjY4MjI2 NTU2MDQ0YiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X21vZGUuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5j DQo+ID4gQEAgLTE2MzgsMTYgKzE2MzgsNiBAQCBzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMN Cj4gPiBtZ2FfdmdhX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwN Cj4gPiAgCXJldHVybiBNT0RFX09LOw0KPiA+ICB9DQo+ID4gIA0KPiA+IC1zdGF0aWMgc3RydWN0 IGRybV9lbmNvZGVyICptZ2FfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QNCj4gPiBkcm1f Y29ubmVjdG9yDQo+ID4gLQkJCQkJCSAgKmNvbm5lY3RvcikNCj4gPiAtew0KPiA+IC0JaW50IGVu Y19pZCA9IGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbMF07DQo+ID4gLQkvKiBwaWNrIHRoZSBlbmNv ZGVyIGlkcyAqLw0KPiA+IC0JaWYgKGVuY19pZCkNCj4gPiAtCQlyZXR1cm4gZHJtX2VuY29kZXJf ZmluZChjb25uZWN0b3ItPmRldiwgTlVMTCwgZW5jX2lkKTsNCj4gPiAtCXJldHVybiBOVUxMOw0K PiA+IC19DQo+ID4gLQ0KPiA+ICBzdGF0aWMgdm9pZCBtZ2FfY29ubmVjdG9yX2Rlc3Ryb3koc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgew0KPiA+ICAJc3RydWN0IG1nYV9j b25uZWN0b3IgKm1nYV9jb25uZWN0b3IgPQ0KPiA+IHRvX21nYV9jb25uZWN0b3IoY29ubmVjdG9y KTsNCj4gPiBAQCAtMTY1OSw3ICsxNjQ5LDYgQEAgc3RhdGljIHZvaWQgbWdhX2Nvbm5lY3Rvcl9k ZXN0cm95KHN0cnVjdA0KPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcw0KPiA+IG1nYV92Z2FfY29u bmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsNCj4gPiAgCS5nZXRfbW9kZXMgPSBtZ2FfdmdhX2dldF9t b2RlcywNCj4gPiAgCS5tb2RlX3ZhbGlkID0gbWdhX3ZnYV9tb2RlX3ZhbGlkLA0KPiA+IC0JLmJl c3RfZW5jb2RlciA9IG1nYV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLA0KPiA+ICB9Ow0KPiA+ICAN Cj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIG1nYV92Z2FfY29u bmVjdG9yX2Z1bmNzID0NCj4gPiB7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L2Rpc3BudjA0L2Rpc3AuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlz cG52MDQvZGlzcC5jDQo+ID4gaW5kZXggZGM2NDg2M2I1ZmQ4Li40NGVlODJkMGM5YjYgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5jDQo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5jDQo+ID4gQEAgLTI1 Niw3ICsyNTYsNyBAQCBudjA0X2Rpc3BsYXlfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp DQo+ID4gIA0KPiA+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNvbm5lY3RvciwgY3QsDQo+ ID4gIAkJCQkgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsDQo+ID4gaGVhZCkgew0K PiA+IC0JCWlmICghY29ubmVjdG9yLT5lbmNvZGVyX2lkc1swXSkgew0KPiA+ICsJCWlmICghY29u bmVjdG9yLT5wb3NzaWJsZV9lbmNvZGVycykgew0KPiA+ICAJCQlOVl9XQVJOKGRybSwgIiVzIGhh cyBubyBlbmNvZGVycywgcmVtb3ZpbmdcbiIsDQo+ID4gIAkJCQljb25uZWN0b3ItPm5hbWUpOw0K PiA+ICAJCQljb25uZWN0b3ItPmZ1bmNzLT5kZXN0cm95KGNvbm5lY3Rvcik7DQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjUwL2Rpc3AuYw0KPiA+IGIvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlzcC5jDQo+ID4gaW5kZXggMzA3NTg0MTA3 ZDc3Li45OGM4NzE5NWQ3MTEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvZGlzcG52NTAvZGlzcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlz cG52NTAvZGlzcC5jDQo+ID4gQEAgLTIzOTEsNyArMjM5MSw3IEBAIG52NTBfZGlzcGxheV9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gPiAgDQo+ID4gIAkvKiBjdWxsIGFueSBjb25u ZWN0b3JzIHdlIGNyZWF0ZWQgdGhhdCBkb24ndCBoYXZlIGFuIGVuY29kZXIgKi8NCj4gPiAgCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShjb25uZWN0b3IsIHRtcCwgJmRldi0NCj4gPiA+bW9kZV9j b25maWcuY29ubmVjdG9yX2xpc3QsIGhlYWQpIHsNCj4gPiAtCQlpZiAoY29ubmVjdG9yLT5lbmNv ZGVyX2lkc1swXSkNCj4gPiArCQlpZiAoY29ubmVjdG9yLT5wb3NzaWJsZV9lbmNvZGVycykNCj4g PiAgCQkJY29udGludWU7DQo+ID4gIA0KPiA+ICAJCU5WX1dBUk4oZHJtLCAiJXMgaGFzIG5vIGVu Y29kZXJzLCByZW1vdmluZ1xuIiwNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9jb25uZWN0b3IuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bm91dmVhdV9jb25uZWN0b3IuYw0KPiA+IGluZGV4IDU2ODcxZDM0ZTNmYi4uM2E1ZGIxN2JjNWM3 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY29ubmVj dG9yLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nvbm5lY3Rv ci5jDQo+ID4gQEAgLTM2NSw5ICszNjUsOCBAQCBmaW5kX2VuY29kZXIoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwNCj4gPiBpbnQgdHlwZSkNCj4gPiAgew0KPiA+ICAJc3RydWN0IG5v dXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlcjsNCj4gPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j Ow0KPiA+IC0JaW50IGk7DQo+ID4gIA0KPiA+IC0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3Nz aWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jLCBpKSB7DQo+ID4gKwlkcm1fY29ubmVjdG9yX2Zv cl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmMpIHsNCj4gPiAgCQludl9lbmNv ZGVyID0gbm91dmVhdV9lbmNvZGVyKGVuYyk7DQo+ID4gIA0KPiA+ICAJCWlmICh0eXBlID09IERD Ql9PVVRQVVRfQU5ZIHx8DQo+ID4gQEAgLTQxNCwxMCArNDEzLDEwIEBAIG5vdXZlYXVfY29ubmVj dG9yX2RkY19kZXRlY3Qoc3RydWN0DQo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Ow0KPiA+ICAJc3RydWN0 IG5vdXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlciA9IE5VTEwsICpmb3VuZCA9IE5VTEw7DQo+ID4g IAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gLQlpbnQgaSwgcmV0Ow0KPiA+ICsJ aW50IHJldDsNCj4gPiAgCWJvb2wgc3dpdGNoZXJvb19kZGMgPSBmYWxzZTsNCj4gPiAgDQo+ID4g LQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNv ZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5j b2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQludl9lbmNvZGVyID0gbm91dmVhdV9l bmNvZGVyKGVuY29kZXIpOw0KPiA+ICANCj4gPiAgCQlzd2l0Y2ggKG52X2VuY29kZXItPmRjYi0+ dHlwZSkgew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9j b25uZWN0b3JzLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3Rv cnMuYw0KPiA+IGluZGV4IGI2ODRjZDcxOTYxMi4uYzA3NDI3ZDNjMTk5IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYw0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYw0KPiA+IEBAIC0yNDks MTEgKzI0OSwxMCBAQCByYWRlb25fY29ubmVjdG9yX3VwZGF0ZV9zY3JhdGNoX3JlZ3Moc3RydWN0 DQo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIGRybV9jDQo+ID4gIAlzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MgKmNvbm5lY3Rvcl9mdW5jcyA9DQo+ID4gY29ubmVjdG9yLT5oZWxwZXJfcHJp dmF0ZTsNCj4gPiAgCWJvb2wgY29ubmVjdGVkOw0KPiA+IC0JaW50IGk7DQo+ID4gIA0KPiA+ICAJ YmVzdF9lbmNvZGVyID0gY29ubmVjdG9yX2Z1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsN Cj4gPiAgDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlpZiAoKGVuY29k ZXIgPT0gYmVzdF9lbmNvZGVyKSAmJiAoc3RhdHVzID09DQo+ID4gY29ubmVjdG9yX3N0YXR1c19j b25uZWN0ZWQpKQ0KPiA+ICAJCQljb25uZWN0ZWQgPSB0cnVlOw0KPiA+ICAJCWVsc2UNCj4gPiBA QCAtMjY5LDkgKzI2OCw4IEBAIHJhZGVvbl9jb25uZWN0b3JfdXBkYXRlX3NjcmF0Y2hfcmVncyhz dHJ1Y3QNCj4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gZHJtX2MNCj4gPiAgc3Rh dGljIHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2ZpbmRfZW5jb2RlcihzdHJ1Y3QNCj4gPiBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBlbmNvZGVyX3R5cGUpDQo+ID4gIHsNCj4gPiAg CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsNCj4gPiAtCWludCBpOw0KPiA+ICANCj4gPiAt CWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29k ZXIsIGkpDQo+ID4gew0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNv ZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikgew0KPiA+ICAJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5 cGUgPT0gZW5jb2Rlcl90eXBlKQ0KPiA+ICAJCQlyZXR1cm4gZW5jb2RlcjsNCj4gPiAgCX0NCj4g PiBAQCAtMzgwLDEwICszNzgsOSBAQCBzdGF0aWMgaW50IHJhZGVvbl9kZGNfZ2V0X21vZGVzKHN0 cnVjdA0KPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgc3RhdGljIHN0cnVjdCBk cm1fZW5jb2RlciAqcmFkZW9uX2Jlc3Rfc2luZ2xlX2VuY29kZXIoc3RydWN0DQo+ID4gZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7DQo+ID4gLQlpbnQgaTsNCj4gPiAgDQo+ID4gIAkvKiBwaWNrIHRoZSBmaXJzdCBvbmUg Ki8NCj4gPiAtCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0 b3IsIGVuY29kZXIsIGkpDQo+ID4gKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2Vu Y29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKQ0KPiA+ICAJCXJldHVybiBlbmNvZGVyOw0KPiA+ICAN Cj4gPiAgCXJldHVybiBOVUxMOw0KPiA+IEBAIC00MjgsMTQgKzQyNSwxMyBAQA0KPiA+IHJhZGVv bl9jb25uZWN0b3JfYW5hbG9nX2VuY29kZXJfY29uZmxpY3Rfc29sdmUoc3RydWN0IGRybV9jb25u ZWN0b3INCj4gPiAqY29ubmVjdG9yLA0KPiA+ICANCj4gPiAgCWxpc3RfZm9yX2VhY2hfZW50cnko Y29uZmxpY3QsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCANCj4gPiBoZWFkKSB7 DQo+ID4gIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmM7DQo+ID4gLQkJaW50IGk7DQo+ID4gIA0K PiA+ICAJCWlmIChjb25mbGljdCA9PSBjb25uZWN0b3IpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ ICANCj4gPiAgCQlyYWRlb25fY29uZmxpY3QgPSB0b19yYWRlb25fY29ubmVjdG9yKGNvbmZsaWN0 KTsNCj4gPiAgDQo+ID4gLQkJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVy KGNvbmZsaWN0LCBlbmMsDQo+ID4gaSkgew0KPiA+ICsJCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25mbGljdCwgZW5jKQ0KPiA+IHsNCj4gPiAgCQkJLyogaWYgdGhl IElEcyBtYXRjaCAqLw0KPiA+ICAJCQlpZiAoZW5jID09IGVuY29kZXIpIHsNCj4gPiAgCQkJCWlm IChjb25mbGljdC0+c3RhdHVzICE9DQo+ID4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpDQo+ ID4gQEAgLTEzNjMsOSArMTM1OSw3IEBAIHJhZGVvbl9kdmlfZGV0ZWN0KHN0cnVjdCBkcm1fY29u bmVjdG9yDQo+ID4gKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4gPiAgDQo+ID4gIAkvKiBmaW5k IGFuYWxvZyBlbmNvZGVyICovDQo+ID4gIAlpZiAocmFkZW9uX2Nvbm5lY3Rvci0+ZGFjX2xvYWRf ZGV0ZWN0KSB7DQo+ID4gLQkJaW50IGk7DQo+ID4gLQ0KPiA+IC0JCWRybV9jb25uZWN0b3JfZm9y X2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsDQo+ID4gZW5jb2RlciwgaSkgew0KPiA+ ICsJCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsDQo+ ID4gZW5jb2Rlcikgew0KPiA+ICAJCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlICE9DQo+ID4g RFJNX01PREVfRU5DT0RFUl9EQUMgJiYNCj4gPiAgCQkJICAgIGVuY29kZXItPmVuY29kZXJfdHlw ZSAhPQ0KPiA+IERSTV9NT0RFX0VOQ09ERVJfVFZEQUMpDQo+ID4gIAkJCQljb250aW51ZTsNCj4g PiBAQCAtMTQ0Myw5ICsxNDM3LDggQEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcg0KPiA+ICpy YWRlb25fZHZpX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAg ew0KPiA+ICAJc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IgPQ0KPiA+ IHRvX3JhZGVvbl9jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gPiAgCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsNCj4gPiAtCWludCBpOw0KPiA+ICANCj4gPiAtCWRybV9jb25uZWN0b3JfZm9y X2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpDQo+ID4gew0KPiA+ ICsJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5j b2Rlcikgew0KPiA+ICAJCWlmIChyYWRlb25fY29ubmVjdG9yLT51c2VfZGlnaXRhbCA9PSB0cnVl KSB7DQo+ID4gIAkJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUgPT0NCj4gPiBEUk1fTU9ERV9F TkNPREVSX1RNRFMpDQo+ID4gIAkJCQlyZXR1cm4gZW5jb2RlcjsNCj4gPiBAQCAtMTQ2MCw3ICsx NDUzLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcg0KPiA+ICpyYWRlb25fZHZpX2VuY29k ZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgDQo+ID4gIAkvKiB0aGVu IGNoZWNrIHVzZSBkaWdpdGlhbCAqLw0KPiA+ICAJLyogcGljayB0aGUgZmlyc3Qgb25lICovDQo+ ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyLCBpKQ0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVy KGNvbm5lY3RvciwgZW5jb2RlcikNCj4gPiAgCQlyZXR1cm4gZW5jb2RlcjsNCj4gPiAgDQo+ID4g IAlyZXR1cm4gTlVMTDsNCj4gPiBAQCAtMTYwMyw5ICsxNTk2LDggQEAgdTE2DQo+ID4gcmFkZW9u X2Nvbm5lY3Rvcl9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChzdHJ1Y3QNCj4gPiBk cm1fY29ubmVjdG9yICpjb25uDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsNCj4gPiAgCXN0cnVjdCByYWRlb25fZW5jb2RlciAqcmFkZW9uX2VuY29kZXI7DQo+ID4g LQlpbnQgaTsNCj4gPiAgDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2Vu Y29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3Jf Zm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQly YWRlb25fZW5jb2RlciA9IHRvX3JhZGVvbl9lbmNvZGVyKGVuY29kZXIpOw0KPiA+ICANCj4gPiAg CQlzd2l0Y2ggKHJhZGVvbl9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7DQo+ID4gQEAgLTE2MjQsMTAg KzE2MTYsOSBAQCBzdGF0aWMgYm9vbA0KPiA+IHJhZGVvbl9jb25uZWN0b3JfZW5jb2Rlcl9pc19o YnIyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ID4gIHsNCj4gPiAgCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcjsNCj4gPiAgCXN0cnVjdCByYWRlb25fZW5jb2RlciAqcmFk ZW9uX2VuY29kZXI7DQo+ID4gLQlpbnQgaTsNCj4gPiAgCWJvb2wgZm91bmQgPSBmYWxzZTsNCj4g PiAgDQo+ID4gLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVj dG9yLCBlbmNvZGVyLCBpKQ0KPiA+IHsNCj4gPiArCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9z c2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsNCj4gPiAgCQlyYWRlb25fZW5jb2Rl ciA9IHRvX3JhZGVvbl9lbmNvZGVyKGVuY29kZXIpOw0KPiA+ICAJCWlmIChyYWRlb25fZW5jb2Rl ci0+Y2FwcyAmDQo+ID4gQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSMikNCj4gPiAgCQkJZm91 bmQgPSB0cnVlOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25u ZWN0b3IuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfY29ubmVjdG9yLmMNCj4gPiBp bmRleCBkZGI2MWE2MGM2MTAuLmI0YWUzZTg5YTdiNCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS91 ZGwvdWRsX2Nvbm5lY3Rvci5jDQo+ID4gQEAgLTkwLDEzICs5MCw2IEBAIHVkbF9kZXRlY3Qoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbA0KPiA+IGZvcmNlKQ0KPiA+ICAJcmV0 dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPiA+ICB9DQo+ID4gIA0KPiA+IC1zdGF0 aWMgc3RydWN0IGRybV9lbmNvZGVyKg0KPiA+IC11ZGxfYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+IC17DQo+ID4gLQlpbnQgZW5jX2lkID0g Y29ubmVjdG9yLT5lbmNvZGVyX2lkc1swXTsNCj4gPiAtCXJldHVybiBkcm1fZW5jb2Rlcl9maW5k KGNvbm5lY3Rvci0+ZGV2LCBOVUxMLCBlbmNfaWQpOw0KPiA+IC19DQo+ID4gLQ0KPiA+ICBzdGF0 aWMgaW50IHVkbF9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yDQo+ ID4gKmNvbm5lY3RvciwNCj4gPiAgCQkJCSAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3Bl cnR5LA0KPiA+ICAJCQkJICAgICAgdWludDY0X3QgdmFsKQ0KPiA+IEBAIC0xMjAsNyArMTEzLDYg QEAgc3RhdGljIHZvaWQgdWRsX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdA0KPiA+IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikNCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcw0KPiA+IHVkbF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gew0KPiA+ICAJ LmdldF9tb2RlcyA9IHVkbF9nZXRfbW9kZXMsDQo+ID4gIAkubW9kZV92YWxpZCA9IHVkbF9tb2Rl X3ZhbGlkLA0KPiA+IC0JLmJlc3RfZW5jb2RlciA9IHVkbF9iZXN0X3NpbmdsZV9lbmNvZGVyLA0K PiA+ICB9Ow0KPiA+ICANCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1 bmNzIHVkbF9jb25uZWN0b3JfZnVuY3MgPSB7DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaA0KPiA+IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oDQo+ID4g aW5kZXggNjgxY2I1OTBmOTUyLi5jNmU5OTNlNzhkYmQgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oDQo+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rv ci5oDQo+ID4gQEAgLTEyODgsMTIgKzEyODgsMTIgQEAgc3RydWN0IGRybV9jb25uZWN0b3Igew0K PiA+ICAJLyoqIEBvdmVycmlkZV9lZGlkOiBoYXMgdGhlIEVESUQgYmVlbiBvdmVyd3JpdHRlbiB0 aHJvdWdoDQo+ID4gZGVidWdmcyBmb3IgdGVzdGluZz8gKi8NCj4gPiAgCWJvb2wgb3ZlcnJpZGVf ZWRpZDsNCj4gPiAgDQo+ID4gLSNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUiAzDQo+ ID4gIAkvKioNCj4gPiAtCSAqIEBlbmNvZGVyX2lkczogVmFsaWQgZW5jb2RlcnMgZm9yIHRoaXMg Y29ubmVjdG9yLiBQbGVhc2Ugb25seQ0KPiA+IHVzZQ0KPiA+IC0JICogZHJtX2Nvbm5lY3Rvcl9m b3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKCkgdG8gZW51bWVyYXRlDQo+ID4gdGhlc2UuDQo+ID4g KwkgKiBAcG9zc2libGVfZW5jb2RlcnM6IEJpdCBtYXNrIG9mIGVuY29kZXJzIHRoYXQgY2FuIGRy aXZlIHRoaXMNCj4gPiArCSAqIGNvbm5lY3RvciwgZHJtX2VuY29kZXJfaW5kZXgoKSBkZXRlcm1p bmVzIHRoZSBpbmRleCBpbnRvIHRoZQ0KPiA+IGJpdGZpZWxkDQo+ID4gKwkgKiBhbmQgdGhlIGJp dHMgYXJlIHNldCB3aXRoIGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoKS4NCj4gPiAgCSAq Lw0KPiA+IC0JdWludDMyX3QgZW5jb2Rlcl9pZHNbRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUl07 DQo+ID4gKwl1MzIgcG9zc2libGVfZW5jb2RlcnM7DQo+ID4gIA0KPiA+ICAJLyoqDQo+ID4gIAkg KiBAZW5jb2RlcjogQ3VycmVudGx5IGJvdW5kIGVuY29kZXIgZHJpdmluZyB0aGlzIGNvbm5lY3Rv ciwgaWYNCj4gPiBhbnkuDQo+ID4gQEAgLTE2MDgsMTMgKzE2MDgsOSBAQCBib29sDQo+ID4gZHJt X2Nvbm5lY3Rvcl9oYXNfcG9zc2libGVfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLA0KPiA+ICAgKiBkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIg LSBpdGVyYXRlIGNvbm5lY3RvcidzDQo+ID4gcG9zc2libGUgZW5jb2RlcnMNCj4gPiAgICogQGNv bm5lY3RvcjogJnN0cnVjdCBkcm1fY29ubmVjdG9yIHBvaW50ZXINCj4gPiAgICogQGVuY29kZXI6 ICZzdHJ1Y3QgZHJtX2VuY29kZXIgcG9pbnRlciB1c2VkIGFzIGN1cnNvcg0KPiA+IC0gKiBAX19p OiBpbnQgaXRlcmF0aW9uIGN1cnNvciwgZm9yIG1hY3JvLWludGVybmFsIHVzZQ0KPiA+ICAgKi8N Cj4gPiAtI2RlZmluZSBkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29u bmVjdG9yLA0KPiA+IGVuY29kZXIsIF9faSkgXA0KPiA+IC0JZm9yICgoX19pKSA9IDA7IChfX2kp IDwgQVJSQVlfU0laRSgoY29ubmVjdG9yKS0+ZW5jb2Rlcl9pZHMpICYmDQo+ID4gXA0KPiA+IC0J CSAgICAgKGNvbm5lY3RvciktPmVuY29kZXJfaWRzWyhfX2kpXSAhPSAwOyAoX19pKSsrKSBcDQo+ ID4gLQkJZm9yX2VhY2hfaWYoKGVuY29kZXIpID0gXA0KPiA+IC0JCQkgICAgZHJtX2VuY29kZXJf ZmluZCgoY29ubmVjdG9yKS0+ZGV2LCBOVUxMLCBcDQo+ID4gLQkJCQkJICAgICAoY29ubmVjdG9y KS0NCj4gPiA+ZW5jb2Rlcl9pZHNbKF9faSldKSkgXA0KPiA+ICsjZGVmaW5lIGRybV9jb25uZWN0 b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsDQo+ID4gZW5jb2RlcikgXA0K PiA+ICsJZHJtX2Zvcl9lYWNoX2VuY29kZXJfbWFzayhlbmNvZGVyLCAoY29ubmVjdG9yKS0+ZGV2 LCBcDQo+ID4gKwkJCQkgIChjb25uZWN0b3IpLT5wb3NzaWJsZV9lbmNvZGVycykNCj4gPiAgDQo+ ID4gICNlbmRpZg0KPiA+IC0tIA0KPiA+IDIuMjMuMA0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9ub3V2ZWF1