From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from szxga02-in.huawei.com ([119.145.14.65]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WonJ4-0001zq-O6 for kexec@lists.infradead.org; Mon, 26 May 2014 05:18:46 +0000 Message-ID: <5382CE50.4050807@huawei.com> Date: Mon, 26 May 2014 13:17:04 +0800 From: Liu hua MIME-Version: 1.0 Subject: Re: [PATCH] makedumpfile: ARM: get correct mem_map offset References: <1399443356-46732-1-git-send-email-sdu.liu@huawei.com> <0910DD04CBD6DE4193FCF86B9C00BE9720FA9B@BPXM01GP.gisp.nec.co.jp> <53702313.7090703@huawei.com> <0910DD04CBD6DE4193FCF86B9C00BE9721103D@BPXM01GP.gisp.nec.co.jp> <5379C052.50108@huawei.com> <0910DD04CBD6DE4193FCF86B9C00BE97212378@BPXM01GP.gisp.nec.co.jp> In-Reply-To: <0910DD04CBD6DE4193FCF86B9C00BE97212378@BPXM01GP.gisp.nec.co.jp> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Atsushi Kumagai Cc: "kexec@lists.infradead.org" 5LqOIDIwMTQvNS8yMCAxNjoxMiwgQXRzdXNoaSBLdW1hZ2FpIOWGmemBkzoKPj4+Pj4gRGlkIHlv dSBtZWFuIHRoZSBwYXRjaCBiZWxvdyBpcyB3cm9uZz8KPj4+Pj4KPj4+Pj4gICBjb21taXQgMWU5 M2VlNzVmOWQ0N2MyMTllODMzMjEwZWIzMWU0YTc0N2NjM2E4ZAo+Pj4+PiAgIEF1dGhvcjogTWlr YSBXZXN0ZXJiZXJnIDxleHQtbWlrYS4xLndlc3RlcmJlcmdAbm9raWEuY29tPgo+Pj4+PiAgIERh dGU6ICAgVHVlIEp1biAyMiAwOTo1OToxMCAyMDEwICswMzAwCj4+Pj4+Cj4+Pj4+ICAgICAgIHVz ZSBBUkNIX1BGTl9PRkZTRVQgZm9yIHBmbl90b19wYWRkci9wYWRkcl90b19wZm4gdHJhbnNsYXRp b25zCj4+Pj4+Cj4+Pj4+IFlvdXIgZGVzY3JpcHRpb24gc291bmRzIHdlIHNob3VsZCBmaXggdGhl IHdheSB0byBjb252ZXJ0IHBhZGRyIHRvIHBmbiwKPj4+Pj4gYnV0IHRoZXJlIGlzIG5vIHN1Y2gg Zml4IGluIHlvdXIgcGF0Y2guCj4+Pj4KPj4+Pgo+Pj4+IFllcywgbXkgZmlyc3QgdmVyc2lvbiBk b2VzIGp1c3QgYXMgd2hhdCB5b3Ugc2F5LiBCdXQgdGhlIHBhdGNoIGlzIGh1Z2UuCj4+Pj4gSSB0 aGluZyB0aGlzIHBhdGNoIGlzIG11Y2ggYmV0dGVyLgo+Pj4+Cj4+Pj4gVGhvdWdoIGNvbW1pdCAx ZTkzZWU3NWY5ZDQ3YzIxOWU4MzMyMTBlYjMxZTRhNzQ3Y2MzYThkIGJyaW5ncyBzb21lIHByb2Js ZW1zCj4+Pj4gLiBCdXQgd2UgY2FuIGVhc3kgZml4IHRoZW0uCj4+Pj4KPj4+Pgo+Pj4+IE1ha2Ug bXkgcGxhdGZvcm0gZm9yIGV4YW1wbGU6CTgwMDAwIHNwYXJzZSBtZW1vcnkgbW9kZWwuCj4+Pj4g bWVtIDFHIDsgU0VDVElPTl9TSVpFX0JJVFMgMjYKPj4+Pgo+Pj4+IChhKSBmb3IgdGhlIGtlcm5l bAo+Pj4+Cj4+Pj4gICAgc2VjdGlvbiBudW1iZXIgfHBoeSBzdGFydCB8ICBzdGFydCBwZm4gICB8 IGVuZCBwZm4gIHwgIHZhbGlkICB8IG1lbV9zZWN0aW9uICAJfAo+Pj4+IAkwCSAgIHwwCSAgICAg IHwgICAwICAgICAgICAgIHwgIDNmZmYgICAgfCAgIDAJICB8ICAgWzBdCXwKPj4+PiAJMQkgICB8 NDAwMDAwMCAgIHwgICA0MDAwICAgICAgIHwgIDdmZmYgICAgfCAgIDAJICB8ICAgWzFdCXwKPj4+ PiAJMgkgICB8ODAwMDAwMCAgIHwgICA4MDAwICAgICAgIHwgIGJmZmYgICAgfCAgIDAJICB8ICAg WzJdCXwKPj4+Pgo+Pj4+ICAgIFtjdXQgLi4uXQo+Pj4+Cj4+Pj4gICAgICAgMzIgCSAgIHw4MDAw MDAwMCAgfCAgODAwMDAJICAgICB8IDgzZmZmCXwgICAxCSAgfCAgWzMyXQl8Cj4+Pj4gICAgICAg MzMgCSAgIHw4NDAwMDAwMCAgfCAgODQwMDAJICAgICB8IDg3ZmZmCXwgICAxCSAgfCAgWzMzXQl8 Cj4+Pj4KPj4+PiAgICBbY3V0IC4uLl0KPj4+Pgo+Pj4+ICAgICAgIDQ3IAkgICB8YmZjMDAwMDAg IHwgIGJmYzAwMAkgICAgIHwgYmZmZmYJfCAgIDEJICB8ICBbNDddCXwKPj4+Pgo+Pj4+Cj4+Pj4g IChiKSBmb3IgbWFrZWR1bXBmaWxlCj4+Pj4KPj4+Pgo+Pj4+ICAgICAgIDAJICAgfDgwMDAwMDAw ICB8ICAgIDAgICAgICAgICB8ICAzZmZmICAgIHwgICAwCSAgfCAgIFswXQl8Cj4+Pj4gICAgICAg MSAJICAgfDg0MDAwMDAwICB8ICA0MDAwICAgICAgICB8ICA3ZmZmICAgIHwgICAwCSAgfCAgIFsx XQl8Cj4+Pj4KPj4+PiAgICBbY3V0IC4uLl0KPj4+Pgo+Pj4+ICAgICAgIDE1IAkgICB8YmZjMDAw MDAgIHwgIDNjMDAwICAgICAgIHwgM2ZmZmYJfCAgIDEJICB8ICBbMTVdCXwKPj4+Pgo+Pj4+Cj4+ Pj4gU28gbWFrZWR1bXBmaWxlIHJlbW92ZXMgdGhlIG9mZnNldCBvZiBzZWN0aW9uIG51bWJlciBh bmQgcGZuLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4KPj4+PiBwZm4gYW5kIHNlY3Rpb24gbnVt YmVyIHJlbWFpbnMgYXMgYmVmb3JlLiBTbyB0aGlzIHdpbGwgbm90IGludHJvZHVjZSBwcm9ibGVt Lgo+Pj4+Cj4+Pj4gQnV0IHRoZSBzZWN0aW9uIG5lbWJlciBhbmQgbWVtX3NlY3Rpb24gYXJyYXkg ZG8gbm90IG1hdGNoIGVhY2ggb3RoZXIuCj4+Pj4KPj4+PiBGb3IgcGFkZHIgODAwMDAwMDAKPj4+ PiAJa2VybmVsICAgICAgICA6IHBmbiA4MDAwOiBtZW1fc2VjdGlvbjogMzIKPj4+PiAJbWFrZWR1 bXBmaWxlICA6IHBmbiAwICAgOiBtZW1fc2VjdGlvbjogMAo+Pj4+Cj4+Pj4gQW5kIHdlIGRvIG5v dCByZW1vdmUgdGhlIG9mZnNldCBvZiBhcnJheSBtZW1fc2VjdGlvbi4gU28gbWFrZWR1bW9maWxl IGNhbiBub3QKPj4+PiBnZXQgdGhlIHJpZ2h0IHBhZ2Ugc3RydWN0LiBXaGVuIGZpeCB0aGlzIG9m ZnNldCwgZXZlcnl0aGluZyBpcyBvay4KPj4+Cj4+PiBUaGFua3MgZm9yIHlvdXIgZXhwbGFuYXRp b24sIEkgdW5kZXJzdGFuZCB0aGUgc3BhcnNlX21lbSBjYXNlLgo+Pj4KPj4+PiBCdXQgSWYgd2Ug cmV2ZXJ0IDFlOTNlZTc1ZjlkOgo+Pj4+Cj4+Pj4gIChhKSBjb2RlcyBsaWtlcyAiZm9yKHBmbiA9 IDAiICwiZm9yX2VhY2hfY3ljbGUoMCIgYW5kICJmb3IgKHNlY3Rpb25fbnIgPSAwIiAgc2hvdWxk IGJlIGNoYW5nZWQ7Cj4+Pj4gIChiKSBEdWUgdG8gInNldF9iaXRfb25fMXN0X2JpdG1hcChwZm4s IGN5Y2xlKSIsIHdlIHdpbGwgd2FzdGUgc29tZSBiaXRzLgo+Pj4+ICAoYykgY3Jhc2ggdXRpbGl0 eSBzaG91bGQgYWxzbyBiZSBjaGFuZ2VkLgo+Pj4+Cj4+Pj4gQlRXLCB3aGVuIEFSQ0hfUEZOX09G RlNFVD0wLCBzZWN0aW9uIG5lbWJlciBhbmQgbWVtX3NlY3Rpb24gbWF0Y2hlcyBlYWNoIG90aGVy Li4KPj4+PiBTbyBubyBwcm9ibGVtIHdhcyBpbnRyZHVjZWQKPj4+Pgo+Pj4+Pgo+Pj4+Pj4gRm9y IHRoZSBjYXNlcyBvZiBBUkNIX1BGTl9PRkZTRVQ9MCBvciBub24gc3BhcnNlIG1lbW9ybXkgbW9k ZWwsCj4+Pj4+PiB0aGlzIGludHJvZHVjZXMgbm8gcHJvYmxlbS4KPj4+Pj4+Cj4+Pj4+PiBCdXQg Zm9yIG15IGFybWE5IHBsYXRmb3JtIHdpdGggQVJDSF9QRk5fT0ZGU0VUPTB4ODAwMDAgYW5kIHNw YXJzZQo+Pj4+Pj4gbWVtb3J5IG1vZGVsLiBNYWtlZHVtZmlsZSBjYW4gbm90IGdldCB0aGUgbWVt X21hcCBjb3JyZWN0bHkuIEl0IGl0Cj4+Pj4+PiBkdWUgdG8gdGhlcmUgaXMgc3RpbGwgb2Zmc2V0 IGZvciBtZW1fbWFwIGFycmF5Lgo+Pj4+Pgo+Pj4+PiBXaHkgdGhlIG90aGVyIG1lbW9yeSBtb2Rl bHMgYXJlIE9LPyBUaGVyZSBpcyBubyBvZmZzZXQgZXZlbiBpZiBBUkNIX1BGTl9PRkZTRVQhPTA/ Cj4+Pj4+IEkgbmVlZCBtb3JlIGV4cGxhbmF0aW9uIHRvIHVuZGVyc3RhbmQgdGhpcyBpc3N1ZS4K Pj4+Pgo+Pj4+ICgxKSBGb3IgZmxhdG1lbSwgdGhlIG1lbV9tYXAgaXMgY29udGludW91cywgQW5k IHRoZSBzdGFydCBhZGRyZXNzIG9mIG1lbV9tYXAgY29tZXMgZnJvbQo+Pj4+IHRoZSBrZXJuZWwg c3ltYm9sLgo+Pj4+Cj4+Pj4gRm9yIHBhZGRyIDgwMDAwMDAwCj4+Pj4gCWtlcm5lbCAgICAgICAg OiBwZm4gODAwMDogbWVtX21hcFswXQo+Pj4+IAltYWtlZHVtcGZpbGUgIDogcGZuIDAgICA6IG1l bV9tYXBbMF0KPj4+Pgo+Pj4+IFRoaXMgd2lsbCBub3QgaW50cm9kdWNlIHByb2JsZW0uCj4+Pgo+ Pj4gSSB1bmRlcnN0YW5kIHRoYXQgYWxsb2Nfbm9kZV9tZW1fbWFwKCkgYWxsb2NhdGVzIG1lbV9t YXAgZm9yIGZsYXRtZW0gYW5kIGl0Cj4+PiBjb25zaWRlcnMgQVJDSF9QRk5fT0ZGU0VUIGxpa2U6 Cj4+Pgo+Pj4gICAgICAgICBpZiAocGdkYXQgPT0gTk9ERV9EQVRBKDApKSB7Cj4+PiAgICAgICAg ICAgICAgICAgbWVtX21hcCA9IE5PREVfREFUQSgwKS0+bm9kZV9tZW1fbWFwOwo+Pj4gI2lmZGVm IENPTkZJR19IQVZFX01FTUJMT0NLX05PREVfTUFQCj4+PiAgICAgICAgICAgICAgICAgaWYgKHBh Z2VfdG9fcGZuKG1lbV9tYXApICE9IHBnZGF0LT5ub2RlX3N0YXJ0X3BmbikKPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbV9tYXAgLT0gKHBnZGF0LT5ub2RlX3N0YXJ0X3BmbiAtIEFSQ0hf UEZOX09GRlNFVCk7Cj4+PiAjZW5kaWYgLyogQ09ORklHX0hBVkVfTUVNQkxPQ0tfTk9ERV9NQVAg Ki8KPj4KPj4gSW4gYWxsIGNhc2VzLCBtZW1fbWFwIGluZGljYXRlcyB0aGUgc3RhcnQgYWRkcmVz cyBvZiB0aGUgbWVtX21hcC4KPj4KPj4gSSB0aGluayB0aGlzIGlzIHRoZSBpbm5lciBwcm9jZXNz IGZvciB0aGUga2VybmVsLCB3aGljaCB3ZSBzaG91bGQgbm90IGNvbnNpZGVyLiBCZWNhdXNlIG9u Y2UKPj4gd2UgZ2V0IHRoZSBtZW1fbWFwIHN5bWJvbCB2YWx1ZSBhbmQgdGhlIG1heHBmbiBmcm9t IHRoZSB2bWNvcmUuIFdlIGtub3cgdGhlIHN0YXJ0IGFuZCBsZW5ndGgKPj4gb2YgbWVtX21hcC4g QW5kIHdlIGNhbiBnZXQgZXZlcnkgcGFnZSBzdHJ1Y3QgY29ycmVjdGx5Lgo+Pgo+PiBGb3IgbWFr ZWR1bXBmaWxlOgo+Pgo+PiBnZXRfbW1fZmxhdG1lbSh2b2lkKQo+PiB7Cj4+ICAuLi4uCj4+IDI0 MDkgICAgICAgICBpZiAoIXJlYWRtZW0oVkFERFIsIFNZTUJPTChtZW1fbWFwKSwgJm1lbV9tYXAs IHNpemVvZiBtZW1fbWFwKS8vZ2V0IHRoZSBtZW1fbWFwIHZhbHVlCj4+ICAuLi4uCj4+IDI0MjEg ICAgICAgICBpZiAoaXNfeGVuX21lbW9yeSgpKQo+PiAyNDIyICAgICAgICAgICAgICAgICBkdW1w X21lbV9tYXAoMCwgaW5mby0+ZG9tMF9tYXBuciwgbWVtX21hcCwgMCk7Cj4+IDI0MjMgICAgICAg ICBlbHNlCj4+IDI0MjQgICAgICAgICAgICAgICAgIGR1bXBfbWVtX21hcCgwLCBpbmZvLT5tYXhf bWFwbnIsIG1lbV9tYXAsIDApOwo+Pgo+PiB9Cj4+Cj4+IFNvIGZvciBmbGF0IG1lbW9yeSBtb2Rl bCwgbWFrZWR1bXBmaWxlIGNhbiBhbHdheXMgZ2V0IHRoZSBjb3JyZWN0IG1lbV9tYXAuCj4gCj4g SSBkb24ndCB3b3JyeSB0aGF0IHdlIGNhbid0IGdldCB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUg bWVtX21hcC4KPiAKPiBZb3Ugc2FpZCB0aGUga2VybmVsIGRvZXNuJ3QgY29uc2lkZXIgQVJDSF9Q Rk5fT0ZGU0VUIHdoZW4gY29udmVydGluZyBwYWRkcgo+IHRvIHBmbiwgdGhpcyBzb3VuZHMgdGhl IGtlcm5lbCBkb2Vzbid0IG1ha2UgYW4gZXhjZXB0aW9uIGZvciB0aGUgcGFnZXMgbG93ZXIKPiB0 aGFuIEFSQ0hfUEZOX09GRlNFVCBpbiBwYWdlIG1hbmFnZW1lbnQgdG8gbWUuCj4gSSBtZWFuIEkg d29ycnkgYWJvdXQgYSBzaXR1YXRpb24gbGlrZSBiZWxvdzoKPiAKPiAoRm9yIGV4YW1wbGUsIEFS Q0hfUEZOX09GRlNFVD0weDQpCj4gCj4gICAgICAgcGh5cyBhZGRyICAgfCAgIHBmbiBmb3IgICAg fCAgcGZuIGZvciAgICAgICB8ICB2YWxpZCAgfCAgbWVtX21hcCAgCj4gICAgICAgICAgICAgICAg ICAgfCAgIGtlcm5lbCAgICAgfCAgbWFrZWR1bXBmaWxlICB8ICAgICAgICAgfChzdHJ1Y3QgcGFn ZSkKPiAgICAgLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tCj4gICAgICAgICAwIC0gIGZmZiAgfCAgICAgIDAgICAgICAg fCAgICAgICBYICAgICAgICB8ICAgIDAgICAgfCAgICBbMF0gICAgCj4gICAgICAxMDAwIC0gMWZm ZiAgfCAgICAgIDEgICAgICAgfCAgICAgICBYICAgICAgICB8ICAgIDAgICAgfCAgICBbMV0gICAg Cj4gICAgICAyMDAwIC0gMmZmZiAgfCAgICAgIDIgICAgICAgfCAgICAgICBYICAgICAgICB8ICAg IDAgICAgfCAgICBbMl0gICAgCj4gICAgICAzMDAwIC0gM2ZmZiAgfCAgICAgIDMgICAgICAgfCAg ICAgICBYICAgICAgICB8ICAgIDAgICAgfCAgICBbM10gICAgCj4gICAgICA0MDAwIC0gNGZmZiAg fCAgICAgIDQgICAgICAgfCAgICAgICAwICAgICAgICB8ICAgIDEgICAgfCAgICBbNF0gICAgCj4g ICAgICA1MDAwIC0gNWZmZiAgfCAgICAgIDUgICAgICAgfCAgICAgICAxICAgICAgICB8ICAgIDEg ICAgfCAgICBbNV0gICAgCj4gICAgICA2MDAwIC0gNmZmZiAgfCAgICAgIDYgICAgICAgfCAgICAg ICAyICAgICAgICB8ICAgIDEgICAgfCAgICBbNl0gICAgCj4gICAgICAgICAgLi4uCj4gCj4gV2hl biB3ZSBjaGVjayB0aGUgcGFnZSBmbGFnIG9mIHRoZSBwYWdlWzQwMDAtNGZmZl0gaW4gbWFrZWR1 bXBmaWxlLCB3ZQo+IGhhdmUgdG8gcmVhZCBtZW1fbWFwWzRdLCBidXQgbWFrZWR1bXBmaWxlIHJl YWRzIG1lbV9tYXBbMF0gZHVlIHRvCj4gcGFkZHJfdG9fcGZuKCkuIFRoaXMgaXMgbXkgd29ycnku CgpIaSBBdHN1c2hpLAoKU29ycnksIEkgbWlzc2VkIHRoZSBwb2ludC4KCigxKWZvciBmbGF0bWVt IG1vZGVsLCBrZXJuZWwgZ2V0IHRoZSBwYWdlIHN0cnVjdCBhZnRlciBtaW51c2luZyBBUkNIX1BG Tl9PRkZTRVQKIDI4ICNpZiBkZWZpbmVkKENPTkZJR19GTEFUTUVNKQogMjkKIDMwICNkZWZpbmUg X19wZm5fdG9fcGFnZShwZm4pICAgICAgKG1lbV9tYXAgKyAoKHBmbikgLSBBUkNIX1BGTl9PRkZT RVQpKQogMzEgI2RlZmluZSBfX3BhZ2VfdG9fcGZuKHBhZ2UpICAgICAoKHVuc2lnbmVkIGxvbmcp KChwYWdlKSAtIG1lbV9tYXApICsgXAogMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVJDSF9QRk5fT0ZGU0VUKQoKU28sIDFlOTNlZTc1ZjlkNDdjMjE5ZTgzMzIxMGViMzFlNGE3 NDdjYzNhOGQgZG8gbm8gaGFybS4KCgooMilmb3IgZGlzY29udGlnbWVtIG1vZGVsCgogMTggI2lm bmRlZiBhcmNoX2xvY2FsX3BhZ2Vfb2Zmc2V0CiAxOSAjZGVmaW5lIGFyY2hfbG9jYWxfcGFnZV9v ZmZzZXQocGZuLCBuaWQpICAgICAgICBcCiAyMCAgICAgICAgICgocGZuKSAtIE5PREVfREFUQShu aWQpLT5ub2RlX3N0YXJ0X3BmbikKIDIxICNlbmRpZgogMjIKIDIzICNlbmRpZiAvKiBDT05GSUdf RElTQ09OVElHTUVNICovCgouLi4uLgoKIDMzICNlbGlmIGRlZmluZWQoQ09ORklHX0RJU0NPTlRJ R01FTSkKIDM0CiAzNSAjZGVmaW5lIF9fcGZuX3RvX3BhZ2UocGZuKSAgICAgICAgICAgICAgICAg ICAgICBcCiAzNiAoeyAgICAgIHVuc2lnbmVkIGxvbmcgX19wZm4gPSAocGZuKTsgICAgICAgICAg ICBcCiAzNyAgICAgICAgIHVuc2lnbmVkIGxvbmcgX19uaWQgPSBhcmNoX3Bmbl90b19uaWQoX19w Zm4pOyAgXAogMzggICAgICAgICBOT0RFX0RBVEEoX19uaWQpLT5ub2RlX21lbV9tYXAgKyBhcmNo X2xvY2FsX3BhZ2Vfb2Zmc2V0KF9fcGZuLCBfX25pZCk7XAogMzkgfSkKCgpUaGUga2VybmVsIG1p bnVzZXMgIk5PREVfREFUQShuaWQpLT5ub2RlX3N0YXJ0X3BmbiIuIFNvIHJlbGF0aXZlIHBvc3Rp b24gaXMgZ290CmZvciB0aGUgdHJhbmZzZXIuCgpTbyB0byBnZXQgcGFnZSBzdHJ1Y3QKCmtlcm5l bCAgICAgICAgOiAgcGFkZHIgLS0+IHBmbiAgLVtjb25zaWRlciBBUkNIX1BGTl9PRkZTRVQgXSAt PiBwYWdlCm1ha2VkdW1wZmlsZSAgOiAgcGFkZHIgLVtjb25zaWRlciBBUkNIX1BGTl9PRkZTRVRd IC0+IHBmbiAgLS0+IHBhZ2UKCgoKU28gSSB0aGluayBjb21taXQgMWU5M2VlNzVmOWQ0N2MyMTll ODMzMjEwZWIzMWU0YTc0N2NjM2E4ZCBjYW4gZml0IGRpc2NvbnRpZ21lbSBhbmQgZmxhdG1lbS4K QWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaCwgaXQgYWxzbyBmaXRzIHNwYXJzZW1lbSBtb2RlbC4g V2hhdCBkbyB5b3UgdGhpbms/CgpUaGFua3MsCkxpdSBIdWEKCgo+IAo+IEFjdHVhbGx5LCB0aGUg c2ltaWxhciBnYXAgZXhpc3RzIGluIHRoZSBzcGFyc2VfbWVtIGNhc2UgYXMgeW91IGRlc2NyaWJl ZCwKPiBzbyBJIHN1c3BlY3Qgd2UgaGF2ZSB0byB0YWtlIGNhcmUgb2YgaXQgYWxzbyBmb3Igb3Ro ZXIgbWVtb3J5IG1vZGVscy4KPiAKPj4+ICAgICAgICAgfQo+Pj4KPj4+IFNvIHRoZXJlIGlzIG5v IHByb2JsZW0gaW4gdGhpcyBtb2RlbCBzaW5jZSB0aGUgdG9wIG9mIG1lbV9tYXAgY29ycmVzcG9u ZHMgdG8KPj4+IEFSQ0hfUEZOX09GRlNFVCwgcmlnaHQ/Cj4+Cj4+IEkgZG9uJ3QgdGhpbmsgc28u IElzIGl0IGNsZWFyIGZvciBteSB3b3JkcyBhYm92ZT8KPj4KPj4+Cj4+Pj4gKDIpIEZvciBkaXNj b250aWdtZW0sIGl0IG1hbmFnZXMgdGhlIG1lbV9tYXAgd2l0aCBub2RlX21lbWJsay4gY29tbWl0 Cj4+Pj4gMWU5M2VlNzVmOWQ0N2MyMSBhbHNvIGRvZXMgbm8gaGFybS4KPj4+Cj4+PiBhbGxvY19u b2RlX21lbV9tYXAoKSBhbGxvY2F0ZXMgbWVtX21hcCBhbHNvIGZvciBkaXNjb250aWdtZW0sIGJ1 dCBJIGNhbid0IGZpbmQKPj4+IGFueSBjb2RlcyB0byBjb25zaWRlciBBUkNIX1BGTl9PRkZTRVQg Zm9yIHRoaXMgbW9kZWwuCj4+PiBTbyBJIHN1c3BlY3QgdGhlIG1pc21hdGNoIGJldHdlZW4gdGhl IHBmbiBmb3IgbWFrZWR1bXBmaWxlIGFuZCB0aGUgYWN0dWFsIGNvbnRlbnQKPj4+IG9mIG1lbV9t YXAgY2FuIGV4aXN0LiBDb3VsZCB5b3UgZXhwbGFpbiB3aHkgdGhpcyBjYXNlIGlzIE9LIGluIG1v cmUgZGV0YWlsPwo+Pj4KPj4gQWN0dWFsbHkgSSBkaWQgbm90IHRlc3QgdGhpcyBtZW1vcnkgbW9k ZWwuIEkgcmVhY2ggbXkgY29uY2x1c2lvbiB2aWEgdGhlIGNvZGVzLgo+Pgo+PiBnZXRfbW1fZGlz Y29udGlnbWVtCj4+IHsKPj4gLi4uLgo+PiBmb3IgKGkgPSAwOyBpIDwgdnQubnVtbm9kZXM7IGkr KykgeyAgLy9sb29wIGZvciBldmVyeSBub2RlCj4+IDI1OTEgICAgICAgICAgICAgICAgIGlmICgh cmVhZG1lbShWQUREUiwgcGdkYXQgKyBPRkZTRVQocGdsaXN0X2RhdGEubm9kZV9zdGFydF9wZm4p LAo+PiAyNTkyICAgICAgICAgICAgICAgICAgICAgJnBmbl9zdGFydCwgc2l6ZW9mIHBmbl9zdGFy dCkpIHsgICAgICAgICAgIC8vZ2V0IHBmbl9zdGFydCBmb3IgdGhpcyBub2RlCj4+IC4uLi4KPj4g MjU5NiAgICAgICAgICAgICAgICAgaWYgKCFyZWFkbWVtKFZBRERSLHBnZGF0K09GRlNFVChwZ2xp c3RfZGF0YS5ub2RlX3NwYW5uZWRfcGFnZXMpLAo+PiAyNTk3ICAgICAgICAgICAgICAgICAgICAg Jm5vZGVfc3Bhbm5lZF9wYWdlcywgc2l6ZW9mIG5vZGVfc3Bhbm5lZF9wYWdlcykpIHsgLy9nZXQg dGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIG5vZGUKPj4KPj4gMjYwMyAgICAgICAgICAgICAg ICAgaWYgKFNZTUJPTCh2bWVtX21hcCkgPT0gTk9UX0ZPVU5EX1NZTUJPTCkgewo+PiAyNjA0ICAg ICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVhZG1lbShWQUREUiwgcGdkYXQgKyBPRkZTRVQo cGdsaXN0X2RhdGEubm9kZV9tZW1fbWFwKSwgIC8vZ2V0IHRoZSBtZW1fbWFwIGZvciB0aGlzCj4+ IG5vZGUuCj4+IDI2MDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1fbWFwLCBzaXpl b2YgbWVtX21hcCkpIHsKPj4gMjYwNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVS Uk1TRygiQ2FuJ3QgZ2V0IG1lbV9tYXAuXG4iKTsKPj4gMjYwNyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKPj4gMjYwOCAgICAgICAgICAgICAgICAgICAgICAg ICB9Cj4+IDI2MDkgICAgICAgICAgICAgICAgIH0gZWxzZQo+PiAyNjEwICAgICAgICAgICAgICAg ICAgICAgICAgIG1lbV9tYXAgPSB2bWVtX21hcCArIChTSVpFKHBhZ2UpICogcGZuX3N0YXJ0KTsK Pj4gLi4uLgo+PiB9Cj4+Cj4+IFNvIEkgdGhpbmsgZm9yIGRpc2NvbnRpZ21lbSwgbWFrZWR1bXBm aWxlIGNhbiBnZXQgdGhlIHN0YXJ0IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBtZW1fbWFwIGZyb20g dm1jb3JlIGRpcmVjdGx5Lgo+PiBBbmQgRXZlcnl0aGluZyBjYW4gZ28gd2VsbCB3aXRob3V0IEFS Q0hfUEZOX09GRlNFVC4KPiAKPiBUaGUgc2FtZSBjYW4gYmUgc2FpZCwgaXMgaXQgbm90IG5lZWRl ZCB0byBjb25zaWRlciBBUkNIX1BGTl9PRkZTRVQKPiB0byBnZXQgYSBwYWdlIHN0cnVjdCBmcm9t IHRoZSBtZW1fbWFwPwo+IAo+IAo+IFRoYW5rcwo+IEF0c3VzaGkgS3VtYWdhaQo+IAo+Pgo+PiBQ ZXJoYXBzIEkgbmVlZCBzb21lIHRlc3RzIG9uIGRpc2NvbnRpZ21lbS4gRGlkIEkgZXhwbGFuIG15 IGlkZWEgY2xlYXJseT8KPj4KPj4KPj4KPj4+Cj4+PiBUaGFua3MKPj4+IEF0c3VzaGkgS3VtYWdh aQo+Pj4KPj4+PiBXaGF0IGRvIHlvdSB0aGluaz8KPj4+Pgo+Pj4+IFRoYW5rcywKPj4+PiBMaXUg SHVhCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmtl eGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK