From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anshul Makkar Subject: Re: [PATCH 1/4] xen: credit2: implement utilization cap Date: Mon, 12 Jun 2017 12:16:11 +0100 Message-ID: References: <149692186557.9605.11625777539060264052.stgit@Solace.fritz.box> <149692372627.9605.8252407697848997058.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKNKY-0004w9-HB for xen-devel@lists.xenproject.org; Mon, 12 Jun 2017 11:16:22 +0000 In-Reply-To: <149692372627.9605.8252407697848997058.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: George Dunlap , Andrew Cooper , Wei Liu , Ian Jackson , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMDgvMDYvMjAxNyAxMzowOCwgRGFyaW8gRmFnZ2lvbGkgd3JvdGU6Cj4gVGhpcyBjb21taXQg aW1wbGVtZW50cyB0aGUgWGVuIHBhcnQgb2YgdGhlIGNhcCBtZWNoYW5pc20gZm9yCj4gQ3JlZGl0 Mi4KPgo+IEEgY2FwIGlzIGhvdyBtdWNoLCBpbiB0ZXJtcyBvZiAlIG9mIHBoeXNpY2FsIENQVSB0 aW1lLCBhIGRvbWFpbgo+IGNhbiBleGVjdXRlIGF0IG1vc3QuCj4KPiBGb3IgaW5zdGFuY2UsIGEg ZG9tYWluIHRoYXQgbXVzdCBub3QgdXNlIG1vcmUgdGhhbiAxLzQgb2Ygb25lCj4gcGh5c2ljYWwg Q1BVLCBtdXN0IGhhdmUgYSBjYXAgb2YgMjUlOyBvbmUgdGhhdCBtdXN0IG5vdCB1c2UgbW9yZQo+ IHRoYW4gMSsxLzIgb2YgcGh5c2ljYWwgQ1BVIHRpbWUsIG11c3QgYmUgZ2l2ZW4gYSBjYXAgb2Yg MTUwJS4KPgo+IENhcHMgYXJlIHBlciBkb21haW4sIHNvIGl0IGlzIGFsbCBhIGRvbWFpbidzIHZD UFVzLCBjdW11bGF0aXZlbHksCj4gdGhhdCB3aWxsIGJlIGZvcmNlZCB0byBleGVjdXRlIG5vIG1v cmUgdGhhbiB0aGUgZGVjaWRlZCBhbW91bnQuCj4KPiBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IGdp dmluZyBlYWNoIGRvbWFpbiBhICdidWRnZXQnLCBhbmQgdXNpbmcKPiBhIChwZXItZG9tYWluIGFn YWluKSBwZXJpb2RpYyB0aW1lci4gVmFsdWVzIG9mIGJ1ZGdldCBhbmQgJ3BlcmlvZCcKPiBhcmUg Y2hvc2VuIHNvIHRoYXQgYnVkZ2V0L3BlcmlvZCBpcyBlcXVhbCB0byB0aGUgY2FwIGl0c2VsZi4K Pgo+IEJ1ZGdldCBpcyBidXJuZWQgYnkgdGhlIGRvbWFpbidzIHZDUFVzLCBpbiBhIHNpbWlsYXIg d2F5IHRvIGhvdwo+IGNyZWRpdHMgYXJlLgo+Cj4gV2hlbiBhIGRvbWFpbiBydW5zIG91dCBvZiBi dWRnZXQsIGl0cyB2Q1BVcyBjYW4ndCBydW4gYW55IGxvbmdlci4KaWYgdGhlIHZjcHVzIG9mIGEg ZG9tYWluIGhhdmUgY3JlZGl0IGFuZCBpZiBidWRnZXQgaGFzIHJ1biBvdXQsIHdpbGwgdGhlIAp2 Y3B1cyB3b24ndCBiZSBzY2hlZHVsZWQuCj4gVGhleSBjYW4gZ2Fpbiwgd2hlbiB0aGUgYnVkZ2V0 IGlzIHJlcGxlbmlzaG1lbnQgYnkgdGhlIHRpbWVyLCB3aGljaAo+IGV2ZW50IGhhcHBlbnMgb25j ZSBldmVyeSBwZXJpb2QuCj4KPiBCbG9ja2luZyB0aGUgdkNQVXMgYmVjYXVzZSBvZiBsYWNrIG9m IGJ1ZGdldCBoYXBwZW5zIGJ5Cj4gbWVhbnMgb2YgYSBuZXcgKF9WUEZfcGFya2VkKSBwYXVzZSBm bGFnLCBzbyB0aGF0LCBlLmcuLAo+IHZjcHVfcnVubmFibGUoKSBzdGlsbCB3b3Jrcy4gVGhpcyBp cyBzaW1pbGFyIHRvIHdoYXQgaXMKPiBkb25lIGluIHNjaGVkX3J0ZHMuYywgYXMgb3Bwb3NlZCB0 byB3aGF0IGhhcHBlbnMgaW4KPiBzY2hlZF9jcmVkaXQuYywgd2hlcmUgdmNwdV9wYXVzZSgpIGFu ZCB2Y3B1X3VucGF1c2UoKQo+ICh3aGljaCBtZWFucywgYW1vbmcgb3RoZXIgdGhpbmdzLCBtb3Jl IG92ZXJoZWFkKS4KPgo+IE5vdGUgdGhhdCB4ZW5hbHl6ZSBhbmQgdG9vbHMveGVudHJhY2UvZm9y bWF0IGFyZSBhbHNvIG1vZGlmaWVkLAo+IHRvIGtlZXAgdGhlbSB1cGRhdGVkIHdpdGggb25lIG1v ZGlmaWVkIGV2ZW50Lgo+Cj4gU2lnbmVkLW9mZi1ieTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZh Z2dpb2xpQGNpdHJpeC5jb20+Cj4gLS0tCj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5s YXBAZXUuY2l0cml4LmNvbT4KPiBDYzogQW5zaHVsIE1ha2thciA8YW5zaHVsLm1ha2thckBjaXRy aXguY29tPgo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gQ2M6IElhbiBKYWNrc29uIDxp YW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXgu Y29tPgo+IC0tLQo+ICB0b29scy94ZW50cmFjZS9mb3JtYXRzICAgICB8ICAgIDIKPiAgdG9vbHMv eGVudHJhY2UveGVuYWx5emUuYyAgfCAgIDEwICsKPiAgeGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQy LmMgfCAgNDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4g IHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oICAgIHwgICAgMwo+ICA0IGZpbGVzIGNoYW5nZWQsIDQ0 NSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS90b29scy94 ZW50cmFjZS9mb3JtYXRzIGIvdG9vbHMveGVudHJhY2UvZm9ybWF0cwo+IGluZGV4IDhiMzE3ODAu LjE0MmIwY2YgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMveGVudHJhY2UvZm9ybWF0cwo+ICsrKyBiL3Rv b2xzL3hlbnRyYWNlL2Zvcm1hdHMKPiBAQCAtNTEsNyArNTEsNyBAQAo+Cj4gIDB4MDAwMjIyMDEg IENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6dGljawo+ICAweDAw MDIyMjAyICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOnJ1bnFf cG9zICAgICAgIFsgZG9tOnZjcHUgPSAweCUoMSkwOHgsIHBvcyA9ICUoMilkXQo+IC0weDAwMDIy MjAzICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOmNyZWRpdCBi dXJuICAgIFsgZG9tOnZjcHUgPSAweCUoMSkwOHgsIGNyZWRpdCA9ICUoMilkLCBkZWx0YSA9ICUo MylkIF0KPiArMHgwMDAyMjIwMyAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAg Y3NjaGVkMjpjcmVkaXQgYnVybiAgICBbIGRvbTp2Y3B1ID0gMHglKDEpMDh4LCBjcmVkaXQgPSAl KDIpZCwgYnVkZ2V0ID0gJSgzKWQsIGRlbHRhID0gJSg0KWQgXQo+ICAweDAwMDIyMjA0ICBDUFUl KGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOmNyZWRpdF9hZGQKPiAgMHgw MDAyMjIwNSAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjp0aWNr bGVfY2hlY2sgICBbIGRvbTp2Y3B1ID0gMHglKDEpMDh4LCBjcmVkaXQgPSAlKDIpZCBdCj4gIDB4 MDAwMjIyMDYgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6dGlj a2xlICAgICAgICAgWyBjcHUgPSAlKDEpZCBdCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNl L3hlbmFseXplLmMgYi90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jCj4gaW5kZXggZmE2MDhhZC4u YzE2YzAyZCAxMDA2NDQKPiAtLS0gYS90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jCj4gKysrIGIv dG9vbHMveGVudHJhY2UveGVuYWx5emUuYwo+IEBAIC03NjgwLDEyICs3NjgwLDE0IEBAIHZvaWQg c2NoZWRfcHJvY2VzcyhzdHJ1Y3QgcGNwdV9pbmZvICpwKQo+ICAgICAgICAgICAgICBpZihvcHQu ZHVtcF9hbGwpIHsKPiAgICAgICAgICAgICAgICAgIHN0cnVjdCB7Cj4gICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHZjcHVpZDoxNiwgZG9taWQ6MTY7Cj4gLSAgICAgICAgICAgICAg ICAgICAgaW50IGNyZWRpdCwgZGVsdGE7Cj4gKyAgICAgICAgICAgICAgICAgICAgaW50IGNyZWRp dCwgYnVkZ2V0LCBkZWx0YTsKPiAgICAgICAgICAgICAgICAgIH0gKnIgPSAodHlwZW9mKHIpKXJp LT5kOwo+Cj4gLSAgICAgICAgICAgICAgICBwcmludGYoIiAlcyBjc2NoZWQyOmJ1cm5fY3JlZGl0 cyBkJXV2JXUsIGNyZWRpdCA9ICVkLCBkZWx0YSA9ICVkXG4iLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgIHJpLT5kdW1wX2hlYWRlciwgci0+ZG9taWQsIHItPnZjcHVpZCwKPiAtICAgICAgICAg ICAgICAgICAgICAgICByLT5jcmVkaXQsIHItPmRlbHRhKTsKPiArICAgICAgICAgICAgICAgIHBy aW50ZigiICVzIGNzY2hlZDI6YnVybl9jcmVkaXRzIGQldXYldSwgY3JlZGl0ID0gJWQsICIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmktPmR1bXBfaGVhZGVyLCByLT5kb21pZCwgci0+dmNw dWlkLCByLT5jcmVkaXQpOwo+ICsgICAgICAgICAgICAgICAgaWYgKCByLT5idWRnZXQgIT0gSU5U X01JTiApCj4gKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJidWRnZXQgPSAlZCwgIiwgci0+ YnVkZ2V0KTsKPiArICAgICAgICAgICAgICAgIHByaW50ZigiZGVsdGEgPSAlZFxuIiwgci0+ZGVs dGEpOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNh c2UgVFJDX1NDSEVEX0NMQVNTX0VWVChDU0NIRUQyLCA1KTogLyogVElDS0xFX0NIRUNLICAgICAg Ki8KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9u L3NjaGVkX2NyZWRpdDIuYwo+IGluZGV4IDEyNjQxN2MuLmJhNGJmNGIgMTAwNjQ0Cj4gLS0tIGEv eGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRp dDIuYwo+IEBAIC05Miw2ICs5Miw4MiBAQAo+ICAgKi8KPgo+ICAvKgo+ICsgKiBVdGlsaXphdGlv biBjYXA6Cj4gKyAqCj4gKyAqIFNldHRpbmcgYW4gcENQVSB1dGlsaXphdGlvbiBjYXAgZm9yIGEg ZG9tYWluIG1lYW5zIHRoZSBmb2xsb3dpbmc6Cj4gKyAqCj4gKyAqIC0gYSBkb21haW4gY2FuIGhh dmUgYSBjYXAsIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiAlIG9mIHBoeXNpY2FsIENQVSB0aW1lLgo+ ICsgKiAgIEEgZG9tYWluIHRoYXQgbXVzdCBub3QgdXNlIG1vcmUgdGhhbiAxLzQgb2YgX29uZV8g cGh5c2ljYWwgQ1BVLCB3aWxsCj4gKyAqICAgYmUgZ2l2ZW4gYSBjYXAgb2YgMjUlOyBhIGRvbWFp biB0aGF0IG11c3Qgbm90IHVzZSBtb3JlIHRoYW4gMSsxLzIgb2YKPiArICogICBwaHlzaWNhbCBD UFUgdGltZSwgd2lsbCBiZSBnaXZlbiBhIGNhcCBvZiAxNTAlOwo+ICsgKgo+ICsgKiAtIGNhcHMg YXJlIHBlci1kb21haW4gKG5vdCBwZXItdkNQVSkuIElmIGEgZG9tYWluIGhhcyBvbmx5IDEgdkNQ VSwgYW5kCj4gKyAqICAgYSA0MCUgY2FwLCB0aGF0IG9uZSB2Q1BVIHdpbGwgdXNlIDQwJSBvZiBv bmUgcENQVS4gSWYgYSBzb21haW4gaGFzIDQKPiArICogICB2Q1BVcywgYW5kIGEgMjAwJSBjYXAs IGFsbCBpdHMgNCB2Q1BVcyBhcmUgYWxsb3dlZCB0byBydW4gZm9yICh0aGUKPiArICogICBlcXVp dmFsZW50IG9mKSAxMDAlIHRpbWUgb24gMiBwQ1BVcy4gSG93IG11Y2ggZWFjaCBvZiB0aGUgdmFy aW91cyA0Cj4gKyAqICAgdkNQVXMgd2lsbCBnZXQsIGlzIHVuc3BlY2lmaWVkICh3aWxsIGRlcGVu ZCBvbiB2YXJpb3VzIGFzcGVjdHM6IHdvcmtsb2FkLAo+ICsgKiAgIHN5c3RlbSBsb2FkLCBldGMu KS4Kb3IgdGhlIHJhdGlvIGNhbiB2YXJ5IGVnLiA0IHZjcHVzIGFyZSBhbGxvd2VkIHRvIHJ1biBn b3QgNTAlIG9mIHRoZSB0aW1lIAppZiBvbiA0IHBjcHVzID8KPiArICoKPiArICogRm9yIGltcGxl bWVudGluZyB0aGlzLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBhcHByb2FjaDoKPiArICoKPiArICog LSBlYWNoIGRvbWFpbiBpcyBnaXZlbiBhICdidWRnZXQnLCBhbiBlYWNoIGRvbWFpbiBoYXMgYSB0 aW1lciwgd2hpY2gKPiArICogICByZXBsZW5pc2hlcyB0aGUgZG9tYWluJ3MgYnVkZ2V0IHBlcmlv ZGljYWxseS4gVGhlIGJ1ZGdldCBpcyB0aGUgYW1vdW50Cj4gKyAqICAgb2YgdGltZSB0aGUgdkNQ VXMgb2YgdGhlIGRvbWFpbiBjYW4gdXNlIGV2ZXJ5ICdwZXJpb2QnOwo+ICsgKgo+ICsgKiAtIHRo ZSBwZXJpb2QgaXMgQ1NDSEVEMl9CREdUX1JFUExfUEVSSU9ELCBhbmQgaXMgdGhlIHNhbWUgZm9y IGFsbCBkb21haW5zCj4gKyAqICAgKGJ1dCBlYWNoIGRvbWFpbiBoYXMgaXRzIG93biB0aW1lcjsg c28gdGhlIGFsbCBhcmUgcGVyaW9kaWMgYnkgdGhlIHNhbWUKPiArICogICBwZXJpb2QsIGJ1dCBy ZXBsZW5pc2htZW50IG9mIHRoZSBidWRnZXRzIG9mIHRoZSB2YXJpb3VzIGRvbWFpbnMsIGF0Cj4g KyAqICAgcGVyaW9kcyBib3VuZGFyaWVzLCBhcmUgbm90IHN5bmNocm9ub3VzKTsKPiArICoKPiAr ICogLSB3aGVuIHZDUFVzIHJ1biwgdGhleSBjb25zdW1lIGJ1ZGdldC4gV2hlbiB0aGV5IGRvbid0 IHJ1biwgdGhleSBkb24ndAo+ICsgKiAgIGNvbnN1bWUgYnVkZ2V0LiBJZiB0aGVyZSBpcyBubyBi dWRnZXQgbGVmdCBmb3IgdGhlIGRvbWFpbiwgbm8gdkNQVSBvZgo+ICsgKiAgIHRoYXQgZG9tYWlu IGNhbiBydW4uIElmIGEgdkNQVSB0cmllcyB0byBydW4gYW5kIGZpbmRzIHRoYXQgdGhlcmUgaXMg bm8KPiArICogICBidWRnZXQsIGl0IGJsb2Nrcy4KPiArICogICBCdWRnZXQgbmV2ZXIgZXhwaXJl cywgc28gYXQgd2hhdGV2ZXIgdGltZSBhIHZDUFUgd2FudHMgdG8gcnVuLCBpdCBjYW4KPiArICog ICBjaGVjayB0aGUgZG9tYWluJ3MgYnVkZ2V0LCBhbmQgaWYgdGhlcmUgaXMgc29tZSwgaXQgY2Fu IHVzZSBpdC4KPiArICoKPiArICogLSBidWRnZXQgaXMgcmVwbGVuaXNoZWQgdG8gdGhlIHRvcCBv ZiB0aGUgY2FwYWNpdHkgZm9yIHRoZSBkb21haW4gb25jZQo+ICsgKiAgIHBlciBwZXJpb2QuIEV2 ZW4gaWYgdGhlcmUgd2FzIHNvbWUgbGVmdG92ZXIgYnVkZ2V0IGZyb20gcHJldmlvdXMgcGVyaW9k LAo+ICsgKiAgIHRob3VnaCwgdGhlIGJ1ZGdldCBhZnRlciBhIHJlcGxlbmlzaG1lbnQgd2lsbCBh bHdheXMgYmUgYXQgbW9zdCBlcXVhbAo+ICsgKiAgIHRvIHRoZSB0b3RhbCBjYXBhY2lmeSBvZiB0 aGUgZG9tYWluICgndG90X2J1ZGdldCcpOwo+ICsgKgpidWRnZXQgaXMgcmVwbGVuaXNoZWQgYnV0 IGNyZWRpdHMgbm90IGF2YWlsYWJsZSA/CmJ1ZGdldCBpcyBmaW5pc2hlZCBidXQgbm90IHZjcHUg aGFzIG5vdCByZWFjaGVkIHRoZSByYXRlIGxpbWl0IGJvdW5kYXJ5ID8KCj4gKyAqIC0gd2hlbiBh IGJ1ZGdldCByZXBsZW5pc2htZW50IG9jY3VycywgaWYgdGhlcmUgYXJlIHZDUFVzIHRoYXQgaGFk IGJlZW4KPiArICogICBibG9ja2VkIGJlY2F1c2Ugb2YgbGFjayBvZiBidWRnZXQsIHRoZXknbGwg YmUgdW5ibG9ja2VkLCBhbmQgdGhleSB3aWxsCj4gKyAqICAgKHBvdGVudGlhbGx5KSBiZSBhYmxl IHRvIHJ1biBhZ2Fpbi4KPiArICoKPiArICogRmluYWxseSwgc29tZSBldmVuIG1vcmUgaW1wbGVt ZW50YXRpb24gcmVsYXRlZCBkZXRhaWw6Cj4gKyAqCj4gKyAqIC0gYnVkZ2V0IGlzIHN0b3JlZCBp biBhIGRvbWFpbi13aWRlIHBvb2wuIHZDUFVzIG9mIHRoZSBkb21haW4gdGhhdCB3YW50Cj4gKyAq ICAgdG8gcnVuIGdvIHRvIHN1Y2ggcG9vbCwgYW5kIGdydWIgc29tZS4gV2hlbiB0aGV5IGRvIHNv LCB0aGUgYW1vdW50Cj4gKyAqICAgdGhleSBncmFiYmVkIGlzIF9pbW1lZGlhdGVseV8gcmVtb3Zl ZCBmcm9tIHRoZSBwb29sLiBUaGlzIGhhcHBlbnMgaW4KPiArICogICB2Y3B1X3RyeV90b19nZXRf YnVkZ2V0KCk7Cj4gKyAqCj4gKyAqIC0gd2hlbiB2Q1BVcyBzdG9wIHJ1bm5pbmcsIGlmIHRoZXkn dmUgbm90IGNvbnN1bWVkIGFsbCB0aGUgYnVkZ2V0IHRoZXkKPiArICogICB0b29rLCB0aGUgbGVm dG92ZXIgaXMgcHV0IGJhY2sgaW4gdGhlIHBvb2wuIFRoaXMgaGFwcGVucyBpbgo+ICsgKiAgIHZj cHVfZ2l2ZV9idWRnZXRfYmFjaygpOwoyMDAlIGJ1ZGdldCwgNCB2Y3B1cyB0byBydW4gb24gNCBw Y3B1cyBlYWNoIGFsbG93ZWQgb25seSA1MCUgb2YgYnVkZ2V0LiAKVGhpcyBpcyBhIHN0YXRpYyBh bGxvY2F0aW9uIC4gZm9yIGVnLiAyIHZjcHVzIHJ1bm5pbmcgb24gMiBwdnB1cyBhdCAyMCUgCmJ1 ZGdldGVkIHRpbWUsIGlmIHZjcHUzIHdhbnRzIHRvIGV4ZWN1dGUgc29tZSBjcHUgaW50ZW5zaXZl IHRhc2ssIHRoZW4gCml0IHdvbid0IGJlIGFsbG93ZWQgdG8gYWxsb3dlZCB0byB1c2UgbW9yZSB0 aGFuIDUwJSBvZiB0aGUgcGNwdXMuCgpJIGNoZWNrZWQgdGhlIGltcGxlbmF0aW9uIGJlbG93IGFu ZCBJIGJlbGlldmUgd2UgY2FuIGFsbG93IGZvciB0aGVzZSAKdHlwZSBvZiBkeW5hbWljIGJ1ZGdl dF9xdW90YSBhbGxvY2F0aW9uIHBlciB2Y3B1LiBOb3QgZm9yIGluaXRpYWwgCnZlcnNpb24sIGJ1 dCBjZXJ0YWlubHkgd2UgY2FuIGNvbnNpZGVyIGl0IGZvciBmdXR1cmUgdmVyc2lvbnMuCj4gKyAq Cj4gKyAqIC0gdGhlIGFib3ZlIG1lYW5zIHRoYXQgYSB2Q1BVIGNhbiBmaW5kIG91dCB0aGF0IHRo ZXJlIGlzIG5vIGJ1ZGdldCBhbmQKPiArICogICBibG9jaywgbm90IG9ubHkgaWYgdGhlIGNhcCBo YXMgYWN0dWFsbHkgYmVlbiByZWFjaGVkIChmb3IgdGhpcyBwZXJpb2QpLAo+ICsgKiAgIGJ1dCBh bHNvIGlmIHNvbWUgb3RoZXIgdkNQVXMsIGluIG9yZGVyIHRvIHJ1biwgaGF2ZSBncmFiYmVkIGEg Y2VydGFpbgo+ICsgKiAgIHF1b3RhIG9mIGJ1ZGdldCwgbm8gbWF0dGVyIHdoZXRoZXIgdGhleSd2 ZSBhbHJlYWR5IHVzZWQgaXQgYWxsIG9yIG5vdC4KPiArICogICBBIHZDUFUgYmxvY2tpbmcgYmVj YXVzZSAoYW55IGZvcm0gb2YpIGxhY2sgb2YgYnVkZ2V0IGlzIHNhaWQgdG8gYmUKPiArICogICAi cGFya2VkIiwgYW5kIHN1Y2ggYmxvY2tpbmcgaGFwcGVucyBpbiBwYXJrX3ZjcHUoKTsKPiArICoK PiArICogLSB3aGVuIGEgdkNQVSBzdG9wcyBydW5uaW5nLCBhbmQgcHV0cyBiYWNrIHNvbWUgYnVk Z2V0IGluIHRoZSBkb21haW4gcG9vbCwKPiArICogICB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIg dGhlcmUgaXMgc29tZW9uZSB3aGljaCBoYXMgYmVlbiBwYXJrZWQgYW5kIHRoYXQKPiArICogICBj YW4gYmUgdW5wYXJrZWQuIFRoaXMgaGFwcGVucyBpbiB1bnBhcmtfcGFya2VkX3ZjcHVzKCksIGNh bGxlZCBmcm9tCj4gKyAqICAgY3NjaGVkMl9jb250ZXh0X3NhdmVkKCk7Cj4gKyAqCj4gKyAqIC0g b2YgY291cnNlLCB1bnBhcmtpbmcgaGFwcGVucyBhbHNvIGFzIGEgY29uc2VxdWVuZSBvZiB0aGUg ZG9tYWluJ3MgYnVkZ2V0Cj4gKyAqICAgYmVpbmcgcmVwbGVuaXNoZWQgYnkgdGhlIHBlcmlvZGlj IHRpbWVyLiBUaGlzIGFsc28gb2NjdXJzIGJ5IG1lYW5zIG9mCj4gKyAqICAgY2FsbGluZyBjc2No ZWQyX2NvbnRleHRfc2F2ZWQoKSAoYnV0IGZyb20gcmVwbF9zZG9tX2J1ZGdldCgpKTsKPiArICoK PiArICogLSBwYXJrZWQgdkNQVXMgb2YgYSBkb21haW4gYXJlIGtlcHQgaW4gYSAocGVyLWRvbWFp bikgbGlzdCwgY2FsbGVkCj4gKyAqICAgJ3BhcmtlZF92Y3B1cycpLiBNYW5pcHVsYXRpb24gb2Yg dGhlIGxpc3QgYW5kIG9mIHRoZSBkb21haW4td2lkZSBidWRnZXQKPiArICogICBwb29sLCBtdXN0 IG9jY3VyIG9ubHkgd2hlbiBob2xkaW5nIHRoZSAnYnVkZ2V0X2xvY2snLgo+ICsgKi8KPiArCj4g Ky8qCj4gICAqIExvY2tpbmc6Cj4gICAqCj4gICAqIC0gcnVucXVldWUgbG9jawo+IEBAIC0xMTIs MTggKzE4OCwyOSBAQAo+ICAgKiAgICAgcnVucXVldWUgZWFjaCBjcHUgaXM7Cj4gICAqICArIHNl cmlhbGl6ZXMgdGhlIG9wZXJhdGlvbiBvZiBjaGFuZ2luZyB0aGUgd2VpZ2h0cyBvZiBkb21haW5z Owo+ICAgKgo+ICsgKiAtIEJ1ZGdldCBsb2NrCj4gKyAqICArIGl0IGlzIHBlci1kb21haW47Cj4g KyAqICArIHByb3RlY3RzLCBpbiBkb21haW5zIHRoYXQgaGF2ZSBhbiB1dGlsaXphdGlvbiBjYXA7 Cj4gKyAqICAgKiBtYW5pcHVsYXRpb24gb2YgdGhlIHRvdGFsIGJ1ZGdldCBvZiB0aGUgZG9tYWlu IChhcyBpdCBpcyBzaGFyZWQKPiArICogICAgIGFtb25nIGFsbCB2Q1BVcyBvZiB0aGUgZG9tYWlu KSwKPiArICogICAqIG1hbmlwdWxhdGlvbiBvZiB0aGUgbGlzdCBvZiB2Q1BVcyB0aGF0IGFyZSBi bG9ja2VkIHdhaXRpbmcgZm9yCj4gKyAqICAgICBzb21lIGJ1ZGdldCB0byBiZSBhdmFpbGFibGUu Cj4gKyAqCj4gICAqIC0gVHlwZToKPiAgICogICsgcnVucXVldWUgbG9ja3MgYXJlICdyZWd1bGFy JyBzcGlubG9ja3M7Cj4gICAqICArIHRoZSBwcml2YXRlIHNjaGVkdWxlciBsb2NrIGNhbiBiZSBh biByd2xvY2suIEluIGZhY3QsIGRhdGEKPiAgICogICAgaXQgcHJvdGVjdHMgaXMgbW9kaWZpZWQg b25seSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGNwdXBvb2wKPiAgICogICAgbWFuaXB1bGF0aW9u IGFuZCB3aGVuIGNoYW5naW5nIHdlaWdodHMsIGFuZCByZWFkIGluIGFsbAo+IC0gKiAgICBvdGhl ciBjYXNlcyAoZS5nLiwgZHVyaW5nIGxvYWQgYmFsYW5jaW5nKS4KPiArICogICAgb3RoZXIgY2Fz ZXMgKGUuZy4sIGR1cmluZyBsb2FkIGJhbGFuY2luZyk7Cj4gKyAqICArIGJ1ZGdldCBsb2NrcyBh cmUgJ3JlZ3VsYXInIHNwaW5sb2Nrcy4KPiAgICoKPiAgICogT3JkZXJpbmc6Cj4gICAqICArIHR5 bG9jayBtdXN0IGJlIHVzZWQgd2hlbiB3YW50aW5nIHRvIHRha2UgYSBydW5xdWV1ZSBsb2NrLAo+ ICAgKiAgICBpZiB3ZSBhbHJlYWR5IGhvbGQgYW5vdGhlciBvbmU7Cj4gICAqICArIGlmIHRha2lu ZyBib3RoIGEgcnVucXVldWUgbG9jayBhbmQgdGhlIHByaXZhdGUgc2NoZWR1bGVyCj4gLSAqICAg IGxvY2sgaXMsIHRoZSBsYXR0ZXIgbXVzdCBhbHdheXMgYmUgdGFrZW4gZm9yIGZpcnN0Lgo+ICsg KiAgICBsb2NrIGlzLCB0aGUgbGF0dGVyIG11c3QgYWx3YXlzIGJlIHRha2VuIGZvciBmaXJzdDsK PiArICogICsgaWYgdGFraW5nIGJvdGggYSBydW5xdWV1ZSBsb2NrIGFuZCBhIGJ1ZGdldCBsb2Nr LCB0aGUgZm9ybWVyCj4gKyAqICAgIG11c3QgYWx3YXlzIGJlIHRha2VuIGZvciBmaXJzdC4KPiAg ICovCj4KPiAgLyoKPiBAQCAtMTY0LDYgKzI1MSw4IEBACj4gICNkZWZpbmUgQ1NDSEVEMl9DUkVE SVRfUkVTRVQgICAgICAgICAwCj4gIC8qIE1heCB0aW1lcjogTWF4aW11bSB0aW1lIGEgZ3Vlc3Qg Y2FuIGJlIHJ1biBmb3IuICovCj4gICNkZWZpbmUgQ1NDSEVEMl9NQVhfVElNRVIgICAgICAgICAg ICBDU0NIRUQyX0NSRURJVF9JTklUCj4gKy8qIFBlcmlvZCBvZiB0aGUgY2FwIHJlcGxlbmlzaG1l bnQgdGltZXIuICovCj4gKyNkZWZpbmUgQ1NDSEVEMl9CREdUX1JFUExfUEVSSU9EICAgICAoKG9w dF9jYXBfcGVyaW9kKSpNSUxMSVNFQ1MoMSkpCj4KPiAgLyoKPiAgICogRmxhZ3MKPiBAQCAtMjkz LDYgKzM4MiwxNCBAQCBzdGF0aWMgaW50IF9fcmVhZF9tb3N0bHkgb3B0X3VuZGVybG9hZF9iYWxh bmNlX3RvbGVyYW5jZSA9IDA7Cj4gIGludGVnZXJfcGFyYW0oImNyZWRpdDJfYmFsYW5jZV91bmRl ciIsIG9wdF91bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2UpOwo+ICBzdGF0aWMgaW50IF9fcmVh ZF9tb3N0bHkgb3B0X292ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlID0gLTM7Cj4gIGludGVnZXJf cGFyYW0oImNyZWRpdDJfYmFsYW5jZV9vdmVyIiwgb3B0X292ZXJsb2FkX2JhbGFuY2VfdG9sZXJh bmNlKTsKPiArLyoKPiArICogRG9tYWlucyBzdWJqZWN0IHRvIGEgY2FwLCByZWNlaXZlIGEgcmVw bGVuaXNobWVudCBvZiB0aGVpciBydW50aW1lIGJ1ZGdldAo+ICsgKiBvbmNlIGV2ZXJ5IG9wdF9j YXBfcGVyaW9kIGludGVydmFsLiBEZWZhdWx0IGlzIDEwIG1zLiBUaGUgYW1vdW50IG9mIGJ1ZGdl dAo+ICsgKiB0aGV5IHJlY2VpdmUgZGVwZW5kcyBvbiB0aGVpciBjYXAuIEZvciBpbnN0YW5jZSwg YSBkb21haW4gd2l0aCBhIDUwJSBjYXAKPiArICogd2lsbCByZWNlaXZlIDUwJSBvZiAxMCBtcywg c28gNSBtcy4KPiArICovCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBvcHRf Y2FwX3BlcmlvZCA9IDEwOyAgICAvKiBtcyAqLwo+ICtpbnRlZ2VyX3BhcmFtKCJjcmVkaXQyX2Nh cF9wZXJpb2RfbXMiLCBvcHRfY2FwX3BlcmlvZCk7Cj4KPiAgLyoKPiAgICogUnVucXVldWUgb3Jn YW5pemF0aW9uLgo+IEBAIC00MDgsNiArNTA1LDEwIEBAIHN0cnVjdCBjc2NoZWQyX3ZjcHUgewo+ ICAgICAgdW5zaWduZWQgaW50IHJlc2lkdWFsOwo+Cj4gICAgICBpbnQgY3JlZGl0Owo+ICsKPiAr ICAgIHNfdGltZV90IGJ1ZGdldDsKaXQncyBjb25mdXNpbmcsIHBsZWFzZSBjYW4gd2UgaGF2ZSBk aWZmZXJlbnQgbWVtYmVyIG5hbWVzIGZvciBidWRnZXQgaW4gCmRvbWFpbiBhbmQgdmNwdSBzdHJ1 Y3R1cmUuCj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHBhcmtlZF9lbGVtOyAgICAgIC8qIE9uIHRo ZSBwYXJrZWRfdmNwdXMgbGlzdCAgICovCj4gKwo+ICAgICAgc190aW1lX3Qgc3RhcnRfdGltZTsg LyogV2hlbiB3ZSB3ZXJlIHNjaGVkdWxlZCAodXNlZCBmb3IgY3JlZGl0KSAqLwo+ICAgICAgdW5z aWduZWQgZmxhZ3M7ICAgICAgLyogMTYgYml0cyBkb2Vzbid0IHNlZW0gdG8gcGxheSB3ZWxsIHdp dGggY2xlYXJfYml0KCkgKi8KPiAgICAgIGludCB0aWNrbGVkX2NwdTsgICAgIC8qIGNwdSB0aWNr bGVkIGZvciBwaWNraW5nIHVzIHVwICgtMSBpZiBub25lKSAqLwo+IEBAIC00MjUsNyArNTI2LDE1 IEBAIHN0cnVjdCBjc2NoZWQyX3ZjcHUgewo+ICBzdHJ1Y3QgY3NjaGVkMl9kb20gewo+ICAgICAg c3RydWN0IGxpc3RfaGVhZCBzZG9tX2VsZW07Cj4gICAgICBzdHJ1Y3QgZG9tYWluICpkb207Cj4g Kwo+ICsgICAgc3BpbmxvY2tfdCBidWRnZXRfbG9jazsKPiArICAgIHN0cnVjdCB0aW1lciByZXBs X3RpbWVyOwo+ICsgICAgc190aW1lX3QgbmV4dF9yZXBsOwo+ICsgICAgc190aW1lX3QgYnVkZ2V0 LCB0b3RfYnVkZ2V0Owo+ICsgICAgc3RydWN0IGxpc3RfaGVhZCBwYXJrZWRfdmNwdXM7Cj4gKwo+ ICAgICAgdWludDE2X3Qgd2VpZ2h0Owo+ICsgICAgdWludDE2X3QgY2FwOwo+ICAgICAgdWludDE2 X3QgbnJfdmNwdXM7Cj4gIH07Cj4KPiBAQCAtNDYwLDYgKzU2OSwxMiBAQCBzdGF0aWMgaW5saW5l IHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKmMycnFkKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywKPiAgICAgIHJldHVybiAmY3NjaGVkMl9wcml2KG9wcyktPnJxZFtjMnIob3BzLCBj cHUpXTsKPiAgfQo+Cj4gKy8qIERvZXMgdGhlIGRvbWFpbiBvZiB0aGlzIHZDUFUgaGF2ZSBhIGNh cD8gKi8KPiArc3RhdGljIGlubGluZSBib29sIGhhc19jYXAoY29uc3Qgc3RydWN0IGNzY2hlZDJf dmNwdSAqc3ZjKQo+ICt7Cj4gKyAgICByZXR1cm4gc3ZjLT5idWRnZXQgIT0gU1RJTUVfTUFYOwo+ ICt9Cj4gKwo+ICAvKgo+ICAgKiBIeXBlcnRocmVhZGluZyAoU01UKSBzdXBwb3J0Lgo+ICAgKgo+ IEBAIC0xMzU0LDcgKzE0NjksMTYgQEAgc3RhdGljIHZvaWQgcmVzZXRfY3JlZGl0KGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSwgc190aW1lX3Qgbm93LAo+ICAgICAgICAgICAq IHRoYXQgdGhlIGNyZWRpdCBpdCBoYXMgc3BlbnQgc28gZmFyIGdldCBhY2NvdW50ZWQuCj4gICAg ICAgICAgICovCj4gICAgICAgICAgaWYgKCBzdmMtPnZjcHUgPT0gY3Vycl9vbl9jcHUoc3ZjX2Nw dSkgKQo+ICsgICAgICAgIHsKPiAgICAgICAgICAgICAgYnVybl9jcmVkaXRzKHJxZCwgc3ZjLCBu b3cpOwo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBBbmQsIHNpbWlsYXJseSwg aW4gY2FzZSBpdCBoYXMgcnVuIG91dCBvZiBidWRnZXQsIGFzIGEKPiArICAgICAgICAgICAgICog Y29uc2VxdWVuY2Ugb2YgdGhpcyByb3VuZCBvZiBhY2NvdW50aW5nLCB3ZSBhbHNvIG11c3QgaW5m b3JtCj4gKyAgICAgICAgICAgICAqIGl0cyBwQ1BVIHRoYXQgaXQncyB0aW1lIHRvIHBhcmsgaXQs IGFuZCBwaWNrIHVwIHNvbWVvbmUgZWxzZS4KPiArICAgICAgICAgICAgICovCj4gKyAgICAgICAg ICAgIGlmICggdW5saWtlbHkoc3ZjLT5idWRnZXQgPD0gMCkgKQp1c2Ugb2YgdW5saWtlbHkgaGVy ZSBpcyBub3Qgc2F2aW5nIG11Y2ggb2YgY3B1IGN5Y2xlcy5gCj4gKyAgICAgICAgICAgICAgICB0 aWNrbGVfY3B1KHN2Y19jcHUsIHJxZCk7Cj4gKyAgICAgICAgfQo+Cj4gICAgICAgICAgc3RhcnRf Y3JlZGl0ID0gc3ZjLT5jcmVkaXQ7Cj4KPiBAQCAtMTQxMCwyNyArMTUzNCwzNSBAQCB2b2lkIGJ1 cm5fY3JlZGl0cyhzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCj4KPiAgICAgIGRl bHRhID0gbm93IC0gc3ZjLT5zdGFydF90aW1lOwo+Cj4gLSAgICBpZiAoIGxpa2VseShkZWx0YSA+ IDApICkKPiAtICAgIHsKPiAtICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKGJ1cm5fY3JlZGl0c190 MmMpOwo+IC0gICAgICAgIHQyY191cGRhdGUocnFkLCBkZWx0YSwgc3ZjKTsKPiAtICAgICAgICBz dmMtPnN0YXJ0X3RpbWUgPSBub3c7Cj4gLSAgICB9Cj4gLSAgICBlbHNlIGlmICggZGVsdGEgPCAw ICkKPiArICAgIGlmICggdW5saWtlbHkoZGVsdGEgPD0gMCkgKQo+ICAgICAgewo+IC0gICAgICAg IGQycHJpbnRrKCJXQVJOSU5HOiAlczogVGltZSB3ZW50IGJhY2t3YXJkcz8gbm93ICUiUFJJX3N0 aW1lIiBzdGFydF90aW1lICUiUFJJX3N0aW1lIlxuIiwKPiAtICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgbm93LCBzdmMtPnN0YXJ0X3RpbWUpOwo+ICsgICAgICAgIGlmICggdW5saWtlbHkoZGVs dGEgPCAwKSApCj4gKyAgICAgICAgICAgIGQycHJpbnRrKCJXQVJOSU5HOiAlczogVGltZSB3ZW50 IGJhY2t3YXJkcz8gbm93ICUiUFJJX3N0aW1lCj4gKyAgICAgICAgICAgICAgICAgICAgICIgc3Rh cnRfdGltZSAlIlBSSV9zdGltZSJcbiIsIF9fZnVuY19fLCBub3csCj4gKyAgICAgICAgICAgICAg ICAgICAgIHN2Yy0+c3RhcnRfdGltZSk7Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gICAgICB9Cj4K PiArICAgIFNDSEVEX1NUQVRfQ1JBTksoYnVybl9jcmVkaXRzX3QyYyk7Cj4gKyAgICB0MmNfdXBk YXRlKHJxZCwgZGVsdGEsIHN2Yyk7Cj4gKwo+ICsgICAgaWYgKCB1bmxpa2VseShzdmMtPmJ1ZGdl dCAhPSBTVElNRV9NQVgpICkKbm90IGNsZWFyLCB3aGF0IGlzIHRoaXMgY2hlY2sgYWJvdXQgPwo+ ICsgICAgICAgIHN2Yy0+YnVkZ2V0IC09IGRlbHRhOwo+ICsKPiArICAgIHN2Yy0+c3RhcnRfdGlt ZSA9IG5vdzsKPiArCj4gKyBvdXQ6Cj4gICAgICBpZiAoIHVubGlrZWx5KHRiX2luaXRfZG9uZSkg KQo+ICAgICAgewo+ICAgICAgICAgIHN0cnVjdCB7Cj4gICAgICAgICAgICAgIHVuc2lnbmVkIHZj cHU6MTYsIGRvbToxNjsKPiAtICAgICAgICAgICAgaW50IGNyZWRpdCwgZGVsdGE7Cj4gKyAgICAg ICAgICAgIGludCBjcmVkaXQsIGJ1ZGdldDsKPiArICAgICAgICAgICAgaW50IGRlbHRhOwo+ICAg ICAgICAgIH0gZDsKPiAgICAgICAgICBkLmRvbSA9IHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5f aWQ7Cj4gICAgICAgICAgZC52Y3B1ID0gc3ZjLT52Y3B1LT52Y3B1X2lkOwo+ICAgICAgICAgIGQu Y3JlZGl0ID0gc3ZjLT5jcmVkaXQ7Cj4gKyAgICAgICAgZC5idWRnZXQgPSBoYXNfY2FwKHN2Yykg PyAgc3ZjLT5idWRnZXQgOiBJTlRfTUlOOwo+ICAgICAgICAgIGQuZGVsdGEgPSBkZWx0YTsKPiAg ICAgICAgICBfX3RyYWNlX3ZhcihUUkNfQ1NDSEVEMl9DUkVESVRfQlVSTiwgMSwKPiAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoZCksCj4gQEAgLTE0MzgsNiArMTU3MCwyMTcgQEAgdm9pZCBi dXJuX2NyZWRpdHMoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkLAo+ICAgICAgfQo+ ICB9Cj4KPiArLyoKPiArICogQnVkZ2V0LXJlbGF0ZWQgY29kZS4KPiArICovCj4gKwo+ICtzdGF0 aWMgdm9pZCBwYXJrX3ZjcHUoc3RydWN0IGNzY2hlZDJfdmNwdSAqc3ZjKQo+ICt7Cj4gKyAgICBz dHJ1Y3QgdmNwdSAqdiA9IHN2Yy0+dmNwdTsKPiArCj4gKyAgICBBU1NFUlQoc3Bpbl9pc19sb2Nr ZWQoJnN2Yy0+c2RvbS0+YnVkZ2V0X2xvY2spKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogSXQg d2FzIGltcG9zc2libGUgdG8gZmluZCBidWRnZXQgZm9yIHRoaXMgdkNQVSwgc28gaXQgaGFzIHRv IGJlCj4gKyAgICAgKiAicGFya2VkIi4gVGhpcyBpbXBsaWVzIGl0IGlzIG5vdCBydW5uYWJsZSwg c28gd2UgbWFyayBpdCBhcyBzdWNoIGluCj4gKyAgICAgKiBpdHMgcGF1c2VfZmxhZ3MuIElmIHRo ZSB2Q1BVIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQgKHdoaWNoIG1lYW5zIHdlCj4gKyAgICAgKiBh cmUgaGVyZSBhZnRlciBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gY3NjaGVkX3NjaGVkdWxlKCkp LCBmbGFnZ2luZwo+ICsgICAgICogaXMgZW5vdWdoLCBhcyB3ZSdsbCBjaG9vc2Ugc29tZW9uZSBl bHNlLCBhbmQgdGhlbiBjb250ZXh0X3NhdmVkKCkKPiArICAgICAqIHdpbGwgdGFrZSBjYXJlIG9m IHVwZGF0aW5nIHRoZSBsb2FkIHByb3Blcmx5Lgo+ICsgICAgICoKPiArICAgICAqIElmLCBPVE9I LCB0aGUgdkNQVSBpcyBzaXR0aW5nIGluIHRoZSBydW5xdWV1ZSAod2hpY2ggbWVhbnMgd2UgYXJl IGhlcmUKPiArICAgICAqIGFmdGVyIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBydW5xX2NhbmRp ZGF0ZSgpKSwgd2UgbXVzdCBnbyBhbGwgdGhlCj4gKyAgICAgKiB3YXkgZG93biB0byB0YWtpbmcg aXQgb3V0IG9mIHRoZXJlLCBhbmQgdXBkYXRpbmcgdGhlIGxvYWQgYWNjb3JkaW5nbHkuCj4gKyAg ICAgKgo+ICsgICAgICogSW4gYm90aCBjYXNlcywgd2UgYWxzbyBhZGQgaXQgdG8gdGhlIGxpc3Qg b2YgcGFya2VkIHZDUFVzIG9mIHRoZSBkb21haW4uCj4gKyAgICAgKi8KPiArICAgIF9fc2V0X2Jp dChfVlBGX3BhcmtlZCwgJnYtPnBhdXNlX2ZsYWdzKTsKPiArICAgIGlmICggdmNwdV9vbl9ydW5x KHN2YykgKQo+ICsgICAgewo+ICsgICAgICAgIHJ1bnFfcmVtb3ZlKHN2Yyk7Cj4gKyAgICAgICAg dXBkYXRlX2xvYWQoc3ZjLT5zZG9tLT5kb20tPmNwdXBvb2wtPnNjaGVkLCBzdmMtPnJxZCwgc3Zj LCAtMSwgTk9XKCkpOwo+ICsgICAgfQo+ICsgICAgbGlzdF9hZGQoJnN2Yy0+cGFya2VkX2VsZW0s ICZzdmMtPnNkb20tPnBhcmtlZF92Y3B1cyk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHZjcHVf dHJ5X3RvX2dldF9idWRnZXQoc3RydWN0IGNzY2hlZDJfdmNwdSAqc3ZjKQo+ICt7Cj4gKyAgICBz dHJ1Y3QgY3NjaGVkMl9kb20gKnNkb20gPSBzdmMtPnNkb207Cj4gKyAgICB1bnNpZ25lZCBpbnQg Y3B1ID0gc3ZjLT52Y3B1LT5wcm9jZXNzb3I7Cj4gKwo+ICsgICAgQVNTRVJUKHNwaW5faXNfbG9j a2VkKHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrKSk7Cj4gKwo+ICsg ICAgaWYgKCBzdmMtPmJ1ZGdldCA+IDAgKQo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsKPiAr ICAgIC8qIGJ1ZGdldF9sb2NrIG5lc3RzIGluc2lkZSBydW5xdWV1ZSBsb2NrLiAqLwo+ICsgICAg c3Bpbl9sb2NrKCZzZG9tLT5idWRnZXRfbG9jayk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIEhl cmUsIHN2Yy0+YnVkZ2V0IGlzIDw9IDAgKGFzLCBpZiBpdCB3YXMgPiAwLCB3ZSdkIGhhdmUgdGFr ZW4gdGhlIGlmCj4gKyAgICAgKiBhYm92ZSEpLiBUaGF0IGJhc2ljYWxseSBtZWFucyB0aGUgdkNQ VSBoYXMgb3ZlcnJ1biBhIGJpdCAtLWJlY2F1c2Ugb2YKPiArICAgICAqIHZhcmlvdXMgcmVhc29u cy0tIGFuZCB3ZSB3YW50IHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQuIFdpdGggdGhlICs9LAo+ ICsgICAgICogd2UgYXJlIGFjdHVhbGx5IHN1YnRyYWN0aW5nIHRoZSBhbW91bnQgb2YgYnVkZ2V0 IHRoZSB2Q1BVIGhhcwo+ICsgICAgICogb3ZlcmNvbnN1bWVkLCBmcm9tIHRoZSB0b3RhbCBkb21h aW4gYnVkZ2V0Lgo+ICsgICAgICovCj4gKyAgICBzZG9tLT5idWRnZXQgKz0gc3ZjLT5idWRnZXQ7 Cj4gKwo+ICsgICAgaWYgKCBzZG9tLT5idWRnZXQgPiAwICkKPiArICAgIHsKPiArICAgICAgICBz dmMtPmJ1ZGdldCA9IHNkb20tPmJ1ZGdldDsKd2h5IGFyZSB5b3UgYXNzaWduaW5nIHRoZSByZW1h aW5pbmcgc2RvbS0+YnVkZ2UgdG8gb25seSB0aGlzIHN2Yy4gc3ZjIApzaG91bGQgYmUgYXNzaWdu ZWQgYSBwcm9wb3J0aW9uYXRlIGJ1ZGdldC4KRWFjaCB2Y3B1IGlzIGFzc2lnbmVkIGEgJWFnZSBv ZiB0aGUgZG9tYWluIGJ1ZGdldCBiYXNlZCBvbiB0aGUgY2FwIGFuZCAKbnVtYmVyIG9mIHZjcHVz LgpUaGVyZSBpcyBkaWZmZXJlbmNlIGluIHRoZSBjb2RlIHRoYXQncyBoZXJlIGFuZCB0aGUgY29k ZSBpbiBicmFuY2ggCmdpdDovL3hlbmJpdHMueGVuLm9yZy9wZW9wbGUvZGFyaW9mL3hlbi5naXQg KGZldGNoKSAKcmVsL3NjaGVkL2NyZWR0aTItY2FwcyBicmFuY2guIExvZ2ljIGluIHRoZSBicmFu Y2ggY29kZSBsb29rcyBmaW5lIHdoZXJlIAp5b3UgYXJlIHRha2luZyBzdmMtPmJ1ZGdldF9xdW90 YSBpbnRvIGNvbnNpZHJhdGlvbi4uCj4gKyAgICAgICAgc2RvbS0+YnVkZ2V0ID0gMDsKPiArICAg IH0KPiArICAgIGVsc2UKPiArICAgIHsKPiArICAgICAgICBzdmMtPmJ1ZGdldCA9IDA7Cj4gKyAg ICAgICAgcGFya192Y3B1KHN2Yyk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc3Bpbl91bmxvY2soJnNk b20tPmJ1ZGdldF9sb2NrKTsKPiArCj4gKyAgICByZXR1cm4gc3ZjLT5idWRnZXQgPiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICt2Y3B1X2dpdmVfYnVkZ2V0X2JhY2soc3RydWN0IGNzY2hl ZDJfdmNwdSAqc3ZjLCBzdHJ1Y3QgbGlzdF9oZWFkICpwYXJrZWQpCj4gK3sKPiArICAgIHN0cnVj dCBjc2NoZWQyX2RvbSAqc2RvbSA9IHN2Yy0+c2RvbTsKPiArICAgIHVuc2lnbmVkIGludCBjcHUg PSBzdmMtPnZjcHUtPnByb2Nlc3NvcjsKPiArCj4gKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQo cGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2spKTsKPiArICAgIEFTU0VS VChsaXN0X2VtcHR5KHBhcmtlZCkpOwo+ICsKPiArICAgIC8qIGJ1ZGdldF9sb2NrIG5lc3RzIGlu c2lkZSBydW5xdWV1ZSBsb2NrLiAqLwo+ICsgICAgc3Bpbl9sb2NrKCZzZG9tLT5idWRnZXRfbG9j ayk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFRoZSB2Q1BVIGlzIHN0b3BwaW5nIHJ1bm5pbmcg KGUuZy4sIGJlY2F1c2UgaXQncyBibG9ja2luZywgb3IgaXQgaGFzCj4gKyAgICAgKiBiZWVuIHBy ZWVtcHRlZCkuIElmIGl0IGhhc24ndCBjb25zdW1lZCBhbGwgdGhlIGJ1ZGdldCBpdCBnb3Qgd2hl biwKPiArICAgICAqIHN0YXJ0aW5nIHRvIHJ1biwgcHV0IHRoYXQgcmVtYWluaW5nIGFtb3VudCBi YWNrIGluIHRoZSBkb21haW4ncyBidWRnZXQKPiArICAgICAqIHBvb2wuCj4gKyAgICAgKi8KPiAr ICAgIHNkb20tPmJ1ZGdldCArPSBzdmMtPmJ1ZGdldDsKPiArICAgIHN2Yy0+YnVkZ2V0ID0gMDsK PiArCj4gKyAgICAvKgo+ICsgICAgICogTWFraW5nIGJ1ZGdldCBhdmFpbGFibGUgYWdhaW4gdG8g dGhlIGRvbWFpbiBtZWFucyB0aGF0IHBhcmtlZCB2Q1BVcwo+ICsgICAgICogbWF5IGJlIHVucGFy a2VkIGFuZCBydW4uIFRoZXkgYXJlLCBpZiBhbnksIGluIHRoZSBkb21haW4ncyBwYXJrZWRfdmNw dXMKPiArICAgICAqIGxpc3QsIHNvIHdlIHdhbnQgdG8gZ28gdGhyb3VnaCB0aGF0IGFuZCB1bnBh cmsgdGhlbSAoc28gdGhleSBjYW4gdHJ5Cj4gKyAgICAgKiB0byBnZXQgc29tZSBidWRnZXQpLgo+ ICsgICAgICoKPiArICAgICAqIFRvdWNoaW5nIHRoZSBsaXN0IHJlcXVpcmVzIHRoZSBidWRnZXRf bG9jaywgd2hpY2ggd2UgaG9sZC4gTGV0J3MKPiArICAgICAqIHRoZXJlZm9yZSBwdXQgZXZlcnlv bmUgaW4gdGhhdCBsaXN0IGluIGFub3RoZXIsIHRlbXBvcmFyeSBsaXN0LCB3aGljaAo+ICsgICAg ICogdGhlbiB0aGUgY2FsbGVyIHdpbGwgdHJhdmVyc2UsIHVucGFya2luZyB0aGUgdkNQVXMgaXQg ZmluZHMgdGhlcmUuCj4gKyAgICAgKgo+ICsgICAgICogSW4gZmFjdCwgd2UgY2FuJ3QgZG8gdGhl IGFjdHVhbCB1bnBhcmtpbmcgaGVyZSwgYmVjYXVzZSB0aGF0IHJlcXVpcmVzCj4gKyAgICAgKiB0 YWtpbmcgdGhlIHJ1bnF1ZXVlIGxvY2sgb2YgdGhlIHZDUFVzIGJlaW5nIHVucGFya2VkLCBhbmQg d2UgY2FuJ3QKPiArICAgICAqIHRha2UgYW55IHJ1bnF1ZXVlIGxvY2tzIHdoaWxlIHdlIGhvbGQg YSBidWRnZXRfbG9jay4KPiArICAgICAqLwo+ICsgICAgaWYgKCBzZG9tLT5idWRnZXQgPiAwICkK PiArICAgICAgICBsaXN0X3NwbGljZV9pbml0KCZzZG9tLT5wYXJrZWRfdmNwdXMsIHBhcmtlZCk7 Cj4gKwo+ICsgICAgc3Bpbl91bmxvY2soJnNkb20tPmJ1ZGdldF9sb2NrKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQKPiArdW5wYXJrX3BhcmtlZF92Y3B1cyhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBsaXN0X2hlYWQgKnZjcHVzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgY3NjaGVk Ml92Y3B1ICpzdmMsICp0bXA7Cj4gKyAgICBzcGlubG9ja190ICpsb2NrOwo+ICsKPiArICAgIGxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdmMsIHRtcCwgdmNwdXMsIHBhcmtlZF9lbGVtKQo+ICsg ICAgewo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAgICAgICAgc190aW1lX3Qg bm93Owo+ICsKPiArICAgICAgICBsb2NrID0gdmNwdV9zY2hlZHVsZV9sb2NrX2lycXNhdmUoc3Zj LT52Y3B1LCAmZmxhZ3MpOwo+ICsKPiArICAgICAgICBfX2NsZWFyX2JpdChfVlBGX3BhcmtlZCwg JnN2Yy0+dmNwdS0+cGF1c2VfZmxhZ3MpOwo+ICsgICAgICAgIGlmICggdW5saWtlbHkoc3ZjLT5m bGFncyAmIENTRkxBR19zY2hlZHVsZWQpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8q Cj4gKyAgICAgICAgICAgICAqIFdlIGVuZCBoZXJlIGlmIGEgYnVkZ2V0IHJlcGxlbmlzaG1lbnQg YXJyaXZlZCBiZXR3ZWVuCj4gKyAgICAgICAgICAgICAqIGNzY2hlZDJfc2NoZWR1bGUoKSAoYW5k LCBpbiBwYXJ0aWN1bGFyLCBhZnRlciBhIGNhbGwgdG8KPiArICAgICAgICAgICAgICogdmNwdV90 cnlfdG9fZ2V0X2J1ZGdldCgpIHRoYXQgcmV0dXJuZWQgZmFsc2UpLCBhbmQKPiArICAgICAgICAg ICAgICogY29udGV4dF9zYXZlZCgpLiBCeSBzZXR0aW5nIF9fQ1NGTEFHX2RlbGF5ZWRfcnVucV9h ZGQsCj4gKyAgICAgICAgICAgICAqIHdlIHRlbGwgY29udGV4dF9zYXZlZCgpIHRvIHB1dCB0aGUg dkNQVSBiYWNrIGluIHRoZQo+ICsgICAgICAgICAgICAgKiBydW5xdWV1ZSwgZnJvbSB3aGVyZSBp dCB3aWxsIGNvbXBldGUgd2l0aCB0aGUgb3RoZXJzCj4gKyAgICAgICAgICAgICAqIGZvciB0aGUg bmV3bHkgcmVwbGVuaXNoZWQgYnVkZ2V0Lgo+ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAg ICAgQVNTRVJUKCBzdmMtPnJxZCAhPSBOVUxMICk7Cj4gKyAgICAgICAgICAgIEFTU0VSVCggYzJy cWQob3BzLCBzdmMtPnZjcHUtPnByb2Nlc3NvcikgPT0gc3ZjLT5ycWQgKTsKPiArICAgICAgICAg ICAgX19zZXRfYml0KF9fQ1NGTEFHX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKTsKPiAr ICAgICAgICB9Cj4gKyAgICAgICAgZWxzZSBpZiAoIHZjcHVfcnVubmFibGUoc3ZjLT52Y3B1KSAp Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBUaGUgdkNQ VSBzaG91bGQgZ28gYmFjayB0byB0aGUgcnVucXVldWUsIGFuZCBjb21wZXRlIGZvcgo+ICsgICAg ICAgICAgICAgKiB0aGUgbmV3bHkgcmVwbGVuaXNoZWQgYnVkZ2V0LCBidXQgb25seSBpZiBpdCBp cyBhY3R1YWxseQo+ICsgICAgICAgICAgICAgKiBydW5uYWJsZSAoYW5kIHdhcyB0aGVyZWZvcmUg b2ZmbGluZSBvbmx5IGJlY2F1c2Ugb2YgdGhlCj4gKyAgICAgICAgICAgICAqIGxhY2sgb2YgYnVk Z2V0KS4KPiArICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgIG5vdyA9IE5PVygpOwo+ICsg ICAgICAgICAgICB1cGRhdGVfbG9hZChvcHMsIHN2Yy0+cnFkLCBzdmMsIDEsIG5vdyk7Cj4gKyAg ICAgICAgICAgIHJ1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKPiArICAgICAgICAgICAgcnVucV90aWNr bGUob3BzLCBzdmMsIG5vdyk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGxpc3RfZGVsX2luaXQo JnN2Yy0+cGFya2VkX2VsZW0pOwo+ICsKPiArICAgICAgICB2Y3B1X3NjaGVkdWxlX3VubG9ja19p cnFyZXN0b3JlKGxvY2ssIGZsYWdzLCBzdmMtPnZjcHUpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCByZXBsX3Nkb21fYnVkZ2V0KHZvaWQqIGRhdGEpCj4gK3sKPiArICAgIHN0cnVj dCBjc2NoZWQyX2RvbSAqc2RvbSA9IGRhdGE7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ ICsgICAgc190aW1lX3Qgbm93Owo+ICsgICAgTElTVF9IRUFEKHBhcmtlZCk7Cj4gKwo+ICsgICAg c3Bpbl9sb2NrX2lycXNhdmUoJnNkb20tPmJ1ZGdldF9sb2NrLCBmbGFncyk7Cj4gKwo+ICsgICAg LyoKPiArICAgICAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGRvbWFpbiBvdmVycnVuLCBhbmQg dGhhdCB0aGUgYnVkZ2V0IGhlbmNlIHdlbnQKPiArICAgICAqIGJlbG93IDAgKHJlYXNvbnMgbWF5 IGJlIHN5c3RlbSBvdmVyYm9va2luZywgaXNzdWVzIGluIG9yIHRvbyBjb2Fyc2UKPiArICAgICAq IHJ1bnRpbWUgYWNjb3VudGluZywgZXRjLikuIEluIHBhcnRpY3VsYXIsIGlmIHdlIG92ZXJydW4g YnkgbW9yZSB0aGFuCj4gKyAgICAgKiB0b3RfYnVkZ2V0LCB0aGVuIGJ1ZGdldCt0b3RfYnVkZ2V0 IHdvdWxkIHN0aWxsIGJlIDwgMCwgd2hpY2ggaW4gdHVybgo+ICsgICAgICogbWVhbnMgdGhhdCwg ZGVzcGl0ZSByZXBsZW5pc2htZW50LCB0aGVyZSdzIHN0aWxsIG5vIGJ1ZGdldCBmb3IgdW5hcmtp bmcKPiArICAgICAqIGFuZCBydW5uaW5nIHZDUFVzLgo+ICsgICAgICoKPiArICAgICAqIEl0IGlz IGFsc28gcG9zc2libGUgdGhhdCB3ZSBhcmUgaGFuZGxpbmcgdGhlIHJlcGxlbmlzaG1lbnQgbXVj aCBsYXRlcgo+ICsgICAgICogdGhhbiBleHBlY3RlZCAocmVhc29ucyBtYXkgYWdhaW4gYmUgb3Zl cmJvb2tpbmcsIG9yIGlzc3VlcyB3aXRoIHRpbWVycykuCj4gKyAgICAgKiBJZiB3ZSBhcmUgbW9y ZSB0aGFuIENTQ0hFRDJfQkRHVF9SRVBMX1BFUklPRCBsYXRlLCB0aGlzIG1lYW5zIHdlIGhhdmUK PiArICAgICAqIGJhc2ljYWxseSBza2lwcGVkIChhdCBsZWFzdCkgb25lIHJlcGxlbmlzaG1lbnQu Cj4gKyAgICAgKgo+ICsgICAgICogV2UgZGVhbCB3aXRoIGJvdGggdGhlIGlzc3VlcyBoZXJlLCBi eSwgYmFzaWNhbGx5LCBkb2luZyBtb3JlIHRoYW4ganVzdAo+ICsgICAgICogb25lIHJlcGxlbmlz aG1lbnQuIE5vdGUsIGhvd2V2ZXIsIHRoYXQgZXZlcnkgdGltZSB3ZSBhZGQgdG90X2J1ZGdldAo+ ICsgICAgICogdG8gdGhlIGJ1ZGdldCwgd2UgYWxzbyBtb3ZlIG5leHRfcmVwbCBhd2F5IGJ5IENT Q0hFRDJfQkRHVF9SRVBMX1BFUklPRC4KPiArICAgICAqIFRoaXMgZ3VhcmFudGVlcyB3ZSBhbHdh eXMgcmVzcGVjdCB0aGUgY2FwLgo+ICsgICAgICovCj4gKyAgICBub3cgPSBOT1coKTsKPiArICAg IGRvCj4gKyAgICB7Cj4gKyAgICAgICAgc2RvbS0+bmV4dF9yZXBsICs9IENTQ0hFRDJfQkRHVF9S RVBMX1BFUklPRDsKPiArICAgICAgICBzZG9tLT5idWRnZXQgKz0gc2RvbS0+dG90X2J1ZGdldDsK PiArICAgIH0KPiArICAgIHdoaWxlICggc2RvbS0+bmV4dF9yZXBsIDw9IG5vdyB8fCBzZG9tLT5i dWRnZXQgPD0gMCApOwo+ICsgICAgLyogV2UgbWF5IGhhdmUgZG9uZSBtb3JlIHJlcGxlbmlzaG1l bnRzOiBtYWtlIHN1cmUgd2UgZGlkbid0IG92ZXJzaG90LiAqLwo+ICsgICAgc2RvbS0+YnVkZ2V0 ID0gbWluKHNkb20tPmJ1ZGdldCwgc2RvbS0+dG90X2J1ZGdldCk7Cj4gKwo+ICsgICAgLyoKPiAr ICAgICAqIEFzIGFib3ZlLCBsZXQncyBwcmVwYXJlIHRoZSB0ZW1wb3JhcnkgbGlzdCwgb3V0IG9m IHRoZSBkb21haW4ncwo+ICsgICAgICogcGFya2VkX3ZjcHVzIGxpc3QsIG5vdyB0aGF0IHdlIGhv bGQgdGhlIGJ1ZGdldF9sb2NrLiBUaGVuLCBkcm9wIHN1Y2gKPiArICAgICAqIGxvY2ssIGFuZCBw YXNzIHRoZSBsaXN0IHRvIHRoZSB1bnBhcmtpbmcgZnVuY3Rpb24uCj4gKyAgICAgKi8KPiArICAg IGxpc3Rfc3BsaWNlX2luaXQoJnNkb20tPnBhcmtlZF92Y3B1cywgJnBhcmtlZCk7Cj4gKwo+ICsg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2RvbS0+YnVkZ2V0X2xvY2ssIGZsYWdzKTsKPiAr Cj4gKyAgICB1bnBhcmtfcGFya2VkX3ZjcHVzKHNkb20tPmRvbS0+Y3B1cG9vbC0+c2NoZWQsICZw YXJrZWQpOwo+ICsKPiArICAgIHNldF90aW1lcigmc2RvbS0+cmVwbF90aW1lciwgc2RvbS0+bmV4 dF9yZXBsKTsKPiArfQo+ICsKPiAgI2lmbmRlZiBOREVCVUcKPiAgc3RhdGljIGlubGluZSB2b2lk Cj4gIGNzY2hlZDJfdmNwdV9jaGVjayhzdHJ1Y3QgdmNwdSAqdmMpCj4gQEAgLTE0OTcsNiArMTg0 MCw5IEBAIGNzY2hlZDJfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz dHJ1Y3QgdmNwdSAqdmMsIHZvaWQgKmRkKQo+ICAgICAgfQo+ICAgICAgc3ZjLT50aWNrbGVkX2Nw dSA9IC0xOwo+Cj4gKyAgICBzdmMtPmJ1ZGdldCA9IFNUSU1FX01BWDsKPiArICAgIElOSVRfTElT VF9IRUFEKCZzdmMtPnBhcmtlZF9lbGVtKTsKPiArCj4gICAgICBTQ0hFRF9TVEFUX0NSQU5LKHZj cHVfYWxsb2MpOwo+Cj4gICAgICByZXR1cm4gc3ZjOwo+IEBAIC0xNTkzLDYgKzE5MzksNyBAQCBj c2NoZWQyX2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qg dmNwdSAqdmMpCj4gICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICogY29uc3Qgc3ZjID0gY3NjaGVk Ml92Y3B1KHZjKTsKPiAgICAgIHNwaW5sb2NrX3QgKmxvY2sgPSB2Y3B1X3NjaGVkdWxlX2xvY2tf aXJxKHZjKTsKPiAgICAgIHNfdGltZV90IG5vdyA9IE5PVygpOwo+ICsgICAgTElTVF9IRUFEKHdl cmVfcGFya2VkKTsKPgo+ICAgICAgQlVHX09OKCAhaXNfaWRsZV92Y3B1KHZjKSAmJiBzdmMtPnJx ZCAhPSBjMnJxZChvcHMsIHZjLT5wcm9jZXNzb3IpKTsKPiAgICAgIEFTU0VSVChpc19pZGxlX3Zj cHUodmMpIHx8IHN2Yy0+cnFkID09IGMycnFkKG9wcywgdmMtPnByb2Nlc3NvcikpOwo+IEBAIC0x NjAwLDYgKzE5NDcsOSBAQCBjc2NoZWQyX2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCj4gICAgICAvKiBUaGlzIHZjcHUgaXMgbm93IGVs aWdpYmxlIHRvIGJlIHB1dCBvbiB0aGUgcnVucXVldWUgYWdhaW4gKi8KPiAgICAgIF9fY2xlYXJf Yml0KF9fQ1NGTEFHX3NjaGVkdWxlZCwgJnN2Yy0+ZmxhZ3MpOwo+Cj4gKyAgICBpZiAoIHVubGlr ZWx5KGhhc19jYXAoc3ZjKSAmJiBzdmMtPmJ1ZGdldCA+IDApICkKPiArICAgICAgICB2Y3B1X2dp dmVfYnVkZ2V0X2JhY2soc3ZjLCAmd2VyZV9wYXJrZWQpOwo+ICsKPiAgICAgIC8qIElmIHNvbWVv bmUgd2FudHMgaXQgb24gdGhlIHJ1bnF1ZXVlLCBwdXQgaXQgdGhlcmUuICovCj4gICAgICAvKgo+ ICAgICAgICogTkI6IFdlIGNhbiBnZXQgcmlkIG9mIENTRkxBR19zY2hlZHVsZWQgYnkgY2hlY2tp bmcgZm9yCj4gQEAgLTE2MjAsNiArMTk3MCw4IEBAIGNzY2hlZDJfY29udGV4dF9zYXZlZChjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKPiAgICAgICAgICB1cGRh dGVfbG9hZChvcHMsIHN2Yy0+cnFkLCBzdmMsIC0xLCBub3cpOwo+Cj4gICAgICB2Y3B1X3NjaGVk dWxlX3VubG9ja19pcnEobG9jaywgdmMpOwo+ICsKPiArICAgIHVucGFya19wYXJrZWRfdmNwdXMo b3BzLCAmd2VyZV9wYXJrZWQpOwo+ICB9Cj4KPiAgI2RlZmluZSBNQVhfTE9BRCAoU1RJTUVfTUFY KTsKPiBAQCAtMjI0MywxMiArMjU5NSwxOCBAQCBjc2NoZWQyX2FsbG9jX2RvbWRhdGEoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgZG9tYWluICpkb20pCj4gICAgICBpZiAoIHNk b20gPT0gTlVMTCApCj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4KPiAtICAgIC8qIEluaXRpYWxp emUgY3JlZGl0IGFuZCB3ZWlnaHQgKi8KPiArICAgIC8qIEluaXRpYWxpemUgY3JlZGl0LCBjYXAg YW5kIHdlaWdodCAqLwo+ICAgICAgSU5JVF9MSVNUX0hFQUQoJnNkb20tPnNkb21fZWxlbSk7Cj4g ICAgICBzZG9tLT5kb20gPSBkb207Cj4gICAgICBzZG9tLT53ZWlnaHQgPSBDU0NIRUQyX0RFRkFV TFRfV0VJR0hUOwo+ICsgICAgc2RvbS0+Y2FwID0gMFU7Cj4gICAgICBzZG9tLT5ucl92Y3B1cyA9 IDA7Cj4KPiArICAgIGluaXRfdGltZXIoJnNkb20tPnJlcGxfdGltZXIsIHJlcGxfc2RvbV9idWRn ZXQsICh2b2lkKikgc2RvbSwKPiArICAgICAgICAgICAgICAgY3B1bWFza19hbnkoY3B1cG9vbF9k b21haW5fY3B1bWFzayhkb20pKSk7Cj4gKyAgICBzcGluX2xvY2tfaW5pdCgmc2RvbS0+YnVkZ2V0 X2xvY2spOwo+ICsgICAgSU5JVF9MSVNUX0hFQUQoJnNkb20tPnBhcmtlZF92Y3B1cyk7Cj4gKwo+ ICAgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPgo+ICAgICAgbGlz dF9hZGRfdGFpbCgmc2RvbS0+c2RvbV9lbGVtLCAmY3NjaGVkMl9wcml2KG9wcyktPnNkb20pOwo+ IEBAIC0yMjg0LDYgKzI2NDIsNyBAQCBjc2NoZWQyX2ZyZWVfZG9tZGF0YShjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHZvaWQgKmRhdGEpCj4KPiAgICAgIHdyaXRlX2xvY2tfaXJxc2F2ZSgm cHJ2LT5sb2NrLCBmbGFncyk7Cj4KPiArICAgIGtpbGxfdGltZXIoJnNkb20tPnJlcGxfdGltZXIp Owo+ICAgICAgbGlzdF9kZWxfaW5pdCgmc2RvbS0+c2RvbV9lbGVtKTsKPgo+ICAgICAgd3JpdGVf dW5sb2NrX2lycXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwo+IEBAIC0yMzc4LDExICsyNzM3 LDEyIEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBj cHUsCj4gICAgICAgICAgcmV0dXJuIC0xOwo+Cj4gICAgICAvKiBHZW5lcmFsIGFsZ29yaXRobToK PiAtICAgICAqIDEpIFJ1biB1bnRpbCBzbmV4dCdzIGNyZWRpdCB3aWxsIGJlIDAKPiArICAgICAq IDEpIFJ1biB1bnRpbCBzbmV4dCdzIGNyZWRpdCB3aWxsIGJlIDAuCj4gICAgICAgKiAyKSBCdXQg aWYgc29tZW9uZSBpcyB3YWl0aW5nLCBydW4gdW50aWwgc25leHQncyBjcmVkaXQgaXMgZXF1YWwK PiAtICAgICAqIHRvIGhpcwo+IC0gICAgICogMykgQnV0IG5ldmVyIHJ1biBsb25nZXIgdGhhbiBN QVhfVElNRVIgb3Igc2hvcnRlciB0aGFuIE1JTl9USU1FUiBvcgo+IC0gICAgICogdGhlIHJhdGVs aW1pdCB0aW1lLgo+ICsgICAgICogICAgdG8gaGlzLgo+ICsgICAgICogMykgQnV0LCBpZiB3ZSBh cmUgY2FwcGVkLCBuZXZlciBydW4gbW9yZSB0aGFuIG91ciBidWRnZXQuCj4gKyAgICAgKiA0KSBC dXQgbmV2ZXIgcnVuIGxvbmdlciB0aGFuIE1BWF9USU1FUiBvciBzaG9ydGVyIHRoYW4gTUlOX1RJ TUVSIG9yCj4gKyAgICAgKiAgICB0aGUgcmF0ZWxpbWl0IHRpbWUuCj4gICAgICAgKi8KPgo+ICAg ICAgLyogQ2FsY3VsYXRlIG1pbnRpbWUgKi8KPiBAQCAtMjM5NywxMSArMjc1NywxMyBAQCBjc2No ZWQyX3J1bnRpbWUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LAo+ICAgICAg ICAgICAgICBtaW5fdGltZSA9IHJhdGVsaW1pdF9taW47Cj4gICAgICB9Cj4KPiAtICAgIC8qIDEp IEJhc2ljIHRpbWU6IFJ1biB1bnRpbCBjcmVkaXQgaXMgMC4gKi8KPiArICAgIC8qIDEpIFJ1biB1 bnRpbCBzbmV4dCdzIGNyZWRpdCB3aWxsIGJlIDAuICovCj4gICAgICBydF9jcmVkaXQgPSBzbmV4 dC0+Y3JlZGl0Owo+Cj4gLSAgICAvKiAyKSBJZiB0aGVyZSdzIHNvbWVvbmUgd2FpdGluZyB3aG9z ZSBjcmVkaXQgaXMgcG9zaXRpdmUsCj4gLSAgICAgKiBydW4gdW50aWwgeW91ciBjcmVkaXQgfj0g aGlzICovCj4gKyAgICAvKgo+ICsgICAgICogMikgSWYgdGhlcmUncyBzb21lb25lIHdhaXRpbmcg d2hvc2UgY3JlZGl0IGlzIHBvc2l0aXZlLAo+ICsgICAgICogICAgcnVuIHVudGlsIHlvdXIgY3Jl ZGl0IH49IGhpcy4KPiArICAgICAqLwo+ICAgICAgaWYgKCAhIGxpc3RfZW1wdHkocnVucSkgKQo+ ICAgICAgewo+ICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN3YWl0ID0gcnVucV9lbGVt KHJ1bnEtPm5leHQpOwo+IEBAIC0yNDIzLDE0ICsyNzg1LDIyIEBAIGNzY2hlZDJfcnVudGltZShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsCj4gICAgICAgKiBjcmVkaXQgdmFs dWVzIG9mIE1JTixNQVggcGVyIHZjcHUsIHNpbmNlIGVhY2ggdmNwdSBidXJucyBjcmVkaXQKPiAg ICAgICAqIGF0IGEgZGlmZmVyZW50IHJhdGUuCj4gICAgICAgKi8KPiAtICAgIGlmIChydF9jcmVk aXQgPiAwKQo+ICsgICAgaWYgKCBydF9jcmVkaXQgPiAwICkKPiAgICAgICAgICB0aW1lID0gYzJ0 KHJxZCwgcnRfY3JlZGl0LCBzbmV4dCk7Cj4gICAgICBlbHNlCj4gICAgICAgICAgdGltZSA9IDA7 Cj4KPiAtICAgIC8qIDMpIEJ1dCBuZXZlciBydW4gbG9uZ2VyIHRoYW4gTUFYX1RJTUVSIG9yIGxl c3MgdGhhbiBNSU5fVElNRVIgb3IKPiAtICAgICAqIHRoZSByYXRlX2xpbWl0IHRpbWUuICovCj4g LSAgICBpZiAoIHRpbWUgPCBtaW5fdGltZSkKPiArICAgIC8qCj4gKyAgICAgKiAzKSBCdXQsIGlm IGNhcHBlZCwgbmV2ZXIgcnVuIG1vcmUgdGhhbiBvdXIgYnVkZ2V0Lgo+ICsgICAgICovCj4gKyAg ICBpZiAoIHVubGlrZWx5KGhhc19jYXAoc25leHQpKSApCj4gKyAgICAgICAgdGltZSA9IHNuZXh0 LT5idWRnZXQgPCB0aW1lID8gc25leHQtPmJ1ZGdldCA6IHRpbWU7Cj4gKwpkb2VzIHRoZSBidWRn ZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHJhdGUgYW5kIGNyZWRpdCA/CnBsZWFzZSByZXBsYWNl IHNuZXh0LT5idWRnZXQgd2l0aCBzb21ldGhpbmcgd2hpY2ggaXMgbGVzcyBjb25mdXNpbmcgZWcg CnNuZXh0LT5idWRnZXRfYWxsb2NhdGVkLi4KPiArICAgIC8qCj4gKyAgICAgKiA0KSBCdXQgbmV2 ZXIgcnVuIGxvbmdlciB0aGFuIE1BWF9USU1FUiBvciBsZXNzIHRoYW4gTUlOX1RJTUVSIG9yCj4g KyAgICAgKiAgICB0aGUgcmF0ZV9saW1pdCB0aW1lLgo+ICsgICAgICovCj4gKyAgICBpZiAoIHRp bWUgPCBtaW5fdGltZSApCj4gICAgICB7Cj4gICAgICAgICAgdGltZSA9IG1pbl90aW1lOwo+ICAg ICAgICAgIFNDSEVEX1NUQVRfQ1JBTksocnVudGltZV9taW5fdGltZXIpOwo+IEBAIC0yNDQ3LDEz ICsyODE3LDEzIEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IGludCBjcHUsCj4gIC8qCj4gICAqIEZpbmQgYSBjYW5kaWRhdGUuCj4gICAqLwo+IC1zdGF0aWMg c3RydWN0IGNzY2hlZDJfdmNwdSAqCj4gK3N0YXRpYyBub2lubGluZSBzdHJ1Y3QgY3NjaGVkMl92 Y3B1ICoKPiAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFk LAo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzY3VyciwKPiAgICAgICAg ICAgICAgICAgaW50IGNwdSwgc190aW1lX3Qgbm93LAo+ICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKnNraXBwZWQpCj4gIHsKPiAtICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7Cj4gKyAg ICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyLCAqdGVtcDsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3Zj cHUgKnNuZXh0ID0gTlVMTDsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNz Y2hlZDJfcHJpdihwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSk7Cj4gICAgICBib29sIHlpZWxkID0g X190ZXN0X2FuZF9jbGVhcl9iaXQoX19DU0ZMQUdfdmNwdV95aWVsZCwgJnNjdXJyLT5mbGFncyk7 Cj4gQEAgLTI0OTYsNyArMjg2Niw3IEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1 bnF1ZXVlX2RhdGEgKnJxZCwKPiAgICAgIGVsc2UKPiAgICAgICAgICBzbmV4dCA9IGNzY2hlZDJf dmNwdShpZGxlX3ZjcHVbY3B1XSk7Cj4KPiAtICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsICZycWQt PnJ1bnEgKQo+ICsgICAgbGlzdF9mb3JfZWFjaF9zYWZlKCBpdGVyLCB0ZW1wLCAmcnFkLT5ydW5x ICkKPiAgICAgIHsKPiAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICogc3ZjID0gbGlzdF9l bnRyeShpdGVyLCBzdHJ1Y3QgY3NjaGVkMl92Y3B1LCBydW5xX2VsZW0pOwo+Cj4gQEAgLTI1NDQs MTEgKzI5MTQsMTMgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkLAo+ICAgICAgICAgIH0KPgpJbiBydW5xIGNhbmRpZGF0ZSB3ZSBoYXZlIGEgY29kZSBi YXNlCi8qCiAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmNwdSBpZiBpdCBoYXMgZXhlY3V0ZWQgZm9y IGxlc3MgdGhhbiByYXRlbGltaXQuCiAgKiBBZGp1c3RzdG1lbnQgZm9yIHRoZSBzZWxlY3RlZCB2 Y3B1J3MgY3JlZGl0IGFuZCBkZWNpc2lvbgogICogZm9yIGhvdyBsb25nIGl0IHdpbGwgcnVuIHdp bGwgYmUgdGFrZW4gaW4gY3NjaGVkMl9ydW50aW1lLgogICoKICAqIE5vdGUgdGhhdCwgaWYgc2N1 cnIgaXMgeWllbGRpbmcsIHdlIGRvbid0IGxldCByYXRlIGxpbWl0aW5nIGtpY2sgaW4uCiAgKiBJ biBmYWN0LCBpdCBtYXkgYmUgdGhlIGNhc2UgdGhhdCBzY3VyciBpcyBhYm91dCB0byBzcGluLCBh bmQgdGhlcmUncwogICogbm8gcG9pbnQgZm9yY2luZyBpdCB0byBkbyBzbyB1bnRpbCByYXRlIGxp bWl0aW5nIGV4cGlyZXMuCiAgKi8KICBpZiAoICF5aWVsZCAmJiBwcnYtPnJhdGVsaW1pdF91cyAm JiAhaXNfaWRsZV92Y3B1KHNjdXJyLT52Y3B1KSAmJgogICAgICAgdmNwdV9ydW5uYWJsZShzY3Vy ci0+dmNwdSkgJiYKICAgICAgKG5vdyAtIHNjdXJyLT52Y3B1LT5ydW5zdGF0ZS5zdGF0ZV9lbnRy eV90aW1lKSA8CiAgICAgICAgTUlDUk9TRUNTKHBydi0+cmF0ZWxpbWl0X3VzKSApCkluIHRoaXMg Y29kZWJsb2NrIHdlIHJldHVybiBzY3Vyci4gSGVyZSB0aGVyZSBpcyBubyBjaGVjayBmb3IgdmNw dS0+YnVkZ2V0LgpFdmVuIGlmIHRoZSBzY3VyciB2Y3B1IGhhcyBleGVjdXRlZCBmb3IgbGVzcyB0 aGFuIHJhdGUgbGltaXQgYW5kIHNjdXJyIAppcyBub3QgeWllbGRpbmcsIHdlIG5lZWQgdG8gY2hl Y2sgZm9yIGl0cyBidWRnZXQgYmVmb3JlIHJldHVybmluZyBzY3Vyci4KCgo+ICAgICAgICAgIC8q Cj4gLSAgICAgICAgICogSWYgdGhlIG5leHQgb25lIG9uIHRoZSBsaXN0IGhhcyBtb3JlIGNyZWRp dCB0aGFuIGN1cnJlbnQKPiAtICAgICAgICAgKiAob3IgaWRsZSwgaWYgY3VycmVudCBpcyBub3Qg cnVubmFibGUpLCBvciBpZiBjdXJyZW50IGlzCj4gLSAgICAgICAgICogeWllbGRpbmcsIGNob29z ZSBpdC4KPiArICAgICAgICAgKiBJZiB0aGUgb25lIGluIHRoZSBydW5xdWV1ZSBoYXMgbW9yZSBj cmVkaXQgdGhhbiBjdXJyZW50IChvciBpZGxlLAo+ICsgICAgICAgICAqIGlmIGN1cnJlbnQgaXMg bm90IHJ1bm5hYmxlKSwgb3IgaWYgY3VycmVudCBpcyB5aWVsZGluZywgYW5kIGFsc28KPiArICAg ICAgICAgKiBpZiB0aGUgb25lIGluIHJ1bnF1ZXVlIGVpdGhlciBpcyBub3QgY2FwcGVkLCBvciBp cyBjYXBwZWQgYnV0IGhhcwo+ICsgICAgICAgICAqIHNvbWUgYnVkZ2V0LCB0aGVuIGNob29zZSBp dC4KPiAgICAgICAgICAgKi8KPiAtICAgICAgICBpZiAoIHlpZWxkIHx8IHN2Yy0+Y3JlZGl0ID4g c25leHQtPmNyZWRpdCApCj4gKyAgICAgICAgaWYgKCAoeWllbGQgfHwgc3ZjLT5jcmVkaXQgPiBz bmV4dC0+Y3JlZGl0KSAmJgo+ICsgICAgICAgICAgICAgKCFoYXNfY2FwKHN2YykgfHwgdmNwdV90 cnlfdG9fZ2V0X2J1ZGdldChzdmMpKSApCj4gICAgICAgICAgICAgIHNuZXh0ID0gc3ZjOwo+Cj4g ICAgICAgICAgLyogSW4gYW55IGNhc2UsIGlmIHdlIGdvdCB0aGlzIGZhciwgYnJlYWsuICovCj4g QEAgLTI1NzUsNiArMjk0NywxMyBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3NjaGVkMl9ydW5x dWV1ZV9kYXRhICpycWQsCj4gICAgICBpZiAoIHVubGlrZWx5KHNuZXh0LT50aWNrbGVkX2NwdSAh PSAtMSAmJiBzbmV4dC0+dGlja2xlZF9jcHUgIT0gY3B1KSApCj4gICAgICAgICAgU0NIRURfU1RB VF9DUkFOSyh0aWNrbGVkX2NwdV9vdmVycmlkZGVuKTsKPgo+ICsgICAgLyoKPiArICAgICAqIElm IHNuZXh0IGlzIGZyb20gYSBjYXBwZWQgZG9tYWluLCBpdCBtdXN0IGhhdmUgYnVkZ2V0IChvciBp dAo+ICsgICAgICogd291bGRuJ3QgaGF2ZSBiZWVuIGluIHRoZSBydW5xKS4gSWYgaXQgaXMgbm90 LCBpdCdkIGJlIFNUSU1FX01BWCwKPiArICAgICAqIHdoaWNoIHN0aWxsIGlzID49IDAuCj4gKyAg ICAgKi8KPiArICAgIEFTU0VSVChzbmV4dC0+YnVkZ2V0ID49IDApOwo+ICsKPiAgICAgIHJldHVy biBzbmV4dDsKPiAgfQo+Cj4gQEAgLTI2MzIsMTAgKzMwMTEsMTggQEAgY3NjaGVkMl9zY2hlZHVs ZSgKPiAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSZkKTsKPiAgICAgIH0K Pgo+IC0gICAgLyogVXBkYXRlIGNyZWRpdHMgKi8KPiArICAgIC8qIFVwZGF0ZSBjcmVkaXRzIChh bmQgYnVkZ2V0LCBpZiBuZWNlc3NhcnkpLiAqLwo+ICAgICAgYnVybl9jcmVkaXRzKHJxZCwgc2N1 cnIsIG5vdyk7Cj4KPiAgICAgIC8qCj4gKyAgICAgKiAgQmVsb3cgMCwgbWVhbnMgdGhhdCB3ZSBh cmUgY2FwcGVkIGFuZCB3ZSBoYXZlIG92ZXJydW4gb3VyICBidWRnZXQuCj4gKyAgICAgKiAgTGV0 J3MgdHJ5IHRvIGdldCBzb21lIG1vcmUgYnV0LCBpZiB3ZSBmYWlsIChlLmcuLCBiZWNhdXNlIG9m IHRoZQo+ICsgICAgICogIG90aGVyIHJ1bm5pbmcgdmNwdXMpLCB3ZSB3aWxsIGJlIHBhcmtlZC4K PiArICAgICAqLwo+ICsgICAgaWYgKCB1bmxpa2VseShzY3Vyci0+YnVkZ2V0IDw9IDApICkKPiAr ICAgICAgICB2Y3B1X3RyeV90b19nZXRfYnVkZ2V0KHNjdXJyKTsKPiArCj4gKyAgICAvKgo+ICAg ICAgICogU2VsZWN0IG5leHQgcnVubmFibGUgbG9jYWwgVkNQVSAoaWUgdG9wIG9mIGxvY2FsIHJ1 bnEpLgo+ICAgICAgICoKPiAgICAgICAqIElmIHRoZSBjdXJyZW50IHZjcHUgaXMgcnVubmFibGUs IGFuZCBoYXMgaGlnaGVyIGNyZWRpdCB0aGFuCj4gQEAgLTI3NjksNiArMzE1Niw5IEBAIGNzY2hl ZDJfZHVtcF92Y3B1KHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgc3RydWN0IGNzY2hlZDJf dmNwdSAqc3ZjKQo+Cj4gICAgICBwcmludGsoIiBjcmVkaXQ9JSIgUFJJaTMyIiBbdz0ldV0iLCBz dmMtPmNyZWRpdCwgc3ZjLT53ZWlnaHQpOwo+Cj4gKyAgICBpZiAoIGhhc19jYXAoc3ZjKSApCj4g KyAgICAgICAgcHJpbnRrKCIgYnVkZ2V0PSUiUFJJX3N0aW1lLCBzdmMtPmJ1ZGdldCk7Cj4gKwo+ ICAgICAgcHJpbnRrKCIgbG9hZD0lIlBSSV9zdGltZSIgKH4lIlBSSV9zdGltZSIlJSkiLCBzdmMt PmF2Z2xvYWQsCj4gICAgICAgICAgICAgKHN2Yy0+YXZnbG9hZCAqIDEwMCkgPj4gcHJ2LT5sb2Fk X3ByZWNpc2lvbl9zaGlmdCk7Cj4KPiBAQCAtMjg1Niw5ICszMjQ2LDEwIEBAIGNzY2hlZDJfZHVt cChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCj4KPiAgICAgICAgICBzZG9tID0gbGlzdF9l bnRyeShpdGVyX3Nkb20sIHN0cnVjdCBjc2NoZWQyX2RvbSwgc2RvbV9lbGVtKTsKPgo+IC0gICAg ICAgIHByaW50aygiXHREb21haW46ICVkIHcgJWQgdiAlZFxuIiwKPiArICAgICAgICBwcmludGso Ilx0RG9tYWluOiAlZCB3ICVkIGMgJXUgdiAlZFxuIiwKPiAgICAgICAgICAgICAgICAgc2RvbS0+ ZG9tLT5kb21haW5faWQsCj4gICAgICAgICAgICAgICAgIHNkb20tPndlaWdodCwKPiArICAgICAg ICAgICAgICAgc2RvbS0+Y2FwLAo+ICAgICAgICAgICAgICAgICBzZG9tLT5ucl92Y3B1cyk7Cj4K PiAgICAgICAgICBmb3JfZWFjaF92Y3B1KCBzZG9tLT5kb20sIHYgKQo+IEBAIC0zMDc2LDEyICsz NDY3LDE0IEBAIGNzY2hlZDJfaW5pdChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCj4gICAgICAgICAg ICAgWEVOTE9HX0lORk8gIiBsb2FkX3dpbmRvd19zaGlmdDogJWRcbiIKPiAgICAgICAgICAgICBY RU5MT0dfSU5GTyAiIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogJWRcbiIKPiAgICAgICAg ICAgICBYRU5MT0dfSU5GTyAiIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAlZFxuIgo+IC0g ICAgICAgICAgIFhFTkxPR19JTkZPICIgcnVucXVldWVzIGFycmFuZ2VtZW50OiAlc1xuIiwKPiAr ICAgICAgICAgICBYRU5MT0dfSU5GTyAiIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogJXNcbiIKPiAr ICAgICAgICAgICBYRU5MT0dfSU5GTyAiIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogJWRt c1xuIiwKPiAgICAgICAgICAgICBvcHRfbG9hZF9wcmVjaXNpb25fc2hpZnQsCj4gICAgICAgICAg ICAgb3B0X2xvYWRfd2luZG93X3NoaWZ0LAo+ICAgICAgICAgICAgIG9wdF91bmRlcmxvYWRfYmFs YW5jZV90b2xlcmFuY2UsCj4gICAgICAgICAgICAgb3B0X292ZXJsb2FkX2JhbGFuY2VfdG9sZXJh bmNlLAo+IC0gICAgICAgICAgIG9wdF9ydW5xdWV1ZV9zdHJbb3B0X3J1bnF1ZXVlXSk7Cj4gKyAg ICAgICAgICAgb3B0X3J1bnF1ZXVlX3N0cltvcHRfcnVucXVldWVdLAo+ICsgICAgICAgICAgIG9w dF9jYXBfcGVyaW9kKTsKPgo+ICAgICAgaWYgKCBvcHRfbG9hZF9wcmVjaXNpb25fc2hpZnQgPCBM T0FEQVZHX1BSRUNJU0lPTl9TSElGVF9NSU4gKQo+ICAgICAgewo+IEBAIC0zMDk5LDYgKzM0OTIs MTMgQEAgY3NjaGVkMl9pbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKPiAgICAgIHByaW50ayhY RU5MT0dfSU5GTyAibG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoICVsbHUgbnNcbiIsCj4gICAg ICAgICAgICAgMVVMTCA8PCBvcHRfbG9hZF93aW5kb3dfc2hpZnQpOwo+Cj4gKyAgICBpZiAoIENT Q0hFRDJfQkRHVF9SRVBMX1BFUklPRCA8IENTQ0hFRDJfTUlOX1RJTUVSICkKPiArICAgIHsKPiAr ICAgICAgICBwcmludGsoIldBUk5JTkc6ICVzOiBvcHRfY2FwX3BlcmlvZCAlZCB0b28gc21hbGws IHJlc2V0dGluZ1xuIiwKPiArICAgICAgICAgICAgICAgX19mdW5jX18sIG9wdF9jYXBfcGVyaW9k KTsKPiArICAgICAgICBvcHRfY2FwX3BlcmlvZCA9IDEwOyAvKiBtcyAqLwo+ICsgICAgfQo+ICsK PiAgICAgIC8qIEJhc2ljYWxseSBubyBDUFUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0IHRo aXMgcG9pbnQ7IGp1c3QKPiAgICAgICAqIHNldCB1cCBiYXNpYyBzdHJ1Y3R1cmVzLCBhbmQgYSBj YWxsYmFjayB3aGVuIHRoZSBDUFUgaW5mbyBpcwo+ICAgICAgICogYXZhaWxhYmxlLiAqLwo+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hl ZC5oCj4gaW5kZXggMTEyN2NhOS4uMmM3ZjljYyAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94 ZW4vc2NoZWQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCj4gQEAgLTc4Nyw2ICs3 ODcsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkb21haW4gKm5leHRfZG9tYWluX2luX2NwdXBv b2woCj4gICAvKiBWQ1BVIGlzIGJlaW5nIHJlc2V0LiAqLwo+ICAjZGVmaW5lIF9WUEZfaW5fcmVz ZXQgICAgICAgIDcKPiAgI2RlZmluZSBWUEZfaW5fcmVzZXQgICAgICAgICAoMVVMPDxfVlBGX2lu X3Jlc2V0KQo+ICsvKiBWQ1BVIGlzIHBhcmtlZC4gKi8KPiArI2RlZmluZSBfVlBGX3BhcmtlZCAg ICAgICAgICA4Cj4gKyNkZWZpbmUgVlBGX3BhcmtlZCAgICAgICAgICAgKDFVTDw8X1ZQRl9wYXJr ZWQpCj4KPiAgc3RhdGljIGlubGluZSBpbnQgdmNwdV9ydW5uYWJsZShzdHJ1Y3QgdmNwdSAqdikK PiAgewo+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==