From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5E746E3BB for ; Thu, 1 Aug 2019 07:41:42 +0000 (UTC) From: "Ser, Simon" Date: Thu, 1 Aug 2019 07:41:37 +0000 Message-ID: References: <20190717180257.32314-1-madhumitha.tolakanahalli.pradeep@intel.com> <20190730192141.GA2736@intel.com> <3e664b45c4c6911239d18e6317769f1c6ad46ca5.camel@intel.com> <20190731171323.GA9251@intel.com> In-Reply-To: <20190731171323.GA9251@intel.com> Content-Language: en-US Content-ID: <9E9BE59F0ED88F408416D6E1F9B070F7@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] igt/tests/kms_dp_tiled_display.c : kms test file for display port tiled displays List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Navare, Manasi D" Cc: "igt-dev@lists.freedesktop.org" , "Latvala, Petri" List-ID: T24gV2VkLCAyMDE5LTA3LTMxIGF0IDEwOjEzIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOg0K PiBPbiBXZWQsIEp1bCAzMSwgMjAxOSBhdCAxMjoyNTowOUFNIC0wNzAwLCBTZXIsIFNpbW9uIHdy b3RlOg0KPiA+IE9uIFR1ZSwgMjAxOS0wNy0zMCBhdCAxMjoyMSAtMDcwMCwgTWFuYXNpIE5hdmFy ZSB3cm90ZToNCj4gPiA+IE9uIFdlZCwgSnVsIDE3LCAyMDE5IGF0IDExOjQzOjQ4UE0gLTA3MDAs IFNlciwgU2ltb24gd3JvdGU6DQo+ID4gPiA+IFRoYW5rcyBmb3IgeW91ciBwYXRjaCEgSGVyZSBh cmUgc29tZSBjb21tZW50cy4NCj4gPiA+ID4gDQo+ID4gPiA+IFN0eWxlOiB3ZSB1c2UgdGFicyBm b3IgaW5kZW50YXRpb24sIG5vdCBzcGFjZXMuDQo+ID4gPiA+IA0KPiA+ID4gPiBPbiBXZWQsIDIw MTktMDctMTcgYXQgMTE6MDIgLTA3MDAsIE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQcmFkZWVw IHdyb3RlOg0KPiA+ID4gPiA+IFRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHRpbGVkIERQIGRpc3Bs YXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4gc2VhbWxlc3NseQ0KPiA+ID4gPiA+IGFjcm9z cyB0aGUgdHdvIHRpbGVzLiBJdCB2YWxpZGF0ZXMgdGhlIHRyYW5zY29kZXIgcG9ydCBzeW5jIGZl YXR1cmUgb24gaTkxNSB0bw0KPiA+ID4gPiA+IGdldCBhIHRlYXJmcmVlIHRpbGVkIGRpc3BsYXkg b3V0cHV0Lg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFJlbGF0ZWQga2VybmVsIHdvcmsgcGF0Y2hl cyAtPiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzU5ODM3LyNyZXY0 Lg0KPiA+ID4gPiA+IFRoaXMgdGVzdCBjYW4gZXZlbnR1YWxseSBiZSBleHRlbmRlZCB0byBjb3Zl ciB0aWxlZCBkaXNwbGF5IHN1cHBvcnQgb24gb3RoZXIgY29ubmVjdG9yDQo+ID4gPiA+ID4gdHlw ZXMuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZh bGFAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hZGh1bWl0aGEgVG9sYWth bmFoYWxsaSBQcmFkZWVwIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5j b20+DQo+ID4gPiA+IA0KPiA+ID4gPiBOZXh0IHRpbWUsIGNhbiB5b3Ugc2VuZCBib3RoIHBhdGNo ZXMgaW4gb25lIGdvPyBJdCdzIG5vdCBwb3NzaWJsZSB0bw0KPiA+ID4gPiBjaGVjayB3aGV0aGVy IHRoaXMgdGVzdCBhY3R1YWxseSBwYXNzZXMgQ0ksIHNpbmNlIGJ1aWxkIGZhaWxzIChzZWUgdGhl DQo+ID4gPiA+IHR3byBhdXRvbWF0ZWQgZmFpbHVyZSByZXBsaWVzKS4NCj4gPiA+IA0KPiA+ID4g WWVzIHBsZWFzZSBzZW5kIHRoaXMgYXMgYSBzZXJpZXMgd2l0aCAxc3QgcGF0Y2ggdGhhdCBkZWZp bmVzIHRoZSB0aWxlIHBhcnNlcg0KPiA+ID4gYW5kIHNlY29uZCB3aXRoIHRoZSBhY3R1YWwgdGVz dCB0aGF0IHVzZXMgaXQNCj4gPiA+IA0KPiA+ID4gPiBUbyBsZWFybiBob3cgdG8gdXNlIGdpdC1z ZW5kLWVtYWlsLCB5b3UgY2FuIHJlYWQ6DQo+ID4gPiA+IGh0dHBzOi8vZ2l0LXNlbmQtZW1haWwu aW8vDQo+ID4gPiA+IA0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICB0ZXN0cy9NYWtlZmlsZS5z b3VyY2VzICAgICAgIHwgICAxICsNCj4gPiA+ID4gPiAgdGVzdHMva21zX2RwX3RpbGVkX2Rpc3Bs YXkuYyB8IDIzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ ICB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgICAxICsNCj4gPiA+ID4gPiAgMyBmaWxl cyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYw0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cw0KPiA+ID4gPiA+IGluZGV4IDI1MGRiZDMzLi5lOTM3Mzk0MSAxMDA2NDQNCj4gPiA+ID4gPiAt LS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+ID4gPiA+ID4gKysrIGIvdGVzdHMvTWFrZWZp bGUuc291cmNlcw0KPiA+ID4gPiA+IEBAIC00MCw2ICs0MCw3IEBAIFRFU1RTX3Byb2dzID0gXA0K PiA+ID4gPiA+ICAJa21zX2N1cnNvcl9lZGdlX3dhbGsgXA0KPiA+ID4gPiA+ICAJa21zX2N1cnNv cl9sZWdhY3kgXA0KPiA+ID4gPiA+ICAJa21zX2RwX2RzYyBcDQo+ID4gPiA+ID4gKwlrbXNfZHBf dGlsZWRfZGlzcGxheSBcDQo+ID4gPiA+ID4gIAlrbXNfZHJhd19jcmMgXA0KPiA+ID4gPiA+ICAJ a21zX2ZiY29uX2ZidCBcDQo+ID4gPiA+ID4gIAlrbXNfZmVuY2VfcGluX2xlYWsgXA0KPiA+ID4g PiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIGIvdGVzdHMva21z X2RwX3RpbGVkX2Rpc3BsYXkuYw0KPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+ID4gaW5kZXggMDAwMDAwMDAuLmFmNjQ0NTczDQo+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ID4gPiA+ICsrKyBiL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMNCj4gPiA+ID4gPiBA QCAtMCwwICsxLDIzOSBAQA0KPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ICsgKiBDb3B5cmlnaHQg wqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQ0KPiA+ID4gPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KPiA+ID4gPiA+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+ID4gPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KPiA+ ID4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCj4gPiA+ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gPiA+ ID4gPiArICoNCj4gPiA+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dA0KPiA+ID4gPiA+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlDQo+ID4gPiA+ID4gKyAqIFNvZnR3YXJlLg0KPiA+ID4gPiA+ICsgKg0K PiA+ID4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KPiA+ID4gPiA+ICsgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwNCj4gPiA+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQo+ID4gPiA+ID4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSDQo+ID4gPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HDQo+ID4gPiA+ID4gKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MNCj4gPiA+ID4gPiArICogSU4gVEhFIFNPRlRXQVJFLg0KPiA+ ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsgKiBBdXRob3JzOg0KPiA+ID4gPiA+ICsgKiAgTWFkaHVt aXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXANCj4gPiA+ID4gPiArICogICAgICA8bWFkaHVtaXRo YS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwuY29tPg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4g PiA+ICsgKiBEaXNwbGF5IFBvcnQgVGlsZWQgRGlzcGxheSBUZXN0DQo+ID4gPiA+ID4gKyAqIFRo aXMgdGVzdCBwYXJzZXMgdGhlIHRpbGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbm5lY3RvcnMgdGhh dCBoYXZlIFRJTEUNCj4gPiA+ID4gPiArICogcHJvcGVydHkgc2V0LCBzZXRzIHVwIHRoZSBmcmFt ZWJ1ZmZlciB3aXRoIGNvcnJlY3Qgb2Zmc2V0cyBjb3JyZXNwb25kaW5nIHRvDQo+ID4gPiA+ID4g KyAqIHRoZSB0aWxlIG9mZnNldHMgYW5kIGRvZXMgYW4gYXRvbWljIG1vZGVzZXQgd2l0aCB0d28g Q1JUQ3MgZm9yIHR3bw0KPiA+ID4gPiA+ICsgKiBjb25uZWN0b3JzLg0KPiA+ID4gPiA+ICsgKg0K PiA+ID4gPiA+ICsgKiBUaGlzIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgaG9yaXpvbnRh bGx5IHRpbGVkIGRpc3BsYXlzLCBpbiBsaW5lIHdpdGgNCj4gPiA+ID4gPiArICogdGhlIGRpc3Bs YXlzIHN1cHBvcnRlZCBieSB0aGUga2VybmVsIGF0IHRoZSBtb21lbnQuDQo+ID4gPiA+ID4gKyAq Lw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgImRybV9tb2RlLmgiDQo+ID4gPiA+ ID4gKyNpbmNsdWRlICJkcm1fZm91cmNjLmgiDQo+ID4gPiA+ID4gKyNpbmNsdWRlICJpZ3QuaCIN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gPiArICAg IGludCBkcm1fZmQ7DQo+ID4gPiA+ID4gKyAgICBpbnQgbnVtX2hfdGlsZXM7DQo+ID4gPiA+ID4g KyAgICBpZ3RfZGlzcGxheV90ICpkaXNwbGF5Ow0KPiA+ID4gPiA+ICsgICAgZW51bSBpZ3RfY29t bWl0X3N0eWxlIGNvbW1pdDsNCj4gPiA+ID4gPiArfSBkYXRhX3Q7DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ID4gKyAgICBpZ3Rfb3V0cHV0X3QgKm91 dHB1dDsNCj4gPiA+ID4gPiArICAgIGlndF90aWxlX2luZm9fdCAqdGlsZTsNCj4gPiA+ID4gPiAr ICAgIGlndF9mYl90IGZiX3Rlc3RfcGF0dGVybjsNCj4gPiA+ID4gPiArICAgIGRybU1vZGVDb25u ZWN0b3JQdHIgY29ubmVjdG9yOw0KPiA+ID4gPiA+ICsgICAgZW51bSBwaXBlIHBpcGU7DQo+ID4g PiA+ID4gKyAgICBlbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0Ow0KPiA+ID4gPiA+ICt9IGRh dGFfY29ubmVjdG9yX3Q7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGlu dCBkcm1fcHJvcGVydHlfaXNfdGlsZShkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCkNCj4gPiA+ID4g DQo+ID4gPiA+IEkgd291bGRuJ3QgcGVyc29uYWxseSB1c2UgYGlubGluZWAuIFRoZSBjb21waWxl ciBpcyBzbWFydGVyIHRoYW4gaHVtYW5zDQo+ID4gPiA+IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5v dCBhIGZ1bmN0aW9uIHNob3VsZCBiZSBpbmxpbmVkLg0KPiA+ID4gPiANCj4gPiA+ID4gPiArew0K PiA+ID4gPiA+ICsJcmV0dXJuKHN0cmNtcChwcm9wLT5uYW1lID8gcHJvcC0+bmFtZSA6ICIiLCAi VElMRSIpPyAwIDogMSk7DQo+ID4gPiA+IA0KPiA+ID4gPiBTdHlsZTogdW5uZWNlc3NhcnkgcGFy ZW50aGVzZXMsIG1pc3Npbmcgc3BhY2UgYmVmb3JlIGA/YC4NCj4gPiA+ID4gDQo+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGdldF9udW1iZXJfb2ZfaF90 aWxlcyhkYXRhX3QgKmRhdGEpDQo+ID4gPiA+IA0KPiA+ID4gPiBXaGF0IGlmIG11bHRpcGxlIHRp bGVzIGFyZSBjb25uZWN0ZWQ/IFNob3VsZG4ndCB3ZSB1c2UgdGlsZV9ncm91cF9pZD8NCj4gPiA+ IA0KPiA+ID4gWWVzIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIG1vbml0b3JzIHdpdGggdGlsZXMg c28gdXNlIHRpbGVfZ3JvdXBfaWQgdG8gY2hlY2sNCj4gPiA+IHRoYXQgdGhlIHRpbGUgYmVsb25n cyB0byB0aGUgc2FtZSBncm91cCBhbmQgdGhlbiB1c2UgbnVtX2hfdGlsZXMNCj4gDQo+IEJ1dCBh Y3R1YWxseSB0aGUgY3VycmVudCBoYXJkd2FyZSBsaWtlIE1hZGh1bWl0aGEgbWVudGlvbmVkIG9u bHkgc3VwcG9ydHMgb25lIHRpbGUgZ3JvdXAsDQo+IGlmIHdlIGhhdmUgdG8gc3VwcG9ydCBtdWx0 aXBsZSB0aWxlIGdyb3VwcyB0aGVuIHdlIHdvdWxkIG5lZWQgdG8gbWFsbG9jIHRoZSBhcnJheSBv ZiBzdHJ1Y3R1cmVzDQo+IGZvciB0aGUgY29ubmVjdG9ycyBhc3NvY2lhdGVkIHdpdGggc2VwYXJh dGUgdGlsZSBncm91cHMgYW5kIHRoZW4gaGF2ZSBhIHNlcGFyYXRlIHN1YnRlc3QgZm9yDQo+IHRp bGUgZ3JvdXAgMSB0aWxlIGdyb3VwIDIgZXRjLiBUaGlzIGxvZ2ljIHdpbGwgbm90IGdldCB0ZXN0 ZWQgcmlnaHQgbm93IGR1ZSB0byBIVyBjb25zdHJhaW50Lg0KPiANCj4gU28gdGhlIGlkZWEgaXMg Zm9yIHRoZSBJR1QgdG8gY2hlY2sgdGhlIHRpbGUgZ3JvdXAgaWQgYnV0IG9ubHkgc3VwcG9ydCAx IHRpbGUgZ3JvdXAgc28gZmFyDQo+IGFuZCBsZWF2ZSB0aGUgcm9vbSBmb3IgZnVydGhlciBleHRl bmRpbmcgaXQgdG8gbXVsdGlwbGUgdGlsZXMgaW5zdGVhZCBvZiBvdmVyIGNvbXBsaWNhdGluZw0K PiB0aGUgbG9naWMgbm93Lg0KPiANCj4gRG9lcyB0aGF0IG1ha2Ugc2Vuc2Ugb3IgZG8geW91IHRo aW5rIHdlIHNob3VsZCBhbHJlYWR5IGFkZCB0aGUgc3VidGVzdHMgZm9yIG11bHRpcGxlIHRpbGUg Z3JvdXBzPw0KDQpUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gbWUsIHN1cHBvcnQgZm9yIG11 bHRpcGxlIHRpbGUgZ3JvdXBzIGNhbiBiZQ0KbGVmdCBhcyBhIFRPRE8gZm9yIGxhdGVyLg0KDQpJ bmNyZW1lbnRhbCBwYXRjaGVzIGFyZSB3YXkgZWFzaWVyIHRvIHJldmlldyB0aGFuIG9uZS1wYXRj aC10aGF0LQ0KaW1wbGVtZW50cy1hbGwtZmVhdHVyZXMtYXQtb25jZS4gOikNCg0KPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gKyAgICBpbnQgaTsNCj4gPiA+ID4gPiArICAgIGRybU1vZGVSZXMgKnJl czsNCj4gPiA+ID4gPiArICAgIGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gPiA+ID4g PiArICAgIGRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wOw0KPiA+ID4gPiA+ICsgICAgZHJtTW9kZVBy b3BlcnR5QmxvYlB0ciBibG9iOw0KPiA+ID4gPiA+ICsgICAgaWd0X3RpbGVfaW5mb190IHRpbGU7 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgaWd0X3JlcXVpcmUocmVzID0gZHJtTW9kZUdl dFJlc291cmNlcyhkYXRhLT5kcm1fZmQpKTsNCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgc2hvdWxk IHByb2JhYmx5IGJlIGlndF9hc3NlcnQuDQo+ID4gPiA+IA0KPiA+ID4gPiA+ICsgICAgZm9yKGkg PSAwOyBpIDwgcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspDQo+ID4gPiA+ID4gKyAgICB7DQo+ ID4gPiA+IA0KPiA+ID4gPiBTdHlsZTogbm8gbmV3bGluZSBiZWZvcmUgYHtgIChvbmx5IGZvciBm dW5jdGlvbnMsIGFwcGxpZXMgdG8gdGhlIHdob2xlDQo+ID4gPiA+IHBhdGNoKS4NCj4gPiA+ID4g DQo+ID4gPiA+ID4gKyAgICAgICAgY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvckN1cnJl bnQoZGF0YS0+ZHJtX2ZkLCBcDQo+ID4gPiA+IA0KPiA+ID4gPiBTdHlsZTogdW5uZWNlc3Nhcnkg YFxgLg0KPiA+ID4gPiANCj4gPiA+ID4gV2UgY291bGQgaWd0X2Fzc2VydChjb25uZWN0b3IpLg0K PiA+ID4gPiANCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXMtPmNvbm5lY3RvcnNbaV0pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr ICAgICAgICBpZighKChjb25uZWN0b3ItPmNvbm5lY3Rpb24gPT0gRFJNX01PREVfQ09OTkVDVEVE KSAmJg0KPiA+ID4gPiA+ICsgICAgICAgICAgICAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9 PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpKSkNCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiANCj4gPiA+ID4gU3R5bGU6IHdlIGNhbiBpbnZlcnQg dGhpcyBjb25kaXRpb24gdG8gbWFrZSBjbGVhcmVyLg0KPiA+ID4gDQo+ID4gPiBCdXQgd291bGRu dCB0aGF0IGFkZCBhZGRpdGlvbmFsIG5lc3Rpbmc/DQo+ID4gDQo+ID4gSSBtZWFuLCB0aGlzIGNv dWxkIGJlIHJlLXdyaXR0ZW4gYXM6DQo+ID4gDQo+ID4gICAgIGlmIChjb25uZWN0b3ItPmNvbm5l Y3Rpb24gIT0gRFJNX01PREVfQ09OTkVDVEVEIHx8DQo+ID4gICAgICAgICBjb25uZWN0b3ItPmNv bm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkNCj4gDQo+IE9o IHllcyB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UhDQo+IA0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArICAgICAgICBmb3IoaSA9IDA7IGkgPCBjb25uZWN0b3ItPmNvdW50X3Byb3BzOyBpKyspDQo+ ID4gPiA+ID4gKyAgICAgICAgew0KPiA+ID4gPiA+ICsgICAgICAgICAgICBwcm9wID0gZHJtTW9k ZUdldFByb3BlcnR5KGRhdGEtPmRybV9mZCwgY29ubmVjdG9yLT5wcm9wc1tpXSk7DQo+ID4gPiA+ IA0KPiA+ID4gPiBXZSBjb3VsZCBpZ3RfYXNzZXJ0KHByb3ApDQo+ID4gPiA+IA0KPiA+ID4gPiBX ZSBuZWVkIHRvIGZyZWUgaXQgYXQgc29tZSBwb2ludC4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAg ICAgICAgICAgIGlmKCEoZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkgJiYNCj4gPiA+ID4gDQo+ ID4gPiA+IFN0eWxlOiBtaXNzaW5nIHNwYWNlIGFmdGVyIGlmIGtleXdvcmQgKGFwcGxpZXMgdG8g dGhlIHdob2xlIHBhdGNoKS4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBk cm1fcHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9QX0JMT0IpKSkNCj4gPiA+ID4g DQo+ID4gPiA+IEknZCBtb3ZlIHRoaXMgY2hlY2sgaW50byBkcm1fcHJvcGVydHlfaXNfdGlsZS4N Cj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKyAgICAgICAgICAgIGJsb2IgPSBkcm1Nb2RlR2V0UHJvcGVydHlCbG9i KGRhdGEtPmRybV9mZCwgXA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uZWN0b3ItPnByb3BfdmFsdWVzW2ldKTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgIGlmKCFibG9iKQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIGlndF9wYXJzZV9jb25uZWN0b3JfdGls ZV9ibG9iKGJsb2IsICZ0aWxlKTsNCj4gPiA+ID4gPiArICAgICAgICAgICAgZGF0YS0+bnVtX2hf dGlsZXMgPSB0aWxlLm51bV9oX3RpbGU7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIGJyZWFrOw0K PiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RhdGljIGludCBzZXRfdGVzdF9wYXR0ZXJuX2ZiKGRhdGFf dCAqZGF0YSwgZGF0YV9jb25uZWN0b3JfdCAqY29ubl9kYXRhKQ0KPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gKyAgICBpbnQgaTsNCj4gPiA+ID4gPiArICAgIGludCBjb3VudCA9IDA7DQo+ID4gPiA+ ID4gKyAgICBib29sIGlzX3RpbGUgPSBmYWxzZTsNCj4gPiA+ID4gPiArICAgIGVudW0gcGlwZSBw aXBlOw0KPiA+ID4gPiA+ICsgICAgaWd0X3RpbGVfaW5mb190IHRpbGU7DQo+ID4gPiA+ID4gKyAg ICBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsNCj4gPiA+ID4gPiArICAgIGlndF9wbGFuZV90ICpwcmlt YXJ5Ow0KPiA+ID4gPiA+ICsgICAgZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7DQo+ID4gPiA+ID4g KyAgICBkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGJsb2I7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsgICAgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkYXRhLT5kaXNwbGF5LCBvdXRwdXQpDQo+ ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gKyAgICAgICAgaXNfdGlsZSA9IGZhbHNlOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICBjb25uX2RhdGFbY291bnRdLmNvbm5lY3RvciA9 IGRybU1vZGVHZXRDb25uZWN0b3IoZGF0YS0+ZGlzcGxheS0+ZHJtX2ZkLCBcDQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dC0+aWQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICBpZighKGNvbm5f ZGF0YVtjb3VudF0uY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PQ0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpKQ0KPiA+ ID4gPiA+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAg ICAgICAgLyogUGFyc2UgdGhyb3VnaCBlYWNoIGNvbm5lY3RvciBwcm9wZXJ0eSAqLw0KPiA+ID4g PiA+ICsgICAgICAgIGZvcihpID0gMDsgaSA8IGNvbm5fZGF0YVtjb3VudF0uY29ubmVjdG9yLT5j b3VudF9wcm9wczsgaSsrKQ0KPiA+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gPiArICAgICAg ICAgICAgcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkYXRhLT5kaXNwbGF5LT5kcm1fZmQsIFwN Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2Rh dGFbY291bnRdLmNvbm5lY3Rvci0+cHJvcHNbaV0pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr ICAgICAgICAgICAgaWYoISgoZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkgJiYNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BS T1BfQkxPQikpKSkNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgICAgYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJs b2IoZGF0YS0+ZGlzcGxheS0+ZHJtX2ZkLCBcDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLmNvbm5lY3Rvci0+cHJvcF92YWx1ZXNbaV0pOw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgICAgaWYoIWJsb2IpDQo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAg ICAgIGlndF9wYXJzZV9jb25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsICZ0aWxlKTsNCj4gPiA+ID4g PiArICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlID0gJnRpbGU7DQo+ID4gPiA+ID4g KyAgICAgICAgICAgIGlzX3RpbGUgPSB0cnVlOw0KPiA+ID4gPiA+ICsgICAgICAgICAgICBicmVh azsNCj4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+IA0KPiA+ID4gPiBJIGZlZWwgbGlrZSB0 aGlzIHdob2xlIGJsb2NrIGFib3ZlIGlzIGR1cGxpY2F0ZWQuIENvdWxkIGJlIGV4dHJhY3RlZA0K PiA+ID4gPiBpbnRvIGEgZnVuY3Rpb24sIGUuZy4NCj4gPiA+ID4gDQo+ID4gPiA+ICAgICBib29s IGNvbm5lY3Rvcl9nZXRfdGlsZShkcm1Nb2RlQ29ubmVjdG9yUmVzICpjb25uLCBpZ3RfdGlsZV9p bmZvX3QgKnRpbGVfaW5mbykNCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICAgICAgaWYoIWlzX3Rp bGUpDQo+ID4gPiA+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICAgICAgICBvdXRwdXQgPSBpZ3Rfb3V0cHV0X2Zyb21fY29ubmVjdG9yKGRhdGEtPmRp c3BsYXksIFwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm5fZGF0YVtjb3VudF0uY29ubmVjdG9yKTsNCj4gPiA+ID4gDQo+ID4gPiA+IFN0 eWxlOiB1bm5lY2Vzc2FyeSBgXGAuIEFwcGxpZXMgdG8gdGhlIHdob2xlIHBhdGNoLg0KPiA+ID4g PiANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgZm9yX2VhY2hfcGlwZShkYXRhLT5k aXNwbGF5LCBwaXBlKQ0KPiA+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gPiArICAgICAgICAg ICAgaWd0X2RlYnVnKCJDdXJyZW50IFBJUEUgaXMgJWRcbiIsIHBpcGUpOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArICAgICAgICAgICAgaWYoKGNvdW50ID4gMCkgJiYgKHBpcGUgPT0gY29ubl9k YXRhW2NvdW50LTFdLnBpcGUpKQ0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgY29udGludWU7 DQo+ID4gPiA+IA0KPiA+ID4gPiBTdHlsZTogdW5uZWNlc3NhcnkgcGFyZW50aGVzZXMuDQo+ID4g PiA+IA0KPiA+ID4gPiA+ICsgICAgICAgICAgICBpZihpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQo cGlwZSwgb3V0cHV0KSkgew0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgY29ubl9kYXRhW2Nv dW50XS5waXBlID0gcGlwZTsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtj b3VudF0ub3V0cHV0ID0gb3V0cHV0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgIGlndF9vdXRwdXRfc2V0X3BpcGUoY29ubl9kYXRhW2NvdW50XS5vdXRwdXQsIFwNCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2Nv dW50XS5waXBlKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBpZ3Rf Y3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJtX2ZkLFwNCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV9oX3Np emUgKlwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGEtPm51bV9oX3RpbGVzKSxcDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfdl9zaXplLFwNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWEJHUjg4 ODgsXA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9D QUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSxcDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmY29ubl9kYXRhW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4pOw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIHByaW1hcnkgPSBpZ3Rfb3V0cHV0 X2dldF9wbGFuZV90eXBlKGNvbm5fZGF0YVtjb3VudF0ub3V0cHV0LFwNCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg IGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmNvbm5fZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0 ZXJuKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBpZ3RfZmJfc2V0 X3NpemUoJmNvbm5fZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0ZXJuLCBwcmltYXJ5LFwNCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnRp bGUtPnRpbGVfaF9zaXplLFwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfdl9zaXplKTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZjb25uX2RhdGFb Y291bnRdLmZiX3Rlc3RfcGF0dGVybiwgXA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmltYXJ5LFwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV9oX3NpemUgKlwN Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRh W2NvdW50XS50aWxlLT50aWxlX2hfbG9jKSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUgKlwN Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRh W2NvdW50XS50aWxlLT50aWxlX3ZfbG9jKSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9zaXplKHByaW1hcnksXA0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGls ZV9oX3NpemUsXA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ICsgICAgICAgICAgICB9DQo+ ID4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgICAgIGNvdW50Kys7DQo+ID4gPiA+ ID4gKyAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIGNvdW50Ow0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtpZ3RfbWFpbg0KPiA+ID4gPiA+ICt7 DQo+ID4gPiA+ID4gKyAgICBpZ3RfZGlzcGxheV90IGRpc3BsYXk7DQo+ID4gPiA+ID4gKyAgICBk YXRhX3QgZGF0YSA9IHt9Ow0KPiA+ID4gPiA+ICsgICAgZGF0YV9jb25uZWN0b3JfdCAqY29ubl9k YXRhOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIGlndF9maXh0dXJlIHsNCj4gPiA+ID4g PiArICAgICAgICBkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FO WSk7DQo+ID4gPiA+ID4gKyAgICAgICAga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0K PiA+ID4gPiA+ICsgICAgICAgIGlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRhdGEuZHJt X2ZkKTsNCj4gPiA+ID4gPiArICAgICAgICBkYXRhLmRpc3BsYXkgPSAmZGlzcGxheTsNCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgICAgZ2V0X251bWJlcl9vZl9oX3RpbGVzKCZkYXRhKTsN Cj4gPiA+ID4gPiArICAgICAgICBpZ3RfZGVidWcoIk51bWJlciBvZiBIb3Jpem9udGFsIFRpbGVz OiAlZFxuIiwgZGF0YS5udW1faF90aWxlcyk7DQo+ID4gPiA+ID4gKyAgICAgICAgZGF0YS5jb21t aXQgPSBkYXRhLmRpc3BsYXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVH QUNZOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIGlmKGRh dGEubnVtX2hfdGlsZXMgPiAwKQ0KPiA+ID4gPiA+ICsgICAgICAgIGNvbm5fZGF0YSA9IChkYXRh X2Nvbm5lY3Rvcl90ICopbWFsbG9jKGRhdGEubnVtX2hfdGlsZXMgKiBcDQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkYXRh X2Nvbm5lY3Rvcl90KSk7DQo+ID4gPiA+IA0KPiA+ID4gPiBObyBuZWVkIGZvciB0aGlzIGNhc3Qs IHVubmVjZXNzYXJ5IGBcYC4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICBpZ3RfYXNzZXJ0KGNv bm5fZGF0YSk7DQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIGNoZWNrIHJlYWRzIGdhcmJhZ2UgZnJv bSB0aGUgc3RhY2sgaWYgZGF0YS5udW1faF90aWxlcyA9PSAwLg0KPiA+ID4gDQo+ID4gPiBUaGlz IGNoZWNrIHNob3VsZCBwb3NzaWJseSBiZSBpbnNpZGUgdGhlIHNhbWUgaWYNCj4gPiA+IA0KPiA+ ID4gPiA+ICsgICAgaWd0X3N1YnRlc3RfZigiYmFzaWMtdGVzdC1wYXR0ZXJuIikgew0KPiA+ID4g PiANCj4gPiA+ID4gTm8gbmVlZCBmb3IgdGhlIF9mIHN1ZmZpeC4NCj4gPiA+ID4gDQo+ID4gPiA+ IFRoaXMgc3VidGVzdCBpcyBtaXNzaW5nIGEgZGVzY3JpcHRpb24uIENvdWxkIHlvdSBhZGQgb25l PyBGb3IgbW9yZQ0KPiA+ID4gPiBpbmZvcm1hdGlvbiwgc2VlOg0KPiA+ID4gPiBodHRwczovL2Ry bS5wYWdlcy5mcmVlZGVza3RvcC5vcmcvaWd0LWdwdS10b29scy9pZ3QtZ3B1LXRvb2xzLUNvcmUu aHRtbCNpZ3QtZGVzY3JpYmUNCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICAgICAgaWd0X3NraXBf b24oIWRhdGEubnVtX2hfdGlsZXMpOw0KPiA+ID4gPiA+ICsgICAgICAgIHNldF90ZXN0X3BhdHRl cm5fZmIoJmRhdGEsIGNvbm5fZGF0YSk7DQo+ID4gPiA+ID4gKyAgICAgICAgaWd0X2Rpc3BsYXlf Y29tbWl0MihkYXRhLmRpc3BsYXksIGRhdGEuY29tbWl0KTsNCj4gPiA+ID4gDQo+ID4gPiA+IEkn bSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRlc3QgY2hlY2tzLiBJdCBkb2VzIGEg Y29tbWl0IG9uDQo+ID4gPiA+IGFsbCB0aWxlZCBjb25uZWN0b3JzLCBidXQgZG9lc24ndCBjaGVj ayBhbnl0aGluZyBhZnRlcndhcmRzLiBNYXliZSBpdA0KPiA+ID4gPiBzaG91bGQgY2hlY2sgdGhl IHBhZ2VmbGlwIHNlcmlhbCBhbmQgdGltaW5ncz8NCj4gPiA+IA0KPiA+ID4gVGhpcyBpcyBzbyBm YXIgYSBtYW51YWwgdGVzdCB3aGVyZSB3ZSBqdXN0IGxvb2sgYXQgdGhlIHBhdHRlcm4gYW5kIG1h a2Ugc3VyZSBubyBhcnRpZmFjdHMNCj4gPiA+IGFuZCBhdXRvIHRlc3RpbmcganVzdCBtYWtlIHN1 cmUgdGhlIGNvbW1pdCBkaWQgbm90IGZhaWwsIGFueSBiZXR0ZXIgaWRlYSB0byBjaGVjayBpZiB0 aGUNCj4gPiA+IHBhZ2VfZmxpcCB0aW1lb3V0cyBkaWRudCBvY2N1ciBvciBub3Qgc3VyZSBpZiB3 ZSBjYW4gZG8gY3JjIGNoZWNrcyB0byBlbnN1cmUgbm8gYXJ0aWZhY3RzPw0KPiA+ID4gQW55IGlk ZWFzL3N1Z2dlc3Rpb25zPw0KPiA+IA0KPiA+IFRvIGJlIGhvbmVzdCBJJ20gbm90IGEgZmFuIG9m IG1hbnVhbCB0ZXN0aW5nLg0KPiA+IA0KPiA+IEFzIEkgdW5kZXJzdGFuZCBpdCwgdGlsZWQgZGlz cGxheXMgbXVzdCBiZSB1cGRhdGVkIGluIHN5bmMgc28gdGhhdCB5b3UNCj4gPiBkb24ndCBnZXQg dGVhcmluZy4gSWYgb25lIGRpc3BsYXkgaXMgcGFnZS1mbGlwcGVkIGJlZm9yZSB0aGUgb3RoZXIs DQo+ID4gdGhlcmUgd2lsbCBiZSB0ZWFyaW5nIGluIHRoZSBtaWRkbGUgb2YgdGhlIHRpbGVkIHNj cmVlbi4gQW0gSSByZWFkaW5nDQo+ID4gdGhlIGNvbW1pdCBtZXNzYWdlIGNvcnJlY3RseT8NCj4g DQo+IFllcyB0aGVyZSB3b3VsZCBiZSB0ZWFyaW5nIGlmIG9uZSB0aWxlIHBhZ2UgZmxpcHBlZCBi ZWZvcmUgdGhlIG90aGVyDQo+IGFuZCB0aGUgSFcgcHJldmVudHMgdGhpcyBmcm9tIGhhcHBlbmlu ZyBieSBzeW5jaHJvbml6aW5nIHRoZSB0d28gdmJsYW5rcw0KPiBmcm9tIHRoZSB0d28gcG9ydHMu DQo+IA0KPiBJZiB0aGVyZSBhbiBleGFtcGxlIG9mIGlndCB3aGVyZSB3ZSBjYW4gY2hlY2sgdGhl IHZibGFuayB0aW1pbmcgb3IgcGFnZSBmbGlwIHRpbWluZ3MNCj4gdG8gYWRkIHRoaXMgY2hlY2s/ DQoNCkkgYmVsaWV2ZSB0ZXN0cyBpbiBrbXNfZmxpcCBkbyBhIHNpbWlsYXIgY2hlY2suIFRoZSBw YWdlX2ZsaXBfaGFuZGxlcg0KZnVuY3Rpb24gaGFuZGxlcyB0aGUgcGFnZSBmbGlwIGV2ZW50ICh3 aGljaCBpcyBnaXZlbiB0aGUgZmxpcCB0aW1lc3RhbXANCmFuZCBzZXF1ZW5jZSBudW1iZXIpLiBj aGVja19zdGF0ZSB2ZXJpZmllcyB0aGF0IHRoZSB0aW1lc3RhbXAgaXMgY2xvc2UNCmVub3VnaCB0 byB3aGF0IHdlIGV4cGVjdCAoaW4gb3VyIGF0b21pYyBjaGVjaywgbWF5YmUgd2UgY2FuIGNvbXBh cmUNCndpdGggc3RyaWN0IGVxdWFsaXR5KS4NCg0KU2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIG11 bHRpcGxlIENSVENzLCBpdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gdXNlDQpkcm1FdmVudENvbnRl eHQudmVyc2lvbiA9IDMgd2l0aCBwYWdlX2ZsaXBfaGFuZGxlcjIgc28gdGhhdCB3ZSBhbHNvIGdl dA0KdGhlIENSVEMgaW4gdGhlIHBhZ2UgZmxpcCBoYW5kbGVyLiBWZXJzaW9uIDMgaXMgYSBjb3Jl IERSTSBmZWF0dXJlLCBhbGwNCmRyaXZlcnMgc3VwcG9ydCBpdCBnaXZlbiBhIHJlY2VudCBlbm91 Z2gga2VybmVsLg0KDQpSb3VnaCBwc2V1ZG8tY29kZToNCg0KCS8qIFdoZW4gY29tbWl0dGluZyBi dWZmZXIsIHJlcXVlc3QgYSBwYWdlIGZsaXAgKi8NCglkcm1Nb2RlQXRvbWljQ29tbWl0KGZkLCBy ZXEsIERSTV9NT0RFX0FUT01JQ19OT05CTE9DSyB8DQoJCQkgICAgRFJNX01PREVfUEFHRV9GTElQ X0VWRU5ULCBkYXRhKTsNCg0KCXN0YXRpYyB2b2lkIHBhZ2VfZmxpcF9oYW5kbGVyKGludCBmZCwg dW5zaWduZWQgc2VxLA0KCQkJCSAgICAgIHVuc2lnbmVkIHR2X3NlYywNCgkJCQkgICAgICB1bnNp Z25lZCB0dl91c2VjLA0KCQkJCSAgICAgIHVuc2lnbmVkIGNydGNfaWQsIHZvaWQgKmRhdGEpDQoJ ew0KCQkvKiBDb21wYXJlIHBhcmFtcyB3aXRoIHRoZSBvdGhlciBwYWdlIGZsaXAgKi8NCgl9DQoN CgkvKiBXaGVuIHdlIGdldCBQT0xMSU4gaW4gdGhlIERSTSBGRCAqLw0KCWRybUV2ZW50Q29udGV4 dCBldmVudCA9IHsNCgkJLnZlcnNpb24gPSAzLA0KCQkucGFnZV9mbGlwX2hhbmRsZXIyID0gcGFn ZV9mbGlwX2hhbmRsZXIsDQoJfTsNCglkcm1IYW5kbGVFdmVudChmZCwgJmV2ZW50KTsNCg0KPiBN YW5hc2kNCj4gDQo+ID4gSWYgc28sIG1heWJlIHdlIGNhbiBjaGVjayB0aGUgcGFnZS1mbGlwIHRp bWluZ3MgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZQ0KPiA+IGVxdWFsPw0KPiA+IA0KPiA+IEEgQ1JD IGNoZWNrIG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvbywgdG8gbWFrZSBzdXJlIGJhbmR3aWR0aCBp c24ndCBhbg0KPiA+IGlzc3VlLg0KPiA+IA0KPiA+IENDJ2luZyBNYXJ0aW4gaW4gY2FzZSBoZSBo YXMgYmV0dGVyIGlkZWFzLg0KPiA+IA0KPiA+ID4gTWFuYXNpDQo+ID4gPiANCj4gPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBpZ3RfZml4dHVyZSB7DQo+ID4gPiA+ ID4gKyAgICAgICAgaWYoZGF0YS5udW1faF90aWxlcyA+IDApDQo+ID4gPiA+ID4gKyAgICAgICAg ICAgIGZyZWUoY29ubl9kYXRhKTsNCj4gPiA+ID4gDQo+ID4gPiA+IElmIGNvbm5fZGF0YSB3YXMg aW5pdGlhbGl6ZWQgdG8gTlVMTCwgbm8gbmVlZCBmb3IgdGhlIGNoZWNrLCBiZWNhdXNlDQo+ID4g PiA+IGZyZWUoTlVMTCkgaXMgYSBuby1vcC4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKyAgICAgICAg a21zdGVzdF9yZXN0b3JlX3Z0X21vZGUoKTsNCj4gPiA+ID4gPiArICAgICAgICBpZ3RfZGlzcGxh eV9maW5pKGRhdGEuZGlzcGxheSk7DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWls ZA0KPiA+ID4gPiA+IGluZGV4IDM0YTc0MDI1Li42YTZlOWNlOSAxMDA2NDQNCj4gPiA+ID4gPiAt LS0gYS90ZXN0cy9tZXNvbi5idWlsZA0KPiA+ID4gPiA+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxk DQo+ID4gPiA+ID4gQEAgLTI1LDYgKzI1LDcgQEAgdGVzdF9wcm9ncyA9IFsNCj4gPiA+ID4gPiAg CSdrbXNfY3Vyc29yX2VkZ2Vfd2FsaycsDQo+ID4gPiA+ID4gIAkna21zX2N1cnNvcl9sZWdhY3kn LA0KPiA+ID4gPiA+ICAJJ2ttc19kcF9kc2MnLA0KPiA+ID4gPiA+ICsJJ2ttc19kcF90aWxlZF9k aXNwbGF5JywNCj4gPiA+ID4gPiAgCSdrbXNfZHJhd19jcmMnLA0KPiA+ID4gPiA+ICAJJ2ttc19m YmNvbl9mYnQnLA0KPiA+ID4gPiA+ICAJJ2ttc19mZW5jZV9waW5fbGVhaycsDQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlz dAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=