From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v3] displif: add ABI for para-virtual display Date: Tue, 14 Feb 2017 15:27:41 -0500 Message-ID: <20170214202741.GA16871@char.us.ORACLE.com> References: <1486711798-32322-1-git-send-email-andr2000@gmail.com> <1486711798-32322-2-git-send-email-andr2000@gmail.com> <20170210212747.GA1890@char.us.ORACLE.com> 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 1cdjhd-0006fR-EO for xen-devel@lists.xenproject.org; Tue, 14 Feb 2017 20:27:57 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: Oleksandr Andrushchenko , vlad.babchuk@gmail.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , xen-devel@lists.xenproject.org, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBGZWIgMTMsIDIwMTcgYXQgMTA6NTA6NDlBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGksIEtvbnJhZCEKPiAKPiBUaGFuayB5b3UgZm9yIHJldmlld2lu ZyB0aGlzLgo+IAo+IE9uIDAyLzEwLzIwMTcgMTE6MjcgUE0sIEtvbnJhZCBSemVzenV0ZWsgV2ls ayB3cm90ZToKPiA+IE9uIEZyaSwgRmViIDEwLCAyMDE3IGF0IDA5OjI5OjU4QU0gKzAyMDAsIE9s ZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4gPiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVz aGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4gPiA+IAo+ID4gPiBU aGlzIGlzIHRoZSBBQkkgZm9yIHRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsaXplZAo+ ID4gPiBkaXNwbGF5IGRyaXZlci4KPiA+ID4gCj4gPiA+IFRoaXMgcHJvdG9jb2wgYWltcyB0byBw cm92aWRlIGEgdW5pZmllZCBwcm90b2NvbCB3aGljaCBmaXRzIG1vcmUKPiA+ID4gc29waGlzdGlj YXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1lYnVmZmVyIGRldmljZSBjYW4gaGFuZGxlLiBBdCB0 aGUKPiA+ID4gbW9tZW50IGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIHdpdGggdGhl IGludGVudGlvbiB0byBleHRlbmQ6Cj4gPiA+ICAgIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxs b2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZlcnMKPiA+ID4gICAgbyBidWZmZXJzIG9mIGFyYml0 cmFyeSBzaXplcwo+ID4gPiAgICBvIGJldHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVk aW5nIG11bHRpcGxlIGRpc3BsYXkgc3VwcG9ydAo+ID4gPiAKPiA+ID4gTm90ZTogZXhpc3Rpbmcg ZmJpZiBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIGRpc3BsaWYgcnVubmluZyBhdCB0aGUKPiA+ ID4gc2FtZSB0aW1lLCBlLmcuIG9uIExpbnV4IG9uZSBwcm92aWRlcyBmcmFtZWJ1ZmZlciBhbmQg YW5vdGhlciBEUk0vS01TCj4gPiA+IAo+ID4gPiBGdXR1cmUgZXh0ZW5zaW9ucyB0byB0aGUgZXhp c3RpbmcgcHJvdG9jb2wgbWF5IGluY2x1ZGU6Cj4gPiA+ICAgIG8gYWxsb3cgZGlzcGxheS9jb25u ZWN0b3IgY2xvbmluZwo+ID4gPiAgICBvIGFsbG93IGFsbG9jYXRpbmcgb2JqZWN0cyBvdGhlciB0 aGFuIGRpc3BsYXkgYnVmZmVycwo+ID4gPiAgICBvIGFkZCBwbGFuZXMvb3ZlcmxheXMgc3VwcG9y dAo+ID4gPiAgICBvIHN1cHBvcnQgc2NhbGluZwo+ID4gPiAgICBvIHN1cHBvcnQgcm90YXRpb24K PiA+ID4gCj4gPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Cj4gPiA+IFJhdGlvbmFsZSBmb3IgaW50cm9kdWNpbmcgdGhpcyBwcm90b2NvbCBpbnN0 ZWFkIG9mCj4gPiA+IHVzaW5nIHRoZSBleGlzdGluZyBmYmlmOgo+ID4gPiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gPiAKPiA+ID4gMS4gSW4v b3V0IGV2ZW50IHNpemVzCj4gPiA+ICAgIG8gZmJpZiAtIDQwIG9jdGV0cwo+ID4gPiAgICBvIGRp c3BsaWYgLSA0MCBvY3RldHMKPiA+ID4gVGhpcyBpcyBvbmx5IHRoZSBpbml0aWFsIHZlcnNpb24g b2YgdGhlIGRpc3BsaWYgcHJvdG9jb2wKPiA+ID4gd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSBjb3Vs ZCBiZSByZXF1ZXN0cyB3aGljaCB3aWxsIG5vdCBmaXQKPiA+ID4gKFdSVCBpbnRyb2R1Y2luZyBz b21lIEdQVSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkKPiA+ID4gbGF0ZXIgb24pLiBJbiB0aGF0IGNh c2Ugd2UgY2Fubm90IGFsdGVyIGZiaWYgc2l6ZXMgYXMgd2UgbmVlZCB0bwo+ID4gPiBiZSBiYWNr d2FyZCBjb21wYXRpYmxlIGFuIHdpbGwgYmUgZm9yY2VkIHRvIGhhbmRsZSB0aG9zZQo+ID4gPiBh cGFydCBvZiBmYmlmLgo+ID4gPiAKPiA+ID4gMi4gU2hhcmVkIHBhZ2UKPiA+ID4gRGlzcGxpZiBk b2Vzbid0IHVzZSBhbnl0aGluZyBsaWtlIHN0cnVjdCB4ZW5mYl9wYWdlLCBidXQKPiA+ID4gREVG SU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0cnVjdAo+ ID4gPiB4ZW5kaXNwbF9yZXNwKSB3aGljaCBpcyBhIGJldHRlciBhbmQgbW9yZSBjb21tb24gd2F5 Lgo+ID4gPiBPdXRwdXQgZXZlbnRzIHVzZSBhIHNoYXJlZCBwYWdlIHdoaWNoIG9ubHkgaGFzIGlu X2NvbnMgYW5kIGluX3Byb2QKPiA+ID4gYW5kIGFsbCB0aGUgcmVzdCBpcyB1c2VkIGZvciBpbmNv bWluZyBldmVudHMuIEhlcmUgc3RydWN0IHhlbmZiX3BhZ2UKPiA+ID4gY291bGQgcHJvYmFibHkg YmUgdXNlZCBhcyBpcyBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBoYXMgYSBoYWxmCj4g PiA+IG9mIGEgcGFnZSBmb3IgaW5jb21pbmcgZXZlbnRzIHdoaWNoIGlzIG9ubHkgNTAgZXZlbnRz LiAoY29uc2lkZXIKPiA+ID4gc29tZXRoaW5nIGxpa2UgNjBIeiBkaXNwbGF5KQo+ID4gPiAKPiA+ ID4gMy4gQW1vdW50IG9mIGNoYW5nZXMuCj4gPiA+IGZiaWYgb25seSBwcm92aWRlcyBYRU5GQl9U WVBFX1VQREFURSBhbmQgWEVORkJfVFlQRV9SRVNJWkUKPiA+ID4gZXZlbnRzLCBzbyBpdCBsb29r cyBsaWtlIGl0IGlzIGVhc2llciB0byBnZXQgZmIgc3VwcG9ydCBpbnRvIGRpc3BsaWYKPiA+IC4u IHdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gcmVzZXJ2ZSBzb21lIG9mIHRob3NlIHZhbHVlcyAoMiwg MykKPiA+IGluIHRoZSBYRU5ESVNQTF9PUF8gdmFsdWVzPyBTbyB0aGF0IGlmIHRoaXMgaGFwcGVu cyB0aGVyZSBpcyBhIG5pY2UKPiA+IGZpdCBpbiB0aGVyZT8gVGhvdWdodCBsb29raW5nIGF0IHRo ZSBzdHJ1Y3R1cmUgdGhlcmUgaXMgbm8gZWFzeQo+ID4gd2F5IHRvICdvdmVybGF5JyB0aGUgeGVu ZmJfb3V0X2V2ZW50IHN0cnVjdHVyZSBhcyBpdCBpcyBtaXNzaW5nIHRoZSAnaWQnLgo+ID4gCj4g PiBJIGd1ZXNzIG9uZSBjYW4gZ2V0IGNyZWF0aXZlLgo+ID4gCj4gPiBPciB5b3UgY291bGQgc3dh cCBwb3NpdGlvbnMgb2YgJ2lkJyBhbmQgJ3R5cGUnPyBBbmQgdGhlbiBpdCB3b3VsZCBmaXQgbXVj aAo+ID4gbmljZXI/Cj4geWVhcCwgaW4gb3JkZXIgbm8gb25lIG5lZWRzIHRvIGJlIGNyZWF0aXZl LCB3aHkgbm90Cj4gZXhwbGljaXRseSBkZWZpbmUgdGhvc2U/Cj4gQW55d2F5cywgaXQgd29uJ3Qg YmUgcG9zc2libGUgdG8gc2ltcGx5IGxheSB0aGUgc3RydWN0dXJlcyBmcm9tCj4gZmJpZiBvbiB0 b3Agb2YgZGlzcGxpZiAoZGlmZmVyZW50IHN0cnVjdHVyZSwgc2l6ZSwgd29ya2Zsb3cgZXRjLiks Cj4gd2hhdCBpcyBtb3JlIHRoYXQgd291bGQgZ2l2ZSBzb21lIHJvb20gdG8gZmluZCB3b3JrYXJv dW5kcywgcmF0aGVyIHRoYW4KPiBoYXZlIHdlbGwgZGVmaW5lZCBzb2x1dGlvbi4gQlRXLCB0aGVy ZSB3YXMgYW4gYXR0ZW1wdCBbMV0gdG8gdXBkYXRlCj4gZmJkZXYgdG8gbWVldCBtb2Rlcm4gYXBw bGljYXRpb24gbmVlZHMuIElmIHdlIGRlY2lkZSB0byBhZGQgRkJERVYKPiBmdW5jdGlvbmFsaXR5 IGludG8gdGhpcyBwcm90b2NvbCwgdGhlbiBJIGNhbiByZS11c2UgYWxyZWFkeQo+IHByb3ZlbiB0 byB3b3JrIHNvbHV0aW9uIGZyb20gWzFdIGludG8gRElTUExJRiwgYnV0IGRlZmluaW5nCj4gc3Ry dWN0dXJlcyBhbmQgZXZlbnRzIHRvIGZpdCB0aGUgY3VycmVudCBwcm90b2NvbC4KCkkgd2FzIHRo aW5raW5nIHRoYXQgc2luY2UgdGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyA2NGJ5dGVzCnlv dSBoYXZlIGVub3VnaCBzcGFjZSB0byBqYW0gaW4gdGhlIG9sZCBzdHJ1Y3R1cmVzIHRvby4KCk5h dHVyYWxseSB0aGUgZHJpdmVyIHdvdWxkIG5lZWQgYWRqdXN0bWVudHMgYXMgaXQgb2Zmc2V0cwpv ZiB3aGVyZSB0aGlzIGdvZXMgYXJlIGFsbCB3cm9uZy4KCj4gV2hhdCBkbyB5b3UgdGhpbms/Cj4g PiA+IHRoYW4gdmljZSB2ZXJzYS4gZGlzcGxpZiBhdCB0aGUgbW9tZW50IGhhcyA2IHJlcXVlc3Rz IGFuZCAxIGV2ZW50LAo+ID4gPiBtdWx0aXBsZSBjb25uZWN0b3Igc3VwcG9ydCwgZXRjLgo+ID4g PiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MjoKPiA+ID4gICAqIHVwZGF0ZWQgWGVuU3RvcmUgY29u ZmlndXJhdGlvbiB0ZW1wbGF0ZS9wYXR0ZXJuCj4gPiA+ICAgKiBhZGRlZCAiUmVjb3ZlcnkgZmxv dyIgdG8gc3RhdGUgZGlhZ3JhbSBkZXNjcmlwdGlvbgo+ID4gPiAgICogcmVuYW1lZCBncmVmX2Rp cmVjdG9yeV9zdGFydCB0byBncmVmX2RpcmVjdG9yeQo+ID4gPiAgICogYWRkZWQgbWlzc2luZyAi dmVyc2lvbnMiIGFuZCAidmVyc2lvbiIgc3RyaW5nIGNvbnN0YW50cwo+ID4gPiAKPiA+ID4gQ2hh bmdlcyBzaW5jZSB2MToKPiA+ID4gICAqIGZpeGVkIHhlbmRpc3BsX2V2ZW50X3BhZ2UgcGFkZGlu ZyBzaXplCj4gPiA+ICAgKiBhZGRlZCB2ZXJzaW9uaW5nIHN1cHBvcnQKPiA+ID4gICAqIGV4cGxp Y2l0bHkgZGVmaW5lIHZhbHVlIHR5cGVzIGZvciBYZW5TdG9yZSBmaWVsZHMKPiA+ID4gICAqIHRl eHQgZGVjb3JhdGlvbiByZS13b3JrCj4gPiA+ICAgKiBhZGRlZCBvZmZzZXRzIHRvIEFTQ0lJIGJv eCBub3RhdGlvbgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSBpbml0aWFsOgo+ID4gPiAgICog RFJNIGNoYW5nZWQgdG8gRElTUEwsIHByb3RvY29sIG1hZGUgZ2VuZXJpYwo+ID4gPiAgICogbWFq b3IgcmUtd29yayBhZGRyZXNzaW5nIGlzc3VlcyByYWlzZWQgZm9yIHNuZGlmCj4gPiA+IAo+ID4g PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBh bS5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVr c2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICAgeGVuL2luY2x1 ZGUvcHVibGljL2lvL2Rpc3BsaWYuaCB8IDc3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDc3OCBpbnNlcnRpb25zKCspCj4g PiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgK PiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5o IGIveGVuL2luY2x1ZGUvcHVibGljL2lvL2Rpc3BsaWYuaAo+ID4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg0OWYyN2ZlNWYxZAo+ID4gPiAtLS0gL2Rl di9udWxsCj4gPiA+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgKPiA+ID4g QEAgLTAsMCArMSw3NzggQEAKPiA+ID4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAq IGRpc3BsaWYuaAo+ID4gPiArICoKPiA+ID4gKyAqIFVuaWZpZWQgZGlzcGxheSBkZXZpY2UgSS9P IGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEgY29weQo+ID4gPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gPiA+ICsgKiBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZQo+ID4gPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gPiA+ICsgKiBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT b2Z0d2FyZSBpcwo+ID4gPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bgo+ID4gPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCj4gPiA+ICsgKgo+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gPiA+ICsgKiBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCj4gPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4gPiArICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ ID4gPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ID4gPiArICoKPiA+ID4gKyAqIENv cHlyaWdodCAoQykgMjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCj4gPiA+ICsgKgo+ID4gPiAr ICogQXV0aG9yczogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hl bmtvQGVwYW0uY29tPgo+ID4gPiArICogICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtz YW5kcl9ncnl0c292QGVwYW0uY29tPgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpZm5kZWYg X19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCj4gPiA+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19J T19ESVNQTElGX0hfXwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSAicmluZy5oIgo+ID4gPiArI2lu Y2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gPiA+ICsgKiAgICAgICAgICAgICAgICAgIE1haW4gZmVhdHVyZXMg cHJvdmlkZWQgYnkgdGhlIHByb3RvY29sCj4gPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g PiA+ICsgKiBUaGlzIHByb3RvY29sIGFpbXMgdG8gcHJvdmlkZSBhIHVuaWZpZWQgcHJvdG9jb2wg d2hpY2ggZml0cyBtb3JlCj4gPiA+ICsgKiBzb3BoaXN0aWNhdGVkIHVzZS1jYXNlcyB0aGFuIGEg ZnJhbWVidWZmZXIgZGV2aWNlIGNhbiBoYW5kbGUuIEF0IHRoZQo+ID4gPiArICogbW9tZW50IGJh c2ljIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGludGVudGlvbiB0byBiZSBl eHRlbmRlZDoKPiA+ID4gKyAqICBvIG11bHRpcGxlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC9kZXN0 cm95ZWQgZnJhbWVidWZmZXJzCj4gPiA+ICsgKiAgbyBidWZmZXJzIG9mIGFyYml0cmFyeSBzaXpl cwo+ID4gPiArICogIG8gYnVmZmVyIGFsbG9jYXRpb24gYXQgZWl0aGVyIGJhY2sgb3IgZnJvbnQg ZW5kCj4gPiA+ICsgKiAgbyBiZXR0ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyBt dWx0aXBsZSBkaXNwbGF5IHN1cHBvcnQKPiA+ID4gKyAqCj4gPiA+ICsgKiBOb3RlOiBleGlzdGlu ZyBmYmlmIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlzcGxpZiBydW5uaW5nIGF0IHRoZQo+ ID4gPiArICogc2FtZSB0aW1lLCBlLmcuIG9uIExpbnV4IG9uZSBwcm92aWRlcyBmcmFtZWJ1ZmZl ciBhbmQgYW5vdGhlciBEUk0vS01TCj4gPiA+ICsgKgo+ID4gPiArICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gb2YgaW1wcm92 ZW1lbnRzCj4gPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gPiA+ICsgKiBGdXR1cmUgZXh0 ZW5zaW9ucyB0byB0aGUgZXhpc3RpbmcgcHJvdG9jb2wgbWF5IGluY2x1ZGU6Cj4gPiA+ICsgKiAg byBkaXNwbGF5L2Nvbm5lY3RvciBjbG9uaW5nCj4gPiA+ICsgKiAgbyBhbGxvY2F0aW9uIG9mIG9i amVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKPiA+ID4gKyAqICBvIHBsYW5lL292ZXJs YXkgc3VwcG9ydAo+ID4gPiArICogIG8gc2NhbGluZyBzdXBwb3J0Cj4gPiA+ICsgKiAgbyByb3Rh dGlvbiBzdXBwb3J0Cj4gPiA+ICsgKgo+ID4gPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4g PiArICogICAgICAgICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24K PiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqCj4gPiA+ICsgKiBGcm9udC0+ YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXF1ZXN0LCBzZW5kaW5n IGEKPiA+ID4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBvbiB4ZW5k aXNwbF9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCj4gPiA+ICsgKiBob2xkLW9mZiBtZWNoYW5pc20g cHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKPiA+ID4gKyAq IHhlbmRpc3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNL X0ZPUl9SRVFVRVNUUygpKS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBCYWNrLT5mcm9udCBub3RpZmlj YXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwgc2VuZGluZyBhCj4gPiA+ICsg KiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuZGlzcGxfcmVzcCAo aS5lLiwgdGhlIGdlbmVyaWMKPiA+ID4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBi eSB0aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKPiA+ID4gKyAqIHhlbmRpc3Bs X3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVT UE9OU0VTKCkpLgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12 aXJ0dWFsIGRpc3BsYXkgZHJpdmVyIHV0aWxpemUgbm9kZXMgd2l0aGluCj4gPiA+ICsgKiBYZW5T dG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRp bmcgcGFyYW1ldGVycy4KPiA+ID4gKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5v ZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKPiA+ID4gKyAqIGJh Y2tlbmQgcG9ydGlvbnMgb2YgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRp b24uCj4gPiA+ICsgKgo+ID4gPiArICogQWxsIGRhdGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFz IHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYwo+ID4gPiArICogdmFsdWVzIGFyZSBl bmNvZGVkIGluIGRlY2ltYWwuIEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUK PiA+ID4gKyAqIGV4cHJlc3NlZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUg b2Ygc3RvcmluZyB0aGUgY29udmVyc2lvbgo+ID4gPiArICogb2YgYSBwcm9wZXJseSBmb3JtYXRl ZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgo+ID4gPiArICoKPiA+ ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCj4gPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g PiA+ICsgKgo+ID4gPiArICogTm90ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5k IGNhbiBleHBvc2UgbW9yZSBkaXNwbGF5IGNvbm5lY3RvcnMKPiA+ID4gKyAqIHRoYW4gdGhlIHVu ZGVybHlpbmcgSFcgcGh5c2ljYWxseSBoYXMgYnkgZW1wbG95aW5nIFNXIGdyYXBoaWNzIGNvbXBv c2l0b3JzCj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQg YW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246Cj4gPiA+ICsgKgo+ID4gPiArICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4gPiArICoKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3Zk aXNwbC8xLzAvZnJvbnRlbmQtaWQgPSAiMSIKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNr ZW5kL3ZkaXNwbC8xLzAvZnJvbnRlbmQgPSAiL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwv MCIKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvc3RhdGUgPSAi NCIKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvdmVyc2lvbnMg PSAiMSwyIgo+ID4gPiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC9mZWF0 dXJlcyA9ICJiZV9hbGxvYyIKPiA+ID4gKyAqCj4gPiA+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBGcm9udGVuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPiA+ICsgKgo+ID4gPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9iYWNr ZW5kLWlkID0gIjAiCj4gPiA+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2Jh Y2tlbmQgPSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMCIKPiA+ID4gKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvc3RhdGUgPSAiNCIKPiA+ID4gKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+ID4gPiArICoKPiA+ID4g KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIDAgY29uZmlndXJhdGlvbiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gKyAqCj4gPiA+ICsgKiAvbG9jYWwvZG9tYWlu LzEvZGV2aWNlL3ZkaXNwbC8wLzAvcmVzb2x1dGlvbiA9ICIxOTIweDEwODAiCj4gPiA+ICsgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvY3RybC1yaW5nLXJlZiA9ICIyODMyIgo+ ID4gPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL2N0cmwtY2hhbm5lbCA9 ICIxNSIKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9ldmVudC1y aW5nLXJlZiA9ICIzODciCj4gPiA+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8w LzAvZXZlbnQtY2hhbm5lbCA9ICIxNiIKPiA+ID4gKyAqCj4gPiA+ICsgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIENvbm5lY3RvciAxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gPiA+ICsgKgo+ID4gPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwv MC8xL3Jlc29sdXRpb24gPSAiODAweDYwMCIKPiA+ID4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdmRpc3BsLzAvMS9jdHJsLXJpbmctcmVmID0gIjI4MzMiCj4gPiA+ICsgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvY3RybC1jaGFubmVsID0gIjE3Igo+ID4gPiArICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2ZW50LXJpbmctcmVmID0gIjM4OCIKPiA+ ID4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9ldmVudC1jaGFubmVsID0g IjE4Igo+ID4gPiArICoKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCj4gPiA+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCj4gPiA+ICsgKgo+ID4gPiArICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ID4gPiArICoKPiA+ID4gKyAqIHZlcnNpb25zCj4gPiA+ICsgKiAgICAgIFZhbHVlczogICAg ICAgICA8c3RyaW5nPgo+ID4gPiArICoKPiA+ID4gKyAqICAgICAgTGlzdCBvZiBYRU5ESVNQTF9M SVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9ydGVkCj4gPiA+ ICsgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAiMSwyLDMiLgo+ID4gPiArICoK PiA+ID4gKyAqIGZlYXR1cmVzCj4gPiA+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBv ZiBzdHJpbmdzPgo+ID4gPiArICoKPiA+ID4gKyAqICAgICAgWEVORElTUExfTElTVF9TRVBBUkFU T1Igc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMKPiA+ID4gKyAqICAgICAgWEVORElTUExfRkVB VFVSRV9CRV8/Pz8gdGhhdCB0aGUgYmFja2VuZCBzdXBwb3J0cy4KPiA+ID4gKyAqCj4gPiA+ICsg KiAgICAgIGJlX2FsbG9jCj4gPiA+ICsgKiAgICAgICAgICAgICBCYWNrZW5kIGNhbiBiZSBhIGJ1 ZmZlciBwcm92aWRlci9hbGxvY2F0b3IgZHVyaW5nCj4gPiA+ICsgKiAgICAgICAgICAgICBYRU5E SVNQTF9PUF9EQlVGX0NSRUFURSBvcGVyYXRpb24gKHNlZSBiZWxvdyBmb3IgbmVnb3RpYXRpb24p Lgo+ID4gPiArICoKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBOb2Rlcwo+ID4gPiArICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgo+ID4gPiArICoKPiA+ID4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiA+ID4gKyAqCj4gPiA+ICsgKiBkb20taWQKPiA+ID4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDx1aW50MTZfdD4KPiA+ID4gKyAqCj4gPiA+ICsgKiAgICAgIERvbWFpbiBpZGVudGlmaWVyLgo+ ID4gPiArICoKPiA+ID4gKyAqIGRldi1pZAo+ID4gPiArICogICAgICBWYWx1ZXM6ICAgICAgICAg PHVpbnQxNl90Pgo+ID4gPiArICoKPiA+ID4gKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIuCj4g PiA+ICsgKgo+ID4gPiArICogY29ubi1pZHgKPiA+ID4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDx1aW50OF90Pgo+ID4gPiArICoKPiA+ID4gKyAqICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMg aW5kZXggb2YgdGhlIGNvbm5lY3Rvci4KPiA+ID4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9t LWlkPi9kZXZpY2UvdmRpc3BsLzxkZXYtaWQ+Lzxjb25uLWlkeD4vLi4uCj4gPiA+ICsgKgo+ID4g PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiArICoKPiA+ID4gKyAqIHZlcnNpb24KPiA+ ID4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+Cj4gPiA+ICsgKgo+ID4gPiArICog ICAgICBQcm90b2NvbCB2ZXJzaW9uLCBjaG9zZW4gYW1vbmcgdGhlIG9uZXMgc3VwcG9ydGVkIGJ5 IHRoZSBiYWNrZW5kLgo+ID4gPiArICoKPiA+ID4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gQ29ubmVjdG9yIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ ID4gKyAqCj4gPiA+ICsgKiByZXNvbHV0aW9uCj4gPiA+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50MzJfdD4KPiA+ID4gKyAqCj4gPiA+ICsg KiAgICAgIFdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGNvbm5lY3RvciBpbiBwaXhlbHMgc2VwYXJh dGVkIGJ5Cj4gPiA+ICsgKiAgICAgIFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9SLgo+ID4g SXMgdGhlcmUgYW4gZGVmYXVsdCBkZXB0aD8KPiBubwo+ID4gICAzMj8KPiBubyBkZWZhdWx0cwoK U2hvdWxkIHdlIGhhdmUgYSBkZWZhdWx0PwoKQW5kIHBlcmhhcHMgYWxzbyBzYXkgdGhhdCBhbGwg dGhlIG9wZXJhdGlvbnMgYXJlIGJvdW5kZWQgYnkgdGhlc2U/Cgo+ID4gICBPciBzaG91bGQgdGhh dCBhbHNvIGJlIG5lZ290aWF0ZWQ/Cj4gZnJvbnRlbmQgcmVxdWVzdHMgdGhlIGRlc2lyZWQgdmFs dWUgb2YgaXQsIGJhY2tlbmQgcHJvdmlkZXMgaXQKPiBvciByZWplY3RzIHRoZSByZXF1ZXN0LCBz byBmcm9udCB3aWxsIHRyeSBvdGhlciB2YWx1ZS4KPiBTbywgeWVzLCB0aGlzIGlzIGtpbmQgb2Yg bmVnb3RpYXRpb24gaGVyZSAoRUlOVkFMIGJhc2VkIDopCgo+IAo+IEkgd2lsbCBhbHNvIHB1dCBh IG5vdGUgdGhhdCAicmVzb2x1dGlvbiIgb25seSBkZWZpbmVzIHZpc2libGUgYXJlYSwKPiB0aHVz IGRpc3BsYXkgYW5kIGZyYW1lIGJ1ZmZlciBzaXplcyBjYW4gYmUgZGlmZmVyZW50IGZyb20gdGhp cyB2YWx1ZQoKT0ssIHdoaWNoIEkgc3VzcGVjdCBtZWFucyB0aGF0IGl0IGNhbiBvbmx5IGJlIHNt YWxsZXIsIG5vdCBsYXJnZXIuCgo+ID4gPiArICoKPiA+ID4gKyAqLS0tLS0tLS0tLS0tLS0tLS0t IENvbm5lY3RvciBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0t LS0KPiA+ID4gKyAqCj4gPiA+ICsgKiBjdHJsLWNoYW5uZWwKPiA+IFBsZWFzZSBjYWxsIGl0ICdj dHJsLWV2ZW50LWNoYW5uZWwnCj4gSSB3aWxsCj4gPiA+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8dWludDMyX3Q+Cj4gPiA+ICsgKgo+ID4gPiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0 aGUgWGVuIGNvbm5lY3RvcidzIGNvbnRyb2wgZXZlbnQgY2hhbm5lbAo+ID4gPiArICogICAgICB1 c2VkIHRvIHNpZ25hbCBhY3Rpdml0eSBpbiB0aGUgcmluZyBidWZmZXIuCj4gPiA+ICsgKgo+ID4g PiArICogY3RybC1yaW5nLXJlZgo+ID4gPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQz Ml90Pgo+ID4gPiArICoKPiA+ID4gKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3Jh bnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCj4gPiA+ICsgKiAgICAgIGEg c29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVjdG9yJ3MgY29udHJvbCByaW5n IGJ1ZmZlci4KPiA+ID4gKyAqCj4gPiA+ICsgKiBldmVudC1jaGFubmVsCj4gPiA+ICsgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cj4gPiA+ICsgKgo+ID4gPiArICogICAgICBUaGUg aWRlbnRpZmllciBvZiB0aGUgWGVuIGNvbm5lY3RvcidzIGV2ZW50IGNoYW5uZWwKPiA+ID4gKyAq ICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJpbmcgYnVmZmVyLgo+ID4gPiAr ICoKPiA+ID4gKyAqIGV2ZW50LXJpbmctcmVmCj4gPiA+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8dWludDMyX3Q+Cj4gPiA+ICsgKgo+ID4gPiArICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVy ZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKPiA+ID4gKyAq ICAgICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25uZWN0b3IncyBldmVu dCByaW5nIGJ1ZmZlci4KPiA+IFNvIHlvdSBhcmUgbWFraW5nIHR3byByaW5ncyBhbmQgdHdvIGV2 ZW50IGNoYW5uZWxzIC0gYW5kIGl0IGxvb2tzIGxpa2UgdGhlCj4gPiBvcGVyYXRpb25zIGFyZSBn b2luZyB2aWEgdGhlIGNvbnRyb2wgcmluZy4uIGJ1dCB3aGF0IGdvZXMgdGhyb3VnaCB0aGUKPiA+ IHRoZSBvdGhlciByaW5nIGJ1ZmZlcj8KPiBFdmVudHMgZnJvbSBiYWNrZW5kIHRvIGZyb250ZW5k LCBjdXJyZW50bHkgb25seSBYRU5ESVNQTF9FVlRfUEdfRkxJUAoKQWFhYWFoISBJbiB0aGF0IGNh c2UgSSB3b3VsZCBjaGFuZ2UgaXQgZnJvbSAnY3RybC0nIHRvIAoncmVxLWFsbG9jJyB0byBtYXRj aCB3aXRoLgoKPiBJIHdpbGwgZGVmaW5lIDIgc2VjdGlvbnM6Cj4gICotLS0tLS0tLS0tLS0tLS0t LS0gQ29ubmVjdG9yIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMKPiAtLS0tLS0tLS0tLS0t LS0tLS0tCj4gICoKPiAgKiBjdHJsLWV2ZW50LWNoYW5uZWwKPiAgKiBjdHJsLXJpbmctcmVmCj4g ICoKPiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIEV2ZW50IFRyYW5zcG9ydCBQYXJh bWV0ZXJzCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgKgo+ICAqIGV2ZW50LWNoYW5uZWwKPiAg KiBldmVudC1yaW5nLXJlZgo+IAo+ID4gT3IgaXMgdGhlIG90aGVyIHJpbmcgYnVmZmVyIHRoZSBv bmUgdGhhdCBpcyBjcmVhdGVkIHZpYSAnZ3JlZl9kaXJlY3RvcnknID8KPiBubwo+IEF0IHRoZSBi b3R0b206Cj4gICogSW4gb3JkZXIgdG8gZGVsaXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20g YmFjayB0byBmcm9udCBhIHNoYXJlZCBwYWdlCj4gaXMKPiAgKiBhbGxvY2F0ZWQgYnkgZnJvbnQg YW5kIGl0cyBncmVmIHByb3BhZ2F0ZWQgdG8gYmFjayB2aWEgWGVuU3RvcmUgZW50cmllcwo+ICAq IChldmVudC1YWFgpLgoKQUFuZCB5b3UgbWF5IHdhbnQgdG8gc2F5IHRoaXMgaXMgZ3VhcmRlZCBi eSBSRVFfQUxMT0MgZmVhdHVyZSByaWdodD8KPiAKPiA+IElmIHNvLCB3b3VsZG4ndCB5b3UgbmVl ZCBtdWxpdHBsZSBldmVudCBjaGFubmVscz8gQW5kIGFsc28gdGhlIHNpemUgb2YgdGhvc2UKPiA+ IHJpbmdzIGlzIG11Y2ggbXVjaCBiaWdnZXIuIEJ1dCBpdCBpcyBub3QgcmVhbGx5IGEgcmluZy4g SXQgbG9va3MgdG8gaG9sZAo+ID4gc29tZSBvcGFxdWUgZGF0YT8KPiA+IAo+ID4gLUVDT05GVVNF RC4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVEUgRElBR1JB TVMKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqCj4gPiA+ICsgKiBUb29s IHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUgbm9kZXMgd2l0aCBpbml0aWFsIHN0 YXRlCj4gPiA+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KPiA+ID4gKyAqIFRvb2wgc3Rh Y2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24KPiA+ ID4gKyAqIG5vZGVzIHBlciBkb21haW4uCj4gPiA+ICsgKgo+ID4gPiArICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBOb3JtYWwgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ID4gPiArICoKPiA+ID4gKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCYWNrCj4gPiA+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gPiArICogWGVuYnVz U3RhdGVJbml0aWFsaXNpbmcgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nCj4g PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgYmFj a2VuZCBkZXZpY2UgaWRlbnRpZmljYXRpb24KPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhLgo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvIE9wZW4gYW5kIHZhbGlkYXRlIGJhY2tlbmQgZGV2aWNlLgo+ID4g PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4g PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK PiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Vgo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0 YXRlSW5pdFdhaXQKPiA+ID4gKyAqCj4gPiA+ICsgKiBvIFF1ZXJ5IGZyb250ZW5kIGNvbmZpZ3Vy YXRpb24KPiA+ID4gKyAqIG8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUKPiA+ID4gKyAqICAgZXZl bnQgY2hhbm5lbHMgcGVyIGNvbmZpZ3VyZWQKPiA+ID4gKyAqICAgY29ubmVjdG9yLgo+ID4gPiAr ICogbyBQdWJsaXNoIHRyYW5zcG9ydCBwYXJhbWV0ZXJzCj4gPiA+ICsgKiAgIHRoYXQgd2lsbCBi ZSBpbiBlZmZlY3QgZHVyaW5nCj4gPiA+ICsgKiAgIHRoaXMgY29ubmVjdGlvbi4KPiA+ID4gKyAq ICAgICAgICAgICAgICB8Cj4gPiA+ICsgKiAgICAgICAgICAgICAgfAo+ID4gPiArICogICAgICAg ICAgICAgIFYKPiA+ID4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQKPiA+ID4gKyAqCj4gPiA+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgZnJvbnRl bmQgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCj4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0byB0aGUgZXZlbnQgY2hhbm5lbHMuCj4gPiA+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiA+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ID4g PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCj4g PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVD b25uZWN0ZWQKPiA+ID4gKyAqCj4gPiA+ICsgKiAgbyBDcmVhdGUgYW5kIGluaXRpYWxpemUgT1MK PiA+ID4gKyAqICAgIHZpcnR1YWwgZGlzcGxheSBjb25uZWN0b3JzCj4gPiA+ICsgKiAgICBhcyBw ZXIgY29uZmlndXJhdGlvbi4KPiA+ID4gKyAqICAgICAgICAgICAgICB8Cj4gPiA+ICsgKiAgICAg ICAgICAgICAgfAo+ID4gPiArICogICAgICAgICAgICAgIFYKPiA+ID4gKyAqIFhlbmJ1c1N0YXRl Q29ubmVjdGVkCj4gPiA+ICsgKgo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhlbmJ1c1N0YXRlVW5rbm93bgo+ID4gPiArICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCj4gPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zaW5nCj4gPiA+ICsgKiBv IFJlbW92ZSB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlCj4gPiA+ICsgKiBvIFJlbW92ZSBldmVudCBj aGFubmVscwo+ID4gPiArICogICAgICAgICAgICAgIHwKPiA+ID4gKyAqICAgICAgICAgICAgICB8 Cj4gPiA+ICsgKiAgICAgICAgICAgICAgVgo+ID4gPiArICogWGVuYnVzU3RhdGVDbG9zZWQKPiA+ ID4gKyAqCj4gPiA+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVjb3Zlcnkg ZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICsgKgo+ID4gPiArICog SW4gY2FzZSBvZiBmcm9udGVuZCB1bnJlY292ZXJhYmxlIGVycm9ycyBiYWNrZW5kIGhhbmRsZXMg dGhhdCBhcwo+ID4gPiArICogaWYgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUNs b3NlZCBzdGF0ZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBJbiBjYXNlIG9mIGJhY2tlbmQgdW5yZWNv dmVyYWJsZSBlcnJvcnMgZnJvbnRlbmQgdHJpZXMgcmVtb3ZpbmcKPiA+ID4gKyAqIHRoZSBlbXVs YXRlZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9zc2libGUgYXQgdGhlIG1vbWVudCBvZiBlcnJvciwK PiA+IFdoYXQgZW11bGF0ZWQgZGV2aWNlPwo+IHMvZW11bGF0ZWQvdmlydHVhbGl6ZWQvZyBmb3Ig YWxsPwoKL21lIG5vZHMuCj4gPiAKPiA+ID4gKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRo ZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCj4gPiA+ICsg KiBuZXcgY29ubmVjdGlvbiB3aXRoIGJhY2tlbmQuIElmIHRoZSBlbXVsYXRlZCBkZXZpY2UgaXMg c3RpbGwgaW4gdXNlIGFuZAo+ID4gZW11bGF0ZWQgZGV2aWNlPwo+ID4gCj4gPiA+ICsgKiBjYW5u b3QgYmUgcmVtb3ZlZCwgdGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlUmVj b25maWd1cmluZyBzdGF0ZQo+ID4gLi4gYW5kIHdoYXQgaXMgZG9uZSBpbiBYZW5idXNTdGF0ZVJl Y29uZmlndXJpbmcgc3RhdGU/Cj4gPiAKPiA+IEkgYW0gYXNzdW1pbmcgJ3Jlc29sdXRpb24nIGlz IGV4YW1pbmVkPwo+ID4gCj4gPiA+ICsgKiB1bnRpbCBlaXRoZXIgdGhlIGVtdWxhdGVkIGRldmlj ZSByZW1vdmVkIG9yIGJhY2tlbmQgaW5pdGlhdGVzIGEgbmV3Cj4gPiA+ICsgKiBjb25uZWN0aW9u LiBPbiB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlbW92YWwgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZQo+ ID4gZW11bGF0ZWQgZGV2aWNlPwo+IFRoZSB3aG9sZSBpZGVhIGhlcmUgaXMgdG8gbGV0IGZyb250 ZW5kIHJlY292ZXIgZnJvbSBiYWNrZW5kIGZhaWx1cmUuCj4gV2hhdCBoYXBwZW5zIHdoZW4gYmFj a2VuZCBkaWVzOiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cwo+IHRvIHRoZSBiYWNrZW5k IGFuZCB0aHVzIGNhbm5vdCBlbXVsYXRlICh2aXJ0dWFsaXplKSBkaXNwbGF5Cj4gZGV2aWNlIGFu eW1vcmUuIFRoZXJlIGlzIG5vIHNpbXBsZSBzb2x1dGlvbiBsaWtlIGRpc2Nvbm5lY3Rpbmcgcmlu Z3MKPiBhbmQgd2FpdGluZyBmb3IgdGhlIGJhY2tlbmQgdG8gcmUtY29ubmVjdCwgYXMgZGlzcGxh eSBkZXZpY2UsIGp1c3QgbGlrZQo+IHNvdW5kIGRldmljZXMsIGRvZXMgaG9sZCBzb21lIHN0YXRl OiBjb25maWd1cmF0aW9uIGluIHVzZSwgbnVtYmVyIG9mIGRpc3BsYXkKPiBidWZmZXJzLCBmcmFt ZWJ1ZmZlcnMsIGFwcGxpY2F0aW9uIHN0YXRlLCBmcmFtZXdvcmsgIndhdGNoZG9ncyIgKGxpa2UK PiB2ZXJ0aWNhbCBibGFuayB0aW1lLW91dHMgYW5kIHJlY292ZXJ5IGF0IGZyYW1ld29yayBsZXZl bCkgZXRjLgo+IFNvLCBpbiBtb3N0IGNhc2VzLCBpdCB3b3VsZCByZXF1aXJlIGZyb250ZW5kIHRv IGltcGxlbWVudCBjb21wbGV4IHJlY292ZXJ5Cj4gbG9naWMuIEluc3RlYWQsIHdoYXQgSSBzdWdn ZXN0LCB0aGF0IHdlIGdvIGludG8gc29tZSBzdGF0ZSwgd2hpY2ggdGVsbHMgdGhhdAo+IHdlIGFy ZSBub3QgeWV0IHJlYWR5IHRvIGdvIGludG8gSW5pdGlhbGl6ZWQgc3RhdGUgYW5kIHN0aWxsIG5l ZWQgc29tZSB0aW1lOgo+IGF0IHRoaXMgdGltZSBmcm9udGVuZCB3aWxsIHRyeSB0byBtYWtlIHN1 cmUgbm8gbmV3IGNsaWVudHMgZnJvbSB1c2VyLXNwYWNlCj4gYXJlIGFjY2VwdGVkLCBpdCBhbGxv d3MgdGhlIGN1cnJlbnQgY2xpZW50IHRvIGV4aXQgZ3JhY2VmdWxseSBieSByZXR1cm5pbmcKPiBl cnJvciBjb2RlcyBldGMuIE9uY2UgYWxsIHRoZSBjbGllbnRzIGFyZSBnb25lIGZyb250ZW5kIGNh biByZWluaXRpYWxpemUKPiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlLCBlLmcuIERSTS9LTVMgZHJp dmVyLCBhbmQgZ2V0IGludG8gSW5pdGlhbGl6ZWQgc3RhdGUKPiBhZ2Fpbi4KClRoYXQgaXMgZmlu ZS4KPiBUaHVzLCBJIHdhcyB0aGlua2luZyBvZiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmdzdGF0 ZSBhcyBhcHByb3ByaWF0ZSBpbiB0aGlzCj4gY2FzZQoKUmlnaHQsIGJ1dCBzb21lYm9keSBoYXMg dG8gbW92ZSB0byB0aGlzIHN0YXRlLiBXaG8gd291bGQgZG8gaXQ/IFdvdWxkIHRoZQpmcm9udGVu ZCBoYXZlIHNvbWUgZm9ybSBvZiB0aW1lciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYmFja2VuZCBp cyBzdGlsbAphbGl2ZT8gQW5kIGlmIGl0IGhhZCBkaWVkIHRoZW4gbW92ZSB0byBSZWNvbmZpZ3Vy aW5nPwoKPiA+ID4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nIHN0YXRlLgo+ID4gPiArICoK PiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSRVFVRVNUIENPREVTCj4gPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g PiA+ICsgKi8KPiA+ID4gKyNkZWZpbmUgWEVORElTUExfT1BfREJVRl9DUkVBVEUgICAgICAgMAo+ ID4gPiArI2RlZmluZSBYRU5ESVNQTF9PUF9EQlVGX0RFU1RST1kgICAgICAxCj4gPiA+ICsjZGVm aW5lIFhFTkRJU1BMX09QX0ZCX0FUVEFDSCAgICAgICAgIDIKPiA+ID4gKyNkZWZpbmUgWEVORElT UExfT1BfRkJfREVUQUNIICAgICAgICAgMwo+ID4gPiArI2RlZmluZSBYRU5ESVNQTF9PUF9TRVRf Q09ORklHICAgICAgICA0Cj4gPiA+ICsjZGVmaW5lIFhFTkRJU1BMX09QX1BHX0ZMSVAgICAgICAg ICAgIDUKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09ERVMKPiA+ID4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqLwo+ID4gPiArI2RlZmluZSBYRU5ESVNQ TF9FVlRfUEdfRkxJUCAgICAgICAgICAwCj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gPiA+ICsgKiAgICAgICAgICAgICAgIFhFTlNUT1JFIEZJRUxEIEFO RCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUwo+ID4gPiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ID4gPiArICovCj4gPiA+ICsjZGVmaW5lIFhFTkRJU1BMX0RSSVZFUl9OQU1FICAgICAgICAg ICJ2ZGlzcGwiCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfTElTVF9TRVBBUkFUT1Ig ICAgICAgIiwiCj4gPiA+ICsjZGVmaW5lIFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9SICJ4 Igo+ID4gPiArLyogRmllbGQgbmFtZXMgKi8KPiA+ID4gKyNkZWZpbmUgWEVORElTUExfRklFTERf QkVfVkVSU0lPTlMgICAgInZlcnNpb25zIgo+ID4gPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9G RV9WRVJTSU9OICAgICAidmVyc2lvbiIKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRkVB VFVSRVMgICAgICAgImZlYXR1cmVzIgo+ID4gPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9DVFJM X1JJTkdfUkVGICAiY3RybC1yaW5nLXJlZiIKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfRklFTERf Q1RSTF9DSEFOTkVMICAgImN0cmwtY2hhbm5lbCIKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfRklF TERfRVZUX1JJTkdfUkVGICAgImV2ZW50LXJpbmctcmVmIgo+ID4gPiArI2RlZmluZSBYRU5ESVNQ TF9GSUVMRF9FVlRfQ0hBTk5FTCAgICAiZXZlbnQtY2hhbm5lbCIKPiA+ID4gKyNkZWZpbmUgWEVO RElTUExfRklFTERfUkVTT0xVVElPTiAgICAgInJlc29sdXRpb24iCj4gPiA+ICsKPiA+ID4gKyNk ZWZpbmUgWEVORElTUExfRkVBVFVSRV9CRV9BTExPQyAgICAgImJlX2FsbG9jIgo+ID4gPiArCj4g PiA+ICsvKgo+ID4gPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4gPiArICogICAgICAgICAg ICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKPiA+ID4gKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKPiA+ID4gKyAqCj4gPiA+ICsgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBv biBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgo+ID4gPiArICoKPiA+ID4gKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QXNzdW1wdGlvbnMKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqIG8gdXNh Z2Ugb2YgZ3JhbnQgcmVmZXJlbmNlIDAgYXMgaW52YWxpZCBncmFudCByZWZlcmVuY2U6Cj4gPiA+ ICsgKiAgIGdyYW50IHJlZmVyZW5jZSAwIGlzIHZhbGlkLCBidXQgbmV2ZXIgZXhwb3NlZCB0byBh IFBWIGRyaXZlciwKPiA+ID4gKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5 IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KPiA+ID4gKyAqIG8gYWxsIHJlZmVy ZW5jZXMgaW4gdGhpcyBkb2N1bWVudCB0byBwYWdlIHNpemVzIG11c3QgYmUgdHJlYXRlZAo+ID4g PiArICogICBhcyBwYWdlcyBvZiBzaXplIFhFTl9QQUdFX1NJWkUgdW5sZXNzIG90aGVyd2lzZSBu b3RlZC4KPiA+ID4gKyAqCj4gPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gPiA+ICsgKiAg ICAgICBEZXNjcmlwdGlvbiBvZiB0aGUgcHJvdG9jb2wgYmV0d2VlbiBmcm9udGVuZCBhbmQgYmFj a2VuZCBkcml2ZXIKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqCj4gPiA+ ICsgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEtdmlydHVhbCBkaXNwbGF5IGRyaXZlciBjb21t dW5pY2F0ZSB3aXRoCj4gPiA+ICsgKiBlYWNoIG90aGVyIHVzaW5nIHNoYXJlZCBwYWdlcyBhbmQg ZXZlbnQgY2hhbm5lbHMuCj4gPiA+ICsgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcgd2l0 aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCj4gPiA+ICsgKgo+ID4gPiArICogQWxsIHJlc2Vy dmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCj4gPiA+ICsgKiBE aXNwbGF5IGJ1ZmZlcnMncyBjb29raWUgb2YgdmFsdWUgMCB0cmVhdGVkIGFzIGludmFsaWQuCj4g PiA+ICsgKiBGcmFtZWJ1ZmZlcidzIGNvb2tpZSBvZiB2YWx1ZSAwIHRyZWF0ZWQgYXMgaW52YWxp ZC4KPiA+ID4gKyAqCj4gPiA+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g UmVxdWVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICsgKgo+ID4g PiArICogQWxsIHJlcXVlc3RzL3Jlc3BvbnNlcywgd2hpY2ggYXJlIG5vdCBjb25uZWN0b3Igc3Bl Y2lmaWMsIG11c3QgYmUgc2VudCBvdmVyCj4gPiA+ICsgKiBjb250cm9sIHJpbmcgb2YgdGhlIGNv bm5lY3RvciB3aXRoIGluZGV4IDAuCj4gPiA+ICsgKgo+ID4gPiArICogRm9yIGFsbCByZXF1ZXN0 L3Jlc3BvbnNlL2V2ZW50IHBhY2tldHMgdGhhdCB1c2UgY29va2llczoKPiA+ID4gKyAqICAgZGJ1 Zl9jb29raWUgLSB1aW50NjRfdCwgdW5pcXVlIHRvIGd1ZXN0IGRvbWFpbiB2YWx1ZSB1c2VkIGJ5 IHRoZSBiYWNrZW5kCj4gPiA+ICsgKiAgICAgdG8gbWFwIHJlbW90ZSBkaXNwbGF5IGJ1ZmZlciB0 byBpdHMgbG9jYWwgb25lCj4gPiA+ICsgKiAgIGZiX2Nvb2tpZSAtIHVpbnQ2NF90LCB1bmlxdWUg dG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQgYnkgdGhlIGJhY2tlbmQKPiA+ID4gKyAqICAgICB0 byBtYXAgcmVtb3RlIGZyYW1lYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPiA+ID4gKyAqCj4gPiA+ ICsgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMp Cj4gPiA+ICsgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKPiA+ID4g KyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAg ICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAg ICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgIHJlc2Vy dmVkICAgICB8IDQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogICBpZCAtIHVpbnQxNl90LCBwcml2 YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UKPiA+ID4gKyAqICAgb3BlcmF0aW9u IC0gdWludDhfdCwgb3BlcmF0aW9uIGNvZGUsIFhFTkRJU1BMX09QXz8/Pwo+ID4gPiArICoKPiA+ ID4gKyAqIFJlcXVlc3QgZGJ1ZiBjcmVhdGlvbiAtIHJlcXVlc3QgY3JlYXRpb24gb2YgYSBkaXNw bGF5IGJ1ZmZlci4KPiA+ID4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ID4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfREJV Rl9DUkVBVEUgfCAgIHJlc2VydmVkICAgICB8IDQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4g PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAg ICAgICAgICB8IDEyCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAg fCAxNgo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiA+ ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4gPiA+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJw cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAo+ID4gPiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3ogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4g PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDM2Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0MAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNDQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gPiA+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ID4gPiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4gPiA+ICsgKgo+ID4gPiArICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCBy aW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgo+ID4gPiArICoKPiA+ID4gKyAqIHdp ZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBpeGVscwo+ID4gPiArICogaGVpZ2h0IC0gdWludDMy X3QsIGhlaWdodCBpbiBwaXhlbHMKPiA+IFdoeT8gSXNuJ3QgdGhhdCBpbiB0aGUgJ3Jlc29sdXRp b24nIFhlbkJ1cyBlbnRyeT8KPiBJdCBjYW4gYmUgYmlnZ2VyIHRoYXQgdGhlIHJlc29sdXRpb24s IGZvciBleGFtcGxlCj4gaWYgc2NhbGluZyB3aWxsIHRha2UgcGxhY2UuCgpIb3cgd291bGQgeW91 IHJlZmxlY3QgdGhlIHNjYWxpbmcgcGFydCBvZiB0aGlzPyBJcyB0aGF0IHNvbWV0aGluZwp0aGF0 IGlzIGFzc3VtZWQgaWYgdGhlIFhlbkJ1cyByZXNvbHV0aW9uIHZhbHVlIDwgd2lkdGh4aGVpZ2h0 IHZhbHVlcz8KCj4gPiAKPiA+IElmIG5vdCwgd2h5IGV2ZW4gaGF2ZSB0aGUgJ3Jlc29sdXRpb24n IGZpZWxkPwo+IFRoZSBjb25mdXNpb24gY29tZXMgZnJvbSB0aGUgZmFjdCB0aGF0IHRoZSByZXNv bHV0aW9uIGlzIHZpc2libGUgYXJlYToKPiB3aWxsIHN0YXRlIHRoYXQgY2xlYXJseS4KPiA+IEFu ZCBhbHNvIC0gd2hhdCBpZiB0aGUgd2lkdGggb3IgaGVpZ2h0IGFyZSBiaWdnZXIgdGhhbiAncmVz b2x1dGlvbic/Cj4gPiBTaG91bGQgLUVJTlZBTCBiZSByZXR1cm5lZD8KPiA+IAo+IG5vIHByb2Js ZW0gaGVyZTogd2UgY2FuIGhhdmUgYnVmZmVycyBiaWdnZXIgdGhhbiB2aXNpYmxlIGFyZWEKPiA+ ID4gKyAqIGJwcCAtIHVpbnQzMl90LCBiaXRzIHBlciBwaXhlbAo+ID4gPiArICogYnVmZmVyX3N6 IC0gdWludDMyX3QsIGJ1ZmZlciBzaXplIHRvIGJlIGFsbG9jYXRlZCwgb2N0ZXRzCj4gPiA+ICsg KiBmbGFncyAtIHVpbnQzMl90LCBmbGFncyBvZiB0aGUgb3BlcmF0aW9uCj4gPiA+ICsgKiAgIG8g WEVORElTUExfREJVRl9GTEdfUkVRX0FMTE9DIC0gaWYgc2V0LCB0aGVuIGJhY2tlbmQgaXMgcmVx dWVzdGVkCj4gPiA+ICsgKiAgICAgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciB3aXRoIHRoZSBwYXJh bWV0ZXJzIHByb3ZpZGVkIGluIHRoaXMgcmVxdWVzdC4KPiA+ID4gKyAqICAgICBQYWdlIGRpcmVj dG9yeSBpcyBoYW5kbGVkIGFzIGZvbGxvd3M6Cj4gPiA+ICsgKiAgICAgICBGcm9udGVuZCBvbiBy ZXF1ZXN0Ogo+ID4gPiArICogICAgICAgICBvIGFsbG9jYXRlcyBwYWdlcyBmb3IgdGhlIGRpcmVj dG9yeQo+ID4gPiArICogICAgICAgICBvIGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhZ2Vz IG9mIHRoZSBkaXJlY3RvcnkKPiA+ID4gKyAqICAgICAgICAgbyBzZXRzIGdyZWZfZGlyX25leHRf cGFnZSBmaWVsZHMKPiA+ID4gKyAqICAgICAgIEJhY2tlbmQgb24gcmVzcG9uc2U6Cj4gPiA+ICsg KiAgICAgICAgIG8gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFnZXMgb2YgdGhlIGJ1ZmZl ciBhbGxvY2F0ZWQKPiA+IDxzY3JhdGNoZXMgaGlzIGhlYWQ+Cj4gPiA+ICsgKiAgICAgICAgIG8g ZmlsbHMgaW4gcGFnZSBkaXJlY3Rvcnkgd2l0aCBncmFudCByZWZlcmVuY2VzCj4gPiBUaGUgYmFj a2VuZCBwcm92aWRlcyB0aGUgcGFnZXMgaW5zdGVhZCBvZiB0aGUgZnJvbnRlbmQ/IEJ1dCB5b3Ug c2FpZAo+ID4gJ2FsbG9jYXRlZCBwYWdlcyBmb3IgdGhlIGRpcmVjdG9yeScgaW4gdGhlIGZyb250 bmVkIHBhcnQgLSBhbmQgc2luY2UgeW91Cj4gPiBzYXkgJ3BhZ2VzJyB0aGF0IG1lYW5zIG1vcmUg dGhhbiBvbmU/IE9yIGRpZCB5b3UgbWVhbiAndGhlIGdyZWZfZGlyZWN0b3J5Jwo+ID4gcGFnZSBh bmQgdGhlICdncmVmX2Rpcl9uZXh0X3BhZ2UnIHBhZ2VzPyBZb3UgbWF5IHdhbnQgdG8gYmUgZXhw bGljaXQuCj4gPiAKPiBzdXJlLCBJIHdpbGwgc3RhdGUgaXQgY2xlYXJseSB0aGF0IG9ubHkgZGly ZWN0b3J5IHBhZ2VzCj4gYXJlIGFsbG9jYXRlZDogZ3JlZl9kaXJlY3RvcnkgKyBncmVmX2Rpcl9u ZXh0X3BhZ2UocykKClRoeAo+ID4gQW5kIHdoYXQgaWYgdGhlICdmbGFncycgaXMgemVybz8KPiBp dCB3b3VsZCBtZWFuIHRoYXQgZXZlbiB0aGF0IHRoZSBiYWNrZW5kIGNhbiBhbGxvY2F0ZSBidWZm ZXJzCj4gZm9yIHVzIHdlIGRvbid0IHdhbnQgaXQgdG8gZG8gc28sIHdlIHdpbGwgYWxsb2NhdGUg b24gb3VyIG93bjoKPiBmbGFnIGlzIG5vdCBzZXQKPiA+IE9yIDB4MzE0PyBQZXJoYXBzIGFsc28g bWVudGlvbgo+ID4gdGhlIGRlZmF1bHQgb25lICgwIEkgcHJlc3VtZSkgd2hpY2ggd291bGQgbWFr ZSB0aGUgYmFja2VuZCBtYXAKPiA+IHRoZSBmcm9udGVuZCBwYWdlcyBwcm92aWRlZCBpbiAnZ3Jl Zl9kaXJlY3RvcnknPwo+IHllcywgSSdsbCBwdXQgYSBub3RlIG9uIGRlZmF1bHRzCgpBd2Vzb21l IQo+ID4gCj4gPiA+ICsgKiBncmVmX2RpcmVjdG9yeSAtIGdyYW50X3JlZl90LCBhIHJlZmVyZW5j ZSB0byB0aGUgZmlyc3Qgc2hhcmVkIHBhZ2UKPiA+ID4gKyAqICAgZGVzY3JpYmluZyBzaGFyZWQg YnVmZmVyIHJlZmVyZW5jZXMuIEF0IGxlYXN0IG9uZSBwYWdlIGV4aXN0cy4gSWYgc2hhcmVkCj4g PiA+ICsgKiAgIGJ1ZmZlciBzaXplICAoYnVmZmVyX3N6KSBleGNlZWRzIHdoYXQgY2FuIGJlIGFk ZHJlc3NlZCBieSB0aGlzIHNpbmdsZSBwYWdlLAo+ID4gICAgICAgICAgICAgICAgICAgICBeLSBl eHRyYSBzcGFjZQo+IGRvbmUKPiA+ID4gKyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhlIG5leHQg cGFnZSBtdXN0IGJlIHN1cHBsaWVkIChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCj4gPiA+ICsgKiAg IGJlbG93KQo+ID4gPiArICovCj4gPiAKPiA+IFdoYXQgYXJlIHNvbWUgb2YgdGhlIHJldHVybiBl cnJvcnMgPyBXb3VsZCBpdCBtYWtlIHNlbnNlIHRvIG1lbnRpb24KPiA+IHNvbWU/Cj4gbm90IHN1 cmUsIHRoaXMgd2F5IHdpbGwgZGljdGF0ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLAo+IGJ1dCB3 ZSBhcmUgZGVmaW5pbmcgcHJvdG9jb2wKClRydWUgdG8gYW4gZXh0ZW50LiAKPiA+IAo+ID4gV2hh dCB0byBmb3IgZXhhbXBsZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgIF9PUF9EQlVGX0NSRUFURQo+ ID4gd2l0aCB0aGUgc2FtZSBkYnVmX2Nvb2tpZSBidXQgd2l0aCBkaWZmZXJlbnQgd2lkdGgvaGVp Z2h0Pwo+IGl0IHdpbGwgYmUgYW4gZXJyb3IsIEkgd2lsbCBjbGVhcmx5IHN0YXRlIHRoaXM6Cj4g ICogQW4gYXR0ZW1wdCB0byBjcmVhdGUgbXVsdGlwbGUgZGlzcGxheSBidWZmZXJzIHdpdGggdGhl IHNhbWUgZGJ1Zl9jb29raWUKPiBpcwo+ICAqIGFuIGVycm9yLiBkYnVmX2Nvb2tpZSBjYW4gYmUg cmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNwb25kaW5nCj4gICogZGlzcGxheSBi dWZmZXIuCgpNYXkgYWxzbyB3YW50IHRvIHNheSB3aGF0IGVycm9yIHZhbHVlIGl0IHNob3VsZCBi ZS4gLUVBR0FJTj8gTm8gcHJvYmFibHkgc29tZXRoaW5nCmRpZmZlcmVudC4KPiAKPiA+ID4gKwo+ ID4gPiArI2RlZmluZSBYRU5ESVNQTF9EQlVGX0ZMR19SRVFfQUxMT0MgICAgICAgMHgwMDAxCj4g PiA+ICsKPiA+ID4gK3N0cnVjdCB4ZW5kaXNwbF9kYnVmX2NyZWF0ZV9yZXEgewo+ID4gPiArICAg IHVpbnQ2NF90IGRidWZfY29va2llOwo+ID4gPiArICAgIHVpbnQzMl90IHdpZHRoOwo+ID4gPiAr ICAgIHVpbnQzMl90IGhlaWdodDsKPiA+ID4gKyAgICB1aW50MzJfdCBicHA7Cj4gPiA+ICsgICAg dWludDMyX3QgYnVmZmVyX3N6Owo+ID4gPiArICAgIHVpbnQzMl90IGZsYWdzOwo+ID4gPiArICAg IGdyYW50X3JlZl90IGdyZWZfZGlyZWN0b3J5Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoK PiA+ID4gKyAqIFNoYXJlZCBwYWdlIGZvciBYRU5ESVNQTF9PUF9EQlVGX0NSRUFURSBidWZmZXIg ZGVzY3JpcHRvciAoZ3JlZl9kaXJlY3RvcnkgaW4KPiA+ID4gKyAqIHRoZSByZXF1ZXN0KSBlbXBs b3lzIGEgbGlzdCBvZiBwYWdlcywgZGVzY3JpYmluZyBhbGwgcGFnZXMgb2YgdGhlIHNoYXJlZAo+ ID4gPiArICogZGF0YSBidWZmZXI6Cj4gPiA+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAg MSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gPiA+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2Rp cl9uZXh0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgfCA0Cj4gPiA+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmWzBdICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ ID4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgaSo0KzgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyZWZbTiAtIDFdICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOKjQrOAo+ ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKgo+ID4gPiArICogZ3JlZl9kaXJfbmV4dF9w YWdlIC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJpbmcK PiA+ID4gKyAqICAgcGFnZSBkaXJlY3RvcnkuIE11c3QgYmUgMCBpZiB0aGVyZSBhcmUgbm8gbW9y ZSBwYWdlcyBpbiB0aGUgbGlzdC4KPiA+ID4gKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVm ZXJlbmNlIHRvIGEgc2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgo+ID4gPiArICogICBhbGxvY2F0 ZWQgYXQgWEVORElTUExfT1BfREJVRl9DUkVBVEUKPiA+ID4gKyAqCj4gPiA+ICsgKiBOdW1iZXIg b2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUgd2hvbGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90 Cj4gPiA+ICsgKiBwYXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgo+ID4g PiArICogICBudW1fZ3JlZnNfdG90YWwgPSAoWEVORElTUExfT1BfREJVRl9DUkVBVEUuYnVmZmVy X3N6ICsgWEVOX1BBR0VfU0laRSAtIDEpIC8KPiA+ID4gKyAqICAgICAgIFhFTl9QQUdFX1NJWkUK PiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfcGFnZV9kaXJlY3Rvcnkg ewo+ID4gPiArICAgIGdyYW50X3JlZl90IGdyZWZfZGlyX25leHRfcGFnZTsKPiA+ID4gKyAgICBn cmFudF9yZWZfdCBncmVmWzFdOyAvKiBWYXJpYWJsZSBsZW5ndGggKi8KPiA+ID4gK307Cj4gPiA+ ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBSZXF1ZXN0IGRidWYgZGVzdHJ1Y3Rpb24gLSBkZXN0cm95 IGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgZGlzcGxheSBidWZmZXI6Cj4gPiA+ICsgKiAgICAgICAg IDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8X09QX0RCVUZfREVTVFJPWXwgICByZXNlcnZlZCAgICAgfCA0 Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gPiA+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29v a2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ID4gPiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdo IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgIHwgMTYKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIwCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNjQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICoKPiA+ID4gKyAqIE11c3QgYmUg c2VudCBvdmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KPiA+ ID4gKyAqLwo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfZGJ1Zl9kZXN0cm95X3JlcSB7 Cj4gPiA+ICsgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ ICsvKgo+ID4gPiArICogUmVxdWVzdCBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IC0gcmVxdWVzdCBh dHRhY2htZW50IG9mIGEgZnJhbWVidWZmZXIgdG8KPiA+ID4gKyAqIHByZXZpb3VzbHkgY3JlYXRl ZCBkaXNwbGF5IGJ1ZmZlci4KPiA+ID4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ID4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwg X09QX0ZCX0FUVEFDSCAgfCAgIHJlc2VydmVkICAgICB8IDQKPiA+ID4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAg ICAgICAgICAgICAgICB8IDEyCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAg ICAgICAgfCAxNgo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgZmJfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwg MjAKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4gPiA+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAo+ID4gPiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdo dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKPiA+ID4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9mb3JtYXQgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDM2Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA0MAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8L1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL3wKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0 Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqCj4gPiA+ICsgKiBNdXN0IGJlIHNlbnQg b3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCj4gPiA+ICsg Kgo+ID4gPiArICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzCj4gPiA+ICsgKiBo ZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscwo+ID4gV2h5PyBUaGUgX09QX0RCVUZf Q1JFQVRFIGFscmVhZHkgc3BlY2lmaWVkIHRoZSBoZWlnaHQvd2lkdGguIFdoeSBoYXZlIHRoaXM/ Cj4gPiAKPiA+IE9yIGFyZSB5b3UgdGhpbmtpbmcgdG8gaGF2ZSBhbiBzbWFsbGVyIChvciBiaWdn ZXI/KSByZXNvbHV0aW9uIGZyYW1lYnVmZmVyCj4gPiB0aGFuIHRoZSBkaXNwbGF5PyBJIHN1cHBv c2UgeW91IGNhbiBkbyB0aGF0IHdoaWNoIHdvdWxkIGltcGx5IHRoYXQgdGhlIGRpc3BsYXkKPiA+ IHdvdWxkIHN3aXRjaCBtb2Rlcz8gUGVyaGFwcyBtZW50aW9uIHRoaXM/Cj4gPiAKPiA+IEFsc28g d2hhdCBpZiB0aGVzZSB2YWx1ZXMgYXJlIGJpZ2dlciAob3IgbGVzc2VyKSB0aGFuICdyZXNvbHV0 aW9uJyA/Cj4gPiAKPiA+IAo+ID4gPiArICogcGl4ZWxfZm9ybWF0IC0gdWludDMyX3QsIHBpeGVs IGZvcm1hdCBvZiB0aGUgZnJhbWVidWZmZXIsIEZPVVJDQyBjb2RlCj4gPiBZb3UgZGlkIG5vdCBt ZW50aW9uIHRoZSBmYl9jb29raWU/Cj4gSSBoYXZlIGEgY29tbW9uIHNlY3Rpb246Cj4gICogRm9y IGFsbCByZXF1ZXN0L3Jlc3BvbnNlL2V2ZW50IHBhY2tldHMgdGhhdCB1c2UgY29va2llczoKPiAg KiAgIGRidWZfY29va2llIC0gdWludDY0X3QsIHVuaXF1ZSB0byBndWVzdCBkb21haW4gdmFsdWUg dXNlZCBieSB0aGUKPiBiYWNrZW5kCj4gICogICAgIHRvIG1hcCByZW1vdGUgZGlzcGxheSBidWZm ZXIgdG8gaXRzIGxvY2FsIG9uZQo+ICAqICAgZmJfY29va2llIC0gdWludDY0X3QsIHVuaXF1ZSB0 byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUgYmFja2VuZAo+ICAqICAgICB0byBtYXAg cmVtb3RlIGZyYW1lYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPiBCdXQgaXQgaXMgaW4gdGhlICJS ZXF1ZXN0cyIgc2VjdGlvbiAtIEknbGwgcHVsbCBpdCBvdXQgdG8gYmUgY29tbW9uIGZvciBhbGwK CkFhYWFoIQo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCB4ZW5kaXNwbF9mYl9hdHRh Y2hfcmVxIHsKPiA+ID4gKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKPiA+ID4gKyAgICB1aW50 NjRfdCBmYl9jb29raWU7Cj4gPiA+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4gPiA+ICsgICAgdWlu dDMyX3QgaGVpZ2h0Owo+ID4gPiArICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBSZXF1ZXN0IGZyYW1lYnVmZmVyIGRldGFjaCAt IGRldGFjaCBhIHByZXZpb3VzbHkKPiA+ID4gKyAqIGF0dGFjaGVkIGZyYW1lYnVmZmVyIGZyb20g dGhlIGRpc3BsYXkgYnVmZmVyIGluIHJlcXVlc3Q6Cj4gPiA+ICsgKiAgICAgICAgIDAgICAgICAg ICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0 Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgICAgICB8ICBfT1BfRkJfREVUQUNIIHwgICByZXNlcnZlZCAgICAgfCA0Cj4gPiA+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gPiA+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMy LWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4g PiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2ggMzItYml0ICAg ICAgICAgICAgICAgICAgICAgIHwgMTYKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDIwCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPiA+ ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICoKPiA+ID4gKyAqIE11c3QgYmUgc2VudCBvdmVy IGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KPiA+ID4gKyAqLwo+ ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfZmJfZGV0YWNoX3JlcSB7Cj4gPiA+ICsgICAg dWludDY0X3QgZmJfY29va2llOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAq IFJlcXVlc3QgY29uZmlndXJhdGlvbiBzZXQvcmVzZXQgLSByZXF1ZXN0IHRvIHNldCBvciByZXNl dAo+ID4gPiArICogdGhlIGNvbmZpZ3VyYXRpb24vbW9kZSBvZiB0aGUgZGlzcGxheToKPiA+ID4g KyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAg ICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAg ICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX1NFVF9DT05GSUcgfCAgIHJlc2Vy dmVkICAgICB8IDQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4gPiA+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9j b29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxNgo+ID4gPiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiA+ID4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyOAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMzIKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDQwCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NAo+ID4g PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiA+ID4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK PiA+ID4gKyAqCj4gPiA+ICsgKiBQYXNzIGFsbCB6ZXJvcyB0byByZXNldCwgb3RoZXJ3aXNlIGNv bW1hbmQgaXMgdHJlYXRlZCBhcwo+ID4gPiArICogY29uZmlndXJhdGlvbiBzZXQuCj4gPiBBbGwg emVyb3M/IEluY2x1ZGluZyBmYl9jb29raWU/Cj4gWWVzLCBmYl9jb29raWUgaXMgMCB3aGVuIHdl IGRpc2FibGUgdGhlIGRpc3BsYXksIGFzIGF0IHRoaXMgcG9pbnQgdGhlcmUKPiBjb3VsZCBiZSBu byBmYiBhdCBhbGwgKGFsbCByZWxlYXNlZCBieSB0aGF0IHRpbWUpCj4gPiAKPiA+ID4gKyAqIElm IHRoaXMgaXMgYSBzZXQgY29uZmlndXJhdGlvbiByZXF1ZXN0IHRoZW4gZnJhbWVidWZmZXIncyBj b29raWUgdGVsbHMKPiA+IE5vdCBzdXJlIGlmIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBzZW50ZW5j ZSBpcyBuZWVkZWQuIFRoaXMgaXMgYWZ0ZXIgYWxsCj4gPiB0aGUgc2VjdGlvbiB0aGF0IHRhbGtz IGFib3V0IHNldHRpbmcgY29uZmlndXJhdGlvbnMuCj4gb2ssIHdpbGwgcmVtb3ZlIGl0Cj4gPiAK PiA+ID4gKyAqIHRoZSBkaXNwbGF5IHdoaWNoIGZyYW1lYnVmZmVyL2RidWYgbXVzdCBiZSBkaXNw bGF5ZWQgd2hpbGUgZW5hYmxpbmcgZGlzcGxheQo+ID4gPiArICogKGFwcGx5aW5nIGNvbmZpZ3Vy YXRpb24pLgo+ID4gQ2FuIHlvdSBkaXNhYmxlIGFuIGRpc3BsYXkgd2l0aG91dCBjaGFuZ2luZyB0 aGlzPwo+IFlvdSBwYXNzIEFMTCB6ZXJvcywgaW5jbHVkaW5nIGZiX2Nvb2tpZSB0byBkaXNhYmxl L3Jlc2V0Lgo+ID4gPiArICoKPiA+ID4gKyAqIHggLSB1aW50MzJfdCwgc3RhcnRpbmcgcG9zaXRp b24gaW4gcGl4ZWxzIGJ5IFggYXhpcwo+ID4gPiArICogeSAtIHVpbnQzMl90LCBzdGFydGluZyBw b3NpdGlvbiBpbiBwaXhlbHMgYnkgWSBheGlzCj4gPiBXaGljaCBpcyBib3VuZCBieSAncmVzb2x1 dGlvbicgPyBPciBieSB0aGUgZGlzcGxheSBjb21tYW5kPwo+IHRoZXNlIGFyZSBsaW1pdGVkIGJ5 IHRoZSAicmVzb2x1dGlvbiIgLSB3aWxsIHN0YXRlIHRoYXQ6Cj4gICogeCwgeSwgd2lkdGggYW5k IGhlaWdodCBhcmUgYm91bmQgYnkgdGhlIGNvbm5lY3RvciByZXNvbHV0aW9uIGFuZCBtdXN0IG5v dAo+ICAqIGV4Y2VlZCBpdC4KClRoYW5rcyEKPiAKPiA+IAo+ID4gPiArICogd2lkdGggLSB1aW50 MzJfdCwgd2lkdGggaW4gcGl4ZWxzCj4gPiA+ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0 IGluIHBpeGVscwo+ID4gPiArICogYnBwIC0gdWludDMyX3QsIGJpdHMgcGVyIHBpeGVsCj4gPiBT aG91bGRuJ3QgdGhlcmUgYmUgYW4gc3RyaWRlIGFzIHdlbGw/Cj4gbm8sIHN0cmlkZSBpcyBraW5k IG9mIGltcGxlbWVudGF0aW9uIGRldGFpbCB3aGljaCBzaG91bGRuJ3QKPiBiZSBpbiB0aGUgcHJv dG9jb2wKPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfc2V0X2NvbmZp Z19yZXEgewo+ID4gPiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPiA+ID4gKyAgICB1aW50MzJf dCB4Owo+ID4gPiArICAgIHVpbnQzMl90IHk7Cj4gPiA+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4g PiA+ICsgICAgdWludDMyX3QgaGVpZ2h0Owo+ID4gPiArICAgIHVpbnQzMl90IGJwcDsKPiA+ID4g K307Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBSZXF1ZXN0IHBhZ2UgZmxpcCAtIHJlcXVl c3QgdG8gZmxpcCBhIHBhZ2UgaWRlbnRpZmllZCBieSB0aGUgZnJhbWVidWZmZXIKPiA+ID4gKyAq IGNvb2tpZToKPiA+ID4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAg ICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ID4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ID4gPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX1BHX0ZM SVAgICAgfCAgIHJlc2VydmVkICAgICB8IDQKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDgKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAg ICAgICB8IDEyCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAx Ngo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiA+ID4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gPiA+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4g PiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArc3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgewo+ ID4gPiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8q Cj4gPiA+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVzcG9uc2VzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICsgKgo+ID4gPiArICogQWxsIHJl c3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykKPiA+ID4gKyAq Cj4gPiA+ICsgKiBBbGwgcmVzcG9uc2UgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cj4gPiA+ ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAg ICAgICAgIDMgICAgICAgIG9jdGV0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgfCA0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA4Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ID4g PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiA+ID4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK PiA+ID4gKyAqCj4gPiA+ICsgKiBpZCAtIHVpbnQxNl90LCBwcml2YXRlIGd1ZXN0IHZhbHVlLCBl Y2hvZWQgZnJvbSByZXF1ZXN0Cj4gPiA+ICsgKiBzdGF0dXMgLSBpbnQzMl90LCByZXNwb25zZSBz dGF0dXMsIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVyZQo+ID4gPiArICoK PiA+ID4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZlbnRzIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gKyAqCj4gPiA+ICsgKiBFdmVudHMg YXJlIHNlbnQgdmlhIGEgc2hhcmVkIHBhZ2UgYWxsb2NhdGVkIGJ5IHRoZSBmcm9udCBhbmQgcHJv cGFnYXRlZCBieQo+ID4gPiArICogICBldmVudC1jaGFubmVsL2V2ZW50LXJpbmctcmVmIFhlblN0 b3JlIGVudHJpZXMKPiA+ID4gKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVu Z3RoICg2NCBvY3RldHMpCj4gPiA+ICsgKiBBbGwgZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBo ZWFkZXI6Cj4gPiA+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK PiA+ID4gKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgICAgdHlwZSAg ICAgIHwgICByZXNlcnZlZCAgICAgfCA0Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqCj4gPiA+ICsg KiBpZCAtIHVpbnQxNl90LCBldmVudCBpZCwgbWF5IGJlIHVzZWQgYnkgZnJvbnQKPiA+ID4gKyAq IHR5cGUgLSB1aW50OF90LCB0eXBlIG9mIHRoZSBldmVudAo+ID4gPiArICoKPiA+ID4gKyAqCj4g PiA+ICsgKiBQYWdlIGZsaXAgY29tcGxldGUgZXZlbnQgLSBldmVudCBmcm9tIGJhY2sgdG8gZnJv bnQgb24gcGFnZSBmbGlwIGNvbXBsZXRlZDoKPiA+ID4gKyAqICAgICAgICAgMCAgICAgICAgICAg ICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiA+ ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAg ICAgICAgIHwgICBfRVZUX1BHX0ZMSVAgfCAgIHJlc2VydmVkICAgICB8IDQKPiA+ID4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiA+ID4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ID4gPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0 ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAg ICAgICAgICAgICAgICAgfCAxNgo+ID4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMjAKPiA+ID4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiArICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 Cj4gPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ID4gPiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArc3RydWN0IHhlbmRpc3Bs X3BnX2ZsaXBfZXZ0IHsKPiA+ID4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4gPiA+ICt9Owo+ ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVxIHsKPiA+ID4gKyAgICB1aW50MTZfdCBp ZDsKPiA+ID4gKyAgICB1aW50OF90IG9wZXJhdGlvbjsKPiA+ID4gKyAgICB1aW50OF90IHJlc2Vy dmVkWzVdOwo+ID4gPiArICAgIHVuaW9uIHsKPiA+ID4gKyAgICAgICAgc3RydWN0IHhlbmRpc3Bs X2RidWZfY3JlYXRlX3JlcSBkYnVmX2NyZWF0ZTsKPiA+ID4gKyAgICAgICAgc3RydWN0IHhlbmRp c3BsX2RidWZfZGVzdHJveV9yZXEgZGJ1Zl9kZXN0cm95Owo+ID4gPiArICAgICAgICBzdHJ1Y3Qg eGVuZGlzcGxfZmJfYXR0YWNoX3JlcSBmYl9hdHRhY2g7Cj4gPiA+ICsgICAgICAgIHN0cnVjdCB4 ZW5kaXNwbF9mYl9kZXRhY2hfcmVxIGZiX2RldGFjaDsKPiA+ID4gKyAgICAgICAgc3RydWN0IHhl bmRpc3BsX3NldF9jb25maWdfcmVxIHNldF9jb25maWc7Cj4gPiA+ICsgICAgICAgIHN0cnVjdCB4 ZW5kaXNwbF9wYWdlX2ZsaXBfcmVxIHBnX2ZsaXA7Cj4gPiA+ICsgICAgICAgIHVpbnQ4X3QgcmVz ZXJ2ZWRbNTZdOwo+ID4gPiArICAgIH0gb3A7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1 Y3QgeGVuZGlzcGxfcmVzcCB7Cj4gPiA+ICsgICAgdWludDE2X3QgaWQ7Cj4gPiA+ICsgICAgdWlu dDhfdCBvcGVyYXRpb247Cj4gPiA+ICsgICAgdWludDhfdCByZXNlcnZlZDsKPiA+ID4gKyAgICBp bnQzMl90IHN0YXR1czsKPiA+ID4gKyAgICB1aW50OF90IHJlc2VydmVkMVs1Nl07Cj4gPiA+ICt9 Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgeGVuZGlzcGxfZXZ0IHsKPiA+ID4gKyAgICB1aW50MTZf dCBpZDsKPiA+ID4gKyAgICB1aW50OF90IHR5cGU7Cj4gPiA+ICsgICAgdWludDhfdCByZXNlcnZl ZFs1XTsKPiA+ID4gKyAgICB1bmlvbiB7Cj4gPiA+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9w Z19mbGlwX2V2dCBwZ19mbGlwOwo+ID4gPiArICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsK PiA+ID4gKyAgICB9IG9wOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArREVGSU5FX1JJTkdfVFlQ RVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0cnVjdCB4ZW5kaXNwbF9yZXNw KTsKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBmcm9udCBldmVudHMgZGVsaXZlcnkK PiA+ID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKyAqIEluIG9yZGVyIHRvIGRlbGl2 ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFyZWQgcGFnZSBp cwo+ID4gPiArICogYWxsb2NhdGVkIGJ5IGZyb250IGFuZCBpdHMgZ3JlZnMgcHJvcGFnYXRlZCB0 byBiYWNrIHZpYSBYZW5TdG9yZSBlbnRyaWVzCj4gPiA+ICsgKiAoZXZlbnQtWFhYKS4KPiA+ID8K PiA+IAo+ID4gWW91IG1lYW4gZXZlbnQtY2hhbm5lbCA/IE9yIGNvbnRyb2wtZXZlbnQtY2hhbm5l bD8KPiBldmVudC1jaGFubmVsIHdoaWNoIGlzIHVzZWQgZm9yIGFzeW5jIGV2ZW50cyBmcm9tIGJh Y2sgdG8gZnJvbnQsCj4gY29udHJvbCBpcyBhbHdheXMgdXNlZCB0byBwYXNzIHJlcS9yZXNwLgo+ ID4gPiArICogVGhpcyBwYWdlIGhhcyBhIGNvbW1vbiBoZWFkZXIgdXNlZCBieSBib3RoIGZyb250 IGFuZCBiYWNrIHRvIHN5bmNocm9uaXplCj4gPiA+ICsgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZl bnQncyByaW5nIGJ1ZmZlciwgd2hpbGUgYmFjayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQo+ID4g PiArICogZXZlbnRzIGFuZCBmcm9udCBiZWluZyBhIGNvbnN1bWVyLiBUaGUgcmVzdCBvZiB0aGUg cGFnZSBhZnRlciB0aGUgaGVhZGVyCj4gPiA+ICsgKiBpcyB1c2VkIGZvciBldmVudCBwYWNrZXRz Lgo+ID4gPiArICoKPiA+ID4gKyAqIFVwb24gcmVjZXB0aW9uIG9mIGFuIGV2ZW50KHMpIGZyb250 IG1heSBjb25maXJtIGl0cyByZWNlcHRpb24KPiA+ID4gKyAqIGZvciBlaXRoZXIgZWFjaCBldmVu dCwgZ3JvdXAgb2YgZXZlbnRzIG9yIG5vbmUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArc3Ry dWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2Ugewo+ID4gPiArICAgIHVpbnQzMl90IGluX2NvbnM7Cj4g PiA+ICsgICAgdWludDMyX3QgaW5fcHJvZDsKPiA+ID4gKyAgICB1aW50OF90IHJlc2VydmVkWzU2 XTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfRVZFTlRfUEFHRV9T SVpFIDQwOTYKPiA+ID4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19PRkZTIChzaXplb2Yoc3Ry dWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2UpKQo+ID4gPiArI2RlZmluZSBYRU5ESVNQTF9JTl9SSU5H X1NJWkUgKFhFTkRJU1BMX0VWRU5UX1BBR0VfU0laRSAtIFhFTkRJU1BMX0lOX1JJTkdfT0ZGUykK PiA+ID4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19MRU4gKFhFTkRJU1BMX0lOX1JJTkdfU0la RSAvIHNpemVvZihzdHJ1Y3QgeGVuZGlzcGxfZXZ0KSkKPiA+ID4gKyNkZWZpbmUgWEVORElTUExf SU5fUklORyhwYWdlKSBcCj4gPiA+ICsJKChzdHJ1Y3QgeGVuZGlzcGxfZXZ0ICopKChjaGFyICop KHBhZ2UpICsgWEVORElTUExfSU5fUklOR19PRkZTKSkKPiA+ID4gKyNkZWZpbmUgWEVORElTUExf SU5fUklOR19SRUYocGFnZSwgaWR4KSBcCj4gPiA+ICsJKFhFTkRJU1BMX0lOX1JJTkcoKHBhZ2Up KVsoaWR4KSAlIFhFTkRJU1BMX0lOX1JJTkdfTEVOXSkKPiA+IFdoeSBub3QgdXNlIHRoZSByaW5n LmggbWFjcm9zPwo+IHdlbGwsIHRoaXMgaXMgdGhlIHdheSB0aGUgc2FtZSBzdHJ1Y3RzIGFyZSBk ZWZpbmVkIGZvciBmYmlmL2tiaWYKPiBhbmQgSSBhbSBub3Qgc3VyZSB3aGF0IGNhbiBiZSByZS11 c2VkIGhlcmUgZnJvbSByaW5nLmggYXMgaXQgaXMKPiBkZXNpZ25lZCB0byB3b3JrIHdpdGggcmVx L3Jlc3AsIG5vdCBldmVudHMuCj4gPiAKPiA+IEVzcGVjaWFsbHkgYXMgdGhlIHRvcCBvZiB0aGlz IHRhbGtzIGFib3V0ICJSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUyI/Cj4gSSBjYW4gcmVt b3ZlIHRoaXMKPiA+ID4gKwo+ID4gPiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19JT19ESVNQTElG X0hfXyAqLwo+ID4gQ291bGQgd2UgYWxzbyBoYXZlIHRoaXMgaGVhZGVyIGluOgo+IHN1cmUsIEkg d2lsbCBhZGQgdGhlIHNhbWUgdG8gc25kaWYgYXMgd2VsbAo+ID4gCj4gPiAvKgo+ID4gICAqIExv Y2FsIHZhcmlhYmxlczoKPiA+ICAgKiBtb2RlOiBDCj4gPiAgICogYy1maWxlLXN0eWxlOiAiQlNE Igo+ID4gICAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gPiAgICogdGFiLXdpZHRoOiA0Cj4gPiAgICog aW5kZW50LXRhYnMtbW9kZTogbmlsCj4gPiAgICogRW5kOgo+ID4gICAqLwo+ID4gCj4gPiBwbGVh c2U/Cj4gPiA+IC0tIAo+ID4gPiAyLjcuNAo+ID4gPiAKPiBbMV0gaHR0cDovL21hcmMuaW5mby8/ bD14ZW4tZGV2ZWwmbT0xNDIxNjcxNTMzMjQwNTImdz00Cj4gCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK