From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 77DC72C3F for ; Fri, 1 Dec 2017 20:12:13 +0100 (CET) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Dec 2017 11:12:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,346,1508828400"; d="scan'208";a="155145315" Received: from irsmsx151.ger.corp.intel.com ([163.33.192.59]) by orsmga004.jf.intel.com with ESMTP; 01 Dec 2017 11:12:11 -0800 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.22]) by IRSMSX151.ger.corp.intel.com ([169.254.4.108]) with mapi id 14.03.0319.002; Fri, 1 Dec 2017 19:12:10 +0000 From: "Trahe, Fiona" To: "'Verma, Shally'" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" , "De Lara Guarch, Pablo" , "Trahe, Fiona" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNpzBSo1ZjDhxTcR46UpkXBh0QrkQAB3v7w Date: Fri, 1 Dec 2017 19:12:10 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435892CB667@IRSMSX101.ger.corp.intel.com> References: In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYzk0ZTUwMzEtNTIwOC00N2MyLWJhNjYtNGIxYmQyMWFhYTU3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IklESHBoSXAwK1MrTHJLS0MrbDRRQ3JQN3k5bDZmRnhPSTRjb1pZREF2Qk09In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC v1] doc compression API for DPDK X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Dec 2017 19:12:15 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVmVybWEsIFNoYWxseSBb bWFpbHRvOlNoYWxseS5WZXJtYUBjYXZpdW0uY29tXQ0KPiBTZW50OiBUaHVyc2RheSwgTm92ZW1i ZXIgMzAsIDIwMTcgMTE6MTMgQU0NCj4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50 ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5h cmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IENoYWxsYSwgTWFoaXBhbA0KPiA8TWFo aXBhbC5DaGFsbGFAY2F2aXVtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtSRkMgdjFdIGRvYyBjb21w cmVzc2lvbiBBUEkgZm9yIERQREsNCj4gDQo+IEhJIEZpb25hDQo+IA0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86ZmlvbmEudHJh aGVAaW50ZWwuY29tXQ0KPiA+IFNlbnQ6IDI4IE5vdmVtYmVyIDIwMTcgMDA6MjUNCj4gPiBUbzog VmVybWEsIFNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBkZXZAZHBkay5vcmc7IEF0 aHJleWEsDQo+ID4gTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1 bS5jb20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPiA8TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNvbT47 IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5j b20+DQo+ID4gQ2M6IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPiA+IFN1 YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERLDQo+ID4NCj4g PiBIaSBTaGFsbHksDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBWZXJtYSwgU2hhbGx5IFttYWlsdG86U2hhbGx5LlZlcm1hQGNhdml1bS5jb21dDQo+ ID4gPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDMxLCAyMDE3IDExOjM5IEFNDQo+ID4gPiBUbzog ZGV2QGRwZGsub3JnOyBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IEF0aHJl eWEsDQo+ID4gTmFyYXlhbmEgUHJhc2FkDQo+ID4gPiA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBj YXZpdW0uY29tPjsgQ2hhbGxhLCBNYWhpcGFsDQo+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5j b20+DQo+ID4gPiBTdWJqZWN0OiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERL DQo+ID4gPg0KPiA+ID4gSEkgRmlvbmENCj4gPiA+DQo+ID4gPiBUaGlzIGlzIGFuIFJGQyBkb2N1 bWVudCB0byBicmllZiBvdXIgdW5kZXJzdGFuZGluZyBhbmQgcmVxdWlyZW1lbnRzIG9uDQo+ID4g Y29tcHJlc3Npb24gQVBJIHByb3Bvc2FsIGluDQo+ID4gPiBEUERLLiBJdCBpcyBiYXNlZCBvbiAi W1JGQ10gQ29tcHJlc3Npb24gQVBJIGluIERQREsNCj4gPiBodHRwOi8vZHBkay5vcmcvbWwvYXJj aGl2ZXMvZGV2LzIwMTctDQo+ID4gPiBPY3RvYmVyLzA3OTM3Ny5odG1sIi4NCj4gPiA+IEludGVu dGlvbiBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIGFsaWduIG9uIGNvbmNlcHRzIGJ1aWx0IGludG8g Y29tcHJlc3Npb24NCj4gPiBBUEksIGl0cyB1c2FnZSBhbmQgaWRlbnRpZnkgZnVydGhlcg0KPiA+ ID4gcmVxdWlyZW1lbnRzLg0KPiA+ID4NCj4gPiA+IEdvaW5nIGZ1cnRoZXIgaXQgY291bGQgYmUg YSBiYXNlIHRvIENvbXByZXNzaW9uIE1vZHVsZSBQcm9ncmFtbWVyDQo+ID4gR3VpZGUuDQo+ID4g Pg0KPiA+ID4gQ3VycmVudCBzY29wZSBpcyBsaW1pdGVkIHRvDQo+ID4gPiAtIGRlZmluaXRpb24g b2YgdGhlIHRlcm1pbm9sb2d5IHdoaWNoIG1ha2VzIHVwIGZvdW5kYXRpb24gb2YgY29tcHJlc3Np b24NCj4gPiBBUEkNCj4gPiA+IC0gdHlwaWNhbCBBUEkgZmxvdyBleHBlY3RlZCB0byB1c2UgYnkg YXBwbGljYXRpb25zDQo+ID4gPg0KPiA+ID4gT3ZlcnZpZXcNCj4gPiA+IH5+fn5+fn5+DQo+ID4g PiBBLiBOb3Rpb24gb2YgYSBzZXNzaW9uIGluIGNvbXByZXNzaW9uIEFQSQ0KPiA+ID4gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gQSBTZXNzaW9uIGlzIHBlciBkZXZp Y2UgbG9naWNhbCBlbnRpdHkgd2hpY2ggaXMgc2V0dXAgd2l0aCBjaGFpbmVkLXhmb3JtcyB0bw0K PiA+IGJlIHBlcmZvcm1lZCBvbiBidXJzdA0KPiA+ID4gb3BlcmF0aW9ucyB3aGVyZSBpbmRpdmlk dWFsIGVudHJ5IGNvbnRhaW5zIG9wZXJhdGlvbiB0eXBlDQo+ID4gKGRlY29tcHJlc3MvY29tcHJl c3MpIGFuZCByZWxhdGVkIHBhcmFtZXRlci4NCj4gPiA+IEEgdHlwaWNhbCBTZXNzaW9uIHBhcmFt ZXRlciBpbmNsdWRlczoNCj4gPiA+IC0gY29tcHJlc3MgLyBkZWNvbXByZXNzDQo+ID4gPiAtIGRl dl9pZA0KPiA+ID4gLSBjb21wcmVzc2lvbiBhbGdvcml0aG0gYW5kIG90aGVyIHJlbGF0ZWQgcGFy YW1ldGVycw0KPiA+ID4gLSBtZW1wb29sIC0gZm9yIHVzZSBieSBzZXNzaW9uIGZvciBydW50aW1l IHJlcXVpcmVtZW50DQo+ID4gPiAtIGFuZCBhbnkgb3RoZXIgYXNzb2NpYXRlZCBwcml2YXRlIGRh dGEgbWFpbnRhaW5lZCBieSBzZXNzaW9uDQo+ID4gPg0KPiA+ID4gQXBwbGljYXRpb24gY2FuIHNl dHVwIG11bHRpcGxlIHNlc3Npb25zIG9uIGEgZGV2aWNlIGFzIGRpY3RhdGVkIGJ5DQo+ID4gZGV2 X2luZm8ubmJfc2Vzc2lvbnMgb3INCj4gPiA+IG5iX3Nlc3Npb25fcGVyX3FwLg0KPiA+ID4NCj4g PiBbRmlvbmFdIFRoZSBzZXNzaW9uIGRlc2lnbiBpcyBtb2RlbGxlZCBvbiB0aGUgY3J5cHRvZGV2 IHNlc3Npb24gZGVzaWduIGFuZA0KPiA+IHNvIGFsbG93cw0KPiA+IHRvIGNyZWF0ZSBhIHNlc3Np b24gd2hpY2ggY2FuIGJlIHVzZWQgb24gZGlmZmVyZW50IGRyaXZlciB0eXBlcy4gRS5nLiAgYQ0K PiA+IHNlc3Npb24gY291bGQgYmUgc2V0IHVwIGFuZCBpbml0aWFsaXNlZA0KPiA+IHRvIHJ1biBv biBhIFF1aWNrQXNzaXN0IGRldmljZSBhbmQgYSBTb2Z0d2FyZSBkZXZpY2UuIFRoaXMgbWF5IGJl IHVzZWZ1bCBmb3INCj4gPiBzdGF0ZWxlc3MNCj4gPiByZXF1ZXN0cywgYW5kIGVuYWJsZSBsb2Fk LWJhbGFuY2luZy4gRm9yIHN0YXRlZnVsIGZsb3dzIHRoZSBzZXNzaW9uIHNob3VsZCBiZQ0KPiA+ IHNldCB1cCBmb3INCj4gPiBvbmx5IG9uZSBzcGVjaWZpYyBkcml2ZXItdHlwZSBhcyB0aGUgc3Rh dGUgaW5mb3JtYXRpb24gd2lsbCBiZSBzdG9yZWQgaW4gdGhlDQo+ID4gcHJpdmF0ZSBkYXRhIHNw ZWNpZmljIHRvIHRoZSBkcml2ZXItdHlwZQ0KPiA+IGFuZCBub3QgdHJhbnNmZXJyYWJsZSBiZXR3 ZWVuIGRyaXZlci10eXBlcy4NCj4gPiBTbyBhIHNlc3Npb24NCj4gPiAgLSBpcyBub3QgcGVyLWRl dmljZQ0KPiA+ICAtIGhhcyBubyBkZXZfaWQNCj4gPiAgLSBoYXMgbm8gbWVtcG9vbCBzdG9yZWQg aW4gaXQgLSB0aGUgcG9vbCBpcyBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGxpYg0K PiA+IGNhbiByZXRyaWV2ZSB0aGUgcG9vbCBmcm9tIHRoZSBvYmplY3Qgd2l0aCBydGVfbWVtcG9v bF9mcm9tX29iaigpDQo+ID4gIC0gZG9lcyBub3QgaGF2ZSBhIGxpbWl0IG51bWJlciBwZXIgZGV2 aWNlLCBqdXN0IHBlciBxcCwgaS5lLiB0aGVyZSBpcyBubw0KPiA+IGRldl9pbmZvLm5iX3Nlc3Np b25zLCBqdXN0IGRldl9pbmZvLm1heF9uYl9zZXNzaW9uc19wZXJfcXANCj4gPg0KPiA+IERvIHlv dSB0aGluayBhbnkgb2YgdGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkPw0KPiANCj4gW1NoYWxseV0g UGxlYXNlIGhlbHAgY29uZmlybSBmb2xsb3dpbmcgYmVmb3JlIEkgY291bGQgYW5zd2VyIHRoaXMu DQo+IA0KPiBJbiBjcnlwdG9kZXYsIHNlc3Npb24gaG9sZHMgYW4gZHJpdmVycyBhcnJheSBpbml0 aWFsaXplZCBvbiBpdCB3aGVyZSBlYWNoIGNhbiBiZSBzZXR1cCB0byBwZXJmb3JtDQo+IHNhbWUv ZGlmZmVyZW50IG9wZXJhdGlvbiBpbiBpdHMgcHJpdmF0ZV9kYXRhLg0KPiBPbiBtYXBwaW5nIGl0 IHRvIGNvbXByZXNzaW9uIGl0IG1lYW4sIGEgc2Vzc2lvbjoNCj4gLSBXaWxsIG5vdCByZXRhaW4g YW55IG9mIHRoZSBpbmZvIGFzIG1lbnRpb25lZCBhYm92ZSAoeGZvcm0sIG1lbXBvb2wsIGFsZ29z IGV0IGVsKS4gQWxsIHN1Y2ggaW5mb3JtYXRpb24gaXMNCj4gbWFpbnRhaW5lZCBhcyBwYXJ0IG9m IGFzc29jaWF0ZWQgZGV2aWNlIGRyaXZlciBwcml2YXRlIGRhdGEuDQpbRmlvbmFdIGV4YWN0bHkN Cg0KPiAtIEFwcCBjYW4gdXNlIHNhbWUgc2Vzc2lvbiB0byBzZXQgY29tcHJlc3MgeGZvcm0gYW5k IGRlY29tcHJlc3MgeGZvcm0gb24gZGV2aWNlcyBidXQgaWYgYm90aCBkZXZpY2VzDQo+IG1hcHMg dG8gc2FtZSBkcml2ZXJfaWQgdGhlbiBvbmx5IGVpdGhlciBpcyBlZmZlY3RpdmUgKHdoaWNoZXZl ciBpcyBzZXQgZmlyc3QpPw0KW0Zpb25hXSBObywgIHRoZSBpbnRlbnRpb24gaXMgdGhhdCB0aGUg c2Vzc2lvbiBpcyBpbml0aWFsaXNlZCBmb3IgYWxsIGRyaXZlcnMsIGFuZCBzbyBmb3IgYWxsIGRl dmljZXMsIHVzaW5nIHRoZSBzYW1lIHhmb3JtLiBTbyBpdCBzaG91bGQgb25seSBiZSBpbml0aWFs aXNlZCB0byBlaXRoZXIgY29tcHJlc3Mgb3IgZGVjb21wcmVzcy4gDQpUaGUgaW50ZW50IGJlaW5n IHRoYXQgYW4gYXBwbGljYXRpb24gY2FuIHByZXBhcmUgYW4gb3BlcmF0aW9uIChzdGF0ZWxlc3Mp IGluZGVwZW5kZW50bHkgb2YgdGhlIGRyaXZlciAmIGRldmljZSBpdCdzIHRhcmdldGluZywgYW5k IHRoZW4gY2hvb3NlIHdoZXJlIHRvIHNlbmQgaXQsIHBvc3NpYmx5IGJhc2VkIG9uIHdoaWNoIGRl dmljZSBpcyBub3QgYnVzeS4NCg0KDQo+IA0KPiBJcyB0aGlzIHVuZGVyc3RhbmRpbmcgY29ycmVj dD8NCj4gDQo+ID4NCj4gPiA+IEIuIE5vdGlvbiBvZiBidXJzdCBvcGVyYXRpb25zIGluIGNvbXBy ZXNzaW9uIEFQSQ0KPiA+ID4gwqA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4gPiA+IHN0cnVjdCBydGVfY29tcF9vcCBkZWZpbmVzIGNvbXByZXNzaW9uL2RlY29tcHJl c3Npb24gb3BlcmF0aW9uYWwNCj4gPiBwYXJhbWV0ZXIgYW5kIG1ha2VzIHVwIG9uZSBzaW5nbGUN Cj4gPiA+IGVsZW1lbnQgb2YgYnVyc3QuIFRoaXMgaXMgYm90aCBhbiBpbnB1dC9vdXRwdXQgcGFy YW1ldGVyLg0KPiA+ID4gUE1EIGdldHMgc291cmNlLCBkZXN0aW5hdGlvbiBhbmQgY2hlY2tzdW0g aW5mb3JtYXRpb24gYXQgaW5wdXQgYW5kDQo+ID4gdXBkYXRlZCBpdCB3aXRoIGJ5dGVzIGNvbnN1 bWVkIGFuZA0KPiA+ID4gcHJvZHVjZWQgYXQgb3V0cHV0Lg0KPiA+IFtGaW9uYV0gQWdyZWVkDQo+ ID4NCj4gPiA+IE9uY2UgZW5xdWV1ZWQgZm9yIHByb2Nlc3NpbmcsIHJ0ZV9jb21wX29wICpjYW5u b3QgYmUgcmV1c2VkKiB1bnRpbCBpdHMNCj4gPiBzdGF0dXMgaXMgc2V0IHRvDQo+ID4gPiBSVEVf Q09NUF9PUF9GQUlMVVJFIG9yIFJURV9DT01QX09QX1NUQVRVU19TVUNDRVNTLg0KPiA+IFtGaW9u YV0gY2Fubm90IGJlIHVzZWQgdW50aWwgaXRzIHN0YXR1cyBpcyBzZXQgdG8gYW55IHZhbHVlIG90 aGVyIHRoYW4NCj4gPiBSVEVfQ09NUF9PUF9OT1RfUFJPQ0VTU0VEDQo+IA0KPiBbU2hhbGx5XSBI b3cgdXNlciB3aWxsIGtub3cgdGhhdCBzdGF0dXMgaXMgTk9UX1BST0NFU1NFRCBhZnRlciBvcHMg YXJlIGVucXVldWVkPw0KPiBJIGFzc3VtZSBvbmx5IHdheSB0byBjaGVjayBlbnF1ZXVlZCBvcHMg c3RhdHVzIGlzIGRlcXVldWVfYnVyc3QoKSBhbmQgUE1EIHB1dCBhbiBvcCBpbnRvIGNvbXBsZXRp b24NCj4gcXVldWUgZm9yIGRlcXVldWUgKm9ubHkgd2hlbiogaXQgaXMgY29tcGxldGVkIHdpdGgg UGFzcy9GYWlsL091dF9vZl9zcGFjZSBjb25kaXRpb24gKm5vdCogd2hlbiBpdCdzIGluDQo+IHBy b2dyZXNzIChlcXVpdmFsZW50IG9mIFJURV9DT01QX09QX05PVF9QUk9DRVNTRUQpLg0KPiANCj4g QW0gSSBtaXNzaW5nIGFueXRoaW5nIGhlcmU/DQpbRmlvbmFdICBDb3JyZWN0LiBQTUQgc2hvdWxk IG9ubHkgcmV0dXJuIGFuIG9wIGluIHRoZSBkZXF1ZXVlIG9uY2UgaXQncyBwcm9jZXNzZWQuDQoN Cj4gDQo+ID4NCj4gPg0KPiA+ID4gQy4gU2Vzc2lvbiBhbmQgcnRlX2NvbXBfb3ANCj4gPiA+IMKg PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+IEV2ZXJ5IG9wZXJhdGlvbiBpbiBhIGJ1cnN0 IGlzIHRpZWQgdG8gYSBTZXNzaW9uLiBNb3JlIHRvIGNvdmVyIG9uIHRoaXMgdW5kZXINCj4gPiBT dGF0ZWxlc3MgVnMgU3RhdGVmdWwgc2VjdGlvbi4NCj4gPiBbRmlvbmFdIEFncmVlZC4gSSB3b3Vs ZCBhZGQgdGhhdCBlYWNoIG9wZXJhdGlvbiBpbiBhIGJ1cnN0IG1heSBiZSBhdHRhY2hlZA0KPiA+ IHRvIGEgZGlmZmVyZW50IHNlc3Npb24uDQo+ID4NCj4gPg0KPiA+ID4gRC4gU3RhdGVsZXNzIFZz IFN0YXRlZnVsDQo+ID4gPiA9PT09PT09PT09PT09PT09PT09DQo+ID4gPiBDb21wcmVzc2lvbiBB UEkgcHJvdmlkZSBSVEVfQ09NUF9GRl9TVEFURUZVTCBmZWF0dXJlIGZsYWcgZm9yIFBNRA0KPiA+ IHRvIHJlZmxlY3QgaXRzIHN1cHBvcnQgZm9yIFN0YXRlZnVsDQo+ID4gPiBvcGVyYXRpb24uDQo+ ID4gW0Zpb25hXSBBZ3JlZWQuDQo+ID4NCj4gPiA+DQo+ID4gPiBELjEgQ29tcHJlc3Npb24gQVBJ IFN0YXRlbGVzcyBvcGVyYXRpb24NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gQSBTdGF0ZWxlc3Mgb3BlcmF0aW9uIG1l YW5zIGFsbCBlbnF1ZXVlZCBwYWNrZXRzIGFyZSBpbmRlcGVuZGVudCBvZg0KPiA+IGVhY2ggb3Ro ZXIgaS5lLiBFYWNoIHBhY2tldCBoYXMNCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBUaGVpciBmbHVzaCB2YWx1ZSBpcyBzZXQgdG8gUlRFX0ZMVVNIX0ZVTEwgb3IgUlRFX0ZMVVNI X0ZJTkFMDQo+ID4gKHJlcXVpcmVkIG9ubHkgb24gY29tcHJlc3Npb24NCj4gPiA+IHNpZGUpLA0K PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFsbC1vZiB0aGUgcmVxdWlyZWQgaW5w dXQgYW5kIHN1ZmZpY2llbnQgbGFyZ2UgYnVmZmVyIHNpemUgdG8gc3RvcmUNCj4gPiBvdXRwdXQg aS5lLiBPVVRfT0ZfU1BBQ0UgY2FuDQo+ID4gPiBuZXZlciBvY2N1ciAocmVxdWlyZWQgZHVyaW5n IGJvdGggY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24pDQo+ID4gPg0KPiA+ID4gSW4gc3Vj aCBjYXNlLCBQTUQgaW5pdGlhdGVzIHN0YXRlbGVzcyBwcm9jZXNzaW5nIGFuZCByZWxlYXNlcyBh Y3F1aXJlZA0KPiA+IHJlc291cmNlcyBhZnRlciBwcm9jZXNzaW5nIG9mIGN1cnJlbnQNCj4gPiA+ IG9wZXJhdGlvbiBpcyBjb21wbGV0ZSBpLmUuIGZ1bGwgaW5wdXQgY29uc3VtZWQgYW5kIGZ1bGwg b3V0cHV0IHdyaXR0ZW4uDQo+ID4gPiBBcHBsaWNhdGlvbiBjYW4gYXR0YWNoIHNhbWUgb3IgZGlm ZmVyZW50IHNlc3Npb24gdG8gZWFjaCBwYWNrZXQgYW5kIGNhbg0KPiA+IG1ha2UgY29uc2VjdXRp dmUgZW5xdWVfYnVyc3QoKQ0KPiA+ID4gY2FsbHMgaS5lLiBGb2xsb3dpbmcgaXMgcmVsZXZhbnQg dXNhZ2U6DQo+ID4gPg0KPiA+ID4gZW5xdWV1ZWQgPSBydGVfY29tcF9lbnF1ZV9idXJzdCAoZGV2 X2lkLCBxcF9pZCwgb3BzMSwgbmJfb3BzKTsNCj4gPiA+IGVucXVldWVkID0gcnRlX2NvbXBfZW5x dWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzMiwgbmJfb3BzKTsNCj4gPiA+IGVucXVldWVkID0g cnRlX2NvbXBfZW5xdWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzMywgbmJfb3BzKTsNCj4gPiA+ DQo+ID4gPiAqTm90ZSDigJMgRXZlcnkgY2FsbCBoYXMgZGlmZmVyZW50IG9wcyBhcnJheSBpLmUu wqAgc2FtZSBydGVfY29tcF9vcCBhcnJheQ0KPiA+ICpjYW5ub3QgYmUgcmV1c2VkKiB0byBxdWV1 ZSBuZXh0DQo+ID4gPiBiYXRjaCBvZiBkYXRhIHVudGlsIHByZXZpb3VzIG9uZXMgYXJlIGNvbXBs ZXRlbHkgcHJvY2Vzc2VkLg0KPiA+ID4NCj4gPiA+IEFsc28gaWYgbXVsdGlwbGUgdGhyZWFkcyBj YWxscyBlbnF1ZXVlX2J1cnN0KCkgb24gc2FtZSBxdWV1ZSBwYWlyIHRoZW4gaXTigJlzDQo+ID4g YXBwbGljYXRpb24gb251cyB0byB1c2UgcHJvcGVyDQo+ID4gPiBsb2NraW5nIG1lY2hhbmlzbSB0 byBlbnN1cmUgc2VyaWFsaXplZCBlbnF1ZXVpbmcgb2Ygb3BlcmF0aW9ucy4NCj4gPiBbRmlvbmFd IEFncmVlZCB0byBhYm92ZSBzdGF0ZWxlc3MgZGVzY3JpcHRpb24uDQo+ID4NCj4gPg0KPiA+ID4g UGxlYXNlIG5vdGUgYW55IHRpbWUgb3V0cHV0IGJ1ZmZlciByYW4gb3V0IG9mIHNwYWNlIGR1cmlu ZyB3cml0ZSB0aGVuDQo+ID4gb3BlcmF0aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS7CoCBT ZWUNCj4gPiA+IG1vcmUgb24gU3RhdGVmdWwgdW5kZXIgcmVzcGVjdGl2ZSBzZWN0aW9uLg0KPiA+ IFtGaW9uYV0gTGV0J3MgY29tZSBiYWNrIHRvIHRoaXMgbGF0ZXIuIEFuIGFsdGVybmF0aXZlIGlz IHRoYXQgT1VUX09GX1NQQUNFIGlzDQo+ID4gcmV0dXJuZWQgYW5kIHRoZSAgYXBwbGljYXRpb24N Cj4gPiBtdXN0IHRyZWF0IGFzIGEgZmFpbCBhbmQgcmVzdWJtaXQgdGhlIG9wZXJhdGlvbiB3aXRo IGEgbGFyZ2VyIGRlc3RpbmF0aW9uDQo+ID4gYnVmZmVyLg0KPiANCj4gW1NoYWxseV0gVGhlbiBJ IHByb3Bvc2UgdG8gYWRkIGEgZmVhdHVyZSBmbGFnICJGRl9TVVBQT1JUX09VVF9PRl9TUEFDRSIg cGVyIHhmb3JtIHR5cGUgZm9yIGZsZXhpYmxlDQo+IFBNRCBkZXNpZ24uDQo+IEFzIHRoZXJlJ3Jl IGRldmljZXMgd2hpY2ggdHJlYXQgaXQgYXMgZXJyb3Igb24gY29tcHJlc3Npb24gYnV0IG5vdCBv biBkZWNvbXByZXNzaW9uLg0KPiBJZiBpdCBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIGl0IHNob3Vs ZCBiZSB0cmVhdGVkIGFzIGZhaWx1cmUgY29uZGl0aW9uIGFuZCBhcHAgY2FuIHJlc3VibWl0IG9w ZXJhdGlvbi4NCj4gaWYgc3VwcG9ydGVkLCBiZWhhdmlvdXIgKlRvLWJlLURlZmluZWQqIHVuZGVy IHN0YXRlZnVsLg0KW0Zpb25hXSBDYW4geW91IGV4cGxhaW4gJ3R1cm4gc3RhdGVmdWwnIHNvbWUg bW9yZT8NCklmIGNvbXByZXNzb3IgcnVucyBvdXQgb2Ygc3BhY2UgZHVyaW5nIHN0YXRlbGVzcyBv cGVyYXRpb24sIGVpdGhlciBjb21wIG9yIGRlY29tcCwgYW5kIHR1cm5zIHN0YXRlZnVsLCBob3cg d291bGQgdGhlIGFwcCBrbm93PyBBbmQgd2hhdCB3b3VsZCBiZSBpbiBzdGF0dXMsIGNvbnN1bWVk IGFuZCBwcm9kdWNlZD8NCkNvdWxkIGl0IHJldHVybiBPVVRfT0ZfU1BBQ0UsIGFuZCBpZiBib3Ro IGNvbnN1bWVkIGFuZCBwcm9kdWNlZCA9PSAwIHRoZW4gdGhlIHdob2xlIG9wIG11c3QgYmUgcmVz dWJtaXR0ZWQgd2l0aCBhIGJpZ2dlciBvdXRwdXQgYnVmZmVyLiBCdXQgaWYgY29uc3VtZWQgYW5k IHByb2R1Y2VkID4gMCB0aGVuIGFwcCBjb3VsZCB0YWtlIHRoZSBvdXRwdXQgYW5kIHN1Ym1pdCBu ZXh0IG9wIA0KY29udGludWluZyBmcm9tIGNvbnN1bWVkKzEuIA0KIA0KDQo+ID4NCj4gPiA+ICBU eXBpY2FsIEFQSShmbG93LXdpc2UpIHRvIHNldHVwIGZvciBzdGF0ZWxlc3Mgb3BlcmF0aW9uOg0K PiA+ID4gMS4gcnRlX2NvbXBfc2Vzc2lvbiAqc2VzcyA9IHJ0ZV9jb21wX3Nlc3Npb25fY3JlYXRl KHJ0ZV9tZW1wb29sDQo+ID4gKnBvb2wpOw0KPiA+ID4gMi4gcnRlX2NvbXBfc2Vzc2lvbl9pbml0 IChpbnQgZGV2X2lkLCBydGVfY29tcF9zZXNzaW9uICpzZXNzLA0KPiA+IHJ0ZV9jb21wX3hmb3Jt ICp4Zm9ybSwgcnRlX21lbXBvb2wNCj4gPiA+ICpzZXNzX3Bvb2wpOw0KPiA+ID4gMy4gcnRlX2Nv bXBfb3BfcG9vbF9jcmVhdGUocnRlX21lbXBvb2wgLi4pDQo+ID4gPiA0LiBydGVfY29tcF9vcF9i dWxrX2FsbG9jIChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1lbXBvb2wsIHN0cnVjdA0KPiA+IHJ0ZV9j b21wX29wICoqb3BzLCB1aW50MTZfdA0KPiA+ID4gbmJfb3BzKTsNCj4gPiA+IDUuIGZvciBldmVy eSBydGVfY29tcF9vcCBpbiBvcHNbXSwNCj4gPiA+IMKgwqDCoCA1LjEgcnRlX2NvbXBfb3BfYXR0 YWNoX3Nlc3Npb24ocnRlX2NvbXBfb3AgKm9wLCBydGVfY29tcF9zZXNzaW9uDQo+ID4gKnNlc3Mp Ow0KPiA+ID4gwqDCoMKgIDUuMiBzZXQgdXAgd2l0aCBzcmMvZHN0IGJ1ZmZlcg0KPiA+ID4gNi4g ZW5xID0gcnRlX2NvbXBkZXZfZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3Qg cXBfaWQsDQo+ID4gc3RydWN0IHJ0ZV9jb21wX29wICoqb3BzLCB1aW50MTZfdA0KPiA+ID4gbmJf b3BzKTsNCj4gPiA+IDcuIGRxdSA9IHJ0ZV9jb21wZGV2X2RlcXVldWVfYnVyc3QoZGV2X2lkLCBx cF9pZCwgb3BzLCBlbnEpOw0KPiA+ID4gOC4gcmVwZWF0IDcgd2hpbGUgKGRxdSA8IGVucSkgLy8g V2FpdCB0aWxsIGFsbCBvZiBlbnF1ZXVlZCBhcmUgZGVxdWV1ZWQNCj4gPiA+IDkuIFJlcGVhdCA1 LjIgZm9yIG5leHQgYmF0Y2ggb2YgZGF0YQ0KPiA+ID4gMTAuIHJ0ZV9jb21wX3Nlc3Npb25fY2xl YXIgKCkgLy8gb25seSByZXNldCBwcml2YXRlIGRhdGEgbWVtb3J5IGFyZWEgYW5kDQo+ID4gKm5v dCogdGhlIHhmb3JtIGFuZCBkZXZpZA0KPiA+ID4gaW5mb3JtYXRpb24uIEluIGNhc2UsIHlvdSB3 YW50IHRvIHJlLXVzZSBzZXNzaW9uLg0KPiA+ID4gMTEuIHJ0ZV9jb21wX3Nlc3Npb25fZnJlZShy ZXRfY29tcF9zZXNzICpzZXNzaW9uKQ0KPiA+IFtGaW9uYV0gb2suIFRoaXMgaXMgb25lIHBvc3Np YmxlIGZsb3cuIFRoZXJlIGFyZSB2YXJpYXRpb25zIHBvc3NpYmxlDQo+ID4gIC0gQWJvdmUgYXNz dW1lcyBhbGwgb3BzIGFyZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB0aGlzIGlzIG5vdCBuZWNl c3NhcmlseQ0KPiA+IHRoZSBjYXNlLiBFLmcuIHRoZXJlDQo+ID4gICAgY291bGQgYmUgYSBjb21w cmVzc2lvbiBzZXNzaW9uIGFuZCBhIGRlY29tcHJlc3Npb24gc2Vzc2lvbiBhbmQgYSBidXJzdCBv Zg0KPiA+IG9wcyBtYXkgY29udGFpbiBib3RoLg0KPiANCj4gW1NoYWxseV0gQWdyZWUgYnV0IGFz c3VtZSBhcHBsaWNhYmxlIG9ubHkgZm9yIHN0YXRlbGVzcyB1bnRpbCB3ZSBjb3ZlciBzdGF0ZWZ1 bA0KPiANCj4gPiAgICBJbiB0aGlzIGNhc2UgU3RlcCA5IHdvdWxkIGJlIFJlcGVhdCA1LjEgYXMg d2VsbCBhcyA1LjINCj4gPiAgLSBBbHNvIGl0IHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gd2Fp dCB1bnRpbCB0aGUgZnVsbCBidXJzdCBpcyBkZXF1ZXVlZA0KPiA+IGJlZm9yZSBkb2luZw0KPiA+ ICAgIGFub3RoZXIgZW5xdWV1ZSAtIHRob3VnaCBvZiBjb3Vyc2UgdGhlIG9wcyB3b3VsZCBuZWVk IHRvIGJlIG1hbmFnZWQgc28NCj4gPiBvbmx5DQo+ID4gICAgdGhvc2UgZmluaXNoZWQgd2l0aCBh cmUgcmV1c2VkLCBvciBtdWx0aXBsZSBzZXRzIG9mIG9wcyBjb3VsZCBiZSBhbGxvY2F0ZWQuDQo+ IA0KPiBbU2hhbGx5XSBBZ3JlZQ0KPiANCj4gPiAgLSBXaGF0IGRvIHlvdSBtZWFuIGJ5IFN0ZXAg MTAgY29tbWVudD8gVGhlIHNlc3Npb24gb25seSBoYXMgcHJpdmF0ZSBkYXRhLg0KPiA+IEl0J3Mg dXAgdG8gdGhlIFBNRCB0bw0KPiA+ICAgIHN0b3JlIHdoYXRldmVyIGl0IG5lZWRzIGZyb20gdGhl IHhmb3JtLiBJIHRoaW5rIHNlc3Npb25fY2xlYXIgc2hvdWxkIG1lYW4NCj4gPiBhbGwgdGhlIGRh dGEgaXMgemVyb2VkIGluIHRoZSBzZXNzaW9uLg0KPiA+ICAgIElmIHRoZSBzZXNzaW9uIGlzIHRv IGJlIHJlLXVzZWQgdGhlbiBub3RoaW5nIG5lZWRzIHRvIGJlIGNsZWFyZWQuIEVhY2ggb3AgaXMN Cj4gPiBhbHJlYWR5IHJlLXVzaW5nIHRoZSBzZXNzaW9uIGluIHlvdXINCj4gPiAgICBmbG93IGFi b3ZlIHdpdGhvdXQgY2xlYXJpbmcgYmV0d2VlbiBvcHMuDQo+ID4gICAgQlVUIHRoaXMgb25seSBh cHBsaWVzIHRvIHN0YXRlbGVzcw0KPiANCj4gW1NoYWxseV0gVGhpcyBjYW1lIGZyb20gbXkgcHJl dmlvdXMgbm90aW9uIG9mIHNlc3Npb24uIE5vdyB3aGVuIEkgc2VlIGl0IGFuYWxvZ3kgdG8gY3J5 cHRvZGV2LCBpdHMgcHVycG9zZQ0KPiBpcyBjbGVhciB0byBtZS4NCj4gQnV0IHRoZW4gSSBwcm9w b3NlIHRvIHJlbmFtZSBBUEkgdG8gcnRlX2NvbXBkZXZfc2Vzc190ZXJtKCkgdG8gbWFrZSBpdCBz ZWxmLWV4cGxhbmF0b3J5Lg0KW0Zpb25hXSBTbyBJIHRoaW5rIHRlcm0gaXNuJ3QgdmVyeSBjbGVh ciwgSSBndWVzcyBpdCdzIHNob3J0IGZvciB0ZXJtaW5hdGU/DQpJZiBzbyBJIGNhbiBjaGFuZ2Ug dG8gcnRlX2NvbXBkZXZfc2Vzc190ZXJtaW5hdGUoKQ0KSG93ZXZlciBJIHRoaW5rIHdlIG1heSBu b3QgbmVlZCB0aGlzIGF0IGFsbCBpZiB3ZSBnbyB3aXRoIHlvdXIgc3RyZWFtIHN1Z2dlc3Rpb24g YmVsb3cuDQpBcyB0aGVyZSBtYXkgYmUgb25seSBpbW11dGFibGUgZGF0YSBpbiB0aGUgc2Vzc2lv biAtIGxpa2UgYWxnbywgbGV2ZWwsIGNoZWNrc3VtIHR5cGUsIGV0Yy4NCkluIGNyeXB0b2RldiB0 aGUgc2Vzc2lvbiBkYXRhIGlzIGFsc28gaW1tdXRhYmxlLCBidXQgYXMgaXQgaG9sZHMgYSBrZXkg aXQncyBpbXBvcnRhbnQgdG8gY2xlYXINCml0IGJlZm9yZSBhbGxvd2luZyB0aGUgc2Vzc2lvbiB0 byBiZSByZS11c2VkLiBJJ20gbm90IHN1cmUgd2UnbGwgaGF2ZSBhbnkgZGF0YSBsZWZ0IGluIA0K c2Vzc2lvbiB3aGljaCBuZWVkcyB0byBiZSBjbGVhcmVkLCBhbGwgdGhlIHN0YXRlIGRhdGEgbWF5 IGJlIGluIHRoZSBzdHJlYW0uDQogDQo+IA0KPiAtIGZvciBzdGF0ZWZ1bCB3ZSBtYXkgbmVlZCBh IGRpZmZlcmVudA0KPiA+IGJlaGF2aW91ciAtIHRvIGNsZWFyIHN0YXRlIGRhdGEgYnV0DQo+ID4g ICAga2VlcCBhbGdvLCBsZXZlbCwgSHVmZm1hbi10eXBlLCBjaGVja3N1bS10eXBlLiBMZXQncyBk aXNjdXNzIHVuZGVyIHN0YXRlZnVsDQo+ID4gLSB0aGlzIG1heSBuZWVkIGEgbmV3IEFQSS4NCj4g Pg0KPiANCj4gW1NoYWxseV0gT3IgUE1EIGNhbiBpbnRlcm5hbGx5IHJlc2V0IGl0cyBzdGF0ZSBv bmNlIGl0IHByb2Nlc3MgYW4gb3Agd2l0aCBGVUxMX0ZMVVNIL0ZJTklTSC4gV2lsbCByZXZpc2l0 IGl0DQo+IHVuZGVyIHN0YXRlZnVsLg0KW0Zpb25hXSBZZXMsIHRoYXQgY291bGQgYWxzbyBiZSBh biBvcHRpb24gZm9yIHN0cmVhbS4NCg0KDQo+ID4gPiBELjEuMiBSZXF1aXJlbWVudCBmb3IgU3Rh dGVsZXNzDQo+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gPiBTaW5jZSBvcGVyYXRpb24gY2FuIGNvbXBsZXRlIG91dC1vZi1vcmRlci4gVGhlcmUg c2hvdWxkIGJlIG9uZSAodm9pZA0KPiA+ICp1c2VyKSBwZXIgcnRlX2NvbXBfb3AgdG8gZW5hYmxl DQo+ID4gPiBhcHBsaWNhdGlvbiB0byBtYXAgZGVxdWV1ZWQgb3AgdG8gZW5xdWV1ZWQgb3AuDQo+ ID4gW0Zpb25hXSBJbiBjcnlwdG9kZXYgdGhlcmUgd2FzIGFuIG9wYXF1ZV9kYXRhIGZpZWxkIGlu IHRoZSBvcCAtIGl0IHdhcw0KPiA+IHJlbW92ZWQgYXMgdGhlIGFwcGxpY2F0aW9uIGNhbiBzdG9y ZSBhbnkNCj4gPiBwcml2YXRlIGRhdGEgaXQgbmVlZHMgZm9sbG93aW5nIHRoZSBvcCwgYXMgaXQg Y3JlYXRlcyB0aGUgb3AgcG9vbCBhbmQgZGljdGF0ZXMNCj4gPiB0aGUgc2l6ZS4gRG8geW91IHRo aW5rIHdlIG5lZWQgYW4NCj4gPiBleHBsaWNpdCAodm9pZCAqdXNlcikgb3IgY2FuIHdlIGZvbGxv dyB0aGUgc2FtZSBhcHByb2FjaD8NCj4gPg0KPiANCj4gW1NoYWxseV0gaWYgcHJpdl9kYXRhIGlu IGNyeXB0b19vcF9wb29sX2NyZWF0ZSgpIGlzIHVzZXIgZGF0YSwgIHRoZW4gd2UgZG9uJ3QgbmVl ZCBleHBsaWNpdCB1c2VyICouDQo+IEJ1dCB0aGVuIEkgcHJvcG9zZSB2YXJpYWJsZSBuYW1lIHNo b3VsZCBiZSByZW5hbWVkIHRvIHVzZXJfZGF0YSBpbmRpY2F0aW5nIGl0IGlzIGFuIGFwcCBkYXRh IG9wYXF1ZSB0bw0KPiBQTUQuDQo+IEFuZCwgX19ydGVfY29tcF9vcF9nZXRfcHJpdl9kYXRhX3Np emUgKCkgc2hvdWxkIGJlIGNoYW5nZWQgdG8gX19ydGVfY29tcF9vcF9nZXRfdXNlcl9kYXRhX3Np emUoKS4NCltGaW9uYV0gQWdyZWVkLiANCg0KDQo+ID4gW0Zpb25hXSBPdXQgb2YgdGltZSAtIEkn bGwgY29udGludWUgZnJvbSBoZXJlIGxhdGVyIGluIHRoZSB3ZWVrLg0KPiBbU2hhbGx5XSBTdXJl LiBMb29rIGZvcndhcmQgdG8gdGhhdC4NCj4gDQo+IFRoYW5rcw0KPiBTaGFsbHkNCj4gDQo+ID4N Cj4gPg0KPiA+ID4gRC4yIENvbXByZXNzaW9uIEFQSSBTdGF0ZWZ1bCBvcGVyYXRpb24NCj4gPiA+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPiA+IMKgQSBTdGF0ZWZ1bCBvcGVyYXRpb24gbWVhbnMgZm9sbG93aW5nIGNvbmRpdGlv bnM6DQo+ID4gPiAtIEFQSSByYW4gaW50byBvdXRfb2Zfc3BhY2Ugc2l0dWF0aW9uIGR1cmluZyBw cm9jZXNzaW5nIG9mIGlucHV0LiBFeGFtcGxlLA0KPiA+IHN0YXRlbGVzcyBjb21wcmVzc2VkIHN0 cmVhbQ0KPiA+ID4gZmVkIGZ1bGx5IHRvIGRlY29tcHJlc3NvciBidXQgb3V0cHV0IGJ1ZmZlciBp cyBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQNCj4gPiBvdXRwdXQuDQo+ID4gPiAtIEFQSSB3YWl0 aW5nIGZvciBtb3JlIGlucHV0IHRvIHByb2R1Y2Ugb3V0cHV0LiBFeGFtcGxlLCBzdGF0ZWxlc3MN Cj4gPiBjb21wcmVzc2VkIHN0cmVhbSBmZWQgcGFydGlhbGx5IHRvDQo+ID4gPiBkZWNvbXByZXNz b3IuDQpbRmlvbmFdIEkgYWdyZWUgdGhpcyBpcyBzdGF0ZWZ1bCBpZiBtb3JlIGlucHV0IGlzIHRv IGZvbGxvdy4gQnV0IGRvbuKAmXQgdW5kZXJzdGFuZCB0aGUgDQpzdGF0ZWxlc3MgcmVmLiBoZXJl LiBJdCdzIG5vdCByZWxldmFudCB3aGV0aGVyIGNvbXByZXNzaW9uIHdhcyBkb25lIHN0YXRlZnVs bHkNCm9yIHN0YXRlbGVzc2x5LCBpZiBvbmx5IHBhcnQgb2YgdGhlIGRhdGEgaXMgZmVkIHRvIHRo ZSBkZWNvbXByZXNzb3IgdGhlbiBpdCBzaG91bGQNCmJlIGZlZCB0byBhIHN0YXRlZnVsIHNlc3Np b24uIA0KDQoNCj4gPiA+IC0gQVBJIGlzIGRlcGVuZGVudCBvbiBwcmV2aW91cyBvcGVyYXRpb24g Zm9yIGZ1cnRoZXINCj4gPiBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uDQo+ID4gPg0KPiA+ID4g SW4gY2FzZSBvZiBlaXRoZXIgb25lIG9yIGFsbCBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBQTUQg aXMgcmVxdWlyZWQgdG8NCj4gPiBtYWludGFpbiBjb250ZXh0IG9mIG9wZXJhdGlvbnMNCj4gPiA+ IGFjcm9zcyBlbnF1ZV9idXJzdCgpIGNhbGxzLCB1bnRpbCBhIHBhY2tldCB3aXRowqAgUlRFX0ZM VVNIX0ZVTEwvRklOQUwgYW5kDQo+ID4gc3VmZmljaWVudCBpbnB1dC9vdXRwdXQgYnVmZmVycw0K PiA+ID4gaXMgcmVjZWl2ZWQgYW5kIHByb2Nlc3NlZC4NCj4gPiA+DQo+ID4gPiBELjIuMSBDb21w cmVzc2lvbiBBUEkgcmVxdWlyZW1lbnQgZm9yIFN0YXRlZnVsDQo+ID4gPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ DQo+ID4gPiBELjIuMS4xIFNsaWRpbmcgV2luZG93IFNpemUNCj4gPiA+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gTWF4aW11bSBsZW5ndGggb2YgU2xpZGluZyBX aW5kb3cgaW4gYnl0ZXMuIFByZXZpb3VzIGRhdGEgbG9va3VwIHdpbGwgYmUNCj4gPiBwZXJmb3Jt ZWQgdXAgdG8gdGhpcyBsZW5ndGguIFRvDQo+ID4gPiBiZSBhZGRlZCBhcyBhbGdvcml0aG0gY2Fw YWJpbGl0eSBwYXJhbWV0ZXIgYW5kIHNldCBieSBQTUQuDQpbRmlvbmFdIEFncmVlZC4gMzJrIGRl ZmF1bHQuIA0KVG8gYmUgc2V0IG9uIHNlc3Npb24geGZvcm0gZm9yIGJvdGggY29tcHJlc3Npb24g YW5kIGRlY29tcHJlc3Npb24/DQpJcyB0aGVyZSBhIHN1YnNldCBvZiBzcGVjaWZpYyB2YWx1ZXMg eW91J2QgbGlrZSBzdXBwb3J0ZWQgb24gdGhlIEFQST8NCiAocmF0aGVyIHRoYW4gYWxsIHRvIG1p bmltaXNlIHRlc3QgY2FzZXMpDQoNCg0KPiA+ID4NCj4gPiA+IEQuMi4xLjIgU3RhdGVmdWwgb3Bl cmF0aW9uIHN0YXRlIG1haW50ZW5hbmNlDQo+ID4gPiDCoC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+IFRoaXMgc2VjdGlv biBzdGFydHMgd2l0aCBkZXNjcmlwdGlvbiBvZiBvdXIgdW5kZXJzdGFuZGluZyBhYm91dA0KPiA+ IGNvbXByZXNzaW9uIEFQSSBzdXBwb3J0IGZvciBzdGF0ZWZ1bC4NCj4gPiA+IERlcGVuZGluZyB1 cG9uIHVuZGVyc3RhbmRpbmcgYnVpbGQgdXBvbiB0aGVzZSBjb25jZXB0cywgd2Ugd2lsbCBpZGVu dGlmeQ0KPiA+IHJlcXVpcmVkIGRhdGEgc3RydWN0dXJlL3BhcmFtDQo+ID4gPiB0byBtYWludGFp biBpbi1wcm9ncmVzcyBvcGVyYXRpb24gY29udGV4dCBieSBQTUQuDQo+ID4gPg0KPiA+ID4gRm9y IHN0YXRlZnVsIGNvbXByZXNzaW9uLCBiYXRjaCBvZiBkZXBlbmRlbnQgcGFja2V0cyBzdGFydHMg YXQgYSBwYWNrZXQNCj4gPiBoYXZpbmcNCj4gPiA+IFJURV9OT19GTFVTSC9SVEVfU1lOQ19GTFVT SCBmbHVzaCB2YWx1ZSBhbmQgZW5kIGF0IHBhY2tldCBoYXZpbmcNCj4gPiBSVEVfRlVMTF9GTFVT SC9GSU5BTF9GTFVTSC4NCj4gPiA+IGkuZS4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB3aWxsIGNhcnJ5 IHN0cnVjdHVyZSBsaWtlIHRoaXM6DQo+ID4gPg0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4gPiB8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLm5vX2ZsdXNo IHwgb3A0LmZ1bGxfZmx1c2h8DQo+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiA+DQpbRmlvbmFdIEkgdGhpbmsgaXQgbmVlZHMgdG8gYmUgbW9yZSBjb25zdHJhaW5lZCB0aGFu IHlvdXIgZXhhbXBsZXMgYmVsb3cuDQpPbmx5IDEgb3BlcmF0aW9uIGZyb20gYSBzdHJlYW0gY2Fu IGJlIGluIGEgYnVyc3QuIEFzIGVhY2ggb3BlcmF0aW9uDQppbiBhIHN0YXRlZnVsIHN0cmVhbSBt dXN0IGNvbXBsZXRlLCBhcyBuZXh0IG9wZXJhdGlvbiBuZWVkcyBzdGF0ZSBhbmQgaGlzdG9yeQ0K b2YgcHJldmlvdXMgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlIGJlZm9yZSBpdCBjYW4gYmUgcHJv Y2Vzc2VkLiAgDQpBbmQgaWYgb25lIGZhaWxlZCwgZS5nLiBkdWUgdG8gT1VUX09GX1NQQUNFLCB0 aGlzIHNob3VsZCBhZmZlY3QNCnRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uIGluIHRoZSBzYW1lIHN0 cmVhbS4NCldvcnN0IGNhc2UgdGhpcyBtZWFucyBidXJzdHMgb2YgMS4gQnVyc3QgY2FuIGJlID4x IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSANCmluZGVwZW5kZW50IHN0cmVhbXMgd2l0aCBhdmFpbGFi bGUgZGF0YSBmb3IgcHJvY2Vzc2luZy4gT3IgaWYgdGhlcmUgaXMgDQpkYXRhIGF2YWlsYWJsZSB3 aGljaCBjYW4gYmUgc3RhdGVsZXNzbHkgcHJvY2Vzc2VkLiANCg0KSWYgdGhlcmUgYXJlIG11bHRp cGxlIGJ1ZmZlcnMgYXZhaWxhYmxlIGZyb20gYSBzdHJlYW0gLCB0aGVuIGluc3RlYWQgdGhleSBj YW4gDQpiZSBsaW5rZWQgdG9nZXRoZXIgaW4gYW4gbWJ1ZiBjaGFpbiBzZW50IGluIGEgc2luZ2xl IG9wZXJhdGlvbi4gDQoNClRvIGhhbmRsZSB0aGUgc2VxdWVuY2VzIGJlbG93IHdvdWxkIG1lYW4g dGhlIFBNRA0Kd291bGQgbmVlZCB0byBzdG9yZSBvcHMgc2VuZGluZyBvbmUgYXQgYSB0aW1lIHRv IGJlIHByb2Nlc3NlZC4NCiANCkFzIHRoaXMgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJv bSB3aGF0IHlvdSBkZXNjcmliZSBiZWxvdywgSSdsbCB3YWl0IGZvciBmdXJ0aGVyIGZlZWRiYWNr DQpiZWZvcmUgY29udGludWluZy4NCg0KQnV0IGluIHByaW5jaXBhbCBJIGFncmVlIHdpdGggdGhl IGlkZWEgb2YgYSBzdHJlYW0gc3RydWN0dXJlIHRvIGhvbGQgdGhlIHN0YXRlIGRhdGENCm5lZWRl ZCBmb3IgYSBzdGF0ZWZ1bCBmbG93LiBPcmlnaW5hbGx5IEknZCBhc3N1bWVkIHRoaXMgZGF0YSB3 b3VsZCBiZSBoZWxkIGluIHRoZSBzZXNzaW9uDQpidXQgSSB0aGluayBpdCdzIGJldHRlciB0byBu b3QgaGF2ZSBhIDE6MSBtYXBwaW5nIGJldHdlZW4gc3RyZWFtIGFuZCBzZXNzaW9uIGFzIHRoaXMN CndvdWxkIGxpbWl0IGEgc2Vzc2lvbiB1bm5lY2Vzc2FyaWx5LiBTbyB0aGVyZSBjYW4gYmUgbWFu eSBzdHJlYW1zIGluIGEgc2luZ2xlIHNlc3Npb24uDQoNCg0KPiA+ID4gRm9yIHNha2Ugb2Ygc2lt cGxpY2l0eSwgd2Ugd2lsbCB1c2UgdGVybSAic3RyZWFtIiB0byBpZGVudGlmeSBzdWNoIHJlbGF0 ZWQgc2V0DQo+ID4gb2Ygb3BlcmF0aW9uIGluIGZvbGxvd2luZw0KPiA+ID4gZGVzY3JpcHRpb24u DQo+ID4gPg0KPiA+ID4gU3RyZWFtIHByb2Nlc3NpbmcgaW1wb3NlIGZvbGxvd2luZyBsaW1pdGF0 aW9ucyBvbiB1c2FnZSBvZiBlbnF1ZV9idXJzdCgpDQo+ID4gQVBJDQo+ID4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQWxsIGRlcGVuZGVudCBwYWNrZXRzIGluIGEgc3RyZWFtIHNob3Vs ZCBjYXJyeSBzYW1lIHNlc3Npb24NCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiBzdHJlYW0gaXMgYnJva2VuIGludG8gbXVsdGlwbGUgZW5xdWV1ZV9idXJzdCgpIGNhbGwsIHRo ZW4gbmV4dA0KPiA+IGVucXVldWVfYnVyc3QoKSBjYW5ub3QgYmUgY2FsbGVkDQo+ID4gPiB1bnRp bCBwcmV2aW91cyBvbmUgaGFzIGZ1bGx5IHByb2Nlc3NlZC4gSS5FLg0KPiA+ID4NCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ29uc2lkZXIgZm9yIGV4YW1wbGUsIGEgc3RyZWFt IHdpdGggb3BzMSAuLm9wczcsICBUaGlzIGlzICpub3QqDQo+ID4gYWxsb3dlZA0KPiA+ID4NCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gLS0tLS0tLS0tLS0tLS0N Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1ZV9idXJzdCh8b3AxLm5v X2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLm5vX2ZsdXNoIHwNCj4gPiBvcDQubm9fZmx1c2h8 KQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0tLS0tLS0tLS0t LS0tDQo+ID4gPg0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1cnN0KHxvcDUubm9fZmx1c2ggfCBvcDYu bm9fZmx1c2ggfCBvcDcuZmx1c2hfZmluYWwgfCkNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ID4gPg0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgVGhpcyAq aXMqIGFsbG93ZWQNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4g LS0tLS0tLS0tLS0tLS0NCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVf YnVyc3QofG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8DQo+ID4g b3A0Lm5vX2ZsdXNofCkNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiAtLS0tLS0tLS0tLS0tLQ0KPiA+ID4NCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkZXF1ZV9idXJzdChvcHMxIC4ub3BzNCkNCj4gPiA+DQo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVf YnVyc3QofG9wNS5ub19mbHVzaCB8IG9wNi5ub19mbHVzaCB8IG9wNy5mbHVzaF9maW5hbCB8KQ0K PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+DQo+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQSBzaW5nbGUgZW5xdWVfYnVyc3QoKSBjYW4gY2Fycnkgb25s eSBvbmUgc3RyZWFtLiBJLkUuIFRoaXMgaXMgKm5vdCoNCj4gPiBhbGxvd2VkDQo+ID4gPg0KPiA+ ID4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1 ZV9idXJzdCAofG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5mbHVzaF9maW5hbCB8 DQo+ID4gb3A0Lm5vX2ZsdXNoIHwgb3A1Lm5vX2ZsdXNoIHwpDQo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiA+ID4NCj4gPiA+IElmIGEgc3RyZWFtIGlzIGJyb2tlbiBpbiB0byBzZXZlcmFsIGVu cXVldWVfYnVyc3QoKSBjYWxscywgdGhlbiBjb21wcmVzcw0KPiA+IEFQSSBuZWVkIHRvIG1haW50 YWluIG9wZXJhdGlvbmFsDQo+ID4gPiBzdGF0ZSBiZXR3ZWVuIGNhbGxzLiBGb3IgdGhpcywgY29u Y2VwdCBvZiBydGVfY29tcF9zdHJlYW0gaXMgZW5hYmxlZCBpbiB0bw0KPiA+IGNvbXByZXNzaW9u IEFQSS4NCj4gPiA+IEhlcmXigJlyZSB0aGUgcHJvcG9zZWQgY2hhbmdlcyB0byBleGlzdGluZyBk ZXNpZ246DQo+ID4gPg0KPiA+ID4gMS4gQWRkIHJ0ZV9jb21wX29wX3R5cGUNCj4gPiA+IC4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCj4gPiA+IGVudW0gcnRlX2NvbXBf b3BfdHlwZSB7DQo+ID4gPiBSVEVfQ09NUF9PUF9TVEFURUxFU1MsDQo+ID4gPiBSVEVfQ09NUF9P UF9TVEFURUZVTA0KPiA+ID4gfQ0KPiA+ID4NCj4gPiA+IDIuIEFkZCBuZXcgZGF0YSB0eXBlIHJ0 ZV9jb21wX3N0cmVhbSB0byBtYWludGFpbiBzdHJlYW0gc3RhdGUNCj4gPiA+IC4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ID4gPiBydGVfY29tcF9zdHJl YW0gaXMgYW4gb3BhcXVlIGRhdGEgc3RydWN0dXJlIHRvIGFwcGxpY2F0aW9uIHdoaWNoIGlzDQo+ ID4gZXhjaGFuZ2VkIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4NCj4gPiA+IGFwcGxpY2F0aW9uIGFu ZCBQTUQgZHVyaW5nIHN0YXRlZnVsIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24uDQo+ID4gPiBJ dCBzaG91bGQgYmUgYWxsb2NhdGVkIHBlciBzdHJlYW0gQU5EIGJlZm9yZSBiZWdpbm5pbmcgb2Yg c3RhdGVmdWwNCj4gPiBvcGVyYXRpb24uIElmIHN0cmVhbSBpcyBicm9rZW4gaW50bw0KPiA+ID4g bXVsdGlwbGUgZW5xdWV1ZV9idXJzdCgpIHRoZW4gZWFjaA0KPiA+ID4gcmVzcGVjdGl2ZSBlbnF1 ZXVlX2J1cnN0KCkgbXVzdCBjYXJyeSBzYW1lIHJ0ZV9jb21wX3N0cmVhbSBwb2ludGVyLiBJdA0K PiA+IGlzIG1hbmRhdG9yeSBpbnB1dCBmb3Igc3RhdGVmdWwNCj4gPiA+IG9wZXJhdGlvbnMuDQo+ ID4gPiBydGVfY29tcF9zdHJlYW0gY2FuIGJlIGNsZWFyZWQgYW5kIHJldXNlZCB2aWEgY29tcHJl c3Npb24gQVBJDQo+ID4gcnRlX2NvbXBfc3RyZWFtX2NsZWFyKCkgYW5kIGZyZWUgdmlhDQo+ID4g PiBydGVfY29tcF9zdHJlYW1fZnJlZSgpLiBDbGVhci9mcmVlIHNob3VsZCBub3QgYmUgY2FsbGVk IHdoZW4gaXQgaXMgaW4gdXNlLg0KPiA+ID4NCj4gPiA+IFRoaXMgZW5hYmxlcyBzaGFyaW5nIG9m IGEgc2Vzc2lvbiBieSBtdWx0aXBsZSB0aHJlYWRzIGhhbmRsaW5nIGRpZmZlcmVudA0KPiA+IHN0 cmVhbXMgYXMgZWFjaCBidWxrIG9wcyBjYXJyeSBpdHMNCj4gPiA+IG93biBjb250ZXh0LiBUaGlz IGNhbiBhbHNvIGJlIHVzZWQgYnkgUE1EIHRvIGhhbmRsZSBPVVRfT0ZfU1BBQ0UNCj4gPiBzaXR1 YXRpb24uDQo+ID4gPg0KPiA+ID4gMy4gQWRkIHN0cmVhbSBhbGxvY2F0ZSwgY2xlYXIgYW5kIGZy ZWUgQVBJDQo+ID4gPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ID4gPiAzLjEuIHJ0ZV9jb21wX29wX3N0cmVhbV9h bGxvYyhydGVfbWVtcG9vbCAqcG9vbCwgcnRlX2NvbXBfb3BfdHlwZQ0KPiA+IHR5cGUsIHJ0ZV9j b21wX3N0cmVhbQ0KPiA+ID4gKipzdHJlYW0pOw0KPiA+ID4gMy4yLiBydGVfY29tcF9vcF9zdHJl YW1fY2xlYXIocnRlX2NvbXBfc3RyZWFtICpzdHJlYW0pOyAvLyBpbiB0aGlzDQo+ID4gY2FzZSBz dHJlYW0gd2lsbCBiZSB1c2VhYmxlIGZvciBuZXcNCj4gPiA+IHN0YXRlZnVsIGJhdGNoDQo+ID4g PiAzLjMuIHJ0ZV9jb21wX29wX3N0cmVhbV9mcmVlKHJ0ZV9jb21wX3N0cmVhbSAqc3RyZWFtKTsg Ly8gdG8gZnJlZQ0KPiA+IGNvbnRleHQNCj4gPiA+DQo+ID4gPiA0LiBBZGQgbmV3IEFQSSBydGVf Y29tcGRldl9lbnF1ZXVlX3N0cmVhbSgpDQo+ID4gPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ ID4gPiAgc3RhdGljIGlubGluZSB1aW50MTZfdCBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSh1 aW50OF90IGRldl9pZCwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MTZfdCBxcF9pZCwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsDQo+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDE2X3QgbmJfb3BzLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRlX2NvbXBfc3RyZWFtICpzdHJlYW0pOyAvL3RvIGJlIHBhc3NlZCB3aXRo DQo+ID4gZWFjaCBjYWxsDQo+ID4gPg0KPiA+ID4gQXBwbGljYXRpb24gc2hvdWxkIGNhbGwgdGhp cyBBUEkgdG8gcHJvY2VzcyBkZXBlbmRlbnQgc2V0IG9mIGRhdGEgT1Igd2hlbg0KPiA+IG91dHB1 dCBidWZmZXIgc2l6ZSBpcyB1bmtub3duLg0KPiA+ID4NCj4gPiA+IHJ0ZV9jb21wX29wX3Bvb2xf Y3JlYXRlKCkgc2hvdWxkIGNyZWF0ZSBtZW1wb29sIGxhcmdlIGVub3VnaCB0bw0KPiA+IGFjY29t bW9kYXRlIG9wZXJhdGlvbmFsIHN0YXRlDQo+ID4gPiAobWFpbnRhaW5lZCBieSBydGVfY29tcF9z dHJlYW0pIGJhc2VkIG9uIHJ0ZV9jb21wX29wX3R5cGUuIFNpbmNlDQo+ID4gcnRlX2NvbXBfc3Ry ZWFtIHdvdWxkIGJlDQo+ID4gPiBtYWludGFpbmVkIGJ5IFBNRCwgdGh1cyBhbGxvY2F0aW5nIGl0 IGZyb20gUE1EIG1hbmFnZWQgcG9vbCBvZmZlcnMNCj4gPiBwZXJmb3JtYW5jZSBnYWlucy4NCj4g PiA+DQo+ID4gPiBBUEkgZmxvdzogcnRlX2NvbXBfb3BfcG9vbF9jcmVhdGUoKSAt4oaSIHJ0ZV9j b21wX29wX2J1bGtfYWxsb2MoKSAtLS0+DQo+ID4gcnRlX2NvbXBfb3Bfc3RyZWFtX2FsbG9jKCkg 4oaSDQo+ID4gPiBlbnF1ZV9zdHJlYW0oLi5vcHMsIC4uLCBzdHJlYW0pDQo+ID4gPg0KPiA+ID4g RC4yLjEuMyBIaXN0b3J5IGJ1ZmZlcg0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPiA+IFdpbGwgYmUgbWFpbnRhaW5lZCBieSBQTUQgd2l0aCBpbiBydGVfY29tcF9zdHJl YW0NCj4gPiA+DQo+ID4gPiBUaGFua3MNCj4gPiA+IFNoYWxseQ0KDQo=