From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id F0B806E0EF for ; Fri, 21 Dec 2018 16:54:56 +0000 (UTC) Date: Fri, 21 Dec 2018 08:57:51 -0800 From: Manasi Navare Message-ID: <20181221165750.GA907@intel.com> References: <20181220191046.1207-1-anusha.srivatsa@intel.com> <20181221121449.GV17124@platvala-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181221121449.GV17124@platvala-desk.ger.corp.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t] test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP 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: Anusha , igt-dev@lists.freedesktop.org, Antonio Argenziano , Dhinakaran Pandiyan , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= List-ID: T24gRnJpLCBEZWMgMjEsIDIwMTggYXQgMDI6MTQ6NDlQTSArMDIwMCwgUGV0cmkgTGF0dmFsYSB3 cm90ZToKPiBPbiBUaHUsIERlYyAyMCwgMjAxOCBhdCAxMToxMDo0NkFNIC0wODAwLCBBbnVzaGEg d3JvdGU6Cj4gPiBGcm9tOiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29t Pgo+ID4gCj4gPiBUaGlzIHBhdGNoIGFkZHMgYSBiYXNpYyBrbXMgdGVzdCB0byB2YWxpZGF0ZSB0 aGUgZGlzcGxheSBzdHJlYW0KPiA+IGNvbXByZXNzaW9uIGZ1bmN0aW9uYWxpdHkgaWYgc3VwcG9y dGVkIG9uIERQL2VEUCBjb25uZWN0b3IuCj4gPiBDdXJyZW50bHkgdGhpcyBoYXMgb25seSB0d28g c3VidGVzdHMgdG8gZm9yY2UgdGhlIERTQyBvbiBhbGwKPiA+IHRoZSBlRFAgYW5kIERQIGNvbm5l Y3RvcnMgdGhhdCBzdXBwb3J0IGl0IHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzLgo+ID4gVGhpcyB3 aWxsIGJlIGV4cGFuZGVkIHRvIGFkZCBtb3JlIHN1YnRlc3RzIHRvIHR3ZWFrIERTQyBwYXJhbWV0 ZXJzLgo+ID4gCj4gPiB2NzogKGZyb20gQW51c2hhKQo+ID4gKiBDb2RlIFN0eWxlIGNoYW5nZXMu KFBldHJpKQo+ID4gKiBVc2UgZm9yX2VhY2hfcGlwZSgpIGluc3RlYWQgb2YgZm9yX2VhY2hfcGlw ZV9zdGF0aWMoKS4oUGV0cmkpCj4gPiAqIENvcnJlY3QgbG9naWMgYnkgYXZvaWRpbmcgc2tpcHBp bmcgb2YgaW5uZXIgZm9yIGxvb3AgY29tcGxldGVseS4oUGV0cmkpCj4gPiB2NjogKGZyb20gQW51 c2hhKQo+ID4gKiBGaXggcnVuX3Rlc3QoKSAoUGV0cmkpCj4gPiAqIEZpeCB1cGRhdGVfZGlzcGxh eSgpIHRvIGF2b2lkIGxlYWtzLiAoUGV0cmkpCj4gPiB2NToKPiA+ICogRml4IHRlc3QgY2xlYW51 cCB0byBhdm9pZCBjcmFzaCAoUGV0cmkpCj4gPiB2NDoKPiA+ICogRnV0dXJlIHByb29mIGZvciBt b3JlIHRlc3QgdHlwZXMgKFBldHJpKQo+ID4gKiBGaXggYWxwaGFiZXRpY2FsIG9yZGVyIChQZXRy aSkKPiA+ICogcy9pZ3RfZGlzcGxheV9pbml0L2lndF9kaXNwbGF5X3JlcXVpcmUgKFBldHJpKQo+ ID4gKiBSZW1vdmUgYmxhbmsgbGluZXMgYWZ0ZXIgcmV0dXJuIChQZXRyaSkKPiA+IHYzOgo+ID4g KiBVc2UgYXJyYXkgb2YgY29ubmVjdG9ycyBhbmQgbG9vcCB0aHJvdWdoIChQZXRyaSkKPiA+ICog QWxzbyBjaGVjayBmb3IgRkVDIG9uIERQIGNvbm5lY3RvcnMgKE1hbmFzaSkKPiA+ICogQWRkIGEg UGlwZV9BIHJlc3RyaWN0aW9uIG9uIERQIChWaWxsZSkKPiA+IHYyOgo+ID4gKiBVc2UgSUdUIHdy YXBwZXJzIGZvciBhbGwgKERLLCBBbnRvbmlvKQo+ID4gKiBTcGxpdCBpbnRvIHR3byBzdWJ0ZXN0 cyBmb3IgZURQIGFuZCBEUCB0eXBlcyAoUGV0cmkpCj4gPiAKPiA+IENjOiBQZXRyaSBMYXR2YWxh IDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KPiA+IENjOiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFu dG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+Cj4gPiBDYzogRGhpbmFrYXJhbiBQYW5kaXlhbiA8 ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFu dXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0 c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kg TmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgdGVzdHMvTWFr ZWZpbGUuc291cmNlcyB8ICAgMSArCj4gPiAgdGVzdHMva21zX2RwX2RzYy5jICAgICB8IDI2NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIHRlc3RzL21lc29u LmJ1aWxkICAgICAgfCAgIDEgKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjY4IGluc2VydGlvbnMo KykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2RwX2RzYy5jCj4gPiAKPiA+IGRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+ID4gaW5kZXggZWVkZGUxZTguLmEzYzI0Yzk5IDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMvTWFr ZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gQEAgLTU0 LDYgKzU0LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gPiAgCWttc19jcnRjX2JhY2tncm91bmRfY29s b3IgXAo+ID4gIAlrbXNfY3Vyc29yX2NyYyBcCj4gPiAgCWttc19jdXJzb3JfbGVnYWN5IFwKPiA+ ICsJa21zX2RwX2RzYyBcCj4gPiAgCWttc19kcmF3X2NyYyBcCj4gPiAgCWttc19mYmNvbl9mYnQg XAo+ID4gIAlrbXNfZmVuY2VfcGluX2xlYWsgXAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19k cF9kc2MuYyBiL3Rlc3RzL2ttc19kcF9kc2MuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ IGluZGV4IDAwMDAwMDAwLi5jOWEzODdlZAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVz dHMva21zX2RwX2RzYy5jCj4gPiBAQCAtMCwwICsxLDI2NiBAQAo+ID4gKy8qCj4gPiArICogQ29w eXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ICsgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u Cj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiArICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiA+ICsgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCj4gPiArICogU29mdHdhcmUuCj4gPiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4g KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICog RGlzcGxheXBvcnQgRGlzcGxheSBTdHJlYW0gQ29tcHJlc3Npb24gdGVzdAo+ID4gKyAqIFVudGls IHRoZSBDUkMgc3VwcG9ydCBpcyBhZGRlZCB0aGlzIG5lZWRzIHRvIGJlIGludm9rZWQgd2l0aCAt LWludGVyYWN0aXZlCj4gPiArICogdG8gbWFudWFsbHkgdmVyaWZ5IGlmIHRoZSB0ZXN0IHBhdHRl cm4gaXMgc2VlbiB3aXRob3V0IGNvcnJ1cHRpb24gZm9yIGVhY2gKPiA+ICsgKiBzdWJ0ZXN0Lgo+ ID4gKyAqCj4gPiArICogQXV0aG9yczoKPiA+ICsgKiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5u YXZhcmVAaW50ZWwuY29tPgo+ID4gKyAqCj4gPiArICovCj4gPiArI2luY2x1ZGUgImlndC5oIgo+ ID4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiA+ICsj aW5jbHVkZSA8Z2V0b3B0Lmg+Cj4gPiArI2luY2x1ZGUgPG1hdGguaD4KPiA+ICsjaW5jbHVkZSA8 c3RkaW50Lmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiA+ICsjaW5jbHVkZSA8c3RyaW5n cy5oPgo+ID4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4g PiArI2luY2x1ZGUgPHNpZ25hbC5oPgo+ID4gKyNpbmNsdWRlIDx0aW1lLmg+Cj4gPiArI2luY2x1 ZGUgPGZjbnRsLmg+Cj4gPiArI2luY2x1ZGUgPHRlcm1pb3MuaD4KPiA+ICsKPiA+ICtlbnVtIGRz Y190ZXN0X3R5cGUKPiA+ICt7Cj4gPiArCXRlc3RfYmFzaWNfZHNjX2VuYWJsZQo+ID4gK307Cj4g PiArCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ID4gKwlpbnQgZHJtX2ZkOwo+ID4gKwlpbnQgZGVi dWdmc19mZDsKPiA+ICsJdWludDMyX3QgaWQ7Cj4gPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsK PiA+ICsJc3RydWN0IGlndF9mYiBmYl90ZXN0X3BhdHRlcm47Cj4gPiArCWlndF9vdXRwdXRfdCAq b3V0cHV0Owo+ID4gKwlpbnQgbW9kZV92YWxpZDsKPiA+ICsJZHJtTW9kZU1vZGVJbmZvICptb2Rl Owo+ID4gKwlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiArCWRybU1vZGVFbmNvZGVy ICplbmNvZGVyOwo+ID4gKwlpbnQgY3J0YzsKPiA+ICsJZW51bSBwaXBlIHBpcGU7Cj4gPiArCWNo YXIgY29ubl9uYW1lWzEyOF07Cj4gPiArfSBkYXRhX3Q7Cj4gPiArCj4gPiArc3RhdGljIGlubGlu ZSB2b2lkIG1hbnVhbChjb25zdCBjaGFyICpleHBlY3RlZCkKPiA+ICt7Cj4gPiArCWlndF9kZWJ1 Z19tYW51YWxfY2hlY2soImFsbCIsIGV4cGVjdGVkKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IGJvb2wgaXNfZHBfZHNjX3N1cHBvcnRlZChkYXRhX3QgKmRhdGEpCj4gPiArewo+ID4gKwljaGFy IGZpbGVfbmFtZVsxMjhdID0gezB9Owo+ID4gKwljaGFyIGJ1Zls1MTJdOwo+ID4gKwo+ID4gKwlz dHJjcHkoZmlsZV9uYW1lLCBkYXRhLT5jb25uX25hbWUpOwo+ID4gKwlzdHJjYXQoZmlsZV9uYW1l LCAiL2k5MTVfZHNjX2ZlY19zdXBwb3J0Iik7Cj4gPiArCWlndF9yZXF1aXJlKGlndF9kZWJ1Z2Zz X3NpbXBsZV9yZWFkKGRhdGEtPmRlYnVnZnNfZmQsIGZpbGVfbmFtZSwgYnVmLAo+ID4gKwkJCQkJ ICAgIHNpemVvZihidWYpKSA+IDApOwo+ID4gKwlpZ3RfZGVidWdmc19yZWFkKGRhdGEtPmRybV9m ZCwgZmlsZV9uYW1lLCBidWYpOwo+ID4gKwo+ID4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRTQ19T aW5rX1N1cHBvcnQ6IHllcyIpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBpc19kcF9m ZWNfc3VwcG9ydGVkKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArCWNoYXIgZmlsZV9uYW1lWzEy OF0gPSB7MH07Cj4gPiArCWNoYXIgYnVmWzUxMl07Cj4gPiArCj4gPiArCXN0cmNweShmaWxlX25h bWUsIGRhdGEtPmNvbm5fbmFtZSk7Cj4gPiArCXN0cmNhdChmaWxlX25hbWUsICIvaTkxNV9kc2Nf ZmVjX3N1cHBvcnQiKTsKPiA+ICsJaWd0X2RlYnVnZnNfcmVhZChkYXRhLT5kcm1fZmQsIGZpbGVf bmFtZSwgYnVmKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHN0cnN0cihidWYsICJGRUNfU2lua19TdXBw b3J0OiB5ZXMiKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgaXNfZHBfZHNjX2VuYWJs ZWQoZGF0YV90ICpkYXRhKQo+ID4gK3sKPiA+ICsJY2hhciBmaWxlX25hbWVbMTI4XSA9IHswfTsK PiA+ICsJY2hhciBidWZbNTEyXTsKPiA+ICsKPiA+ICsJc3RyY3B5KGZpbGVfbmFtZSwgZGF0YS0+ Y29ubl9uYW1lKTsKPiA+ICsJc3RyY2F0KGZpbGVfbmFtZSwgIi9pOTE1X2RzY19mZWNfc3VwcG9y dCIpOwo+ID4gKwlpZ3RfZGVidWdmc19yZWFkKGRhdGEtPmRybV9mZCwgZmlsZV9uYW1lLCBidWYp Owo+ID4gKwo+ID4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRTQ19FbmFibGVkOiB5ZXMiKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgZm9yY2VfZHBfZHNjX2VuYWJsZShkYXRhX3QgKmRh dGEpCj4gPiArewo+ID4gKwljaGFyIGZpbGVfbmFtZVsxMjhdID0gezB9Owo+ID4gKwlpbnQgcmV0 Owo+ID4gKwo+ID4gKwlzdHJjcHkoZmlsZV9uYW1lLCBkYXRhLT5jb25uX25hbWUpOwo+ID4gKwlz dHJjYXQoZmlsZV9uYW1lLCAiL2k5MTVfZHNjX2ZlY19zdXBwb3J0Iik7Cj4gPiArCWlndF9kZWJ1 ZyAoIkZvcmNpbmcgRFNDIGVuYWJsZSBvbiAlc1xuIiwgZGF0YS0+Y29ubl9uYW1lKTsKPiA+ICsJ cmV0ID0gaWd0X3N5c2ZzX3dyaXRlKGRhdGEtPmRlYnVnZnNfZmQsIGZpbGVfbmFtZSwgIjEiLCAx KTsKPiA+ICsJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJkZWJ1Z2ZzX3dyaXRlIGZhaWxlZCIpOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjbGVhcl9kcF9kc2NfZW5hYmxlKGRhdGFfdCAq ZGF0YSkKPiA+ICt7Cj4gPiArCWNoYXIgZmlsZV9uYW1lWzEyOF0gPSB7MH07Cj4gPiArCWludCBy ZXQ7Cj4gPiArCj4gPiArCXN0cmNweShmaWxlX25hbWUsIGRhdGEtPmNvbm5fbmFtZSk7Cj4gPiAr CXN0cmNhdChmaWxlX25hbWUsICIvaTkxNV9kc2NfZmVjX3N1cHBvcnQiKTsKPiA+ICsJaWd0X2Rl YnVnICgiQ2xlYXJpbmcgRFNDIGVuYWJsZSBvbiAlc1xuIiwgZGF0YS0+Y29ubl9uYW1lKTsKPiA+ ICsJcmV0ID0gaWd0X3N5c2ZzX3dyaXRlKGRhdGEtPmRlYnVnZnNfZmQsIGZpbGVfbmFtZSwgIjAi LCAxKTsKPiA+ICsJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJkZWJ1Z2ZzX3dyaXRlIGZhaWxlZCIp Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAoZGF0YV90ICpkYXRh KSB7Cj4gPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ID4gKwo+ID4gKwlpZiAoZGF0YS0+b3V0 cHV0KSB7Cj4gPiArCQlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRhLT5v dXRwdXQsCj4gPiArCQkJCQkJICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ID4gKwkJaWd0 X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+ICsJCWlndF9kaXNwbGF5X2NvbW1pdCgm ZGF0YS0+ZGlzcGxheSk7Cj4gPiArCj4gPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwg JmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiArCj4gPiAr LyoKPiA+ICsgKiBSZS1wcm9iZSBjb25uZWN0b3JzIGFuZCBkbyBhIG1vZGVzZXQgd2l0aCBEU0MK PiA+ICsgKgo+ID4gKyAqLwo+ID4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9kaXNwbGF5KGRhdGFfdCAq ZGF0YSwgZW51bSBkc2NfdGVzdF90eXBlIHRlc3RfdHlwZSkKPiA+ICt7Cj4gPiArCWlndF9wbGFu ZV90ICpwcmltYXJ5Owo+ID4gKwlkYXRhLT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShkYXRh LT5vdXRwdXQpOwo+ID4gKwlkYXRhLT5jb25uZWN0b3IgPSBkYXRhLT5vdXRwdXQtPmNvbmZpZy5j b25uZWN0b3I7Cj4gPiArCj4gPiArCWlmIChkYXRhLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBl ID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCAmJgo+ID4gKwkgICAgZGF0YS0+cGlw ZSA9PSBQSVBFX0EpIHsKPiA+ICsJCWlndF9kZWJ1ZyAoIkRTQyBub3Qgc3VwcG9ydGVkIG9uIFBp cGUgQSBvbiBleHRlcm5hbCBEUFxuIik7Cj4gPiArCQlyZXR1cm47Cj4gPiArCX0KPiA+ICsKPiA+ ICsJaWYgKHRlc3RfdHlwZSA9PSB0ZXN0X2Jhc2ljX2RzY19lbmFibGUpIHsKPiA+ICsJCWlndF9k ZWJ1ZyAoIkRTQyBpcyBzdXBwb3J0ZWQgb24gJXNcbiIsCj4gPiArCQkJICAgZGF0YS0+Y29ubl9u YW1lKTsKPiA+ICsJCWZvcmNlX2RwX2RzY19lbmFibGUoZGF0YSk7Cj4gPiArCQkvKiBDbGVhciB0 aGUgZmIgaW4gb3JkZXIgdG8gYXZvaWQgbGVha3MgKi8KPiA+ICsJCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfdGVzdF9wYXR0ZXJuKTsKPiA+ICsJCWlndF9jcmVhdGVfcGF0 dGVybl9mYihkYXRhLT5kcm1fZmQsIGRhdGEtPm1vZGUtPmhkaXNwbGF5LAo+ID4gKwkJCQkgICAg ICBkYXRhLT5tb2RlLT52ZGlzcGxheSwKPiA+ICsJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4 OCwKPiA+ICsJCQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiA+ICsJCQkJICAg ICAgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCQlwcmltYXJ5ID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShkYXRhLT5vdXRwdXQsCj4gPiArCQkJCQkJICAgIERSTV9QTEFORV9UWVBF X1BSSU1BUlkpOwo+ID4gKwkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmJfdGVz dF9wYXR0ZXJuKTsKPiA+ICsJCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7Cj4g PiArCQkvKiBVbnRpbCB3ZSBoYXZlIENSQyBjaGVjayBzdXBwb3J0LCBtYW51YWxseSBjaGVjayBp ZiBSR0IgdGVzdCBwYXR0ZXJuIGhhcyBubyBjb3JydXB0aW9uICovCj4gPiArCQltYW51YWwgKCJS R0IgdGVzdCBwYXR0ZXJuIHdpdGhvdXQgY29ycnVwdGlvbiIpOwo+ID4gKwkJaWd0X2Fzc2VydF9m KGlzX2RwX2RzY19lbmFibGVkKGRhdGEpLAo+ID4gKwkJCSAgICAgIkRlZmF1bHQgRFNDIGVuYWJs ZSBmYWlsZWQgb24gQ29ubmVjdG9yOiAlcyBQaXBlOiAlcyIsCj4gPiArCQkJICAgICBkYXRhLT5j b25uX25hbWUsCj4gPiArCQkJICAgICBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBlKSk7Cj4g PiArCQljbGVhcl9kcF9kc2NfZW5hYmxlKGRhdGEpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJaWd0 X2Fzc2VydCghIlVua25vd24gdGVzdCB0eXBlXG4iKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgdm9pZCBydW5fdGVzdChkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0 LAo+ID4gKwkJICAgICBlbnVtIGRzY190ZXN0X3R5cGUgdGVzdF90eXBlKQo+ID4gK3sKPiA+ICsJ ZW51bSBwaXBlIHBpcGU7Cj4gPiArCj4gPiArCWZvcl9lYWNoX3BpcGUoJmRhdGEtPmRpc3BsYXks IHBpcGUpIHsKPiA+ICsKPiA+ICsJCWlmIChpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQocGlwZSwg b3V0cHV0KSkgewo+ID4gKwkJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiA+ ICsJCQlkYXRhLT5waXBlID0gcGlwZTsKPiA+ICsJCQlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7Cj4g PiArCQkJdXBkYXRlX2Rpc3BsYXkoZGF0YSwgdGVzdF90eXBlKTsKPiA+ICsJCX0KPiA+ICsJfQo+ ID4gK30KPiA+ICsKPiA+ICtpZ3RfbWFpbgo+ID4gK3sKPiA+ICsJZGF0YV90IGRhdGEgPSB7fTsK PiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArCWRybU1vZGVSZXMgKnJlczsKPiA+ICsJ ZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gKwlpbnQgaSwgdGVzdF9jb25uX2NudCwg dGVzdF9jbnQ7Cj4gPiArCWludCB0ZXN0c1tdID0ge0RSTV9NT0RFX0NPTk5FQ1RPUl9lRFAsIERS TV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydH07Cj4gPiArCj4gPiArCWlndF9maXh0dXJlIHsK PiA+ICsJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5ZKTsK PiA+ICsJCWRhdGEuZGVidWdmc19mZCA9IGlndF9kZWJ1Z2ZzX2RpcihkYXRhLmRybV9mZCk7Cj4g PiArCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPiArCQlpZ3RfZGlzcGxheV9y ZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiA+ICsJCS8vaWd0X2Rpc3BsYXlf cmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7Cj4gPiArCQlpZ3RfcmVxdWlyZShyZXMgPSBk cm1Nb2RlR2V0UmVzb3VyY2VzKGRhdGEuZHJtX2ZkKSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZm9y ICh0ZXN0X2NudCA9IDA7IHRlc3RfY250IDwgQVJSQVlfU0laRSh0ZXN0cyk7IHRlc3RfY250Kysp IHsKPiA+ICsKPiA+ICsJCWlndF9zdWJ0ZXN0X2YoImJhc2ljLWRzYy1lbmFibGUtJXMiLAo+ID4g KwkJCSAgICAgIGttc3Rlc3RfY29ubmVjdG9yX3R5cGVfc3RyKHRlc3RzW3Rlc3RfY250XSkpIHsK PiA+ICsJCQl0ZXN0X2Nvbm5fY250ID0gMDsKPiA+ICsJCQlmb3IgKGkgPSAwOyBpIDwgcmVzLT5j b3VudF9jb25uZWN0b3JzOyBpKyspIHsKPiA+ICsJCQkJY29ubmVjdG9yID0gZHJtTW9kZUdldENv bm5lY3RvckN1cnJlbnQoZGF0YS5kcm1fZmQsCj4gPiArCQkJCQkJCQkgICAgICAgcmVzLT5jb25u ZWN0b3JzW2ldKTsKPiA+ICsJCQkJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiAhPSBEUk1fTU9E RV9DT05ORUNURUQgfHwKPiA+ICsJCQkJICAgIGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0K PiA+ICsJCQkJICAgIHRlc3RzW3Rlc3RfY250XSkKPiA+ICsJCQkJCWNvbnRpbnVlOwo+ID4gKwkJ CQl0ZXN0X2Nvbm5fY250Kys7Cj4gPiArCQkJCW91dHB1dCA9IGlndF9vdXRwdXRfZnJvbV9jb25u ZWN0b3IoJmRhdGEuZGlzcGxheSwgY29ubmVjdG9yKTsKPiA+ICsJCQkJc3ByaW50ZihkYXRhLmNv bm5fbmFtZSwgIiVzLSVkIiwKPiA+ICsJCQkJCWttc3Rlc3RfY29ubmVjdG9yX3R5cGVfc3RyKGNv bm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUpLAo+ID4gKwkJCQkJdGVzdF9jb25uX2NudCk7Cj4gPiAr CQkJCWlmKCFpc19kcF9kc2Nfc3VwcG9ydGVkKCZkYXRhKSkKPiA+ICsJCQkJCWlndF9kZWJ1Zygi RFNDIG5vdCBzdXBwb3J0ZWQgb24gY29ubmVjdG9yICVzIFxuIiwKPiA+ICsJCQkJCQkgIGRhdGEu Y29ubl9uYW1lKTsKPiA+ICsJCQkJCWJyZWFrOwo+IAo+IAo+IFRoaXMgc2hvdWxkIHJhdGhlciBi ZSAnY29udGludWUnLgoKWWVzIGRlZmluaXRlbHksIHRoaXMgc2hvdWxkIGJlIGNvbnRpbnVlIHNv IHRoYXQgaXQgY2FuIHN0aWxsIGdvIGFoZWFkIGFuZCB0ZXN0IG90aGVyIGNvbm5lY3RvcnMuCkkg dGhvdWdodCBBbnVzaGEgdGVzdGVkIHRoaXMsIHNvcnJ5IGFib3V0IHRoYXQuIApJIHdpbGwgZml4 IHRoaXMgaW4gbXkgbmV4dCBzcGluIGFuZCB0aGFua3MgYWdhaW4gZm9yIGJlaW5nIHNvIHBhdGll bnQgd2l0aCB0aGUgcmV2aWV3cy4KCj4gCj4gCj4gPiArCQkJCWlmIChjb25uZWN0b3ItPmNvbm5l Y3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkKPiA+ICsJCQkJCWln dF9yZXF1aXJlX2YoaXNfZHBfZmVjX3N1cHBvcnRlZCgmZGF0YSksCj4gPiArCQkJCQkJICAgICAg IkRTQyBjYW5ub3QgYmUgZW5hYmxlZCB3aXRob3V0IEZFQyBvbiAlc1xuIiwKPiA+ICsJCQkJCQkg ICAgICBkYXRhLmNvbm5fbmFtZSk7CgpUaGlzIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIHRvIGlm ICghaXNfZHBfZmVjX3N1cHBvcnRlZCgpKSBjb250aW51ZTsKYXMgd2VsbAoKPiA+ICsJCQkJcnVu X3Rlc3QoJmRhdGEsIG91dHB1dCwgdGVzdF9iYXNpY19kc2NfZW5hYmxlKTsKPiAKPiAKPiAuLi5h bmQgaW4gZmFjdCwgdGhlIHRlc3Qgc2hvdWxkIGNoZWNrIGlmIGl0IGdvdCBpbnRvIHRlc3Rpbmcg YW55Cj4gY29ubmVjdG9ycy4gQXMgaW4sIGFjdHVhbGx5IGVuZGVkIHVwIGNhbGxpbmcgcnVuX3Rl c3QoKS4KPiAKPiAKPiAKPiA+ICsJCQl9Cj4gPiArCQkJdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiA+ ICsJCQlpZ3Rfc2tpcF9vbih0ZXN0X2Nvbm5fY250ID09IDApOwoKWWVzIEkgaGFkIGFkZGVkIHRo ZSBpZ3Rfc2tpcF9vbiBiYXNlZCBvbiB5b3VyIHByZXZpb3VzIGNvbW1lbnQgdG8gbWFrZSBzdXJl IHRoZSB0ZXN0IGlzIHNraXBwZWQgaWYgbm8gY29ubmVjdG9ycyBhcmUgZm91bmQKYW5kIGl0IGRv ZXMgbm90IGdpdmUgYSBmYWxzZSBwb3NpdGl2ZSBwYXNzIGZvciB0aGUgdGVzdC4KU08gdGhpcyBz aG91bGQgc3RpbGwgYmUgZ29vZCByaWdodD8KCkFudXNoYSwgSSB3aWxsIHJlc3BpbiB0aGlzIHZl cnNpb24gYW5kIHNlbmQgaXQgb3V0LgoKUmVnYXJkcwpNYW5hc2kKCj4gCj4gQW5kIHRoaXMgc2tp cF9vbiBpcyBtZWFudCB0byBjaGVjayBleGFjdGx5IHRoYXQuIFRoZSBwb2ludCBvZiB0aGlzIGlz Cj4gdG8gcHJvZHVjZSBhIFNLSVAgcmVzdWx0IGlmIG5vIERQIGNvbm5lY3RvcnMgd2VyZSBEU0Mg Y2FwYWJsZS4KPiAKPiBNYXliZSBpbmNyZW1lbnQgdGVzdF9jb25uX2NudCBpbnN0ZWFkIHJpZ2h0 IGJlZm9yZSBjYWxsaW5nIHJ1bl90ZXN0LAo+IGFuZCB1c2UgY29ubmVjdG9yLT5jb25uZWN0b3Jf dHlwZV9pZCBpbnN0ZWFkIG9mIHRlc3RfY29ubl9jbnQgdG8KPiBnZW5lcmF0ZSBkYXRhLmNvbm5f bmFtZT8KPiAKPiAKPiAtLSAKPiBQZXRyaSBMYXR2YWxhCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldgo=