From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 01/11] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Fri, 3 Mar 2017 14:59:54 -0500 Message-ID: <20170303195954.GE17600@char.us.ORACLE.com> References: <1487676368-22356-1-git-send-email-bhupinder.thakur@linaro.org> <1487676368-22356-2-git-send-email-bhupinder.thakur@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cjtNB-00064T-Tw for xen-devel@lists.xenproject.org; Fri, 03 Mar 2017 20:00:18 +0000 Content-Disposition: inline In-Reply-To: <1487676368-22356-2-git-send-email-bhupinder.thakur@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Bhupinder Thakur Cc: xen-devel@lists.xenproject.org, Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org LnNuaXAuLgo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRDUl9PRkZTRVQ6Cj4gKyAgICAgICAg ICAgICpyID0gdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5jb250cm9sOwo+ICsgICAgICAgICAgICBi cmVhazsKClBscyBhZGQgYSBuZXcgbmV3bGluZSBhZnRlciBlYWNoIGJyZWFrLgoKPiArICAgICAg ICBjYXNlIFZQTDAxMV9VQVJURFJfT0ZGU0VUOgo+ICsgICAgICAgICAgICB2cGwwMTFfcmVhZF9k YXRhKHYtPmRvbWFpbiwgJmNoKTsKPiArICAgICAgICAgICAgKnIgPSBjaDsKPiArICAgICAgICAg ICAgYnJlYWs7Cj4gKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVEZSX09GRlNFVDoKPiArICAgICAg ICAgICAgKnIgPSB2LT5kb21haW4tPmFyY2gudnBsMDExLmZsYWc7Cj4gKyAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRJTVNDX09GRlNFVDoKPiArICAgICAgICAg ICAgKnIgPSB2LT5kb21haW4tPmFyY2gudnBsMDExLmludHJfbWFzazsKPiArICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVElDUl9PRkZTRVQ6IAo+ICsgICAgICAg ICAgICAqciA9IDA7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgVlBMMDEx X1VBUlRSSVNfT0ZGU0VUOgo+ICsgICAgICAgICAgICAqciA9IHYtPmRvbWFpbi0+YXJjaC52cGww MTEucmF3X2ludHJfc3RhdHVzOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNl IFZQTDAxMV9VQVJUTUlTX09GRlNFVDoKPiArICAgICAgICAgICAgKnIgPSB2LT5kb21haW4tPmFy Y2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyAmCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5pbnRyX21hc2s7Cj4gKyAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRETUFDUl9PRkZTRVQ6Cj4gKyAgICAgICAg ICAgICpyID0gMDsgLyogdWFydCBETUEgaXMgbm90IHN1cHBvcnRlZC4gSGVyZSBpdCBhbHdheXMg cmV0dXJucyAwICovCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgVlBMMDEx X1VBUlRSU1JfT0ZGU0VUOiAKPiArICAgICAgICAgICAgKnIgPSAwOyAvKiBpdCBhbHdheXMgcmV0 dXJucyAwIGFzIHRoZXJlIGFyZSBubyBwaHlzaWNhbCBlcnJvcnMgKi8KPiArICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgcHJpbnRrICgidnBsMDEx X21taW9fcmVhZDogaW52YWxpZCBzd2l0Y2ggY2FzZSAlZFxuIiwgKGludCkoaW5mby0+Z3BhIC0g R1VFU1RfUEwwMTFfQkFTRSkpOwoKLi4gYW5kIHlvdSBzdGlsbCByZXR1cm4gRU1VTE9LPwoKQWxz byBpcyB0aGlzIHByaW50ayByZWFsbHkgbmVjY2Vzc2FyeT8KCj4gKyAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBWUEwwMTFfRU1VTF9PSzsKPiArfQo+ICsKPiAr c3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3Qg KmluZm8sIHJlZ2lzdGVyX3Qgciwgdm9pZCAqcHJpdikKPiArewo+ICsgICAgdW5zaWduZWQgY2hh ciBjaCA9IHI7Cj4gKwo+ICsgICAgc3dpdGNoIChpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNF KQo+ICsgICAgewo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRDUl9PRkZTRVQ6Cj4gKyAgICAg ICAgICAgIHYtPmRvbWFpbi0+YXJjaC52cGwwMTEuY29udHJvbCA9IHI7Cj4gKyAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlREUl9PRkZTRVQ6Cj4gKyAgICAgICAg ICAgIHZwbDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgY2gpOwo+ICsgICAgICAgICAgICBicmVh azsKPiArICAgICAgICBjYXNlIFZQTDAxMV9VQVJUSU1TQ19PRkZTRVQ6Cj4gKyAgICAgICAgICAg IHYtPmRvbWFpbi0+YXJjaC52cGwwMTEuaW50cl9tYXNrID0gcjsKPiArICAgICAgICAgICAgaWYg KCAodi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5yYXdfaW50cl9zdGF0dXMgJiB2LT5kb21haW4tPmFy Y2gudnBsMDExLmludHJfbWFzaykgKQo+ICsgICAgICAgICAgICAgICAgdmdpY192Y3B1X2luamVj dF9zcGkodi0+ZG9tYWluLCAoaW50KXYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tI Vk1fUEFSQU1fVlBMMDExX1ZJUlFdKTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAg Y2FzZSBWUEwwMTFfVUFSVElDUl9PRkZTRVQ6IAo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAg ICAgICAgKiBjbGVhciBhbGwgYml0cyB3aGljaCBhcmUgc2V0IGluIHRoZSBpbnB1dAo+ICsgICAg ICAgICAgICAgKi8KPiArICAgICAgICAgICAgdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5yYXdfaW50 cl9zdGF0dXMgJj0gfnI7Cj4gKyAgICAgICAgICAgIGlmICggKHYtPmRvbWFpbi0+YXJjaC52cGww MTEucmF3X2ludHJfc3RhdHVzICYgdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5pbnRyX21hc2spICkK PiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgdmdpY192Y3B1X2luamVjdF9zcGko di0+ZG9tYWluLCAoaW50KXYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFS QU1fVlBMMDExX1ZJUlFdKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBicmVhazsK PiArICAgICAgICBjYXNlIFZQTDAxMV9VQVJUUlNSX09GRlNFVDogLy8gbm90aGluZyB0byBjbGVh cgo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIFZQTDAxMV9VQVJURlJfT0ZG U0VUOiAvLyB0aGVzZSBhcmUgYWxsIFJPIHJlZ2lzdGVycwo+ICsgICAgICAgIGNhc2UgVlBMMDEx X1VBUlRSSVNfT0ZGU0VUOgo+ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRNSVNfT0ZGU0VUOgo+ ICsgICAgICAgIGNhc2UgVlBMMDExX1VBUlRETUFDUl9PRkZTRVQ6Cj4gKyAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgIHByaW50ayAoInZwbDAxMV9t bWlvX3dyaXRlOiBzd2l0Y2ggY2FzZSBub3QgaGFuZGxlZCAlZFxuIiwgKGludCkoaW5mby0+Z3Bh IC0gR1VFU1RfUEwwMTFfQkFTRSkpOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgIH0KPiAr Cj4gKyAgICByZXR1cm4gVlBMMDExX0VNVUxfT0s7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2cGwwMTFfbW1pb19oYW5kbGVyID0gewo+ICsgICAgLnJl YWQgPSB2cGwwMTFfbW1pb19yZWFkLAo+ICsgICAgLndyaXRlID0gdnBsMDExX21taW9fd3JpdGUs Cj4gK307Cj4gKwo+ICsKCndoeSB0aGUgZXh0cmEgbmV3bGluZS4KCj4gKwo+ICtpbnQgdnBsMDEx X21hcF9ndWVzdF9wYWdlKHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAgIGludCByYz0wOwoK Tm8gbmVlZCBmb3IgPSAwOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBtYXAgdGhlIGd1ZXN0IFBG TiB0byBYZW4gYWRkcmVzcyBzcGFjZQo+ICsgICAgICovCj4gKyAgICByYyA9IHByZXBhcmVfcmlu Z19mb3JfaGVscGVyKGQsIAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5h cmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9QRk5dLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC52cGwwMTEucmluZ19wYWdl LCAKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiopJmQtPmFyY2gu dnBsMDExLnJpbmdfYnVmKTsKPiArICAgIGlmICggcmMgPCAwICkKPiArICAgIHsKPiArICAgICAg ICBwcmludGsoIkZhaWxlZCB0byBtYXAgdnBsMDExIGd1ZXN0IFBGTlxuIik7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgcmV0dXJuIHJjOwoKQ291bGQgeW91IGp1c3QgbWFrZSB0aGlzIHdob2xlIHJvdXRp bmUgYmU6CgogcmV0dXJuIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKC4uKQoKVGhhdCBwcmludGsg aXMgbm90IG5lZWRlZCBJIHRoaW5rPyBJIHdvdWxkIGFkZCBpdCB0byB0aGUgY2FsbGVyIG9mIHRo aXMgZnVuY3Rpb24uCgo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZwbDAxMV9kYXRhX2F2YWlsKHN0 cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAgIGludCByYz0wOwo+ICsgICAgdW5zaWduZWQgbG9u ZyBmbGFnczsKPiArCj4gKyAgICBzdHJ1Y3QgY29uc29sZV9pbnRlcmZhY2UgKmludGY9KHN0cnVj dCBjb25zb2xlX2ludGVyZmFjZSAqKWQtPmFyY2gudnBsMDExLnJpbmdfYnVmOwoKQ2FuIHlvdSBo YXZlIGFuIG1hY3JvIGZvciB0aGlzPwo+ICsKPiArICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsK ClBsZWFzZSBkb24ndC4gSnVzdCB1c2Ugbm9ybWFsIHNwaW5fbG9jayBpbnZvY2F0aW9uLgoKPiAr Cj4gKyAgICAvKmAKPiArICAgICAqIGNoZWNrIElOIHJpbmcgYnVmZmVyCj4gKyAgICAgKi8KClBs ZWFzZSByZW1vdmUgdGhlIGNvbW1lbnQuIEl0IGRvZXMgbm90IGFkZCBtdWNoIGNvbnRleHQgdG8g dGhlIGNvZGUuCgo+ICsgICAgaWYgKCAhVlBMMDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKQo+ICsg ICAgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogY2xlYXIgdGhlIFJYIEZJRk8gZW1wdHkg ZmxhZyBhcyB0aGUgcmluZyBpcyBub3QgZW1wdHkKPiArICAgICAgICAgKi8KClBsZWFzZSByZW1v dmUgdGhpcyBjb21tZW50LgoKPiArICAgICAgICBkLT5hcmNoLnZwbDAxMS5mbGFnICY9IH4oVlBM MDExX1VBUlRGUl9SWEZFKTsKPiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBpZiB0aGUg YnVmZmVyIGlzIGZ1bGwgdGhlbiBzZXQgdGhlIFJYIEZJRk8gRlVMTCBmbGFnCgpBbHNvIHBsZWFz ZSByZW1vdmUgdGhpcyBjb21tZW50LgoKPiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoIFZQ TDAxMV9JTl9SSU5HX0ZVTEwoaW50ZikgKQo+ICsgICAgICAgICAgICBkLT5hcmNoLnZwbDAxMS5m bGFnIHw9IChWUEwwMTFfVUFSVEZSX1JYRkYpOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAg ICAqIHNldCB0aGUgUlggaW50ZXJydXB0IHN0YXR1cwo+ICsgICAgICAgICAqLwoKQW5kIHRoaXMg b25lIHRvby4KCldoYXQgSSB3b3VsZCByZWNvbW1lbmQgaXMgdGhhdCB5b3Ugd3JpdGUgb25lIG5p Y2UgY29tbWVudCBhdCB0aGUgc3RhcnQKb2YgdGhlICdpZicgc2F5aW5nOgoKIkhhdmUgdG8gc2V0 IFJYIHN0YXRlIHJlZ2FyZGxlc3Mgd2hldGhlciBpdCBpcyBmdWxsIG9yIGhhcyBzb21lIGVudHJp ZXMuIgoKPiArICAgICAgICBkLT5hcmNoLnZwbDAxMS5yYXdfaW50cl9zdGF0dXMgfD0gKFZQTDAx MV9VQVJUUklTX1JYUklTKTsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogY2hlY2sg T1VUIHJpbmcgYnVmZmVyCgpQbGVhc2UgcmVtb3ZlIHRoaXMgY29tbWVudC4KPiArICAgICAqLwo+ ICsgICAgaWYgKCAhVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikgKQo+ICsgICAgewo+ICsgICAg ICAgIC8qCj4gKyAgICAgICAgICogaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVsbCB0aGVuIGNsZWFy IHRoZSBUWCBGSUZPIGZ1bGwgZmxhZwo+ICsgICAgICAgICAqLwoKClBsZWFzZSByZW1vdmUgdGhp cyBjb21tZW50Lgo+ICsgICAgICAgIGQtPmFyY2gudnBsMDExLmZsYWcgJj0gfihWUEwwMTFfVUFS VEZSX1RYRkYpOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIHNldCB0aGUgVFggaW50 ZXJydXB0IHN0YXR1cwo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGQtPmFyY2gudnBsMDExLnJh d19pbnRyX3N0YXR1cyB8PSAoVlBMMDExX1VBUlRSSVNfVFhSSVMpOwo+ICsKPiArICAgICAgICBp ZiAoIFZQTDAxMV9PVVRfUklOR19FTVBUWShpbnRmKSApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICAvKgo+ICsgICAgICAgICAgICAgKiBjbGVhciB0aGUgdWFydCBidXN5IGZsYWcgYW5kIHNl dCB0aGUgVFggRklGTyBlbXB0eSBmbGFnCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAg ICBkLT5hcmNoLnZwbDAxMS5mbGFnICY9IH4oVlBMMDExX1VBUlRGUl9CVVNZKTsKPiArICAgICAg ICAgICAgZC0+YXJjaC52cGwwMTEuZmxhZyB8PSAoVlBMMDExX1VBUlRGUl9UWEZFKTsKPiArICAg ICAgICB9Cj4gKyAgICB9Cgo+ICsKPiArICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOwo+ICsK PiArICAgIC8qCj4gKyAgICAgKiBzZW5kIGFuIGludGVycnVwdCBpZiBpdCBpcyBub3QgbWFza2Vk CgpTbyBkb2VzIHRoYXQgbWVhbiB3ZSB3b3VsZCBzZW5kIGFuIGludGVycnVwdCBldmVuIGlmIHRo ZSBpbi9vdXQgcmluZ3MKYXJlIGZ1bGw/Cgo+ICsgICAgICovCj4gKyAgICBpZiAoIChkLT5hcmNo LnZwbDAxMS5yYXdfaW50cl9zdGF0dXMgJiBkLT5hcmNoLnZwbDAxMS5pbnRyX21hc2spICkKPiAr ICAgICAgICB2Z2ljX3ZjcHVfaW5qZWN0X3NwaShkLCAoaW50KWQtPmFyY2guaHZtX2RvbWFpbi5w YXJhbXNbSFZNX1BBUkFNX1ZQTDAxMV9WSVJRXSk7Cj4gKwo+ICsgICAgaWYgKCAhVlBMMDExX09V VF9SSU5HX0VNUFRZKGludGYpICkKClRoaXMgaXMgYXNraW5nIGZvciBhIHJhY2UuCgpTbyBpdCBt YXkgaGF2ZSBjaGFuZ2VkIGJldHdlZW4gdGhlIGZpcnN0IHRpbWUgeW91IHJlYWQgaXQgYW5kIHRo aXMKb25lLgoKSXMgdGhhdCBPSz8gV291bGQgaXQgc3RpbGwgYmUgT0sgdG8gc2VuZCBhbiBpbnRl cnJ1cHQgZXZlbiBpZiBzYXkKdGhlIHJpbmcgd2FzIGVtdHByeSBhdCBzdGFydCBvZiB0aGUgZnVu Y3Rpb24gYnV0IGJlY2FtZSBlbXB0eSBub3c/CgpXb3VsZCBpdCBiZSBiZXR0ZXIgaWYgeW91IHJl YWQgYWxsIHRoZSB2YWx1ZXMgZnJvbQp0aGUgcmluZyBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0 aW9uIGluIGxvY2FsIHZhcmlhYmxlcwphbmQgbWFkZSBzdXJlIHRvIHVzZSAnYmFycmllcigpJyBz byB0aGVyZSBhcmUgbm8gY29tcGlsZXIKIm9wdGltaXphdGlvbnMiIGRvbmU/Cgo+ICsgICAgewo+ ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogcmFpc2UgYW4gaW50ZXJydXB0IHRvIGRvbTAKPiAr ICAgICAgICAgKi8KClBsZWFzZSByZW1vdmUgdGhpcy4KCj4gKyAgICAgICAgcmMgPSByYXdfZXZ0 Y2huX3NlbmQoZCwgCj4gKyAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBh cmFtc1tIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOXSwgTlVMTCk7IAoKV2hhdCBpZiBI Vk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOIGlzIHplcm8/IFNob3VsZCB5b3UgY2hlY2sK dGhhdCBmaXJzdD8KCk9yIGlzIGl0IGdpdmVuIChpbiB3aGljaCBjYXNlIHBsZWFzZSBhZGQgYW4g QVNTRVJUKSB0aGF0IHRoZQpIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOIGlzIF9hbHdh eXNfIHNldD8KCj4gKwo+ICsgICAgICAgIGlmICggcmMgPCAwICkKPiArICAgICAgICAgICAgcHJp bnRrKCJGYWlsZWQgdG8gc2VuZCB2cGwwMTEgaW50ZXJydXB0IHRvIGRvbTBcbiIpOwoKZ2Rwcmlu dGsuIEJ1dCBpcyB0aGlzIHVzZWZ1bD8gSG93IHdpbGwgdGhpcyBoZWxwIGluIGRlYnVnZ2luZyB0 aGUKcHJvYmxlbT8KCj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtp bnQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBjaGFyICpkYXRh KQo+ICt7Cj4gKyAgICBpbnQgcmM9MDsKCk5vIHBvaW50IGZvciB0aGlzLiBKdXN0IGRvICdyZXR1 cm4gMCcKPiArICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAgICBzdHJ1Y3QgY29uc29sZV9p bnRlcmZhY2UgKmludGY9KHN0cnVjdCBjb25zb2xlX2ludGVyZmFjZSAqKWQtPmFyY2gudnBsMDEx LnJpbmdfYnVmOwo+ICsKPiArICAgICpkYXRhID0gMDsKPiArCj4gKyAgICBWUEwwMTFfTE9DSyhk LCBmbGFncyk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIGlmIHRoZXJlIGlzIGRhdGEgaW4gdGhl IHJpbmcgYnVmZmVyIHRoZW4gY29weSBpdCB0byB0aGUgb3V0cHV0IGJ1ZmZlcgo+ICsgICAgICov Cj4gKyAgICBpZiAoICFWUEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSApCj4gKyAgICB7Cj4gKyAg ICAgICAgKmRhdGEgPSBpbnRmLT5pbltNQVNLX1ZQTDAxMUNPTlNfSURYKGludGYtPmluX2NvbnMr KywgaW50Zi0+aW4pXTsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogaWYgdGhlIHJp bmcgYnVmZmVyIGlzIGVtcHR5IHRoZW4gc2V0IHRoZSBSWCBGSUZPIGVtcHR5IGZsYWcKPiArICAg ICAqLwo+ICsgICAgaWYgKCBWUEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSApCgpTbyB0aGVyZSBp cyBhIG5pY2UgcmFjZSBoZXJlLiBXaHkgZG9uJ3QgeW91IGp1c3QgdXNlIGFuICdlbHNlJyA/CgoK PiArICAgIHsKPiArICAgICAgICBkLT5hcmNoLnZwbDAxMS5mbGFnIHw9IChWUEwwMTFfVUFSVEZS X1JYRkUpOwo+ICsgICAgICAgIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyAmPSB+KFZQ TDAxMV9VQVJUUklTX1JYUklTKTsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogY2xl YXIgdGhlIFJYIEZJRk8gZnVsbCBmbGFnCj4gKyAgICAgKi8KPiArICAgIGQtPmFyY2gudnBsMDEx LmZsYWcgJj0gfihWUEwwMTFfVUFSVEZSX1JYRkYpOwo+ICsKPiArICAgIFZQTDAxMV9VTkxPQ0so ZCwgZmxhZ3MpOwo+ICsKPiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHZwbDAxMV93 cml0ZV9kYXRhKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGNoYXIgZGF0YSkKPiArewo+ICsg ICAgaW50IHJjPTA7CgpQbHMgcmVtb3ZlIHRoZSAnPTAnCj4gKyAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwo+ICsgICAgc3RydWN0IGNvbnNvbGVfaW50ZXJmYWNlICppbnRmPShzdHJ1Y3QgY29uc29s ZV9pbnRlcmZhY2UgKilkLT5hcmNoLnZwbDAxMS5yaW5nX2J1ZjsKPiArCj4gKyAgICBWUEwwMTFf TE9DSyhkLCBmbGFncyk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIGlmIHRoZXJlIGlzIHNwYWNl IGluIHRoZSByaW5nIGJ1ZmZlciB0aGVuIHdyaXRlIHRoZSBkYXRhCgpQbGVhc2UgbW9yZXZlIHRo aXMgY29tbWVudC4KPiArICAgICAqLwo+ICsgICAgaWYgKCAhVlBMMDExX09VVF9SSU5HX0ZVTEwo aW50ZikgKQo+ICsgICAgewo+ICsgICAgICAgIGludGYtPm91dFtNQVNLX1ZQTDAxMUNPTlNfSURY KGludGYtPm91dF9wcm9kKyssIGludGYtPm91dCldID0gZGF0YTsKPiArICAgICAgICBzbXBfd21i KCk7Cj4gKyAgICB9Cj4gCj4gKyAgICAvKgo+ICsgICAgICogaWYgdGhlcmUgaXMgbm8gc3BhY2Ug aW4gdGhlIHJpbmcgYnVmZmVyIHRoZW4gc2V0IHRoZSAKPiArICAgICAqIFRYIEZJRk8gRlVMTCBm bGFnCgpBZ2Fpbiwgd2h5IG5vdCBqdXN0IGFuICdlbHNlJz8KCj4gKyAgICAgKi8KPiArICAgIGlm ICggVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikgKQo+ICsgICAgewo+ICsgICAgICAgIGQtPmFy Y2gudnBsMDExLmZsYWcgfD0gKFZQTDAxMV9VQVJURlJfVFhGRik7Cj4gKyAgICAgICAgZC0+YXJj aC52cGwwMTEucmF3X2ludHJfc3RhdHVzICY9IH4oVlBMMDExX1VBUlRSSVNfVFhSSVMpOwo+ICsg ICAgfQo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBzZXQgdGhlIHVhcnQgYnVzeSBzdGF0dXMKPiAr ICAgICAqLwo+ICsgICAgZC0+YXJjaC52cGwwMTEuZmxhZyB8PSAoVlBMMDExX1VBUlRGUl9CVVNZ KTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogY2xlYXIgdGhlIFRYIEZJRk8gZW1wdHkgZmxhZwo+ ICsgICAgICovCgpQbGVhc2UgcmVtb3ZlIHRoZXNlIGNvbW1lbnRzLiBUaGV5IGFyZSBkaXN0cmFj dGluZy4KCkFsc28gYSBzaW5nbGUgbGluZSBjb21tZW50IHNob3VsZCBiZToKCi8qIDxjb21tZW50 PiAqLwoKCj4gKyAgICBkLT5hcmNoLnZwbDAxMS5mbGFnICY9IH4oVlBMMDExX1VBUlRGUl9UWEZF KTsKPiArCj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICAvKgo+ICsg ICAgICogcmFpc2UgYW4gZXZlbnQgdG8gZG9tMCBvbmx5IGlmIGl0IGlzIHRoZSBmaXJzdCBjaGFy YWN0ZXIgaW4gdGhlIGJ1ZmZlcgoKV2h5PyBXaHkgb25seSB0aGUgZmlyc3QgY2hhcmN0ZXI/Cgo+ ICsgICAgICovCj4gKyAgICBpZiAoIFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIG91dCkgPT0gMSAp Cj4gKyAgICB7Cj4gKyAgICAgICAgcmMgPSByYXdfZXZ0Y2huX3NlbmQoZCwgCj4gKyAgICAgICAg ICAgICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09M RV9FVlRDSE5dLCBOVUxMKTsgCgpBbmQgYWdhaW4sIHNob3VsZCB3ZSBoYXZlIGFuIGFzc2VydCBm b3IgSFZNX1BBUkFNX1ZQTDAxMV9DT05TT0xFX0VWVENITiBvciBhIGNoZWNrCmZvciBpdD8KCj4g Kwo+ICsgICAgICAgIGlmICggcmMgPCAwICkKPiArICAgICAgICAgICAgcHJpbnRrKCJGYWlsZWQg dG8gc2VuZCB2cGwwMTEgaW50ZXJydXB0IHRvIGRvbTBcbiIpOwoKZ2RwcmludGsuCgo+ICsgICAg fQo+ICsKPiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnBsMDExX25v dGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCj4gK3sKPiArICAg IHZwbDAxMV9kYXRhX2F2YWlsKHYtPmRvbWFpbik7Cj4gK30KPiArCj4gK2ludCBkb21haW5fdnBs MDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgaW50IHJjPTA7CgpZb3UgY2Fu IHJlbW92ZSB0aGUgPTA7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIHJlZ2lzdGVyIHhlbiBldmVu dCBjaGFubmVsCj4gKyAgICAgKi8KClBsZWFzZSByZW1vdmUgdGhpcyBjb21tZW50LgoKPiArICAg IHJjID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBjdXJyZW50LT5kb21h aW4tPmRvbWFpbl9pZCwgCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdnBsMDExX25vdGlmaWNhdGlvbik7Cj4gKyAgICBpZiAocmMgPCAw KQoKU3BhY2VzLgo+ICsgICAgewo+ICsgICAgICAgIHByaW50ayAoIkZhaWxlZCB0byBhbGxvY2F0 ZSB2cGwwMTEgZXZlbnQgY2hhbm5lbFxuIik7CgpnZHByaW50awoKQW5kIGFsc28gbm90IHN1cmUg aWYgdGhpcyBpcyBuZWVkZWQuIFdvbid0IHRoZSByYyBiZSBwcm9wYWdhdGVkIHRvIHRoZQpjYWxs ZXIgd2hvIGNhbiBwcmludCB0aGlzPwoKPiArICAgICAgICByZXR1cm4gcmM7Cj4gKyAgICB9Cj4g KyAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9F VlRDSE5dID0gcmM7Cj4gKyAgICAKPiArICAgIC8qCj4gKyAgICAgKiBhbGxvY2F0ZSBhbiBTUEkg VklSUSBmb3IgdGhlIGd1ZXN0Cj4gKyAgICAgKi8KPiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5w YXJhbXNbSFZNX1BBUkFNX1ZQTDAxMV9WSVJRXSA9IHZnaWNfYWxsb2NhdGVfc3BpKGQpOwoKWW91 IGFyZSBub3QgY2hlY2tpbmcgdmdpY19hbGxvY2F0ZV9zcGkgZm9yIGVycm9ycz8KCj4gKwo+ICsg ICAgLyoKPiArICAgICAqIHJlZ2lzdGVyIG1taW8gaGFuZGxlciAKPiArICAgICAqLwoKUGxlYXNl IHJlbW92ZSB0aGVzZSBjb21tZW50cy4gVGhleSBhcmUganVzdCBzYXlpbmcgd2hhdCB0aGUgY29k ZQppcyBkb2luZy4gTm90IGFkZGluZyBhbnl0aGluZyBleHRyYS4KCj4gKyAgICByZWdpc3Rlcl9t bWlvX2hhbmRsZXIgKGQsICZ2cGwwMTFfbW1pb19oYW5kbGVyLCBHVUVTVF9QTDAxMV9CQVNFLCBH VUVTVF9QTDAxMV9TSVpFLCBOVUxMKTsKClBsZWFzZSBraWxsIHRoYXQgc3BhY2UgYmVmb3JlICgu CgpBbmQgd2hhdCBpZiByZWdpc3Rlcl9tbWlvX2hhbmRsZXIgcmV0dXJucyBhbiBlcnJvcj8KCj4g Kwo+ICsgICAgLyogCj4gKyAgICAgKiBpbml0aWFsaXplIHRoZSBsb2NrCj4gKyAgICAgKi8KClRo YXQgaXMgYSBjb21tZW50IHRoYXQgaXMgcmVhbGx5IG5vdCBuZWVkZWQuCgo+ICsgICAgc3Bpbl9s b2NrX2luaXQoJmQtPmFyY2gudnBsMDExLmxvY2spOwo+ICsKPiArICAgIC8qIAo+ICsgICAgICog Y2xlYXIgdGhlIGZsYWcsIGNvbnRyb2wgYW5kIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXJzCj4g KyAgICAgKi8KCldoeSBub3QganVzdCBkbyBtZW1zZXQgb24gdGhlIHN0cnVjdHVyZT8KCj4gKyAg ICBkLT5hcmNoLnZwbDAxMS5jb250cm9sID0gMDsKPiArICAgIGQtPmFyY2gudnBsMDExLmZsYWcg PSAwOwo+ICsgICAgZC0+YXJjaC52cGwwMTEuaW50cl9tYXNrID0gMDsKPiArICAgIGQtPmFyY2gu dnBsMDExLmludHJfY2xlYXIgPSAwOwo+ICsgICAgZC0+YXJjaC52cGwwMTEucmF3X2ludHJfc3Rh dHVzID0gMDsKPiArICAgIGQtPmFyY2gudnBsMDExLm1hc2tlZF9pbnRyX3N0YXR1cyA9IDA7Cj4g Kwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZwbDAx MS5oIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5mMmM1NzdmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS92 cGwwMTEuaAo+IEBAIC0wLDAgKzEsMjA4IEBACj4gKy8qCj4gKyAqIGluY2x1ZGUveGVuL3ZwbDAx MS5oCj4gKyAqCj4gKyAqIFZpcnR1YWwgUEwwMTEgVUFSVCAKPiArICoKPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAo+ICsg KiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ICsgKiBtb3JlIGRldGFpbHMu Cj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKPiArICogdGhpcyBwcm9ncmFtOyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqLwo+ICsKPiArI2lm bmRlZiBfVlBMMDExX0hfCj4gKwo+ICsjZGVmaW5lIF9WUEwwMTFfSF8KPiArCj4gKy8qCj4gKyAq IHJlZ2lzdGVyIG9mZnNldHMKPiArICovCj4gKyNkZWZpbmUgVlBMMDExX1VBUlREUl9PRkZTRVQg ICAgMHgwIC8vIGRhdGEgcmVnaXN0ZXIgKFJXKQoKV3JvbmcgdHlwZSBvZiBjb21tZW50cy4gUGxz IHVzZSAvKiAqLyB2YXJpYW50Cgo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUUlNSX09GRlNFVCAgIDB4 NCAvLyByZWNlaXZlIHN0YXR1cyBhbmQgZXJyb3IgY2xlYXIgcmVnaXN0ZXIgKFJXKQo+ICsjZGVm aW5lIFZQTDAxMV9VQVJURlJfT0ZGU0VUICAgIDB4MTggLy8gZmxhZyByZWdpc3RlciAoUk8pCj4g KyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfT0ZGU0VUICAgMHgzYyAvLyByYXcgaW50ZXJydXB0IHN0 YXR1cyByZWdpc3RlciAoUk8pCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfT0ZGU0VUICAgMHg0 MCAvLyBtYXNrZWQgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciAoUk8pCj4gKyNkZWZpbmUgVlBM MDExX1VBUlRJTVNDX09GRlNFVCAgMHgzOCAvLyBpbnRlcnJ1cHQgbWFzayBzZXQvY2xlYXIgcmVn aXN0ZXIgKFJXKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX09GRlNFVCAgIDB4NDQgLy8gaW50 ZXJydXB0IGNsZWFyIHJlZ2lzdGVyIChXTykKPiArI2RlZmluZSBWUEwwMTFfVUFSVENSX09GRlNF VCAgICAweDMwIC8vIHVhcnQgY29udHJvbCByZWdpc3Rlcgo+ICsjZGVmaW5lIFZQTDAxMV9VQVJU RE1BQ1JfT0ZGU0VUIDB4NDggLy8gdWFydCBkbWEgY29udHJvbCByZWdpc3Rlcgo+ICsKPiArLyoK PiArICogY29udHJvbCByZWdpc3RlciBiaXRzIC0gUlcKPiArICovCj4gKyNkZWZpbmUgVlBMMDEx X1VBUlRDUl9VQVJURU5fQklUIDAKPiArI2RlZmluZSBWUEwwMTFfVUFSVENSX1VBUlRFTiAgICAo MTw8VlBMMDExX1VBUlRDUl9VQVJURU5fQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUQ1JfVFhF X0JJVCAgICA4Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRDUl9UWEUgICAgICAgKDE8PFZQTDAxMV9V QVJUQ1JfVFhFX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVENSX1JYRV9CSVQgICAgOQo+ICsj ZGVmaW5lIFZQTDAxMV9VQVJUQ1JfUlhFICAgICAgICgxPDxWUEwwMTFfVUFSVENSX1JYRV9CSVQp Cj4gKwo+ICsvKgo+ICsgKiBGbGFnIHJlZ2lzdGVyIGJpdHMgLSBSTwo+ICsgKi8KPiArI2RlZmlu ZSBWUEwwMTFfVUFSVEZSX0NUU19CSVQgICAwICAgLy8gY2xlYXIgdG8gc2VuZAo+ICsjZGVmaW5l IFZQTDAxMV9VQVJURlJfQ1RTICAgICAgICgxPDxWUEwwMTFfVUFSVEZSX0NUU19CSVQpCj4gKyNk ZWZpbmUgVlBMMDExX1VBUlRGUl9EU1JfQklUICAgMSAgIC8vIGRhdGEgc2V0IHJlYWR5Cj4gKyNk ZWZpbmUgVlBMMDExX1VBUlRGUl9EU1IgICAgICAgKDE8PFZQTDAxMV9VQVJURlJfRFNSX0JJVCkK PiArI2RlZmluZSBWUEwwMTFfVUFSVEZSX0RDRF9CSVQgICAyICAgLy8gZGF0YSBjYXJyaWVyIGRl dGVjdAo+ICsjZGVmaW5lIFZQTDAxMV9VQVJURlJfRENEICAgICAgICgxPDxWUEwwMTFfVUFSVEZS X0RDRF9CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9CVVNZX0JJVCAgMyAgIC8vIHVhcnQg YnVzeQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJURlJfQlVTWSAgICAgICgxPDxWUEwwMTFfVUFSVEZS X0JVU1lfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJURlJfUlhGRV9CSVQgIDQgICAvLyByZWNl aXZlIGZpZm8gZW1wdHkKPiArI2RlZmluZSBWUEwwMTFfVUFSVEZSX1JYRkUgICAgICAoMTw8VlBM MDExX1VBUlRGUl9SWEZFX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVEZSX1RYRkZfQklUICA1 ICAgLy8gdHJhbnNtaXQgZmlmbyBmdWxsCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9UWEZGICAg ICAgKDE8PFZQTDAxMV9VQVJURlJfVFhGRl9CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9S WEZGX0JJVCAgNiAgIC8vIHJlY2VpdmUgZmlmbyBmdWxsCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRG Ul9SWEZGICAgICAgKDE8PFZQTDAxMV9VQVJURlJfUlhGRl9CSVQpCj4gKyNkZWZpbmUgVlBMMDEx X1VBUlRGUl9UWEZFX0JJVCAgNyAgIC8vIHRyYW5zbWl0IGZpZm8gZW1wdHkKPiArI2RlZmluZSBW UEwwMTFfVUFSVEZSX1RYRkUgICAgICAoMTw8VlBMMDExX1VBUlRGUl9UWEZFX0JJVCkKPiArI2Rl ZmluZSBWUEwwMTFfVUFSVEZSX1JJX0JJVCAgICA4ICAgLy8gcmluZyBpbmRpY2F0b3IKPiArI2Rl ZmluZSBWUEwwMTFfVUFSVEZSX1JJICAgICAgICAoMTw8VlBMMDExX1VBUlRGUl9SSV9CSVQpCj4g Kwo+ICsvKgo+ICsgKiBVQVJUIHJhdyBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMgLSBSTwo+ICsgKi8K PiArI2RlZmluZSBWUEwwMTFfVUFSVFJJU19SSVJNSVNfQklUICAwCj4gKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfUklSTUlTICAgICAgKDE8PFZQTDAxMV9VQVJUUklTX1JJUk1JU19CSVQpCj4gKyNk ZWZpbmUgVlBMMDExX1VBUlRSSVNfQ1RTUk1JU19CSVQgMQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJU UklTX0NUU1JNSVMgICAgICgxPDxWUEwwMTFfVUFSVFJJU19DVFNSTUlTX0JJVCkKPiArI2RlZmlu ZSBWUEwwMTFfVUFSVFJJU19EQ0RSTUlTX0JJVCAyCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNf RENEUk1JUyAgICAgKDE8PFZQTDAxMV9VQVJUUklTX0RDRFJNSVNfQklUKQo+ICsjZGVmaW5lIFZQ TDAxMV9VQVJUUklTX0RTUlJNSVNfQklUIDMKPiArI2RlZmluZSBWUEwwMTFfVUFSVFJJU19EU1JS TUlTICAgICAoMTw8VlBMMDExX1VBUlRSSVNfRFNSUk1JU19CSVQpCj4gKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfUlhSSVNfQklUICAgNAo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1JYUklTICAg ICAgICgxPDxWUEwwMTFfVUFSVFJJU19SWFJJU19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRS SVNfVFhSSVNfQklUICAgNQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1RYUklTICAgICAgICgx PDxWUEwwMTFfVUFSVFJJU19UWFJJU19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfUlRS SVNfQklUICAgNgo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1JUUklTICAgICAgICgxPDxWUEww MTFfVUFSVFJJU19SVFJJU19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfRkVSSVNfQklU ICAgNwo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUUklTX0ZFUklTICAgICAgICgxPDxWUEwwMTFfVUFS VFJJU19GRVJJU19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfUEVSSVNfQklUICAgOAo+ ICsjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1BFUklTICAgICAgICgxPDxWUEwwMTFfVUFSVFJJU19Q RVJJU19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfQkVSSVNfQklUICAgOQo+ICsjZGVm aW5lIFZQTDAxMV9VQVJUUklTX0JFUklTICAgICAgICgxPDxWUEwwMTFfVUFSVFJJU19CRVJJU19C SVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfT0VSSVNfQklUICAgMTAKPiArI2RlZmluZSBW UEwwMTFfVUFSVFJJU19PRVJJUyAgICAgICAoMTw8VlBMMDExX1VBUlRSSVNfT0VSSVNfQklUKQo+ ICsKPiArLyoKPiArICogVUFSVCBtYXNrZWQgaW50ZXJydXB0IHN0YXR1cyBiaXRzIC0gUk8KPiAr ICovCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfUklNTUlTX0JJVCAgMAo+ICsjZGVmaW5lIFZQ TDAxMV9VQVJUTUlTX1JJTU1JUyAgICAgICgxPDxWUEwwMTFfVUFSVE1JU19SSU1NSVNfQklUKQo+ ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX0NUU01NSVNfQklUIDEKPiArI2RlZmluZSBWUEwwMTFf VUFSVE1JU19DVFNNTUlTICAgICAoMTw8VlBMMDExX1VBUlRNSVNfQ1RTTU1JU19CSVQpCj4gKyNk ZWZpbmUgVlBMMDExX1VBUlRNSVNfRENETU1JU19CSVQgMgo+ICsjZGVmaW5lIFZQTDAxMV9VQVJU TUlTX0RDRE1NSVMgICAgICgxPDxWUEwwMTFfVUFSVE1JU19EQ0RNTUlTX0JJVCkKPiArI2RlZmlu ZSBWUEwwMTFfVUFSVE1JU19EU1JNTUlTX0JJVCAzCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNf RFNSTU1JUyAgICAgKDE8PFZQTDAxMV9VQVJUTUlTX0RTUk1NSVNfQklUKQo+ICsjZGVmaW5lIFZQ TDAxMV9VQVJUTUlTX1JYTUlTX0JJVCAgIDQKPiArI2RlZmluZSBWUEwwMTFfVUFSVE1JU19SWE1J UyAgICAgICAoMTw8VlBMMDExX1VBUlRNSVNfUlhNSVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9V QVJUTUlTX1RYTUlTX0JJVCAgIDUKPiArI2RlZmluZSBWUEwwMTFfVUFSVE1JU19UWE1JUyAgICAg ICAoMTw8VlBMMDExX1VBUlRNSVNfVFhNSVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlT X1JUTUlTX0JJVCAgIDYKPiArI2RlZmluZSBWUEwwMTFfVUFSVE1JU19SVE1JUyAgICAgICAoMTw8 VlBMMDExX1VBUlRNSVNfUlRNSVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX0ZFTUlT X0JJVCAgIDcKPiArI2RlZmluZSBWUEwwMTFfVUFSVE1JU19GRU1JUyAgICAgICAoMTw8VlBMMDEx X1VBUlRNSVNfRkVNSVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX1BFTUlTX0JJVCAg IDgKPiArI2RlZmluZSBWUEwwMTFfVUFSVE1JU19QRU1JUyAgICAgICAoMTw8VlBMMDExX1VBUlRN SVNfUEVNSVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX0JFTUlTX0JJVCAgIDkKPiAr I2RlZmluZSBWUEwwMTFfVUFSVE1JU19CRU1JUyAgICAgICAoMTw8VlBMMDExX1VBUlRNSVNfQkVN SVNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX09FTUlTX0JJVCAgIDEwCj4gKyNkZWZp bmUgVlBMMDExX1VBUlRNSVNfT0VNSVMgICAgICAgKDE8PFZQTDAxMV9VQVJUTUlTX09FTUlTX0JJ VCkKPiArCj4gKy8qCj4gKyAqIFVBUlQgIGludGVycnVwdCBjbGVhciBiaXRzIC0gV08KPiArICov Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUklNSUNfQklUICAgIDAKPiArI2RlZmluZSBWUEww MTFfVUFSVElDUl9SSU1JQyAgICAgICAgKDE8PFZQTDAxMV9VQVJUSUNSX1JJTUlDX0JJVCkKPiAr I2RlZmluZSBWUEwwMTFfVUFSVElDUl9DVFNNSUNfQklUICAgMQo+ICsjZGVmaW5lIFZQTDAxMV9V QVJUSUNSX0NUU01JQyAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfQ1RTTUlDX0JJVCkKPiArI2Rl ZmluZSBWUEwwMTFfVUFSVElDUl9EQ0RNSUNfQklUICAgMgo+ICsjZGVmaW5lIFZQTDAxMV9VQVJU SUNSX0RDRE1JQyAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfRENETUlDX0JJVCkKPiArI2RlZmlu ZSBWUEwwMTFfVUFSVElDUl9EU1JNSUNfQklUICAgMwo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSUNS X0RTUk1JQyAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfRFNSTUlDX0JJVCkKPiArI2RlZmluZSBW UEwwMTFfVUFSVElDUl9SWElDX0JJVCAgICAgNAo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX1JY SUMgICAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfUlhJQ19CSVQpCj4gKyNkZWZpbmUgVlBMMDEx X1VBUlRJQ1JfVFhJQ19CSVQgICAgIDUKPiArI2RlZmluZSBWUEwwMTFfVUFSVElDUl9UWElDICAg ICAgICAgKDE8PFZQTDAxMV9VQVJUSUNSX1RYSUNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJU SUNSX1JUSUNfQklUICAgICA2Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUlRJQyAgICAgICAg ICgxPDxWUEwwMTFfVUFSVElDUl9SVElDX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVElDUl9G RUlDX0JJVCAgICAgNwo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX0ZFSUMgICAgICAgICAoMTw8 VlBMMDExX1VBUlRJQ1JfRkVJQ19CSVQpCj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUEVJQ19C SVQgICAgIDgKPiArI2RlZmluZSBWUEwwMTFfVUFSVElDUl9QRUlDICAgICAgICAgKDE8PFZQTDAx MV9VQVJUSUNSX1BFSUNfQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX0JFSUNfQklUICAg ICA5Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfQkVJQyAgICAgICAgICgxPDxWUEwwMTFfVUFS VElDUl9CRUlDX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVElDUl9PRUlDX0JJVCAgICAgMTAK PiArI2RlZmluZSBWUEwwMTFfVUFSVElDUl9PRUlDICAgICAgICAgKDE8PFZQTDAxMV9VQVJUSUNS X09FSUNfQklUKQo+ICsKPiArLyoKPiArICogVUFSVCBpbnRlcnJ1cHQgbWFzayBzZXQvY2xlYXIg Yml0cyAtIFJXCj4gKyAqLwo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19SSU1JTV9CSVQgICAw Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX1JJTUlNICAgICAgICgxPDxWUEwwMTFfVUFSVElN U0NfUklNSU1fQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19DVFNNSU1fQklUICAxCj4g KyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX0NUU01JTSAgICAgICgxPDxWUEwwMTFfVUFSVElNU0Nf Q1RTTUlNX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRENETUlNX0JJVCAgIDIKPiAr I2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRENETUlNICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19E Q0RNSU1fQklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19EU1JNSU1fQklUICAzCj4gKyNk ZWZpbmUgVlBMMDExX1VBUlRJTVNDX0RTUk1JTSAgICAgICgxPDxWUEwwMTFfVUFSVElNU0NfRFNS TUlNX0JJVCkKPiArI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfUlhJTV9CSVQgICAgNAo+ICsjZGVm aW5lIFZQTDAxMV9VQVJUSU1TQ19SWElNICAgICAgICAoMTw8VlBMMDExX1VBUlRJTVNDX1JYSU1f QklUKQo+ICsjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19UWElNX0JJVCAgICA1Cj4gKyNkZWZpbmUg VlBMMDExX1VBUlRJTVNDX1RYSU0gICAgICAgICgxPDxWUEwwMTFfVUFSVElNU0NfVFhJTV9CSVQp Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX1JUSU1fQklUICAgIDYKPiArI2RlZmluZSBWUEww MTFfVUFSVElNU0NfUlRJTSAgICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19SVElNX0JJVCkKPiAr I2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRkVJTV9CSVQgICAgNwo+ICsjZGVmaW5lIFZQTDAxMV9V QVJUSU1TQ19GRUlNICAgICAgICAoMTw8VlBMMDExX1VBUlRJTVNDX0ZFSU1fQklUKQo+ICsjZGVm aW5lIFZQTDAxMV9VQVJUSU1TQ19QRUlNX0JJVCAgICA4Cj4gKyNkZWZpbmUgVlBMMDExX1VBUlRJ TVNDX1BFSU0gICAgICAgICgxPDxWUEwwMTFfVUFSVElNU0NfUEVJTV9CSVQpCj4gKyNkZWZpbmUg VlBMMDExX1VBUlRJTVNDX0JFSU1fQklUICAgIDkKPiArI2RlZmluZSBWUEwwMTFfVUFSVElNU0Nf QkVJTSAgICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19CRUlNX0JJVCkKPiArI2RlZmluZSBWUEww MTFfVUFSVElNU0NfT0VJTV9CSVQgICAgMTAKPiArI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfT0VJ TSAgICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19PRUlNX0JJVCkKPiArCj4gKwo+ICsvKgo+ICsg KiBoZWxwZXIgbWFjcm9zCj4gKyAqLwo+ICsjZGVmaW5lIFZQTDAxMV9SSU5HX0RFUFRIKGludGYs ZGlyKSAoKChpbnRmKS0+ZGlyICMjIF9wcm9kIC0gKGludGYpLT5kaXIgIyMgX2NvbnMpKQo+ICsj ZGVmaW5lIFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLGRpcikgKHNpemVvZigoaW50ZiktPmRp ciktMSkKPiArCj4gKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKFZQTDAxMV9S SU5HX0RFUFRIKGludGYsIGluKSA9PSAwKQo+ICsKPiArI2RlZmluZSBWUEwwMTFfT1VUX1JJTkdf RU1QVFkoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIG91dCkgPT0gMCkKPiArCj4gKyNk ZWZpbmUgVlBMMDExX0lOX1JJTkdfRlVMTChpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50Ziwg aW4pID09IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLCBpbikpCj4gKwo+ICsjZGVmaW5lIFZQ TDAxMV9PVVRfUklOR19GVUxMKGludGYpIChWUEwwMTFfUklOR19ERVBUSChpbnRmLCBvdXQpID09 IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLG91dCkpCj4gKwo+ICsjZGVmaW5lIFZQTDAxMV9M T0NLKGQsZmxhZ3MpIHNwaW5fbG9ja19pcnFzYXZlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZs YWdzKQo+ICsjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKPiArCj4gKy8qCj4gKyAqIE1NSU8g cmV0dXJuIHZhbHVlcwo+ICsgKi8KPiArI2RlZmluZSAgICAgVlBMMDExX0VNVUxfT0sgICAgICAx Cj4gKyNkZWZpbmUgICAgIFZQTDAxMV9FTVVMX0ZBSUwgICAgMAo+ICsKPiAraW50IGRvbWFpbl92 cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKPiAraW50IHZwbDAxMV9tYXBfZ3Vlc3RfcGFn ZShzdHJ1Y3QgZG9tYWluICpkKTsKPiAraW50IHZwbDAxMV9yZWFkX2RhdGEoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgY2hhciAqZGF0YSk7Cj4gK2ludCB2cGwwMTFfd3JpdGVfZGF0YShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBjaGFyIGRhdGEpOwo+ICsKPiArI2RlZmluZSBNQVNLX1ZQ TDAxMUNPTlNfSURYKGlkeCwgcmluZykgKChpZHgpICYgKHNpemVvZihyaW5nKS0xKSkgCj4gK3N0 cnVjdCBjb25zb2xlX2ludGVyZmFjZSB7Cj4gKyAgICBjaGFyIGluWzEwMjRdOwo+ICsgICAgY2hh ciBvdXRbMjA0OF07Cj4gKyAgICB1aW50MzJfdCBpbl9jb25zLCBpbl9wcm9kOwo+ICsgICAgdWlu dDMyX3Qgb3V0X2NvbnMsIG91dF9wcm9kOwo+ICt9Owo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9LY29uZmlnCj4gaW5kZXggZjJlY2JjNC4u N2UyZmVhYyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL0tjb25maWcKPiArKysgYi94ZW4vY29t bW9uL0tjb25maWcKPiBAQCAtMjM3LDQgKzIzNywxMCBAQCBjb25maWcgRkFTVF9TWU1CT0xfTE9P S1VQCj4gIAkgIFRoZSBvbmx5IHVzZXIgb2YgdGhpcyBpcyBMaXZlIHBhdGNoaW5nLgo+ICAKPiAg CSAgSWYgdW5zdXJlLCBzYXkgWS4KPiArCj4gK2NvbmZpZyBWUEwwMTFfQ09OU09MRQo+ICsJYm9v bCAiRW11bGF0ZWQgcGwwMTEgY29uc29sZSBzdXBwb3J0Igo+ICsJZGVmYXVsdCB5CgpJIHRob3Vn aHQgYnkgZGVmYXVsdCBpdCB3b3VsZCBiZSAnbic/CgpPciBwZXJoYXBzIGRlZmF1bHkgeSBpZiBD T05GSUdfQVJNIG9yIHN1Y2g/Cgo+ICsJLS0taGVscC0tLQo+ICsJICBBbGxvd3MgYSBndWVzdCB0 byB1c2UgcGwwMTEgVUFSVCBhcyBhIGNvbnNvbGUKPiAgZW5kbWVudQo+IGRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aAo+IGluZGV4IDJkNmZiYjEuLmZmMjQwM2EgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNt LWFybS9kb21haW4uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPiBAQCAt NDAsNiArNDAsNyBAQCBzdHJ1Y3QgdnRpbWVyIHsKPiAgICAgICAgICB1aW50NjRfdCBjdmFsOwo+ ICB9Owo+ICAKPiArCgo/Pwo+ICBzdHJ1Y3QgYXJjaF9kb21haW4KPiAgewo+ICAjaWZkZWYgQ09O RklHX0FSTV82NAo+IEBAIC0xMzEsNiArMTMyLDIwIEBAIHN0cnVjdCBhcmNoX2RvbWFpbgo+ICAg ICAgc3RydWN0IHsKPiAgICAgICAgICB1aW50OF90IHByaXZpbGVnZWRfY2FsbF9lbmFibGVkIDog MTsKPiAgICAgIH0gbW9uaXRvcjsKPiArCj4gKyNpZmRlZiBDT05GSUdfVlBMMDExX0NPTlNPTEUK PiArICAgIHN0cnVjdCB2cGwwMTEgewo+ICsgICAgICAgIHZvaWQgKnJpbmdfYnVmOwo+ICsgICAg ICAgIHN0cnVjdCBwYWdlX2luZm8gKnJpbmdfcGFnZTsKPiArICAgICAgICB1aW50MzJfdCAgICBm bGFnOyAgICAgICAgICAgICAgIC8qIGZsYWcgcmVnaXN0ZXIgKi8KPiArICAgICAgICB1aW50MzJf dCAgICBjb250cm9sOyAgICAgICAgICAgIC8qIGNvbnRyb2wgcmVnaXN0ZXIgKi8KPiArICAgICAg ICB1aW50MzJfdCAgICBpbnRyX21hc2s7ICAgICAgICAgIC8qIGludGVycnVwdCBtYXNrIHJlZ2lz dGVyKi8KPiArICAgICAgICB1aW50MzJfdCAgICBpbnRyX2NsZWFyOyAgICAgICAgIC8qIGludGVy cnVwdCBjbGVhciByZWdpc3RlciAqLwo+ICsgICAgICAgIHVpbnQzMl90ICAgIHJhd19pbnRyX3N0 YXR1czsgICAgLyogcmF3IGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KPiArICAgICAgICB1 aW50MzJfdCAgICBtYXNrZWRfaW50cl9zdGF0dXM7IC8qIG1hc2tlZCBpbnRlcnJ1cHQgcmVnaXN0 ZXIgKi8KPiArICAgICAgICBzcGlubG9ja190ICBsb2NrOwo+ICsgICAgfSB2cGwwMTE7Cj4gKyNl bmRpZgo+ICB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwo+ICAKPiAgc3RydWN0IGFyY2hfdmNwdQo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmNoLWFybS5oCj4gaW5kZXggYmQ5NzRmYi4uMWQ0NTQ4ZiAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9hcmNoLWFybS5oCj4gQEAgLTQxMCw2ICs0MTAsMTAgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5f Y2FsbGJhY2tfdDsKPiAgI2RlZmluZSBHVUVTVF9BQ1BJX0JBU0UgMHgyMDAwMDAwMFVMTAo+ICAj ZGVmaW5lIEdVRVNUX0FDUElfU0laRSAweDAyMDAwMDAwVUxMCj4gIAo+ICsvKiBQTDAxMSBtYXBw aW5ncyAqLwo+ICsjZGVmaW5lIEdVRVNUX1BMMDExX0JBU0UgICAgMHgyMjAwMDAwMFVMTAo+ICsj ZGVmaW5lIEdVRVNUX1BMMDExX1NJWkUgICAgMHgwMDAwMTAwMFVMTAo+ICsKPiAgLyoKPiAgICog MTZNQiA9PSA0MDk2IHBhZ2VzIHJlc2VydmVkIGZvciBndWVzdCB0byB1c2UgYXMgYSByZWdpb24g dG8gbWFwIGl0cwo+ICAgKiBncmFudCB0YWJsZSBpbi4KPiBAQCAtNDIwLDYgKzQyNCw3IEBAIHR5 cGVkZWYgdWludDY0X3QgeGVuX2NhbGxiYWNrX3Q7Cj4gICNkZWZpbmUgR1VFU1RfTUFHSUNfQkFT RSAgeGVuX21rX3VsbG9uZygweDM5MDAwMDAwKQo+ICAjZGVmaW5lIEdVRVNUX01BR0lDX1NJWkUg IHhlbl9ta191bGxvbmcoMHgwMTAwMDAwMCkKPiAgCj4gKwoKPz8/Cj4gICNkZWZpbmUgR1VFU1Rf UkFNX0JBTktTICAgMgo+ICAKPiAgI2RlZmluZSBHVUVTVF9SQU0wX0JBU0UgICB4ZW5fbWtfdWxs b25nKDB4NDAwMDAwMDApIC8qIDNHQiBvZiBsb3cgUkFNIEAgMUdCICovCj4gLS0gCj4gMi43LjQK PiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+IGh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=