From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: Re: [PATCH 1/2] drm/amd/pp: Remove manual mode for power_dpm_force_performance_level Date: Fri, 26 Jan 2018 14:32:08 -0500 Message-ID: References: <1516879614-11533-1-git-send-email-Rex.Zhu@amd.com> <51c6111b-78ec-36f8-b5e0-4a23ccea6de4@amd.com> <0ce63372-dc11-9710-f11d-0cf6abf326b4@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-CA List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Zhu, Rex" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMjAxOC0wMS0yNiAwMjoyMCBQTSwgWmh1LCBSZXggd3JvdGU6Cj4KPiA+MS4gWW91J3JlIGJy ZWFraW5nIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGV4aXN0aW5nIHBwX2RwbV9zY2xrL21jbGsvcGNp ZQo+ID4gwqAgwqBpbnRlcmZhY2VzLCB3aGljaCBhZmZlY3RzIGV4aXN0aW5nIHRvb2xzCj4KPgo+ IFJleDogSSBkb24ndCB0aGluayB0aGUgcGF0Y2ggd2lsbCBhZmZlY3RzIGV4aXN0aW5nIHRvb2xz Lgo+Cj4KPiBVc2VyIHNldCAibWFudWFsIiB0byBwb3dlcl9wZXJmb3JtYW5jZV9sZXZlbCwgYW5k IHRoZW4gY2hhbmdlIHRoZQo+IGNsb2NrIHJhbmdlIHRocm91Z2ggwqBwcF9kcG1fc2Nsay9tY2xr L3BjaWUuCj4KPgo+IHdpdGggdGhpcyBwYXRjaCwgVXNlciBkb250IG5lZWQgdG8gc2V0ICJtYW51 YWwiIGNvbW1hbmQsIMKgaWYgc3RpbGwKPiByZWNlaXZlIHRoZSBtYW51YWwgY29tbWFuZCwgZHJp dmVyIGp1c3QgcmV0dXJuIHN1Y2VzcyB0byB1c2VyIGluIG9yZGVyCj4gbm90IMKgYnJlYWsgZXhp c3RpbmcKPgo+IHRvb2xzLsKgCj4KCkV4aXN0aW5nIHRvb2xzIGFuZCB1c2VycyBleHBlY3QgdGhh dCBzd2l0Y2hpbmcgYmFjayB0byBhdXRvIHJlbW92ZXMgdGhlCm1hbnVhbCBjbG9jayBzZXR0aW5n cy4gSWYgeW91IGFsbG93IGNoYW5naW5nIHRoZSBjbG9jayBpbiBhdXRvIG1vZGUsCnRoYXQgd29u J3QgaGFwcGVuIGFueSBtb3JlLgoKPgo+IMKgPjIuIFlvdSdyZSB0YWtpbmcgdGhlIGNsb2NrIGxp bWl0cyBvdXQgb2YgdGhlIHBvd2VyIHByb2ZpbGUuCj4gwqA+IMKgQXV0b21hdGljYWxseSBhZGp1 c3RpbmcgdGhlIG1pbmltdW0gc2Nsay9tY2xrIGlzIGEgcmVxdWlyZW1lbnQgZm9yCj4gwqA+IMKg IHRoZSBjb21wdXRlIHBvd2VyIHByb2ZpbGUKPgo+Cj4gUmV4OiBJbiB2ZWdhMTAsIHVuZGVywqBk ZWZhdWx0IGNvbXB1dCBtb2RlKHdpdGgKPiBidXN5X3NldF9wb2ludC9mcHMvdXNlX3JsY19idXN5 L21pbl9hY3RpdmVfbGV2ZWwgc2V0KSwganVzdCB0d28KPiBwZXJmb3JtYW5jZSBsZXZlbHMgbGVm dAo+IChsZXZlbDAgYW5kIGxldmVsNykuIGFuZCBjbG9jayBqdXN0IHN3aXRjaCBiZXR3ZWVuIGxv d2VzdCBhbmQgaGlnaGVzdC4KPgo+IEkgYW0gbm90IHN1cmUgaW4gdGhpcyBjYXNlLCBkcml2ZXIg c3RpbGwgY2FuIHNldCBtaW4gc2Nsay9tY2xrLgoKT25lIG1vcmUgcmVhc29uIHdoeSBhbGxvd2lu ZyB0aGUgdXNlciB0byBzZXQgcHBfZHBtX3Nja2wvbWNsayBzaG91bGRuJ3QKYmUgYWxsb3dlZCBp biBhdXRvLW1vZGUuCgpSZWdhcmRzLArCoCBGZWxpeAoKPgo+IEJlc3QgUmVnYXJkcwo+IFJleMKg Cj4KPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICpGcm9tOiogS3VlaGxpbmcsIEZlbGl4Cj4gKlNlbnQ6 KiBTYXR1cmRheSwgSmFudWFyeSAyNywgMjAxOCAxMjo0OSBBTQo+ICpUbzoqIFpodSwgUmV4OyBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ICpTdWJqZWN0OiogUmU6IFtQQVRDSCAxLzJd IGRybS9hbWQvcHA6IFJlbW92ZSBtYW51YWwgbW9kZSBmb3IKPiBwb3dlcl9kcG1fZm9yY2VfcGVy Zm9ybWFuY2VfbGV2ZWwKPiDCoAo+IEhpIFJleCwKPgo+IEkgdGhpbmsgSSB1bmRlcnN0YW5kIHdo YXQgeW91J3JlIHRyeWluZyB0byBkby4gVG8gc3VtbWFyaXplIG15IGNvbmNlcm5zLAo+IHRoZXJl IGFyZSB0d28gcmVhc29ucyBJJ20gYWdhaW5zdCB5b3VyIHBsYW46Cj4KPiDCoDEuIFlvdSdyZSBi cmVha2luZyB0aGUgc2VtYW50aWNzIG9mIHRoZSBleGlzdGluZyBwcF9kcG1fc2Nsay9tY2xrL3Bj aWUKPiDCoMKgwqAgaW50ZXJmYWNlcywgd2hpY2ggYWZmZWN0cyBleGlzdGluZyB0b29scwo+IMKg Mi4gWW91J3JlIHRha2luZyB0aGUgY2xvY2sgbGltaXRzIG91dCBvZiB0aGUgcG93ZXIgcHJvZmls ZS4KPiDCoMKgwqAgQXV0b21hdGljYWxseSBhZGp1c3RpbmcgdGhlIG1pbmltdW0gc2Nsay9tY2xr IGlzIGEgcmVxdWlyZW1lbnQgZm9yCj4gwqDCoMKgIHRoZSBjb21wdXRlIHBvd2VyIHByb2ZpbGUK Pgo+IFJlZ2FyZHMsCj4gwqAgRmVsaXgKPgo+IE9uIDIwMTgtMDEtMjYgMDc6NTAgQU0sIFpodSwg UmV4IHdyb3RlOgo+ID4KPiA+IEhpIEZlbGl4LAo+ID4KPiA+Cj4gPiA+VGhhdCB3b3VsZCBtYWtl IHNlbnNlLiBCdXQgc3dpdGNoaW5nIHRvIG1hbnVhbCBtb2RlIHdvdWxkIGRpc2FibGUKPiA+ID5w cm9maWxlcyBhbmQgYXV0b21hdGljIHByb2ZpbGUgc2VsZWN0aW9uLiBUaGF0IHdhcyBvbmUgcmVh c29uIHdoeSBJCj4gPiA+b2JqZWN0ZWQgdG8geW91ciBwbGFuIHRvIGNvbnRyb2wgcHJvZmlsZSBj bG9jayBsaW1pdHMgdXNpbmcgdGhlc2UKPiBmaWxlcy4KPiA+Cj4gPiBSZXg6Cj4gPgo+ID4KPiA+ IEkgYW0gbm90IHZlcnnCoGNsZWFyIHRoZSBvbGQgbG9naWMgb2YgZ2Z4L2NvbXB1dGUgcG93ZXIg cHJvZmlsZSBzd2l0Y2guCj4gPgo+ID4KPiA+IEJ1dCB3aXRoIG5ldyBzeXNmcywKPiA+Cj4gPiDC oAo+ID4KPiA+IFRoZSBsb2dpYyBpcyh0aG9zZSBzeXNmcyBhcmUgaW5kZXBlbmRlbnQpwqAKPiA+ Cj4gPsKgIDEuIGNvbmZpZ3VyZSB1cGh5c3QvZG93bmh5c3QvbWluX2F0aXZpdHkgdGhyb3VnaCBw b3dlcl9wcm9maWxlX21vZGUsCj4gPgo+ID4gwqAgwqAgwqAgMi4gYWRqdXN0IGNsb2NrIHJhbmdl IHRocm91Z2ggcHBfZHBtX3NjbGsvbWNsay9wY2llLihvbmNlIHRoaXMKPiA+IHN5c2ZmcyB3YXMg Y2FsbGVkLMKgc2V0IHRoZSBkcG0gbGV2ZWwgbW9kZSB0byB1bmtub3duKQo+ID4KPiA+IMKgIMKg IMKgIDMuwqBhZGp1c3QgcG93ZXIgbGltaXQgdGhyb3VnaCBwcF9vZF9wb3dlcl9saW1pdChtYXli ZSBlcXVhbCB0bwo+ID4gZGlzYWJsZSBwb3dlciBjb250YWlubWVudCkuCj4gPgo+ID4gwqAgwqAg wqDCoAo+ID4KPiA+IEluIHRob3NlIGZ1bmN0aW9ucywgZHJpdmVyIGRvIG5vdCBjaGVjayB0aGUg ZHBtIGxldmVsIG1vZGUuwqAKPiA+Cj4gPiB0aGUgZHBtIGxldmVsIG1vZGUganVzdCB1c2VkIGJ5 wqBwb3dlcl9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwKPiA+IGZ1bmN0aW9ucy4KPiA+Cj4g Pgo+ID4gQmVzdCBSZWdhcmRzCj4gPgo+ID4gUmV4Cj4gPgo+ID4KPiA+Cj4gPgo+ID4KPiA+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+ID4gKkZyb206KiBLdWVobGluZywgRmVsaXgKPiA+ICpTZW50OiogRnJp ZGF5LCBKYW51YXJ5IDI2LCAyMDE4IDg6MjYgQU0KPiA+ICpUbzoqIFpodSwgUmV4OyBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gKlN1YmplY3Q6KiBSZTogW1BBVENIIDEvMl0gZHJt L2FtZC9wcDogUmVtb3ZlIG1hbnVhbCBtb2RlIGZvcgo+ID4gcG93ZXJfZHBtX2ZvcmNlX3BlcmZv cm1hbmNlX2xldmVsCj4gPiDCoAo+ID4gT24gMjAxOC0wMS0yNSAwNzowNyBQTSwgWmh1LCBSZXgg d3JvdGU6Cj4gPiA+IEkgYWxzbyB0aGluayBhYm91dCB0aGlzIHByb2JsZW0uCj4gPiA+IGp1c3Qg dGhpbmsgdXNlciBzaG91bGQgdW5mb3JjZWQgY2xrIGxldmVsIHRocm91Z2ggcHAgZHBtCj4gPiA+ IHNjbGsvbWNsay9wY2llIGlmIHRoZXkgY2hhbmdlIHRoZSBjbG9jayBsb2dpYyB0aHJvdWdoIHRo b3NlIHN5c2ZzLgo+ID4gPgo+ID4gPiBUaGUgbG9naWMgc2VlbXMgd2VpcmQsIEFzIHdlIHN1cHBs eSBtYW55IHN5c2ZzIGZvciBhZGp1c3QgY2xvY2sgcmFuZ2UuCj4gPiA+Cj4gPiA+IFdlIGNhbiBm aXggdGhpcyBwcm9ibGVtIGJ5IGNoYW5nZSBjdXJyZW50IG1vZGUgdG8gbWFudWFsIG1vZGUgYWZ0 ZXIKPiA+ID4gdXNlciBjYWxsIHBwIGRwbSBzY2xrL21jbGsvcGNpZS4KPiA+ID4KPiA+ID4gQnV0 IGFub3RoZXIgdGhpbmvvvIxpZiB1c2VyIGNoYW5nZSBiYWNrIHRoZSBjbGsgcmFuZ2UgdGhyb3Vn aCBwcCBkcG0KPiBjbGsuCj4gPiA+Cj4gPiA+IHdlIGFyZSBpbiBtYW51YWwgbW9kZSwgYW5kIHVz ZXIgc2V0IGF1dG8gbW9kZSwgaW4gZmFjdCwgZHJpdmVyIGNoYW5nZQo+ID4gPiBub3RoaW5nLgo+ ID4KPiA+IFdpdGggcHJvZmlsZXMsIHN3aXRjaGluZyBiYWNrIHRvIGF1dG8gbW9kZSB3b3VsZCBz ZWxlY3QgdGhlIGFwcHJvcHJpYXRlCj4gPiBwcm9maWxlLCB3aGljaCBtYXkgaGF2ZSBhIGRpZmZl cmVudCBjbG9jayBtYXNrLiBGb3IgZXhhbXBsZSBmb3IgY29tcHV0ZQo+ID4gd2UgZW5hYmxlIG9u bHkgdGhlIGhpZ2hlc3QgdHdvIHNjbGsgbGV2ZWxzLgo+ID4KPiA+ID4KPiA+ID4gQ29tcGFyYXRp dmVseSBzcGVha2luZywgYmV0dGVyIHNldCBtYW51YWwgbW9kZSBhZnRlciB1c2VyIGNhbGwgcHAK PiA+IGRwbSBjbGsuCj4gPgo+ID4gVGhhdCB3b3VsZCBtYWtlIHNlbnNlLiBCdXQgc3dpdGNoaW5n IHRvIG1hbnVhbCBtb2RlIHdvdWxkIGRpc2FibGUKPiA+IHByb2ZpbGVzIGFuZCBhdXRvbWF0aWMg cHJvZmlsZSBzZWxlY3Rpb24uIFRoYXQgd2FzIG9uZSByZWFzb24gd2h5IEkKPiA+IG9iamVjdGVk IHRvIHlvdXIgcGxhbiB0byBjb250cm9sIHByb2ZpbGUgY2xvY2sgbGltaXRzIHVzaW5nIHRoZXNl IGZpbGVzLgo+ID4KPiA+IFJlZ2FyZHMsCj4gPiDCoCBGZWxpeAo+ID4KPiA+ID4gVGhhbmtzIHZl cnkgbXVjaC4KPiA+ID4KPiA+ID4gQmVzdCBSZWdhcmRzCj4gPiA+IFJleAo+ID4gPgo+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4gPiAqRnJvbToqIEt1ZWhsaW5nLCBGZWxpeAo+ID4gPiAqU2VudDoqIEZy aWRheSwgSmFudWFyeSAyNiwgMjAxOCAxMjo1NToxOSBBTQo+ID4gPiAqVG86KiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgWmh1LCBSZXgKPiA+ID4gKlN1YmplY3Q6KiBSZTogW1BBVENI IDEvMl0gZHJtL2FtZC9wcDogUmVtb3ZlIG1hbnVhbCBtb2RlIGZvcgo+ID4gPiBwb3dlcl9kcG1f Zm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwKPiA+ID4gwqAKPiA+ID4gVGhpcyBwYXRjaCBicmVha3Mg dW5mb3JjaW5nIG9mIGNsb2Nrcywgd2hpY2ggaXMgY3VycmVudGx5IGRvbmUgYnkKPiA+ID4gc3dp dGNoaW5nIGJhY2sgZnJvbSAibWFudWFsIiB0byAiYXV0byIuIEJ5IHJlbW92aW5nICJtYW51YWwi IG1vZGUsIHlvdQo+ID4gPiByZW1vdmUgdGhlIGFiaWxpdHkgdG8gdW5zZXQgZm9yY2VkIGNsb2Nr cy4KPiA+ID4KPiA+ID4gUmVnYXJkcywKPiA+ID4gwqAgRmVsaXgKPiA+ID4KPiA+ID4KPiA+ID4g T24gMjAxOC0wMS0yNSAwNjoyNiBBTSwgUmV4IFpodSB3cm90ZToKPiA+ID4gPiBEcml2ZXIgZG8g bm90IG1haW50YWluIG1hbnVhbCBtb2RlIGZvciBkcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWws Cj4gPiA+ID4gVXNlciBjYW4gc2V0IHNjbGsvbWNsay9wY2llIHJhbmdlIHRocm91Z2gKPiA+ID4g cHBfZHBtX3NjbGsvcHBfZHBtX21jbGsvcHBfZHBtX3BjaWUKPiA+ID4gPiBkaXJlY3RseS4KPiA+ ID4gPgo+ID4gPiA+IEluIG9yZGVyIHRvIG5vdCBicmVhayBjdXJyZW50bHkgdG9vbHMsCj4gPiA+ ID4gd2hlbiBzZXQgIm1hbnVhbCIgdG8gcG93ZXJfZHBtX2ZvcmNlX3BlcmZvcm1hbmNlX2xldmVs Cj4gPiA+ID4gZHJpdmVyIHdpbGwgZG8gbm90aGluZyBhbmQganVzdCByZXR1cm4gc3VjY2Vzc2Z1 bC4KPiA+ID4gPgo+ID4gPiA+IENoYW5nZS1JZDogSWFmNjcyYjlhYmM3ZmE1N2I3NjVjZWI3ZmEy ZmJhNmFkM2U4MGM1MGIKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1QGFt ZC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID7CoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcG0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMyArLS0KPiA+ID4gPsKgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCA1IC0tLS0tCj4gPiA+ID7CoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUv a2dkX3BwX2ludGVyZmFjZS5owqDCoMKgwqAgfCAxNQo+ID4gKysrKysrKy0tLS0tLS0tCj4gPiA+ ID7CoCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9jel9od21nci5jwqDCoMKg wqAgfMKgIDQgLS0tLQo+ID4gPiA+wqAgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdt Z3IvcnZfaHdtZ3IuY8KgwqDCoMKgIHzCoCAxIC0KPiA+ID4gPsKgIGRyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuY8KgwqAgfMKgIDYgLS0tLS0tCj4gPiA+ID7C oCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdtZ3IuYyB8wqAg NiAtLS0tLS0KPiA+ID4gPsKgIDcgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzMiBk ZWxldGlvbnMoLSkKPiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG0uYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9wbS5jCj4gPiA+ID4gaW5kZXggMTgxMjAwOS4uNjZiNGRmMCAxMDA2NDQKPiA+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwo+ID4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jCj4gPiA+ID4gQEAgLTE1 Miw3ICsxNTIsNiBAQCBzdGF0aWMgc3NpemVfdAo+ID4gPiBhbWRncHVfZ2V0X2RwbV9mb3JjZWRf cGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobGV2ZWwgPT0gQU1EX0RQTV9GT1JD RURfTEVWRUxfQVVUTykgPwo+ICJhdXRvIiA6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXZlbCA9PSBBTURfRFBNX0ZPUkNFRF9MRVZFTF9M T1cpID8gImxvdyIgOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAobGV2ZWwgPT0gQU1EX0RQTV9GT1JDRURfTEVWRUxfSElHSCkgPwo+ICJoaWdo IiA6Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGxl dmVsID09IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVBTCkgPwo+ID4gPiAibWFudWFsIiA6Cj4g PiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXZl bCA9PQo+ID4gPiBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX1NUQU5EQVJEKSA/ICJwcm9m aWxlX3N0YW5kYXJkIiA6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChsZXZlbCA9PQo+ID4gPiBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxF X01JTl9TQ0xLKSA/ICJwcm9maWxlX21pbl9zY2xrIiA6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXZlbCA9PQo+ID4gPiBBTURfRFBNX0ZP UkNFRF9MRVZFTF9QUk9GSUxFX01JTl9NQ0xLKSA/ICJwcm9maWxlX21pbl9tY2xrIiA6Cj4gPiA+ ID4gQEAgLTE4Niw3ICsxODUsNyBAQCBzdGF0aWMgc3NpemVfdAo+ID4gPiBhbWRncHVfc2V0X2Rw bV9mb3JjZWRfcGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+wqDC oMKgwqDCoMKgwqAgfSBlbHNlIGlmIChzdHJuY21wKCJhdXRvIiwgYnVmLCBzdHJsZW4oImF1dG8i KSkgPT0gMCkgewo+ID4gPiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldmVsID0g QU1EX0RQTV9GT1JDRURfTEVWRUxfQVVUTzsKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIH0gZWxzZSBp ZiAoc3RybmNtcCgibWFudWFsIiwgYnVmLCBzdHJsZW4oIm1hbnVhbCIpKSA9PSAwKSB7Cj4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZXZlbCA9IEFNRF9EUE1fRk9SQ0VEX0xFVkVM X01BTlVBTDsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oIk5vIG5l ZWQgdG8gc2V0IG1hbnVhbCBtb2RlLCBKdXN0IGdvCj4gYWhlYWRcbiIpOwo+ID4gPiA+wqDCoMKg wqDCoMKgwqAgfSBlbHNlIGlmIChzdHJuY21wKCJwcm9maWxlX2V4aXQiLCBidWYsCj4gPiA+IHN0 cmxlbigicHJvZmlsZV9leGl0IikpID09IDApIHsKPiA+ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBsZXZlbCA9IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfRVhJVDsKPiA+ ID4gPsKgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoc3RybmNtcCgicHJvZmlsZV9zdGFuZGFyZCIs IGJ1ZiwKPiA+ID4gc3RybGVuKCJwcm9maWxlX3N0YW5kYXJkIikpID09IDApIHsKPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lfZHBtLmMKPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaV9kcG0uYwo+ID4gPiA+IGluZGV4IGFiNDUyMzIu LjhkZGM5NzggMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Y2lfZHBtLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaV9kcG0u Ywo+ID4gPiA+IEBAIC02NjM5LDExICs2NjM5LDYgQEAgc3RhdGljIGludCBjaV9kcG1fZm9yY2Vf Y2xvY2tfbGV2ZWwodm9pZAo+ID4gKmhhbmRsZSwKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ ID4gPiA+wqDCoMKgwqDCoMKgwqAgc3RydWN0IGNpX3Bvd2VyX2luZm8gKnBpID0gY2lfZ2V0X3Bp KGFkZXYpOwo+ID4gPiA+wqAKPiA+ID4gPiAtwqDCoMKgwqAgaWYgKGFkZXYtPnBtLmRwbS5mb3Jj ZWRfbGV2ZWwgJiAoQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVUTyB8Cj4gPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX0xPVyB8Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0hJR0gpKQo+ ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4g LQo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgc3dpdGNoICh0eXBlKSB7Cj4gPiA+ID7CoMKgwqDCoMKg wqDCoCBjYXNlIFBQX1NDTEs6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKCFwaS0+c2Nsa19kcG1fa2V5X2Rpc2FibGVkKQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3BwX2ludGVyZmFjZS5oCj4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaAo+ID4gPiA+IGluZGV4IGI5 YWE5ZjQuLjNmYWI2ODYgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvaW5jbHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmgKPiA+ID4gPiBAQCAtNDEsMTQgKzQxLDEzIEBA IHN0cnVjdCBhbWRfdmNlX3N0YXRlIHsKPiA+ID4gPsKgCj4gPiA+ID7CoCBlbnVtIGFtZF9kcG1f Zm9yY2VkX2xldmVsIHsKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIEFNRF9EUE1fRk9SQ0VEX0xFVkVM X0FVVE8gPSAweDEsCj4gPiA+ID4gLcKgwqDCoMKgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVB TCA9IDB4MiwKPiA+ID4gPiAtwqDCoMKgwqAgQU1EX0RQTV9GT1JDRURfTEVWRUxfTE9XID0gMHg0 LAo+ID4gPiA+IC3CoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9ISUdIID0gMHg4LAo+ID4g PiA+IC3CoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxFX1NUQU5EQVJEID0gMHgx MCwKPiA+ID4gPiAtwqDCoMKgwqAgQU1EX0RQTV9GT1JDRURfTEVWRUxfUFJPRklMRV9NSU5fU0NM SyA9IDB4MjAsCj4gPiA+ID4gLcKgwqDCoMKgIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVf TUlOX01DTEsgPSAweDQwLAo+ID4gPiA+IC3CoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9Q Uk9GSUxFX1BFQUsgPSAweDgwLAo+ID4gPiA+IC3CoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZF TF9QUk9GSUxFX0VYSVQgPSAweDEwMCwKPiA+ID4gPiArwqDCoMKgwqAgQU1EX0RQTV9GT1JDRURf TEVWRUxfTE9XID0gMHgyLAo+ID4gPiA+ICvCoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9I SUdIID0gMHg0LAo+ID4gPiA+ICvCoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9QUk9GSUxF X1NUQU5EQVJEID0gMHg4LAo+ID4gPiA+ICvCoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9Q Uk9GSUxFX01JTl9TQ0xLID0gMHgxMCwKPiA+ID4gPiArwqDCoMKgwqAgQU1EX0RQTV9GT1JDRURf TEVWRUxfUFJPRklMRV9NSU5fTUNMSyA9IDB4MjAsCj4gPiA+ID4gK8KgwqDCoMKgIEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX1BST0ZJTEVfUEVBSyA9IDB4NDAsCj4gPiA+ID4gK8KgwqDCoMKgIEFNRF9E UE1fRk9SQ0VEX0xFVkVMX1BST0ZJTEVfRVhJVCA9IDB4ODAsCj4gPiA+ID7CoCB9Owo+ID4gPiA+ wqAKPiA+ID4gPsKgIGVudW0gYW1kX3BtX3N0YXRlX3R5cGUgewo+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9jel9od21nci5jCj4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdtZ3IuYwo+ID4gPiA+IGlu ZGV4IGRlYzhkZDkuLjYwZDI4MGMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdtZ3IuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMKPiA+ID4gPiBAQCAtMTI1MCw3ICsx MjUwLDYgQEAgc3RhdGljIGludCBjel9kcG1fZm9yY2VfZHBtX2xldmVsKHN0cnVjdAo+ID4gPiBw cF9od21nciAqaHdtZ3IsCj4gPiA+ID7CoMKgwqDCoMKgwqDCoCBjYXNlIEFNRF9EUE1fRk9SQ0VE X0xFVkVMX0FVVE86Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g Y3pfcGhtX3VuZm9yY2VfZHBtX2xldmVscyhod21ncik7Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiA+ID4gLcKgwqDCoMKgIGNhc2UgQU1EX0RQTV9GT1JD RURfTEVWRUxfTUFOVUFMOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgY2FzZSBBTURfRFBNX0ZPUkNF RF9MRVZFTF9QUk9GSUxFX0VYSVQ6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoCBkZWZhdWx0Ogo+ID4g PiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gPiA+IEBAIC0xNTU4 LDkgKzE1NTcsNiBAQCBzdGF0aWMgaW50IGN6X2dldF9kYWxfcG93ZXJfbGV2ZWwoc3RydWN0Cj4g PiA+IHBwX2h3bWdyICpod21nciwKPiA+ID4gPsKgIHN0YXRpYyBpbnQgY3pfZm9yY2VfY2xvY2tf bGV2ZWwoc3RydWN0IHBwX2h3bWdyICpod21nciwKPiA+ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBlbnVtIHBwX2Nsb2NrX3R5cGUgdHlwZSwgdWludDMyX3QgbWFzaykKPiA+ID4g PsKgIHsKPiA+ID4gPiAtwqDCoMKgwqAgaWYgKGh3bWdyLT5kcG1fbGV2ZWwgIT0gQU1EX0RQTV9G T1JDRURfTEVWRUxfTUFOVUFMKQo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4gPiA+ID4gLQo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgc3dpdGNoICh0eXBl KSB7Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoCBjYXNlIFBQX1NDTEs6Cj4gPiA+ID7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIo aHdtZ3IsCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3J2X2h3bWdyLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9o d21nci9ydl9od21nci5jCj4gPiA+ID4gaW5kZXggNDA5YTU2Yi4uZWRkY2JjZCAxMDA2NDQKPiA+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9ydl9od21nci5j Cj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcnZfaHdt Z3IuYwo+ID4gPiA+IEBAIC02MDUsNyArNjA1LDYgQEAgc3RhdGljIGludCBydl9kcG1fZm9yY2Vf ZHBtX2xldmVsKHN0cnVjdAo+ID4gPiBwcF9od21nciAqaHdtZ3IsCj4gPiA+ID7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFBQU01DX01TR19TZXRTb2Z0TWF4RmNs a0J5RnJlcSwKPiA+ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ ID4gUkFWRU5fVU1EX1BTVEFURV9NSU5fRkNMSyk7Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiA+ID4gLcKgwqDCoMKgIGNhc2UgQU1EX0RQTV9GT1JDRURf TEVWRUxfTUFOVUFMOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgY2FzZSBBTURfRFBNX0ZPUkNFRF9M RVZFTF9QUk9GSUxFX0VYSVQ6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoCBkZWZhdWx0Ogo+ID4gPiA+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3X2h3bWdyLmMKPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3X2h3bWdyLmMKPiA+ID4g PiBpbmRleCAxM2RiNzVjLi5lM2E4Mzc0IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYwo+ID4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYwo+ID4gPiA+IEBAIC0y Nzk4LDcgKzI3OTgsNiBAQCBzdGF0aWMgaW50IHNtdTdfZm9yY2VfZHBtX2xldmVsKHN0cnVjdAo+ ID4gPiBwcF9od21nciAqaHdtZ3IsCj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc211N19mb3JjZV9jbG9ja19sZXZlbChod21nciwgUFBfTUNMSywgMTw8bWNsa19tYXNrKTsK PiA+ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbXU3X2ZvcmNlX2Nsb2NrX2xl dmVsKGh3bWdyLCBQUF9QQ0lFLCAxPDxwY2llX21hc2spOwo+ID4gPiA+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gPiA+IC3CoMKgwqDCoCBjYXNlIEFNRF9EUE1fRk9S Q0VEX0xFVkVMX01BTlVBTDoKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIGNhc2UgQU1EX0RQTV9GT1JD RURfTEVWRUxfUFJPRklMRV9FWElUOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgZGVmYXVsdDoKPiA+ ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ID4gPiBAQCAtNDMx MSwxMSArNDMxMCw2IEBAIHN0YXRpYyBpbnQgc211N19mb3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QK PiA+ID4gcHBfaHdtZ3IgKmh3bWdyLAo+ID4gPiA+wqAgewo+ID4gPiA+wqDCoMKgwqDCoMKgwqAg c3RydWN0IHNtdTdfaHdtZ3IgKmRhdGEgPSAoc3RydWN0IHNtdTdfaHdtZ3IKPiA+ICopKGh3bWdy LT5iYWNrZW5kKTsKPiA+ID4gPsKgCj4gPiA+ID4gLcKgwqDCoMKgIGlmIChod21nci0+cmVxdWVz dF9kcG1fbGV2ZWwgJiAoQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVUTyB8Cj4gPiA+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9MT1cgfAo+ID4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQU1EX0RQTV9GT1JDRURfTEVWRUxfSElHSCkpCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiAtCj4gPiA+ID7CoMKgwqDCoMKgwqDC oCBzd2l0Y2ggKHR5cGUpIHsKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIGNhc2UgUFBfU0NMSzoKPiA+ ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIWRhdGEtPnNjbGtfZHBtX2tl eV9kaXNhYmxlZCkKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaHdtZ3IvdmVnYTEwX2h3bWdyLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci92ZWdhMTBfaHdtZ3IuYwo+ID4gPiA+IGluZGV4IDZiMjg4OTYuLjgyODY3 N2UgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdt Z3IvdmVnYTEwX2h3bWdyLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9od21nci92ZWdhMTBfaHdtZ3IuYwo+ID4gPiA+IEBAIC00MjQxLDcgKzQyNDEsNiBAQCBz dGF0aWMgaW50IHZlZ2ExMF9kcG1fZm9yY2VfZHBtX2xldmVsKHN0cnVjdAo+ID4gPiBwcF9od21n ciAqaHdtZ3IsCj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmVnYTEwX2Zv cmNlX2Nsb2NrX2xldmVsKGh3bWdyLCBQUF9TQ0xLLAo+IDE8PHNjbGtfbWFzayk7Cj4gPiA+ID7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmVnYTEwX2ZvcmNlX2Nsb2NrX2xldmVsKGh3 bWdyLCBQUF9NQ0xLLAo+IDE8PG1jbGtfbWFzayk7Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiA+ID4gLcKgwqDCoMKgIGNhc2UgQU1EX0RQTV9GT1JDRURf TEVWRUxfTUFOVUFMOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqAgY2FzZSBBTURfRFBNX0ZPUkNFRF9M RVZFTF9QUk9GSUxFX0VYSVQ6Cj4gPiA+ID7CoMKgwqDCoMKgwqDCoCBkZWZhdWx0Ogo+ID4gPiA+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gPiA+IEBAIC00NTAwLDEx ICs0NDk5LDYgQEAgc3RhdGljIGludCB2ZWdhMTBfZm9yY2VfY2xvY2tfbGV2ZWwoc3RydWN0Cj4g PiA+IHBwX2h3bWdyICpod21nciwKPiA+ID4gPsKgIHsKPiA+ID4gPsKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB2ZWdhMTBfaHdtZ3IgKmRhdGEgPSAoc3RydWN0IHZlZ2ExMF9od21ncgo+ID4gPiAqKSho d21nci0+YmFja2VuZCk7Cj4gPiA+ID7CoAo+ID4gPiA+IC3CoMKgwqDCoCBpZiAoaHdtZ3ItPnJl cXVlc3RfZHBtX2xldmVsICYgKEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8gfAo+ID4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBB TURfRFBNX0ZPUkNFRF9MRVZFTF9MT1cgfAo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURfRFBNX0ZPUkNFRF9MRVZFTF9I SUdIKSkKPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+ ID4gPiA+IC0KPiA+ID4gPsKgwqDCoMKgwqDCoMKgIHN3aXRjaCAodHlwZSkgewo+ID4gPiA+wqDC oMKgwqDCoMKgwqAgY2FzZSBQUF9TQ0xLOgo+ID4gPiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRhdGEtPnNtY19zdGF0ZV90YWJsZS5nZnhfYm9vdF9sZXZlbCA9IG1hc2sgPwo+ID4g PiAoZmZzKG1hc2spIC0gMSkgOiAwOwo+ID4gPgo+ID4KPgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4Cg==