From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v14 06/11] x86/hvm/ioreq: add a new mappable resource type... Date: Thu, 14 Dec 2017 09:52:38 +0000 Message-ID: References: <20171128150853.1927-1-paul.durrant@citrix.com> <20171128150853.1927-7-paul.durrant@citrix.com> <0ba2e22fae3b424cb63a3743b0a59c63@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ePQC4-0007av-11 for xen-devel@lists.xenproject.org; Thu, 14 Dec 2017 09:52:44 +0000 In-Reply-To: <0ba2e22fae3b424cb63a3743b0a59c63@AMSPEX02CL03.citrite.net> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" , "Jan Beulich (JBeulich@suse.com)" Cc: Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Julien Grall , Ian Jackson List-Id: xen-devel@lists.xenproject.org QWN0dWFsbHkgYWRkaW5nIEphbiB0byB0aGUgVG86IGxpbmUgdGhpcyB0aW1lLi4uCgo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogUGF1bCBEdXJyYW50Cj4gU2VudDogMTQgRGVj ZW1iZXIgMjAxNyAwOTo1Mgo+IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXgu Y29tPjsgeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gQ2M6IEdlb3JnZSBEdW5sYXAg PEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47IFdlaSBMaXUKPiA8d2VpLmxpdTJAY2l0cml4LmNv bT47IEFuZHJldyBDb29wZXIgPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBJYW4KPiBKYWNr c29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgS29ucmFkIFJ6ZXN6dXRlayBXaWxrCj4gPGtv bnJhZC53aWxrQG9yYWNsZS5jb20+OyBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtl cm5lbC5vcmc+OyBUaW0KPiAoWGVuLm9yZykgPHRpbUB4ZW4ub3JnPjsgSnVsaWVuIEdyYWxsIDxq dWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxNCAwNi8xMV0geDg2 L2h2bS9pb3JlcTogYWRkIGEgbmV3IG1hcHBhYmxlCj4gcmVzb3VyY2UgdHlwZS4uLgo+IAo+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IFBhdWwgRHVycmFudCBbbWFpbHRv OnBhdWwuZHVycmFudEBjaXRyaXguY29tXQo+ID4gU2VudDogMjggTm92ZW1iZXIgMjAxNyAxNTow OQo+ID4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+ID4gQ2M6IFBhdWwgRHVy cmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+OyBHZW9yZ2UgRHVubGFwCj4gPiA8R2Vvcmdl LkR1bmxhcEBjaXRyaXguY29tPjsgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT47IEFuZHJl dwo+ID4gQ29vcGVyIDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgSWFuIEphY2tzb24KPiA+ IDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgS29ucmFkIFJ6ZXN6dXRlayBXaWxrCj4gPiA8a29u cmFkLndpbGtAb3JhY2xlLmNvbT47IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz47Cj4gVGltCj4gPiAoWGVuLm9yZykgPHRpbUB4ZW4ub3JnPjsgSnVsaWVuIEdyYWxs IDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiA+IFN1YmplY3Q6IFtQQVRDSCB2MTQgMDYvMTFdIHg4 Ni9odm0vaW9yZXE6IGFkZCBhIG5ldyBtYXBwYWJsZSByZXNvdXJjZQo+ID4gdHlwZS4uLgo+ID4K PiA+IC4uLiBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyCj4gPgo+ID4gVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIGEgbmV3IHJlc291cmNlIHR5cGUgdGhhdCBjYW4gYmUgbWFwcGVkIHVz aW5nCj4gPiB0aGUgWEVOTUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5IG9wLgo+ID4KPiA+IElm IGFuIGVtdWxhdG9yIG1ha2VzIHVzZSBvZiB0aGlzIHJlc291cmNlIHR5cGUgdGhlbiwgaW5zdGVh ZCBvZiBtYXBwaW5nCj4gPiBnZm5zLCB0aGUgSU9SRVEgc2VydmVyIHdpbGwgYWxsb2NhdGUgcGFn ZXMgZnJvbSB0aGUgaGVhcC4gVGhlc2UgcGFnZXMKPiA+IHdpbGwgbmV2ZXIgYmUgcHJlc2VudCBp biB0aGUgUDJNIG9mIHRoZSBndWVzdCBhdCBhbnkgcG9pbnQgYW5kIHNvIGFyZQo+ID4gbm90IHZ1 bG5lcmFibGUgdG8gYW55IGRpcmVjdCBhdHRhY2sgYnkgdGhlIGd1ZXN0LiBUaGV5IGFyZSBvbmx5 IGV2ZXIKPiA+IGFjY2Vzc2libGUgYnkgWGVuIGFuZCBhbnkgZG9tYWluIHRoYXQgaGFzIG1hcHBp bmcgcHJpdmlsZWdlIG92ZXIgdGhlCj4gPiBndWVzdCAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUg bGltaXRlZCB0byB0aGUgZG9tYWluIHJ1bm5pbmcgdGhlCj4gPiBlbXVsYXRvcikuCj4gPgo+ID4g Tk9URTogVXNlIG9mIHRoZSBuZXcgcmVzb3VyY2UgdHlwZSBpcyBub3QgY29tcGF0aWJsZSB3aXRo IHVzZSBvZgo+ID4gICAgICAgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHVubGVzcyB0 aGUgWEVOX0RNT1Bfbm9fZ2Zucwo+IGZsYWcKPiA+IGlzCj4gPiAgICAgICBzZXQuCj4gPgo+ID4g U2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KPiA+ IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gPiAtLS0KPiA+ IENjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+Cj4gPiBDYzog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiA+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRy ZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ID4gQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBl dS5jaXRyaXguY29tPgo+ID4gQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtA b3JhY2xlLmNvbT4KPiA+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+Cj4gPiBDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gPiBDYzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiA+Cj4gPiB2MTQ6Cj4gPiAgLSBBZGRyZXNzZWQg bW9yZSBjb21tZW50cyBmcm9tIEphbi4KPiA+Cj4gPiB2MTM6Cj4gPiAgLSBJbnRyb2R1Y2UgYW4g YXJjaF9hY3F1aXJlX3Jlc291cmNlKCkgYXMgc3VnZ2VzdGVkIGJ5IEp1bGllbiAoYW5kIGhhdmUK PiA+ICAgIHRoZSBBUk0gdmFyaWVudCBzaW1wbHkgcmV0dXJuIC1FT1BOT1RTVVBQKS4KPiA+ICAt IENoZWNrIGZvciBpb3JlcSBzZXJ2ZXIgaWQgdHJ1bmNhdGlvbiBhcyByZXF1ZXN0ZWQgYnkgSmFu Lgo+ID4gIC0gTm90IGFkZGVkIEphbidzIFItYiBkdWUgdG8gc3Vic3RhbnRpdmUgY2hhbmdlIGZy b20gdjEyLgo+ID4KPiA+IHYxMjoKPiA+ICAtIEFkZHJlc3NlZCBtb3JlIGNvbW1lbnRzIGZyb20g SmFuLgo+ID4gIC0gRHJvcHBlZCBHZW9yZ2UncyBBLWIgYW5kIFdlaSdzIFItYiBiZWNhdXNlIG9m IG1hdGVyaWFsIGNoYW5nZS4KPiA+Cj4gPiB2MTE6Cj4gPiAgLSBBZGRyZXNzZWQgbW9yZSBjb21t ZW50cyBmcm9tIEphbi4KPiA+Cj4gPiB2MTA6Cj4gPiAgLSBBZGRyZXNzZWQgY29tbWVudHMgZnJv bSBKYW4uCj4gPgo+ID4gdjg6Cj4gPiAgLSBSZS1iYXNlIG9uIG5ldyBib2lsZXJwbGF0ZS4KPiA+ ICAtIEFkanVzdCBmdW5jdGlvbiBzaWduYXR1cmUgb2YgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJh bWUoKSwgYW5kIHRlc3QKPiA+ICAgIHdoZXRoZXIgdGhlIGJ1ZmlvcmVxIHBhZ2UgaXMgcHJlc2Vu dC4KPiA+Cj4gPiB2NToKPiA+ICAtIFVzZSBnZXRfaW9yZXFfc2VydmVyKCkgZnVuY3Rpb24gcmF0 aGVyIHRoYW4gaW5kZXhpbmcgYXJyYXkgZGlyZWN0bHkuCj4gPiAgLSBBZGQgbW9yZSBleHBsYW5h dGlvbiBpbnRvIGNvbW1lbnRzIHRvIHN0YXRlIHRoYW4gbWFwcGluZyBndWVzdAo+IGZyYW1lcwo+ ID4gICAgYW5kIGFsbG9jYXRpb24gb2YgcGFnZXMgZm9yIGlvcmVxIHNlcnZlcnMgYXJlIG5vdCBz aW11bHRhbmVvdXNseQo+ID4gICAgcGVybWl0dGVkLgo+ID4gIC0gQWRkIGEgY29tbWVudCBpbnRv IGFzbS9pb3JlcS5oIHN0YXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIGluZGV4Cj4gPiAgICB2YWx1 ZSBwYXNzZWQgdG8gaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKS4KPiA+IC0tLQo+ID4gIHhl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgfCAxNTYKPiA+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiA+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAg ICAgIHwgIDQxICsrKysrKysrKysrCj4gPiAgeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAgICAg ICB8ICAgMyArLQo+ID4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCAgICAgICAgfCAgIDcgKysK PiA+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oIHwgICAyICsKPiA+ICB4ZW4vaW5j bHVkZS9hc20teDg2L21tLmggICAgICAgIHwgICA1ICsrCj4gPiAgeGVuL2luY2x1ZGUvcHVibGlj L2h2bS9kbV9vcC5oICB8ICAgNCArKwo+ID4gIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAg ICAgfCAgIDkgKysrCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+ID4KPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMg Yi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiA+IGluZGV4IDM5ZGU2NTlkZGYuLmQ5OTFhYzlj ZGMgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiA+ICsrKyBiL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+ID4gQEAgLTI1OSw2ICsyNTksMTkgQEAgc3RhdGljIGlu dCBodm1fbWFwX2lvcmVxX2dmbihzdHJ1Y3QKPiA+IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGJvb2wg YnVmKQo+ID4gICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVm aW9yZXEgOiAmcy0+aW9yZXE7Cj4gPiAgICAgIGludCByYzsKPiA+Cj4gPiArICAgIGlmICggaW9y cC0+cGFnZSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIC8qCj4gPiArICAgICAgICAgKiBJZiBh IHBhZ2UgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgKHdoaWNoIHdpbGwgaGFwcGVuIG9uCj4g PiArICAgICAgICAgKiBkZW1hbmQgaWYgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKSBpcyBj YWxsZWQpLCB0aGVuCj4gPiArICAgICAgICAgKiBtYXBwaW5nIGEgZ3Vlc3QgZnJhbWUgaXMgbm90 IHBlcm1pdHRlZC4KPiA+ICsgICAgICAgICAqLwo+ID4gKyAgICAgICAgaWYgKCBnZm5fZXEoaW9y cC0+Z2ZuLCBJTlZBTElEX0dGTikgKQo+ID4gKyAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4g PiArCj4gPiArICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gICAgICBpZiAo IGQtPmlzX2R5aW5nICkKPiA+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4KPiA+IEBAIC0y ODEsNiArMjk0LDcwIEBAIHN0YXRpYyBpbnQgaHZtX21hcF9pb3JlcV9nZm4oc3RydWN0Cj4gPiBo dm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKPiA+ICAgICAgcmV0dXJuIHJjOwo+ID4gIH0K PiA+Cj4gPiArc3RhdGljIGludCBodm1fYWxsb2NfaW9yZXFfbWZuKHN0cnVjdCBodm1faW9yZXFf c2VydmVyICpzLCBib29sIGJ1ZikKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBkb21haW4gKmN1cnJk ID0gY3VycmVudC0+ZG9tYWluOwo+ID4gKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAg PSBidWYgPyAmcy0+YnVmaW9yZXEgOiAmcy0+aW9yZXE7Cj4gPiArCj4gPiArICAgIGlmICggaW9y cC0+cGFnZSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIC8qCj4gPiArICAgICAgICAgKiBJZiBh IGd1ZXN0IGZyYW1lIGhhcyBhbHJlYWR5IGJlZW4gbWFwcGVkICh3aGljaCBtYXkgaGFwcGVuCj4g PiArICAgICAgICAgKiBvbiBkZW1hbmQgaWYgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbygpIGlz IGNhbGxlZCksIHRoZW4KPiA+ICsgICAgICAgICAqIGFsbG9jYXRpbmcgYSBwYWdlIGlzIG5vdCBw ZXJtaXR0ZWQuCj4gPiArICAgICAgICAgKi8KPiA+ICsgICAgICAgIGlmICggIWdmbl9lcShpb3Jw LT5nZm4sIElOVkFMSURfR0ZOKSApCj4gPiArICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ ICsKPiA+ICsgICAgICAgIHJldHVybiAwOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIC8qCj4g PiArICAgICAqIEFsbG9jYXRlZCBJT1JFUSBzZXJ2ZXIgcGFnZXMgYXJlIGFzc2lnbmVkIHRvIHRo ZSBlbXVsYXRpbmcKPiA+ICsgICAgICogZG9tYWluLCBub3QgdGhlIHRhcmdldCBkb21haW4uIFRo aXMgaXMgYmVjYXVzZSB0aGUgZW11bGF0b3IgaXMKPiA+ICsgICAgICogbGlrZWx5IHRvIGJlIGRl c3Ryb3llZCBhZnRlciB0aGUgdGFyZ2V0IGRvbWFpbiBoYXMgYmVlbiB0b3JuCj4gPiArICAgICAq IGRvd24sIGFuZCB3ZSBtdXN0IHVzZSBNRU1GX25vX3JlZmNvdW50IG90aGVyd2lzZSBwYWdlCj4g YWxsb2NhdGlvbgo+ID4gKyAgICAgKiBjb3VsZCBmYWlsIGlmIHRoZSBlbXVsYXRpbmcgZG9tYWlu IGhhcyBhbHJlYWR5IHJlYWNoZWQgaXRzCj4gPiArICAgICAqIG1heGltdW0gYWxsb2NhdGlvbi4K PiA+ICsgICAgICovCj4gPiArICAgIGlvcnAtPnBhZ2UgPSBhbGxvY19kb21oZWFwX3BhZ2UoY3Vy cmQsIE1FTUZfbm9fcmVmY291bnQpOwo+IAo+IFRoaXMgaXMgbm8gbG9uZ2VyIGdvaW5nIHRvIHdv cmsgYXMgaXQgaXMgcHJlZGljYXRlZCBvbiBteSBvcmlnaW5hbCBtb2RpZmljYXRpb24KPiB0byBI WVBFUlZJU09SX21tdV91cGRhdGUgKHdoaWNoIGFsbG93ZWQgYSBQViBkb21haW4gdG8gbWFwIGEg Zm9yZWlnbgo+IE1GTiBmcm9tIGEgZG9tYWluIG92ZXIgd2hpY2ggaXQgaGFkIHByaXZpbGVnZSBh cyBpZiB0aGUgTUZOIHdhcyBsb2NhbCkuCj4gQmVjYXVzZSB0aGF0IG1lY2hhbmlzbSB3YXMgZGVj aWRlZCBhZ2FpbnN0LCB0aGlzIGNvZGUgbmVlZHMgdG8gY2hhbmdlIHRvCj4gdXNlIHRoZSB0YXJn ZXQgZG9tYWluIG9mIHRoZSBpb3JlcSBzZXJ2ZXIgcmF0aGVyIHRoYW4gdGhlIGNhbGxpbmcgZG9t YWluLiBJCj4gd2lsbCB2ZXJmeSB0aGlzIG1vZGlmaWNhdGlvbiBhbmQgc3VibWl0IHYxNSBvZiB0 aGUgc2VyaWVzLgo+IAo+IEphbiwgYXJlIHlvdSBvayBmb3IgbWUgdG8ga2VlcCB5b3VyIFItYj8K PiAKPiAgIFBhdWwKPiAKPiA+ICsgICAgaWYgKCAhaW9ycC0+cGFnZSApCj4gPiArICAgICAgICBy ZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsgICAgaWYgKCAhZ2V0X3BhZ2VfdHlwZShpb3JwLT5w YWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBBU1NFUlRf VU5SRUFDSEFCTEUoKTsKPiA+ICsgICAgICAgIHB1dF9wYWdlKGlvcnAtPnBhZ2UpOwo+ID4gKyAg ICAgICAgaW9ycC0+cGFnZSA9IE5VTEw7Cj4gPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpb3JwLT52YSA9IF9fbWFwX2RvbWFpbl9wYWdlX2dsb2Jh bChpb3JwLT5wYWdlKTsKPiA+ICsgICAgaWYgKCAhaW9ycC0+dmEgKQo+ID4gKyAgICB7Cj4gPiAr ICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShpb3JwLT5wYWdlKTsKPiA+ICsgICAgICAgIGlvcnAt PnBhZ2UgPSBOVUxMOwo+ID4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiArICAgIH0KPiA+ ICsKPiA+ICsgICAgY2xlYXJfcGFnZShpb3JwLT52YSk7Cj4gPiArICAgIHJldHVybiAwOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBodm1fZnJlZV9pb3JlcV9tZm4oc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnMsIGJvb2wgYnVmKQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGh2bV9pb3Jl cV9wYWdlICppb3JwID0gYnVmID8gJnMtPmJ1ZmlvcmVxIDogJnMtPmlvcmVxOwo+ID4gKwo+ID4g KyAgICBpZiAoICFpb3JwLT5wYWdlICkKPiA+ICsgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsg ICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnZhKTsKPiA+ICsgICAgaW9ycC0+dmEg PSBOVUxMOwo+ID4gKwo+ID4gKyAgICBwdXRfcGFnZV9hbmRfdHlwZShpb3JwLT5wYWdlKTsKPiA+ ICsgICAgaW9ycC0+cGFnZSA9IE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gIGJvb2wgaXNfaW9yZXFf c2VydmVyX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHBhZ2VfaW5mbwo+ICpw YWdlKQo+ID4gIHsKPiA+ICAgICAgY29uc3Qgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4g PiBAQCAtNDg0LDYgKzU2MSwyNyBAQCBzdGF0aWMgdm9pZAo+IGh2bV9pb3JlcV9zZXJ2ZXJfdW5t YXBfcGFnZXMoc3RydWN0Cj4gPiBodm1faW9yZXFfc2VydmVyICpzKQo+ID4gICAgICBodm1fdW5t YXBfaW9yZXFfZ2ZuKHMsIGZhbHNlKTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgaHZtX2lv cmVxX3NlcnZlcl9hbGxvY19wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKPiA+ICt7 Cj4gPiArICAgIGludCByYzsKPiA+ICsKPiA+ICsgICAgcmMgPSBodm1fYWxsb2NfaW9yZXFfbWZu KHMsIGZhbHNlKTsKPiA+ICsKPiA+ICsgICAgaWYgKCAhcmMgJiYgKHMtPmJ1ZmlvcmVxX2hhbmRs aW5nICE9IEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9PRkYpICkKPiA+ICsgICAgICAgIHJjID0gaHZt X2FsbG9jX2lvcmVxX21mbihzLCB0cnVlKTsKPiA+ICsKPiA+ICsgICAgaWYgKCByYyApCj4gPiAr ICAgICAgICBodm1fZnJlZV9pb3JlcV9tZm4ocywgZmFsc2UpOwo+ID4gKwo+ID4gKyAgICByZXR1 cm4gcmM7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJl ZV9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKPiA+ICt7Cj4gPiArICAgIGh2bV9m cmVlX2lvcmVxX21mbihzLCB0cnVlKTsKPiA+ICsgICAgaHZtX2ZyZWVfaW9yZXFfbWZuKHMsIGZh bHNlKTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9mcmVl X3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlcgo+ICpzKQo+ID4gIHsKPiA+ICAgICAg dW5zaWduZWQgaW50IGk7Cj4gPiBAQCAtNjEyLDcgKzcxMCwxOCBAQCBzdGF0aWMgaW50IGh2bV9p b3JlcV9zZXJ2ZXJfaW5pdChzdHJ1Y3QKPiA+IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCj4gPgo+ID4g ICBmYWlsX2FkZDoKPiA+ICAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHMp Owo+ID4gKwo+ID4gKyAgICAvKgo+ID4gKyAgICAgKiBOT1RFOiBJdCBpcyBzYWZlIHRvIGNhbGwg Ym90aCBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKCkgYW5kCj4gPiArICAgICAqICAgICAg IGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9wYWdlcygpIGluIHRoYXQgb3JkZXIuCj4gPiArICAgICAq ICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgZm9ybWVyIHdpbGwgZG8gbm90aGluZyBpZiB0aGUg cGFnZXMKPiA+ICsgICAgICogICAgICAgYXJlIG5vdCBtYXBwZWQsIGxlYXZpbmcgdGhlIHBhZ2Ug dG8gYmUgZnJlZWQgYnkgdGhlIGxhdHRlci4KPiA+ICsgICAgICogICAgICAgSG93ZXZlciBpZiB0 aGUgcGFnZXMgYXJlIG1hcHBlZCB0aGVuIHRoZSBmb3JtZXIgd2lsbCBzZXQKPiA+ICsgICAgICog ICAgICAgdGhlIHBhZ2VfaW5mbyBwb2ludGVyIHRvIE5VTEwsIG1lYW5pbmcgdGhlIGxhdHRlciB3 aWxsIGRvCj4gPiArICAgICAqICAgICAgIG5vdGhpbmcuCj4gPiArICAgICAqLwo+ID4gICAgICBo dm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHMpOwo+ID4gKyAgICBodm1faW9yZXFfc2VydmVy X2ZyZWVfcGFnZXMocyk7Cj4gPgo+ID4gICAgICByZXR1cm4gcmM7Cj4gPiAgfQo+ID4gQEAgLTYy Miw2ICs3MzEsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzdHJ1Y3QK PiA+IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCj4gPiAgICAgIEFTU0VSVCghcy0+ZW5hYmxlZCk7Cj4g PiAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX2FsbF92Y3B1cyhzKTsKPiA+ICAgICAgaHZt X2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKPiA+ICsgICAgaHZtX2lvcmVxX3NlcnZlcl9m cmVlX3BhZ2VzKHMpOwo+ID4gICAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMp Owo+ID4gIH0KPiA+Cj4gPiBAQCAtNzc3LDYgKzg4Nyw1MiBAQCBpbnQgaHZtX2dldF9pb3JlcV9z ZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAo+ID4gaW9zZXJ2aWRfdCBpZCwKPiA+ICAgICAg cmV0dXJuIHJjOwo+ID4gIH0KPiA+Cj4gPiAraW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1l KHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWR4LCBtZm5fdCAqbWZuKQo+ID4gK3sKPiA+ICsg ICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4gPiArICAgIGludCByYzsKPiA+ICsKPiA+ ICsgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZl ci5sb2NrKTsKPiA+ICsKPiA+ICsgICAgaWYgKCBpZCA9PSBERUZBVUxUX0lPU0VSVklEICkKPiA+ ICsgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiA+ICsKPiA+ICsgICAgcyA9IGdldF9pb3Jl cV9zZXJ2ZXIoZCwgaWQpOwo+ID4gKwo+ID4gKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOwo+ ID4gKwo+ID4gKyAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcGFnZXMocyk7Cj4gPiAr ICAgIGlmICggcmMgKQo+ID4gKyAgICAgICAgZ290byBvdXQ7Cj4gPiArCj4gPiArICAgIHN3aXRj aCAoIGlkeCApCj4gPiArICAgIHsKPiA+ICsgICAgY2FzZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFf c2VydmVyX2ZyYW1lX2J1ZmlvcmVxOgo+ID4gKyAgICAgICAgcmMgPSAtRU5PRU5UOwo+ID4gKyAg ICAgICAgaWYgKCAhSEFORExFX0JVRklPUkVRKHMpICkKPiA+ICsgICAgICAgICAgICBnb3RvIG91 dDsKPiA+ICsKPiA+ICsgICAgICAgICptZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHMtPmJ1ZmlvcmVx LnBhZ2UpKTsKPiA+ICsgICAgICAgIHJjID0gMDsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKwo+ ID4gKyAgICBjYXNlIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXJfZnJhbWVfaW9yZXEoMCk6 Cj4gPiArICAgICAgICAqbWZuID0gX21mbihwYWdlX3RvX21mbihzLT5pb3JlcS5wYWdlKSk7Cj4g PiArICAgICAgICByYyA9IDA7Cj4gPiArICAgICAgICBicmVhazsKPiA+ICsKPiA+ICsgICAgZGVm YXVsdDoKPiA+ICsgICAgICAgIHJjID0gLUVJTlZBTDsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4g KyAgICB9Cj4gPiArCj4gPiArIG91dDoKPiA+ICsgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwo+ID4gKwo+ID4gKyAgICByZXR1 cm4gcmM7Cj4gPiArfQo+ID4gKwo+ID4gIGludCBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3Nl cnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGFydCwKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKQo+ID4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKPiA+IGlu ZGV4IDZlYzZlNjhhZmUuLjI2NTZlYjE4MWEgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vYXJjaC94ODYv bW0uYwo+ID4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPiA+IEBAIC0xMjIsNiArMTIyLDcgQEAK PiA+ICAjaW5jbHVkZSA8YXNtL2ZpeG1hcC5oPgo+ID4gICNpbmNsdWRlIDxhc20vaW9fYXBpYy5o Pgo+ID4gICNpbmNsdWRlIDxhc20vcGNpLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS9odm0vaW9yZXEu aD4KPiA+Cj4gPiAgI2luY2x1ZGUgPGFzbS9odm0vZ3JhbnRfdGFibGUuaD4KPiA+ICAjaW5jbHVk ZSA8YXNtL3B2L2dyYW50X3RhYmxlLmg+Cj4gPiBAQCAtNDE3MCw2ICs0MTcxLDQ2IEBAIGludCB4 ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ID4gICAgICByZXR1cm4gcmM7Cj4gPiAgfQo+ID4K PiA+ICtpbnQgYXJjaF9hY3F1aXJlX3Jlc291cmNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGludCB0eXBlLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlk LCB1bnNpZ25lZCBsb25nIGZyYW1lLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG5yX2ZyYW1lcywgeGVuX3Bmbl90IG1mbl9saXN0W10pCj4gPiArewo+ID4gKyAg ICBpbnQgcmM7Cj4gPiArCj4gPiArICAgIHN3aXRjaCAoIHR5cGUgKQo+ID4gKyAgICB7Cj4gPiAr ICAgIGNhc2UgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcjoKPiA+ICsgICAgewo+ID4gKyAg ICAgICAgaW9zZXJ2aWRfdCBpb3NlcnZpZCA9IGlkOwo+ID4gKyAgICAgICAgdW5zaWduZWQgaW50 IGk7Cj4gPiArCj4gPiArICAgICAgICByYyA9IC1FSU5WQUw7Cj4gPiArICAgICAgICBpZiAoIGlk ICE9ICh1bnNpZ25lZCBpbnQpaW9zZXJ2aWQgKQo+ID4gKyAgICAgICAgICAgIGJyZWFrOwo+ID4g Kwo+ID4gKyAgICAgICAgcmMgPSAwOwo+ID4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBucl9m cmFtZXM7IGkrKyApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAgICAgbWZuX3QgbWZuOwo+ ID4gKwo+ID4gKyAgICAgICAgICAgIHJjID0gaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoZCwg aWQsIGZyYW1lICsgaSwgJm1mbik7Cj4gPiArICAgICAgICAgICAgaWYgKCByYyApCj4gPiArICAg ICAgICAgICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIG1mbl9saXN0W2ldID0g bWZuX3gobWZuKTsKPiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4g KyAgICB9Cj4gPiArCj4gPiArICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICByYyA9IC1FT1BOT1RT VVBQOwo+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJu IHJjOwo+ID4gK30KPiA+ICsKPiA+ICBsb25nIGFyY2hfbWVtb3J5X29wKHVuc2lnbmVkIGxvbmcg Y21kLAo+ID4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gPiAgewo+ID4gICAg ICBpbnQgcmM7Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBiL3hlbi9jb21t b24vbWVtb3J5LmMKPiA+IGluZGV4IDZjMzg1YTIzMjguLjAxNjdkOTc4OGIgMTAwNjQ0Cj4gPiAt LS0gYS94ZW4vY29tbW9uL21lbW9yeS5jCj4gPiArKysgYi94ZW4vY29tbW9uL21lbW9yeS5jCj4g PiBAQCAtMTAxNiw3ICsxMDE2LDggQEAgc3RhdGljIGludCBhY3F1aXJlX3Jlc291cmNlKAo+ID4g ICAgICBzd2l0Y2ggKCB4bWFyLnR5cGUgKQo+ID4gICAgICB7Cj4gPiAgICAgIGRlZmF1bHQ6Cj4g PiAtICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+ID4gKyAgICAgICAgcmMgPSBhcmNoX2FjcXVp cmVfcmVzb3VyY2UoZCwgeG1hci50eXBlLCB4bWFyLmlkLCB4bWFyLmZyYW1lLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1hci5ucl9mcmFtZXMsIG1mbl9saXN0KTsK PiA+ICAgICAgICAgIGJyZWFrOwo+ID4gICAgICB9Cj4gPgo+ID4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAo+ID4gaW5kZXgg YWQyZjJhNDNkYy4uYmQxNDZkZWUzYyAxMDA2NDQKPiA+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vbW0uaAo+ID4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCj4gPiBAQCAtMzgxLDYg KzM4MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3BhZ2VfYW5kX3R5cGUoc3RydWN0Cj4g PiBwYWdlX2luZm8gKnBhZ2UpCj4gPgo+ID4gIHZvaWQgY2xlYXJfYW5kX2NsZWFuX3BhZ2Uoc3Ry dWN0IHBhZ2VfaW5mbyAqcGFnZSk7Cj4gPgo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGFyY2hfYWNx dWlyZV9yZXNvdXJjZSgKPiA+ICsgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5 cGUsIHVuc2lnbmVkIGludCBpZCwKPiA+ICsgICAgdW5zaWduZWQgbG9uZyBmcmFtZSx1bnNpZ25l ZCBpbnQgbnJfZnJhbWVzLCB4ZW5fcGZuX3QgbWZuX2xpc3RbXSkKPiA+ICt7Cj4gPiArICAgIHJl dHVybiAtRU9QTk9UU1VQUDsKPiA+ICt9Cj4gPiArCj4gPiAgI2VuZGlmIC8qICBfX0FSQ0hfQVJN X01NX18gKi8KPiA+ICAvKgo+ID4gICAqIExvY2FsIHZhcmlhYmxlczoKPiA+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oIGIveGVuL2luY2x1ZGUvYXNtLQo+ID4g eDg2L2h2bS9pb3JlcS5oCj4gPiBpbmRleCAxODI5ZmNmNDNlLi45ZTM3Yzk3YTM3IDEwMDY0NAo+ ID4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaAo+ID4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaAo+ID4gQEAgLTMxLDYgKzMxLDggQEAgaW50IGh2bV9n ZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRvbWFpbiAqZCwKPiA+IGlvc2VydmlkX3QgaWQs Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqaW9yZXFf Z2ZuLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1 ZmlvcmVxX2dmbiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9y dF90ICpidWZpb3JlcV9wb3J0KTsKPiA+ICtpbnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUo c3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpZHgsIG1mbl90ICptZm4pOwo+ID4gIGludCBodm1f bWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90 IGlkLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0 eXBlLCB1aW50NjRfdCBzdGFydCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgZW5kKTsKPiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKPiA+IGluZGV4IDgzNjI2MDg1ZTAuLjEw ZTViNmNkMTQgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKPiA+ICsr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+ID4gQEAgLTYyOSw0ICs2MjksOSBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgYXJjaF9tZm5faW5fZGlyZWN0bWFwKHVuc2lnbmVkCj4gPiBsb25nIG1m bikKPiA+ICAgICAgcmV0dXJuIG1mbiA8PSAodmlydF90b19tZm4oZXZhIC0gMSkgKyAxKTsKPiA+ ICB9Cj4gPgo+ID4gK2ludCBhcmNoX2FjcXVpcmVfcmVzb3VyY2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgaW50IHR5cGUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgaWQsIHVuc2lnbmVkIGxvbmcgZnJhbWUsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgeGVuX3Bmbl90IG1mbl9saXN0W10pOwo+ID4gKwo+ID4gICNlbmRpZiAvKiBfX0FTTV9YODZf TU1fSF9fICovCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5o Cj4gPiBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAo+ID4gaW5kZXggMTNiMzczN2My Zi4uYWRkNjhlYTE5MiAxMDA2NDQKPiA+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1f b3AuaAo+ID4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCj4gPiBAQCAtOTAs NiArOTAsMTAgQEAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyIHsKPiA+ICAg KiB0aGUgZnJhbWUgbnVtYmVycyBwYXNzZWQgYmFjayBpbiBnZm5zIDxpb3JlcV9nZm4+IGFuZAo+ IDxidWZpb3JlcV9nZm4+Cj4gPiAgICogcmVzcGVjdGl2ZWx5LiAoSWYgdGhlIElPUkVRIFNlcnZl ciBpcyBub3QgaGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9uCj4gPiAgICogb25seSA8aW9yZXFf Z2ZuPiB3aWxsIGJlIHZhbGlkKS4KPiA+ICsgKgo+ID4gKyAqIE5PVEU6IFRvIGFjY2VzcyB0aGUg c3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJlcyBhbmQgYnVmZmVyZWQgaW9yZXEKPiA+ICsgKiAg ICAgICByaW5nLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUgWEVOTUVNX2FjcXVpcmVfcmVz b3VyY2UgbWVtb3J5Cj4gPiArICogICAgICAgb3Agc3BlY2lmeWluZyByZXNvdXJjZSB0eXBlIFhF Tk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIuCj4gPiAgICovCj4gPiAgI2RlZmluZSBYRU5fRE1P UF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMgo+ID4KPiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKPiA+IGluZGV4 IDgzZTYwYjY2MDMuLjgzOGYyNDhhNTkgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJs aWMvbWVtb3J5LmgKPiA+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAo+ID4gQEAg LTYwOSw5ICs2MDksMTQgQEAgc3RydWN0IHhlbl9tZW1fYWNxdWlyZV9yZXNvdXJjZSB7Cj4gPiAg ICAgIGRvbWlkX3QgZG9taWQ7Cj4gPiAgICAgIC8qIElOIC0gdGhlIHR5cGUgb2YgcmVzb3VyY2Ug Ki8KPiA+ICAgICAgdWludDE2X3QgdHlwZTsKPiA+ICsKPiA+ICsjZGVmaW5lIFhFTk1FTV9yZXNv dXJjZV9pb3JlcV9zZXJ2ZXIgMAo+ID4gKwo+ID4gICAgICAvKgo+ID4gICAgICAgKiBJTiAtIGEg dHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJlIHplcm8KPiA+ ICAgICAgICogICAgICB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4KPiA+ICsgICAgICoKPiA+ICsg ICAgICogdHlwZSA9PSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyIC0+IGlkID09IGlvcmVx IHNlcnZlciBpZAo+ID4gICAgICAgKi8KPiA+ICAgICAgdWludDMyX3QgaWQ7Cj4gPiAgICAgIC8q IElOL09VVCAtIEFzIGFuIElOIHBhcmFtZXRlciBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSByZXNv dXJjZQo+ID4gQEAgLTYyNSw2ICs2MzAsMTAgQEAgc3RydWN0IHhlbl9tZW1fYWNxdWlyZV9yZXNv dXJjZSB7Cj4gPiAgICAgICAqICAgICAgaXMgaWdub3JlZCBpZiBucl9mcmFtZXMgaXMgMC4KPiA+ ICAgICAgICovCj4gPiAgICAgIHVpbnQ2NF9hbGlnbmVkX3QgZnJhbWU7Cj4gPiArCj4gPiArI2Rl ZmluZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1lX2J1ZmlvcmVxIDAKPiA+ICsj ZGVmaW5lIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXJfZnJhbWVfaW9yZXEobikgKDEgKyAo bikpCj4gPiArCj4gPiAgICAgIC8qIElOL09VVCAtIElmIHRoZSB0b29scyBkb21haW4gaXMgUFYg dGhlbiwgdXBvbiByZXR1cm4sIGZyYW1lX2xpc3QKPiA+ICAgICAgICogICAgICAgICAgd2lsbCBi ZSBwb3B1bGF0ZWQgd2l0aCB0aGUgTUZOcyBvZiB0aGUgcmVzb3VyY2UuCj4gPiAgICAgICAqICAg ICAgICAgIElmIHRoZSB0b29scyBkb21haW4gaXMgSFZNIHRoZW4gaXQgaXMgZXhwZWN0ZWQgdGhh dCwgb24KPiA+IC0tCj4gPiAyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs