From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by kanga.kvack.org (Postfix) with ESMTP id DDE346B000A for ; Thu, 16 Aug 2018 02:25:37 -0400 (EDT) Received: by mail-pg1-f200.google.com with SMTP id m25-v6so1593479pgv.22 for ; Wed, 15 Aug 2018 23:25:37 -0700 (PDT) Received: from smtp.tom.com (smtprz14.163.net. [106.3.154.247]) by mx.google.com with ESMTPS id 199-v6si886348pgg.366.2018.08.15.23.25.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Aug 2018 23:25:36 -0700 (PDT) Received: from antispam1.tom.com (unknown [172.25.16.55]) by freemail01.tom.com (Postfix) with ESMTP id 065491C80ECE for ; Thu, 16 Aug 2018 14:25:34 +0800 (CST) Received: from antispam1.tom.com (antispam1.tom.com [127.0.0.1]) by antispam1.tom.com (Postfix) with ESMTP id 0174A100138E for ; Thu, 16 Aug 2018 14:25:34 +0800 (CST) Received: from antispam1.tom.com ([127.0.0.1]) by antispam1.tom.com (antispam1.tom.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IuMzZIJCnwvW for ; Thu, 16 Aug 2018 14:25:33 +0800 (CST) Date: Thu, 16 Aug 2018 14:25:29 +0800 Subject: =?UTF-8?Q?reply=EF=BC=9ARe:_[PATCH]_zsmalloc:_?= =?UTF-8?Q?fix_linking_bug_in_init=5Fzspage?= Message-ID: References: <20180810002817.2667-1-zhouxianrong@tom.com> <20180813060549.GB64836@rodete-desktop-imager.corp.google.com> <20180813105536.GA435@jagdpanzerIV> <20180814002416.GA34280@rodete-desktop-imager.corp.google.com> <1784999539.213028.1534378242020.JavaMail.root@rz-web2> <20180816034642.GA62516@rodete-desktop-imager.corp.google.com> From: "zhouxianrong@tom.com" MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 Sender: owner-linux-mm@kvack.org List-ID: To: Minchan Kim Cc: "sergey.senozhatsky.work@gmail.com" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "ngupta@vflare.org" , "zhouxianrong@huawei.com" , "vbabka@suse.cz" , "yudongbin@hisilicon.com" SGkgTWluY2hhbjo8YnI+ICAgV2UgZG8gbm90IGtub3cgaG93IHRvIHJlcGV0aXRpb24gb2YgdGhp cyBpc3N1ZS4gSnVzdCBtZXQgdGhpcyBwcm9ibGVtIHR3byB0aW1lcy4gQnV0IHl1ZG9uZ2JpbiBm aW5kIHRoYXQgaWYgZGlzYWJsZWQgdGhlIGZ1bmN0aW9uIHpzX3BhZ2VfaXNvbGF0ZSB0aGlzIGlz c3VlIG5ldmVyIGhhcHBlbi4gSXQgc2VlbXMgbGlrZSBtYXBwaW5nJ3MgLm1pZ3JhdGVwYWdlIGFm ZmVjdHMgdGhpcyBpc3N1ZSAuRm9yIG5vdyB3ZSBqdXN0IGtub3cgdGhlc2UuICBBcyB5b3Ugc2Fp ZCB0aGUgbGFzdCBwYXJ0aWFsIG9iamVjdCBpcyBuZXZlciBhbGxvY2F0ZWQgYmVjYXVzZSBpdHMg enNwYWdlIGFscmVhZHkgaGFzIGJlZW4gbW92ZWQgdG8gWlNfRlVMTC4gPGJyPjxicj5USEFOS1M8 aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv aHRtbDsgY2hhcnNldD1VVEYtOCI+PC9oZWFkPjxib2R5PjxkaXYgY2xhc3M9InF1b3RlIiBzdHls ZT0ibGluZS1oZWlnaHQ6IDEuNSI+PG1pbmNoYW5Aa2VybmVsLm9yZz48emhvdXhpYW5yb25nQHRv bS5jb20+PGJyIHR5cGU9ImF0dHJpYnV0aW9uIj48YmxvY2txdW90ZSBjbGFzcz0icXVvdGUiIHN0 eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5n LWxlZnQ6MWV4Ij5IaSB6aG91eGlhbnJvbmcsPGJyPjxicj5QbGVhc2UgY291bGQgeW91IGJlIG1v cmUgc2VwY2lmaWMgd2hhdCBjYXNlIGNhbiB3ZSBlbmNvdW50ZXIgYmVsb3cgQlVHPzxicj4oUGxl YXNlIHVzZSBwbGFpbiB0ZXh0KTxicj5XaGF0IHpzX2NsYXNzIHNpemUgZGlkIHlvdSB0aGlzIHRo aXMgcHJvYmxlbT88YnI+Q291bGQgeW91IHNheSBob3cgdGhhdCBjYW4gaGFwcGVuPzxicj48YnI+ QXMgSSB3cm90ZSBpbiBvdGhlciByZXBseSwgenNtYWxsb2Mgc2hvdWxkIG5ldmVyIGFsbG9jYXRl IGxhc3QgcGFyaXRhbDxicj5vYmplY3Qgd2hlbiBJIGxvb2sgYXQgc291cmNlIGNvZGUgc28gd2Ug bmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWM8YnI+Y2FzZSB3ZSBhcmUgbWlzc2luZyBp ZiBpdCdzIGEgcmVhbCB6c21hbGxvYyBidWcuPGJyPjxicj5QbGVhc2UgZXhwbGFpbiBob3cgdGhh dCBjYW4gYmUgaGFwcGVuIHdpdGggYSByZWFsIGV4YW1wbGUuPGJyPjxicj5UaGFua3MuPGJyPjxi cj5PbiBUaHUsIEF1ZyAxNiwgMjAxOCBhdCAwODoxMDo0MkFNICswODAwLCB6aG91eGlhbnJvbmcg d3JvdGU6PGJyPiZndDsgSDxzcGFuIGxhYmVsdHlwZT0idHJhbnNwb25kIj48bWluY2hhbiBrZXJu ZWw9IiIgb3JnPSIiPmk6PGJyPjxicj4mbmJzcDsgSSBhbSBzb3JyeSBzbyBsYXRlciBmb3IgcmVw bHlpbmcgdGhpcyBtZXNzYWdlIGR1ZSB0byBzb21ldGhpbmcuPGJyPjxicj5UaGlzIGlzIHRoZSBi YWNrdHJhY2UgZWRpdGVkIGJ5IG1lIHdlIG1ldC48YnI+PGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVh ZC0zXS0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLTxicj5bcGlkOjM0NzEsY3B1 NCx0aHJlYWQtM11rZXJuZWwgYnVnIGF0IC4uLy4uLy4uLy4uLy4uLy4uL21tL3pzbWFsbG9jLmM6 MTQ1NSE8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdaW50ZXJuYWwgZXJyb3I6IG9vcHMgLSBi dWc6IDAgWyMxXSBwcmVlbXB0IHNtcDxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM11tb2R1bGVz IGxpbmtlZCBpbjo8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdY3B1OiA0IHBpZDogMzQ3MSBj b21tOiB0aHJlYWQtMyB0YWludGVkOiBnJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNC45Ljg0ICMx PGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXRnaWQ6IDcxNSBjb21tOiBwcm9jLWE8YnI+W3Bp ZDozNDcxLGNwdTQsdGhyZWFkLTNddGFzazogZmZmZmZmY2M4M2JhMWQwMCB0YXNrLnN0YWNrOiBm ZmZmZmZjYWQ5OWIwMDAwPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXBjIGlzIGF0IHpzX21h cF9vYmplY3QrMHgxZTAvMHgxZjA8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdbHIgaXMgYXQg enNfbWFwX29iamVjdCsweDljLzB4MWYwPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXBjIDog W10gbHIgOiBbXSBwc3RhdGU6IDIwMDAwMTQ1PGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXNw IDogZmZmZmZmY2FkOTliMzUzMDxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM114Mjk6IGZmZmZm ZmNhZDk5YjM1MzAgeDI4OiBmZmZmZmZjYzk3NTMzYzQwPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVh ZC0zXXgyNzogZmZmZmZmY2M5NzRkZDcyMCB4MjY6IGZmZmZmZmNhZDk5YjAwMDA8YnI+W3BpZDoz NDcxLGNwdTQsdGhyZWFkLTNdeDI1OiAwMDAwMDAwMDAxZmE5ZjgwIHgyNDogMDAwMDAwMDAwMDAw MDAwMjxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM114MjM6IGZmZmZmZjg5YzNhMjcwMDAgeDIy OiBmZmZmZmY4OWMzMGU2MDAwPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXgyMTogZmZmZmZm ODljMzU0ZjAwMCB4MjA6IGZmZmZmZjg5YzMyMzQ3MjA8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFk LTNdeDE5OiAwMDAwMDAwMDAwMDAwZjkwIHgxODogMDAwMDAwMDAwMDAwMDAwODxicj5bcGlkOjM0 NzEsY3B1NCx0aHJlYWQtM114MTc6IDAwMDAwMDAwYmJiODc3ZmYgeDE2OiAwMDAwMDAwMGZmZGJh NTYwPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXXgxNTogZmZmZmZmY2FlYWIxM2ZmNSB4MTQ6 IDAwMDAwMDAwOWUzNzc5YjE8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdeDEzOiAwMDAwMDAw MDAwMDAwZmY0IHgxMjogZmZmZmZmY2FlYWIxM2ZkOTxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQt M114MTE6IGZmZmZmZmNhZWFiMTNmZmEgeDEwOiBmZmZmZmZjYWVhYjEzZmY4PGJyPltwaWQ6MzQ3 MSxjcHU0LHRocmVhZC0zXXg5IDogZmZmZmZmY2E4Y2MyMDFiOCB4OCA6IGZmZmZmZmNhOGNjMjAx OTA8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdeDcgOiAwMDAwMDAwMDAwMDAwMDhlIHg2IDog MDAwMDAwMDAwMDAwMDA5Yjxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM114NSA6IDAwMDAwMDAw MDAwMDAwMDAgeDQgOiAwMDAwMDAwMDAwMDAwMDAxPGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0z XXgzIDogMDAwMDAwNDJkNDJhOTAwMCB4MiA6IDAwMDAwMDAwMDAwMDA5ZDA8YnI+W3BpZDozNDcx LGNwdTQsdGhyZWFkLTNdeDEgOiBmZmZmZmZjYzk5NGRkYmMwIHgwIDogMDAwMDAwMDAwMDAwMDAw MDxicj48YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdIHpzX21hcF9vYmplY3QrMHgxZTAvMHgx ZjA8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdIHpzX3pwb29sX21hcCsweDQ0LzB4NTQ8YnI+ W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdIHpwb29sX21hcF9oYW5kbGUrMHg0NC8weDU4PGJyPltw aWQ6MzQ3MSxjcHU0LHRocmVhZC0zXSB6cmFtX2J2ZWNfd3JpdGUrMHgyMmMvMHg3NmM8YnI+W3Bp ZDozNDcxLGNwdTQsdGhyZWFkLTNdIHpyYW1fYnZlY19ydysweDI4OC8weDQ4ODxicj5bcGlkOjM0 NzEsY3B1NCx0aHJlYWQtM10genJhbV9yd19wYWdlKzB4MTI0LzB4MWE0PGJyPltwaWQ6MzQ3MSxj cHU0LHRocmVhZC0zXSBiZGV2X3dyaXRlX3BhZ2UrMHg4Yy8weGQ4PGJyPltwaWQ6MzQ3MSxjcHU0 LHRocmVhZC0zXSBfX3N3YXBfd3JpdGVwYWdlKzB4MWMwLzB4M2E4PGJyPltwaWQ6MzQ3MSxjcHU0 LHRocmVhZC0zXSBzd2FwX3dyaXRlcGFnZSsweDNjLzB4NjQ8YnI+W3BpZDozNDcxLGNwdTQsdGhy ZWFkLTNdIHNocmlua19wYWdlX2xpc3QrMHg4NDQvMHhkODQ8YnI+W3BpZDozNDcxLGNwdTQsdGhy ZWFkLTNdIHJlY2xhaW1fcGFnZXNfZnJvbV9saXN0KzB4ZjQvMHgxYmM8YnI+W3BpZDozNDcxLGNw dTQsdGhyZWFkLTNdIHJlY2xhaW1fcHRlX3JhbmdlKzB4MjA4LzB4MmEwPGJyPltwaWQ6MzQ3MSxj cHU0LHRocmVhZC0zXSB3YWxrX3BnZF9yYW5nZSsweGU4LzB4MjM4PGJyPltwaWQ6MzQ3MSxjcHU0 LHRocmVhZC0zXSB3YWxrX3BhZ2VfcmFuZ2UrMHg3Yy8weDE2NDxicj5bcGlkOjM0NzEsY3B1NCx0 aHJlYWQtM10gcmVjbGFpbV93cml0ZSsweDIwOC8weDYwODxicj5bcGlkOjM0NzEsY3B1NCx0aHJl YWQtM10gX192ZnNfd3JpdGUrMHg1MC8weDg4PGJyPltwaWQ6MzQ3MSxjcHU0LHRocmVhZC0zXSB2 ZnNfd3JpdGUrMHhiYy8weDJiMDxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM10gc3lzX3dyaXRl KzB4NjAvMHhjNDxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM10gZWwwX3N2Y19uYWtlZCsweDM0 LzB4Mzg8YnI+W3BpZDozNDcxLGNwdTQsdGhyZWFkLTNdY29kZTogMTdmZmZmZGQgZDQyMTAwMDAg OTdmZmZmMWYgOTdmZmZmODMgKGQ0MjEwMDAwKTxicj5bcGlkOjM0NzEsY3B1NCx0aHJlYWQtM10t LS1bIGVuZCB0cmFjZSA2NTJjYWFmYzRjNGI2ZDA2IF0tLS0gPGJyPjwvbWluY2hhbj48L3NwYW4+ PGJsb2NrcXVvdGUgc3R5bGU9InBhZGRpbmctbGVmdDoxZXg7bWFyZ2luOjBweCAwcHggMHB4IDAu OGV4O2JvcmRlci1sZWZ0OiNjY2MgMXB4IHNvbGlkIj48cHJlPkhpIFNlcmdleSw8YnI+Jmd0OyA8 YnI+Jmd0OyBPbiBNb24sIEF1ZyAxMywgMjAxOCBhdCAwNzo1NTozNlBNICswOTAwLCBTZXJnZXkg U2Vub3poYXRza3kgd3JvdGU6PGJyPiZndDsgJmd0OyBPbiAoMDgvMTMvMTggMTU6MDUpLCBNaW5j aGFuIEtpbSB3cm90ZTo8YnI+Jmd0OyAmZ3Q7ICZndDsgJmd0OyBGcm9tOiB6aG91eGlhbnJvbmcg PHpob3V4aWFucm9uZyBodWF3ZWk9IiIgY29tPSIiPjxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7IDxi cj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7IFRoZSBsYXN0IHBhcnRpYWwgb2JqZWN0IGluIGxhc3Qgc3Vi cGFnZSBvZiB6c3BhZ2Ugc2hvdWxkIG5vdCBiZSBsaW5rZWQ8YnI+Jmd0OyAmZ3Q7ICZndDsgJmd0 OyBpbiBhbGxvY2F0aW9uIGxpc3QuIE90aGVyd2lzZSBpdCBjb3VsZCB0cmlnZ2VyIEJVR19PTiBl eHBsaWNpdGx5IGF0PGJyPiZndDsgJmd0OyAmZ3Q7ICZndDsgZnVuY3Rpb24genNfbWFwX29iamVj dC4gQnV0IGl0IGhhcHBlbmVkIHJhcmVseS48YnI+Jmd0OyAmZ3Q7ICZndDsgPGJyPiZndDsgJmd0 OyAmZ3Q7IENvdWxkIHlvdSBiZSBtb3JlIHNwZWNpZmljPyBXaGF0IGNhc2UgZGlkIHlvdSBzZWUg dGhlIHByb2JsZW0/PGJyPiZndDsgJmd0OyAmZ3Q7IElzIGl0IGEgcmVhbCBwcm9ibGVtIG9yIG9u ZSBmb3VuZGVkIGJ5IHJldmlldz88YnI+Jmd0OyAmZ3Q7IFsuLl08YnI+Jmd0OyAmZ3Q7ICZndDsg Jmd0OyBTaWduZWQtb2ZmLWJ5OiB6aG91eGlhbnJvbmcgPHpob3V4aWFucm9uZyBodWF3ZWk9IiIg Y29tPSIiPjxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7IC0tLTxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7 ICBtbS96c21hbGxvYy5jIHwgMiArKzxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7ICAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspPGJyPiZndDsgJmd0OyAmZ3Q7ICZndDsgPGJyPiZndDsgJmd0 OyAmZ3Q7ICZndDsgZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jPGJy PiZndDsgJmd0OyAmZ3Q7ICZndDsgaW5kZXggOGQ4N2U5NzNhNGY1Li4yNGRkOGRhMGFhNTkgMTAw NjQ0PGJyPiZndDsgJmd0OyAmZ3Q7ICZndDsgLS0tIGEvbW0venNtYWxsb2MuYzxicj4mZ3Q7ICZn dDsgJmd0OyAmZ3Q7ICsrKyBiL21tL3pzbWFsbG9jLmM8YnI+Jmd0OyAmZ3Q7ICZndDsgJmd0OyBA QCAtMTA0MCw2ICsxMDQwLDggQEAgc3RhdGljIHZvaWQgaW5pdF96c3BhZ2Uoc3RydWN0IHNpemVf Y2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpPGJyPiZndDsgJmd0OyAmZ3Q7ICZn dDsgIAkJCSAqIFJlc2V0IE9CSl9UQUdfQklUUyBiaXQgdG8gbGFzdCBsaW5rIHRvIHRlbGw8YnI+ Jmd0OyAmZ3Q7ICZndDsgJmd0OyAgCQkJICogd2hldGhlciBpdCdzIGFsbG9jYXRlZCBvYmplY3Qg b3Igbm90Ljxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7ICAJCQkgKi88YnI+Jmd0OyAmZ3Q7ICZndDsg Jmd0OyArCQkJaWYgKG9mZiAmZ3Q7IFBBR0VfU0laRSk8YnI+Jmd0OyAmZ3Q7ICZndDsgJmd0OyAr CQkJCWxpbmsgLT0gY2xhc3MtJmd0O3NpemUgLyBzaXplb2YoKmxpbmspOzxicj4mZ3Q7ICZndDsg Jmd0OyAmZ3Q7ICAJCQlsaW5rLSZndDtuZXh0ID0gLTFVTCAmbHQ7Jmx0OyBPQkpfVEFHX0JJVFM7 PGJyPiZndDsgJmd0OyAmZ3Q7ICZndDsgIAkJfTxicj4mZ3Q7ICZndDsgJmd0OyAmZ3Q7ICAJCWt1 bm1hcF9hdG9taWModmFkZHIpOzxicj4mZ3Q7ICZndDsgPGJyPiZndDsgJmd0OyBIbW0uIFRoaXMg Y2FuIGJlIGEgcmVhbCBpc3N1ZS4gVW5sZXNzIEknbSBtaXNzaW5nIHNvbWV0aGluZy48YnI+Jmd0 OyAmZ3Q7IDxicj4mZ3Q7ICZndDsgU28uLi4gSSBtaWdodCBiZSB3cm9uZywgYnV0IHRoZSB3YXkg SSBzZWUgdGhlIGJ1ZyByZXBvcnQgaXM6PGJyPiZndDsgJmd0OyA8YnI+Jmd0OyAmZ3Q7IFdoZW4g d2UgbGluayBvYmplY3RzIGR1cmluZyB6c3BhZ2UgaW5pdCwgd2UgZG8gdGhlIGZvbGxvd2luZzo8 YnI+Jmd0OyAmZ3Q7IDxicj4mZ3Q7ICZndDsgCXdoaWxlICgob2ZmICs9IGNsYXNzLSZndDtzaXpl KSAmbHQ7IFBBR0VfU0laRSkgezxicj4mZ3Q7ICZndDsgCQlsaW5rLSZndDtuZXh0ID0gZnJlZW9i aisrICZsdDsmbHQ7IE9CSl9UQUdfQklUUzs8YnI+Jmd0OyAmZ3Q7IAkJbGluayArPSBjbGFzcy0m Z3Q7c2l6ZSAvIHNpemVvZigqbGluayk7PGJyPiZndDsgJmd0OyAJfTxicj4mZ3Q7ICZndDsgPGJy PiZndDsgJmd0OyBOb3RlIHRoYXQgd2UgaW5jcmVtZW50IHRoZSBsaW5rIGZpcnN0LCBsaW5rICs9 IGNsYXNzLSZndDtzaXplIC8gc2l6ZW9mKCpsaW5rKSw8YnI+Jmd0OyAmZ3Q7IGFuZCBjaGVjayBm b3IgdGhlIG9mZnNldCBvbmx5IGFmdGVyd2FyZHMuIFNvIGJ5IHRoZSB0aW1lIHdlIGJyZWFrIG91 dCBvZjxicj4mZ3Q7ICZndDsgdGhlIHdoaWxlLWxvb3AgdGhlIGxpbmsgKm1pZ2h0KiBwb2ludCB0 byB0aGUgcGFydGlhbCBvYmplY3Qgd2hpY2ggc3RhcnRzIGF0PGJyPiZndDsgJmd0OyB0aGUgbGFz dCBwYWdlIG9mIHpzcGFnZSwgYnV0ICpuZXZlciogZW5kcywgYmVjYXVzZSB3ZSBkb24ndCBoYXZl IG5leHRfcGFnZTxicj4mZ3Q7ICZndDsgaW4gY3VycmVudCB6c3BhZ2UuIFNvIHRoYXQncyB3aHkg dGhhdCBvYmplY3Qgc2hvdWxkIG5vdCBiZSBsaW5rZWQgaW4sPGJyPiZndDsgJmd0OyBiZWNhdXNl IGl0J3Mgbm90IGEgdmFsaWQgYWxsb2NhdGVzIG9iamVjdCAtIHdlIHNpbXBseSBkb24ndCBoYXZl IHNwYWNlPGJyPiZndDsgJmd0OyBmb3IgaXQgYW55bW9yZS48YnI+Jmd0OyAmZ3Q7IDxicj4mZ3Q7 ICZndDsgenNwYWdlIFsgICAgICBwYWdlIDEgICAgIF1bICAgICAgcGFnZSAyICAgICAgXTxicj4m Z3Q7ICZndDsgICAgICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ubGluazxicj4m Z3Q7ICZndDsgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy4uIyMjXTxicj4m Z3Q7ICZndDsgPGJyPiZndDsgJmd0OyB0aGVyZWZvcmUgdGhlIGxhc3Qgb2JqZWN0IG11c3QgYmUg ImxpbmsgLSAxIiBmb3Igc3VjaCBjYXNlcy48YnI+Jmd0OyAmZ3Q7IDxicj4mZ3Q7ICZndDsgSSB0 aGluaywgdGhlIGZvbGxvd2luZyBjaGFuZ2UgY2FuIGFsc28gZG8gdGhlIHRyaWNrOjxicj4mZ3Q7 ICZndDsgPGJyPiZndDsgJmd0OyAJd2hpbGUgKChvZmYgKyBjbGFzcy0mZ3Q7c2l6ZSkgJmx0OyBQ QUdFX1NJWkUpIHs8YnI+Jmd0OyAmZ3Q7IAkJbGluay0mZ3Q7bmV4dCA9IGZyZWVvYmorKyAmbHQ7 Jmx0OyBPQkpfVEFHX0JJVFM7PGJyPiZndDsgJmd0OyAJCWxpbmsgKz0gY2xhc3MtJmd0O3NpemUg LyBzaXplb2YoKmxpbmspOzxicj4mZ3Q7ICZndDsgCQlvZmYgKz0gY2xhc3MtJmd0O3NpemU7PGJy PiZndDsgJmd0OyAJfTxicj4mZ3Q7ICZndDsgPGJyPiZndDsgJmd0OyBPbmNlIGFnYWluLCBJIG1p Z2h0IGJlIHdyb25nIG9uIHRoaXMuPGJyPiZndDsgJmd0OyBBbnkgdGhvdWdodHM/PGJyPiZndDsg PGJyPiZndDsgSWYgd2Ugd2FudCBhIHJlZmFjdG9yaW5nLCBJJ20gbm90IGFnYWluc3QgYnV0IGRl c2NyaXB0aW9uIHNhaWQgaXQgdGlnZ2VyZWQ8YnI+Jmd0OyBCVUdfT04gb24genNfbWFwX29iamVj dCByYXJlbHkuIFRoYXQgbWVhbnMgaXQgc2hvdWxkIGJlIHN0YWJsZSBtYXRlcmlhbDxicj4mZ3Q7 IGFuZCBuZWVkIG1vcmUgZGVzY3JpcHRpb24gdG8gdW5kZXJzdGFuZC4gUGxlYXNlIGJlIG1vcmUg c3BlY2lmaWMgd2l0aDxicj4mZ3Q7IHNvbWUgZXhhbXBsZS4gVGhlIHJlYXNvbiBJJ20gaGVzaXRh dGluZyBpcyB6c21hbGxvYyBtb3ZlcyBaU19GVUxMIGdyb3VwPGJyPiZndDsgd2hlbiB0aGUgenNw YWdlLSZndDtpbnVzZSBpcyBlcXVhbCB0byBjbGFzcy0mZ3Q7b2Jqc19wZXJfenNwYWdlIHNvIEkg dGhvdWdodDxicj4mZ3Q7IGl0IHNob3VsZG4ndCBhbGxvY2F0ZSBsYXN0IHBhcnRpYWwgb2JqZWN0 Ljxicj4mZ3Q7IDxicj4mZ3Q7IFRoYW5rcy48YnI+Jmd0OyA8L3pob3V4aWFucm9uZz48L3pob3V4 aWFucm9uZz48L3ByZT48L2Jsb2NrcXVvdGU+PC9ibG9ja3F1b3RlPjwvemhvdXhpYW5yb25nQHRv bS5jb20+PC9taW5jaGFuQGtlcm5lbC5vcmc+PC9kaXY+PC9ib2R5PjwvaHRtbD4=