From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v3] displif: add ABI for para-virtual display Date: Mon, 13 Feb 2017 10:50:49 +0200 Message-ID: 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"; Format="flowed" 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 1cdCLX-0002Ns-M4 for xen-devel@lists.xenproject.org; Mon, 13 Feb 2017 08:50:56 +0000 Received: by mail-lf0-f66.google.com with SMTP id x1so7734133lff.0 for ; Mon, 13 Feb 2017 00:50:53 -0800 (PST) In-Reply-To: <20170210212747.GA1890@char.us.ORACLE.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk 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 SGksIEtvbnJhZCEKClRoYW5rIHlvdSBmb3IgcmV2aWV3aW5nIHRoaXMuCgpPbiAwMi8xMC8yMDE3 IDExOjI3IFBNLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgd3JvdGU6Cj4gT24gRnJpLCBGZWIgMTAs IDIwMTcgYXQgMDk6Mjk6NThBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6 Cj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5r b0BlcGFtLmNvbT4KPj4KPj4gVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBh IHBhcmEtdmlydHVhbGl6ZWQKPj4gZGlzcGxheSBkcml2ZXIuCj4+Cj4+IFRoaXMgcHJvdG9jb2wg YWltcyB0byBwcm92aWRlIGEgdW5pZmllZCBwcm90b2NvbCB3aGljaCBmaXRzIG1vcmUKPj4gc29w aGlzdGljYXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1lYnVmZmVyIGRldmljZSBjYW4gaGFuZGxl LiBBdCB0aGUKPj4gbW9tZW50IGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIHdpdGgg dGhlIGludGVudGlvbiB0byBleHRlbmQ6Cj4+ICAgIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxs b2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZlcnMKPj4gICAgbyBidWZmZXJzIG9mIGFyYml0cmFy eSBzaXplcwo+PiAgICBvIGJldHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIG11 bHRpcGxlIGRpc3BsYXkgc3VwcG9ydAo+Pgo+PiBOb3RlOiBleGlzdGluZyBmYmlmIGNhbiBiZSB1 c2VkIHRvZ2V0aGVyIHdpdGggZGlzcGxpZiBydW5uaW5nIGF0IHRoZQo+PiBzYW1lIHRpbWUsIGUu Zy4gb24gTGludXggb25lIHByb3ZpZGVzIGZyYW1lYnVmZmVyIGFuZCBhbm90aGVyIERSTS9LTVMK Pj4KPj4gRnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29sIG1heSBpbmNs dWRlOgo+PiAgICBvIGFsbG93IGRpc3BsYXkvY29ubmVjdG9yIGNsb25pbmcKPj4gICAgbyBhbGxv dyBhbGxvY2F0aW5nIG9iamVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKPj4gICAgbyBh ZGQgcGxhbmVzL292ZXJsYXlzIHN1cHBvcnQKPj4gICAgbyBzdXBwb3J0IHNjYWxpbmcKPj4gICAg byBzdXBwb3J0IHJvdGF0aW9uCj4+Cj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Cj4+IFJhdGlvbmFsZSBmb3IgaW50cm9kdWNpbmcgdGhpcyBwcm90 b2NvbCBpbnN0ZWFkIG9mCj4+IHVzaW5nIHRoZSBleGlzdGluZyBmYmlmOgo+PiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+Pgo+PiAxLiBJbi9vdXQg ZXZlbnQgc2l6ZXMKPj4gICAgbyBmYmlmIC0gNDAgb2N0ZXRzCj4+ICAgIG8gZGlzcGxpZiAtIDQw IG9jdGV0cwo+PiBUaGlzIGlzIG9ubHkgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgZGlzcGxp ZiBwcm90b2NvbAo+PiB3aGljaCBtZWFucyB0aGF0IHRoZXJlIGNvdWxkIGJlIHJlcXVlc3RzIHdo aWNoIHdpbGwgbm90IGZpdAo+PiAoV1JUIGludHJvZHVjaW5nIHNvbWUgR1BVIHJlbGF0ZWQgZnVu Y3Rpb25hbGl0eQo+PiBsYXRlciBvbikuIEluIHRoYXQgY2FzZSB3ZSBjYW5ub3QgYWx0ZXIgZmJp ZiBzaXplcyBhcyB3ZSBuZWVkIHRvCj4+IGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgYW4gd2lsbCBi ZSBmb3JjZWQgdG8gaGFuZGxlIHRob3NlCj4+IGFwYXJ0IG9mIGZiaWYuCj4+Cj4+IDIuIFNoYXJl ZCBwYWdlCj4+IERpc3BsaWYgZG9lc24ndCB1c2UgYW55dGhpbmcgbGlrZSBzdHJ1Y3QgeGVuZmJf cGFnZSwgYnV0Cj4+IERFRklORV9SSU5HX1RZUEVTKHhlbl9kaXNwbGlmLCBzdHJ1Y3QgeGVuZGlz cGxfcmVxLCBzdHJ1Y3QKPj4geGVuZGlzcGxfcmVzcCkgd2hpY2ggaXMgYSBiZXR0ZXIgYW5kIG1v cmUgY29tbW9uIHdheS4KPj4gT3V0cHV0IGV2ZW50cyB1c2UgYSBzaGFyZWQgcGFnZSB3aGljaCBv bmx5IGhhcyBpbl9jb25zIGFuZCBpbl9wcm9kCj4+IGFuZCBhbGwgdGhlIHJlc3QgaXMgdXNlZCBm b3IgaW5jb21pbmcgZXZlbnRzLiBIZXJlIHN0cnVjdCB4ZW5mYl9wYWdlCj4+IGNvdWxkIHByb2Jh Ymx5IGJlIHVzZWQgYXMgaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGl0IG9ubHkgaGFzIGEgaGFs Zgo+PiBvZiBhIHBhZ2UgZm9yIGluY29taW5nIGV2ZW50cyB3aGljaCBpcyBvbmx5IDUwIGV2ZW50 cy4gKGNvbnNpZGVyCj4+IHNvbWV0aGluZyBsaWtlIDYwSHogZGlzcGxheSkKPj4KPj4gMy4gQW1v dW50IG9mIGNoYW5nZXMuCj4+IGZiaWYgb25seSBwcm92aWRlcyBYRU5GQl9UWVBFX1VQREFURSBh bmQgWEVORkJfVFlQRV9SRVNJWkUKPj4gZXZlbnRzLCBzbyBpdCBsb29rcyBsaWtlIGl0IGlzIGVh c2llciB0byBnZXQgZmIgc3VwcG9ydCBpbnRvIGRpc3BsaWYKPiAuLiB3b3VsZCBpdCBtYWtlIHNl bnNlIHRvIHJlc2VydmUgc29tZSBvZiB0aG9zZSB2YWx1ZXMgKDIsIDMpCj4gaW4gdGhlIFhFTkRJ U1BMX09QXyB2YWx1ZXM/IFNvIHRoYXQgaWYgdGhpcyBoYXBwZW5zIHRoZXJlIGlzIGEgbmljZQo+ IGZpdCBpbiB0aGVyZT8gVGhvdWdodCBsb29raW5nIGF0IHRoZSBzdHJ1Y3R1cmUgdGhlcmUgaXMg bm8gZWFzeQo+IHdheSB0byAnb3ZlcmxheScgdGhlIHhlbmZiX291dF9ldmVudCBzdHJ1Y3R1cmUg YXMgaXQgaXMgbWlzc2luZyB0aGUgJ2lkJy4KPgo+IEkgZ3Vlc3Mgb25lIGNhbiBnZXQgY3JlYXRp dmUuCj4KPiBPciB5b3UgY291bGQgc3dhcCBwb3NpdGlvbnMgb2YgJ2lkJyBhbmQgJ3R5cGUnPyBB bmQgdGhlbiBpdCB3b3VsZCBmaXQgbXVjaAo+IG5pY2VyPwp5ZWFwLCBpbiBvcmRlciBubyBvbmUg bmVlZHMgdG8gYmUgY3JlYXRpdmUsIHdoeSBub3QKZXhwbGljaXRseSBkZWZpbmUgdGhvc2U/CkFu eXdheXMsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRvIHNpbXBseSBsYXkgdGhlIHN0cnVjdHVyZXMg ZnJvbQpmYmlmIG9uIHRvcCBvZiBkaXNwbGlmIChkaWZmZXJlbnQgc3RydWN0dXJlLCBzaXplLCB3 b3JrZmxvdyBldGMuKSwKd2hhdCBpcyBtb3JlIHRoYXQgd291bGQgZ2l2ZSBzb21lIHJvb20gdG8g ZmluZCB3b3JrYXJvdW5kcywgcmF0aGVyIHRoYW4KaGF2ZSB3ZWxsIGRlZmluZWQgc29sdXRpb24u IEJUVywgdGhlcmUgd2FzIGFuIGF0dGVtcHQgWzFdIHRvIHVwZGF0ZQpmYmRldiB0byBtZWV0IG1v ZGVybiBhcHBsaWNhdGlvbiBuZWVkcy4gSWYgd2UgZGVjaWRlIHRvIGFkZCBGQkRFVgpmdW5jdGlv bmFsaXR5IGludG8gdGhpcyBwcm90b2NvbCwgdGhlbiBJIGNhbiByZS11c2UgYWxyZWFkeQpwcm92 ZW4gdG8gd29yayBzb2x1dGlvbiBmcm9tIFsxXSBpbnRvIERJU1BMSUYsIGJ1dCBkZWZpbmluZwpz dHJ1Y3R1cmVzIGFuZCBldmVudHMgdG8gZml0IHRoZSBjdXJyZW50IHByb3RvY29sLgpXaGF0IGRv IHlvdSB0aGluaz8KPj4gdGhhbiB2aWNlIHZlcnNhLiBkaXNwbGlmIGF0IHRoZSBtb21lbnQgaGFz IDYgcmVxdWVzdHMgYW5kIDEgZXZlbnQsCj4+IG11bHRpcGxlIGNvbm5lY3RvciBzdXBwb3J0LCBl dGMuCj4+Cj4+IENoYW5nZXMgc2luY2UgdjI6Cj4+ICAgKiB1cGRhdGVkIFhlblN0b3JlIGNvbmZp Z3VyYXRpb24gdGVtcGxhdGUvcGF0dGVybgo+PiAgICogYWRkZWQgIlJlY292ZXJ5IGZsb3ciIHRv IHN0YXRlIGRpYWdyYW0gZGVzY3JpcHRpb24KPj4gICAqIHJlbmFtZWQgZ3JlZl9kaXJlY3Rvcnlf c3RhcnQgdG8gZ3JlZl9kaXJlY3RvcnkKPj4gICAqIGFkZGVkIG1pc3NpbmcgInZlcnNpb25zIiBh bmQgInZlcnNpb24iIHN0cmluZyBjb25zdGFudHMKPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4g ICAqIGZpeGVkIHhlbmRpc3BsX2V2ZW50X3BhZ2UgcGFkZGluZyBzaXplCj4+ICAgKiBhZGRlZCB2 ZXJzaW9uaW5nIHN1cHBvcnQKPj4gICAqIGV4cGxpY2l0bHkgZGVmaW5lIHZhbHVlIHR5cGVzIGZv ciBYZW5TdG9yZSBmaWVsZHMKPj4gICAqIHRleHQgZGVjb3JhdGlvbiByZS13b3JrCj4+ICAgKiBh ZGRlZCBvZmZzZXRzIHRvIEFTQ0lJIGJveCBub3RhdGlvbgo+Pgo+PiBDaGFuZ2VzIHNpbmNlIGlu aXRpYWw6Cj4+ICAgKiBEUk0gY2hhbmdlZCB0byBESVNQTCwgcHJvdG9jb2wgbWFkZSBnZW5lcmlj Cj4+ICAgKiBtYWpvciByZS13b3JrIGFkZHJlc3NpbmcgaXNzdWVzIHJhaXNlZCBmb3Igc25kaWYK Pj4KPj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292 QGVwYW0uY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xl a3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+IC0tLQo+PiAgIHhlbi9pbmNsdWRlL3B1 YmxpYy9pby9kaXNwbGlmLmggfCA3NzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA3NzggaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4+Cj4+IGRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oIGIveGVuL2luY2x1ZGUvcHVi bGljL2lvL2Rpc3BsaWYuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjg0OWYyN2ZlNWYxZAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3hlbi9pbmNsdWRl L3B1YmxpYy9pby9kaXNwbGlmLmgKPj4gQEAgLTAsMCArMSw3NzggQEAKPj4gKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPj4gKyAqIGRpc3BsaWYuaAo+PiArICoKPj4gKyAqIFVuaWZpZWQgZGlzcGxh eSBkZXZpY2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCj4+ICsgKgo+PiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEgY29weQo+PiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4+ICsgKiBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZQo+PiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4+ICsgKiBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcwo+PiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+PiArICogYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+ICsgKgo+PiAr ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFCj4+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgo+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+PiArICoK Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCj4+ICsgKgo+ PiArICogQXV0aG9yczogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNo Y2hlbmtvQGVwYW0uY29tPgo+PiArICogICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtz YW5kcl9ncnl0c292QGVwYW0uY29tPgo+PiArICovCj4+ICsKPj4gKyNpZm5kZWYgX19YRU5fUFVC TElDX0lPX0RJU1BMSUZfSF9fCj4+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19ESVNQTElGX0hf Xwo+PiArCj4+ICsjaW5jbHVkZSAicmluZy5oIgo+PiArI2luY2x1ZGUgIi4uL2dyYW50X3RhYmxl LmgiCj4+ICsKPj4gKy8qCj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiAgICAgICAg ICAgICAgICAgIE1haW4gZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIHByb3RvY29sCj4+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCj4+ICsgKiBUaGlzIHByb3RvY29sIGFpbXMgdG8gcHJvdmlkZSBh IHVuaWZpZWQgcHJvdG9jb2wgd2hpY2ggZml0cyBtb3JlCj4+ICsgKiBzb3BoaXN0aWNhdGVkIHVz ZS1jYXNlcyB0aGFuIGEgZnJhbWVidWZmZXIgZGV2aWNlIGNhbiBoYW5kbGUuIEF0IHRoZQo+PiAr ICogbW9tZW50IGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGludGVu dGlvbiB0byBiZSBleHRlbmRlZDoKPj4gKyAqICBvIG11bHRpcGxlIGR5bmFtaWNhbGx5IGFsbG9j YXRlZC9kZXN0cm95ZWQgZnJhbWVidWZmZXJzCj4+ICsgKiAgbyBidWZmZXJzIG9mIGFyYml0cmFy eSBzaXplcwo+PiArICogIG8gYnVmZmVyIGFsbG9jYXRpb24gYXQgZWl0aGVyIGJhY2sgb3IgZnJv bnQgZW5kCj4+ICsgKiAgbyBiZXR0ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyBt dWx0aXBsZSBkaXNwbGF5IHN1cHBvcnQKPj4gKyAqCj4+ICsgKiBOb3RlOiBleGlzdGluZyBmYmlm IGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlzcGxpZiBydW5uaW5nIGF0IHRoZQo+PiArICog c2FtZSB0aW1lLCBlLmcuIG9uIExpbnV4IG9uZSBwcm92aWRlcyBmcmFtZWJ1ZmZlciBhbmQgYW5v dGhlciBEUk0vS01TCj4+ICsgKgo+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArICogICAg ICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gb2YgaW1wcm92ZW1lbnRzCj4+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4+ICsgKiBGdXR1cmUgZXh0ZW5zaW9ucyB0byB0aGUgZXhpc3Rpbmcg cHJvdG9jb2wgbWF5IGluY2x1ZGU6Cj4+ICsgKiAgbyBkaXNwbGF5L2Nvbm5lY3RvciBjbG9uaW5n Cj4+ICsgKiAgbyBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZl cnMKPj4gKyAqICBvIHBsYW5lL292ZXJsYXkgc3VwcG9ydAo+PiArICogIG8gc2NhbGluZyBzdXBw b3J0Cj4+ICsgKiAgbyByb3RhdGlvbiBzdXBwb3J0Cj4+ICsgKgo+PiArICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgo+PiArICogICAgICAgICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVn b3RpYXRpb24KPj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqCj4+ICsgKiBGcm9udC0+ YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXF1ZXN0LCBzZW5kaW5n IGEKPj4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBvbiB4ZW5kaXNw bF9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCj4+ICsgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlk ZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKPj4gKyAqIHhlbmRpc3Bs X3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFV RVNUUygpKS4KPj4gKyAqCj4+ICsgKiBCYWNrLT5mcm9udCBub3RpZmljYXRpb25zOiB3aGVuIGVu cXVldWluZyBhIG5ldyByZXNwb25zZSwgc2VuZGluZyBhCj4+ICsgKiBub3RpZmljYXRpb24gY2Fu IGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuZGlzcGxfcmVzcCAoaS5lLiwgdGhlIGdlbmVyaWMK Pj4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgcmluZyBtYWNyb3MpLiBG cm9udGVuZHMgbXVzdCBzZXQKPj4gKyAqIHhlbmRpc3BsX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5n LiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkpLgo+PiArICoKPj4gKyAq IFRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsIGRpc3BsYXkgZHJpdmVyIHV0aWxpemUg bm9kZXMgd2l0aGluCj4+ICsgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMg YW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KPj4gKyAqIFRoaXMgc2VjdGlv biBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBm cm9udCBhbmQKPj4gKyAqIGJhY2tlbmQgcG9ydGlvbnMgb2YgWGVuU3RvcmUsIGZvbGxvd2luZyB0 aGUgWGVuQnVzIGNvbnZlbnRpb24uCj4+ICsgKgo+PiArICogQWxsIGRhdGEgaW4gWGVuU3RvcmUg aXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYwo+PiArICogdmFs dWVzIGFyZSBlbmNvZGVkIGluIGRlY2ltYWwuIEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBi ZWxvdyBhcmUKPj4gKyAqIGV4cHJlc3NlZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNh cGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVyc2lvbgo+PiArICogb2YgYSBwcm9wZXJseSBmb3Jt YXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgo+PiArICoKPj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhh bXBsZSBjb25maWd1cmF0aW9uCj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKgo+PiAr ICogTm90ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBvc2UgbW9y ZSBkaXNwbGF5IGNvbm5lY3RvcnMKPj4gKyAqIHRoYW4gdGhlIHVuZGVybHlpbmcgSFcgcGh5c2lj YWxseSBoYXMgYnkgZW1wbG95aW5nIFNXIGdyYXBoaWNzIGNvbXBvc2l0b3JzCj4+ICsgKgo+PiAr ICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRp b246Cj4+ICsgKgo+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2Vu ZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiArICoKPj4gKyAqIC9sb2Nh bC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvZnJvbnRlbmQtaWQgPSAiMSIKPj4gKyAqIC9s b2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvZnJvbnRlbmQgPSAiL2xvY2FsL2RvbWFp bi8xL2RldmljZS92ZGlzcGwvMCIKPj4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNw bC8xLzAvc3RhdGUgPSAiNCIKPj4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8x LzAvdmVyc2lvbnMgPSAiMSwyIgo+PiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3Bs LzEvMC9mZWF0dXJlcyA9ICJiZV9hbGxvYyIKPj4gKyAqCj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBGcm9udGVuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+ICsgKgo+PiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9iYWNrZW5k LWlkID0gIjAiCj4+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2JhY2tlbmQg PSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMCIKPj4gKyAqIC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmRpc3BsLzAvc3RhdGUgPSAiNCIKPj4gKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+PiArICoKPj4gKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gQ29ubmVjdG9yIDAgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4gKyAqCj4+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvcmVz b2x1dGlvbiA9ICIxOTIweDEwODAiCj4+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNw bC8wLzAvY3RybC1yaW5nLXJlZiA9ICIyODMyIgo+PiArICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC8wL2N0cmwtY2hhbm5lbCA9ICIxNSIKPj4gKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdmRpc3BsLzAvMC9ldmVudC1yaW5nLXJlZiA9ICIzODciCj4+ICsgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvZXZlbnQtY2hhbm5lbCA9ICIxNiIKPj4gKyAqCj4+ICsg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciAxIGNvbmZpZ3VyYXRpb24gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKgo+PiArICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC8xL3Jlc29sdXRpb24gPSAiODAweDYwMCIKPj4gKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmRpc3BsLzAvMS9jdHJsLXJpbmctcmVmID0gIjI4MzMiCj4+ICsgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvY3RybC1jaGFubmVsID0gIjE3Igo+PiArICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2ZW50LXJpbmctcmVmID0gIjM4OCIKPj4g KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9ldmVudC1jaGFubmVsID0gIjE4 Igo+PiArICoKPj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCj4+ICsgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4+ICsgKgo+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90b2NvbCB2 ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiArICoKPj4gKyAqIHZlcnNp b25zCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgo+PiArICoKPj4gKyAqICAg ICAgTGlzdCBvZiBYRU5ESVNQTF9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVy c2lvbnMgc3VwcG9ydGVkCj4+ICsgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAi MSwyLDMiLgo+PiArICoKPj4gKyAqIGZlYXR1cmVzCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8bGlzdCBvZiBzdHJpbmdzPgo+PiArICoKPj4gKyAqICAgICAgWEVORElTUExfTElTVF9TRVBB UkFUT1Igc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMKPj4gKyAqICAgICAgWEVORElTUExfRkVB VFVSRV9CRV8/Pz8gdGhhdCB0aGUgYmFja2VuZCBzdXBwb3J0cy4KPj4gKyAqCj4+ICsgKiAgICAg IGJlX2FsbG9jCj4+ICsgKiAgICAgICAgICAgICBCYWNrZW5kIGNhbiBiZSBhIGJ1ZmZlciBwcm92 aWRlci9hbGxvY2F0b3IgZHVyaW5nCj4+ICsgKiAgICAgICAgICAgICBYRU5ESVNQTF9PUF9EQlVG X0NSRUFURSBvcGVyYXRpb24gKHNlZSBiZWxvdyBmb3IgbmVnb3RpYXRpb24pLgo+PiArICoKPj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZyb250ZW5kIFhlbkJ1cyBOb2Rlcwo+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArICoK Pj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gKyAqCj4+ICsgKiBkb20taWQKPj4gKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4KPj4gKyAqCj4+ICsgKiAgICAgIERvbWFpbiBp ZGVudGlmaWVyLgo+PiArICoKPj4gKyAqIGRldi1pZAo+PiArICogICAgICBWYWx1ZXM6ICAgICAg ICAgPHVpbnQxNl90Pgo+PiArICoKPj4gKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIuCj4+ICsg Kgo+PiArICogY29ubi1pZHgKPj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50OF90Pgo+ PiArICoKPj4gKyAqICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMgaW5kZXggb2YgdGhlIGNvbm5l Y3Rvci4KPj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9tLWlkPi9kZXZpY2UvdmRpc3BsLzxk ZXYtaWQ+Lzxjb25uLWlkeD4vLi4uCj4+ICsgKgo+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiArICoKPj4gKyAqIHZlcnNpb24KPj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+ Cj4+ICsgKgo+PiArICogICAgICBQcm90b2NvbCB2ZXJzaW9uLCBjaG9zZW4gYW1vbmcgdGhlIG9u ZXMgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kLgo+PiArICoKPj4gKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4gKyAqCj4+ICsgKiByZXNvbHV0aW9uCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50MzJfdD4KPj4gKyAqCj4+ICsgKiAgICAg IFdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGNvbm5lY3RvciBpbiBwaXhlbHMgc2VwYXJhdGVkIGJ5 Cj4+ICsgKiAgICAgIFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9SLgo+IElzIHRoZXJlIGFu IGRlZmF1bHQgZGVwdGg/Cm5vCj4gICAzMj8Kbm8gZGVmYXVsdHMKPiAgIE9yIHNob3VsZCB0aGF0 IGFsc28gYmUgbmVnb3RpYXRlZD8KZnJvbnRlbmQgcmVxdWVzdHMgdGhlIGRlc2lyZWQgdmFsdWUg b2YgaXQsIGJhY2tlbmQgcHJvdmlkZXMgaXQKb3IgcmVqZWN0cyB0aGUgcmVxdWVzdCwgc28gZnJv bnQgd2lsbCB0cnkgb3RoZXIgdmFsdWUuClNvLCB5ZXMsIHRoaXMgaXMga2luZCBvZiBuZWdvdGlh dGlvbiBoZXJlIChFSU5WQUwgYmFzZWQgOikKCkkgd2lsbCBhbHNvIHB1dCBhIG5vdGUgdGhhdCAi cmVzb2x1dGlvbiIgb25seSBkZWZpbmVzIHZpc2libGUgYXJlYSwKdGh1cyBkaXNwbGF5IGFuZCBm cmFtZSBidWZmZXIgc2l6ZXMgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoaXMgdmFsdWUKPj4gKyAq Cj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgUmVxdWVzdCBUcmFuc3BvcnQgUGFy YW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKgo+PiArICogY3RybC1jaGFubmVsCj4g UGxlYXNlIGNhbGwgaXQgJ2N0cmwtZXZlbnQtY2hhbm5lbCcKSSB3aWxsCj4+ICsgKiAgICAgIFZh bHVlczogICAgICAgICA8dWludDMyX3Q+Cj4+ICsgKgo+PiArICogICAgICBUaGUgaWRlbnRpZmll ciBvZiB0aGUgWGVuIGNvbm5lY3RvcidzIGNvbnRyb2wgZXZlbnQgY2hhbm5lbAo+PiArICogICAg ICB1c2VkIHRvIHNpZ25hbCBhY3Rpdml0eSBpbiB0aGUgcmluZyBidWZmZXIuCj4+ICsgKgo+PiAr ICogY3RybC1yaW5nLXJlZgo+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ PiArICoKPj4gKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlz c2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCj4+ICsgKiAgICAgIGEgc29sZSBwYWdlIGluIGEg c2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVjdG9yJ3MgY29udHJvbCByaW5nIGJ1ZmZlci4KPj4gKyAq Cj4+ICsgKiBldmVudC1jaGFubmVsCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMy X3Q+Cj4+ICsgKgo+PiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGNvbm5lY3Rv cidzIGV2ZW50IGNoYW5uZWwKPj4gKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4g dGhlIHJpbmcgYnVmZmVyLgo+PiArICoKPj4gKyAqIGV2ZW50LXJpbmctcmVmCj4+ICsgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cj4+ICsgKgo+PiArICogICAgICBUaGUgWGVuIGdy YW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAK Pj4gKyAqICAgICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25uZWN0b3In cyBldmVudCByaW5nIGJ1ZmZlci4KPiBTbyB5b3UgYXJlIG1ha2luZyB0d28gcmluZ3MgYW5kIHR3 byBldmVudCBjaGFubmVscyAtIGFuZCBpdCBsb29rcyBsaWtlIHRoZQo+IG9wZXJhdGlvbnMgYXJl IGdvaW5nIHZpYSB0aGUgY29udHJvbCByaW5nLi4gYnV0IHdoYXQgZ29lcyB0aHJvdWdoIHRoZQo+ IHRoZSBvdGhlciByaW5nIGJ1ZmZlcj8KRXZlbnRzIGZyb20gYmFja2VuZCB0byBmcm9udGVuZCwg Y3VycmVudGx5IG9ubHkgWEVORElTUExfRVZUX1BHX0ZMSVAKSSB3aWxsIGRlZmluZSAyIHNlY3Rp b25zOgogICotLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIFJlcXVlc3QgVHJhbnNwb3J0IFBh cmFtZXRlcnMgCi0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBjdHJsLWV2ZW50LWNoYW5uZWwK ICAqIGN0cmwtcmluZy1yZWYKICAqCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIEV2 ZW50IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIAotLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGV2 ZW50LWNoYW5uZWwKICAqIGV2ZW50LXJpbmctcmVmCgo+IE9yIGlzIHRoZSBvdGhlciByaW5nIGJ1 ZmZlciB0aGUgb25lIHRoYXQgaXMgY3JlYXRlZCB2aWEgJ2dyZWZfZGlyZWN0b3J5JyA/Cm5vCkF0 IHRoZSBib3R0b206CiAgKiBJbiBvcmRlciB0byBkZWxpdmVyIGFzeW5jaHJvbm91cyBldmVudHMg ZnJvbSBiYWNrIHRvIGZyb250IGEgc2hhcmVkIApwYWdlIGlzCiAgKiBhbGxvY2F0ZWQgYnkgZnJv bnQgYW5kIGl0cyBncmVmIHByb3BhZ2F0ZWQgdG8gYmFjayB2aWEgWGVuU3RvcmUgZW50cmllcwog ICogKGV2ZW50LVhYWCkuCgo+IElmIHNvLCB3b3VsZG4ndCB5b3UgbmVlZCBtdWxpdHBsZSBldmVu dCBjaGFubmVscz8gQW5kIGFsc28gdGhlIHNpemUgb2YgdGhvc2UKPiByaW5ncyBpcyBtdWNoIG11 Y2ggYmlnZ2VyLiBCdXQgaXQgaXMgbm90IHJlYWxseSBhIHJpbmcuIEl0IGxvb2tzIHRvIGhvbGQK PiBzb21lIG9wYXF1ZSBkYXRhPwo+Cj4gLUVDT05GVVNFRC4KPj4gKyAqLwo+PiArCj4+ICsvKgo+ PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU1RBVEUgRElBR1JBTVMKPj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqCj4+ ICsgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUgbm9kZXMgd2l0aCBp bml0aWFsIHN0YXRlCj4+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KPj4gKyAqIFRvb2wg c3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24K Pj4gKyAqIG5vZGVzIHBlciBkb21haW4uCj4+ICsgKgo+PiArICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBOb3JtYWwgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+PiArICoKPj4gKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNr Cj4+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQo+PiArICogWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcg ICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nCj4+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgaWRlbnRpZmlj YXRpb24KPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh Lgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIE9wZW4gYW5k IHZhbGlkYXRlIGJhY2tlbmQgZGV2aWNlLgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQKPj4gKyAqCj4+ICsgKiBvIFF1ZXJ5IGZyb250 ZW5kIGNvbmZpZ3VyYXRpb24KPj4gKyAqIG8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUKPj4gKyAq ICAgZXZlbnQgY2hhbm5lbHMgcGVyIGNvbmZpZ3VyZWQKPj4gKyAqICAgY29ubmVjdG9yLgo+PiAr ICogbyBQdWJsaXNoIHRyYW5zcG9ydCBwYXJhbWV0ZXJzCj4+ICsgKiAgIHRoYXQgd2lsbCBiZSBp biBlZmZlY3QgZHVyaW5nCj4+ICsgKiAgIHRoaXMgY29ubmVjdGlvbi4KPj4gKyAqICAgICAgICAg ICAgICB8Cj4+ICsgKiAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgIFYKPj4gKyAq IFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQKPj4gKyAqCj4+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgZnJvbnRlbmQgdHJhbnNwb3J0IHBhcmFtZXRlcnMu Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0 byB0aGUgZXZlbnQgY2hhbm5lbHMuCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQKPj4gKyAqCj4+ICsgKiAgbyBDcmVhdGUgYW5kIGlu aXRpYWxpemUgT1MKPj4gKyAqICAgIHZpcnR1YWwgZGlzcGxheSBjb25uZWN0b3JzCj4+ICsgKiAg ICBhcyBwZXIgY29uZmlndXJhdGlvbi4KPj4gKyAqICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAg ICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgIFYKPj4gKyAqIFhlbmJ1c1N0YXRlQ29ubmVj dGVkCj4+ICsgKgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhl bmJ1c1N0YXRlVW5rbm93bgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWGVuYnVzU3RhdGVDbG9zaW5nCj4+ICsgKiBvIFJlbW92ZSB2aXJ0dWFsIGRpc3Bs YXkgZGV2aWNlCj4+ICsgKiBvIFJlbW92ZSBldmVudCBjaGFubmVscwo+PiArICogICAgICAgICAg ICAgIHwKPj4gKyAqICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAgICAgICAgICAgVgo+PiArICog WGVuYnVzU3RhdGVDbG9zZWQKPj4gKyAqCj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gUmVjb3ZlcnkgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsg Kgo+PiArICogSW4gY2FzZSBvZiBmcm9udGVuZCB1bnJlY292ZXJhYmxlIGVycm9ycyBiYWNrZW5k IGhhbmRsZXMgdGhhdCBhcwo+PiArICogaWYgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNT dGF0ZUNsb3NlZCBzdGF0ZS4KPj4gKyAqCj4+ICsgKiBJbiBjYXNlIG9mIGJhY2tlbmQgdW5yZWNv dmVyYWJsZSBlcnJvcnMgZnJvbnRlbmQgdHJpZXMgcmVtb3ZpbmcKPj4gKyAqIHRoZSBlbXVsYXRl ZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9zc2libGUgYXQgdGhlIG1vbWVudCBvZiBlcnJvciwKPiBX aGF0IGVtdWxhdGVkIGRldmljZT8Kcy9lbXVsYXRlZC92aXJ0dWFsaXplZC9nIGZvciBhbGw/Cj4K Pj4gKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUluaXRpYWxpc2lu ZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCj4+ICsgKiBuZXcgY29ubmVjdGlvbiB3aXRoIGJhY2tl bmQuIElmIHRoZSBlbXVsYXRlZCBkZXZpY2UgaXMgc3RpbGwgaW4gdXNlIGFuZAo+IGVtdWxhdGVk IGRldmljZT8KPgo+PiArICogY2Fubm90IGJlIHJlbW92ZWQsIHRoZW4gZnJvbnRlbmQgZ29lcyBp bnRvIHRoZSBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUKPiAuLiBhbmQgd2hhdCBpcyBk b25lIGluIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBzdGF0ZT8KPgo+IEkgYW0gYXNzdW1pbmcg J3Jlc29sdXRpb24nIGlzIGV4YW1pbmVkPwo+Cj4+ICsgKiB1bnRpbCBlaXRoZXIgdGhlIGVtdWxh dGVkIGRldmljZSByZW1vdmVkIG9yIGJhY2tlbmQgaW5pdGlhdGVzIGEgbmV3Cj4+ICsgKiBjb25u ZWN0aW9uLiBPbiB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlbW92YWwgZnJvbnRlbmQgZ29lcyBpbnRv IHRoZQo+IGVtdWxhdGVkIGRldmljZT8KVGhlIHdob2xlIGlkZWEgaGVyZSBpcyB0byBsZXQgZnJv bnRlbmQgcmVjb3ZlciBmcm9tIGJhY2tlbmQgZmFpbHVyZS4KV2hhdCBoYXBwZW5zIHdoZW4gYmFj a2VuZCBkaWVzOiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cwp0byB0aGUgYmFja2VuZCBh bmQgdGh1cyBjYW5ub3QgZW11bGF0ZSAodmlydHVhbGl6ZSkgZGlzcGxheQpkZXZpY2UgYW55bW9y ZS4gVGhlcmUgaXMgbm8gc2ltcGxlIHNvbHV0aW9uIGxpa2UgZGlzY29ubmVjdGluZyByaW5ncwph bmQgd2FpdGluZyBmb3IgdGhlIGJhY2tlbmQgdG8gcmUtY29ubmVjdCwgYXMgZGlzcGxheSBkZXZp Y2UsIGp1c3QgbGlrZQpzb3VuZCBkZXZpY2VzLCBkb2VzIGhvbGQgc29tZSBzdGF0ZTogY29uZmln dXJhdGlvbiBpbiB1c2UsIG51bWJlciBvZiBkaXNwbGF5CmJ1ZmZlcnMsIGZyYW1lYnVmZmVycywg YXBwbGljYXRpb24gc3RhdGUsIGZyYW1ld29yayAid2F0Y2hkb2dzIiAobGlrZQp2ZXJ0aWNhbCBi bGFuayB0aW1lLW91dHMgYW5kIHJlY292ZXJ5IGF0IGZyYW1ld29yayBsZXZlbCkgZXRjLgpTbywg aW4gbW9zdCBjYXNlcywgaXQgd291bGQgcmVxdWlyZSBmcm9udGVuZCB0byBpbXBsZW1lbnQgY29t cGxleCByZWNvdmVyeQpsb2dpYy4gSW5zdGVhZCwgd2hhdCBJIHN1Z2dlc3QsIHRoYXQgd2UgZ28g aW50byBzb21lIHN0YXRlLCB3aGljaCB0ZWxscyB0aGF0CndlIGFyZSBub3QgeWV0IHJlYWR5IHRv IGdvIGludG8gSW5pdGlhbGl6ZWQgc3RhdGUgYW5kIHN0aWxsIG5lZWQgc29tZSB0aW1lOgphdCB0 aGlzIHRpbWUgZnJvbnRlbmQgd2lsbCB0cnkgdG8gbWFrZSBzdXJlIG5vIG5ldyBjbGllbnRzIGZy b20gdXNlci1zcGFjZQphcmUgYWNjZXB0ZWQsIGl0IGFsbG93cyB0aGUgY3VycmVudCBjbGllbnQg dG8gZXhpdCBncmFjZWZ1bGx5IGJ5IHJldHVybmluZwplcnJvciBjb2RlcyBldGMuIE9uY2UgYWxs IHRoZSBjbGllbnRzIGFyZSBnb25lIGZyb250ZW5kIGNhbiByZWluaXRpYWxpemUKdGhlIHZpcnR1 YWxpemVkIGRldmljZSwgZS5nLiBEUk0vS01TIGRyaXZlciwgYW5kIGdldCBpbnRvIEluaXRpYWxp emVkIHN0YXRlCmFnYWluLgpUaHVzLCBJIHdhcyB0aGlua2luZyBvZiBYZW5idXNTdGF0ZVJlY29u ZmlndXJpbmdzdGF0ZSBhcyBhcHByb3ByaWF0ZSBpbiAKdGhpcyBjYXNlCj4+ICsgKiBYZW5idXNT dGF0ZUluaXRpYWxpc2luZyBzdGF0ZS4KPj4gKyAqCj4+ICsgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Cj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVCBDT0RFUwo+PiArICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgo+PiArICovCj4+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZf Q1JFQVRFICAgICAgIDAKPj4gKyNkZWZpbmUgWEVORElTUExfT1BfREJVRl9ERVNUUk9ZICAgICAg MQo+PiArI2RlZmluZSBYRU5ESVNQTF9PUF9GQl9BVFRBQ0ggICAgICAgICAyCj4+ICsjZGVmaW5l IFhFTkRJU1BMX09QX0ZCX0RFVEFDSCAgICAgICAgIDMKPj4gKyNkZWZpbmUgWEVORElTUExfT1Bf U0VUX0NPTkZJRyAgICAgICAgNAo+PiArI2RlZmluZSBYRU5ESVNQTF9PUF9QR19GTElQICAgICAg ICAgICA1Cj4+ICsKPj4gKy8qCj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWRU5UIENPREVTCj4+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4+ICsgKi8KPj4gKyNkZWZpbmUgWEVORElTUExfRVZUX1BHX0ZMSVAgICAgICAg ICAgMAo+PiArCj4+ICsvKgo+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArICogICAgICAg ICAgICAgICBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1MsIEhFTFBFUlMKPj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqLwo+PiArI2RlZmluZSBYRU5ESVNQTF9EUklW RVJfTkFNRSAgICAgICAgICAidmRpc3BsIgo+PiArCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0xJU1Rf U0VQQVJBVE9SICAgICAgICIsIgo+PiArI2RlZmluZSBYRU5ESVNQTF9SRVNPTFVUSU9OX1NFUEFS QVRPUiAieCIKPj4gKy8qIEZpZWxkIG5hbWVzICovCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxE X0JFX1ZFUlNJT05TICAgICJ2ZXJzaW9ucyIKPj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRkVf VkVSU0lPTiAgICAgInZlcnNpb24iCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0ZFQVRVUkVT ICAgICAgICJmZWF0dXJlcyIKPj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfQ1RSTF9SSU5HX1JF RiAgImN0cmwtcmluZy1yZWYiCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0NUUkxfQ0hBTk5F TCAgICJjdHJsLWNoYW5uZWwiCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0VWVF9SSU5HX1JF RiAgICJldmVudC1yaW5nLXJlZiIKPj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRVZUX0NIQU5O RUwgICAgImV2ZW50LWNoYW5uZWwiCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX1JFU09MVVRJ T04gICAgICJyZXNvbHV0aW9uIgo+PiArCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZFQVRVUkVfQkVf QUxMT0MgICAgICJiZV9hbGxvYyIKPj4gKwo+PiArLyoKPj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUVVMgUkVUVVJOIENPREVTCj4+ ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKgo+PiArICogU3RhdHVzIHJldHVybiBjb2Rl IGlzIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVyZS4KPj4gKyAqCj4+ICsg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFzc3VtcHRpb25zCj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiBvIHVzYWdlIG9m IGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFsaWQgZ3JhbnQgcmVmZXJlbmNlOgo+PiArICogICBn cmFudCByZWZlcmVuY2UgMCBpcyB2YWxpZCwgYnV0IG5ldmVyIGV4cG9zZWQgdG8gYSBQViBkcml2 ZXIsCj4+ICsgKiAgIGJlY2F1c2Ugb2YgdGhlIGZhY3QgaXQgaXMgYWxyZWFkeSBpbiB1c2UvcmVz ZXJ2ZWQgYnkgdGhlIFBWIGNvbnNvbGUuCj4+ICsgKiBvIGFsbCByZWZlcmVuY2VzIGluIHRoaXMg ZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJlIHRyZWF0ZWQKPj4gKyAqICAgYXMgcGFnZXMg b2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQuCj4+ICsgKgo+PiAr ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgo+PiArICogICAgICAgRGVzY3JpcHRpb24gb2YgdGhlIHBy b3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyCj4+ICsgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCj4+ICsgKgo+PiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1 YWwgZGlzcGxheSBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAo+PiArICogZWFjaCBvdGhlciB1c2lu ZyBzaGFyZWQgcGFnZXMgYW5kIGV2ZW50IGNoYW5uZWxzLgo+PiArICogU2hhcmVkIHBhZ2UgY29u dGFpbnMgYSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgo+PiArICoKPj4gKyAq IEFsbCByZXNlcnZlZCBmaWVsZHMgaW4gdGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSAwLgo+ PiArICogRGlzcGxheSBidWZmZXJzJ3MgY29va2llIG9mIHZhbHVlIDAgdHJlYXRlZCBhcyBpbnZh bGlkLgo+PiArICogRnJhbWVidWZmZXIncyBjb29raWUgb2YgdmFsdWUgMCB0cmVhdGVkIGFzIGlu dmFsaWQuCj4+ICsgKgo+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJl cXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiArICoKPj4gKyAqIEFs bCByZXF1ZXN0cy9yZXNwb25zZXMsIHdoaWNoIGFyZSBub3QgY29ubmVjdG9yIHNwZWNpZmljLCBt dXN0IGJlIHNlbnQgb3Zlcgo+PiArICogY29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0 aCBpbmRleCAwLgo+PiArICoKPj4gKyAqIEZvciBhbGwgcmVxdWVzdC9yZXNwb25zZS9ldmVudCBw YWNrZXRzIHRoYXQgdXNlIGNvb2tpZXM6Cj4+ICsgKiAgIGRidWZfY29va2llIC0gdWludDY0X3Qs IHVuaXF1ZSB0byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUgYmFja2VuZAo+PiArICog ICAgIHRvIG1hcCByZW1vdGUgZGlzcGxheSBidWZmZXIgdG8gaXRzIGxvY2FsIG9uZQo+PiArICog ICBmYl9jb29raWUgLSB1aW50NjRfdCwgdW5pcXVlIHRvIGd1ZXN0IGRvbWFpbiB2YWx1ZSB1c2Vk IGJ5IHRoZSBiYWNrZW5kCj4+ICsgKiAgICAgdG8gbWFwIHJlbW90ZSBmcmFtZWJ1ZmZlciB0byBp dHMgbG9jYWwgb25lCj4+ICsgKgo+PiArICogQWxsIHJlcXVlc3QgcGFja2V0cyBoYXZlIHRoZSBz YW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQo+PiArICogQWxsIHJlcXVlc3QgcGFja2V0cyBoYXZlIGNv bW1vbiBoZWFkZXI6Cj4+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAg ICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK Pj4gKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAg IHwgICByZXNlcnZlZCAgICAgfCA0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA4Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqICAgaWQgLSB1aW50MTZfdCwgcHJpdmF0 ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGluIHJlc3BvbnNlCj4+ICsgKiAgIG9wZXJhdGlvbiAtIHVp bnQ4X3QsIG9wZXJhdGlvbiBjb2RlLCBYRU5ESVNQTF9PUF8/Pz8KPj4gKyAqCj4+ICsgKiBSZXF1 ZXN0IGRidWYgY3JlYXRpb24gLSByZXF1ZXN0IGNyZWF0aW9uIG9mIGEgZGlzcGxheSBidWZmZXIu Cj4+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAg ICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAg ICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X09QX0RCVUZfQ1JFQVRFIHwgICByZXNlcnZl ZCAgICAgfCA0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2ll IGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+PiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdoIDMyLWJpdCAg ICAgICAgICAgICAgICAgICAgIHwgMTYKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIwCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAo+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKPj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3N6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDMyCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAzNgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAKPj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0Cj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgNjQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICoKPj4gKyAqIE11c3QgYmUgc2VudCBv dmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KPj4gKyAqCj4+ ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhlbHMKPj4gKyAqIGhlaWdodCAtIHVp bnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxzCj4gV2h5PyBJc24ndCB0aGF0IGluIHRoZSAncmVzb2x1 dGlvbicgWGVuQnVzIGVudHJ5PwpJdCBjYW4gYmUgYmlnZ2VyIHRoYXQgdGhlIHJlc29sdXRpb24s IGZvciBleGFtcGxlCmlmIHNjYWxpbmcgd2lsbCB0YWtlIHBsYWNlLgo+Cj4gSWYgbm90LCB3aHkg ZXZlbiBoYXZlIHRoZSAncmVzb2x1dGlvbicgZmllbGQ/ClRoZSBjb25mdXNpb24gY29tZXMgZnJv bSB0aGUgZmFjdCB0aGF0IHRoZSByZXNvbHV0aW9uIGlzIHZpc2libGUgYXJlYToKd2lsbCBzdGF0 ZSB0aGF0IGNsZWFybHkuCj4gQW5kIGFsc28gLSB3aGF0IGlmIHRoZSB3aWR0aCBvciBoZWlnaHQg YXJlIGJpZ2dlciB0aGFuICdyZXNvbHV0aW9uJz8KPiBTaG91bGQgLUVJTlZBTCBiZSByZXR1cm5l ZD8KPgpubyBwcm9ibGVtIGhlcmU6IHdlIGNhbiBoYXZlIGJ1ZmZlcnMgYmlnZ2VyIHRoYW4gdmlz aWJsZSBhcmVhCj4+ICsgKiBicHAgLSB1aW50MzJfdCwgYml0cyBwZXIgcGl4ZWwKPj4gKyAqIGJ1 ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0ZWQsIG9jdGV0cwo+ PiArICogZmxhZ3MgLSB1aW50MzJfdCwgZmxhZ3Mgb2YgdGhlIG9wZXJhdGlvbgo+PiArICogICBv IFhFTkRJU1BMX0RCVUZfRkxHX1JFUV9BTExPQyAtIGlmIHNldCwgdGhlbiBiYWNrZW5kIGlzIHJl cXVlc3RlZAo+PiArICogICAgIHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgd2l0aCB0aGUgcGFyYW1l dGVycyBwcm92aWRlZCBpbiB0aGlzIHJlcXVlc3QuCj4+ICsgKiAgICAgUGFnZSBkaXJlY3Rvcnkg aXMgaGFuZGxlZCBhcyBmb2xsb3dzOgo+PiArICogICAgICAgRnJvbnRlbmQgb24gcmVxdWVzdDoK Pj4gKyAqICAgICAgICAgbyBhbGxvY2F0ZXMgcGFnZXMgZm9yIHRoZSBkaXJlY3RvcnkKPj4gKyAq ICAgICAgICAgbyBncmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgZGlyZWN0 b3J5Cj4+ICsgKiAgICAgICAgIG8gc2V0cyBncmVmX2Rpcl9uZXh0X3BhZ2UgZmllbGRzCj4+ICsg KiAgICAgICBCYWNrZW5kIG9uIHJlc3BvbnNlOgo+PiArICogICAgICAgICBvIGdyYW50cyBwZXJt aXNzaW9ucyBmb3IgdGhlIHBhZ2VzIG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkCj4gPHNjcmF0Y2hl cyBoaXMgaGVhZD4KPj4gKyAqICAgICAgICAgbyBmaWxscyBpbiBwYWdlIGRpcmVjdG9yeSB3aXRo IGdyYW50IHJlZmVyZW5jZXMKPiBUaGUgYmFja2VuZCBwcm92aWRlcyB0aGUgcGFnZXMgaW5zdGVh ZCBvZiB0aGUgZnJvbnRlbmQ/IEJ1dCB5b3Ugc2FpZAo+ICdhbGxvY2F0ZWQgcGFnZXMgZm9yIHRo ZSBkaXJlY3RvcnknIGluIHRoZSBmcm9udG5lZCBwYXJ0IC0gYW5kIHNpbmNlIHlvdQo+IHNheSAn cGFnZXMnIHRoYXQgbWVhbnMgbW9yZSB0aGFuIG9uZT8gT3IgZGlkIHlvdSBtZWFuICd0aGUgZ3Jl Zl9kaXJlY3RvcnknCj4gcGFnZSBhbmQgdGhlICdncmVmX2Rpcl9uZXh0X3BhZ2UnIHBhZ2VzPyBZ b3UgbWF5IHdhbnQgdG8gYmUgZXhwbGljaXQuCj4Kc3VyZSwgSSB3aWxsIHN0YXRlIGl0IGNsZWFy bHkgdGhhdCBvbmx5IGRpcmVjdG9yeSBwYWdlcwphcmUgYWxsb2NhdGVkOiBncmVmX2RpcmVjdG9y eSArIGdyZWZfZGlyX25leHRfcGFnZShzKQo+IEFuZCB3aGF0IGlmIHRoZSAnZmxhZ3MnIGlzIHpl cm8/Cml0IHdvdWxkIG1lYW4gdGhhdCBldmVuIHRoYXQgdGhlIGJhY2tlbmQgY2FuIGFsbG9jYXRl IGJ1ZmZlcnMKZm9yIHVzIHdlIGRvbid0IHdhbnQgaXQgdG8gZG8gc28sIHdlIHdpbGwgYWxsb2Nh dGUgb24gb3VyIG93bjoKZmxhZyBpcyBub3Qgc2V0Cj4gT3IgMHgzMTQ/IFBlcmhhcHMgYWxzbyBt ZW50aW9uCj4gdGhlIGRlZmF1bHQgb25lICgwIEkgcHJlc3VtZSkgd2hpY2ggd291bGQgbWFrZSB0 aGUgYmFja2VuZCBtYXAKPiB0aGUgZnJvbnRlbmQgcGFnZXMgcHJvdmlkZWQgaW4gJ2dyZWZfZGly ZWN0b3J5Jz8KeWVzLCBJJ2xsIHB1dCBhIG5vdGUgb24gZGVmYXVsdHMKPgo+PiArICogZ3JlZl9k aXJlY3RvcnkgLSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHNoYXJlZCBw YWdlCj4+ICsgKiAgIGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBBdCBsZWFz dCBvbmUgcGFnZSBleGlzdHMuIElmIHNoYXJlZAo+PiArICogICBidWZmZXIgc2l6ZSAgKGJ1ZmZl cl9zeikgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhpcyBzaW5nbGUgcGFnZSwK PiAgICAgICAgICAgICAgICAgICAgIF4tIGV4dHJhIHNwYWNlCmRvbmUKPj4gKyAqICAgdGhlbiBy ZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBtdXN0IGJlIHN1cHBsaWVkIChzZWUgZ3JlZl9kaXJf bmV4dF9wYWdlCj4+ICsgKiAgIGJlbG93KQo+PiArICovCj4KPiBXaGF0IGFyZSBzb21lIG9mIHRo ZSByZXR1cm4gZXJyb3JzID8gV291bGQgaXQgbWFrZSBzZW5zZSB0byBtZW50aW9uCj4gc29tZT8K bm90IHN1cmUsIHRoaXMgd2F5IHdpbGwgZGljdGF0ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLApi dXQgd2UgYXJlIGRlZmluaW5nIHByb3RvY29sCj4KPiBXaGF0IHRvIGZvciBleGFtcGxlIGlmIHRo ZXJlIGFyZSBtdWx0aXBsZSAgX09QX0RCVUZfQ1JFQVRFCj4gd2l0aCB0aGUgc2FtZSBkYnVmX2Nv b2tpZSBidXQgd2l0aCBkaWZmZXJlbnQgd2lkdGgvaGVpZ2h0PwppdCB3aWxsIGJlIGFuIGVycm9y LCBJIHdpbGwgY2xlYXJseSBzdGF0ZSB0aGlzOgogICogQW4gYXR0ZW1wdCB0byBjcmVhdGUgbXVs dGlwbGUgZGlzcGxheSBidWZmZXJzIHdpdGggdGhlIHNhbWUgCmRidWZfY29va2llIGlzCiAgKiBh biBlcnJvci4gZGJ1Zl9jb29raWUgY2FuIGJlIHJlLXVzZWQgYWZ0ZXIgZGVzdHJveWluZyB0aGUg Y29ycmVzcG9uZGluZwogICogZGlzcGxheSBidWZmZXIuCgo+PiArCj4+ICsjZGVmaW5lIFhFTkRJ U1BMX0RCVUZfRkxHX1JFUV9BTExPQyAgICAgICAweDAwMDEKPj4gKwo+PiArc3RydWN0IHhlbmRp c3BsX2RidWZfY3JlYXRlX3JlcSB7Cj4+ICsgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4+ICsg ICAgdWludDMyX3Qgd2lkdGg7Cj4+ICsgICAgdWludDMyX3QgaGVpZ2h0Owo+PiArICAgIHVpbnQz Ml90IGJwcDsKPj4gKyAgICB1aW50MzJfdCBidWZmZXJfc3o7Cj4+ICsgICAgdWludDMyX3QgZmxh Z3M7Cj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnk7Cj4+ICt9Owo+PiArCj4+ICsv Kgo+PiArICogU2hhcmVkIHBhZ2UgZm9yIFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFIGJ1ZmZlciBk ZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbgo+PiArICogdGhlIHJlcXVlc3QpIGVtcGxveXMg YSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmliaW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVkCj4+ICsg KiBkYXRhIGJ1ZmZlcjoKPj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyX25leHRfcGFnZSAgICAg ICAgICAgICAgICAgICAgICAgICB8IDQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDgKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW2ld ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpKjQrOAo+PiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3JlZltOIC0gMV0gICAgICAgICAgICAgICAgICAgICAgICAg ICB8IE4qNCs4Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqCj4+ICsgKiBncmVmX2Rpcl9uZXh0 X3BhZ2UgLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgZGVzY3JpYmlu Zwo+PiArICogICBwYWdlIGRpcmVjdG9yeS4gTXVzdCBiZSAwIGlmIHRoZXJlIGFyZSBubyBtb3Jl IHBhZ2VzIGluIHRoZSBsaXN0Lgo+PiArICogZ3JlZltpXSAtIGdyYW50X3JlZl90LCByZWZlcmVu Y2UgdG8gYSBzaGFyZWQgcGFnZSBvZiB0aGUgYnVmZmVyCj4+ICsgKiAgIGFsbG9jYXRlZCBhdCBY RU5ESVNQTF9PUF9EQlVGX0NSRUFURQo+PiArICoKPj4gKyAqIE51bWJlciBvZiBncmFudF9yZWZf dCBlbnRyaWVzIGluIHRoZSB3aG9sZSBwYWdlIGRpcmVjdG9yeSBpcyBub3QKPj4gKyAqIHBhc3Nl ZCwgYnV0IGluc3RlYWQgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6Cj4+ICsgKiAgIG51bV9ncmVmc190 b3RhbCA9IChYRU5ESVNQTF9PUF9EQlVGX0NSRUFURS5idWZmZXJfc3ogKyBYRU5fUEFHRV9TSVpF IC0gMSkgLwo+PiArICogICAgICAgWEVOX1BBR0VfU0laRQo+PiArICovCj4+ICsKPj4gK3N0cnVj dCB4ZW5kaXNwbF9wYWdlX2RpcmVjdG9yeSB7Cj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJf bmV4dF9wYWdlOwo+PiArICAgIGdyYW50X3JlZl90IGdyZWZbMV07IC8qIFZhcmlhYmxlIGxlbmd0 aCAqLwo+PiArfTsKPj4gKwo+PiArLyoKPj4gKyAqIFJlcXVlc3QgZGJ1ZiBkZXN0cnVjdGlvbiAt IGRlc3Ryb3kgYSBwcmV2aW91c2x5IGFsbG9jYXRlZCBkaXNwbGF5IGJ1ZmZlcjoKPj4gKyAqICAg ICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAg MyAgICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAg IGlkICAgICAgICAgICAgICAgIHxfT1BfREJVRl9ERVNUUk9ZfCAgIHJlc2VydmVkICAgICB8IDQK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAg ICAgICAgICAgfCAxNgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA2NAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKgo+PiAr ICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0aCBp bmRleCAwLgo+PiArICovCj4+ICsKPj4gK3N0cnVjdCB4ZW5kaXNwbF9kYnVmX2Rlc3Ryb3lfcmVx IHsKPj4gKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKPj4gK307Cj4+ICsKPj4gKy8qCj4+ICsg KiBSZXF1ZXN0IGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgLSByZXF1ZXN0IGF0dGFjaG1lbnQgb2Yg YSBmcmFtZWJ1ZmZlciB0bwo+PiArICogcHJldmlvdXNseSBjcmVhdGVkIGRpc3BsYXkgYnVmZmVy Lgo+PiArICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAg ICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAg ICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfRkJfQVRUQUNIICB8ICAgcmVzZXJ2 ZWQgICAgIHwgNAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tp ZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQg ICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAg ICAgICAgfCAyMAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgZmJfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMjQKPj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAzMgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMzYKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwCj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgNjQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICoKPj4gKyAq IE11c3QgYmUgc2VudCBvdmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5k ZXggMC4KPj4gKyAqCj4+ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhlbHMKPj4g KyAqIGhlaWdodCAtIHVpbnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxzCj4gV2h5PyBUaGUgX09QX0RC VUZfQ1JFQVRFIGFscmVhZHkgc3BlY2lmaWVkIHRoZSBoZWlnaHQvd2lkdGguIFdoeSBoYXZlIHRo aXM/Cj4KPiBPciBhcmUgeW91IHRoaW5raW5nIHRvIGhhdmUgYW4gc21hbGxlciAob3IgYmlnZ2Vy PykgcmVzb2x1dGlvbiBmcmFtZWJ1ZmZlcgo+IHRoYW4gdGhlIGRpc3BsYXk/IEkgc3VwcG9zZSB5 b3UgY2FuIGRvIHRoYXQgd2hpY2ggd291bGQgaW1wbHkgdGhhdCB0aGUgZGlzcGxheQo+IHdvdWxk IHN3aXRjaCBtb2Rlcz8gUGVyaGFwcyBtZW50aW9uIHRoaXM/Cj4KPiBBbHNvIHdoYXQgaWYgdGhl c2UgdmFsdWVzIGFyZSBiaWdnZXIgKG9yIGxlc3NlcikgdGhhbiAncmVzb2x1dGlvbicgPwo+Cj4K Pj4gKyAqIHBpeGVsX2Zvcm1hdCAtIHVpbnQzMl90LCBwaXhlbCBmb3JtYXQgb2YgdGhlIGZyYW1l YnVmZmVyLCBGT1VSQ0MgY29kZQo+IFlvdSBkaWQgbm90IG1lbnRpb24gdGhlIGZiX2Nvb2tpZT8K SSBoYXZlIGEgY29tbW9uIHNlY3Rpb246CiAgKiBGb3IgYWxsIHJlcXVlc3QvcmVzcG9uc2UvZXZl bnQgcGFja2V0cyB0aGF0IHVzZSBjb29raWVzOgogICogICBkYnVmX2Nvb2tpZSAtIHVpbnQ2NF90 LCB1bmlxdWUgdG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQgYnkgdGhlIApiYWNrZW5kCiAgKiAg ICAgdG8gbWFwIHJlbW90ZSBkaXNwbGF5IGJ1ZmZlciB0byBpdHMgbG9jYWwgb25lCiAgKiAgIGZi X2Nvb2tpZSAtIHVpbnQ2NF90LCB1bmlxdWUgdG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQgYnkg dGhlIGJhY2tlbmQKICAqICAgICB0byBtYXAgcmVtb3RlIGZyYW1lYnVmZmVyIHRvIGl0cyBsb2Nh bCBvbmUKQnV0IGl0IGlzIGluIHRoZSAiUmVxdWVzdHMiIHNlY3Rpb24gLSBJJ2xsIHB1bGwgaXQg b3V0IHRvIGJlIGNvbW1vbiBmb3IgYWxsCj4+ICsgKi8KPj4gKwo+PiArc3RydWN0IHhlbmRpc3Bs X2ZiX2F0dGFjaF9yZXEgewo+PiArICAgIHVpbnQ2NF90IGRidWZfY29va2llOwo+PiArICAgIHVp bnQ2NF90IGZiX2Nvb2tpZTsKPj4gKyAgICB1aW50MzJfdCB3aWR0aDsKPj4gKyAgICB1aW50MzJf dCBoZWlnaHQ7Cj4+ICsgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0Owo+PiArfTsKPj4gKwo+PiAr LyoKPj4gKyAqIFJlcXVlc3QgZnJhbWVidWZmZXIgZGV0YWNoIC0gZGV0YWNoIGEgcHJldmlvdXNs eQo+PiArICogYXR0YWNoZWQgZnJhbWVidWZmZXIgZnJvbSB0aGUgZGlzcGxheSBidWZmZXIgaW4g cmVxdWVzdDoKPj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAg ICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiAr ICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgIF9PUF9GQl9ERVRBQ0ggfCAg IHJlc2VydmVkICAgICB8IDQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZi X2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgaGlnaCAz Mi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxNgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMjAKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+PiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4+ICsgKgo+PiArICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5nIG9mIHRo ZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgo+PiArICovCj4+ICsKPj4gK3N0cnVjdCB4ZW5kaXNw bF9mYl9kZXRhY2hfcmVxIHsKPj4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4+ICt9Owo+PiAr Cj4+ICsvKgo+PiArICogUmVxdWVzdCBjb25maWd1cmF0aW9uIHNldC9yZXNldCAtIHJlcXVlc3Qg dG8gc2V0IG9yIHJlc2V0Cj4+ICsgKiB0aGUgY29uZmlndXJhdGlvbi9tb2RlIG9mIHRoZSBkaXNw bGF5Ogo+PiArICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8 ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfU0VUX0NPTkZJRyB8ICAgcmVz ZXJ2ZWQgICAgIHwgNAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29v a2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAyMAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicHAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgNDAKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0 Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICoKPj4g KyAqIFBhc3MgYWxsIHplcm9zIHRvIHJlc2V0LCBvdGhlcndpc2UgY29tbWFuZCBpcyB0cmVhdGVk IGFzCj4+ICsgKiBjb25maWd1cmF0aW9uIHNldC4KPiBBbGwgemVyb3M/IEluY2x1ZGluZyBmYl9j b29raWU/ClllcywgZmJfY29va2llIGlzIDAgd2hlbiB3ZSBkaXNhYmxlIHRoZSBkaXNwbGF5LCBh cyBhdCB0aGlzIHBvaW50IHRoZXJlCmNvdWxkIGJlIG5vIGZiIGF0IGFsbCAoYWxsIHJlbGVhc2Vk IGJ5IHRoYXQgdGltZSkKPgo+PiArICogSWYgdGhpcyBpcyBhIHNldCBjb25maWd1cmF0aW9uIHJl cXVlc3QgdGhlbiBmcmFtZWJ1ZmZlcidzIGNvb2tpZSB0ZWxscwo+IE5vdCBzdXJlIGlmIHRoZSBm aXJzdCBwYXJ0IG9mIHRoZSBzZW50ZW5jZSBpcyBuZWVkZWQuIFRoaXMgaXMgYWZ0ZXIgYWxsCj4g dGhlIHNlY3Rpb24gdGhhdCB0YWxrcyBhYm91dCBzZXR0aW5nIGNvbmZpZ3VyYXRpb25zLgpvaywg d2lsbCByZW1vdmUgaXQKPgo+PiArICogdGhlIGRpc3BsYXkgd2hpY2ggZnJhbWVidWZmZXIvZGJ1 ZiBtdXN0IGJlIGRpc3BsYXllZCB3aGlsZSBlbmFibGluZyBkaXNwbGF5Cj4+ICsgKiAoYXBwbHlp bmcgY29uZmlndXJhdGlvbikuCj4gQ2FuIHlvdSBkaXNhYmxlIGFuIGRpc3BsYXkgd2l0aG91dCBj aGFuZ2luZyB0aGlzPwpZb3UgcGFzcyBBTEwgemVyb3MsIGluY2x1ZGluZyBmYl9jb29raWUgdG8g ZGlzYWJsZS9yZXNldC4KPj4gKyAqCj4+ICsgKiB4IC0gdWludDMyX3QsIHN0YXJ0aW5nIHBvc2l0 aW9uIGluIHBpeGVscyBieSBYIGF4aXMKPj4gKyAqIHkgLSB1aW50MzJfdCwgc3RhcnRpbmcgcG9z aXRpb24gaW4gcGl4ZWxzIGJ5IFkgYXhpcwo+IFdoaWNoIGlzIGJvdW5kIGJ5ICdyZXNvbHV0aW9u JyA/IE9yIGJ5IHRoZSBkaXNwbGF5IGNvbW1hbmQ/CnRoZXNlIGFyZSBsaW1pdGVkIGJ5IHRoZSAi cmVzb2x1dGlvbiIgLSB3aWxsIHN0YXRlIHRoYXQ6CiAgKiB4LCB5LCB3aWR0aCBhbmQgaGVpZ2h0 IGFyZSBib3VuZCBieSB0aGUgY29ubmVjdG9yIHJlc29sdXRpb24gYW5kIAptdXN0IG5vdAogICog ZXhjZWVkIGl0LgoKPgo+PiArICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzCj4+ ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscwo+PiArICogYnBwIC0gdWlu dDMyX3QsIGJpdHMgcGVyIHBpeGVsCj4gU2hvdWxkbid0IHRoZXJlIGJlIGFuIHN0cmlkZSBhcyB3 ZWxsPwpubywgc3RyaWRlIGlzIGtpbmQgb2YgaW1wbGVtZW50YXRpb24gZGV0YWlsIHdoaWNoIHNo b3VsZG4ndApiZSBpbiB0aGUgcHJvdG9jb2wKPj4gKyAqLwo+PiArCj4+ICtzdHJ1Y3QgeGVuZGlz cGxfc2V0X2NvbmZpZ19yZXEgewo+PiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPj4gKyAgICB1 aW50MzJfdCB4Owo+PiArICAgIHVpbnQzMl90IHk7Cj4+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4+ ICsgICAgdWludDMyX3QgaGVpZ2h0Owo+PiArICAgIHVpbnQzMl90IGJwcDsKPj4gK307Cj4+ICsK Pj4gKy8qCj4+ICsgKiBSZXF1ZXN0IHBhZ2UgZmxpcCAtIHJlcXVlc3QgdG8gZmxpcCBhIHBhZ2Ug aWRlbnRpZmllZCBieSB0aGUgZnJhbWVidWZmZXIKPj4gKyAqIGNvb2tpZToKPj4gKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgIGlk ICAgICAgICAgICAgICAgIHwgX09QX1BHX0ZMSVAgICAgfCAgIHJlc2VydmVkICAgICB8IDQKPj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0ICAg ICAgICAgICAgICAgICAgICAgICB8IDEyCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAg ICAgICAgfCAxNgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA2NAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKi8KPj4gKwo+ PiArc3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgewo+PiArICAgIHVpbnQ2NF90IGZiX2Nv b2tpZTsKPj4gK307Cj4+ICsKPj4gKy8qCj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gUmVzcG9uc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsg Kgo+PiArICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9j dGV0cykKPj4gKyAqCj4+ICsgKiBBbGwgcmVzcG9uc2UgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFk ZXI6Cj4+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgfCA0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+PiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDY0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqCj4+ICsgKiBpZCAtIHVpbnQxNl90 LCBwcml2YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgZnJvbSByZXF1ZXN0Cj4+ICsgKiBzdGF0dXMg LSBpbnQzMl90LCByZXNwb25zZSBzdGF0dXMsIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFgg b24gZmFpbHVyZQo+PiArICoKPj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gRXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gKyAqCj4+ICsg KiBFdmVudHMgYXJlIHNlbnQgdmlhIGEgc2hhcmVkIHBhZ2UgYWxsb2NhdGVkIGJ5IHRoZSBmcm9u dCBhbmQgcHJvcGFnYXRlZCBieQo+PiArICogICBldmVudC1jaGFubmVsL2V2ZW50LXJpbmctcmVm IFhlblN0b3JlIGVudHJpZXMKPj4gKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUg bGVuZ3RoICg2NCBvY3RldHMpCj4+ICsgKiBBbGwgZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBo ZWFkZXI6Cj4+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAg MiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAq IHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgICAgdHlwZSAgICAgIHwgICBy ZXNlcnZlZCAgICAgfCA0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4 Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqCj4+ICsgKiBpZCAtIHVpbnQxNl90LCBldmVudCBp ZCwgbWF5IGJlIHVzZWQgYnkgZnJvbnQKPj4gKyAqIHR5cGUgLSB1aW50OF90LCB0eXBlIG9mIHRo ZSBldmVudAo+PiArICoKPj4gKyAqCj4+ICsgKiBQYWdlIGZsaXAgY29tcGxldGUgZXZlbnQgLSBl dmVudCBmcm9tIGJhY2sgdG8gZnJvbnQgb24gcGFnZSBmbGlwIGNvbXBsZXRlZDoKPj4gKyAqICAg ICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAg MyAgICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAg IGlkICAgICAgICAgICAgICAgIHwgICBfRVZUX1BHX0ZMSVAgfCAgIHJlc2VydmVkICAgICB8IDQK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0 ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAg ICAgICAgICAgfCAxNgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA2NAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKi8KPj4g Kwo+PiArc3RydWN0IHhlbmRpc3BsX3BnX2ZsaXBfZXZ0IHsKPj4gKyAgICB1aW50NjRfdCBmYl9j b29raWU7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVxIHsKPj4gKyAgICB1aW50 MTZfdCBpZDsKPj4gKyAgICB1aW50OF90IG9wZXJhdGlvbjsKPj4gKyAgICB1aW50OF90IHJlc2Vy dmVkWzVdOwo+PiArICAgIHVuaW9uIHsKPj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX2RidWZf Y3JlYXRlX3JlcSBkYnVmX2NyZWF0ZTsKPj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX2RidWZf ZGVzdHJveV9yZXEgZGJ1Zl9kZXN0cm95Owo+PiArICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfZmJf YXR0YWNoX3JlcSBmYl9hdHRhY2g7Cj4+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9mYl9kZXRh Y2hfcmVxIGZiX2RldGFjaDsKPj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3NldF9jb25maWdf cmVxIHNldF9jb25maWc7Cj4+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9wYWdlX2ZsaXBfcmVx IHBnX2ZsaXA7Cj4+ICsgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOwo+PiArICAgIH0gb3A7 Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVzcCB7Cj4+ICsgICAgdWludDE2X3Qg aWQ7Cj4+ICsgICAgdWludDhfdCBvcGVyYXRpb247Cj4+ICsgICAgdWludDhfdCByZXNlcnZlZDsK Pj4gKyAgICBpbnQzMl90IHN0YXR1czsKPj4gKyAgICB1aW50OF90IHJlc2VydmVkMVs1Nl07Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3QgeGVuZGlzcGxfZXZ0IHsKPj4gKyAgICB1aW50MTZfdCBpZDsK Pj4gKyAgICB1aW50OF90IHR5cGU7Cj4+ICsgICAgdWludDhfdCByZXNlcnZlZFs1XTsKPj4gKyAg ICB1bmlvbiB7Cj4+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9wZ19mbGlwX2V2dCBwZ19mbGlw Owo+PiArICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKPj4gKyAgICB9IG9wOwo+PiArfTsK Pj4gKwo+PiArREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9y ZXEsIHN0cnVjdCB4ZW5kaXNwbF9yZXNwKTsKPj4gKwo+PiArLyoKPj4gKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBmcm9udCBldmVu dHMgZGVsaXZlcnkKPj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAqIEluIG9yZGVyIHRv IGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFyZWQg cGFnZSBpcwo+PiArICogYWxsb2NhdGVkIGJ5IGZyb250IGFuZCBpdHMgZ3JlZnMgcHJvcGFnYXRl ZCB0byBiYWNrIHZpYSBYZW5TdG9yZSBlbnRyaWVzCj4+ICsgKiAoZXZlbnQtWFhYKS4KPiA/Cj4K PiBZb3UgbWVhbiBldmVudC1jaGFubmVsID8gT3IgY29udHJvbC1ldmVudC1jaGFubmVsPwpldmVu dC1jaGFubmVsIHdoaWNoIGlzIHVzZWQgZm9yIGFzeW5jIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJv bnQsCmNvbnRyb2wgaXMgYWx3YXlzIHVzZWQgdG8gcGFzcyByZXEvcmVzcC4KPj4gKyAqIFRoaXMg cGFnZSBoYXMgYSBjb21tb24gaGVhZGVyIHVzZWQgYnkgYm90aCBmcm9udCBhbmQgYmFjayB0byBz eW5jaHJvbml6ZQo+PiArICogYWNjZXNzIGFuZCBjb250cm9sIGV2ZW50J3MgcmluZyBidWZmZXIs IHdoaWxlIGJhY2sgYmVpbmcgYSBwcm9kdWNlciBvZiB0aGUKPj4gKyAqIGV2ZW50cyBhbmQgZnJv bnQgYmVpbmcgYSBjb25zdW1lci4gVGhlIHJlc3Qgb2YgdGhlIHBhZ2UgYWZ0ZXIgdGhlIGhlYWRl cgo+PiArICogaXMgdXNlZCBmb3IgZXZlbnQgcGFja2V0cy4KPj4gKyAqCj4+ICsgKiBVcG9uIHJl Y2VwdGlvbiBvZiBhbiBldmVudChzKSBmcm9udCBtYXkgY29uZmlybSBpdHMgcmVjZXB0aW9uCj4+ ICsgKiBmb3IgZWl0aGVyIGVhY2ggZXZlbnQsIGdyb3VwIG9mIGV2ZW50cyBvciBub25lLgo+PiAr ICovCj4+ICsKPj4gK3N0cnVjdCB4ZW5kaXNwbF9ldmVudF9wYWdlIHsKPj4gKyAgICB1aW50MzJf dCBpbl9jb25zOwo+PiArICAgIHVpbnQzMl90IGluX3Byb2Q7Cj4+ICsgICAgdWludDhfdCByZXNl cnZlZFs1Nl07Cj4+ICt9Owo+PiArCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0VWRU5UX1BBR0VfU0la RSA0MDk2Cj4+ICsjZGVmaW5lIFhFTkRJU1BMX0lOX1JJTkdfT0ZGUyAoc2l6ZW9mKHN0cnVjdCB4 ZW5kaXNwbF9ldmVudF9wYWdlKSkKPj4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19TSVpFIChY RU5ESVNQTF9FVkVOVF9QQUdFX1NJWkUgLSBYRU5ESVNQTF9JTl9SSU5HX09GRlMpCj4+ICsjZGVm aW5lIFhFTkRJU1BMX0lOX1JJTkdfTEVOIChYRU5ESVNQTF9JTl9SSU5HX1NJWkUgLyBzaXplb2Yo c3RydWN0IHhlbmRpc3BsX2V2dCkpCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0lOX1JJTkcocGFnZSkg XAo+PiArCSgoc3RydWN0IHhlbmRpc3BsX2V2dCAqKSgoY2hhciAqKShwYWdlKSArIFhFTkRJU1BM X0lOX1JJTkdfT0ZGUykpCj4+ICsjZGVmaW5lIFhFTkRJU1BMX0lOX1JJTkdfUkVGKHBhZ2UsIGlk eCkgXAo+PiArCShYRU5ESVNQTF9JTl9SSU5HKChwYWdlKSlbKGlkeCkgJSBYRU5ESVNQTF9JTl9S SU5HX0xFTl0pCj4gV2h5IG5vdCB1c2UgdGhlIHJpbmcuaCBtYWNyb3M/CndlbGwsIHRoaXMgaXMg dGhlIHdheSB0aGUgc2FtZSBzdHJ1Y3RzIGFyZSBkZWZpbmVkIGZvciBmYmlmL2tiaWYKYW5kIEkg YW0gbm90IHN1cmUgd2hhdCBjYW4gYmUgcmUtdXNlZCBoZXJlIGZyb20gcmluZy5oIGFzIGl0IGlz CmRlc2lnbmVkIHRvIHdvcmsgd2l0aCByZXEvcmVzcCwgbm90IGV2ZW50cy4KPgo+IEVzcGVjaWFs bHkgYXMgdGhlIHRvcCBvZiB0aGlzIHRhbGtzIGFib3V0ICJSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9S RVFVRVNUUyI/CkkgY2FuIHJlbW92ZSB0aGlzCj4+ICsKPj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJM SUNfSU9fRElTUExJRl9IX18gKi8KPiBDb3VsZCB3ZSBhbHNvIGhhdmUgdGhpcyBoZWFkZXIgaW46 CnN1cmUsIEkgd2lsbCBhZGQgdGhlIHNhbWUgdG8gc25kaWYgYXMgd2VsbAo+Cj4gLyoKPiAgICog TG9jYWwgdmFyaWFibGVzOgo+ICAgKiBtb2RlOiBDCj4gICAqIGMtZmlsZS1zdHlsZTogIkJTRCIK PiAgICogYy1iYXNpYy1vZmZzZXQ6IDQKPiAgICogdGFiLXdpZHRoOiA0Cj4gICAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAo+ICAgKiBFbmQ6Cj4gICAqLwo+Cj4gcGxlYXNlPwo+PiAtLSAKPj4gMi43 LjQKPj4KWzFdIGh0dHA6Ly9tYXJjLmluZm8vP2w9eGVuLWRldmVsJm09MTQyMTY3MTUzMzI0MDUy Jnc9NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=