From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: Funky new vblank counter regressions in Linux 4.4-rc1 Date: Fri, 20 Nov 2015 17:34:35 +0200 Message-ID: <20151120153435.GR4437@intel.com> References: <564E0AF4.3050406@gmail.com> <20151119182051.GU4437@intel.com> <564E1F18.5070508@gmail.com> <20151119194557.GB4437@intel.com> <564F3B42.5050803@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 99DE46E66F for ; Mon, 30 Nov 2015 12:13:47 -0800 (PST) Resent-Message-ID: <20151130201319.GE4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org Content-Disposition: inline In-Reply-To: <564F3B42.5050803@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mario Kleiner Cc: Michel =?iso-8859-1?Q?D=E4nzer?= List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMjAsIDIwMTUgYXQgMDQ6MjQ6NTBQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3 cm90ZToKPiAKPiAKPiBPbiAxMS8xOS8yMDE1IDA4OjQ1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBUaHUsIE5vdiAxOSwgMjAxNSBhdCAwODoxMjoyNFBNICswMTAwLCBNYXJpbyBL bGVpbmVyIHdyb3RlOgo+ID4+IE9uIDExLzE5LzIwMTUgMDc6MjAgUE0sIFZpbGxlIFN5cmrDpGzD pCB3cm90ZToKPiA+Pj4gT24gVGh1LCBOb3YgMTksIDIwMTUgYXQgMDY6NDY6MjhQTSArMDEwMCwg TWFyaW8gS2xlaW5lciB3cm90ZToKPiA+Pj4+IEhpIEFsZXggYW5kIE1pY2hlbCBhbmQgVmlsbGUs Cj4gPj4+Pgo+ID4+Pj4gaXQncyAiZml4IHZibGFuayBzdHVmZiIgdGltZSBhZ2FpbiA7LSkKPiA+ Pj4+Cj4gPj4+PiBWaWxsZSdzIGNoYW5nZXMgdG8gdGhlIERSTSdzIGRybV9oYW5kbGVfdmJsYW5r KCkgLwo+ID4+Pj4gZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBjb2RlIGluIExpbnV4IDQuNCBu b3Qgb25seSBtYWRlIHRoYXQgY29kZSBtb3JlCj4gPj4+PiBlbGVnYW50LCBidXQgYWxzbyByZW1v dmVkIHRoZSByb2J1c3RuZXNzIGFnYWluc3QgdGhlIHZibGFuayBpcnEgcXVpcmtzCj4gPj4+PiBp biBBTUQgaHcgYW5kIHNpbWlsYXIgaGFyZHdhcmUuIFNvIG5vdyBpIGdldCB0b25zIG9mIG9mZi1i eS1vbmUgZXJyb3JzIGFuZAo+ID4+Pj4KPiA+Pj4+ICJbICAgNDMyLjM0NV0gKFdXKSBSQURFT04o MSk6IHJhZGVvbl9kcmkyX2ZsaXBfZXZlbnRfaGFuZGxlcjogUGFnZWZsaXAKPiA+Pj4+IGNvbXBs ZXRpb24gZXZlbnQgaGFzIGltcG9zc2libGUgbXNjIDI0ODAzIDwgdGFyZ2V0X21zYyAyNDgwNCIg WE9yZwo+ID4+Pj4gbWVzc2FnZXMgZnJvbSB0aGF0IGtlcm5lbC4KPiA+Pj4KPiA+Pj4gQXJnaC4g U29ycnkgYWJvdXQgdGhhdC4KPiA+Pj4KPiA+Pgo+ID4+IE9uIHRoZSBwbHVzIHNpZGUsIHlvdXIg InZibGFuayB0aW1lc3RhbXAgZGVsdGFzIGFzIGZha2UgdmJsYW5rIGNvdW50ZXJzIgo+ID4+IGNv ZGUgc2VlbXMgdG8gd29yayBuaWNlbHkgb24gbm91dmVhdS1rbXMsIGFzIGZhciBhcyB0ZXN0aW5n IHdpdGggdGhyZWUKPiA+PiBOdmlkaWEncyB3ZW50IHNvIGZhciA6KS4gQW5kIGJvdGggSW50ZWwg Z3B1J3MgKEhEIElyb25sYWtlLCBhbmQKPiA+PiBJdnlicmlkZ2UpIGkgdGVzdGVkIGNoZWNrZWQg b3V0IG5pY2VseS4KPiA+Pgo+ID4+IEFuZCBhdCBsZWFzdCB0aGUgcmVjZW50IG52NTArIE5WaWRp YSBUZXNsYSBhbHNvIGhhdmUgMTYgYml0IHZibGFuawo+ID4+IGNvdW50ZXJzIHdoaWNoIHdlIGNv dWxkIGltcGxlbWVudCBpbiBub3V2ZWF1LCBtYXliZSB3aXRoIHRoZSBzYW1lCj4gPj4gdHJpY2tl cnkgdG8gYWxsb3cgbG9uZyB0cm91YmxlLWZyZWUgdmJsYW5rIG9mZiBwZXJpb2RzLCBob3BlZnVs bHkgdGhhdAo+ID4+IHdvdWxkIGFsc28gYXBwbHkgdG8gdGhlIFRlZ3JhLTQgYW5kIGxhdGVyIEtl cGxlciBiYXNlZCBwYXJ0cy4gVGVncmEtMwo+ID4+IHdpbGwgcHJvYmFibHkgYWxzbyB3b3JrLiBJ IHRoaW5rIGkgcmVhZCBpbiB0aGUgVGVncmEtMyBQUk0gdGhhdCB0aGUgc3luYwo+ID4+IHBvaW50 cyB0aGV5IHVzZSB0byBpbXBsZW1lbnQgdmJsYW5rIGNvdW50ZXJzIGRvIGluY3JlbWVudCBhdCBs ZWFkaW5nCj4gPj4gZWRnZSBvZiB2YmxhbmsuCj4gPj4KPiA+PiBUaGUgb25seSBwcm9ibGVtIHdl IG1heSBoYXZlIGlzIHRoYXQgc29tZSBvZiB0aGUgZW1iZWRkZWQgZ3B1cyBtYXkgbm90Cj4gPj4g aGF2ZSBjb21wbGlhbnQgdmJsYW5rIGNvdW50ZXJzIGFuZCB0aGV5IHByb2JhYmx5IGFsc28gbGFj ayB2YmxhbmsKPiA+PiB0aW1lc3RhbXBpbmcsIHNvIGl0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRv IHJhdGhlciBub3QgdXNlIHZibGFuawo+ID4+IGNvdW50ZXJzIGF0IGFsbCBpbiB0aG9zZSBkcml2 ZXJzIC0gcGF0Y2ggdGhlaXIga21zIGRyaXZlcnMgdG8KPiA+PiBtYXhfdmJsYW5rX2NvdW50ID0g MDsKPiA+Pgo+ID4+Pj4KPiA+Pj4+IE9uZSBvZiB0aGUgcmVhc29ucyBmb3IgdHJvdWJsZSBpcyB0 aGF0IEFNRCBodyBxdWlyayB3aGVyZSB0aGUgaHcgZmlyZXMKPiA+Pj4+IGFuIGV4dHJhIHZibGFu ayBpcnEgc2hvcnRseSBhZnRlciB2YmxhbmsgaXJxJ3MgZ2V0IGVuYWJsZWQsIG5vdAo+ID4+Pj4g c3luY2hyb25pemVkIHRvIHZibGFuaywgYnV0IHR5cGljYWxseSBpbiB0aGUgbWlkZGxlIG9mIGFj dGl2ZSBzY2Fub3V0LAo+ID4+Pj4gc28gd2UgZ2V0IGEgcmVkdW5kYW50IGNhbGwgdG8gZHJtX2hh bmRsZV92YmxhbmsgaW4gdGhlIG1pZGRsZSBvZiBzY2Fub3V0Lgo+ID4+Pgo+ID4+PiBJIHRoaW5r IHRoYXQgc2hvdWxkIGJlIGZpbmUgYXMgc3VjaC4gVGhlIGNvZGUgc2hvdWxkIGlnbm9yZSByZWR1 ZG50YW50Cj4gPj4+IHZibCBpcnFzLiBXZWxsLCBhc3N1bWluZyB5b3UgaGF2ZSBhIHJlbGlhYmxl IGh3IGNvdW50ZXIgb3IgeW91IHVzZSB0aGUKPiA+Pj4gdGltZXN0YW1wIGd1ZXNzdGltYXRlIG1l Y2hhbmlzbSBhbmQgeW91ciBzY2Fub3V0IHBvc2l0aW9uIGlzIHJlcG9ydGVkCj4gPj4+IGFjY3Vy YXRlbHkuIEJ1dCBJIGd1ZXNzIHlvdSBoYXZlIGEgYml0IG9mIHByb2JsZW0gd2l0aCBib3RoLgo+ ID4+Pgo+ID4+Cj4gPj4gVGhlIHByb2JsZW0gaXMgaSdsbCBuZWVkIHRvIHRyZWF0IGNhbGxzIHRv IHJhZGVvbiBrbXMKPiA+PiBkcml2ZXItPmdldF92YmxhbmtfY291bnRlciBkaWZmZXJlbnRseSwg ZGVwZW5kaW5nIGlmIHRoZSBmdW5jdGlvbiBnZXRzCj4gPj4gY2FsbGVkIGZyb20gdmJsYW5rIGly cSwgb3IgZnJvbSByZWd1bGFyIGNvZGUsIHNvIHRoYXQgaHcgcXVpcmsgdGhhdAo+ID4+IGNhdXNl cyBzcG9udGFuZW91cyBtaXNmaXJpbmcgb2YgdGhlIHZibGFuayBpcnEgaW4gdGhlIG1pZGRsZSBv ZiBzY2Fub3V0Cj4gPj4gd291bGQgY29uZnVzZSBteSBodyB2YmxhbmsgY291bnRlciBjb29raW5n IG1ldGhvZCB0byBwcm9kdWNlIGEgZmFrZSBodwo+ID4+IHZibGFuayBjb3VudGVyIGluY3JlbWVu dC4gVGhhdCdzIHdoeSBpIG1vdmVkIHRoZSBmaWx0ZXJpbmcgZm9yIHJlZHVuZGFudAo+ID4+IGly cXMgYmFzZWQgb24gdmJsYW5rIHRpbWVzdGFtcHMgaW4gZHJtX3ZibGFua191cGRhdGUoKSBhcm91 bmQgdG8gYWx3YXlzCj4gPj4gYXBwbHkuIE1ha2VzIHVzIHJvYnVzdCBhZ2FpbnN0IHRoYXQgdHlw ZSBvZiBodyBxdWlyayBpbiBnZW5lcmFsIGFuZAo+ID4+IG1ha2VzIGxpZmUgZm9yIHRoZSB2Ymxh bmsgY291bnRlciBjb29raW5nIHNvIG11Y2ggZWFzaWVyLgo+ID4+Cj4gPj4gSXQncyBhIGJlYXV0 aWZ1bCBjb2xsYWJvcmF0aW9uIG9mIGRpZmZlcmVudCBodyBidWdzIHRvIG1ha2UgdGhpbmdzCj4g Pj4gaW50ZXJlc3RpbmcgOikKPiA+Pgo+ID4+Pj4KPiA+Pj4+IFRvIGZpeCB0aGF0IGkgaGF2ZSBh IG1pbm9yIHBhdGNoIHRvIG1ha2UgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBhZ2Fpbgo+ID4+ Pj4gcm9idXN0IGFnYWluc3Qgc3VjaCByZWR1bmRhbnQgY2FsbHMsIHdoaWNoIGkgd2lsbCBzZW5k IG91dCBsYXRlciB0byB0aGUKPiA+Pj4+IG1haWxpbmcgbGlzdC4gRGlmZiBhdHRhY2hlZCBmb3Ig cmVmZXJlbmNlLgo+ID4+Pj4KPiA+Pj4+IFRoZSBzZWNvbmQgcXVpcmsgb2YgQU1EIGh3IGlzIHRo YXQgdGhlIHZibGFuayBpbnRlcnJ1cHQgZmlyZXMgYSBmZXcKPiA+Pj4+IHNjYW5saW5lcyBiZWZv cmUgc3RhcnQgb2YgdmJsYW5rLCBzbyBkcm1faGFuZGxlX3ZibGFuayAtPgo+ID4+Pj4gZHJtX3Vw ZGF0ZV92YmxhbmtfY291bnQoKSAtPiBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKCkg Z2V0cwo+ID4+Pj4gY2FsbGVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIHZibGFuayBmb3Igd2hp Y2ggdGhlIG5ldyB2YmxhbmsgY291bnQKPiA+Pj4+IHNob3VsZCBiZSBxdWVyaWVkLgo+ID4+Pgo+ ID4+PiBEb2VzIGl0IGZpcmUgdG9vIHNvb24sIG9yIGlzIHRoZSBzY2Fub3V0IHBvc2l0aW9uIHJl Z2lzdGVyIHZhbHVlKHMpCj4gPj4+IGp1c3Qgb2Zmc2V0IGJ5IGEgZmV3IGxpbmVzIHBlcmhhcHM/ Cj4gPj4+Cj4gPj4+IFdlIGhhdmUgdGhhdCB3aXRoIGk5MTUgYW5kIEkgc2ltcGx5IGZpeCB1cCB0 aGUgdmFsdWUgd2hlbiByZWFkaW5nIGl0Cj4gPj4+IG91dC4gRm9ydHVuYXRlbHkgZm9yIHVzIHRo ZSBvZmZzZXQgaXMgY29uc3RhbnQgKG9yIGF0IGxlYXN0IHNlZW1zIHRvCj4gPj4+IGJlKSBmb3Ig YSBnaXZlbiBwbGF0Zm9ybS9jb25uZWN0b3IgY29tYm8uCj4gPj4+Cj4gPj4KPiA+PiBJIHRoaW5r IHRoZXkgZmlyZSB0b28gc29vbiwgZnJvbSBhbGwgaSd2ZSBzZWVuIHNvIGZhciBvbiBhIGZldyBj YXJkcy4KPiA+Cj4gPiBUaGF0J3MgdW5mb3J0dW5hdGUuIEZpcmluZyBhIGJpdCB0b28gbGF0ZSB3 b3VsZCBiZSBwZXJmZWN0bHkgZmluZSBmb3IKPiA+IG1vc3QgdGhpbmdzLiBBbmQgdGhhdCdzIGFj dHVhbGx5IHdoYXQgaGFwcGVucyBvbiBvbGRlciBpbnRlbCBody4gRmlyaW5nCj4gPiB0b28gc29v biBvcGVucyB1cCBzb21lIG1vcmUgcmFjZXMsIGFzIGluIHlvdSBtYXkgaGF2ZSB0byB3YWl0IGEg Yml0Cj4gPiBtb3JlIGFmdGVyIGdldHRpbmcgd29rZW4gdXAgdG8gbWFrZSBzdXJlIHlvdSd2ZSBj cm9zc2VkIGludG8gdGhlCj4gPiBmcmVhbWUgeW91IHdlcmUgd2FpdGluZyBmb3IuCj4gPgo+ID4g QWxzbyBub3Qgc3VyZSBob3cgdG8gZGVhbCB3aXRoIHRoYXQgc29ydCBvZiB0aGluZyBpbiBhIHJl YXNvbmFibGUgd2F5IGluCj4gPiAuZ2V0X3ZibGFua190aW1lc3RhbXAoKS4gRFJNX0NBTExFRF9G Uk9NX1ZCTElSUSBnZXRzIHBhc3NlZCB0aGVyZSwgc28gaXQKPiA+IGNvdWxkIGZ1ZGdlIHRoaW5n cyBhIGJpdCB3aGVuIHRoZSBlYXJseSBpcnEgYXJyaXZlcywgYnV0IHRoZW4gaWYgc29tZW9uZQo+ ID4gY2FsbHMgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBhZnRlciB0aGUgaXJxIHdhcyBoYW5k bGVkIGJ1dCBiZWZvcmUKPiA+IHN0YXJ0IG9mIHZibGFuayB5b3UnbGwgZW5kIHVwIHdpdGggYSAt MSBkaWZmLgo+ID4KPiA+IE1heWJlIHNvbWV0aGluZyBsaWtlOgo+ID4gLmdldF9zY2Fub3V0X3Bv c2l0b24oKQo+ID4gewo+ID4gCXJlYWQgZnJhbWUgY291bnRlciBhbmQgc2NhbGluZSBwb3NpdGlv bgo+ID4KPiA+IAlpZiAoKGZsYWdzICYgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSB8fCBmcmFtZSA9 PSBsYXN0X2Z1ZGdlX2ZyYW1lKSAmJgo+ID4gCSAgICAgc2NhbmxpbmVfc2xpZ2h0bHlfYmVsb3df c3RhcnRfb2ZfdmJsYW5rKSkgewo+ID4gCQlsYXN0X2Z1ZGdlX2ZyYW1lID0gZnJhbWU7Cj4gPiAJ CXNjYW5saW5lID0gc3RhcnRfb2ZfdmJsYW5rOwo+ID4gCX0gZWxzZQo+ID4gCQlsYXN0X2Z1ZGdl X2ZyYW1lID0gZnJhbWUgLSAxOwo+ID4gfQo+ID4KPiA+IGNvdWxkIGJlIGRvbmUuIFNvIGl0IHdv dWxkIHByZXRlbmQgdGhlIHNjYW5saW5lIGhhcyBhbHJlYWR5IGNyb3NzZWQgaW50bwo+ID4gdGhl IHZibGFuayB3aGVuIHRoZSBpbnRlcnJ1cHQgYXJyaXZlcywgYW5kIGl0IHNob3VsZCBrZWVwIGRv aW5nIHRoYXQKPiA+IHVudGlsIHRoZSBmcmFtZSBjb3VudGVyIGluZGljYXRlcyB0aGF0IHlvdSBy ZWFsbHkgY3Jvc3NlZCB0aGVyZS4KPiA+Cj4gCj4gV2hhdCB3ZSBkbyBpbiByYWRlb24ta21zIGlz IHNpbWlsYXIuIElmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEgYW5kIHdlIAo+IGFyZSBubyBtb3Jl IHRoYW4gMSUgb2YgdGhlIGRpc3BsYXkgaGVpZ2h0IGF3YXkgZnJvbSBzdGFydCBvZiB2Ymxhbmsg d2UgCj4gZnVkZ2Ugc2Nhbm91dCBwb3NpdGlvbiBpbiBhIHdheSBzbyB0aGF0IHRoZSB0aW1lc3Rh bXAgZ2V0cyBjb21wdXRlZCBmb3IgCj4gdGhlIHNvb24tdG8tYmVnaW4gdmJsYW5rLCBub3QgdGhl IG9sZCBvbmUuCgpUaGUgcHJvYmxlbSB3aXRoIGJhc2luZyB0aGF0IGZ1ZGdpbmcgcHVyZWx5IG9u IERSTV9DQUxMRURfRlJPTV9WQkxJUlEgaXMKdGhhdCBpZiB5b3UgY2FsbCAuZ2V0X3NjYW5vdXRf cG9zaXRvbigpIGZyb20gYSBub24taXJxIGNvbnRleHQgYmV0d2Vlbgp0aGUgaXJxIGZpcmluZyBh bmQgc3RhcnQgb2YgdmJsYW5rLCB5b3UnbGwgdGhpbmsgeW91J3JlIHN0aWxsIGluIHRoZQpwcmV2 aW91cyBmcmFtZS4gSGVuY2UgbXkgc3VnZ2VzdGlvbiB0byBub3RlIGRvd24gdGhlIGZyYW1lIGNv dW50ZXIgd2hlbgpjYWxsZWQgZnJvbSB0aGUgaXJxLCBhbmQgdGhlbiBrZWVwIGRvaW5nIHRoZSBm dWRnaW5nIHVudGlsIHlvdSd2ZSB0cnVseQpjcm9zc2VkIHRoZSBzdGFydCBvZiB2YmxhbmsuCgo+ IEZvciB0aGUgdmJsYW5rIGNvdW50ZXIgCj4gY29va2luZyBhdG0uIGkgY2hlY2sgZm9yIGluX2ly cSgpLCBhc3N1bWluZyB0aGF0IG1lYW5zIHRoZSBzYW1lIGFzIAo+IERSTV9DQUxMRURfRlJPTV9W QkxJUlEsIGdpdmVuIHRoYXQgaXMgY3VycmVudGx5IHRoZSBvbmx5IGNhbGwgZnJvbSBhIGh3IAo+ IGlycSBwYXRoLCBhbmQgdGhlbiBpIHRlc3Qgc2Nhbm91dCBwb3NpdGlvbiBmb3IgCj4gbm8tbW9y ZS10aGFuLTEwLXNjYW5saW5lcy10by12YmxhbmssIHRvIGRlY2lkZSBpZiBpIGhhdmUgdG8gYnVt cCB0aGUgCj4gcmV0dXJuZWQgdmJsYW5rIGNvdW50LiBPbiB0aGUgc2FtcGxlIG9mIGdwdXMgaSB0 ZXN0ZWQgdGhlIHZibGFuayBpcnEgCj4gZmlyZWQgc29tZXdoZXJlIGJldHdlZW4gMiBhbmQgNCBz Y2FubGluZXMgdG9vIGVhcmx5LCBzbyAxMCBzY2FubGluZXMgCj4gbWFyZ2luIHNob3VsZCBiZSBv ay4gU28gaXQncyBub3QgZmlyaW5nIG11Y2ggdG9vIGVhcmx5LCBqdXN0IGEgbGl0dGxlIGJpdC4K PiAKPiA+Pgo+ID4+Pj4KPiA+Pj4+IFRoZSB0aGlyZCBwcm9ibGVtIGlzIHRoYXQgdGhlIERSTSB2 YmxhbmsgaGFuZGxpbmcgYWx3YXlzIGhhZCB0aGUKPiA+Pj4+IGFzc3VtcHRpb24gdGhhdCBoYXJk d2FyZSB2YmxhbmsgY291bnRlcnMgd291bGQgZXNzZW50aWFsbHkgaW5jcmVtZW50IGF0Cj4gPj4+ PiBsZWFkaW5nIGVkZ2Ugb2YgdmJsYW5rIC0gYmFzaWNhbGx5IGluIHN5bmMgd2l0aCB0aGUgZmly aW5nIG9mIHRoZSB2YmxhbmsKPiA+Pj4+IGlycSwgc28gdGhhdCBhIGh3IGNvdW50ZXIgcmVhZG91 dCBmcm9tIHdpdGhpbiB0aGUgdmJsYW5rIGlycSBoYW5kbGVyCj4gPj4+PiB3b3VsZCBhbHdheXMg ZGVsaXZlciB0aGUgbmV3IGluY3JlbWVudGVkIHZhbHVlLiBJZiB0aGlzIGFzc3VtcHRpb24gaXMK PiA+Pj4+IHZpb2xhdGVkIHRoZW4gdGhlIGNvdW50aW5nIGJ5IHVzZSBvZiB0aGUgaHcgY291bnRl ciBnZXRzIHVucmVsaWFibGUsCj4gPj4+PiBiZWNhdXNlIGRlcGVuZGluZyBvbiByYW5kb20gc21h bGwgZGVsYXlzIGluIGlycSBoYW5kbGluZyB0aGUgY29kZSBtYXkKPiA+Pj4+IGVuZCB1cCBzYW1w bGluZyB0aGUgaHcgY291bnRlciBwcmUtIG9yIHBvc3QtaW5jcmVtZW50LCBsZWFkaW5nIHRvCj4g Pj4+PiBpbmNvbnNpc3RlbnQgdXBkYXRpbmcgYW5kIGZ1bmt5IGJ1Z3MuIEl0IGp1c3Qgc28gaGFw cGVucyB0aGF0IEFNRAo+ID4+Pj4gaGFyZHdhcmUgZG9lc24ndCBpbmNyZW1lbnQgdGhlIGh3IGNv dW50ZXIgYXQgbGVhZGluZyBlZGdlIG9mIHZibGFuaywgc28KPiA+Pj4+IHN0dWZmIGZhbGxzIGFw YXJ0Lgo+ID4+Pj4KPiA+Pj4+IFNvIHRvIGZpeCB0aG9zZSB0d28gcHJvYmxlbXMgaSdtIHRpbmtl cmluZyB3aXRoIGNvb2tpbmcgdGhlIGh3IHZibGFuawo+ID4+Pj4gY291bnRlciB2YWx1ZSByZXR1 cm5lZCBieSByYWRlb25fZ2V0X3ZibGFua19jb3VudGVyX2ttcygpIHRvIG1ha2UgaXQKPiA+Pj4+ IGFwcGVhciBhcyBpZiB0aGUgY291bnRlciBpbmNyZW1lbnRlZCBhdCBsZWFkaW5nIGVkZ2Ugb2Yg dmJsYW5rIGluIHN5bmMKPiA+Pj4+IHdpdGggdmJsYW5rIGlycS4KPiA+Pj4KPiA+Pj4gWWVhaCwg SSBkbyB0aGF0IGluIGk5MTUgdG9vLiBXZWxsLCBvbiBzb21lIHBsYXRmb3JtcyB3aGVyZSB0aGUK PiA+Pj4gY291bnRlciBpbmNyZW1lbnRzIGF0IHRoZSBsZWFkaW5nIGVkZ2Ugb2YgYWN0aXZlLgo+ ID4+Pgo+ID4+Cj4gPj4gWWVwLiBJIHRoaW5rIHRoYXQncyBrZXkgdG8gbWFrZSB0aGUgdmJsYW5r IGluc3RhbnQgb2ZmIHN0dWZmIHdvcmsgcmVsaWFibHkuCj4gPgo+ID4gSSB0aGluayBpdCBzaG91 bGQgd29yayBPSyB3aXRoIHRoZSB0aW1lc3RhbXAgYmFzZWQgc3R1ZmYgdG9vLCBhc3N1bWluZwo+ ID4geW91IGhhdmUgYWNjdXJhdGUgc2Nhbm91dCBwb3NpdGlvbiByZXBvcnRpbmcuIFNvIGhhdmlu ZyBhIHJlbGlhYmxlIGh3Cj4gPiBjb3VudGVyIHNob3VsZG4ndCBiZSBhIHJlcXVpcmVtZW50IGZv ciB0aGF0Lgo+ID4KPiAKPiBZZXMsIHNob3VsZCB3b3JrIGZvciB0aGUgaW5zdGFudCBvZmYvb24g aXRzZWxmLiBCdXQgdGhlIGxpbWl0YXRpb24gb2YgCj4gdGhhdCBpcyB0aGF0IHdpdGggdGhlIHRp bWVzdGFtcCBiYXNlZCBzdHVmZiB3ZSBjYW4gb25seSBiZSBhY2N1cmF0ZSBmb3IgCj4gdmJsYW5r IG9mZiBwZXJpb2RzIG9mIGEgZmV3IHNlY29uZHMgaW50byB0aGUgZnV0dXJlLiBUaGUgZnJhbWVk dXJfbnMgd2UgCj4gY2FsY3VsYXRlIGZyb20gaHcgbW9kZSBhbmQgdGhlIHJlZnJlc2ggZHVyYXRp b24gY29tcHV0ZWQgZnJvbSB0aGUgCj4gdGltZXN0YW1wcyBhcyBtZWFzdXJlZCBieSB0aGUgaG9z dCBjbG9jayBjYW4gZWFzaWx5IGRldmlhdGUgYnksIGUuZy4sIDEwIAo+IHVzZWNzIGR1ZSB0byBk aWZmZXJlbmNlIGFuZCBkcmlmdCBiZXR3ZWVuIHRoZSBncHUgcGxsIGFuZCBob3N0IGNsb2NrLCBz byAKPiBmb3IgZWFjaCBwYXNzaW5nIHJlZnJlc2ggY3ljbGUgd2l0aCB2Ymxhbmsgb2ZmIHdlJ2Qg YWNjdW11bGF0ZSB+MTAgdXNlY3MgCj4gb2YgZXJyb3IuIEFmdGVyIGFjY3VtdWxhdGluZyBoYWxm IGEgcmVmcmVzaCBkdXJhdGlvbiBvZiBlcnJvciB3ZSdkIHJvdW5kIAo+IHRvIHRoZSB3cm9uZyBj b3VudCBhbmQgYmUgb2ZmIGJ5IG9uZS4gU28gYXQgNjAgSHogcmVmcmVzaCB3ZSdkIGhhdmUgCj4g YWJvdXQgMTY2NjYgdXNlY3MgLyAyID0gODMzMyB1c2VjcyBoZWFkcm9vbSAvIDEwIHVzZWNzIHBl ciBmcmFtZSBlcnJvciB+IAo+IDgzMyByZWZyZXNoIGN5Y2xlcyBiZWZvcmUgZXJyb3JzIGhhcHBl bi4gQXQgNjAgSHogd2UnZCBoYXZlIDgzMyAvIDYwIH4gCj4gMTQgc2Vjb25kcyBvZiB2Ymxhbmsg b2ZmLiBGb3IgcmF0ZXMgb2YgMTIwIEh6IGdhbWVyIHBhbmVscyBvciBzb21lIDIwMCAKPiBIeiBu ZXVyby1zY2llbmNlIGFwcGxpY2F0aW9ucyB3ZSdkIG9ubHkgZ2V0IGEgZmV3IHNlY29uZHMgb2Zm IGVycm9yIGZyZWUgCj4gdmJsYW5rIG9mZiB3aXRob3V0IHJlYWwgaGFyZHdhcmUgY291bnRlcnMu Cj4gCj4gU28gaXQncyBnb29kIGVub3VnaCBmb3IgdHlwaWNhbCBkZXNrdG9wIAo+IGFwcGxpY2F0 aW9ucy9jb21wb3NpdG9ycy9nYW1lcy9tZWRpYSBwbGF5ZXJzLCBhbmQgYSBuaWNlIGltcHJvdmVt ZW50IAo+IG92ZXIgdGhlIHByZXZpb3VzIHN0YXRlLCBidXQgbm90IHF1aXRlIHN1ZmZpY2llbnQg Zm9yIGFwcGxpY2F0aW9ucyB0aGF0IAo+IG5lZWQgbG9uZyB0aW1lIGNvbnNpc3RlbnQgdmJsYW5r IGNvdW50cyBmb3IgbG9uZyB3YWl0cyBvZiBtdWx0aXBsZSAKPiBzZWNvbmRzIG9yIGV2ZW4gbWlu dXRlcy4gU28gaXQncyBzdGlsbCBnb29kIHRvIGhhdmUgaHcgY291bnRlcnMgaWYgd2UgCj4gY2Fu IGdldCBzb21lIHRoYXQgYXJlIHJlbGlhYmxlIGVub3VnaC4KCkFoLCBJIGRpZG4ndCByZWFsaXpl IHlvdSBjYXJlIGFib3V0IHNtYWxsIGVycm9ycyBpbiB0aGUgY291bnRlciBmb3IKc3VjaCBsb25n IHBlcmlvZHMgb2YgdmJsYW5rIG9mZi4KCj4gCj4gLW1hcmlvCj4gCj4gCj4gPj4KPiA+PiAtbWFy aW8KPiA+Pgo+ID4+Pj4KPiA+Pj4+IEl0IGFsbW9zdCBzb3J0IG9mIHdvcmtzIG9uIHRoZSByczYw MCBjb2RlIHBhdGgsIGJ1dCBpIG5lZWQgYSBiaXQgb2YgaW5mbwo+ID4+Pj4gZnJvbSB5b3U6Cj4g Pj4+Pgo+ID4+Pj4gMS4gVGhlcmUncyB0aGlzIHJlZ2lzdGVyIGZyb20gdGhlIG9sZCBzcGVjcyBm b3IgbTc2LnBkZiwgd2hpY2ggaXMgbm90Cj4gPj4+PiBwYXJ0IG9mIHRoZSBjdXJyZW50IHJlZ2lz dGVyIGRlZmluZXMgZm9yIHJhZGVvbi1rbXM6Cj4gPj4+Pgo+ID4+Pj4gIkQxQ1JUQ19TVEFUVVNf VkZfQ09VTlQgLSBSVyAtIDMyIGJpdHMgLSBbR3B1RjBNTVJlZzoweDYwQThdIgo+ID4+Pj4KPiA+ Pj4+IEl0IGNvbnRhaW5zIHRoZSBsb3dlciAxNiBiaXRzIG9mIGZyYW1lY291bnRlciBhbmQgdGhl IDEzIGJpdHMgb2YKPiA+Pj4+IHZlcnRpY2FsIHNjYW5vdXQgcG9zaXRpb24uIEl0IHNlZW1zIHRv IGdpdmUgdGhlIHNhbWUgcmVhZGluZ3MgYXMgdGhlIDI0Cj4gPj4+PiBiaXQgUl8wMDYwQTRfRDFD UlRDX1NUQVRVU19GUkFNRV9DT1VOVCB3ZSB1c2UgZm9yIHRoZSBodyBjb3VudGVyLiBUaGlzCj4g Pj4+PiB3b3VsZCBjb21lIGhhbmR5Lgo+ID4+Pj4KPiA+Pj4+IERvZXMgRXZlcmdyZWVuIGFuZCBs YXRlciBoYXZlIGEgc2FtZS9zaW1pbGFyIHJlZ2lzdGVyIGFuZCB3aGVyZSBpcyBpdD8KPiA+Pj4+ Cj4gPj4+PiAyLiBUaGUgaHcgZnJhbWVjb3VudGVyIHNlZW1zIHRvIGluY3JlbWVudCB3aGVuIHRo ZSB2ZXJ0aWNhbCBzY2Fub3V0Cj4gPj4+PiBwb3NpdGlvbiB3cmFwcyBiYWNrIGZyb20gKFZUT1RB TCAtIDEpIHRvIDAsIGF0IGxlYXN0IG9uIHRoZSBvbmUgRENFLTMKPiA+Pj4+IGdwdSBpIHRlc3Rl ZCBzbyBmYXIuIElzIHRoaXMgc28gb24gYWxsIGFzaWNzPyBBbmQgaXMgdGhlIGh3IGNvdW50ZXIK PiA+Pj4+IGluY3JlbWVudCBoYXBwZW5pbmcgZXhhY3RseSBhdCB0aGUgbW9tZW50IHRoYXQgdmVy dGljYWwgc2Nhbm91dCBwb3NpdGlvbgo+ID4+Pj4ganVtcHMgYmFjayB0byB6ZXJvLCBpZS4gYm90 aCBldmVudHMgYXJlIGRyaXZlbiBieSB0aGUgc2FtZSBzaWduYWw/IE9yIGlzCj4gPj4+PiB0aGUg ZnJhbWVjb3VudGVyIGluY3JlbWVudCBqdXN0IGhhcHBlbmluZyBzb21ld2hlcmUgaW5zaWRlIGVp dGhlcgo+ID4+Pj4gc2NhbmxpbmUgVlRPVEFMLTEgb3Igc2NhbmxpbmUgMD8KPiA+Pj4+Cj4gPj4+ Pgo+ID4+Pj4gSWYgd2UgY2FuIGZpeCB0aGlzIGFuZCBnZXQgaXQgaW50byByYzIgb3IgcmMzIHRo ZW4gd2UgY291bGQgYXZvaWQgYSBiYWQKPiA+Pj4+IHJlZ3Jlc3Npb24gYW5kIHdpdGggYSBiaXQg b2YgbHVjayBhdCB0aGUgc2FtZSB0aW1lIGltcHJvdmUgYnkgYmVpbmcgYWJsZQo+ID4+Pj4gdG8g c2V0IGRldi0+dmJsYW5rX2Rpc2FibGVfaW1tZWRpYXRlID0gdHJ1ZSB0aGVuIGFuZCBhbGxvdyB2 YmxhbmsgaXJxcwo+ID4+Pj4gdG8gZ2V0IHR1cm5lZCBvZmYgbW9yZSBhZ2dyZXNzaXZlbHkgZm9y IGEgYml0IG9mIGV4dHJhIHBvd2VyIHNhdmluZy4KPiA+Pj4+Cj4gPj4+PiB0aGFua3MsCj4gPj4+ PiAtbWFyaW8KPiA+Pj4KPiA+Pj4+IC0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+ID4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+ID4+Pj4gQEAgLTE3Miw5ICsxNzIs MTEgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gPj4+PiAgICB7Cj4gPj4+PiAg ICAgICAgICAgc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3Bp cGVdOwo+ID4+Pj4gLSAgICAgICB1MzIgY3VyX3ZibGFuaywgZGlmZjsKPiA+Pj4+ICsgICAgICAg dTMyIGN1cl92YmxhbmssIGRpZmYgPSAwOwo+ID4+Pj4gICAgICAgICAgIGJvb2wgcmM7Cj4gPj4+ PiAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgdF92Ymxhbms7Cj4gPj4+PiArICAgICAgIGNvbnN0 IHN0cnVjdCB0aW1ldmFsICp0X29sZDsKPiA+Pj4+ICsgICAgICAgdTY0IGRpZmZfbnM7Cj4gPj4+ PiAgICAgICAgICAgaW50IGNvdW50ID0gRFJNX1RJTUVTVEFNUF9NQVhSRVRSSUVTOwo+ID4+Pj4g ICAgICAgICAgIGludCBmcmFtZWR1cl9ucyA9IHZibGFuay0+ZnJhbWVkdXJfbnM7Cj4gPj4+Pgo+ ID4+Pj4gQEAgLTE5NSwxMyArMTk3LDE1IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5r X2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ID4+Pj4g ICAgICAgICAgICAgICAgICAgcmMgPSBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgcGlw ZSwgJnRfdmJsYW5rLCBmbGFncyk7Cj4gPj4+PiAgICAgICAgICAgfSB3aGlsZSAoY3VyX3ZibGFu ayAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgcGlwZSkgJiYgLS1jb3Vu dCA+IDApOwo+ID4+Pj4KPiA+Pj4+IC0gICAgICAgaWYgKGRldi0+bWF4X3ZibGFua19jb3VudCAh PSAwKSB7Cj4gPj4+PiAtICAgICAgICAgICAgICAgLyogdHJ1c3QgdGhlIGh3IGNvdW50ZXIgd2hl biBpdCdzIGFyb3VuZCAqLwo+ID4+Pj4gLSAgICAgICAgICAgICAgIGRpZmYgPSAoY3VyX3ZibGFu ayAtIHZibGFuay0+bGFzdCkgJiBkZXYtPm1heF92YmxhbmtfY291bnQ7Cj4gPj4+PiAtICAgICAg IH0gZWxzZSBpZiAocmMgJiYgZnJhbWVkdXJfbnMpIHsKPiA+Pj4+IC0gICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgdGltZXZhbCAqdF9vbGQ7Cj4gPj4+PiAtICAgICAgICAgICAgICAgdTY0IGRp ZmZfbnM7Cj4gPj4+PiAtCj4gPj4+PiArICAgICAgIC8qCj4gPj4+PiArICAgICAgICAqIEFsd2F5 cyB1c2UgdmJsYW5rIHRpbWVzdGFtcGluZyBiYXNlZCBtZXRob2QgaWYgc3VwcG9ydGVkIHRvIHJl amVjdAo+ID4+Pj4gKyAgICAgICAgKiByZWR1bmRhbnQgdmJsYW5rIGlycXMuIEUuZy4sIEFNRCBo YXJkd2FyZSBuZWVkcyB0aGlzIHRvIG5vdCBzY3JldyB1cAo+ID4+Pj4gKyAgICAgICAgKiBkdWUg dG8gc29tZSBpcnEgaGFuZGxpbmcgcXVpcmsuCj4gPj4+Cj4gPj4+IEhtbS4gSSdtIHRoaW5raW5n IGl0IHdvdWxkIGJlIGJldHRlciB0byBzaW1wbHkgbm90IGNsYWltIHRoYXQgdGhlcmUncyBhIGh3 Cj4gPj4+IGNvdW50ZXIgaWYgaXQgaXNuJ3QgcmVsaWFibGUuCj4gPj4+Cj4gPj4+PiArICAgICAg ICAqCj4gPj4+PiArICAgICAgICAqIFRoaXMgYWxzbyBzZXRzIHRoZSBkaWZmIHZhbHVlIGZvciB1 c2UgYXMgZmFsbGJhY2sgYmVsb3cgaW4gY2FzZSB0aGUKPiA+Pj4+ICsgICAgICAgICogaHcgZG9l cyBub3Qgc3VwcG9ydCBhIHN1aXRhYmxlIGh3IHZibGFuayBjb3VudGVyLgo+ID4+Pj4gKyAgICAg ICAgKi8KPiA+Pj4+ICsgICAgICAgaWYgKHJjICYmIGZyYW1lZHVyX25zKSB7Cj4gPj4+PiAgICAg ICAgICAgICAgICAgICB0X29sZCA9ICZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB2Ymxhbmst PmNvdW50KTsKPiA+Pj4+ICAgICAgICAgICAgICAgICAgIGRpZmZfbnMgPSB0aW1ldmFsX3RvX25z KCZ0X3ZibGFuaykgLSB0aW1ldmFsX3RvX25zKHRfb2xkKTsKPiA+Pj4+Cj4gPj4+PiBAQCAtMjEy LDExICsyMTYsMjggQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gPj4+PiAgICAgICAgICAgICAg ICAgICAgKi8KPiA+Pj4+ICAgICAgICAgICAgICAgICAgIGRpZmYgPSBESVZfUk9VTkRfQ0xPU0VT VF9VTEwoZGlmZl9ucywgZnJhbWVkdXJfbnMpOwo+ID4+Pj4KPiA+Pj4+IC0gICAgICAgICAgICAg ICBpZiAoZGlmZiA9PSAwICYmIGZsYWdzICYgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSkKPiA+Pj4+ IC0gICAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19WQkwoImNydGMgJXU6IFJlZHVuZGFu dCB2YmxpcnEgaWdub3JlZC4iCj4gPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgZGlmZl9ucyA9ICVsbGQsIGZyYW1lZHVyX25zID0gJWQpXG4iLAo+ID4+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlLCAobG9uZyBsb25nKSBkaWZm X25zLCBmcmFtZWR1cl9ucyk7Cj4gPj4+PiAtICAgICAgIH0gZWxzZSB7Cj4gPj4+PiArICAgICAg ICAgICAgICAgaWYgKGRpZmYgPT0gMCAmJiBmbGFncyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEp IHsKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX1ZCTCgiY3J0YyAldTogUmVk dW5kYW50IHZibGlycSBpZ25vcmVkLiIKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgIiBkaWZm X25zID0gJWxsZCwgZnJhbWVkdXJfbnMgPSAlZClcbiIsCj4gPj4+PiArICAgICAgICAgICAgICAg ICAgIHBpcGUsIChsb25nIGxvbmcpIGRpZmZfbnMsIGZyYW1lZHVyX25zKTsKPiA+Pj4+ICsKPiA+ Pj4+ICsgICAgICAgICAgICAgICAgICAgLyogVHJlYXQgdGhpcyByZWR1bmRhbnQgaW52b2NhdGlv biBhcyBuby1vcC4gKi8KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgV0FSTl9PTl9PTkNFKGN1 cl92YmxhbmsgIT0gdmJsYW5rLT5sYXN0KTsKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgcmV0 dXJuOwo+ID4+Pj4gKyAgICAgICAgICAgICAgIH0KPiA+Pj4+ICsgICAgICAgfQo+ID4+Pj4gKwo+ ID4+Pj4gKyAgICAgICAvKgo+ID4+Pj4gKyAgICAgICAgKiBodyBjb3VudGVycywgaWYgbWFya2Vk IGFzIHN1cHBvcnRlZCB2aWEgbWF4X3ZibGFua19jb3VudCAhPSAwLAo+ID4+Pj4gKyAgICAgICAg KiAqbXVzdCogaW5jcmVtZW50IGF0IGxlYWRpbmcgZWRnZSBvZiB2YmxhbmsgYW5kIGluIHN5bmMg d2l0aAo+ID4+Pj4gKyAgICAgICAgKiB0aGUgZmlyaW5nIG9mIHRoZSBodyB2YmxhbmsgaXJxLCBv dGhlcndpc2Ugd2UgaGF2ZSBhIHJhY2UgaGVyZQo+ID4+Pj4gKyAgICAgICAgKiBiZXR3ZWVuIGdw dSBhbmQgdXMsIHdoZXJlIHNtYWxsIHZhcmlhdGlvbnMgaW4gb3VyIGV4ZWN1dGlvbgo+ID4+Pj4g KyAgICAgICAgKiB0aW1pbmcgY2FuIGNhdXNlIG9mZi1ieS1vbmUgbWlzY291bnRpbmcgb2YgdmJs YW5rcy4KPiA+Pj4+ICsgICAgICAgICovCj4gPj4+PiArICAgICAgIGlmIChkZXYtPm1heF92Ymxh bmtfY291bnQgIT0gMCkgewo+ID4+Pj4gKyAgICAgICAgICAgICAgIC8qIHRydXN0IHRoZSBodyBj b3VudGVyIHdoZW4gaXQncyBhcm91bmQgKi8KPiA+Pj4+ICsgICAgICAgICAgICAgICBkaWZmID0g KGN1cl92YmxhbmsgLSB2YmxhbmstPmxhc3QpICYgZGV2LT5tYXhfdmJsYW5rX2NvdW50Owo+ID4+ Pj4gKyAgICAgICB9IGVsc2UgaWYgKCEocmMgJiYgZnJhbWVkdXJfbnMpKSB7Cj4gPj4+PiAgICAg ICAgICAgICAgICAgICAvKiBzb21lIGtpbmQgb2YgZGVmYXVsdCBmb3IgZHJpdmVycyB3L28gYWNj dXJhdGUgdmJsIHRpbWVzdGFtcGluZyAqLwo+ID4+Pj4gICAgICAgICAgICAgICAgICAgZGlmZiA9 IChmbGFncyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpICE9IDA7Cj4gPj4+PiAgICAgICAgICAg fQo+ID4+Pgo+ID4+Pgo+ID4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==