From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v2 15/16] drm/i915/gen9: Reject display updates that exceed wm limitations Date: Thu, 21 Apr 2016 16:14:45 -0700 Message-ID: <20160421231445.GE14697@intel.com> References: <1461119183-14267-1-git-send-email-matthew.d.roper@intel.com> <1461119183-14267-16-git-send-email-matthew.d.roper@intel.com> <1461275392.32321.2.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id B13446E302 for ; Thu, 21 Apr 2016 23:14:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1461275392.32321.2.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMjEsIDIwMTYgYXQgMDU6NDk6NTJQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBhIFQ1NjAsIHRoaXMgZW5kcyB1cCByZWplY3RpbmcgdmFsaWQgd2F0ZXJtYXJrIGNv bmZpZ3VyYXRpb25zIHNvIHRoZSBpbnRlcm5hbAo+IGRpc3BsYXkgZG9lc24ndCBzd2l0Y2ggZnJv bSBmYmNvbiB0byBYIHByb3Blcmx5OgoKSG1tLiAgV2UgY2FuIGxlYXZlIHRoaXMgcGF0Y2ggb3V0 IG9mIHRoZSBzZXJpZXMgYW5kIHN0aWxsIGhhdmUgYSBmaXggZm9yCnRoZSBXQVJOX09OKCF3bV9j aGFuZ2VkKSwgYnV0IG9uZSBvZiB0aGUgbWFpbiBnb2FscyB3YXMgdG8gaWRlbnRpZnkgYW5kCnJl amVjdCBjb25maWd1cmF0aW9ucyB0aGF0IHRoZSBwbGF0Zm9ybSBpcyB0cnVseSBpbmNhcGFibGUg b2YgaGFuZGxpbmcuCkknbSBzdGlsbCBnb2luZyB0byBpbmNsdWRlIHRoaXMgcGF0Y2ggaW4gbXkg bmV4dCBzcGluIG9mIHRoZSBzZXJpZXMgb24KdGhlIG1haWxpbmcgbGlzdCwgYnV0IHdlIGNhbiBq dXN0IG9taXQgaXQgZHVyaW5nIG1lcmdlIGlmIHdlIG5lZWQgbW9yZQp0aW1lIHRvIGZpZ3VyZSBv dXQgd2h5IHlvdXIgY29uZmlndXJhdGlvbiBpcyBiZWluZyByZWplY3RlZC4gIEknbGwgYWxzbwph ZGQgYW4gZXh0cmEgRFJNX0RFQlVHX0tNUyBsaW5lIHRvIHRoaXMgcGF0Y2ggdG8gZ2l2ZSB1cyBt b3JlIGluc2lnaHQKaW50byB3aGF0IHRoZSBmaW5hbCBjYWxjdWxhdGVkIHZhbHVlcyB3ZXJlIGFu ZCBob3cgZmFyIG91dCBvZiBib3VuZHMKdGhleSB3ZXJlLgoKSWYgeW91IGRyb3AgdGhpcyBwYXRj aCBidXQga2VlcCB0aGUgcmVzdCBvZiB0aGUgc2VyaWVzLCBkb2VzIHRoZSBzeXN0ZW0Kc3RpbGwg b3BlcmF0ZSBwcm9wZXJseSB3aGVuIGl0IGdvZXMgaW50byBYPyAgSS5lLiwgbm8gdW5kZXJydW5z IHJlcG9ydGVkCmFuZCBubyBmbGlja2VyaW5nL2NvcnJ1cHRpb24gb24gc2NyZWVuPwoKQ291bGQg eW91IHByb3ZpZGUgdGhlIGNvbnRlbnRzIG9mCi9zeXMva2VybmVsL2RlYnVnL2RyaS8wL2k5MTVf cHJpX3dtX2xhdGVuY3kgPyAgSSd2ZSBoZWFyZCB0aGF0IHRoZXJlIGFyZQpzb21lIFNLTCBwY29k ZSAoQklPUykgdmVyc2lvbnMgZmxvYXRpbmcgYXJvdW5kIHRoYXQgZ2l2ZSBiYWQgbWVtb3J5Cmxh dGVuY3kgdmFsdWVzIHdoaWNoIHJlc3VsdCBpbiB1cyBjYWxjdWxhdGluZyB0aGUgd3Jvbmcgd2F0 ZXJtYXJrIHZhbHVlcwppbiB0aGUgZW5kOyBpdCB3b3VsZCBiZSBnb29kIHRvIHNlZSBpZiB0aGF0 J3MgYSBjb250cmlidXRpbmcgZmFjdG9yCmhlcmUuCgpBbHNvLCBJIGNhbiBzZWUgeW91ciBlRFAg cGFuZWwgaW4gdGhlIGxvZyBiZWxvdzsgaXMgdGhhdCB5b3VyIG9ubHkKZGlzcGxheSBvciBkbyB5 b3UgYWxzbyBoYXZlIGFuIGV4dGVybmFsIGRpc3BsYXkgYXR0YWNoZWQ/CgoKCk1hdHQKCj4gCj4g W8KgwqDCoMKgNS43NjczODNdIFtkcm06aW50ZWxmYl9jcmVhdGVdIHJlLXVzaW5nIEJJT1MgZmIK PiBbwqDCoMKgwqA1Ljc2NzQ0NF0gW2RybV0gSW5pdGlhbGl6ZWQgaTkxNSAxLjYuMCAyMDE2MDQx MSBmb3IgMDAwMDowMDowMi4wIG9uIG1pbm9yIDAKPiBbwqDCoMKgwqA1Ljc2NzQ0OV0gW2RybTpp bnRlbGZiX2NyZWF0ZV0gYWxsb2NhdGVkIDE5MjB4MTA4MCBmYjogMHgwMDAwMDAwMCwgYm8gZmZm Zjg4MDIxMzc0YzAwMAo+IFvCoMKgwqDCoDUuNzY3NzYwXSBmYmNvbjogaW50ZWxkcm1mYiAoZmIw KSBpcyBwcmltYXJ5IGRldmljZQo+IFvCoMKgwqDCoDUuNzY4MTQ3XSBbZHJtOmNvbm5lY3RlZF9z aW5rX2NvbXB1dGVfYnBwXSBbQ09OTkVDVE9SOjM3OmVEUC0xXSBjaGVja2luZyBmb3Igc2luayBi cHAgY29uc3RyYWlucwo+IFvCoMKgwqDCoDUuNzY4MTUwXSBbZHJtOmNvbm5lY3RlZF9zaW5rX2Nv bXB1dGVfYnBwXSBjbGFtcGluZyBkaXNwbGF5IGJwcCAod2FzIDM2KSB0byBFRElEIHJlcG9ydGVk IG1heCBvZiAxOAo+IFvCoMKgwqDCoDUuNzY4MTU5XSBbZHJtOnNrbF91cGRhdGVfc2NhbGVyX2Ny dGNdIFVwZGF0aW5nIHNjYWxlciBmb3IgW0NSVEM6MjZdIHNjYWxlcl91c2VyIGluZGV4IDAuMzEK PiBbwqDCoMKgwqA1Ljc2ODE2Ml0gW2RybTpza2xfdXBkYXRlX3NjYWxlcl0gc2NhbGVyX3VzZXIg aW5kZXggMC4zMTogU3RhZ2VkIGZyZWVpbmcgc2NhbGVyIGlkIDAgc2NhbGVyX3VzZXJzID0gMHgw Cj4gW8KgwqDCoMKgNS43NjgxNjZdIFtkcm06aW50ZWxfZHBfY29tcHV0ZV9jb25maWddIERQIGxp bmsgY29tcHV0YXRpb24gd2l0aCBtYXggbGFuZSBjb3VudCAyIG1heCBidyAyNzAwMDAgcGl4ZWwg Y2xvY2sgMTQyOTAwS0h6Cj4gW8KgwqDCoMKgNS43NjgxNzJdIFtkcm06aW50ZWxfZHBfY29tcHV0 ZV9jb25maWddIERQIGxpbmsgYncgMGEgcmF0ZSBzZWxlY3QgMDAgbGFuZSBjb3VudCAyIGNsb2Nr IDI3MDAwMCBicHAgMTgKPiBbwqDCoMKgwqA1Ljc2ODE3NF0gW2RybTppbnRlbF9kcF9jb21wdXRl X2NvbmZpZ10gRFAgbGluayBidyByZXF1aXJlZCAyNTcyMjAgYXZhaWxhYmxlIDQzMjAwMAo+IFvC oMKgwqDCoDUuNzY4MTgwXSBbZHJtOmludGVsX21vZGVzZXRfcGlwZV9jb25maWddIGh3IG1heCBi cHA6IDM2LCBwaXBlIGJwcDogMTgsIGRpdGhlcmluZzogMQo+IFvCoMKgwqDCoDUuNzY4MTkzXSBb ZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIFtDUlRDOjI2XVttb2Rlc2V0XSBjb25maWcgZmZm Zjg4MDBkNWMxMTAwMCBmb3IgcGlwZSBBCj4gW8KgwqDCoMKgNS43NjgyMDBdIFtkcm06aW50ZWxf ZHVtcF9waXBlX2NvbmZpZ10gY3B1X3RyYW5zY29kZXI6IEVEUAo+IFvCoMKgwqDCoDUuNzY4MjAy XSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIHBpcGUgYnBwOiAxOCwgZGl0aGVyaW5nOiAx Cj4gW8KgwqDCoMKgNS43NjgyMDZdIFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gZmRpL3Bj aDogMCwgbGFuZXM6IDAsIGdtY2hfbTogMCwgZ21jaF9uOiAwLCBsaW5rX206IDAsIGxpbmtfbjog MCwgdHU6IDAKPiBbwqDCoMKgwqA1Ljc2ODIxMV0gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmln XSBkcDogMSwgbGFuZXM6IDIsIGdtY2hfbTogNDk5NDcxNywgZ21jaF9uOiA4Mzg4NjA4LCBsaW5r X206IDI3NzQ4NCwgbGlua19uOiA1MjQyODgsIHR1OiA2NAo+IFvCoMKgwqDCoDUuNzY4MjE1XSBb ZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIGRwOiAxLCBsYW5lczogMiwgZ21jaF9tMjogMCwg Z21jaF9uMjogMCwgbGlua19tMjogMCwgbGlua19uMjogMCwgdHUyOiAwCj4gW8KgwqDCoMKgNS43 NjgyMTddIFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gYXVkaW86IDAsIGluZm9mcmFtZXM6 IDAKPiBbwqDCoMKgwqA1Ljc2ODIxOV0gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSByZXF1 ZXN0ZWQgbW9kZToKPiBbwqDCoMKgwqA1Ljc2ODIyNl0gW2RybTpkcm1fbW9kZV9kZWJ1Z19wcmlu dG1vZGVsaW5lXSBNb2RlbGluZSAwOiIxOTIweDEwODAiIDYwIDE0MjkwMCAxOTIwIDE5NjggMjAw MCAyMDgyIDEwODAgMTA4MiAxMDg3IDExNDQgMHg0OCAweGEKPiBbwqDCoMKgwqA1Ljc2ODIyOF0g W2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSBhZGp1c3RlZCBtb2RlOgo+IFvCoMKgwqDCoDUu NzY4MjM0XSBbZHJtOmRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxpbmVdIE1vZGVsaW5lIDA6IjE5 MjB4MTA4MCIgNjAgMTQyOTAwIDE5MjAgMTk2OCAyMDAwIDIwODIgMTA4MCAxMDgyIDEwODcgMTE0 NCAweDQ4IDB4YQo+IFvCoMKgwqDCoDUuNzY4MjM5XSBbZHJtOmludGVsX2R1bXBfY3J0Y190aW1p bmdzXSBjcnRjIHRpbWluZ3M6IDE0MjkwMCAxOTIwIDE5NjggMjAwMCAyMDgyIDEwODAgMTA4MiAx MDg3IDExNDQsIHR5cGU6IDB4NDggZmxhZ3M6IDB4YQo+IFvCoMKgwqDCoDUuNzY4MjQxXSBbZHJt OmludGVsX2R1bXBfcGlwZV9jb25maWddIHBvcnQgY2xvY2s6IDI3MDAwMAo+IFvCoMKgwqDCoDUu NzY4MjQ0XSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIHBpcGUgc3JjIHNpemU6IDE5MjB4 MTA4MAo+IFvCoMKgwqDCoDUuNzY4MjQ3XSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIG51 bV9zY2FsZXJzOiAyLCBzY2FsZXJfdXNlcnM6IDB4MCwgc2NhbGVyX2lkOiAtMQo+IFvCoMKgwqDC oDUuNzY4MjUxXSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIGdtY2ggcGZpdDogY29udHJv bDogMHgwMDAwMDAwMCwgcmF0aW9zOiAweDAwMDAwMDAwLCBsdmRzIGJvcmRlcjogMHgwMDAwMDAw MAo+IFvCoMKgwqDCoDUuNzY4MjU0XSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIHBjaCBw Zml0OiBwb3M6IDB4MDAwMDAwMDAsIHNpemU6IDB4MDAwMDAwMDAsIGRpc2FibGVkCj4gW8KgwqDC oMKgNS43NjgyNTZdIFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gaXBzOiAwCj4gW8KgwqDC oMKgNS43NjgyNThdIFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gZG91YmxlIHdpZGU6IDAK PiBbwqDCoMKgwqA1Ljc2ODI2M10gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSBkZGlfcGxs X3NlbDogMTsgZHBsbF9od19zdGF0ZTogY3RybDE6IDB4MTMsIGNmZ2NyMTogMHgwLCBjZmdjcjI6 IDB4MAo+IFvCoMKgwqDCoDUuNzY4MjY2XSBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddIHBs YW5lcyBvbiB0aGlzIGNydGMKPiBbwqDCoMKgwqA1Ljc2ODI3N10gW2RybTppbnRlbF9kdW1wX3Bp cGVfY29uZmlnXSBTVEFOREFSRCBQTEFORToyMyBwbGFuZTogMC4wIGlkeDogMCBlbmFibGVkCj4g W8KgwqDCoMKgNS43NjgyODRdIFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ13CoAlGQjo1OCwg ZmIgPSAxOTIweDEwODAgZm9ybWF0ID0gMHgzNDMyNTI1OAo+IFvCoMKgwqDCoDUuNzY4Mjg1XSBb ZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWddwqAJc2NhbGVyOi0xIHNyYyAoMCwgMCkgMTkyMHgx MDgwIGRzdCAoMCwgMCkgMTkyMHgxMDgwCj4gW8KgwqDCoMKgNS43NjgyOTBdIFtkcm06aW50ZWxf ZHVtcF9waXBlX2NvbmZpZ10gQ1VSU09SIFBMQU5FOjI1IHBsYW5lOiAwLjEgaWR4OiAxIGRpc2Fi bGVkLCBzY2FsZXJfaWQgPSAtMQo+IFvCoMKgwqDCoDUuNzY4Mjk1XSBbZHJtOmludGVsX2R1bXBf cGlwZV9jb25maWddIFNUQU5EQVJEIFBMQU5FOjI3IHBsYW5lOiAwLjEgaWR4OiAyIGRpc2FibGVk LCBzY2FsZXJfaWQgPSAtMQo+IFvCoMKgwqDCoDUuNzY4MzA5XSBbZHJtOnNrbF91cGRhdGVfc2Nh bGVyX3BsYW5lXSBVcGRhdGluZyBzY2FsZXIgZm9yIFtQTEFORToyM10gc2NhbGVyX3VzZXIgaW5k ZXggMC4wCj4gW8KgwqDCoMKgNS43NjgzMTldIFtkcm06aW50ZWxfZmluZF9zaGFyZWRfZHBsbF0g Q1JUQzoyNiBhbGxvY2F0ZWQgRFBMTCAwCj4gW8KgwqDCoMKgNS43NjgzMjNdIFtkcm06aW50ZWxf cmVmZXJlbmNlX3NoYXJlZF9kcGxsXSB1c2luZyBEUExMIDAgZm9yIHBpcGUgQQo+IFvCoMKgwqDC oDUuNzY4MzI3XSBbZHJtOnNrbF91cGRhdGVfc2NhbGVyX2NydGNdIFVwZGF0aW5nIHNjYWxlciBm b3IgW0NSVEM6MjZdIHNjYWxlcl91c2VyIGluZGV4IDAuMzEKPiBbwqDCoMKgwqA1Ljc2ODMzOV0g W2RybTpza2xfY29tcHV0ZV9wbGFuZV93bV0gUmVxdWVzdGVkIGRpc3BsYXkgY29uZmlndXJhdGlv biBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnMKPiBbwqDCoMKgwqA1Ljc2ODM1 OV0gW2RybTpkcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZlbnRdwqAKPiBbwqDCoMKgwqA1Ljc2ODM2 M10gW2RybTpkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXNdIFtDT05ORUNU T1I6Mzc6ZURQLTFdCj4gW8KgwqDCoMKgNS43NjgzNjddIFtkcm06aW50ZWxfZHBfZGV0ZWN0XSBb Q09OTkVDVE9SOjM3OmVEUC0xXQo+IFvCoMKgwqDCoDUuNzY4Nzg2XSBbZHJtOmludGVsX2RwX3By b2JlX291aV0gU2luayBPVUk6IDAwMjJiOQo+IFvCoMKgwqDCoDUuNzY5MTc3XSBbZHJtOmludGVs X2RwX3Byb2JlX291aV0gQnJhbmNoIE9VSTogNDQ0NjE1Cj4gW8KgwqDCoMKgNS43Njk2MDRdIFtk cm06ZHJtX2VkaWRfdG9fZWxkXSBFTEQ6IG5vIENFQSBFeHRlbnNpb24gZm91bmQKPiBbwqDCoMKg wqA1Ljc2OTYxMV0gW2RybTpkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXNd IFtDT05ORUNUT1I6Mzc6ZURQLTFdIHByb2JlZCBtb2RlcyA6Cj4gW8KgwqDCoMKgNS43Njk2MThd IFtkcm06ZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZV0gTW9kZWxpbmUgMzg6IjE5MjB4MTA4 MCIgNjAgMTQyOTAwIDE5MjAgMTk2OCAyMDAwIDIwODIgMTA4MCAxMDgyIDEwODcgMTE0NCAweDQ4 IDB4YQo+IFvCoMKgwqDCoDUuNzY5NjIxXSBbZHJtOmRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nv bm5lY3Rvcl9tb2Rlc10gW0NPTk5FQ1RPUjo0NTpEUC0xXQo+IFvCoMKgwqDCoDUuNzY5NjI0XSBb ZHJtOmludGVsX2RwX2RldGVjdF0gW0NPTk5FQ1RPUjo0NTpEUC0xXQo+IFvCoMKgwqDCoDUuNzY5 NjI4XSBbZHJtOmludGVsX3Bvd2VyX3dlbGxfZW5hYmxlXSBlbmFibGluZyBwb3dlciB3ZWxsIDIK PiBbwqDCoMKgwqA1Ljc2OTYzM10gW2RybTpza2xfc2V0X3Bvd2VyX3dlbGxdIEVuYWJsaW5nIHBv d2VyIHdlbGwgMgo+IFvCoMKgwqDCoDUuNzY5NjU5XSBbZHJtOmludGVsX3Bvd2VyX3dlbGxfZGlz YWJsZV0gZGlzYWJsaW5nIHBvd2VyIHdlbGwgMgo+IFvCoMKgwqDCoDUuNzY5NjcyXSBbZHJtOnNr bF9zZXRfcG93ZXJfd2VsbF0gRGlzYWJsaW5nIHBvd2VyIHdlbGwgMgo+IAo+IE9uIFR1ZSwgMjAx Ni0wNC0xOSBhdCAxOToyNiAtMDcwMCwgTWF0dCBSb3BlciB3cm90ZToKPiA+IElmIHdlIGNhbid0 IGZpbmQgYW55IHZhbGlkIGxldmVsIDAgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgdGhlIHJlcXVlc3Rl ZAo+ID4gYXRvbWljIHRyYW5zYWN0aW9uLCByZWplY3QgdGhlIGNvbmZpZ3VyYXRpb24gYmVmb3Jl IHdlIHRyeSB0byBzdGFydAo+ID4gcHJvZ3JhbW1pbmcgdGhlIGhhcmR3YXJlLgo+ID4gCj4gPiBT aWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4g UmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8 IDEyICsrKysrKysrKysrLQo+ID4gwqAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGluZGV4IDU5 ZDQ1NzQuLjk2ZmZkNTQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBAQCAt MzMwOSw3ICszMzA5LDE3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qg c3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCj4gPiDCoAlpZiAo cmVzX2Jsb2NrcyA+PSBkZGJfYWxsb2NhdGlvbiB8fCByZXNfbGluZXMgPiAzMSkgewo+ID4gwqAJ CSplbmFibGVkID0gZmFsc2U7Cj4gPiAtCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJCS8qCj4gPiAr CQnCoCogSWYgdGhlcmUgYXJlIG5vIHZhbGlkIGxldmVsIDAgd2F0ZXJtYXJrcywgdGhlbiB3ZSBj YW4ndAo+ID4gKwkJwqAqIHN1cHBvcnQgdGhpcyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCj4gPiAr CQnCoCovCj4gPiArCQlpZiAobGV2ZWwpIHsKPiA+ICsJCQlyZXR1cm4gMDsKPiA+ICsJCX0gZWxz ZSB7Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3BsYXkgY29uZmlndXJhdGlv bgo+ID4gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKPiA+ICsJCQly ZXR1cm4gLUVJTlZBTDsKPiA+ICsJCX0KPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAkqb3V0X2Jsb2Nr cyA9IHJlc19ibG9ja3M7CgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVl cgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24K KDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==