From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Tue, 20 Aug 2019 10:30:46 +0200 Message-ID: <20190820083046.GA11147@phenom.ffwll.local> References: <1d48919c-e876-152c-0f05-64eb4c62fcaf@samsung.com> <20190711131816.GM15868@phenom.ffwll.local> <6bbb03e6-0228-a3ea-f1bb-8ed6e52114d7@samsung.com> <20190711155035.GO15868@phenom.ffwll.local> <7797e98a-9587-b501-9869-9393b6fc6bd2@samsung.com> <20190716090039.GW15868@phenom.ffwll.local> <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> <20190808193214.GA6055@pendragon.ideasonboard.com> <20190814123510.GC7444@phenom.ffwll.local> <20190819223209.GV5011@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 04C106E781 for ; Tue, 20 Aug 2019 08:30:58 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id h8so5378823edv.7 for ; Tue, 20 Aug 2019 01:30:57 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190819223209.GV5011@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjAsIDIwMTkgYXQgMDE6MzI6MDlBTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBEYW5pZWwsCj4gCj4gT24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMDI6MzU6 MTBQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9uIFRodSwgQXVnIDA4LCAyMDE5 IGF0IDEwOjMyOjE0UE0gKzAzMDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+IE9uIFR1 ZSwgSnVsIDE2LCAyMDE5IGF0IDAzOjU3OjIxUE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6 Cj4gPiA+PiBPbiAxNi4wNy4yMDE5IDExOjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPj4+ IE9uIEZyaSwgSnVsIDEyLCAyMDE5IGF0IDExOjAxOjM4QU0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEg d3JvdGU6Cj4gPiA+Pj4+IE9uIDExLjA3LjIwMTkgMTc6NTAsIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gPiA+Pj4+PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBhdCAwNToxMjoyNlBNICswMjAwLCBBbmRy emVqIEhhamRhIHdyb3RlOgo+ID4gPj4+Pj4+IE9uIDExLjA3LjIwMTkgMTU6MTgsIERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gPiA+Pj4+Pj4+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDAyOjQxOjAx UE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPiA+Pj4+Pj4+PiBPbiAxMS4wNy4yMDE5 IDA5OjM1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPj4+Pj4+Pj4+IE9uIFdlZCwgSnVsIDEw LCAyMDE5IGF0IDAyOjEyOjE0UE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPiA+Pj4+ Pj4+Pj4+IEhpIExhdXJlbnQsCj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IEkgbGlrZSB0 aGUgYXBwcm9hY2gsIGN1cnJlbnQgcHJhY3RpY2Ugd2hlbiBhbG1vc3QgZXZlcnkgYnJpZGdlIHNo b3VsZAo+ID4gPj4+Pj4+Pj4+PiBvcHRpb25hbGx5IGltcGxlbWVudCBjb25uZWN0b3IsIG9yIGFs dGVybmF0aXZlbHkgZG93bnN0cmVhbSBicmlkZ2Ugb3IKPiA+ID4+Pj4+Pj4+Pj4gcGFuZWwgaXMg dmVyeSBwYWluZnVsLgo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gWWVhaCBJIHRoaW5rIHRo aXMgbG9va3MgbW9zdGx5IHJlYXNvbmFibGUuIFNvbWUgYXBpIGRlc2lnbiBjb21tZW50cyBvbiB0 b3AKPiA+ID4+Pj4+Pj4+PiBvZiBBbmRyemVqJywgd2l0aCB0aGUgZmFpciB3YXJuaW5nIHRoYXQg SSBkaWRuJ3QgYm90aGVyIHRvIHJlYWQgdXAgb24gaG93Cj4gPiA+Pj4+Pj4+Pj4gaXQncyBhbGwg dXNlZCBpbiB0aGUgZW5kLiBJIHByb2JhYmx5IHNob3VsZCBnbyBhbmQgZG8gdGhhdCwgYXQgbGVh c3QgdG8KPiA+ID4+Pj4+Pj4+PiBnZXQgYSBmZWVsaW5nIGZvciB3aGF0IHlvdXIgaHBkX2NiIHVz dWFsbHkgZG9lcy4KPiA+ID4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+PiBNb3JlIGNvbW1lbnRzIGlu bGluZWQuCj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IE9uIDA3LjA3LjIwMTkgMjA6MTgs IExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+PiBUbyBzdXBwb3J0IGltcGxl bWVudGF0aW9uIG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+ID4gPj4+ Pj4+Pj4+Pj4gaW5zdGVhZCBvZiBieSBicmlkZ2VzLCB0aGUgZHJtX2JyaWRnZSBuZWVkcyB0byBl eHBvc2UgbmV3IG9wZXJhdGlvbnMgYW5kCj4gPiA+Pj4+Pj4+Pj4+PiBkYXRhOgo+ID4gPj4+Pj4+ Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+IC0gT3V0cHV0IGRldGVjdGlvbiwgaG90LXBsdWcgbm90aWZp Y2F0aW9uLCBtb2RlIHJldHJpZXZhbCBhbmQgRURJRAo+ID4gPj4+Pj4+Pj4+Pj4gICByZXRyaWV2 YWwgb3BlcmF0aW9ucwo+ID4gPj4+Pj4+Pj4+Pj4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBvcGVy YXRpb25zCj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IFdoeSBkbyB3ZSBuZWVkIHRoZXNl IGJpdG1hc2sgYXQgYWxsPyBXaHkgY2Fubm90IHdlIHJlbHkgb24gcHJlc2VuY2Ugb2YKPiA+ID4+ Pj4+Pj4+Pj4gb3BlcmF0aW9uJ3MgY2FsbGJhY2s/Cj4gPiA+Pj4+Pj4+Pj4gWWVhaCBhbHNvIG5v dCBhIGh1Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBTbWVsbHMgbGlrZQo+ID4gPj4+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+Pj4gRFJJVkVSX0dFTXxEUklWRVJfTU9ERVNFVCwgYW5kIEkgcGVyc29uYWxs eSByZWFsbHkgaGF0ZSB0aG9zZS4gRWFzeSB0bwo+ID4gPj4+Pj4+Pj4+IGFkZCwgZ2VuZXJhbGx5 IGdvb2QgZXhjdXNlIHRvIG5vdCBoYXZlIHRvIHRoaW5rIHRocm91Z2ggdGhlIGRlc2lnbiBiZXR3 ZWVuCj4gPiA+Pj4+Pj4+Pj4gZGlmZmVyZW50IHBhcnRzIG9mIGRyaXZlcnMgLSAianVzdCIgYWRk IGFub3RoZXIgZmxhZy4KPiA+ID4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gLSBCcmlkZ2Ugb3V0 cHV0IHR5cGUKPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiBBZGQgYW5kIGRvY3VtZW50 IHRoZXNlLgo+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+IFRocmVlIG5ldyBicmlkZ2Ug aGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBhZGRlZCB0byBoYW5kbGUgaG90IHBsdWcKPiA+ID4+ Pj4+Pj4+Pj4+IG5vdGlmaWNhdGlvbiBpbiBhIHdheSB0aGF0IGlzIGFzIHRyYW5zcGFyZW50IGFz IHBvc3NpYmxlIGZvciB0aGUKPiA+ID4+Pj4+Pj4+Pj4+IGJyaWRnZXMuCj4gPiA+Pj4+Pj4+Pj4+ Cj4gPiA+Pj4+Pj4+Pj4+IERvY3VtZW50YXRpb24gb2YgbmV3IG9wc2VzIGRvZXMgbm90IGV4cGxh aW4gaG93IGl0IHNob3VsZCBjb29wZXJhdGUgd2l0aAo+ID4gPj4+Pj4+Pj4+PiBicmlkZ2UgY2hh aW5pbmcsIEkgc3VwcG9zZSB0aGV5IHNob3VsZCBiZSBjaGFpbmVkIGV4cGxpY2l0bHksIGFtIEkK PiA+ID4+Pj4+Pj4+Pj4gcmlnaHQ/IE1vcmUgY29tbWVudHMgYWJvdXQgaXQgbGF0ZXIuCj4gPiA+ Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0 IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gPiA+Pj4+Pj4+Pj4+PiAtLS0K PiA+ID4+Pj4+Pj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIHwgIDkyICsrKysr KysrKysrKysrKysrKysKPiA+ID4+Pj4+Pj4+Pj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgg ICAgIHwgMTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiA+Pj4+Pj4+ Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4gPj4+Pj4+ Pj4+Pj4gaW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJhMjU1ZGY3YWYgMTAwNjQ0Cj4gPiA+Pj4+Pj4+ Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPiA+Pj4+Pj4+Pj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPiA+Pj4+Pj4+Pj4+PiBAQCAtNzAs NiArNzAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGJyaWRnZV9saXN0KTsKPiA+ID4+Pj4+Pj4+Pj4+ ICAgKi8KPiA+ID4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpCj4gPiA+Pj4+Pj4+Pj4+PiAgewo+ID4gPj4+Pj4+Pj4+Pj4gKwltdXRleF9p bml0KCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+ PiAgCW11dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPiA+ID4+Pj4+Pj4+Pj4+ICAJbGlzdF9hZGRf dGFpbCgmYnJpZGdlLT5saXN0LCAmYnJpZGdlX2xpc3QpOwo+ID4gPj4+Pj4+Pj4+Pj4gIAltdXRl eF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPiA+ID4+Pj4+Pj4+Pj4+IEBAIC04Niw2ICs4OCw4IEBA IHZvaWQgZHJtX2JyaWRnZV9yZW1vdmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ID4+ Pj4+Pj4+Pj4+ICAJbXV0ZXhfbG9jaygmYnJpZGdlX2xvY2spOwo+ID4gPj4+Pj4+Pj4+Pj4gIAls aXN0X2RlbF9pbml0KCZicmlkZ2UtPmxpc3QpOwo+ID4gPj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxv Y2soJmJyaWRnZV9sb2NrKTsKPiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ICsJbXV0 ZXhfZGVzdHJveSgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4gIH0KPiA+ID4+ Pj4+Pj4+Pj4+ICBFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcmVtb3ZlKTsKPiA+ID4+Pj4+Pj4+ Pj4+ICAKPiA+ID4+Pj4+Pj4+Pj4+IEBAIC00NjMsNiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0b21p Y19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4+Pj4+Pj4+ PiAgfQo+ID4gPj4+Pj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5h YmxlKTsKPiA+ID4+Pj4+Pj4+Pj4+ICAKPiA+ID4+Pj4+Pj4+Pj4+ICsvKioKPiA+ID4+Pj4+Pj4+ Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9u IGZvciB0aGUgYnJpZGdlCj4gPiA+Pj4+Pj4+Pj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRy b2wgc3RydWN0dXJlCj4gPiA+Pj4+Pj4+Pj4+PiArICogQGNiOiBob3QtcGx1ZyBkZXRlY3Rpb24g Y2FsbGJhY2sKPiA+ID4+Pj4+Pj4+Pj4+ICsgKiBAZGF0YTogZGF0YSB0byBiZSBwYXNzZWQgdG8g dGhlIGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4gPj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+ Pj4+Pj4+Pj4+PiArICogQ2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGFuZCByZWdp c3RlciB0aGUgZ2l2ZW4gQGNiIGFuZCBAZGF0YSBhcwo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIGhvdCBw bHVnIG5vdGlmaWNhdGlvbiBjYWxsYmFjay4gRnJvbSBub3cgb24gdGhlIEBjYiB3aWxsIGJlIGNh bGxlZCB3aXRoCj4gPiA+Pj4+Pj4+Pj4+PiArICogQGRhdGEgd2hlbiBhbiBvdXRwdXQgc3RhdHVz IGNoYW5nZSBpcyBkZXRlY3RlZCBieSB0aGUgYnJpZGdlLCB1bnRpbCBob3QgcGx1Zwo+ID4gPj4+ Pj4+Pj4+Pj4gKyAqIG5vdGlmaWNhdGlvbiBnZXRzIGRpc2FibGVkIHdpdGggZHJtX2JyaWRnZV9o cGRfZGlzYWJsZSgpLgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+Pj4+Pj4+Pj4+PiArICogSG90 IHBsdWcgZGV0ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQ RCBmbGFnIGlzIHNldCBpbgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBUaGlzIGZ1 bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0Lgo+ID4g Pj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+Pj4+Pj4+Pj4+PiArICogT25seSBvbmUgaG90IHBsdWcgZGV0 ZWN0aW9uIGNhbGxiYWNrIGNhbiBiZSByZWdpc3RlcmVkIGF0IGEgdGltZSwgaXQgaXMgYW4KPiA+ ID4+Pj4+Pj4+Pj4+ICsgKiBlcnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBob3QgcGx1 ZyBkZXRlY3Rpb24gaXMgYWxyZWFkeSBlbmFibGVkIGZvcgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIHRo ZSBicmlkZ2UuCj4gPiA+Pj4+Pj4+Pj4+PiArICovCj4gPiA+Pj4+Pj4+Pj4+IFRvIHNpbXBsaWZ5 IGFyY2hpdGVjdHVyZSBtYXliZSB3b3VsZCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGhwZCBqdXN0IG9u Cj4gPiA+Pj4+Pj4+Pj4+IGJyaWRnZSBhdHRhY2g6Cj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+ Pj4+IGJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IGJy aWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4gPj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+PiByZXQg PSBkcm1fYnJpZGdlX2F0dGFjaCguLi4pOwo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gWWVh aCBJIGxpa2UgdGhpcyBtb3JlLiBUaGUgb3RoZXIgcHJvYmxlbSBoZXJlIGlzLCB3aGF0IGlmIHlv dSBuZWVkIG1vcmUKPiA+ID4+Pj4+Pj4+PiB0aGFuIDEgY2FsbGJhY2sgcmVnaXN0ZXJzIG9uIHRo ZSBzYW1lIGJyaWRnZSBoZHAgc2lnbmFsPwo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IFRo aXMgd2F5IHdlIGNvdWxkIGF2b2lkIGFkZGluZyBuZXcgY2FsbGJhY2tzIGhwZF8oZW5hYmxlfGRp c2FibGUpCj4gPiA+Pj4+Pj4+Pj4+IHdpdGhvdXQgYmlnIHNhY3JpZmljZXMuCj4gPiA+Pj4+Pj4+ Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IE9uZSBtb3JlIHRoaW5nOiBIUEQgaW4gRGlzcGxheVBvcnQvSERN SSBiZXNpZGUgc2lnbmFsbGluZyBwbHVnL3VucGx1ZywKPiA+ID4+Pj4+Pj4+Pj4gbm90aWZpZXMg YWJvdXQgc2luayBzdGF0dXMgY2hhbmdlLCBob3cgaXQgdHJhbnNsYXRlcyB0byB0aGlzIGNiPwo+ ID4gPj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAo KmNiKSh2b2lkICpkYXRhLAo+ID4gPj4+Pj4+Pj4+Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb25u ZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4gPiA+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAqZGF0YSkK PiA+ID4+Pj4+Pj4+Pj4+ICt7Cj4gPiA+Pj4+Pj4+Pj4+PiArCWlmICghYnJpZGdlIHx8ICFicmlk Z2UtPmZ1bmNzLT5ocGRfZW5hYmxlKQo+ID4gPj4+Pj4+Pj4+Pj4gKwkJcmV0dXJuOwo+ID4gPj4+ Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRl eCk7Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiArCWlmIChXQVJOKGJyaWRnZS0+ aHBkX2NiLCAiSG90IHBsdWcgZGV0ZWN0aW9uIGFscmVhZHkgZW5hYmxlZFxuIikpCj4gPiA+Pj4+ Pj4+Pj4+PiArCQlnb3RvIHVubG9jazsKPiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ ICsJYnJpZGdlLT5ocGRfY2IgPSBjYjsKPiA+ID4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfZGF0 YSA9IGRhdGE7Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ZnVu Y3MtPmhwZF9lbmFibGUoYnJpZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ ICt1bmxvY2s6Cj4gPiA+Pj4+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0 ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4gK30KPiA+ID4+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQ TChkcm1fYnJpZGdlX2hwZF9lbmFibGUpOwo+ID4gPj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+ Pj4gKy8qKgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUgLSBkaXNh YmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4gPj4+Pj4+Pj4+Pj4gKyAq IEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4gPj4+Pj4+Pj4+Pj4gKyAqCj4g PiA+Pj4+Pj4+Pj4+PiArICogQ2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZGlzYWJsZSBhbmQg dW5yZWdpc3RlciB0aGUgaG90IHBsdWcgZGV0ZWN0aW9uCj4gPiA+Pj4+Pj4+Pj4+PiArICogY2Fs bGJhY2sgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCku IE9uY2UgdGhpcwo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNhbGxi YWNrIHdpbGwgbm90IGJlIGNhbGxlZCBieSB0aGUgYnJpZGdlIHdoZW4gYW4KPiA+ID4+Pj4+Pj4+ Pj4+ICsgKiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBvY2N1cnMuCj4gPiA+Pj4+Pj4+Pj4+PiArICoK PiA+ID4+Pj4+Pj4+Pj4+ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3VwcG9ydGVkIG9ubHkg aWYgdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4gPiA+Pj4+Pj4+Pj4+PiAr ICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90IGJlIGNhbGxlZCB3aGVuIHRo ZSBmbGFnIGlzIG5vdCBzZXQuCj4gPiA+Pj4+Pj4+Pj4+PiArICovCj4gPiA+Pj4+Pj4+Pj4+PiAr dm9pZCBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4g PiA+Pj4+Pj4+Pj4+PiArewo+ID4gPj4+Pj4+Pj4+Pj4gKwlpZiAoIWJyaWRnZSB8fCAhYnJpZGdl LT5mdW5jcy0+aHBkX2Rpc2FibGUpCj4gPiA+Pj4+Pj4+Pj4+PiArCQlyZXR1cm47Cj4gPiA+Pj4+ Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4 KTsKPiA+ID4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5mdW5jcy0+aHBkX2Rpc2FibGUoYnJpZGdlKTsK PiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfY2IgPSBOVUxM Owo+ID4gPj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0gTlVMTDsKPiA+ID4+Pj4+Pj4+ Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+Pj4+Pj4+Pj4+PiAr fQo+ID4gPj4+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBkX2Rpc2Fi bGUpOwo+ID4gPj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4gKy8qKgo+ID4gPj4+Pj4+Pj4+ Pj4gKyAqIGRybV9icmlkZ2VfaHBkX25vdGlmeSAtIG5vdGlmeSBob3QgcGx1ZyBkZXRlY3Rpb24g ZXZlbnRzCj4gPiA+Pj4+Pj4+Pj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0 dXJlCj4gPiA+Pj4+Pj4+Pj4+PiArICogQHN0YXR1czogb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVz Cj4gPiA+Pj4+Pj4+Pj4+PiArICoKPiA+ID4+Pj4+Pj4+Pj4+ICsgKiBCcmlkZ2UgZHJpdmVycyBz aGFsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcmVwb3J0IGhvdCBwbHVnIGV2ZW50cyB3aGVuIHRo ZXkKPiA+ID4+Pj4+Pj4+Pj4+ICsgKiBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIG91dHB1dCBzdGF0 dXMsIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGhhcyBiZWVuCj4gPiA+Pj4+Pj4+Pj4+PiArICog ZW5hYmxlZCBieSB0aGUgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBjYWxsYmFjay4KPiA+ ID4+Pj4+Pj4+Pj4+ICsgKgo+ID4gPj4+Pj4+Pj4+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hhbGwg YmUgY2FsbGVkIGluIGEgY29udGV4dCB0aGF0IGNhbiBzbGVlcC4KPiA+ID4+Pj4+Pj4+Pj4+ICsg Ki8KPiA+ID4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+Pj4+Pj4+Pj4gKwkJCSAgIGVudW0gZHJtX2Nvbm5lY3Rv cl9zdGF0dXMgc3RhdHVzKQo+ID4gPj4+Pj4+Pj4+Pj4gK3sKPiA+ID4+Pj4+Pj4+Pj4+ICsJbXV0 ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4gKwlpZiAoYnJpZGdl LT5ocGRfY2IpCj4gPiA+Pj4+Pj4+Pj4+PiArCQlicmlkZ2UtPmhwZF9jYihicmlkZ2UtPmhwZF9k YXRhLCBzdGF0dXMpOwo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gU28gdGhpcyBpc24ndCBx dWl0ZSB3aGF0IEkgaGFkIGluIG1pbmQuIEluc3RlYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKPiA+ ID4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+IAkvKiBpdGVyYXRlcyBvdmVyIGFsbCBicmlkZ2VzIGlu IHRoZSBjaGFpbiBjb250YWluaW5nIEBicmlkZ2UgKi8KPiA+ID4+Pj4+Pj4+PiAJZm9yX2VhY2hf YnJpZGdlKHRtcF9icmlkZ2UsIGJyaWRnZSkgewo+ID4gPj4+Pj4+Pj4+IAkJaWYgKHRtcF9icmlk Z2UgPT0gYnJpZGdlKQo+ID4gPj4+Pj4+Pj4+IAkJCWNvbnRpbnVlOwo+ID4gPj4+Pj4+Pj4+IAkJ aWYgKGJyaWRnZS0+aHBkX25vdGlmeSk7Cj4gPiA+Pj4+Pj4+Pj4gCQkJYnJpZGdlLT5ocGRfbm90 aWZ5KHRtcF9icmlkZ2UsIGJyaWRnZSwgc3RhdHVzKTsKPiA+ID4+Pj4+Pj4+PiAJfQo+ID4gPj4+ Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gCWVuY29kZXIgPSBlbmNvZGVyX2Zvcl9icmlkZ2UoYnJpZGdl KTsKPiA+ID4+Pj4+Pj4+PiAJaWYgKGVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBk X25vdGlmeSkKPiA+ID4+Pj4+Pj4+PiAJCWVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5icmlkZ2Vf aHBkX25vdGlmeShlbmNvZGVyLCBicmlkZ2UsIHN0YXR1cyk7Cj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+ Pj4+Pj4+PiAJZGV2ID0gYnJpZGdlLT5kZXYKPiA+ID4+Pj4+Pj4+PiAJaWYgKGRldi0+bW9kZV9j b25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4gPj4+Pj4+Pj4+IAkJ ZGV2LT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZGV2LCBi cmlkZ2UsIHN0YXR1cykKPiA+ID4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+IE5vIHJlZ2lzdGVyIGNh bGxiYWNrIG5lZWRlZCwgbm8gbG9ja2luZyBuZWVkZWQsIGV2ZXJ5b25lIGdldHMgZXhhY3RseSB0 aGUKPiA+ID4+Pj4+Pj4+PiBocGQgdGhleSB3YW50L25lZWQuCj4gPiA+Pj4+Pj4+Pgo+ID4gPj4+ Pj4+Pj4gQXMgSSB1bmRlcnN0YW5kIHlvdSB3YW50IHRvIG5vdGlmeSBldmVyeSBtZW1iZXIgb2Yg dGhlIHBpcGVsaW5lLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+IEkgdGhpbmsgaXQgc2hvdWxk IGJlIGVub3VnaCB0byBub3RpZnkgb25seSB0aGUgc291cmNlLCBhbmQgdGhlbiBzb3VyY2UKPiA+ ID4+Pj4+Pj4+IHNob3VsZCBkZWNpZGUgaWYvd2hlbiB0aGUgaHBkIHNob3VsZCBiZSBwcm9wYWdh dGVkIHVwc3RyZWFtLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+IEl0IGxvb2tzIG1vcmUgZ2Vu ZXJpYyBmb3IgbWUuCj4gPiA+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+IEknbSBub3QgcGFyc2luZyAuLi4g ZG8geW91IHRoaW5rIG15IGlkZWEgaXMgbW9yZSBnZW5lcmljIGFuZCB1c2VmdWwsIG9yCj4gPiA+ Pj4+Pj4+IHRoZSBvbmUgZnJvbSBMYXVyZW50PyBLaW5kYSBjb25mdXNlZCBoZXJlLgo+ID4gPj4+ Pj4+Cj4gPiA+Pj4+Pj4gUmVnYXJkaW5nIGdlbmVyYWwgaWRlYToKPiA+ID4+Pj4+Pgo+ID4gPj4+ Pj4+IDEuIExhdXJlbnQncyBhcHByb2FjaCBpcyB0byBub3RpZnkgb25seSBjb25zdW1lciwgSSBn dWVzcyB1c3VhbGx5IHZpZGVvCj4gPiA+Pj4+Pj4gc291cmNlLgo+ID4gPj4+Pj4+Cj4gPiA+Pj4+ Pj4gMi4gWW91ciBpcyB0byBub3RpZnkgYWxsIG90aGVyIGJyaWRnZXMgYW5kIGVuY29kZXIuCj4g PiA+Pj4+Pj4KPiA+ID4+Pj4+PiBBbmQgSSBwcmVmZXIgMXN0IGFwcHJvYWNoLCB3aHk6Cj4gPiA+ Pj4+Pj4KPiA+ID4+Pj4+PiAtIHRoZSBzb3VyY2UgY2FuIGRlY2lkZSBpZi93aGVuIGFuZCB0byB3 aG8gcHJvcGFnYXRlIHRoZSBzaWduYWwsCj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiAtIGlzIG1vcmUg Z2VuZXJpYywgZm9yIGV4YW1wbGUgaWYgYnJpZGdlIHNlbmQgc2lnbmFsIHRvIHR3bwo+ID4gPj4+ Pj4+IG1vbml0b3JzL3BhbmVscywgaXQgY2FuIGRlbGF5IGhwZCBwcm9wYWdhdGlvbiB0aWxsIGJv dGggc2lua3MgYXJlIHByZXNlbnQsCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gV2l0aCBMYXVyZW50J3Mg YXBwcm9hY2ggdGhlIGJyaWRnZSBjYW5ub3Qgc2VuZCB0aGUgaHBkIHRvIG1vcmUgdGhhbiBvbmUK PiA+ID4+Pj4+IGNvbnN1bWVyLiBUaGVyZSdzIG9ubHkgMSBjYWxsYmFjay4gU28geW91J3JlIGV4 YW1wbGUgZG9lc24ndCB3b3JrLgo+ID4gPj4+Pgo+ID4gPj4+PiBJZiB0aGVyZSB3aWxsIGJlIHR3 byBjb25zdW1lcnMsIHRoZXJlIHdpbGwgYmUgdHdvIGJyaWRnZSBhdHRhY2htZW50cywKPiA+ID4+ Pj4gdGh1cyB0aGVyZSB3aWxsIGJlIHR3byBub3RpZmljYXRpb25zLCBpdCBzaG91bGQgd29yay4K PiA+ID4+Pgo+ID4gPj4+IDIgY29uc3VtZXJzLCAxIHByb2R1Y2VyLiBUaGVyZSdzIG9ubHkgX29u ZV8gY2FsbGJhY2sgaW4gdGhlIHByb2R1Y2VyLiBUaGUKPiA+ID4+PiBjYWxsYmFjayBpcyByZWdp c3RlcmVkIG9uIHRoZSBwcm9kdWNlIGJyaWRnZSwgbm90IG9uIHRoZSBjb25zdW1lciBicmlkZ2UK PiA+ID4+PiAob3IgSSdtIHRvdGFsbGx5IG1pc3JlYWRpbmcgd2hhdCBMYXVyZW50IGRvZXMgaGVy ZSkuCj4gPiA+PiAKPiA+ID4+IEkgaGF2ZSBhc3N1bWVkIHRoYXQgaWYgZGV2aWNlcyBleHBvc2Vz IHR3byBoYXJkd2FyZSBzaW5rIGludGVyZmFjZXMgaXQKPiA+ID4+IHdpbGwgZXhwb3NlIHR3byBz ZXBhcmF0ZSBicmlkZ2VzIC0gb2YgY291cnNlIGl0IHdpbGwgbm90IHdvcmsgd2l0aAo+ID4gPj4g ImJyaWRnZSBjaGFpbmluZyIgdGhpbmcsIGJ1dCB0aGlzIGlzIGEgZGlmZmVyZW50IHN0b3J5Lgo+ ID4gPiAKPiA+ID4gRGFuaWVsIGlzIHJpZ2h0IHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp b24gb25seSBhbGxvd3Mgb25lCj4gPiA+IGNvbnN1bWVyLiBUaGlzIGlzIGhvd2V2ZXIgbm90IGEg bGltaXRhdGlvbiBvZiB0aGUgQVBJLCBidXQgb2YgaXRzCj4gPiA+IGltcGxlbWVudGF0aW9uLCBh cyBJIG9ubHkgbmVlZGVkIGEgc2luZ2xlIGNvbnN1bWVyLiBUaGUgaGVscGVycyBpbiB0aGlzCj4g PiA+IHNlcmllcyBlbnN1cmUgdGhhdCBuZWl0aGVyIHRoZSBjb25zdW1lciBub3IgdGhlIHByb2R1 Y2VyIHBva2UgaW4gdGhlCj4gPiA+IGRybV9icmlkZ2Ugc3RydWN0dXJlIHRvIGNhbGwgYmFjayB0 byB0aGUgSFBEIGhhbmRsZXI6Cj4gPiA+IAo+ID4gPiAtIFRoZSBjb25zdW1lciBjYWxscyBkcm1f YnJpZGdlX2hwZF9lbmFibGUoKSBhbmQKPiA+ID4gICBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKCks IHdoaWNoIGNvdWxkIG9mZmVyIGEgcmVmZXJlbmNlLWNvdW50ZWQKPiA+ID4gICBiZWhhdmlvdXIg aWYgZGVzaXJlZCB3aXRob3V0IGNoYW5nZXMgdG8gdGhlIGNvbnN1bWVyLgo+ID4gPiAKPiA+ID4g LSBUaGUgcHJvZHVjZXIgZ2V0cyBjb25maWd1cmVkIGJ5IC5ocGRfZW5hYmxlKCkgYW5kIC5ocGRf ZGlzYWJsZSgpLAo+ID4gPiAgIHdoaWNoIGNvdWxkIGFsc28gZWFzaWx5IGFjY29tbW9kYXRlIHJl ZmVyZW5jZS1jb3VudGluZyBpbiB0aGUgZHJtCj4gPiA+ICAgYnJpZGdlIGNvcmUgd2l0aG91dCBj aGFuZ2VzIHRvIHRoZSBwcm9kdWNlci4KPiA+ID4gCj4gPiA+IC0gVGhlIHByb2R1Y2VyIG5vdGlm aWVzIEhQRCB3aXRoIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpLCB3aGljaCBjb3VsZAo+ID4gPiAg IGVhc2lseSBiZSBleHRlbmRlZCB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnN1bWVycyB3aXRob3V0 IGNoYW5nZXMgdG8KPiA+ID4gICB0aGUgcHJvZHVjZXIuCj4gPiA+IAo+ID4gPiBUaGlzIGlzIGFj dHVhbGx5IG15IHNlY29uZCB2ZXJzaW9uIG9mIHRoZSBIUEQgbWVjaGFuaXNtLiBUaGUgZmlyc3QK PiA+ID4gdmVyc2lvbiB3YXMgbmV2ZXIgcG9zdGVkLCBwb2tlZCBpbnRvIGRybV9icmlkZ2UsIGFu ZCByZXF1aXJlZCB0aGUKPiA+ID4gcHJvZHVjZXIgdG8gYmUgYXdhcmUgb2YgdGhlIGNhbGxiYWNr cy4gQWZ0ZXIgZGlzY3Vzc2luZyB0aGlzIHByaXZhdGVseQo+ID4gPiB3aXRoIERhbmllbCwgSSBj YW1lIHVwIHdpdGggdGhlIGltcGxlbWVudGF0aW9uIGluIHRoaXMgc2VyaWVzIHRoYXQsCj4gPiA+ IHdoaWxlIG5vdCBzdXBwb3J0aW5nIG11bHRpcGxlIGNvbnN1bWVycyBub3csIG1ha2VzIGl0IGVh c3kgdG8gZXh0ZW5kCj4gPiA+IGxhdGVyIHdpdGhvdXQgbWluaW1hbCBlZmZvcnQuCj4gPiA+IAo+ ID4gPiBEYW5pZWwncyBwcm9wb3NlZCBpbXBsZW1lbnRhdGlvbiBhYm92ZSBsb29rcyByZWFzb25h YmxlIHRvIG1lLCBwcm92aWRlZAo+ID4gPiB3ZSBjYW4gaXRlcmF0ZSBvdmVyIHRoZSBicmlkZ2Vz IGluIGFuIG9yZGVyIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIHRoZQo+ID4gPiBwb3NpdGlvbiBvZiB0 aGUgcHJvZHVjZXIgaW4gdGhlIGNoYWluIChzaG91bGQgYmUgZWFzeSB0byBzb2x2ZSBieQo+ID4g PiBzdGFydGluZyBhdCB0aGUgZW5jb2RlciBmb3IgaW5zdGFuY2UpLiBJdCBob3dldmVyIGxvb2tz IGEgYml0IGxpa2UgYQo+ID4gPiBtaWRsYXllciB0byBtZSA6LSkgVGhhdCdzIHdoeSBJIGhhdmUg YSBzaW1pbGFyIGltcGxlbWVudGF0aW9uIGluIHRoZQo+ID4gPiBjb25uZWN0b3ItYnJpZGdlIGhl bHBlciwgd2hpY2ggY291bGQgYmUgZXh0ZW5kZWQgdG8gY2FsbAo+ID4gPiBlbmNvZGVyLT5oZWxw ZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoKSBhbmQKPiA+ID4gZGV2LT5tb2RlX2NvbmZp Zy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoKSBpbnN0ZWFkIG9mCj4gPiA+IGhh cmRjb2RpbmcgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpLiBNb3ZpbmcgdGhlIGNvZGUg dG8KPiA+ID4gZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgd291bGQgb24gdGhlIG90aGVyIGhhbmQg c2V0IHRoZSBub3RpZmljYXRpb24KPiA+ID4gc2VxdWVuY2UgdG93YXJkcyB0aGUgZW5jb2RlciBh bmQgZHJpdmVyIGluIHN0b25lLiBEYW5pZWwsIGRvIHlvdSB0aGluawo+ID4gPiB0aGF0IHdvdWxk IGJlIGJldHRlciA/Cj4gPiAKPiA+IFNvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1pZGxh eWVyIGFuZCB0aGUgaGVscGVyIGlzIHRoYXQgdGhlIGhlbHBlcgo+ID4gY2FuIGJlIGlnbm9yZWQu IFdoaWNoIHRoZSBhYm92ZSBzdGlsbCBjYW46Cj4gPiAKPiA+IC0gcHJvZHVjZXIgY2FuIGNob29z ZSB0byBub3QgY2FsbCB0aGF0IGZ1bmN0aW9uCj4gPiAtIGNvbnN1bWVyIGNhbiBjaG9vc2Ugbm90 IHRvIGhhdmUgdGhlIGNhbGxiYWNrCj4gPiAKPiA+IE5vdyBncmVhdCBoZWxwZXJzIGFsbG93IHlv dSB0byBpZ25vcmUgb25seSBwYXJ0cyBvZiB0aGVtLCBzbyB0aGF0IHlvdSBjYW4KPiA+IG1peCZt YXRjaC4gV2hpY2ggYWdhaW4gSSB0aGluayB3aXRoIHRoZSBicmlkZ2Ugc3R1ZmYgd2UncmUgZGlz Y3Vzc2luZyBoZXJlCj4gPiBpcyBhc3N1cmVkLgo+IAo+IFRoYXQncyBhIGJpdCBkaWZmaWN1bHQg Zm9yIHRoZSBmaXJzdCBwYXJ0LCBhcyBpZiB0aGUgcHJvZHVjZXIgZG9lc24ndAo+IG5vdGlmeSBv ZiBIUEQgZXZlbnRzLCBjb25zdW1lcnMgd29uJ3QgYmUgYWJsZSB0byBnZXQgdGhlbSA6LSkgVGhl IHNlY29uZAo+IHBhcnQsIGNvbnN1bWVycyBub3QgaGF2aW5nIHRoZSBjYWxsYmFjaywgaXMgYWxy ZWFkeSBzdXBwb3J0ZWQuCj4gCj4gPiBTbyB0aGUgZmluYWwgYml0IGlzIGhvdyBvcGluaW9uYXRl ZCBhIGhlbHBlciBjYW4gYmUsIGFuZCBpbW8gaXQgY2FuIGJlCj4gPiB2ZXJ5IG9waW5pb25hdGVk IGFuZCBzdHJpY3QgYW5kIGluZmxleGlibGUuIFRoYXQgbWVhbnMgaXQgd29uJ3QgYmUgdXNlZnVs Cj4gPiBmb3IgZXZlcnkgcG9zc2libGUgY2FzZSwgYnV0IHRob3NlIGNhbiBiZSBoYW5kbGVkIGJ5 IHNpbXBseSBub3QgdXNpbmcgdGhlCj4gPiBoZWxwZXIgKG9yIHRoYXQgcGFydCBvZiB0aGUgaGVs cGVycykuIEV4YW1wbGVzCj4gPiAKPiA+IC0gc2ltcGxlIGRpc3BsYXkgcGlwZSBpcyB2ZXJ5IG9w aW5pb25hdGVkLCBidXQgdHJhZGVzIHRoYXQgaW4gZm9yIGJlaW5nCj4gPiAgIHZlcnkgdXNlZnVs IGZvciByZWFsbHkgc2ltcGxlIGRpc3BsYXlzCj4gPiAKPiA+IC0gc2ltaWxhciB3aXRoIGF0b21p YyBoZWxwZXJzLCB0aGVyZSdzIGEgdmVyeSBzdHJvbmcgc3VnZ2VzdGlvbiB0aGF0ICJpZgo+ID4g ICBpdCBkb2Vzbid0IGZpdCwgd3JpdGUgeW91ciBvd24gY29tbWl0X3RhaWwoKSIKPiAKPiAoT24g YSBzaWRlIG5vdGUsIGRvaW5nIHNvIGlzIHF1aXRlIGNvbXBsZXgsIGFuZCBJIHVuZGVyc3RhbmQg d2h5IG5vYm9keQo+IHdhbnRzIHRvIHJlYWxseSBkaXRjaCB0aGUgYXRvbWljIGhlbHBlcnMpCgpC dXQgbW9zdCBkcml2ZXJzIGRvIG92ZXJ3cml0ZSBwYXJ0cyBvZiBpdCwgd2hpY2ggaXMga2luZGEg bXkgcG9pbnQ6CkV2ZXJ5b25lIHN0aWxsIGtlZXBzIHVzaW5nIGF0IGxlYXN0IHNvbWUgcGFydHMg b2YgYXRvbWljLCBhbmQgYmVuZWZpdHRpbmcKZnJvbSB0aGUgb3BpbmlvbmF0ZWQgZ3VpZGVsaW5l cyB0aG9zZSBoYXZlLgoKPiA+IEFuZCBJIHRoaW5rIGJyaWRnZSBoZWxwZXJzIHByb2JhYmx5IGFs c28gbmVlZCBmYWlybHkgb3BpbmlvYXRlZCwgc2ltcGx5IHRvCj4gPiBtYWtlIHN1cmUgdGhhdCBh bGwgdGhlIGJyaWRnZSBkcml2ZXJzIHdvcmsgdG9nZXRoZXIgaW4gYSBjb2hlcmVudCBmYXNoaW9u Lgo+ID4gSWYgd2UgYWxsb3cgdG9vIG11Y2ggZmxleGliaWxpdHkgZXZlcnlvbmUgYmVuZHMgdGhl IHJ1bGVzIGEgYml0LCBhbmQKPiA+IG5vdGhpbmcgZml0cy4KPiAKPiBJIGFncmVlIHdpdGggeW91 IG9uIHRoYXQuCj4gCj4gPiBXcnQgeW91ciBxdWVzdGlvbjogT25lIG9wdGlvbiB3b3VsZCBiZSB0 byBkbyB0aGUgc2FtZSB0aGluZyBsaWtlIHNoYXJlZAo+ID4gaW50ZXJydXB0IGxpbmUgaGFuZGxl cnMuIEFzIHNvb24gYXMgdGhlIGZpcnN0IGludGVycnVwdCBoYW5kbGVyIHNheXMgIkknCj4gPiB2 ZSBoYW5kbGVkIHRoaXMgb25lIiB3ZSBzdG9wIHByb2Nlc3NpbmcuIEJ1dCB0aGF0IG1pZ2h0IGxl YWQgdG8gbW9yZQo+ID4gY29uZnVzaW9uIGFib3V0IHdobydzIHJlc3BvbnNpYmxlIGZvciBhbiBp bnRlcnJ1cHQuCj4gCj4gSSBkb24ndCB0aGluayB0aGF0J3MgYSBnb29kIGlkZWEsIGFzIG1vcmUg dGhhbiBvbmUgY29uc3VtZXIgbWF5IG5lZWQgdG8KPiBwcm9jZXNzIHRoZSBldmVudC4gQSByZWFs IGxpZmUgZXhhbXBsZSB3aXRoIHR3byBjb25zdW1lcnMgd291bGQgYmUgYSBDRUMKPiBjb250cm9s bGVyIHBhcnQgb2YgYSBicmlkZ2UgbmVlZGluZyB0byBnZXQgaW5mb3JtZWQgYWJvdXQgSERNSQo+ IHBsdWcvdW5wbHVnIHRvIHNldCB0aGUgQ0VDIGFkZHJlc3MgaW4gdGhlIGRldmljZSAodGhpcyBu b3RpZmljYXRpb24gaXMKPiBoYW5kbGVkIHRocm91Z2ggdGhlIGJyaWRnZSBub3RpZmljYXRpb24g b3BlcmF0aW9uKSwgYW5kIHRoZSBkaXNwbGF5Cj4gZHJpdmVyIG5lZWRpbmcgdG8gcmVwb3J0IEhQ RCB0byB0aGUgRFJNIGNvcmUuCj4gCj4gQXMgSSdtIHN0aWxsIG5vdCBzdXJlIHdoeSB5b3UgdGhp bmsgSSBzaG91bGQgcmVwbGFjZSB0aGUgZXhpc3RpbmcKPiBpbXBsZW1lbnRhdGlvbiB3aXRoIHlv dXIgYWJvdmUgcHJvcG9zYWwsIHNvIEknbGwga2VlcCB0aGUgZXhpc3RpbmcgY29kZQo+IGZvciB0 aGUgdjIgdGhhdCBJIHdpbGwgcG9zdCBzb29uIHVudGlsIHdlIGNvbXBsZXRlIHRoaXMgZGlzY3Vz c2lvbi4KPiAKPiBUbyBob3BlZnVsbHkgaGVscCB3aXRoIHRoZSBkaXNjdXNzaW9uLCBJIHdvdWxk IGxpa2UgdG8gcmVwZWF0IG15IG1haW4KPiBhcmd1bWVudCA6IG1vdmluZyB0aGUgZGlzcGF0Y2hp bmcgb2YgdGhlIG5vdGlmaWNhdGlvbiB0bwo+IGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHNldHMg dGhlIG9yZGVyIGluIHdoaWNoIGNvbXBvbmVudHMgKGJyaWRnZXMsCj4gZW5jb2RlcnMsIGRyaXZl cnMpIGFyZSBub3RpZmllZCBpbiBzdG9uZSwgd2hpbGUga2VlcGluZyBpdCBpbiB0aGUKPiBkcm1f YnJpZGdlX2Nvbm5lY3RvciBoZWxwZXIgYWxsb3dzIGRyaXZlcnMgdG8gbm90IHVzZSB0aGUgaGVs cGVyIGFuZAo+IGNvbWUgdXAgd2l0aCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IGZp dHMgdGhlaXIgbmVlZHMgYmV0dGVyLgoKVGhhdCAic2V0IHRoaW5ncyBpbiBzdG9uZSIgaXMgYWN0 dWFsbHkgd2hhdCBJIHdhbnQuIFdlbGwsIG5vdCBzdG9uZSwgYnV0CnJlYWxseSBjbGVhciBzZW1h bnRpY3MuIFlvdSdyZSBlc3NlbnRpYWxseSBjcmVhdGluZyBhIG5vdGlmaWVyLCBleGNlcHQKdGhl cmUncyBvbmx5IGV2ZXJ5IG9uZSBub3RpZmllZCBlbnRpdHkgYXQgbW9zdC4gSW1lIGJhZCB0aGlu Z3MgaGFwcGVuIHdpdGgKbm90aWZpZXJzLCBpdCdzIHVuYXZvaWRhYmxlLgoKU28gbWF5YmUgd2hh dCB3ZSBuZWVkIGluc3RlYWQgaXMgYSBicmlkZ2VfaHBkX3Byb2Nlc3MgY2FsbGJhY2sgKGluCm1v ZGVfY29uZmlnLmhlbHBlcnMgb3Igd2hlcmV2ZXIsIG9yIG9uIHRoZSBlbmNvZGVyLCBkdW5ubyks IHdpdGggdGhlIGFib3ZlCmRlZmF1bHQgaW1wbGVtZW50YXRpb24uIEJ1dCB5b3UgY2FuIHRoZW4g b3ZlcndyaXRlIGl0LgoKT3IgYW5vdGhlciBvcHRpb24gd291bGQgYmUgdGhhdCBhdCBsZWFzdCBv biBEVCBwbGF0Zm9ybXMsIERUIGdldHMgdG8gc3BlYwp0aGUgZW50aXJlIGhwZCByb3V0aW5nLgoK SSBqdXN0IGZlYXIgdGhhdCBpZiB3ZSBsZXQgYnJpZGdlIGRyaXZlcnMgYWxsIG1hbmFnZSB0aGlz IHRoZW1zZWx2ZXMgd2UnbGwKZW5kIHVwIHdpdGggYSBmb3JtYWRpYmxlIG1lc3Mgb2Ygc2xpZ2h0 IGluY29tcGF0aWJpbGl0aWVzLgotRGFuaWVsCgo+IAo+ID4gPiBJIHdvdWxkIGxpa2UgdG8gcmVt aW5kIGV2ZXJ5Ym9keSB0aGF0IHRoaXMgc2VyaWVzIGlzbid0IHRoZSBsYXN0IEkgd2lsbAo+ID4g PiBldmVyIHN1Ym1pdCwgYW5kIEkgcGxhbiB0byBkbyBtb3JlIHdvcmsgb24gZHJtX2JyaWRnZSBh bmQgZHJtX3BhbmVsLiBJJ20KPiA+ID4gb3BlbiB0byBzdWdnZXN0aW9ucywgYW5kIGNhbiBhZGRy ZXNzIHByb2JsZW1zIG9uIHRvcCBvZiB0aGVzZSBwYXRjaGVzLAo+ID4gPiBwcm92aWRlZCBvYnZp b3VzbHkgdGhhdCB0aGlzIHNlcmllcyBkb2Vzbid0IGdvIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24u Cj4gPiA+IEknbSBvZiBjb3Vyc2UgYWxzbyB3aWxsaW5nIHRvIHJld29yayB0aGlzIHNlcmllcywg YnV0IGdpdmVuIHRoZSBhbW91bnQKPiA+ID4gb2Ygd29yayB3ZSBoYXZlIGluIHRoZSBkcm1fYnJp ZGdlIHJlYWxtLCBJIGNhbid0IGZpeCBldmVyeXRoaW5nIGluIG9uZQo+ID4gPiBnbyA6LSkKPiA+ ID4gCj4gPiA+Pj4+Pj4gLSBpdCByZXNlbWJsZXMgaGFyZHdhcmUgd2lyZXMgOikKPiA+ID4+Pj4+ Cj4gPiA+Pj4+PiBUaGlzIGlzbid0IGZvciB0aGUgaHcgd2lyZXMgYWZhaXVpLiBUaGUgaHcgaHBk IHRlcm1pbmF0ZXMgaW4gdGhlIHNvdXJjZQo+ID4gPj4+Pj4gYnJpZGdlLCB3aGljaCB0aGVuIGNh bGxzIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHRvIGluZm9ybSBhbnlvbmUgZWxzZQo+ID4gPj4+ Pj4gaW50ZXJlc3RlZCBpbiB0aGF0IGhwZCBzaW5nYWwuIFRoaXMgaW5jbHVkZXM6Cj4gPiA+Pj4+ PiAtIE90aGVyIGJyaWRnZXMsIGUuZy4gaWYgdGhleSBwcm92aWRlIENFQyBzdXBwb3J0Lgo+ID4g Pj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBtYXliZSB0aGV5IG5lZWQgdG8gcmUtcnVuIHRoZSBIRENQ IHN0YXRlIGVuZ2luZQo+ID4gPj4+Pj4gLSBPdmVyYWxsIGRyaXZlciwgc28gaXQgY2FuIHVwZGF0 ZSB0aGUgbW9kZXMvY29ubmVjdG9yIHN0YXR1cyBhbmQgc2VuZCB0aGUKPiA+ID4+Pj4+ICAgdWV2 ZW50IHRvIHRoZSBkcml2ZXIuCj4gPiA+Pj4+PiAtIE92ZXJhbGwgZGlzcGxheSBwaXBlbGluZSBm b3IgdGhpcyBzcGVjaWZpYyBicmlkZ2UsIG1heWJlIHlvdSBuZWVkIHRvCj4gPiA+Pj4+PiAgIHNo dXQgZG93bi9yZS1lbmFibGUgdGhlIHBpcGUgYmVjYXVzZSAkcmVhc29ucy4KPiA+ID4+Pj4+ICAK PiA+ID4+Pj4+IFRoYXQncyBhdCBsZWFzdCBteSB1bmRlcnN0YW5kaW5nIGZyb20gbG90cyBvZiBj aGF0cyB3aXRoIExhdXJlbnQgYWJvdXQKPiA+ID4+Pj4+IHdoYXQgaGUgd2FudHMgdG8gZG8gaGVy ZS4KPiA+ID4gCj4gPiA+IFRoYXQncyBjb3JyZWN0LCBhbmQgdGhhdCdzIHdoYXQgSSB3YXMgdHJ5 aW5nIHRvIGltcGxlbWVudCA6LSkgVGhlCj4gPiA+IG5vdGlmaWNhdGlvbiwgaW4gdGhpcyBwYXRj aCBzZXJpZXMsIGdvZXMgZnJvbSB0aGUgcHJvZHVjZXIgYnJpZGdlIHRvIGEKPiA+ID4gY2VudHJh bCBwbGFjZSAobmFtZWx5IHRoZSBjb25uZWN0b3IsIHdpdGggYSBoZWxwZXIgaW1wbGVtZW50YXRp b24KPiA+ID4gYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhpcyBzZXJpZXMsIGJ1dCBjdXN0b20gaW1w bGVtZW50YXRpb25zIGluIGRpc3BsYXkKPiA+ID4gZHJpdmVycyBhcmUgZmluZSBpZiBuZWVkZWQp IHRoYXQgdGhlbiBkaXNwYXRjaGVzIHRoZSBub3RpZmljYXRpb24gdG8gYWxsCj4gPiA+IGJyaWRn ZXMgKHRocm91Z2ggdGhlIC5sb3N0X2hvdHBsdWcoKSBvcGVyYXRpb24sIHdoaWNoIHdlIGNvdWxk IHJlcGxhY2UKPiA+ID4gYnkgYW4gLmhwZF9ub3RpZnkoKSBvcGVyYXRpb24pIGZvciB0aGUgZmly c3QgdHdvIHB1cnBvc2VzIGxpc3RlZCBhYm92ZSwKPiA+ID4gYW5kIHRoZW4gdG8gdGhlIG92ZXJh bGwgZHJpdmVyLiBUaGUgb25seSB0aGluZyBJIGRvbid0IHN1cHBvcnQgeWV0IGlzCj4gPiA+IGRp c3BhdGNoaW5nIHRvIHRoZSBkaXNwbGF5IHBpcGVsaW5lIChpdGVtIDQgaW4gdGhlIGxpc3QgYWJv dmUpIGFzIEkgaGFkCj4gPiA+IG5vIG5lZWQgZm9yIHRoYXQsIGFuZCBkaWRuJ3Qgd2FudCB0byBk ZXZlbG9wIGFuIEFQSSB3aXRoIG5vIHVzZXIuIFRoaXMKPiA+ID4gd291bGQgaG93ZXZlciBub3Qg YmUgZGlmZmljdWx0IHRvIGRvIHdoZW4gbmVlZGVkLCB0aGUgbmVlZCBpcyB0YWtlbiBpbnRvCj4g PiA+IGFjY291bnQgaW4gdGhlIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uLgo+ID4gPiAKPiA+ID4+ Pj4gSSBkbyBub3Qga25vdyB0aGUgZnVsbCBwaWN0dXJlLCBidXQgdGhlIHNvbHV0aW9uIHdoZXJl IHBhcnRpY3VsYXIgYnJpZGdlCj4gPiA+Pj4+IG5vdGlmaWVzIGV2ZXJ5dGhpbmcgdW5jb25kaXRp b25hbGx5IHNlZW1zIHRvIG1lIG11Y2ggbGVzcyBmbGV4aWJsZS4KPiA+ID4+Pj4KPiA+ID4+Pj4g SWYgSFBEIHNpZ25hbHMgaXMgcmVjZWl2ZWQgYnkgdGhlIGNvbnN1bWVyLCBpZiB0aGVyZSBhcmUg bm8gb2JzdGFjbGVzIGl0Cj4gPiA+Pj4+IGNhbiBwcm9wYWdhdGUgaXQgZnVydGhlciwgdXBzdHJl YW0gYnJpZGdlL2VuY29kZXIgb3IgdG8gZHJtIGNvcmUgLSBpdAo+ID4gPj4+PiB3aWxsIG1pbWlj IHlvdXIgc2NlbmFyaW8uCj4gPiA+Pj4+Cj4gPiA+Pj4+IEJ1dCB0aGVyZSBhcmUgYWxzbyBvdGhl ciBzY2VuYXJpb3Mgd2hlcmUgYnJpZGdlIGRvZXMgbm90IHdhbnQgdG8KPiA+ID4+Pj4gcHJvcGFn YXRlIHNpZ25hbCwgYmVjYXVzZSBmb3IgZXhhbXBsZToKPiA+ID4+Pj4KPiA+ID4+Pj4gLSBpdCB3 YW50cyB0byB3YWl0IGZvciBvdGhlciBzaW5rcyB0byB3YWtlIHVwLAo+ID4gPj4+Cj4gPiA+Pj4g VGhlIG90aGVyIHNpbmsgY2FuIGp1c3QgZG8gdGhhdCBpbiB0aGVpciBocGQgY2FsbGJhY2suCj4g PiA+Pj4KPiA+ID4+Pj4gLSBpdCBwcm9wYWdhdGVzIEhQRCBzaWduYWwgdmlhIGhhcmR3YXJlIHdp cmUsCj4gPiA+Pj4KPiA+ID4+PiBBZ2FpbiwgdGhlIG90aGVyIHNpbmsgY2FuIGp1c3Qgbm90IGxp c3RlbiB0byBzdyBocGQgaW4gdGhhdCBjYXNlLCBhbmQgdXNlCj4gPiA+Pj4gdGhlIHdpcmUvaHcg aHBkIGludGVycnVwdC4KPiA+ID4+IAo+ID4gPj4gSWYgaXQgc2hvdWxkIGlnbm9yZSBIUEQsIHdo eSBpdCBzaG91bGQgcmVjZWl2ZSBpdCBhdCBhbGwgLSBpdCBpcwo+ID4gPj4gdW5uZWNlc3Nhcnkg bm9pc2UuIEFuZCBJIGFtIGFmcmFpZCB3aXRoIG1vcmUgY29tcGxpY2F0ZWQgcGlwZWxpbmVzIGl0 Cj4gPiA+PiB3aWxsIGJlIGltcG9zc2libGUgZm9yIHBhcnRpY3VsYXIgY29tcG9uZW50IChicmlk Z2UvZW5jb2Rlci93aGF0ZXZlcikgdG8KPiA+ID4+IGRpc3Rpbmd1aXNoIGlmIEhQRCBub3RpZmlj YXRpb24gd2hpY2ggY2FtZSBmcm9tIG5vbi1kaXJlY3RseSBjb25uZWN0ZWQKPiA+ID4+IGNvbXBv bmVudCBzaG91bGQgYmUgaWdub3JlZCBvciBub3QuCj4gPiA+PiAKPiA+ID4+Pj4gLSBmaXJzdCBp dCB3YW50cyB0byB2ZXJpZnkgaWYgdGhlIHNpbmsgaXMgdmFsaWQvY29tcGF0aWJsZS9hdXRob3Jp emVkCj4gPiA+Pj4+IGRldmljZS4KPiA+ID4+Pgo+ID4gPj4+IE5vdyB5b3UgbG9zdCBtZS4gV2h5 IHdvdWxkIHNvbWVvbmUgZ2x1ZSBpbmNvbXBhdGlibGUgSVAgaW50byBhIFNvQyBvcgo+ID4gPj4+ IGJvYXJkPwo+ID4gPj4gCj4gPiA+PiBCcmlkZ2UgY2FuIGhhdmUgZXh0ZXJuYWwgY29ubmVjdG9y cywgYW5kIHRoZSB1c2VyIGNhbiBjb25uZWN0IHRoZXJlCj4gPiA+PiBhbnl0aGluZy4KPiA+ID4+ IAo+ID4gPj4+PiBJbiBnZW5lcmFsIEhQRCBpcyBpbnB1dCBzaWduYWwgZm9yIG5vdGlmeSBvZiBz dGF0ZSBjaGFuZ2VzIG9uIHBhcnRpY3VsYXIKPiA+ID4+Pj4gYnVzLCBpbiBjYXNlIG9mIHR5cGlj YWwgdmlkZW8gYnJpZGdlIG9uIGl0cyBvdXRwdXQgdmlkZW8gYnVzLgo+ID4gPj4+Pgo+ID4gPj4+ PiBJbiBjYXNlIG9mIGJyaWRnZXMgdGhleSBoYXZlIGFsc28gaW5wdXQgdmlkZW8gYnVzZXMsIGFu ZCB0aGV5IGNhbiBzZW5kCj4gPiA+Pj4+IEhQRCBzaWduYWwgdmlhIHRoaXMgYnVzLCBidXQgdGhp cyBpcyBpbmRlZWQgZGlmZmVyZW50IEhQRCBzaWduYWwsIGV2ZW4KPiA+ID4+Pj4gaWYgZm9yIG1v c3QgY2FzZXMgdGhleSBsb29rcyBzaW1pbGFyLgo+ID4gPj4+Cj4gPiA+Pj4gQWgsIEkgdGhpbmsg dGhpcyBpcyBhIHByb2JsZW0gd2Ugd2lsbCBldmVudHVhbGx5IGhhdmUuIEJ1dCBpdCdzIG5vdAo+ ID4gPj4+IHNvbWV0aGluZyB3ZSdyZSBjdXJyZW50bHkgc29sdmluZyBoZXJlIGF0IGFsbCBJIHRo aW5rLgo+ID4gPj4gCj4gPiA+PiBDdXJyZW50bHkgc2lpODYyMCBkZXZpY2UgaW4gdG0yIHNlbmRz IGhwZCBzaWduYWwgdXBzdHJlYW0gdmlhIGhhcmR3YXJlCj4gPiA+PiBsaW5lLCBzbyB0aGlzIGlz IG5vdCBzb21ldGhpbmcgZnJvbSBmYXIgZnV0dXJlLiBBbmQgSSBndWVzcyB3aXRoIEhQRAo+ID4g Pj4gYnJvYWRjYXN0aW5nIGl0IGNvdWxkIGJlIHJhY3kvZXJyb3IgcHJvbmUsIGZvciBleGFtcGxl IEVESUQgcmVhZGluZyBjYW4KPiA+ID4+IGZhaWwgZHVlIHRvIGJyaWRnZSBiZWluZyBub3QgcmVh ZHkgKGRkYyBvZiBzaWk4NjIwIGlzIGNvbm5lY3RlZCB0byBpMmMKPiA+ID4+IGNvbnRyb2xsZXIg dmlhIGh3IHdpcmVzIGFsc28pLgo+ID4gPj4gCj4gPiA+Pj4+Pj4gQW5kIHJlZ2FyZGluZyBpbXBs ZW1lbnRhdGlvbjoKPiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+IDEuIExhdXJlbnQgcHJvcG9zZXMgdG8g cmVnaXN0ZXIgY2FsbGJhY2sgZHJtX2JyaWRnZV9ocGRfZW5hYmxlLgo+ID4gPj4+Pj4+Cj4gPiA+ Pj4+Pj4gMi4gWW91IHByb3Bvc2UgdG8gYWRkIG9wcyBocGRfbm90aWZ5IGluIGJyaWRnZXMgYW5k IGVuY29kZXJzLgo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gWW91ciBwcm9wb3NpdGlvbiBpcyBtb3Jl IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGlmIHdlIHdhbnQgdG8gbm90aWZ5IG9ubHkKPiA+ID4+Pj4+ PiBzb3VyY2Ugd2Ugc2hvdWxkIGxvY2F0ZSBpdCBieSBwYXJzaW5nIG5vdGlmaWNhdGlvbiBjaGFp biAod2hhdCBhYm91dAo+ID4gPj4+Pj4+IHVuY2hhaW5lZCBicmlkZ2VzKSwgb3Igc3RvcmUgcG9p bnRlciBzb21ld2hlcmUgZHVyaW5nIGF0dGFjaG1lbnQuCj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiBJ dCBzdGlsbCBsZWF2ZXMgdXMgd2l0aCB0aGlzIHVnbHkgZHVhbGlzbSAtIHNvdXJjZSBpcyBlbmNv ZGVyIG9yIGJyaWRnZSwKPiA+ID4+Pj4+PiBzaW1pbGFybHkgdG8gc2luayBhcyBicmlkZ2Ugb3Ig cGFuZWwsIGJ1dCBmaXhpbmcgaXQgY2FuIGJlIGRvbmUgbGF0ZXIuCj4gPiA+Pj4+Pgo+ID4gPj4+ Pj4gVWggSSB0aGluayB3ZSdyZSBub3QgdGFsa2luZyBhYm91dCB0aGUgc2FtZSB0aGluZyByZWFs bHkuIE15IHVuZGVyc3RhbmRpbmcKPiA+ID4+Pj4+IGlzIHRoYXQgdGhpcyBjYWxsYmFjayBpcyBp ZiBzb21lb25lIChvdXRzaWRlIG9mIHRoaXMgYnJpZGdlKSBpcyBpbnRlcmVzdGVkCj4gPiA+Pj4+ PiBpbiBhIGhwZCBzaWduYWwgX2Zyb21fIHRoaXMgYnJpZGdlLiBXaGljaCBtZWFucyB5b3UgY2Fu IG9ubHkgZXZlciBoYXZlIDEKPiA+ID4+Pj4+IGxpc3RlbmVyLgo+ID4gPj4+Pgo+ID4gPj4+PiBE byB3ZSBoYXZlIHJlYWwgbGlmZSBleGFtcGxlcz8KPiA+ID4+Pj4KPiA+ID4+Pj4gSSB3YW50IHRv IGRpc3Rpbmd1aXNoIHR3byBzaXR1YXRpb25zOgo+ID4gPj4+Pgo+ID4gPj4+PiAtIGFub3RoZXIg ZGV2aWNlIHdhbnRzIHRvIGtub3cgaWYgaW5wdXQgYnVzIG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5n ZWQgc3RhdGUsCj4gPiA+Pj4+Cj4gPiA+Pj4+IC0gYW5vdGhlciBkZXZpY2Ugd2FudHMgdG8ga25v dyBpZiBvdXRwdXQgYnVzIG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5nZWQKPiA+ID4+Pj4gc3RhdGUu Cj4gPiA+Pj4KPiA+ID4+PiBVaCwgdGhhdCdzIHdoYXQgZHJtX2JyaWRnZV9zdGF0ZSBpcyBmb3Ig KGlmIGl0IGV2ZXIgaGFwcGVucykuIFRoYXQncyBob3cKPiA+ID4+PiBicmlkZ2VzIGNhbiBleGNo YW5nZSBzdGF0ZSBhbmQgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhbm90aGVyLiBocGQgaXMKPiA+ ID4+PiBhYm91dCB0aGUgcGh5c2ljYWwgd29ybGQsIGkuZS4gImlzIHRoZXJlIGEgY2FibGUgcGx1 Z2dlZCBpbnRvIHRoZSBwb3J0Cj4gPiA+Pj4gSSdtIGRyaXZpbmc/Ii4gV2UncmUgbm90IGdvaW5n IHRvIHVzZSBmYWtlIGhwZCB0byB1cGRhdGUgYnJpZGdlIHN0YXRlIGFuZAo+ID4gPj4+IGZ1biBz dHVmZiBsaWtlIHRoYXQsIHdlIGhhdmUgdGhlIGF0b21pY19jaGVjayBtYWNoaW5lcnkgZm9yIHRo aXMuCj4gPiA+PiAKPiA+ID4+IE15IHF1ZXN0aW9uIHdhcyBpZiB3ZSBoYXZlIHJlYWwgZXhhbXBs ZXMgdGhhdCB1cHN0cmVhbSBkZXZpY2UgcmVxdWlyZXMKPiA+ID4+IGtub3dsZWRnZSBhYm91dCBz dGF0ZSBvZiBvdXRwdXQgbGluZSBvZiB0aGUgYnJpZGdlPwo+ID4gPj4gCj4gPiA+PiBUbyBiZSBt b3JlIHByZWNpc2UsIHdlIGhhdmUgZm9sbG93aW5nIGRpc3BsYXkgcGlwZWxpbmU6Cj4gPiA+PiAK PiA+ID4+IEEtLT5CLS0+Qwo+ID4gPj4gCj4gPiA+PiBBbmQgQyBzZW5kcyBIUEQgdG8gQiAoaWUg c2lnbmFsIHRoYXQgc3RhdGUgb2YgbGluZSBiZXR3ZWVuIEIgYW5kIEMKPiA+ID4+IGNoYW5nZWQp LiBEb2VzIEEgcmVhbGx5IHdhbnRzIHRvIGtub3cgdGhpcyBpbmZvcm1hdGlvbj8gb3IgaXQgc2hv dWxkCj4gPiA+PiBqdXN0IG5lZWQgdG8ga25vdyBpZiBzdGF0ZSBvZiBsaW5lIEEtLT5CIGNoYW5n ZWQ/Cj4gPiA+IAo+ID4gPiBUaGVyZSdzIG9uZSByZWFsIGxpZmUgZXhhbXBsZSwgd2hlcmUgQSBp cyBhbiBIRE1JIGVuY29kZXIsIEIgaXMgYW4gSERNSQo+ID4gPiBFU0QgcHJvdGVjdG9yIGFuZCBs ZXZlbCBzaGlmdGVyLCBhbmQgQyBpcyB0aGUgcGh5c2ljYWwgSERNSSBjb25uZWN0b3IuCj4gPiA+ IFdoZW4gdGhlIEhETUkgY2FibGUgaXMgdW5wbHVnZ2VkLCB0aGUgQ0VDIGNvbnRyb2xsZXIgcGFy dCBvZiBBIG5lZWRzIHRvCj4gPiA+IGJlIG5vdGlmaWVkIGluIG9yZGVyIHRvIHJlc2V0IHRoZSBD RUMgc3RhdGUgbWFjaGluZS4gT25lIGNvdWxkIGhvd2V2ZXIKPiA+ID4gYXJndWUgdGhhdCBpbiB0 aGF0IGNhc2UgdGhlIEEtQiBsaW5rIHN0YXRlIGNoYW5nZXMgdG9vLCBidXQgdGhlCj4gPiA+IGlt cG9ydGFudCBwYXJ0IGlzIHRoYXQgSFBEIGRldGVjdGlvbiBpcyBub3QgcGVyZm9ybWVkIGJ5IEEs IHdoaWxlIEEKPiA+ID4gbmVlZHMgdG8gYmUgaW5mb3JtZWQgb2YgbG9zdCBob3RwbHVnLgo+ID4g PiAKPiA+ID4+Pj4+IFlvdSBzZWVtIHRvIGhhdmUgc29tZSBvdGhlciBpZGVhIGhlcmUuCj4gPiA+ Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsK PiA+ID4+Pj4+Pj4+Pj4+ICt9Cj4gPiA+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJt X2JyaWRnZV9ocGRfbm90aWZ5KTsKPiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ICAj aWZkZWYgQ09ORklHX09GCj4gPiA+Pj4+Pj4+Pj4+PiAgLyoqCj4gPiA+Pj4+Pj4+Pj4+PiAgICog b2ZfZHJtX2ZpbmRfYnJpZGdlIC0gZmluZCB0aGUgYnJpZGdlIGNvcnJlc3BvbmRpbmcgdG8gdGhl IGRldmljZSBub2RlIGluCj4gPiA+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPiA+Pj4+Pj4+Pj4+PiBp bmRleCAwOGRjMTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPiA+ID4+Pj4+Pj4+Pj4+IC0t LSBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gPj4+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2JyaWRnZS5oCj4gPiA+Pj4+Pj4+Pj4+PiBAQCAtMjMsOCArMjMsOSBAQAo+ID4g Pj4+Pj4+Pj4+Pj4gICNpZm5kZWYgX19EUk1fQlJJREdFX0hfXwo+ID4gPj4+Pj4+Pj4+Pj4gICNk ZWZpbmUgX19EUk1fQlJJREdFX0hfXwo+ID4gPj4+Pj4+Pj4+Pj4gIAo+ID4gPj4+Pj4+Pj4+Pj4g LSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPiA+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4 L2N0eXBlLmg+Cj4gPiA+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+ID4+ Pj4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiA+ID4+Pj4+Pj4+Pj4+ICAjaW5j bHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ID4gPj4+Pj4+Pj4+Pj4gICNpbmNsdWRlIDxk cm0vZHJtX21vZGVzLmg+Cj4gPiA+Pj4+Pj4+Pj4+PiAgCj4gPiA+Pj4+Pj4+Pj4+PiBAQCAtMzM0 LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ID4gPj4+Pj4+Pj4+Pj4g IAkgKi8KPiA+ID4+Pj4+Pj4+Pj4+ICAJdm9pZCAoKmF0b21pY19wb3N0X2Rpc2FibGUpKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4+Pj4+Pj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gPj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4g KwkvKioKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQGRldGVjdDoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICoK PiA+ID4+Pj4+Pj4+Pj4+ICsJICogQ2hlY2sgaWYgYW55dGhpbmcgaXMgYXR0YWNoZWQgdG8gdGhl IGJyaWRnZSBvdXRwdXQuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRlZCB0aGUgYnJpZGdl IHdpbGwgYmUKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogY29uc2lkZXJlZCBhcyBhbHdheXMgaGF2aW5n IGEgY29tcG9uZW50IGF0dGFjaGVkIHRvIGl0cyBvdXRwdXQuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAq IEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBzaGFsbCBzZXQgdGhlCj4gPiA+ Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfREVURUNUIGZsYWcgaW4gdGhlaXIgJmRybV9i cmlkZ2UtPm9wcy4KPiA+ID4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogUkVU VVJOUzoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogZHJtX2Nvbm5l Y3Rvcl9zdGF0dXMgaW5kaWNhdGluZyB0aGUgYnJpZGdlIG91dHB1dCBzdGF0dXMuCj4gPiA+Pj4+ Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz ICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+ICsK PiA+ID4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEBnZXRfbW9kZXM6Cj4g PiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVzIGN1 cnJlbnRseSB2YWxpZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPiA+ID4+ Pj4+Pj4+Pj4+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPiA+Pj4+Pj4+Pj4+ PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIGlzIG1v c3RseSBpbnRlbmRlZCB0byBzdXBwb3J0IG5vbi1wcm9iYWJsZQo+ID4gPj4+Pj4+Pj4+Pj4gKwkg KiBkaXNwbGF5cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBCcmlkZ2VzIHRoYXQgc3VwcG9y dCByZWFkaW5nCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEVESUQgc2hhbGwgbGVhdmUgQGdldF9tb2Rl cyB1bmltcGxlbWVudGVkIGFuZCBpbXBsZW1lbnQgdGhlCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqICZk cm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFjayBpbnN0ZWFkLgo+ID4gPj4+Pj4+Pj4+ Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLiBC cmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+ID4+Pj4+Pj4+Pj4+ICsJ ICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4g PiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPiA+Pj4+ Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBudW1iZXIgb2YgbW9kZXMgYWRk ZWQgYnkgY2FsbGluZyBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAq Lwo+ID4gPj4+Pj4+Pj4+Pj4gKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4gPiA+Pj4+Pj4+Pj4+PiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpOwo+ID4gPj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+ Pj4+ICsJICogQGdldF9lZGlkOgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4g KwkgKiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25uZWN0ZWQgZGlzcGxh eS4KPiA+ID4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogVGhlIEBnZXRfZWRp ZCBjYWxsYmFjayBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiByZXBvcnRpbmcgbW9kZQo+ID4gPj4+ Pj4+Pj4+Pj4gKwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNwbGF5IGNvbm5lY3RlZCB0byB0aGUg YnJpZGdlIG91dHB1dC4gQnJpZGdlcwo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQg cmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrIGFuZCBsZWF2ZQo+ID4g Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgQGdldF9tb2RlcyBjYWxsYmFjayB1bmltcGxlbWVudGVkLgo+ ID4gPj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgY2FsbGVyIG9mIHRo aXMgb3BlcmF0aW9uIHNoYWxsIGZpcnN0IHZlcmlmeSB0aGUgb3V0cHV0Cj4gPiA+Pj4+Pj4+Pj4+ PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzIGFuZCByZWZyYWluIGZyb20gcmVhZGluZyBFRElEIGZy b20gYSBkaXNjb25uZWN0ZWQKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogb3V0cHV0Lgo+ID4gPj4+Pj4+ Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFs LiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+ID4+Pj4+Pj4+Pj4+ ICsJICogRFJNX0JSSURHRV9PUF9FRElEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4K PiA+ID4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+ID4+ Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUgbmV3 bHkgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIChvciBzaW1pbGFyKSBvbgo+ID4gPj4+Pj4+Pj4+ Pj4gKwkgKiBzdWNjZXNzLCBvciBOVUxMIG90aGVyd2lzZS4gVGhlIGNhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgZnJlZWluZwo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgcmV0dXJuZWQgZWRpZCBz dHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+ Pj4+ICsJc3RydWN0IGVkaWQgKigqZ2V0X2VkaWQpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Us Cj4gPiA+Pj4+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK PiA+ID4+Pj4+Pj4+Pj4gSXQgb3ZlcmxhcHMgd2l0aCBnZXRfbW9kZXMsIEkgZ3Vlc3MgcHJlc2Vu Y2Ugb2Ygb25lIG9wcyBzaG91bGQgZGlzYWxsb3cKPiA+ID4+Pj4+Pj4+Pj4gcHJlc2VuY2Ugb2Yg YW5vdGhlciBvbmU/Cj4gPiA+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+IEkgYW0gbm90IHJlYWxs eSBjb252aW5jZWQgd2UgbmVlZCB0aGlzIG9wIGF0IGFsbCwgY2Fubm90IHdlIGp1c3QgYXNzaWdu Cj4gPiA+Pj4+Pj4+Pj4+IHNvbWUgaGVscGVyIGZ1bmN0aW9uIHRvIC5nZXRfbW9kZXMgY2IsIHdo aWNoIHdpbGwgZG8gdGhlIHNhbWU/Cj4gPiA+Pj4+Pj4+Pj4gUGxhbiBCKTogZGl0Y2ggLT5nZXRf ZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQKPiA+ ID4+Pj4+Pj4+PiBjYXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11 c3QgZmlsbCBvdXQgY29ubmVjdG9yLT5pbmZvCj4gPiA+Pj4+Pj4+Pj4gYW5kIGNvbm5lY3Rvci0+ ZWRpZCBjb3JyZWN0bHkuCj4gPiA+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+PiBCdHcgaWYgYSBocGQg aGFwcGVucywgd2hvJ3MgcmVzcG9uaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIGVkaWQvbW9kZSBs aXN0Cj4gPiA+Pj4+Pj4+Pj4gaW4gdGhlIGNvbm5lY3RvciBpcyB1cC10by1kYXRlPyBXaXRoIHlv dXIgY3VycmVudCBjYWxsYmFjayBkZXNpZ24gdGhhdCdzCj4gPiA+Pj4+Pj4+Pj4gdXAgdG8gdGhl IGNhbGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJpZGdlX2hw ZF9ub3RpZnkKPiA+ID4+Pj4+Pj4+PiBzaG91bGQgZ3VhcmFudGVlIHRoYXQgaXQnbGwgZmlyc3Qg d2FsayB0aGUgY29ubmVjdG9ycyB0byB1cGRhdGUgc3RhdHVzIGFuZAo+ID4gPj4+Pj4+Pj4+IGVk aWQvbW9kZSBsaXN0IGZvciB0aGUgZmluYWwgZHJtX2Nvbm5lY3Rvci4gQW5kIHRoZW4gaW5zdGVh ZCBvZiBqdXN0Cj4gPiA+Pj4+Pj4+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBpdCds bCBwYXNzIHRoZSBjb25uZWN0b3IsIHdpdGggZXZlcnl0aGluZwo+ID4gPj4+Pj4+Pj4+IGNvcnJl Y3RseSB1cGRhdGVkLgo+ID4gPj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4gT3RoZXJ3aXNlIGV2ZXJ5 b25lIGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2lnbmFsIHdpbGwgZ28gYW5kIHJlLWZldGNoIHRo ZQo+ID4gPj4+Pj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBhd2Vzb21lIDotKQo+ID4gPj4+ Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+ Pj4+Pj4gKwkgKiBAbG9zdF9ob3RwbHVnOgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+ Pj4+Pj4gKwkgKiBOb3RpZnkgdGhlIGJyaWRnZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4g PiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzIHRoYXQKPiA+ID4+Pj4+ Pj4+Pj4+ICsJICogbmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24g Zm9yIGludGVybmFsIHJlYXNvbnMuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIE9uZSB1c2UgY2FzZSBp cyB0byByZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgQ0VDIGNvbnRyb2xsZXJzIGZvcgo+ID4g Pj4+Pj4+Pj4+Pj4gKwkgKiBIRE1JIGJyaWRnZXMuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4g Pj4+Pj4+Pj4+Pj4gKwl2b2lkICgqbG9zdF9ob3RwbHVnKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPiA+Pj4+Pj4+ Pj4+PiArCSAqIEBocGRfZW5hYmxlOgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+ Pj4gKwkgKiBFbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJpZGdl IHNoYWxsIGNhbGwKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkg ZWFjaCB0aW1lIGEgY2hhbmdlIGlzIGRldGVjdGVkIGluIHRoZSBvdXRwdXQKPiA+ID4+Pj4+Pj4+ Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhvdCBwbHVnIGRldGVjdGlvbiBnZXRz IGRpc2FibGVkIHdpdGgKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9kaXNhYmxlLgo+ID4gPj4+ Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlv bmFsIGFuZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+ID4+Pj4+Pj4+ Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxp bmcuIEJyaWRnZXMgdGhhdAo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hhbGwg YWxzbyBpbXBsZW1lbnQgdGhlIEBocGRfZGlzYWJsZSBjYWxsYmFjayBhbmQgc2V0Cj4gPiA+Pj4+ Pj4+Pj4+PiArCSAqIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJp ZGdlLT5vcHMuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4gKwl2b2lkICgq aHBkX2VuYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+Pj4+Pj4+Pj4+PiAr Cj4gPiA+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2FibGU6 Cj4gPiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIERpc2FibGUgaG90IHBs dWcgZGV0ZWN0aW9uLiBPbmNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdlCj4gPiA+ Pj4+Pj4+Pj4+PiArCSAqIHNoYWxsIG5vdCBjYWxsIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHdo ZW4gYSBjaGFuZ2UgaW4gdGhlIG91dHB1dAo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBjb25uZWN0aW9u IHN0YXR1cyBvY2N1cnMuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkgYmUgaW1wbGVtZW50ZWQg YnkgYnJpZGdlcwo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcgbm90 aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gPiA+Pj4+Pj4+Pj4+PiAr CSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9lbmFibGUgY2Fs bGJhY2sgYW5kIHNldAo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQg ZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ ID4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+ICB9Owo+ID4gPj4+Pj4+Pj4+Pj4gIAo+ID4gPj4+Pj4+Pj4+ Pj4gIC8qKgo+ID4gPj4+Pj4+Pj4+Pj4gQEAgLTM3Miw2ICs0NzcsMzggQEAgc3RydWN0IGRybV9i cmlkZ2VfdGltaW5ncyB7Cj4gPiA+Pj4+Pj4+Pj4+PiAgCWJvb2wgZHVhbF9saW5rOwo+ID4gPj4+ Pj4+Pj4+Pj4gIH07Cj4gPiA+Pj4+Pj4+Pj4+PiAgCj4gPiA+Pj4+Pj4+Pj4+PiArLyoqCj4gPiA+ Pj4+Pj4+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sgb2Ygb3BlcmF0aW9u cyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4gPj4+Pj4+Pj4+Pj4gKyAqLwo+ID4gPj4+Pj4+ Pj4+Pj4gK2VudW0gZHJtX2JyaWRnZV9vcHMgewo+ID4gPj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+ Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfREVURUNUOiBUaGUgYnJpZGdlIGNhbiBkZXRl Y3QgZGlzcGxheXMgY29ubmVjdGVkIHRvCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIGl0cyBvdXRwdXQu IEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudCB0aGUKPiA+ID4+Pj4+ Pj4+Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBjYWxsYmFjay4KPiA+ID4+Pj4+ Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfREVURUNUID0gQklU KDApLAo+ID4gPj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklE R0VfT1BfRURJRDogVGhlIGJyaWRnZSBjYW4gcmV0cmlldmUgdGhlIEVESUQgb2YgdGhlIGRpc3Bs YXkKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGVkIHRvIGl0cyBvdXRwdXQuIEJyaWRnZXMg dGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudAo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiB0 aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9lZGlkIGNhbGxiYWNrLgo+ID4gPj4+Pj4+Pj4+Pj4g KwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9FRElEID0gQklUKDEpLAo+ID4g Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfSFBE OiBUaGUgYnJpZGdlIGNhbiBkZXRlY3QgaG90LXBsdWcgYW5kIGhvdC11bnBsdWcKPiA+ID4+Pj4+ Pj4+Pj4+ICsJICogd2l0aG91dCByZXF1aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0aGF0IHNldCB0 aGlzIGZsYWcgc2hhbGwKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAmZHJtX2Jy aWRnZV9mdW5jcy0+aHBkX2VuYWJsZSBhbmQKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogJmRybV9icmlk Z2VfZnVuY3MtPmRpc2FibGVfaHBkX2NiIGNhbGxiYWNrcy4KPiA+ID4+Pj4+Pj4+Pj4+ICsJICov Cj4gPiA+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklUKDIpLAo+ID4gPj4+Pj4+ Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfTU9ERVM6IFRo ZSBicmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1vZGVzIHN1cHBvcnRlZAo+ID4gPj4+Pj4+Pj4+ Pj4gKwkgKiBieSB0aGUgZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGluY2x1 ZGUgcmVhZGluZCBFRElECj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIHdoaWNoIGlzIHNlcGFyYXRlbHkg Y292ZXJlZCBieSBARFJNX0JSSURHRV9PUF9FRElELiBCcmlkZ2VzIHRoYXQgc2V0Cj4gPiA+Pj4+ Pj4+Pj4+PiArCSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1 bmNzLT5nZXRfbW9kZXMgY2FsbGJhY2suCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+ Pj4+Pj4gKwlEUk1fQlJJREdFX09QX01PREVTID0gQklUKDMpLAo+ID4gPj4+Pj4+Pj4+Pj4gK307 Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+PiAgLyoqCj4gPiA+Pj4+Pj4+Pj4+PiAg ICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFsIERSTSBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1 cmUKPiA+ID4+Pj4+Pj4+Pj4+ICAgKi8KPiA+ID4+Pj4+Pj4+Pj4+IEBAIC0zOTgsNiArNTM1LDI5 IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKPiA+ID4+Pj4+Pj4+Pj4+ICAJY29uc3Qgc3RydWN0IGRy bV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+ID4gPj4+Pj4+Pj4+Pj4gIAkvKiogQGRyaXZlcl9wcml2 YXRlOiBwb2ludGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29udGV4dCAqLwo+ ID4gPj4+Pj4+Pj4+Pj4gIAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKPiA+ID4+Pj4+Pj4+Pj4+ICsJ LyoqIEBvcHM6IGJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZSAq Lwo+ID4gPj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPiA+ID4+Pj4+Pj4+ Pj4+ICsJLyoqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEB0eXBlOiBUeXBlIG9mIHRoZSBjb25uZWN0 aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIChEUk1fTU9ERV9D T05ORUNUT1JfKikuIEZvciBicmlkZ2VzIGF0IHRoZSBlbmQgb2YgdGhpcyBjaGFpbiB0aGlzCj4g PiA+Pj4+Pj4+Pj4+PiArCSAqIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgY29ubmVjdGVkIGRpc3Bs YXkuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4gKwlpbnQgdHlwZTsKPiA+ ID4+Pj4+Pj4+Pj4+ICsJLyoqIHByaXZhdGU6ICovCj4gPiA+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4g Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX211dGV4OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhw ZF9kYXRhIGZpZWxkcy4KPiA+ID4+Pj4+Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+PiArCXN0 cnVjdCBtdXRleCBocGRfbXV0ZXg7Cj4gPiA+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+ Pj4gKwkgKiBAaHBkX2NiOiBIb3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2ssIHJlZ2lzdGVyZWQg d2l0aAo+ID4gPj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPiA+ID4+ Pj4+Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRfY2IpKHZvaWQgKmRh dGEsIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiA+ID4+Pj4+Pj4+Pj4+ICsJ LyoqCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBkYXRhIHBhc3NlZCB0 byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqIEBo cGRfY2IuCj4gPiA+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4gKwl2b2lkICpocGRf ZGF0YTsKPiA+ID4+Pj4+Pj4+Pj4+ICB9Owo+ID4gPj4+Pj4+Pj4+Pj4gIAo+ID4gPj4+Pj4+Pj4+ Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+ Pj4+Pj4+Pj4+PiBAQCAtNDI4LDYgKzU4OCwxNCBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX3By ZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+ICB2b2lk IGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4g Pj4+Pj4+Pj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4g PiA+Pj4+Pj4+Pj4+PiAgCj4gPiA+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9lbmFi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lk ICgqY2IpKHZvaWQgKmRhdGEsCj4gPiA+Pj4+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgc3RhdHVzKSwKPiA+ID4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICpkYXRh KTsKPiA+ID4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9u b3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+ICsJCQkgICBl bnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gPiA+Pj4+Pj4+Pj4+PiArCj4gPiA+ Pj4+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19EUk1fUEFORUxfQlJJREdFCj4gPiA+Pj4+Pj4+Pj4+ PiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fcGFu ZWwgKnBhbmVsLAo+ID4gPj4+Pj4+Pj4+Pj4gIAkJCQkJdTMyIGNvbm5lY3Rvcl90eXBlKTsKPiAK PiAtLSAKPiBSZWdhcmRzLAo+IAo+IExhdXJlbnQgUGluY2hhcnQKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=