From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nayan Deshmukh Subject: Re: [PATCH 2/3] drm/scheduler: add documentation Date: Mon, 28 May 2018 14:01:49 +0530 Message-ID: References: <20180525044548.21014-1-nayan26deshmukh@gmail.com> <20180525044548.21014-2-nayan26deshmukh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 10D626E185 for ; Mon, 28 May 2018 08:32:30 +0000 (UTC) Received: by mail-pg0-x243.google.com with SMTP id w12-v6so3773201pgc.6 for ; Mon, 28 May 2018 01:32:30 -0700 (PDT) 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: Daniel Vetter Cc: Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , dri-devel List-Id: dri-devel@lists.freedesktop.org SSBoYXZlIGRvbmUgdGhhdCBhbHJlYWR5LCBzZW50IGEgcGF0Y2ggd2l0aCB0aGlzIG9uZS4gVGhl IGxhc3QgcGF0Y2gKb2YgdGhpcyBzZXJpZXMuIEkgaGF2ZSB0cmllZCB0byB0YWtlIGNhcmUgb2Yg YWxsIHRoZSBoeXBlcmxpbmtzLgoKT24gTW9uLCBNYXkgMjgsIDIwMTggYXQgMTozOSBQTSwgRGFu aWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToKPiBPbiBGcmksIE1heSAyNSwgMjAx OCBhdCA2OjQ1IEFNLCBOYXlhbiBEZXNobXVraAo+IDxuYXlhbjI2ZGVzaG11a2hAZ21haWwuY29t PiB3cm90ZToKPj4gY29udmVydCBleGlzdGluZyByYXcgY29tbWVudHMgaW50byBrZXJuZWwtZG9j IGZvcm1hdCBhcyB3ZWxsCj4+IGFzIGFkZCBuZXcgZG9jdW1lbnRhdGlvbgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4+IFNpZ25l ZC1vZmYtYnk6IE5heWFuIERlc2htdWtoIDxuYXlhbjI2ZGVzaG11a2hAZ21haWwuY29tPgo+PiAt LS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5jIHwgMjE0ICsr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+PiAgaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxl ci5oICAgICAgICAgICAgICAgfCAxNTMgKysrKysrKysrKysrKysrKystLS0tCj4+ICAyIGZpbGVz IGNoYW5nZWQsIDI5NiBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKPgo+IFBsZWFzZSBh bHNvIGluY2x1ZGUgYWxsIHRoZSBuZXcgc2NoZWR1bGVyIGRvY3MgaW50bwo+IERvY3VtZW50YXRp b24vZ3B1L2RybS1tbS5yc3QgKEkgdGhpbmsgdGhhdCdzIHRoZSBtb3N0IHN1aXRhYmxlIHBsYWNl KQo+IGFuZCBtYWtlIHN1cmUgdGhlIHJlc3VsdGluZyBkb2NzIGxvb2sgZ29vZCBhbmQgaHlwZXJs aW5rcyBhbGwgd29yawo+IGNvcnJlY3RseSB1c2luZwo+Cj4gJCBtYWtlIGh0bWxkb2NzCj4KPiBU aGFua3MsIERhbmllbAo+Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1 bGVyL2dwdV9zY2hlZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvZ3B1X3NjaGVk dWxlci5jCj4+IGluZGV4IDQ0ZDQ4MDc2OGRmZS4uYzcwYzk4M2UzZTc0IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwo+PiBAQCAtMjEsNiArMjEsMjkg QEAKPj4gICAqCj4+ICAgKi8KPj4KPj4gKy8qKgo+PiArICogRE9DOiBPdmVydmlldwo+PiArICoK Pj4gKyAqIFRoZSBHUFUgc2NoZWR1bGVyIHByb3ZpZGVzIGVudGl0aWVzIHdoaWNoIGFsbG93IHVz ZXJzcGFjZSB0byBwdXNoIGpvYnMKPj4gKyAqIGludG8gc29mdHdhcmUgcXVldWVzIHdoaWNoIGFy ZSB0aGVuIHNjaGVkdWxlZCBvbiBhIGhhcmR3YXJlIHJ1biBxdWV1ZS4KPj4gKyAqIFRoZSBzb2Z0 d2FyZSBxdWV1ZXMgaGF2ZSBhIHByaW9yaXR5IGFtb25nIHRoZW0uIFRoZSBzY2hlZHVsZXIgc2Vs ZWN0cyB0aGUgZW50aXRpZXMKPj4gKyAqIGZyb20gdGhlIHJ1biBxdWV1ZSB1c2luZyBGSUZPLiBU aGUgc2NoZWR1bGVyIHByb3ZpZGVzIGRlcGVuZGVuY3kgaGFuZGxpbmcKPj4gKyAqIGZlYXR1cmVz IGFtb25nIGpvYnMuIFRoZSBkcml2ZXIgaXMgc3VwcG9zZWQgdG8gcHJvdmlkZSBmdW5jdGlvbnMg Zm9yIGJhY2tlbmQKPj4gKyAqIG9wZXJhdGlvbnMgdG8gdGhlIHNjaGVkdWxlciBsaWtlIHN1Ym1p dHRpbmcgYSBqb2IgdG8gaGFyZHdhcmUgcnVuIHF1ZXVlLAo+PiArICogcmV0dXJuaW5nIHRoZSBk ZXBlbmRlbmN5IG9mIGEgam9iIGV0Yy4KPj4gKyAqCj4+ICsgKiBUaGUgb3JnYW5pc2F0aW9uIG9m IHRoZSBzY2hlZHVsZXIgaXMgdGhlIGZvbGxvd2luZzotCj4+ICsgKgo+PiArICogMS4gRWFjaCBy aW5nIGJ1ZmZlciBoYXMgb25lIHNjaGVkdWxlcgo+PiArICogMi4gRWFjaCBzY2hlZHVsZXIgaGFz IG11bHRpcGxlIHJ1biBxdWV1ZXMgd2l0aCBkaWZmZXJlbnQgcHJpb3JpdGllcwo+PiArICogICAg KGkuZS4gSElHSF9IVyxISUdIX1NXLCBLRVJORUwsIE5PUk1BTCkKPj4gKyAqIDMuIEVhY2ggcnVu IHF1ZXVlIGhhcyBhIHF1ZXVlIG9mIGVudGl0aWVzIHRvIHNjaGVkdWxlCj4+ICsgKiA0LiBFbnRp dGllcyB0aGVtc2VsdmVzIG1haW50YWluIGEgcXVldWUgb2Ygam9icyB0aGF0IHdpbGwgYmUgc2No ZWR1bGVkIG9uCj4+ICsgKiAgICB0aGUgaGFyZHdhcmUuCj4+ICsgKgo+PiArICogVGhlIGpvYnMg aW4gYSBlbnRpdHkgYXJlIGFsd2F5cyBzY2hlZHVsZWQgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSB3 ZXJlIHB1c2hlZC4KPj4gKyAqLwo+PiArCj4+ICAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgo+ PiAgI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgo+ PiBAQCAtMzksNyArNjIsMTMgQEAgc3RhdGljIGJvb2wgZHJtX3NjaGVkX2VudGl0eV9pc19yZWFk eShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KTsKPj4gIHN0YXRpYyB2b2lkIGRybV9z Y2hlZF93YWtldXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7Cj4+ICBzdGF0aWMg dm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRt YV9mZW5jZV9jYiAqY2IpOwo+Pgo+PiAtLyogSW5pdGlhbGl6ZSBhIGdpdmVuIHJ1biBxdWV1ZSBz dHJ1Y3QgKi8KPj4gKy8qKgo+PiArICogZHJtX3NjaGVkX3JxX2luaXQgLSBpbml0aWFsaXplIGEg Z2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdAo+PiArICoKPj4gKyAqIEBycTogc2NoZWR1bGVyIHJ1biBx dWV1ZQo+PiArICoKPj4gKyAqIEluaXRpYWxpemVzIGEgc2NoZWR1bGVyIHJ1bnF1ZXVlLgo+PiAr ICovCj4+ICBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcnFfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX3Jx ICpycSkKPj4gIHsKPj4gICAgICAgICBzcGluX2xvY2tfaW5pdCgmcnEtPmxvY2spOwo+PiBAQCAt NDcsNiArNzYsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX2luaXQoc3RydWN0IGRybV9z Y2hlZF9ycSAqcnEpCj4+ICAgICAgICAgcnEtPmN1cnJlbnRfZW50aXR5ID0gTlVMTDsKPj4gIH0K Pj4KPj4gKy8qKgo+PiArICogZHJtX3NjaGVkX3JxX2FkZF9lbnRpdHkgLSBhZGQgYW4gZW50aXR5 Cj4+ICsgKgo+PiArICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1ZXVlCj4+ICsgKiBAZW50aXR5OiBz Y2hlZHVsZXIgZW50aXR5Cj4+ICsgKgo+PiArICogQWRkcyBhIHNjaGVkdWxlciBlbnRpdHkgdG8g dGhlIHJ1biBxdWV1ZS4KPj4gKyAqLwo+PiAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX2FkZF9l bnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4+ICB7Cj4+IEBA IC01Nyw2ICs5NCwxNCBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcnFfYWRkX2VudGl0eShzdHJ1 Y3QgZHJtX3NjaGVkX3JxICpycSwKPj4gICAgICAgICBzcGluX3VubG9jaygmcnEtPmxvY2spOwo+ PiAgfQo+Pgo+PiArLyoqCj4+ICsgKiBkcm1fc2NoZWRfcnFfcmVtb3ZlX2VudGl0eSAtIHJlbW92 ZSBhbiBlbnRpdHkKPj4gKyAqCj4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPj4gKyAq IEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKPj4gKyAqCj4+ICsgKiBSZW1vdmVzIGEgc2NoZWR1 bGVyIGVudGl0eSBmcm9tIHRoZSBydW4gcXVldWUuCj4+ICsgKi8KPj4gIHN0YXRpYyB2b2lkIGRy bV9zY2hlZF9ycV9yZW1vdmVfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxLAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0 eSAqZW50aXR5KQo+PiAgewo+PiBAQCAtNzAsOSArMTE1LDkgQEAgc3RhdGljIHZvaWQgZHJtX3Nj aGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCj4+ICB9Cj4+Cj4+ ICAvKioKPj4gLSAqIFNlbGVjdCBhbiBlbnRpdHkgd2hpY2ggY291bGQgcHJvdmlkZSBhIGpvYiB0 byBydW4KPj4gKyAqIGRybV9zY2hlZF9ycV9zZWxlY3RfZW50aXR5IC0gU2VsZWN0IGFuIGVudGl0 eSB3aGljaCBjb3VsZCBwcm92aWRlIGEgam9iIHRvIHJ1bgo+PiAgICoKPj4gLSAqIEBycSAgICAg ICAgIFRoZSBydW4gcXVldWUgdG8gY2hlY2suCj4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVl dWUgdG8gY2hlY2suCj4+ICAgKgo+PiAgICogVHJ5IHRvIGZpbmQgYSByZWFkeSBlbnRpdHksIHJl dHVybnMgTlVMTCBpZiBub25lIGZvdW5kLgo+PiAgICovCj4+IEBAIC0xMTIsMTUgKzE1NywxNiBA QCBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKPj4g IH0KPj4KPj4gIC8qKgo+PiAtICogSW5pdCBhIGNvbnRleHQgZW50aXR5IHVzZWQgYnkgc2NoZWR1 bGVyIHdoZW4gc3VibWl0IHRvIEhXIHJpbmcuCj4+ICsgKiBkcm1fc2NoZWRfZW50aXR5X2luaXQg LSBJbml0IGEgY29udGV4dCBlbnRpdHkgdXNlZCBieSBzY2hlZHVsZXIgd2hlbgo+PiArICogc3Vi bWl0IHRvIEhXIHJpbmcuCj4+ICAgKgo+PiAtICogQHNjaGVkICAgICAgVGhlIHBvaW50ZXIgdG8g dGhlIHNjaGVkdWxlcgo+PiAtICogQGVudGl0eSAgICAgVGhlIHBvaW50ZXIgdG8gYSB2YWxpZCBk cm1fc2NoZWRfZW50aXR5Cj4+IC0gKiBAcnEgICAgICAgICBUaGUgcnVuIHF1ZXVlIHRoaXMgZW50 aXR5IGJlbG9uZ3MKPj4gLSAqIEBndWlsdHkgICAgICBhdG9taWNfdCBzZXQgdG8gMSB3aGVuIGEg am9iIG9uIHRoaXMgcXVldWUKPj4gLSAqICAgICAgICAgICAgICBpcyBmb3VuZCB0byBiZSBndWls dHkgY2F1c2luZyBhIHRpbWVvdXQKPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4+ ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5IHRvIGluaXQKPj4gKyAqIEBycTogdGhlIHJ1 biBxdWV1ZSB0aGlzIGVudGl0eSBiZWxvbmdzCj4+ICsgKiBAZ3VpbHR5OiBhdG9taWNfdCBzZXQg dG8gMSB3aGVuIGEgam9iIG9uIHRoaXMgcXVldWUKPj4gKyAqICAgICAgICAgIGlzIGZvdW5kIHRv IGJlIGd1aWx0eSBjYXVzaW5nIGEgdGltZW91dAo+PiAgICoKPj4gLSAqIHJldHVybiAwIGlmIHN1 Y2NlZWQuIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZQo+PiArICogUmV0dXJucyAwIG9u IHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+ICAqLwo+PiAg aW50IGRybV9zY2hlZF9lbnRpdHlfaW5pdChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVk LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpl bnRpdHksCj4+IEBAIC0xNDksMTAgKzE5NSwxMCBAQCBpbnQgZHJtX3NjaGVkX2VudGl0eV9pbml0 KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4+ICBFWFBPUlRfU1lNQk9MKGRybV9z Y2hlZF9lbnRpdHlfaW5pdCk7Cj4+Cj4+ICAvKioKPj4gLSAqIFF1ZXJ5IGlmIGVudGl0eSBpcyBp bml0aWFsaXplZAo+PiArICogZHJtX3NjaGVkX2VudGl0eV9pc19pbml0aWFsaXplZCAtIFF1ZXJ5 IGlmIGVudGl0eSBpcyBpbml0aWFsaXplZAo+PiAgICoKPj4gLSAqIEBzY2hlZCAgICAgICBQb2lu dGVyIHRvIHNjaGVkdWxlciBpbnN0YW5jZQo+PiAtICogQGVudGl0eSAgICAgVGhlIHBvaW50ZXIg dG8gYSB2YWxpZCBzY2hlZHVsZXIgZW50aXR5Cj4+ICsgKiBAc2NoZWQ6IFBvaW50ZXIgdG8gc2No ZWR1bGVyIGluc3RhbmNlCj4+ICsgKiBAZW50aXR5OiBUaGUgcG9pbnRlciB0byBhIHZhbGlkIHNj aGVkdWxlciBlbnRpdHkKPj4gICAqCj4+ICAgKiByZXR1cm4gdHJ1ZSBpZiBlbnRpdHkgaXMgaW5p dGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZQo+PiAgKi8KPj4gQEAgLTE2NCwxMSArMjEwLDExIEBA IHN0YXRpYyBib29sIGRybV9zY2hlZF9lbnRpdHlfaXNfaW5pdGlhbGl6ZWQoc3RydWN0IGRybV9n cHVfc2NoZWR1bGVyICpzY2hlZCwKPj4gIH0KPj4KPj4gIC8qKgo+PiAtICogQ2hlY2sgaWYgZW50 aXR5IGlzIGlkbGUKPj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfaXNfaWRsZSAtIENoZWNrIGlmIGVu dGl0eSBpcyBpZGxlCj4+ICAgKgo+PiAtICogQGVudGl0eSAgICAgVGhlIHBvaW50ZXIgdG8gYSB2 YWxpZCBzY2hlZHVsZXIgZW50aXR5Cj4+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4+ ICAgKgo+PiAtICogUmV0dXJuIHRydWUgaWYgZW50aXR5IGRvbid0IGhhcyBhbnkgdW5zY2hlZHVs ZWQgam9icy4KPj4gKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW50aXR5IGRvZXMgbm90IGhhdmUg YW55IHVuc2NoZWR1bGVkIGpvYnMuCj4+ICAgKi8KPj4gIHN0YXRpYyBib29sIGRybV9zY2hlZF9l bnRpdHlfaXNfaWRsZShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQo+PiAgewo+PiBA QCAtMTgwLDkgKzIyNiw5IEBAIHN0YXRpYyBib29sIGRybV9zY2hlZF9lbnRpdHlfaXNfaWRsZShz dHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQo+PiAgfQo+Pgo+PiAgLyoqCj4+IC0gKiBD aGVjayBpZiBlbnRpdHkgaXMgcmVhZHkKPj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfaXNfcmVhZHkg LSBDaGVjayBpZiBlbnRpdHkgaXMgcmVhZHkKPj4gICAqCj4+IC0gKiBAZW50aXR5ICAgICBUaGUg cG9pbnRlciB0byBhIHZhbGlkIHNjaGVkdWxlciBlbnRpdHkKPj4gKyAqIEBlbnRpdHk6IHNjaGVk dWxlciBlbnRpdHkKPj4gICAqCj4+ICAgKiBSZXR1cm4gdHJ1ZSBpZiBlbnRpdHkgY291bGQgcHJv dmlkZSBhIGpvYi4KPj4gICAqLwo+PiBAQCAtMjEwLDEyICsyNTYsMTIgQEAgc3RhdGljIHZvaWQg ZHJtX3NjaGVkX2VudGl0eV9raWxsX2pvYnNfY2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwKPj4KPj4K Pj4gIC8qKgo+PiAtICogRGVzdHJveSBhIGNvbnRleHQgZW50aXR5Cj4+ICsgKiBkcm1fc2NoZWRf ZW50aXR5X2RvX3JlbGVhc2UgLSBEZXN0cm95IGEgY29udGV4dCBlbnRpdHkKPj4gICAqCj4+IC0g KiBAc2NoZWQgICAgICAgUG9pbnRlciB0byBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gLSAqIEBlbnRp dHkgICAgIFRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+PiArICogQHNj aGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkK Pj4gICAqCj4+IC0gKiBTcGxpdHRpbmcgZHJtX3NjaGVkX2VudGl0eV9maW5pKCkgaW50byB0d28g ZnVuY3Rpb25zLCBUaGUgZmlyc3Qgb25lIGlzIGRvZXMgdGhlIHdhaXRpbmcsCj4+ICsgKiBTcGxp dHRpbmcgZHJtX3NjaGVkX2VudGl0eV9maW5pKCkgaW50byB0d28gZnVuY3Rpb25zLCBUaGUgZmly c3Qgb25lIGRvZXMgdGhlIHdhaXRpbmcsCj4+ICAgKiByZW1vdmVzIHRoZSBlbnRpdHkgZnJvbSB0 aGUgcnVucXVldWUgYW5kIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGUgcHJvY2VzcyB3YXMga2ls bGVkLgo+PiAgICovCj4+ICB2b2lkIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZShzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+PiBAQCAtMjM3LDEyICsyODMsMTMgQEAgdm9pZCBk cm1fc2NoZWRfZW50aXR5X2RvX3JlbGVhc2Uoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hl ZCwKPj4gIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlKTsKPj4KPj4g IC8qKgo+PiAtICogRGVzdHJveSBhIGNvbnRleHQgZW50aXR5Cj4+ICsgKiBkcm1fc2NoZWRfZW50 aXR5X2NsZWFudXAgLSBEZXN0cm95IGEgY29udGV4dCBlbnRpdHkKPj4gICAqCj4+IC0gKiBAc2No ZWQgICAgICAgUG9pbnRlciB0byBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gLSAqIEBlbnRpdHkgICAg IFRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+PiArICogQHNjaGVkOiBz Y2hlZHVsZXIgaW5zdGFuY2UKPj4gKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKPj4gICAq Cj4+IC0gKiBUaGUgc2Vjb25kIG9uZSB0aGVuIGdvZXMgb3ZlciB0aGUgZW50aXR5IGFuZCBzaWdu YWxzIGFsbCBqb2JzIHdpdGggYW4gZXJyb3IgY29kZS4KPj4gKyAqIFRoaXMgc2hvdWxkIGJlIGNh bGxlZCBhZnRlciBAZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlLiBJdCBnb2VzIG92ZXIgdGhl Cj4+ICsgKiBlbnRpdHkgYW5kIHNpZ25hbHMgYWxsIGpvYnMgd2l0aCBhbiBlcnJvciBjb2RlIGlm IHRoZSBwcm9jZXNzIHdhcyBraWxsZWQuCj4+ICAgKi8KPj4gIHZvaWQgZHJtX3NjaGVkX2VudGl0 eV9jbGVhbnVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4+IEBAIC0y ODEsNiArMzI4LDE0IEBAIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9jbGVhbnVwKHN0cnVjdCBkcm1f Z3B1X3NjaGVkdWxlciAqc2NoZWQsCj4+ICB9Cj4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9l bnRpdHlfY2xlYW51cCk7Cj4+Cj4+ICsvKioKPj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfZmluaSAt IERlc3Ryb3kgYSBjb250ZXh0IGVudGl0eQo+PiArICoKPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVy IGluc3RhbmNlCj4+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4+ICsgKgo+PiArICog Q2FsbHMgZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlKCkgYW5kIGRybV9zY2hlZF9lbnRpdHlf Y2xlYW51cCgpCj4+ICsgKi8KPj4gIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9maW5pKHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKPj4gIHsKPj4gQEAgLTMwNiw2ICsz NjEsMTUgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9jbGVhcl9kZXAoc3RydWN0IGRt YV9mZW5jZSAqZiwgc3RydWN0IGRtYV9mZW5jZV9jYgo+PiAgICAgICAgIGRtYV9mZW5jZV9wdXQo Zik7Cj4+ICB9Cj4+Cj4+ICsvKioKPj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxIC0gU2V0 cyB0aGUgcnVuIHF1ZXVlIGZvciBhbiBlbnRpdHkKPj4gKyAqCj4+ICsgKiBAZW50aXR5OiBzY2hl ZHVsZXIgZW50aXR5Cj4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPj4gKyAqCj4+ICsg KiBTZXRzIHRoZSBydW4gcXVldWUgZm9yIGFuIGVudGl0eSBhbmQgcmVtb3ZlcyB0aGUgZW50aXR5 IGZyb20gdGhlIHByZXZpb3VzCj4+ICsgKiBydW4gcXVldWUgaW4gd2hpY2ggd2FzIHByZXNlbnQu Cj4+ICsgKi8KPj4gIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9zZXRfcnEoc3RydWN0IGRybV9zY2hl ZF9lbnRpdHkgKmVudGl0eSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3NjaGVkX3JxICpycSkKPj4gIHsKPj4gQEAgLTMyNSw2ICszODksMTQgQEAgdm9pZCBkcm1f c2NoZWRfZW50aXR5X3NldF9ycShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LAo+PiAg fQo+PiAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfZW50aXR5X3NldF9ycSk7Cj4+Cj4+ICsvKioK Pj4gKyAqIGRybV9zY2hlZF9kZXBlbmRlbmN5X29wdGltaXplZAo+PiArICoKPj4gKyAqIEBmZW5j ZTogdGhlIGRlcGVuZGVuY3kgZmVuY2UKPj4gKyAqIEBlbnRpdHk6IHRoZSBlbnRpdHkgd2hpY2gg ZGVwZW5kcyBvbiB0aGUgYWJvdmUgZmVuY2UKPj4gKyAqCj4+ICsgKiBSZXR1cm5zIHRydWUgaWYg dGhlIGRlcGVuZGVuY3kgY2FuIGJlIG9wdGltaXplZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlCj4+ICsg Ki8KPj4gIGJvb2wgZHJtX3NjaGVkX2RlcGVuZGVuY3lfb3B0aW1pemVkKHN0cnVjdCBkbWFfZmVu Y2UqIGZlbmNlLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQo+PiAgewo+PiBAQCAtNDEzLDkgKzQ4NSwxMCBAQCBk cm1fc2NoZWRfZW50aXR5X3BvcF9qb2Ioc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkK Pj4gIH0KPj4KPj4gIC8qKgo+PiAtICogU3VibWl0IGEgam9iIHRvIHRoZSBqb2IgcXVldWUKPj4g KyAqIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IgLSBTdWJtaXQgYSBqb2IgdG8gdGhlIGVudGl0 eSdzIGpvYiBxdWV1ZQo+PiAgICoKPj4gLSAqIEBzY2hlZF9qb2IgICAgICAgICAgVGhlIHBvaW50 ZXIgdG8gam9iIHJlcXVpcmVkIHRvIHN1Ym1pdAo+PiArICogQHNjaGVkX2pvYjogam9iIHRvIHN1 Ym1pdAo+PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQo+PiAgICoKPj4gICAqIE5vdGU6 IFRvIGd1YXJhbnRlZSB0aGF0IHRoZSBvcmRlciBvZiBpbnNlcnRpb24gdG8gcXVldWUgbWF0Y2hl cwo+PiAgICogdGhlIGpvYidzIGZlbmNlIHNlcXVlbmNlIG51bWJlciB0aGlzIGZ1bmN0aW9uIHNo b3VsZCBiZQo+PiBAQCAtNTA2LDYgKzU3OSwxMyBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9i X3RpbWVkb3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gICAgICAgICBqb2ItPnNjaGVk LT5vcHMtPnRpbWVkb3V0X2pvYihqb2IpOwo+PiAgfQo+Pgo+PiArLyoqCj4+ICsgKiBkcm1fc2No ZWRfaHdfam9iX3Jlc2V0IC0gc3RvcCB0aGUgc2NoZWR1bGVyIGlmIGl0IGNvbnRhaW5zIHRoZSBi YWQgam9iCj4+ICsgKgo+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gKyAqIEBi YWQ6IGJhZCBzY2hlZHVsZXIgam9iCj4+ICsgKgo+PiArICovCj4+ICB2b2lkIGRybV9zY2hlZF9o d19qb2JfcmVzZXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3RydWN0IGRybV9z Y2hlZF9qb2IgKmJhZCkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19q b2I7Cj4+IEBAIC01NTAsNiArNjMwLDEyIEBAIHZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChz dHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvCj4+ICB9 Cj4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9od19qb2JfcmVzZXQpOwo+Pgo+PiArLyoqCj4+ ICsgKiBkcm1fc2NoZWRfam9iX3JlY292ZXJ5IC0gcmVjb3ZlciBqb2JzIGFmdGVyIGEgcmVzZXQK Pj4gKyAqCj4+ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+PiArICoKPj4gKyAqLwo+ PiAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQpCj4+ICB7Cj4+ICAgICAgICAgc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iLCAqdG1w Owo+PiBAQCAtNTk5LDEwICs2ODUsMTcgQEAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9qb2JfcmVjb3ZlcnkpOwo+Pgo+PiAgLyoqCj4+IC0gKiBJbml0IGEgc2NoZWRfam9iIHdpdGgg YmFzaWMgZmllbGQKPj4gKyAqIGRybV9zY2hlZF9qb2JfaW5pdCAtIGluaXQgYSBzY2hlZHVsZXIg am9iCj4+ICAgKgo+PiAtICogTm90ZTogUmVmZXIgdG8gZHJtX3NjaGVkX2VudGl0eV9wdXNoX2pv YiBkb2N1bWVudGF0aW9uCj4+ICsgKiBAam9iOiBzY2hlZHVsZXIgam9iIHRvIGluaXQKPj4gKyAq IEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50 aXR5IHRvIHVzZQo+PiArICogQG93bmVyOiBqb2Igb3duZXIgZm9yIGRlYnVnZ2luZwo+PiArICoK Pj4gKyAqIFJlZmVyIHRvIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoKSBkb2N1bWVudGF0aW9u Cj4+ICAgKiBmb3IgbG9ja2luZyBjb25zaWRlcmF0aW9ucy4KPj4gKyAqCj4+ICsgKiBSZXR1cm5z IDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+PiAgICovCj4+ ICBpbnQgZHJtX3NjaGVkX2pvYl9pbml0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IsCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPj4g QEAgLTYyNiw3ICs3MTksMTEgQEAgaW50IGRybV9zY2hlZF9qb2JfaW5pdChzdHJ1Y3QgZHJtX3Nj aGVkX2pvYiAqam9iLAo+PiAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfam9iX2luaXQpOwo+Pgo+ PiAgLyoqCj4+IC0gKiBSZXR1cm4gdHVyZSBpZiB3ZSBjYW4gcHVzaCBtb3JlIGpvYnMgdG8gdGhl IGh3Lgo+PiArICogZHJtX3NjaGVkX3JlYWR5IC0gaXMgdGhlIHNjaGVkdWxlciByZWFkeQo+PiAr ICoKPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4+ICsgKgo+PiArICogUmV0dXJu IHRydWUgaWYgd2UgY2FuIHB1c2ggbW9yZSBqb2JzIHRvIHRoZSBodywgb3RoZXJ3aXNlIGZhbHNl Lgo+PiAgICovCj4+ICBzdGF0aWMgYm9vbCBkcm1fc2NoZWRfcmVhZHkoc3RydWN0IGRybV9ncHVf c2NoZWR1bGVyICpzY2hlZCkKPj4gIHsKPj4gQEAgLTYzNSw3ICs3MzIsMTAgQEAgc3RhdGljIGJv b2wgZHJtX3NjaGVkX3JlYWR5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICB9 Cj4+Cj4+ICAvKioKPj4gLSAqIFdha2UgdXAgdGhlIHNjaGVkdWxlciB3aGVuIGl0IGlzIHJlYWR5 Cj4+ICsgKiBkcm1fc2NoZWRfd2FrZXVwIC0gV2FrZSB1cCB0aGUgc2NoZWR1bGVyIHdoZW4gaXQg aXMgcmVhZHkKPj4gKyAqCj4+ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+PiArICoK Pj4gICAqLwo+PiAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3dha2V1cChzdHJ1Y3QgZHJtX2dwdV9z Y2hlZHVsZXIgKnNjaGVkKQo+PiAgewo+PiBAQCAtNjQ0LDggKzc0NCwxMiBAQCBzdGF0aWMgdm9p ZCBkcm1fc2NoZWRfd2FrZXVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICB9 Cj4+Cj4+ICAvKioKPj4gLSAqIFNlbGVjdCBuZXh0IGVudGl0eSB0byBwcm9jZXNzCj4+IC0qLwo+ PiArICogZHJtX3NjaGVkX3NlbGVjdF9lbnRpdHkgLSBTZWxlY3QgbmV4dCBlbnRpdHkgdG8gcHJv Y2Vzcwo+PiArICoKPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4+ICsgKgo+PiAr ICogUmV0dXJucyB0aGUgZW50aXR5IHRvIHByb2Nlc3Mgb3IgTlVMTCBpZiBub25lIGFyZSBmb3Vu ZC4KPj4gKyAqLwo+PiAgc3RhdGljIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICoKPj4gIGRybV9z Y2hlZF9zZWxlY3RfZW50aXR5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICB7 Cj4+IEBAIC02NjUsNiArNzY5LDE0IEBAIGRybV9zY2hlZF9zZWxlY3RfZW50aXR5KHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICAgICAgICAgcmV0dXJuIGVudGl0eTsKPj4gIH0K Pj4KPj4gKy8qKgo+PiArICogZHJtX3NjaGVkX3Byb2Nlc3Nfam9iIC0gcHJvY2VzcyBhIGpvYgo+ PiArICoKPj4gKyAqIEBmOiBmZW5jZQo+PiArICogQGNiOiBmZW5jZSBjYWxsYmFja3MKPj4gKyAq Cj4+ICsgKiBDYWxsZWQgYWZ0ZXIgam9iIGhhcyBmaW5pc2hlZCBleGVjdXRpb24uCj4+ICsgKi8K Pj4gIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9wcm9jZXNzX2pvYihzdHJ1Y3QgZG1hX2ZlbmNlICpm LCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3QgZHJtX3Nj aGVkX2ZlbmNlICpzX2ZlbmNlID0KPj4gQEAgLTY4MCw2ICs3OTIsMTMgQEAgc3RhdGljIHZvaWQg ZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVu Y2VfY2IgKmNiKQo+PiAgICAgICAgIHdha2VfdXBfaW50ZXJydXB0aWJsZSgmc2NoZWQtPndha2Vf dXBfd29ya2VyKTsKPj4gIH0KPj4KPj4gKy8qKgo+PiArICogZHJtX3NjaGVkX2Jsb2NrZWQgLSBj aGVjayBpZiB0aGUgc2NoZWR1bGVyIGlzIGJsb2NrZWQKPj4gKyAqCj4+ICsgKiBAc2NoZWQ6IHNj aGVkdWxlciBpbnN0YW5jZQo+PiArICoKPj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBibG9ja2VkLCBv dGhlcndpc2UgZmFsc2UuCj4+ICsgKi8KPj4gIHN0YXRpYyBib29sIGRybV9zY2hlZF9ibG9ja2Vk KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4+ICB7Cj4+ICAgICAgICAgaWYgKGt0 aHJlYWRfc2hvdWxkX3BhcmsoKSkgewo+PiBAQCAtNjkwLDYgKzgwOSwxMyBAQCBzdGF0aWMgYm9v bCBkcm1fc2NoZWRfYmxvY2tlZChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQo+PiAg ICAgICAgIHJldHVybiBmYWxzZTsKPj4gIH0KPj4KPj4gKy8qKgo+PiArICogZHJtX3NjaGVkX21h aW4gLSBtYWluIHNjaGVkdWxlciB0aHJlYWQKPj4gKyAqCj4+ICsgKiBAcGFyYW06IHNjaGVkdWxl ciBpbnN0YW5jZQo+PiArICoKPj4gKyAqIFJldHVybnMgMC4KPj4gKyAqLwo+PiAgc3RhdGljIGlu dCBkcm1fc2NoZWRfbWFpbih2b2lkICpwYXJhbSkKPj4gIHsKPj4gICAgICAgICBzdHJ1Y3Qgc2No ZWRfcGFyYW0gc3BhcmFtID0gey5zY2hlZF9wcmlvcml0eSA9IDF9Owo+PiBAQCAtNzQ0LDE1ICs4 NzAsMTcgQEAgc3RhdGljIGludCBkcm1fc2NoZWRfbWFpbih2b2lkICpwYXJhbSkKPj4gIH0KPj4K Pj4gIC8qKgo+PiAtICogSW5pdCBhIGdwdSBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gKyAqIGRybV9z Y2hlZF9pbml0IC0gSW5pdCBhIGdwdSBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gICAqCj4+IC0gKiBA c2NoZWQgICAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBzY2hlZHVsZXIKPj4gLSAqIEBv cHMgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFja2VuZCBvcGVyYXRpb25zIGZvciB0aGlz IHNjaGVkdWxlci4KPj4gLSAqIEBod19zdWJtaXNzaW9ucyAgICAgTnVtYmVyIG9mIGh3IHN1Ym1p c3Npb25zIHRvIGRvLgo+PiAtICogQG5hbWUgICAgICAgICAgICAgICBOYW1lIHVzZWQgZm9yIGRl YnVnZ2luZwo+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPj4gKyAqIEBvcHM6IGJh Y2tlbmQgb3BlcmF0aW9ucyBmb3IgdGhpcyBzY2hlZHVsZXIKPj4gKyAqIEBod19zdWJtaXNzaW9u OiBudW1iZXIgb2YgaHcgc3VibWlzc2lvbnMgdGhhdCBjYW4gYmUgaW4gZmxpZ2h0Cj4+ICsgKiBA aGFuZ19saW1pdDogbnVtYmVyIG9mIHRpbWVzIHRvIGFsbG93IGEgam9iIHRvIGhhbmcgYmVmb3Jl IGRyb3BwaW5nIGl0Cj4+ICsgKiBAdGltZW91dDogdGltZW91dCB2YWx1ZSBpbiBqaWZmaWVzIGZv ciB0aGUgc2NoZWR1bGVyCj4+ICsgKiBAbmFtZTogbmFtZSB1c2VkIGZvciBkZWJ1Z2dpbmcKPj4g ICAqCj4+ICAgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgZXJyb3IgY29kZS4KPj4g LSovCj4+ICsgKi8KPj4gIGludCBkcm1fc2NoZWRfaW5pdChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVs ZXIgKnNjaGVkLAo+PiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9zY2hlZF9i YWNrZW5kX29wcyAqb3BzLAo+PiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaHdfc3VibWlz c2lvbiwKPj4gQEAgLTc4OCw5ICs5MTYsMTEgQEAgaW50IGRybV9zY2hlZF9pbml0KHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9pbml0 KTsKPj4KPj4gIC8qKgo+PiAtICogRGVzdHJveSBhIGdwdSBzY2hlZHVsZXIKPj4gKyAqIGRybV9z Y2hlZF9maW5pIC0gRGVzdHJveSBhIGdwdSBzY2hlZHVsZXIKPj4gKyAqCj4+ICsgKiBAc2NoZWQ6 IHNjaGVkdWxlciBpbnN0YW5jZQo+PiAgICoKPj4gLSAqIEBzY2hlZCAgICAgIFRoZSBwb2ludGVy IHRvIHRoZSBzY2hlZHVsZXIKPj4gKyAqIFRlYXJzIGRvd24gYW5kIGNsZWFucyB1cCB0aGUgc2No ZWR1bGVyLgo+PiAgICovCj4+ICB2b2lkIGRybV9zY2hlZF9maW5pKHN0cnVjdCBkcm1fZ3B1X3Nj aGVkdWxlciAqc2NoZWQpCj4+ICB7Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9ncHVfc2No ZWR1bGVyLmggYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKPj4gaW5kZXggZGVjNjU1ODk0 ZDA4Li40OTY0NDJmMTJiZmYgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVs ZXIuaAo+PiArKysgYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKPj4gQEAgLTQzLDEzICs0 MywzMyBAQCBlbnVtIGRybV9zY2hlZF9wcmlvcml0eSB7Cj4+ICB9Owo+Pgo+PiAgLyoqCj4+IC0g KiBkcm1fc2NoZWRfZW50aXR5IC0gQSB3cmFwcGVyIGFyb3VuZCBhIGpvYiBxdWV1ZSAodHlwaWNh bGx5IGF0dGFjaGVkCj4+IC0gKiB0byB0aGUgRFJNIGZpbGVfcHJpdikuCj4+ICsgKiBzdHJ1Y3Qg ZHJtX3NjaGVkX2VudGl0eSAtIEEgd3JhcHBlciBhcm91bmQgYSBqb2IgcXVldWUgKHR5cGljYWxs eQo+PiArICogYXR0YWNoZWQgdG8gdGhlIERSTSBmaWxlX3ByaXYpLgo+PiArICoKPj4gKyAqIEBs aXN0OiB1c2VkIHRvIGFwcGVuZCB0aGlzIHN0cnVjdCB0byB0aGUgbGlzdCBvZiBlbnRpdGllcyBp biB0aGUKPj4gKyAqICAgICAgICBydW5xdWV1ZS4KPj4gKyAqIEBycTogcnVucXVldWUgdG8gd2hp Y2ggdGhpcyBlbnRpdHkgYmVsb25ncy4KPj4gKyAqIEBycV9sb2NrOiBsb2NrIHRvIG1vZGlmeSB0 aGUgcnVucXVldWUgdG8gd2hpY2ggdGhpcyBlbnRpdHkgYmVsb25ncy4KPj4gKyAqIEBzY2hlZDog dGhlIHNjaGVkdWxlciBpbnN0YW5jZSB0byB3aGljaCB0aGlzIGVudGl0eSBpcyBlbnF1ZXVlZC4K Pj4gKyAqIEBqb2JfcXVldWU6IHRoZSBsaXN0IG9mIGpvYnMgb2YgdGhpcyBlbnRpdHkuCj4+ICsg KiBAZmVuY2Vfc2VxOiBhIGxpbmVhcmx5IGluY3JlYXNpbmcgc2Vxbm8gaW5jcmVtZW50ZWQgd2l0 aCBlYWNoCj4+ICsgKiAgICAgICAgICAgICBuZXcgJmRybV9zY2hlZF9mZW5jZSB3aGljaCBpcyBw YXJ0IG9mIHRoZSBlbnRpdHkuCj4+ICsgKiBAZmVuY2VfY29udGV4dDogYSB1bmlxdWUgY29udGV4 dCBmb3IgYWxsIHRoZSBmZW5jZXMgd2hpY2ggYmVsb25nCj4+ICsgKiAgICAgICAgICAgICAgICAg dG8gdGhpcyBlbnRpdHkuCj4+ICsgKiAgICAgICAgICAgICAgICAgVGhlICZkcm1fc2NoZWRfZmVu Y2Uuc2NoZWR1bGVkIHVzZXMgdGhlCj4+ICsgKiAgICAgICAgICAgICAgICAgZmVuY2VfY29udGV4 dCBidXQgJmRybV9zY2hlZF9mZW5jZS5maW5pc2hlZCB1c2VzCj4+ICsgKiAgICAgICAgICAgICAg ICAgZmVuY2VfY29udGV4dCArIDEuCj4+ICsgKiBAZGVwZW5kZW5jeTogdGhlIGRlcGVuZGVuY3kg ZmVuY2Ugb2YgdGhlIGpvYiB3aGljaCBpcyBvbiB0aGUgdG9wCj4+ICsgKiAgICAgICAgICAgICAg b2YgdGhlIGpvYiBxdWV1ZS4KPj4gKyAqIEBjYjogY2FsbGJhY2sgZm9yIHRoZSBkZXBlbmRlbmN5 IGZlbmNlIGFib3ZlLgo+PiArICogQGd1aWx0eTogcG9pbnRzIHRvIGN0eCdzIGd1aWx0eS4KPj4g KyAqIEBmaW5pX3N0YXR1czogY29udGFpbnMgdGhlIGV4aXQgc3RhdHVzIGluIGNhc2UgdGhlIHBy b2Nlc3Mgd2FzIHNpZ25hbGxlZC4KPj4gKyAqIEBsYXN0X3NjaGVkdWxlZDogcG9pbnRzIHRvIHRo ZSBmaW5pc2hlZCBmZW5jZSBvZiB0aGUgbGFzdCBzY2hlZHVsZWQgam9iLgo+PiAgICoKPj4gICAq IEVudGl0aWVzIHdpbGwgZW1pdCBqb2JzIGluIG9yZGVyIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcg aGFyZHdhcmUKPj4gICAqIHJpbmcsIGFuZCB0aGUgc2NoZWR1bGVyIHdpbGwgYWx0ZXJuYXRlIGJl dHdlZW4gZW50aXRpZXMgYmFzZWQgb24KPj4gICAqIHNjaGVkdWxpbmcgcG9saWN5Lgo+PiAtKi8K Pj4gKyAqLwo+PiAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgewo+PiAgICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgICAgICAgICAgICAgICAgbGlzdDsKPj4gICAgICAgICBzdHJ1Y3QgZHJtX3NjaGVk X3JxICAgICAgICAgICAgICpycTsKPj4gQEAgLTYzLDQ3ICs4Myw5NiBAQCBzdHJ1Y3QgZHJtX3Nj aGVkX2VudGl0eSB7Cj4+Cj4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAgICAgICAgICAgICAg ICAqZGVwZW5kZW5jeTsKPj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICAgICAgICAgICAg IGNiOwo+PiAtICAgICAgIGF0b21pY190ICAgICAgICAgICAgICAgICAgICAgICAgKmd1aWx0eTsg LyogcG9pbnRzIHRvIGN0eCdzIGd1aWx0eSAqLwo+PiAtICAgICAgIGludCAgICAgICAgICAgIGZp bmlfc3RhdHVzOwo+PiAtICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgICAgKmxhc3Rfc2NoZWR1bGVk Owo+PiArICAgICAgIGF0b21pY190ICAgICAgICAgICAgICAgICAgICAgICAgKmd1aWx0eTsKPj4g KyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlfc3RhdHVzOwo+PiAr ICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgICAgICAgICAgICAgICAgKmxhc3Rfc2NoZWR1bGVkOwo+ PiAgfTsKPj4KPj4gIC8qKgo+PiArICogc3RydWN0IGRybV9zY2hlZF9ycSAtIHF1ZXVlIG9mIGVu dGl0aWVzIHRvIGJlIHNjaGVkdWxlZC4KPj4gKyAqCj4+ICsgKiBAbG9jazogdG8gbW9kaWZ5IHRo ZSBlbnRpdGllcyBsaXN0Lgo+PiArICogQGVudGl0aWVzOiBsaXN0IG9mIHRoZSBlbnRpdGllcyB0 byBiZSBzY2hlZHVsZWQuCj4+ICsgKiBAY3VycmVudF9lbnRpdHk6IHRoZSBlbnRpdHkgd2hpY2gg aXMgdG8gYmUgc2NoZWR1bGVkLgo+PiArICoKPj4gICAqIFJ1biBxdWV1ZSBpcyBhIHNldCBvZiBl bnRpdGllcyBzY2hlZHVsaW5nIGNvbW1hbmQgc3VibWlzc2lvbnMgZm9yCj4+ICAgKiBvbmUgc3Bl Y2lmaWMgcmluZy4gSXQgaW1wbGVtZW50cyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgdGhhdCBzZWxl Y3RzCj4+ICAgKiB0aGUgbmV4dCBlbnRpdHkgdG8gZW1pdCBjb21tYW5kcyBmcm9tLgo+PiAtKi8K Pj4gKyAqLwo+PiAgc3RydWN0IGRybV9zY2hlZF9ycSB7Cj4+ICAgICAgICAgc3BpbmxvY2tfdCAg ICAgICAgICAgICAgICAgICAgICBsb2NrOwo+PiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgICAg ICAgICAgICAgICAgZW50aXRpZXM7Cj4+ICAgICAgICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkg ICAgICAgICAqY3VycmVudF9lbnRpdHk7Cj4+ICB9Owo+Pgo+PiArLyoqCj4+ICsgKiBzdHJ1Y3Qg ZHJtX3NjaGVkX2ZlbmNlIC0gZmVuY2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNjaGVkdWxpbmcg b2YgYSBqb2IuCj4+ICsgKi8KPj4gIHN0cnVjdCBkcm1fc2NoZWRfZmVuY2Ugewo+PiArICAgICAg ICAvKioKPj4gKyAgICAgICAgICogQHNjaGVkdWxlZDogdGhpcyBmZW5jZSBpcyB3aGF0IHdpbGwg YmUgc2lnbmFsZWQgYnkgdGhlIHNjaGVkdWxlcgo+PiArICAgICAgICAgKiB3aGVuIHRoZSBqb2Ig aXMgc2NoZWR1bGVkLgo+PiArICAgICAgICAgKi8KPj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNl ICAgICAgICAgICAgICAgIHNjaGVkdWxlZDsKPj4KPj4gLSAgICAgICAvKiBUaGlzIGZlbmNlIGlz IHdoYXQgd2lsbCBiZSBzaWduYWxlZCBieSB0aGUgc2NoZWR1bGVyIHdoZW4KPj4gLSAgICAgICAg KiB0aGUgam9iIGlzIGNvbXBsZXRlZC4KPj4gLSAgICAgICAgKgo+PiAtICAgICAgICAqIFdoZW4g c2V0dGluZyB1cCBhbiBvdXQgZmVuY2UgZm9yIHRoZSBqb2IsIHlvdSBzaG91bGQgdXNlCj4+IC0g ICAgICAgICogdGhpcywgc2luY2UgaXQncyBhdmFpbGFibGUgaW1tZWRpYXRlbHkgdXBvbgo+PiAt ICAgICAgICAqIGRybV9zY2hlZF9qb2JfaW5pdCgpLCBhbmQgdGhlIGZlbmNlIHJldHVybmVkIGJ5 IHRoZSBkcml2ZXIKPj4gLSAgICAgICAgKiBmcm9tIHJ1bl9qb2IoKSB3b24ndCBiZSBjcmVhdGVk IHVudGlsIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+PiAtICAgICAgICAqIHJlc29sdmVkLgo+PiAt ICAgICAgICAqLwo+PiArICAgICAgICAvKioKPj4gKyAgICAgICAgICogQGZpbmlzaGVkOiB0aGlz IGZlbmNlIGlzIHdoYXQgd2lsbCBiZSBzaWduYWxlZCBieSB0aGUgc2NoZWR1bGVyCj4+ICsgICAg ICAgICAqIHdoZW4gdGhlIGpvYiBpcyBjb21wbGV0ZWQuCj4+ICsgICAgICAgICAqCj4+ICsgICAg ICAgICAqIFdoZW4gc2V0dGluZyB1cCBhbiBvdXQgZmVuY2UgZm9yIHRoZSBqb2IsIHlvdSBzaG91 bGQgdXNlCj4+ICsgICAgICAgICAqIHRoaXMsIHNpbmNlIGl0J3MgYXZhaWxhYmxlIGltbWVkaWF0 ZWx5IHVwb24KPj4gKyAgICAgICAgICogZHJtX3NjaGVkX2pvYl9pbml0KCksIGFuZCB0aGUgZmVu Y2UgcmV0dXJuZWQgYnkgdGhlIGRyaXZlcgo+PiArICAgICAgICAgKiBmcm9tIHJ1bl9qb2IoKSB3 b24ndCBiZSBjcmVhdGVkIHVudGlsIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+PiArICAgICAgICAg KiByZXNvbHZlZC4KPj4gKyAgICAgICAgICovCj4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAg ICAgICAgICAgICAgICBmaW5pc2hlZDsKPj4KPj4gKyAgICAgICAgLyoqCj4+ICsgICAgICAgICAq IEBjYjogdGhlIGNhbGxiYWNrIGZvciB0aGUgcGFyZW50IGZlbmNlIGJlbG93Lgo+PiArICAgICAg ICAgKi8KPj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICAgICAgICAgICAgIGNiOwo+PiAr ICAgICAgICAvKioKPj4gKyAgICAgICAgICogQHBhcmVudDogdGhlIGZlbmNlIHJldHVybmVkIGJ5 ICZkcm1fc2NoZWRfYmFja2VuZF9vcHMucnVuX2pvYgo+PiArICAgICAgICAgKiB3aGVuIHNjaGVk dWxpbmcgdGhlIGpvYiBvbiBoYXJkd2FyZS4gV2Ugc2lnbmFsIHRoZQo+PiArICAgICAgICAgKiAm ZHJtX3NjaGVkX2ZlbmNlLmZpbmlzaGVkIGZlbmNlIG9uY2UgcGFyZW50IGlzIHNpZ25hbGxlZC4K Pj4gKyAgICAgICAgICovCj4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAgICAgICAgICAgICAg ICAqcGFyZW50Owo+PiArICAgICAgICAvKioKPj4gKyAgICAgICAgICogQHNjaGVkOiB0aGUgc2No ZWR1bGVyIGluc3RhbmNlIHRvIHdoaWNoIHRoZSBqb2IgaGF2aW5nIHRoaXMgc3RydWN0Cj4+ICsg ICAgICAgICAqIGJlbG9uZ3MgdG8uCj4+ICsgICAgICAgICAqLwo+PiAgICAgICAgIHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAgICAgICAgKnNjaGVkOwo+PiArICAgICAgICAvKioKPj4gKyAgICAg ICAgICogQGxvY2s6IHRoZSBsb2NrIHVzZWQgYnkgdGhlIHNjaGVkdWxlZCBhbmQgdGhlIGZpbmlz aGVkIGZlbmNlcy4KPj4gKyAgICAgICAgICovCj4+ICAgICAgICAgc3BpbmxvY2tfdCAgICAgICAg ICAgICAgICAgICAgICBsb2NrOwo+PiArICAgICAgICAvKioKPj4gKyAgICAgICAgICogQG93bmVy OiBqb2Igb3duZXIgZm9yIGRlYnVnZ2luZwo+PiArICAgICAgICAgKi8KPj4gICAgICAgICB2b2lk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvd25lcjsKPj4gIH07Cj4+Cj4+ICBzdHJ1Y3Qg ZHJtX3NjaGVkX2ZlbmNlICp0b19kcm1fc2NoZWRfZmVuY2Uoc3RydWN0IGRtYV9mZW5jZSAqZik7 Cj4+Cj4+ICAvKioKPj4gLSAqIGRybV9zY2hlZF9qb2IgLSBBIGpvYiB0byBiZSBydW4gYnkgYW4g ZW50aXR5Lgo+PiArICogc3RydWN0IGRybV9zY2hlZF9qb2IgLSBBIGpvYiB0byBiZSBydW4gYnkg YW4gZW50aXR5Lgo+PiArICoKPj4gKyAqIEBxdWV1ZV9ub2RlOiB1c2VkIHRvIGFwcGVuZCB0aGlz IHN0cnVjdCB0byB0aGUgcXVldWUgb2Ygam9icyBpbiBhbiBlbnRpdHkuCj4+ICsgKiBAc2NoZWQ6 IHRoZSBzY2hlZHVsZXIgaW5zdGFuY2Ugb24gd2hpY2ggdGhpcyBqb2IgaXMgc2NoZWR1bGVkLgo+ PiArICogQHNfZmVuY2U6IGNvbnRhaW5zIHRoZSBmZW5jZXMgZm9yIHRoZSBzY2hlZHVsaW5nIG9m IGpvYi4KPj4gKyAqIEBmaW5pc2hfY2I6IHRoZSBjYWxsYmFjayBmb3IgdGhlIGZpbmlzaGVkIGZl bmNlLgo+PiArICogQGZpbmlzaF93b3JrOiBzY2hlZHVsZXMgdGhlIGZ1bmN0aW9uIEBkcm1fc2No ZWRfam9iX2ZpbmlzaCBvbmNlIHRoZSBqb2IgaGFzCj4+ICsgKiAgICAgICAgICAgICAgIGZpbmlz aGVkIHRvIHJlbW92ZSB0aGUgam9iIGZyb20gdGhlCj4+ICsgKiAgICAgICAgICAgICAgIEBkcm1f Z3B1X3NjaGVkdWxlci5yaW5nX21pcnJvcl9saXN0Lgo+PiArICogQG5vZGU6IHVzZWQgdG8gYXBw ZW5kIHRoaXMgc3RydWN0IHRvIHRoZSBAZHJtX2dwdV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlz dC4KPj4gKyAqIEB3b3JrX3Rkcjogc2NoZWR1bGVzIGEgZGVsYXllZCBjYWxsIHRvIEBkcm1fc2No ZWRfam9iX3RpbWVkb3V0IGFmdGVyIHRoZSB0aW1lb3V0Cj4+ICsgKiAgICAgICAgICAgIGludGVy dmFsIGlzIG92ZXIuCj4+ICsgKiBAaWQ6IGEgdW5pcXVlIGlkIGFzc2lnbmVkIHRvIGVhY2ggam9i IHNjaGVkdWxlZCBvbiB0aGUgc2NoZWR1bGVyLgo+PiArICogQGthcm1hOiBpbmNyZW1lbnQgb24g ZXZlcnkgaGFuZyBjYXVzZWQgYnkgdGhpcyBqb2IuIElmIHRoaXMgZXhjZWVkcyB0aGUgaGFuZwo+ PiArICogICAgICAgICBsaW1pdCBvZiB0aGUgc2NoZWR1bGVyIHRoZW4gdGhlIGpvYiBpcyBtYXJr ZWQgZ3VpbHR5IGFuZCB3aWxsIG5vdAo+PiArICogICAgICAgICBiZSBzY2hlZHVsZWQgZnVydGhl ci4KPj4gKyAqIEBzX3ByaW9yaXR5OiB0aGUgcHJpb3JpdHkgb2YgdGhlIGpvYi4KPj4gKyAqIEBl bnRpdHk6IHRoZSBlbnRpdHkgdG8gd2hpY2ggdGhpcyBqb2IgYmVsb25ncy4KPj4gICAqCj4+ICAg KiBBIGpvYiBpcyBjcmVhdGVkIGJ5IHRoZSBkcml2ZXIgdXNpbmcgZHJtX3NjaGVkX2pvYl9pbml0 KCksIGFuZAo+PiAgICogc2hvdWxkIGNhbGwgZHJtX3NjaGVkX2VudGl0eV9wdXNoX2pvYigpIG9u Y2UgaXQgd2FudHMgdGhlIHNjaGVkdWxlcgo+PiBAQCAtMTMwLDM4ICsxOTksNjQgQEAgc3RhdGlj IGlubGluZSBib29sIGRybV9zY2hlZF9pbnZhbGlkYXRlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pv YiAqc19qb2IsCj4+ICB9Cj4+Cj4+ICAvKioKPj4gKyAqIHN0cnVjdCBkcm1fc2NoZWRfYmFja2Vu ZF9vcHMKPj4gKyAqCj4+ICAgKiBEZWZpbmUgdGhlIGJhY2tlbmQgb3BlcmF0aW9ucyBjYWxsZWQg YnkgdGhlIHNjaGVkdWxlciwKPj4gLSAqIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaW1wbGVt ZW50ZWQgaW4gZHJpdmVyIHNpZGUKPj4gLSovCj4+ICsgKiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxk IGJlIGltcGxlbWVudGVkIGluIGRyaXZlciBzaWRlLgo+PiArICovCj4+ICBzdHJ1Y3QgZHJtX3Nj aGVkX2JhY2tlbmRfb3BzIHsKPj4gLSAgICAgICAvKiBDYWxsZWQgd2hlbiB0aGUgc2NoZWR1bGVy IGlzIGNvbnNpZGVyaW5nIHNjaGVkdWxpbmcgdGhpcwo+PiAtICAgICAgICAqIGpvYiBuZXh0LCB0 byBnZXQgYW5vdGhlciBzdHJ1Y3QgZG1hX2ZlbmNlIGZvciB0aGlzIGpvYiB0bwo+PiArICAgICAg IC8qKgo+PiArICAgICAgICAgKiBAZGVwZW5kZW5jeTogQ2FsbGVkIHdoZW4gdGhlIHNjaGVkdWxl ciBpcyBjb25zaWRlcmluZyBzY2hlZHVsaW5nCj4+ICsgICAgICAgICAqIHRoaXMgam9iIG5leHQs IHRvIGdldCBhbm90aGVyIHN0cnVjdCBkbWFfZmVuY2UgZm9yIHRoaXMgam9iIHRvCj4+ICAgICAg ICAgICogYmxvY2sgb24uICBPbmNlIGl0IHJldHVybnMgTlVMTCwgcnVuX2pvYigpIG1heSBiZSBj YWxsZWQuCj4+ICAgICAgICAgICovCj4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKCpkZXBl bmRlbmN5KShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKnNfZW50 aXR5KTsKPj4KPj4gLSAgICAgICAvKiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9iIG9uY2UgYWxs IG9mIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+PiAtICAgICAgICAqIGJlZW4gcmVzb2x2ZWQuICBU aGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGlmCj4+ICsgICAgICAgLyoqCj4+ICsg ICAgICAgICAqIEBydW5fam9iOiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9iIG9uY2UgYWxsIG9m IHRoZSBkZXBlbmRlbmNpZXMKPj4gKyAgICAgICAgICogaGF2ZSBiZWVuIHJlc29sdmVkLiAgVGhp cyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBpZgo+PiAgICAgICAgICAqIHRpbWVkb3V0 X2pvYigpIGhhcyBoYXBwZW5lZCBhbmQgZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgpCj4+ICAgICAg ICAgICogZGVjaWRlcyB0byB0cnkgaXQgYWdhaW4uCj4+ICAgICAgICAgICovCj4+ICAgICAgICAg c3RydWN0IGRtYV9mZW5jZSAqKCpydW5fam9iKShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRf am9iKTsKPj4KPj4gLSAgICAgICAvKiBDYWxsZWQgd2hlbiBhIGpvYiBoYXMgdGFrZW4gdG9vIGxv bmcgdG8gZXhlY3V0ZSwgdG8gdHJpZ2dlcgo+PiAtICAgICAgICAqIEdQVSByZWNvdmVyeS4KPj4g KyAgICAgICAvKioKPj4gKyAgICAgICAgICogQHRpbWVkb3V0X2pvYjogQ2FsbGVkIHdoZW4gYSBq b2IgaGFzIHRha2VuIHRvbyBsb25nIHRvIGV4ZWN1dGUsCj4+ICsgICAgICAgICAqIHRvIHRyaWdn ZXIgR1BVIHJlY292ZXJ5Lgo+PiAgICAgICAgICAqLwo+PiAgICAgICAgIHZvaWQgKCp0aW1lZG91 dF9qb2IpKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpOwo+Pgo+PiAtICAgICAgIC8q IENhbGxlZCBvbmNlIHRoZSBqb2IncyBmaW5pc2hlZCBmZW5jZSBoYXMgYmVlbiBzaWduYWxlZCBh bmQKPj4gLSAgICAgICAgKiBpdCdzIHRpbWUgdG8gY2xlYW4gaXQgdXAuCj4+ICsgICAgICAgLyoq Cj4+ICsgICAgICAgICAqIEBmcmVlX2pvYjogQ2FsbGVkIG9uY2UgdGhlIGpvYidzIGZpbmlzaGVk IGZlbmNlIGhhcyBiZWVuIHNpZ25hbGVkCj4+ICsgICAgICAgICAqIGFuZCBpdCdzIHRpbWUgdG8g Y2xlYW4gaXQgdXAuCj4+ICAgICAgICAgICovCj4+ICAgICAgICAgdm9pZCAoKmZyZWVfam9iKShz dHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKTsKPj4gIH07Cj4+Cj4+ICAvKioKPj4gLSAq IE9uZSBzY2hlZHVsZXIgaXMgaW1wbGVtZW50ZWQgZm9yIGVhY2ggaGFyZHdhcmUgcmluZwo+PiAt Ki8KPj4gKyAqIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlcgo+PiArICoKPj4gKyAqIEBvcHM6IGJh Y2tlbmQgb3BlcmF0aW9ucyBwcm92aWRlZCBieSB0aGUgZHJpdmVyLgo+PiArICogQGh3X3N1Ym1p c3Npb25fbGltaXQ6IHRoZSBtYXggc2l6ZSBvZiB0aGUgaGFyZHdhcmUgcXVldWUuCj4+ICsgKiBA dGltZW91dDogdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggYSBqb2IgaXMgcmVtb3ZlZCBmcm9tIHRoZSBz Y2hlZHVsZXIuCj4+ICsgKiBAbmFtZTogbmFtZSBvZiB0aGUgcmluZyBmb3Igd2hpY2ggdGhpcyBz Y2hlZHVsZXIgaXMgYmVpbmcgdXNlZC4KPj4gKyAqIEBzY2hlZF9ycTogcHJpb3JpdHkgd2lzZSBh cnJheSBvZiBydW4gcXVldWVzLgo+PiArICogQHdha2VfdXBfd29ya2VyOiB0aGUgd2FpdCBxdWV1 ZSBvbiB3aGljaCB0aGUgc2NoZWR1bGVyIHNsZWVwcyB1bnRpbCBhIGpvYgo+PiArICogICAgICAg ICAgICAgICAgICBpcyByZWFkeSB0byBiZSBzY2hlZHVsZWQuCj4+ICsgKiBAam9iX3NjaGVkdWxl ZDogb25jZSBAZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlIGlzIGNhbGxlZCB0aGUgc2NoZWR1 bGVyCj4+ICsgKiAgICAgICAgICAgICAgICAgd2FpdHMgb24gdGhpcyB3YWl0IHF1ZXVlIHVudGls IGFsbCB0aGUgc2NoZWR1bGVkIGpvYnMgYXJlCj4+ICsgKiAgICAgICAgICAgICAgICAgZmluaXNo ZWQuCj4+ICsgKiBAaHdfcnFfY291bnQ6IHRoZSBudW1iZXIgb2Ygam9icyBjdXJyZW50bHkgaW4g dGhlIGhhcmR3YXJlIHF1ZXVlLgo+PiArICogQGpvYl9pZF9jb3VudDogdXNlZCB0byBhc3NpZ24g dW5pcXVlIGlkIHRvIHRoZSBlYWNoIGpvYi4KPj4gKyAqIEB0aHJlYWQ6IHRoZSBrdGhyZWFkIG9u IHdoaWNoIHRoZSBzY2hlZHVsZXIgd2hpY2ggcnVuLgo+PiArICogQHJpbmdfbWlycm9yX2xpc3Q6 IHRoZSBsaXN0IG9mIGpvYnMgd2hpY2ggYXJlIGN1cnJlbnRseSBpbiB0aGUgam9iIHF1ZXVlLgo+ PiArICogQGpvYl9saXN0X2xvY2s6IGxvY2sgdG8gcHJvdGVjdCB0aGUgcmluZ19taXJyb3JfbGlz dC4KPj4gKyAqIEBoYW5nX2xpbWl0OiBvbmNlIHRoZSBoYW5ncyBieSBhIGpvYiBjcm9zc2VzIHRo aXMgbGltaXQgdGhlbiBpdCBpcyBtYXJrZWQKPj4gKyAqICAgICAgICAgICAgICBndWlsdHkgYW5k IGl0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3Igc2NoZWR1bGluZyBmdXJ0aGVyLgo+PiArICoKPj4g KyAqIE9uZSBzY2hlZHVsZXIgaXMgaW1wbGVtZW50ZWQgZm9yIGVhY2ggaGFyZHdhcmUgcmluZy4K Pj4gKyAqLwo+PiAgc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyIHsKPj4gICAgICAgICBjb25zdCBz dHJ1Y3QgZHJtX3NjaGVkX2JhY2tlbmRfb3BzICAgICAgKm9wczsKPj4gICAgICAgICB1aW50MzJf dCAgICAgICAgICAgICAgICAgICAgICAgIGh3X3N1Ym1pc3Npb25fbGltaXQ7Cj4+IC0tCj4+IDIu MTQuMwo+Pgo+Cj4KPgo+IC0tCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ICs0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==