From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 35289 invoked by alias); 27 Sep 2017 18:43:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 34220 invoked by uid 89); 27 Sep 2017 18:43:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=BAYES_50,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=grey, graphic, Reverse, suffers X-HELO: m15-7.126.com Received: from m15-7.126.com (HELO m15-7.126.com) (220.181.15.7) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 27 Sep 2017 18:43:14 +0000 Received: from lh_mouse$126.com ( [58.33.79.123] ) by ajax-webmail-wmsvr7 (Coremail) ; Thu, 28 Sep 2017 02:43:09 +0800 (CST) Date: Wed, 27 Sep 2017 18:43:00 -0000 From: "Liu Hao" To: gcc-patches@gcc.gnu.org Cc: 10walls@gmail.com Subject: [PATCH][mingw] Enable colorized diagnostics Content-Type: multipart/mixed; boundary="----=_Part_2747_628647581.1506537789023" MIME-Version: 1.0 Message-ID: <7a71ece2.2bf.15ec4a65660.Coremail.lh_mouse@126.com> X-Coremail-Locale: zh_CN X-CM-TRANSID:B8qowADXY6I98ctZOAcAAA--.420W X-CM-SenderInfo: 5okbz0xxvhqiyswou0bp/1tbikxJgRlWmQFOMvAABs2 X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-SW-Source: 2017-09/txt/msg01834.txt.bz2 ------=_Part_2747_628647581.1506537789023 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 Content-length: 4364 SGVsbG8sCgooSSBkb24ndCBoYXZlIFNWTiB3cml0ZSBhY2Nlc3MuIFNvIHBs ZWFzZSBhcHBseSB0aGlzIHBhdGNoIGlmIHlvdSB0aGluayAKaXQgaXMgT0su IEkgaGF2ZSBnb3QgRlNGJ3MgY29weXJpZ2h0IGFzc2lnbm1lbnQgcGFwZXIg Zm9yIEdDQy4gSSB3aWxsIApzZW5kIHlvdSBhIGNvcHkgb2YgaXQgd2hlbiBy ZXF1aXJlZC4pCgpDb2xvcml6ZWQgZGlhZ25vc3RpY3MgdXNlZCB0byBiZSBk aXNhYmxlZCBmb3IgTWluR1cgdGFyZ2V0cyAob24gd2hpY2ggCnRoZSBtYWNy byBgX1dJTjMyYCBpcyBkZWZpbmVkKSwgYW5kIHRoaXMgcGF0Y2ggZW5hYmxl cyBpdC4KCkF0IHRoZSBtb21lbnQsIEdDQyBjb2xvcml6ZXMgZGlhZ25vc3Rp Y3MgdXNpbmcgQU5TSSBlc2NhcGUgY29kZXMuIFVubGlrZSAKbW9zdCBvdGhl ciB0ZXJtaW5hbCBkZXZpY2VzIG9yIHNpbXVsYXRvcnMsIFdpbmRvd3MgY29u c29sZXMgZGlkIG5vdCAKcmVjb2duaXplIEFOU0kgZXNjYXBlIGNvZGVzIHVu dGlsIFdpbmRvd3MgMTAgIlRocmVzaG9sZCAyIiBpbiAyMDE2LCBhbmQgCnRo aXMgY2FwYWJpbGl0eSBpcyBub3QgZW5hYmxlZCBieSBkZWZhdWx0IHRodXMg aGFzIHRvIGJlIHR1cm5lZCBvbiAKZXhwbGljaXRseSBzb21ldGltZS4KCklu IHJlYWxpdHksIFdpbmRvd3MgY29uc29sZXMgZG8gc3VwcG9ydCAKY29sb3Jp bmcvaGlnaGxpZ2h0aW5nL3VuZGVybGluaW5nIGNoYXJhY3RlcnMsIG1vdmlu ZyB0aGUgY3Vyc29yIG9yIApmaWxsaW5nIChlcmFzaW5nKSBzY3JlZW4gYXJl YXMuIEhvd2V2ZXIgdGhlIGluZGl2aWR1YWwgdGV4dCBhdHRyaWJ1dGVzIApt dXN0IGJlIHNldCBvciB1bnNldCB1c2luZyBmdW5jdGlvbnMgcHJvdmlkZWQg YnkgdGhlIHN5c3RlbS4gSGVyZSBjb21lcyAKbXkgc29sdXRpb246CgpOb3Jt YWxseSwgR0NDIG91dHB1dHMgdGhlIGRpYWdub3N0aWMgbWVzc2FnZXMsIGlu ZnVzZWQgd2l0aCAKbWlzY2VsbGFuZW91cyBmb3JtYXR0aW5nLCB1c2luZyB0 aGUgc3RhbmRhcmQgYGZwdXRzKClgIGZ1bmN0aW9uLiBGb3IgCldpbmRvd3Mg Y29uc29sZXMgd2UgdXNlIGEgbmV3IGZ1bmN0aW9uLCBgbWluZ3dfYW5zaV9m cHV0cygpYCB0byBvdXRwdXQgCnN1Y2ggbWVzc2FnZXMuIFRoaXMgZnVuY3Rp b24gc3RyaXBzIEFOU0kgZXNjYXBlIGNvZGVzLCBpbnRlcnByZXRzIHRoZW0s IApvcmNoZXN0cmF0ZXMgdGhlIG1vZGVzIGFzIHJlcXVlc3RlZCwgdGhlbiBv dXRwdXRzIHRoZSB0ZXh0IHJlbWFpbmluZy4gClVuaW1wbGVtZW50ZWQgY29k ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuCgpJIGhhdmUgc3VjY2Vzc2Z1bGx5 IGJvb3RzdHJhcHBlZCBHQ0MgZm9yIGBpNjg2LXc2NC1taW5ndzMyYCBhbmQg CmB4ODZfNjQtdzY0LW1pbmd3MzJgIHdpdGggdGhpcyBwYXRjaCBlbmFibGVk LiBBdXRvbWF0ZWQgdGVzdHMgYXJlIG5vdCBhbiAKb3B0aW9uIGJlY2F1c2Ug YWxsIHRoaXMgcGF0Y2ggZW5hYmxlcyBhcmUgdmlzdWFsIGVmZmVjdHMgdGhh dCBhcmUgbm90IAp1bnJlYWRhYmxlIGJ5IHNjcmlwdHMuCgpgY2hlY2tfR05V X3N0eWxlLnNoYCBzcGl0cyBzb21lIGZhbHNlIHBvc2l0aXZlcyBhYm91dCB0 aGUgY29tbWVudHMgYW5kIGEgCmxpbmUgb2Ygbm9uLWNvbmZvcm1pbmcgY29t bWVudCBpbiB0aGUgb3JpZ2luYWwgZmlsZSwgd2hpY2ggSSB0aGluayBjYW4g CmJlIGlnbm9yZWQuCgoqICogKiAqICogKiAqICogKiAqCgpLTk9XTiBJU1NV RVMKCjEuIFVubGlrZSBgZnB1dHMoKWAsIGBtaW5nd19hbnNpX2ZwdXRzKClg IGlzIG5vIGxvbmdlciBhdG9taWMuIFdoZW4gCm11bHRpcGxlIHByb2Nlc3Nl cyBhcmUgb3V0cHV0dGluZyB0ZXh0IHRvIHRoZSBzYW1lIGNvbnNvbGUsIG1l c3NhZ2VzIApjb3VsZCBpbnRlcmxlYXZlIHdpdGggZWFjaCBvdGhlci4gVGhl cmUgaXMgbm8gc2ltcGxlIHNvbHV0aW9uIHRvIHRoaXMgCmlzc3VlLiBUaGUg YXRvbWljaXR5IG9mIHN0ZGlvIGZ1bmN0aW9ucyBpcyBtYW5kYXRvcnkgYWNj b3JkaW5nIHRvIElTTyAKQzExLCB3aGljaCB3YXMgbm90IHRoZSBjYXNlIGlu IEM5OS4gVGhlIGBmcHV0cygpYCBmdW5jdGlvbiBmcm9tIApNaW5HVy13NjQg c3VmZmVycyBmcm9tIHRoZSBzYW1lIHByb2JsZW0sIGJ1dCB0aGUgb25lIGZy b20gTVNWQ1JUIGRvZXMgbm90LgoKMi4gYG1pbmd3X2Fuc2lfZnB1dHMoKWAg aXMgZXZlbnR1YWxseSBjb21waWxlZCBpbnRvIGBsaWJjb21tb24uYWAuIApQ ZXJzb25hbGx5LCBJIHRoaW5rIGl0IGlzIGEgYmFkIGlkZWEgdG8gcHV0IHRh cmdldC1zcGVjaWZpYyBjb2RlIGluIGl0LCAKbm90d2l0aHN0YW5kaW5nIGAj aWYgLi4uICNlbmRpZmAgZ3VhcmRzIHRoYXQgaGFzIGJlZW4gd2VudCBvdmVy IApjYXJlZnVsbHkuIEkgY291bGQgaGF2ZSBpbXBsZW1lbnRlZCB0aGlzIGZ1 bmN0aW9uIGluIGEgc2VwYXJhdGVkIAp0YXJnZXQtc3BlY2lmaWMgZmlsZSwg d2hpY2gsIGFjdHVhbGx5LCByZXN1bHRzIGluIG9ubHkgdW5kZWZpbmVkIApy ZWZlcmVuY2VzLCBzaW5jZSBhbGwgdGFyZ2V0LXNwZWNpZmljIG9iamVjdCBm aWxlcyBwcmVjZWRlIGBsaWJjb21tb24uYWAgCmluIHRoZSBmaW5hbCBsaW5r ZXIgY29tbWFuZCBsaW5lLgoKKiAqICogKiAqICogKiAqICogKgoKMjAxNy0w OS0yOCAgTGl1IEhhbyAgPGxoX21vdXNlQDEyNi5jb20+CgoJKiBnY2MvcHJl dHR5LXByaW50LmMgW19XSU4zMl0gKGNvbG9yaXplX2luaXQpOiBSZW1vdmUu ICBVc2UKCXRoZSBnZW5lcmljIHZlcnNpb24gYmVsb3cgaW5zdGVhZC4KCShz aG91bGRfY29sb3JpemUpOiBSZWNvZ25pemUgV2luZG93cyBjb25zb2xlcyBh cyB0ZXJtaW5hbHMKCWZvciBNaW5HVyB0YXJnZXRzLgoJKiBnY2MvcHJldHR5 LXByaW50LmMgW19fTUlOR1czMl9fXSAod3JpdGVfYWxsKTogTmV3IGZ1bmN0 aW9uLgoJW19fTUlOR1czMl9fXSAoZmluZF9lc2NfaGVhZCk6IExpa2V3aXNl LgoJW19fTUlOR1czMl9fXSAoZmluZF9lc2NfdGVybWluYXRvcik6IExpa2V3 aXNlLgoJW19fTUlOR1czMl9fXSAoZWF0X2VzY19zZXF1ZW5jZSk6IExpa2V3 aXNlLgoJW19fTUlOR1czMl9fXSAobWluZ3dfYW5zaV9mcHV0cyk6IE5ldyBm dW5jdGlvbiB0aGF0IGhhbmRsZXMKCUFOU0kgZXNjYXBlIGNvZGVzLgoJKHBw X3dyaXRlX3RleHRfdG9fc3RyZWFtKTogVXNlIG1pbmd3X2Fuc2lfZnB1dHMg aW5zdGVhZCBvZiBmcHV0cwoJZm9yIE1pbkdXIHRhcmdldHMuCgoKCi0tIApC ZXN0IHJlZ2FyZHMsCkxIX01vdXNlCg== ------=_Part_2747_628647581.1506537789023 Content-Type: text/plain; name="0001-Enable-a-native-GCC-to-color-diagnostic-messages-sen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Enable-a-native-GCC-to-color-diagnostic-messages-sen.patch" Content-length: 26047 RnJvbSA2YTAyZTI3YjEwYTIwZWFkNzI1MzkxODA0NjEwYmZjYTZkOWMxZTA2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSGFvIDxsaF9t b3VzZUAxMjYuY29tPgpEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMTI6NTA6MDcg KzA4MDAKU3ViamVjdDogW1BBVENIXSBFbmFibGUgYSBuYXRpdmUgR0NDIHRv IGNvbG9yIGRpYWdub3N0aWMgbWVzc2FnZXMgc2VudCBvdmVyCiBXaW5kb3dz IGNvbnNvbGVzLgoKLS0tCiBnY2MvZGlhZ25vc3RpYy1jb2xvci5jIHwgIDI4 ICsrLQogZ2NjL3ByZXR0eS1wcmludC5jICAgICB8IDY2NCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZp bGVzIGNoYW5nZWQsIDY4MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3RpYy1jb2xvci5jIGIvZ2Nj L2RpYWdub3N0aWMtY29sb3IuYwppbmRleCA2YWRiODcyMTQ2Yi4uYjhjZjZm MmMwNDUgMTAwNjQ0Ci0tLSBhL2djYy9kaWFnbm9zdGljLWNvbG9yLmMKKysr IGIvZ2NjL2RpYWdub3N0aWMtY29sb3IuYwpAQCAtMjAsNiArMjAsMTAgQEAK ICNpbmNsdWRlICJzeXN0ZW0uaCIKICNpbmNsdWRlICJkaWFnbm9zdGljLWNv bG9yLmgiCiAKKyNpZmRlZiBfX01JTkdXMzJfXworIyAgaW5jbHVkZSA8d2lu ZG93cy5oPgorI2VuZGlmCisKIC8qIFNlbGVjdCBHcmFwaGljIFJlbmRpdGlv biAoU0dSLCAiXDMzWy4uLm0iKSBzdHJpbmdzLiAgKi8KIC8qIEFsc28gRXJh c2UgaW4gTGluZSAoRUwpIHRvIFJpZ2h0ICgiXDMzW0siKSBieSBkZWZhdWx0 LiAgKi8KIC8qICAgIFdoeSBoYXZlIEVMIHRvIFJpZ2h0IGFmdGVyIFNHUj8K QEAgLTI3NSwyMyArMjc5LDI4IEBAIHBhcnNlX2djY19jb2xvcnMgKHZvaWQp CiAgICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIGRlZmluZWQoX1dJTjMy KQotYm9vbAotY29sb3JpemVfaW5pdCAoZGlhZ25vc3RpY19jb2xvcl9ydWxl X3QpCi17Ci0gIHJldHVybiBmYWxzZTsKLX0KLSNlbHNlCi0KIC8qIFJldHVy biB0cnVlIGlmIHdlIHNob3VsZCB1c2UgY29sb3Igd2hlbiBpbiBhdXRvIG1v ZGUsIGZhbHNlIG90aGVyd2lzZS4gKi8KIHN0YXRpYyBib29sCiBzaG91bGRf Y29sb3JpemUgKHZvaWQpCiB7CisjaWZkZWYgX19NSU5HVzMyX18KKyAgLyog Rm9yIGNvbnNpc3RlbmN5IHJlYXNvbnMsIG9uZSBzaG91bGQgY2hlY2sgdGhl IGhhbmRsZSByZXR1cm5lZCBieQorICAgICBfZ2V0X29zZmhhbmRsZShfZmls ZW5vKHN0ZGVycikpIGJlY2F1c2UgdGhlIGZ1bmN0aW9uCisgICAgIHBwX3dy aXRlX3RleHRfdG9fc3RyZWFtKCkgaW4gcHJldHR5LXByaW50LmMgY2FsbHMg ZnB1dHMoKSBvbgorICAgICB0aGF0IHN0cmVhbS4gIEhvd2V2ZXIsIHRoZSBj b2RlIGJlbG93IGZvciBub24tV2luZG93cyBkb2Vzbid0IHNlZW0KKyAgICAg dG8gY2FyZSBhYm91dCBpdCBlaXRoZXIuLi4gICovCisgIEhBTkRMRSBoOwor ICBEV09SRCBtOworCisgIGggPSBHZXRTdGRIYW5kbGUgKFNURF9FUlJPUl9I QU5ETEUpOworICByZXR1cm4gKGggIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUp ICYmIChoICE9IE5VTEwpCisJICAmJiBHZXRDb25zb2xlTW9kZSAoaCwgJm0p OworI2Vsc2UKICAgY2hhciBjb25zdCAqdCA9IGdldGVudiAoIlRFUk0iKTsK ICAgcmV0dXJuIHQgJiYgc3RyY21wICh0LCAiZHVtYiIpICE9IDAgJiYgaXNh dHR5IChTVERFUlJfRklMRU5PKTsKKyNlbmRpZgogfQogCi0KIGJvb2wKIGNv bG9yaXplX2luaXQgKGRpYWdub3N0aWNfY29sb3JfcnVsZV90IHJ1bGUpCiB7 CkBAIC0zMTAsNCArMzE5LDMgQEAgY29sb3JpemVfaW5pdCAoZGlhZ25vc3Rp Y19jb2xvcl9ydWxlX3QgcnVsZSkKICAgICAgIGdjY191bnJlYWNoYWJsZSAo KTsKICAgICB9CiB9Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2djYy9wcmV0dHkt cHJpbnQuYyBiL2djYy9wcmV0dHktcHJpbnQuYwppbmRleCA3MzQwY2Q0YTU2 NS4uZjMzZDU5MzcwYWUgMTAwNjQ0Ci0tLSBhL2djYy9wcmV0dHktcHJpbnQu YworKysgYi9nY2MvcHJldHR5LXByaW50LmMKQEAgLTMwLDYgKzMwLDY2NiBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQogI2luY2x1ZGUgPGljb252Lmg+CiAjZW5kaWYKIAorI2lmZGVm IF9fTUlOR1czMl9fCisKKy8qIFJlcGxhY2VtZW50IGZvciBmcHV0cygpIHRo YXQgaGFuZGxlcyBBTlNJIGVzY2FwZSBjb2RlcyBvbiBXaW5kb3dzIE5ULgor ICAgQ29udHJpYnV0ZWQgYnk6IExpdSBIYW8gKGxoX21vdXNlIGF0IDEyNiBk b3QgY29tKQorCisgICBYWFg6IFRoaXMgZmlsZSBpcyBjb21waWxlZCBpbnRv IGxpYmNvbW1vbi5hIHRoYXQgd2lsbCBiZSBzZWxmLWNvbnRhaW5lZC4KKwlJ dCBsb29rcyBsaWtlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBwdXQg bm93aGVyZSBlbHNlLiAgKi8KKworI2luY2x1ZGUgPGlvLmg+CisjZGVmaW5l IFdJTjMyX0xFQU5fQU5EX01FQU4gMQorI2luY2x1ZGUgPHdpbmRvd3MuaD4K KworLyogV3JpdGUgYWxsIGJ5dGVzIGluIFtzLHMrbikgaW50byB0aGUgc3Bl Y2lmaWVkIHN0cmVhbS4KKyAgIEVycm9ycyBhcmUgaWdub3JlZC4gICovCitz dGF0aWMgdm9pZAord3JpdGVfYWxsIChIQU5ETEUgaCwgY29uc3QgY2hhciAq cywgc2l6ZV90IG4pCit7CisgIHNpemVfdCByZW0gPSBuOworICBEV09SRCBz dGVwOworCisgIHdoaWxlIChyZW0gIT0gMCkKKyAgICB7CisgICAgICBpZiAo cmVtIDw9IFVJTlRfTUFYKQorCXN0ZXAgPSByZW07CisgICAgICBlbHNlCisJ c3RlcCA9IFVJTlRfTUFYOworICAgICAgaWYgKCFXcml0ZUZpbGUgKGgsIHMg KyBuIC0gcmVtLCBzdGVwLCAmc3RlcCwgTlVMTCkpCisJYnJlYWs7CisgICAg ICByZW0gLT0gc3RlcDsKKyAgICB9Cit9CisKKy8qIEZpbmQgdGhlIGJlZ2lu bmluZyBvZiBhbiBlc2NhcGUgc2VxdWVuY2UuCisgICBUaGVyZSBhcmUgdHdv IGNhc2VzOgorICAgMS4gSWYgdGhlIHNlcXVlbmNlIGJlZ2lucyB3aXRoIGFu IEVTQyBjaGFyYWN0ZXIgKDB4MUIpIGFuZCBhIHNlY29uZAorICAgICAgY2hh cmFjdGVyIFggaW4gWzB4NDAsMHg1Rl0sIHJldHVybnMgWCBhbmQgc3RvcmVz IGEgcG9pbnRlciB0bworICAgICAgdGhlIHRoaXJkIGNoYXJhY3RlciBpbnRv ICpoZWFkLgorICAgMi4gSWYgdGhlIHNlcXVlbmNlIGJlZ2lucyB3aXRoIGEg Y2hhcmFjdGVyIFggaW4gWzB4ODAsMHg5Rl0sIHJldHVybnMKKyAgICAgIChY LTB4NDApIGFuZCBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzZWNvbmQgY2hh cmFjdGVyIGludG8gKmhlYWQuCisgICBTdG9yZXMgdGhlIG51bWJlciBvZiBF U0MgY2hhcmFjdGVyKHMpIGluICpwcmVmaXhfbGVuLgorICAgUmV0dXJucyAw IGlmIG5vIHN1Y2ggc2VxdWVuY2UgY2FuIGJlIGZvdW5kLiAgKi8KK3N0YXRp YyBpbnQKK2ZpbmRfZXNjX2hlYWQgKGludCAqcHJlZml4X2xlbiwgY29uc3Qg Y2hhciAqKmhlYWQsIGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgaW50IGM7Cisg IGNvbnN0IGNoYXIgKnIgPSBzdHI7CisgIGludCBlc2NhcGVkID0gMDsKKwor ICBmb3IgKDs7KQorICAgIHsKKyAgICAgIGMgPSAodW5zaWduZWQgY2hhcikg KnI7CisgICAgICBpZiAoYyA9PSAwKQorCXsKKwkgIC8qIE5vdCBmb3VuZC4g ICovCisJICByZXR1cm4gMDsKKwl9CisgICAgICBpZiAoZXNjYXBlZCAmJiAw eDQwIDw9IGMgJiYgYyA8PSAweDVGKQorCXsKKwkgIC8qIEZvdW5kIChjYXNl IDEpLiAgKi8KKwkgICpwcmVmaXhfbGVuID0gMjsKKwkgICpoZWFkID0gciAr IDE7CisJICByZXR1cm4gYzsKKwl9CisgICAgICBpZiAoMHg4MCA8PSBjICYm IGMgPD0gMHg5RikKKwl7CisJICAvKiBGb3VuZCAoY2FzZSAyKS4gICovCisJ ICAqcHJlZml4X2xlbiA9IDE7CisJICAqaGVhZCA9IHIgKyAxOworCSAgcmV0 dXJuIGMgLSAweDQwOworCX0KKyAgICAgICsrcjsKKyAgICAgIGVzY2FwZWQg PSBjID09IDB4MUI7CisgICAgfQorfQorCisvKiBGaW5kIHRoZSB0ZXJtaW5h dG9yIG9mIGFuIGVzY2FwZSBzZXF1ZW5jZS4KKyAgIHN0ciBzaG91bGQgYmUg dGhlIHZhbHVlIHN0b3JlZCBpbiAqaGVhZCBieSBhIHByZXZpb3VzIHN1Y2Nl c3NmdWwKKyAgIGNhbGwgdG8gZmluZF9lc2NfaGVhZCgpLgorICAgUmV0dXJu cyAtMSBpZiBubyBzdWNoIHNlcXVlbmNlIGNhbiBiZSBmb3VuZC4gICovCitz dGF0aWMgaW50CitmaW5kX2VzY190ZXJtaW5hdG9yIChjb25zdCBjaGFyICoq dGVybSwgY29uc3QgY2hhciAqc3RyKQoreworICBpbnQgYzsKKyAgY29uc3Qg Y2hhciAqciA9IHN0cjsKKworICBmb3IgKDs7KQorICAgIHsKKyAgICAgIGMg PSAodW5zaWduZWQgY2hhcikgKnI7CisgICAgICBpZiAoYyA9PSAwKQorCXsK KwkgIC8qIE5vdCBmb3VuZC4gICovCisJICByZXR1cm4gMDsKKwl9CisgICAg ICBpZiAoMHg0MCA8PSBjICYmIGMgPD0gMHg3RSkKKwl7CisJICAvKiBGb3Vu ZC4gICovCisJICAqdGVybSA9IHI7CisJICByZXR1cm4gYzsKKwl9CisgICAg ICArK3I7CisgICAgfQorfQorCisvKiBIYW5kbGUgYSBzZXF1ZW5jZSBvZiBj b2Rlcy4gIFNlcXVlbmNlcyB0aGF0IGFyZSBpbnZhbGlkLCByZXNlcnZlZCwK KyAgIHVucmVjb2duaXplZCBvciB1bmltcGxlbWVudGVkIGFyZSBpZ25vcmVk IHNpbGVudGx5LgorICAgVGhlcmUgaXNuJ3QgbXVjaCB3ZSBjYW4gZG8gYmVj YXVzZSBvZiBsYW1lbmVzcyBvZiBXaW5kb3dzIGNvbnNvbGVzLiAgKi8KK3N0 YXRpYyB2b2lkCitlYXRfZXNjX3NlcXVlbmNlIChIQU5ETEUgaCwgaW50IGVz Y19jb2RlLAorCQkgIGNvbnN0IGNoYXIgKmVzY19oZWFkLCBjb25zdCBjaGFy ICplc2NfdGVybSkKK3sKKyAgLyogTnVtYmVycyBpbiBhbiBlc2NhcGUgc2Vx dWVuY2UgY2Fubm90IGJlIG5lZ2F0aXZlLCBiZWNhdXNlCisgICAgIGEgbWlu dXMgc2lnbiBpbiB0aGUgbWlkZGxlIG9mIGl0IHdvdWxkIGhhdmUgdGVybWlu YXRlZCBpdC4gICovCisgIGxvbmcgbjEsIG4yOworICBjaGFyICplcHRyLCAq ZGVsaW07CisgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIHNiOworICBD T09SRCBjcjsKKyAgLyogRUQgYW5kIEVMIHBhcmFtZXRlcnMuICAqLworICBE V09SRCBjbnQsIHN0ZXA7CisgIGxvbmcgcm93czsKKyAgLyogU0dSIHBhcmFt ZXRlcnMuICAqLworICBXT1JEIGF0dHJpYl9hZGQsIGF0dHJpYl9ybTsKKyAg Y29uc3QgY2hhciAqcGFyYW07CisKKyAgc3dpdGNoIChNQUtFV09SRCAoZXNj X2NvZGUsICplc2NfdGVybSkpCisgICAgeworICAgIC8qIEVTQyBbIG4xICdB JworCSBNb3ZlIHRoZSBjdXJzb3IgdXAgYnkgbjEgY2hhcmFjdGVycy4gICov CisgICAgY2FzZSBNQUtFV09SRCAoJ1snLCAnQScpOgorICAgICAgaWYgKGVz Y19oZWFkID09IGVzY190ZXJtKQorCW4xID0gMTsKKyAgICAgIGVsc2UKKwl7 CisJICBuMSA9IHN0cnRvbCAoZXNjX2hlYWQsICZlcHRyLCAxMCk7CisJICBp ZiAoZXB0ciAhPSBlc2NfdGVybSkKKwkgICAgYnJlYWs7CisJfQorCisgICAg ICBpZiAoR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8gKGgsICZzYikpCisJ eworCSAgY3IgPSBzYi5kd0N1cnNvclBvc2l0aW9uOworCSAgLyogU3RvcCBh dCB0aGUgdG9wbW9zdCBib3VuZGFyeS4gICovCisJICBpZiAoY3IuWSA+IG4x KQorCSAgICBjci5ZIC09IG4xOworCSAgZWxzZQorCSAgICBjci5ZID0gMDsK KwkgIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoaCwgY3IpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgLyogRVNDIFsgbjEgJ0InCisJIE1vdmUgdGhl IGN1cnNvciBkb3duIGJ5IG4xIGNoYXJhY3RlcnMuICAqLworICAgIGNhc2Ug TUFLRVdPUkQgKCdbJywgJ0InKToKKyAgICAgIGlmIChlc2NfaGVhZCA9PSBl c2NfdGVybSkKKwluMSA9IDE7CisgICAgICBlbHNlCisJeworCSAgbjEgPSBz dHJ0b2wgKGVzY19oZWFkLCAmZXB0ciwgMTApOworCSAgaWYgKGVwdHIgIT0g ZXNjX3Rlcm0pCisJICAgIGJyZWFrOworCX0KKworICAgICAgaWYgKEdldENv bnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoLCAmc2IpKQorCXsKKwkgIGNyID0g c2IuZHdDdXJzb3JQb3NpdGlvbjsKKwkgIC8qIFN0b3AgYXQgdGhlIGJvdHRv bW1vc3QgYm91bmRhcnkuICAqLworCSAgaWYgKHNiLmR3U2l6ZS5ZIC0gY3Iu WSA+IG4xKQorCSAgICBjci5ZICs9IG4xOworCSAgZWxzZQorCSAgICBjci5Z ID0gc2IuZHdTaXplLlk7CisJICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24g KGgsIGNyKTsKKwl9CisgICAgICBicmVhazsKKworICAgIC8qIEVTQyBbIG4x ICdDJworCSBNb3ZlIHRoZSBjdXJzb3IgcmlnaHQgYnkgbjEgY2hhcmFjdGVy cy4gICovCisgICAgY2FzZSBNQUtFV09SRCAoJ1snLCAnQycpOgorICAgICAg aWYgKGVzY19oZWFkID09IGVzY190ZXJtKQorCW4xID0gMTsKKyAgICAgIGVs c2UKKwl7CisJICBuMSA9IHN0cnRvbCAoZXNjX2hlYWQsICZlcHRyLCAxMCk7 CisJICBpZiAoZXB0ciAhPSBlc2NfdGVybSkKKwkgICAgYnJlYWs7CisJfQor CisgICAgICBpZiAoR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8gKGgsICZz YikpCisJeworCSAgY3IgPSBzYi5kd0N1cnNvclBvc2l0aW9uOworCSAgLyog U3RvcCBhdCB0aGUgcmlnaHRtb3N0IGJvdW5kYXJ5LiAgKi8KKwkgIGlmIChz Yi5kd1NpemUuWCAtIGNyLlggPiBuMSkKKwkgICAgY3IuWCArPSBuMTsKKwkg IGVsc2UKKwkgICAgY3IuWCA9IHNiLmR3U2l6ZS5YOworCSAgU2V0Q29uc29s ZUN1cnNvclBvc2l0aW9uIChoLCBjcik7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAvKiBFU0MgWyBuMSAnRCcKKwkgTW92ZSB0aGUgY3Vyc29yIGxlZnQg YnkgbjEgY2hhcmFjdGVycy4gICovCisgICAgY2FzZSBNQUtFV09SRCAoJ1sn LCAnRCcpOgorICAgICAgaWYgKGVzY19oZWFkID09IGVzY190ZXJtKQorCW4x ID0gMTsKKyAgICAgIGVsc2UKKwl7CisJICBuMSA9IHN0cnRvbCAoZXNjX2hl YWQsICZlcHRyLCAxMCk7CisJICBpZiAoZXB0ciAhPSBlc2NfdGVybSkKKwkg ICAgYnJlYWs7CisJfQorCisgICAgICBpZiAoR2V0Q29uc29sZVNjcmVlbkJ1 ZmZlckluZm8gKGgsICZzYikpCisJeworCSAgY3IgPSBzYi5kd0N1cnNvclBv c2l0aW9uOworCSAgLyogU3RvcCBhdCB0aGUgbGVmdG1vc3QgYm91bmRhcnku ICAqLworCSAgaWYgKGNyLlggPiBuMSkKKwkgICAgY3IuWCAtPSBuMTsKKwkg IGVsc2UKKwkgICAgY3IuWCA9IDA7CisJICBTZXRDb25zb2xlQ3Vyc29yUG9z aXRpb24gKGgsIGNyKTsKKwl9CisgICAgICBicmVhazsKKworICAgIC8qIEVT QyBbIG4xICdFJworCSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgbjEtdGggbGluZSBkb3dud2FyZHMuICAqLworICAgIGNhc2Ug TUFLRVdPUkQgKCdbJywgJ0UnKToKKyAgICAgIGlmIChlc2NfaGVhZCA9PSBl c2NfdGVybSkKKwluMSA9IDE7CisgICAgICBlbHNlCisJeworCSAgbjEgPSBz dHJ0b2wgKGVzY19oZWFkLCAmZXB0ciwgMTApOworCSAgaWYgKGVwdHIgIT0g ZXNjX3Rlcm0pCisJICAgIGJyZWFrOworCX0KKworICAgICAgaWYgKEdldENv bnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoLCAmc2IpKQorCXsKKwkgIGNyID0g c2IuZHdDdXJzb3JQb3NpdGlvbjsKKwkgIGNyLlggPSAwOworCSAgLyogU3Rv cCBhdCB0aGUgYm90dG9tbW9zdCBib3VuZGFyeS4gICovCisJICBpZiAoc2Iu ZHdTaXplLlkgLSBjci5ZID4gbjEpCisJICAgIGNyLlkgKz0gbjE7CisJICBl bHNlCisJICAgIGNyLlkgPSBzYi5kd1NpemUuWTsKKwkgIFNldENvbnNvbGVD dXJzb3JQb3NpdGlvbiAoaCwgY3IpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgLyogRVNDIFsgbjEgJ0YnCisJIE1vdmUgdGhlIGN1cnNvciB0byB0aGUg YmVnaW5uaW5nIG9mIHRoZSBuMS10aCBsaW5lIHVwd2FyZHMuICAqLworICAg IGNhc2UgTUFLRVdPUkQgKCdbJywgJ0YnKToKKyAgICAgIGlmIChlc2NfaGVh ZCA9PSBlc2NfdGVybSkKKwluMSA9IDE7CisgICAgICBlbHNlCisJeworCSAg bjEgPSBzdHJ0b2wgKGVzY19oZWFkLCAmZXB0ciwgMTApOworCSAgaWYgKGVw dHIgIT0gZXNjX3Rlcm0pCisJICAgIGJyZWFrOworCX0KKworICAgICAgaWYg KEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoLCAmc2IpKQorCXsKKwkg IGNyID0gc2IuZHdDdXJzb3JQb3NpdGlvbjsKKwkgIGNyLlggPSAwOworCSAg LyogU3RvcCBhdCB0aGUgdG9wbW9zdCBib3VuZGFyeS4gICovCisJICBpZiAo Y3IuWSA+IG4xKQorCSAgICBjci5ZIC09IG4xOworCSAgZWxzZQorCSAgICBj ci5ZID0gMDsKKwkgIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoaCwgY3Ip OworCX0KKyAgICAgIGJyZWFrOworCisgICAgLyogRVNDIFsgbjEgJ0cnCisJ IE1vdmUgdGhlIGN1cnNvciB0byB0aGUgKDEtYmFzZWQpIG4xLXRoIGNvbHVt bi4gICovCisgICAgY2FzZSBNQUtFV09SRCAoJ1snLCAnRycpOgorICAgICAg aWYgKGVzY19oZWFkID09IGVzY190ZXJtKQorCW4xID0gMTsKKyAgICAgIGVs c2UKKwl7CisJICBuMSA9IHN0cnRvbCAoZXNjX2hlYWQsICZlcHRyLCAxMCk7 CisJICBpZiAoZXB0ciAhPSBlc2NfdGVybSkKKwkgICAgYnJlYWs7CisJfQor CisgICAgICBpZiAoR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8gKGgsICZz YikpCisJeworCSAgY3IgPSBzYi5kd0N1cnNvclBvc2l0aW9uOworCSAgbjEg LT0gMTsKKwkgIC8qIFN0b3AgYXQgdGhlIGxlZnRtb3N0IG9yIHJpZ2h0bW9z dCBib3VuZGFyeS4gICovCisJICBpZiAobjEgPCAwKQorCSAgICBjci5YID0g MDsKKwkgIGVsc2UgaWYgKG4xID4gc2IuZHdTaXplLlgpCisJICAgIGNyLlgg PSBzYi5kd1NpemUuWDsKKwkgIGVsc2UKKwkgICAgY3IuWCA9IG4xOworCSAg U2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChoLCBjcik7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAvKiBFU0MgWyBuMSAnOycgbjIgJ0gnCisgICAgICAg RVNDIFsgbjEgJzsnIG4yICdmJworCSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhl ICgxLWJhc2VkKSBuMS10aCByb3cgYW5kCisJIChhbHNvIDEtYmFzZWQpIG4y LXRoIGNvbHVtbi4gICovCisgICAgY2FzZSBNQUtFV09SRCAoJ1snLCAnSCcp OgorICAgIGNhc2UgTUFLRVdPUkQgKCdbJywgJ2YnKToKKyAgICAgIGlmIChl c2NfaGVhZCA9PSBlc2NfdGVybSkKKwl7CisJICAvKiBCb3RoIHBhcmFtZXRl cnMgYXJlIG9taXR0ZWQgYW5kIHNldCB0byAxIGJ5IGRlZmF1bHQuICAqLwor CSAgbjEgPSAxOworCSAgbjIgPSAxOworCX0KKyAgICAgIGVsc2UgaWYgKCEo ZGVsaW0gPSAoY2hhciAqKSBtZW1jaHIgKGVzY19oZWFkLCAnOycsCisJCQkJ CSAgZXNjX3Rlcm0gLSBlc2NfaGVhZCkpKQorCXsKKwkgIC8qIE9ubHkgdGhl IGZpcnN0IHBhcmFtZXRlciBpcyBnaXZlbi4gIFRoZSBzZWNvbmQgb25lIGlz CisJICAgICBzZXQgdG8gMSBieSBkZWZhdWx0LiAgKi8KKwkgIG4xID0gc3Ry dG9sIChlc2NfaGVhZCwgJmVwdHIsIDEwKTsKKwkgIGlmIChlcHRyICE9IGVz Y190ZXJtKQorCSAgICBicmVhazsKKwkgIG4yID0gMTsKKwl9CisgICAgICBl bHNlCisJeworCSAgLyogQm90aCBwYXJhbWV0ZXJzIGFyZSBnaXZlbi4gIFRo ZSBmaXJzdCBvbmUgc2hhbGwgYmUKKwkgICAgIHRlcm1pbmF0ZWQgYnkgdGhl IHNlbWljb2xvbi4gICovCisJICBuMSA9IHN0cnRvbCAoZXNjX2hlYWQsICZl cHRyLCAxMCk7CisJICBpZiAoZXB0ciAhPSBkZWxpbSkKKwkgICAgYnJlYWs7 CisJICBuMiA9IHN0cnRvbCAoZGVsaW0gKyAxLCAmZXB0ciwgMTApOworCSAg aWYgKGVwdHIgIT0gZXNjX3Rlcm0pCisJICAgIGJyZWFrOworCX0KKworICAg ICAgaWYgKEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoLCAmc2IpKQor CXsKKwkgIGNyID0gc2IuZHdDdXJzb3JQb3NpdGlvbjsKKwkgIG4xIC09IDE7 CisJICBuMiAtPSAxOworCSAgLyogVGhlIGN1cnNvciBwb3NpdGlvbiBzaGFs bCBiZSByZWxhdGl2ZSB0byB0aGUgdmlldyBjb29yZCBvZgorCSAgICAgdGhl IGNvbnNvbGUgd2luZG93LCB3aGljaCBpcyB1c3VhbGx5IHNtYWxsZXIgdGhh biB0aGUgYWN0dWFsCisJICAgICBidWZmZXIuICBGV0lXLCB0aGUgJ2FwcHJv cHJpYXRlJyBzb2x1dGlvbiB3aWxsIGJlIHNocmlua2luZworCSAgICAgdGhl IGJ1ZmZlciB0byBtYXRjaCB0aGUgc2l6ZSBvZiB0aGUgY29uc29sZSB3aW5k b3csCisJICAgICBkZXN0cm95aW5nIHNjcm9sbGJhY2sgaW4gdGhlIHByb2Nl c3MuICAqLworCSAgbjEgKz0gc2Iuc3JXaW5kb3cuVG9wOworCSAgbjIgKz0g c2Iuc3JXaW5kb3cuTGVmdDsKKwkgIC8qIFN0b3AgYXQgdGhlIHRvcG1vc3Qg b3IgYm90dG9tbW9zdCBib3VuZGFyeS4gICovCisJICBpZiAobjEgPCAwKQor CSAgICBjci5ZID0gMDsKKwkgIGVsc2UgaWYgKG4xID4gc2IuZHdTaXplLlkp CisJICAgIGNyLlkgPSBzYi5kd1NpemUuWTsKKwkgIGVsc2UKKwkgICAgY3Iu WSA9IG4xOworCSAgLyogU3RvcCBhdCB0aGUgbGVmdG1vc3Qgb3IgcmlnaHRt b3N0IGJvdW5kYXJ5LiAgKi8KKwkgIGlmIChuMiA8IDApCisJICAgIGNyLlgg PSAwOworCSAgZWxzZSBpZiAobjIgPiBzYi5kd1NpemUuWCkKKwkgICAgY3Iu WCA9IHNiLmR3U2l6ZS5YOworCSAgZWxzZQorCSAgICBjci5YID0gbjI7CisJ ICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGgsIGNyKTsKKwl9CisgICAg ICBicmVhazsKKworICAgIC8qIEVTQyBbIG4xICdKJworCSBFcmFzZSBkaXNw bGF5LiAgKi8KKyAgICBjYXNlIE1BS0VXT1JEICgnWycsICdKJyk6CisgICAg ICBpZiAoZXNjX2hlYWQgPT0gZXNjX3Rlcm0pCisJLyogVGhpcyBpcyBvbmUg b2YgdGhlIHZlcnkgZmV3IGNvZGVzIHdob3NlIHBhcmFtZXRlcnMgaGF2ZQor CSAgIGEgZGVmYXVsdCB2YWx1ZSBvZiB6ZXJvLiAgKi8KKwluMSA9IDA7Cisg ICAgICBlbHNlCisJeworCSAgbjEgPSBzdHJ0b2wgKGVzY19oZWFkLCAmZXB0 ciwgMTApOworCSAgaWYgKGVwdHIgIT0gZXNjX3Rlcm0pCisJICAgIGJyZWFr OworCX0KKworICAgICAgaWYgKEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZv IChoLCAmc2IpKQorCXsKKwkgIC8qIFRoZSBjdXJzb3IgaXMgbm90IG5lY2Vz c2FyaWx5IGluIHRoZSBjb25zb2xlIHdpbmRvdywgd2hpY2gKKwkgICAgIG1h a2VzIHRoZSBiZWhhdmlvciBvZiB0aGlzIGNvZGUgaGFyZGVyIHRvIGRlZmlu ZS4gICovCisJICBzd2l0Y2ggKG4xKQorCSAgICB7CisJICAgIGNhc2UgMDoK KwkgICAgICAvKiBJZiB0aGUgY3Vyc29yIGlzIGluIG9yIGFib3ZlIHRoZSB3 aW5kb3csIGVyYXNlIGZyb20KKwkJIGl0IHRvIHRoZSBib3R0b20gb2YgdGhl IHdpbmRvdzsgb3RoZXJ3aXNlLCBkbyBub3RoaW5nLiAgKi8KKwkgICAgICBj ciA9IHNiLmR3Q3Vyc29yUG9zaXRpb247CisJICAgICAgY250ID0gc2IuZHdT aXplLlggLSBzYi5kd0N1cnNvclBvc2l0aW9uLlg7CisJICAgICAgcm93cyA9 IHNiLnNyV2luZG93LkJvdHRvbSAtIHNiLmR3Q3Vyc29yUG9zaXRpb24uWTsK KwkgICAgICBicmVhazsKKwkgICAgY2FzZSAxOgorCSAgICAgIC8qIElmIHRo ZSBjdXJzb3IgaXMgaW4gb3IgdW5kZXIgdGhlIHdpbmRvdywgZXJhc2UgZnJv bQorCQkgaXQgdG8gdGhlIHRvcCBvZiB0aGUgd2luZG93OyBvdGhlcndpc2Us IGRvIG5vdGhpbmcuICAqLworCSAgICAgIGNyLlggPSAwOworCSAgICAgIGNy LlkgPSBzYi5zcldpbmRvdy5Ub3A7CisJICAgICAgY250ID0gc2IuZHdDdXJz b3JQb3NpdGlvbi5YICsgMTsKKwkgICAgICByb3dzID0gc2IuZHdDdXJzb3JQ b3NpdGlvbi5ZIC0gc2Iuc3JXaW5kb3cuVG9wOworCSAgICAgIGJyZWFrOwor CSAgICBjYXNlIDI6CisJICAgICAgLyogRXJhc2UgdGhlIGVudGlyZSB3aW5k b3cuICAqLworCSAgICAgIGNyLlggPSBzYi5zcldpbmRvdy5MZWZ0OworCSAg ICAgIGNyLlkgPSBzYi5zcldpbmRvdy5Ub3A7CisJICAgICAgY250ID0gMDsK KwkgICAgICByb3dzID0gc2Iuc3JXaW5kb3cuQm90dG9tIC0gc2Iuc3JXaW5k b3cuVG9wICsgMTsKKwkgICAgICBicmVhazsKKwkgICAgZGVmYXVsdDoKKwkg ICAgICAvKiBFcmFzZSB0aGUgZW50aXJlIGJ1ZmZlci4gICovCisJICAgICAg Y3IuWCA9IDA7CisJICAgICAgY3IuWSA9IDA7CisJICAgICAgY250ID0gMDsK KwkgICAgICByb3dzID0gc2IuZHdTaXplLlk7CisJICAgICAgYnJlYWs7CisJ ICAgIH0KKwkgIGlmIChyb3dzIDwgMCkKKwkgICAgYnJlYWs7CisJICBjbnQg Kz0gcm93cyAqIHNiLmR3U2l6ZS5YOworCSAgRmlsbENvbnNvbGVPdXRwdXRD aGFyYWN0ZXJXIChoLCBMJyAnLCBjbnQsIGNyLCAmc3RlcCk7CisJICBGaWxs Q29uc29sZU91dHB1dEF0dHJpYnV0ZSAoaCwgc2Iud0F0dHJpYnV0ZXMsIGNu dCwgY3IsICZzdGVwKTsKKwl9CisgICAgICBicmVhazsKKworICAgIC8qIEVT QyBbIG4xICdLJworCSBFcmFzZSBsaW5lLiAgKi8KKyAgICBjYXNlIE1BS0VX T1JEICgnWycsICdLJyk6CisgICAgICBpZiAoZXNjX2hlYWQgPT0gZXNjX3Rl cm0pCisJLyogVGhpcyBpcyBvbmUgb2YgdGhlIHZlcnkgZmV3IGNvZGVzIHdo b3NlIHBhcmFtZXRlcnMgaGF2ZQorCSAgIGEgZGVmYXVsdCB2YWx1ZSBvZiB6 ZXJvLiAgKi8KKwluMSA9IDA7CisgICAgICBlbHNlCisJeworCSAgbjEgPSBz dHJ0b2wgKGVzY19oZWFkLCAmZXB0ciwgMTApOworCSAgaWYgKGVwdHIgIT0g ZXNjX3Rlcm0pCisJICAgIGJyZWFrOworCX0KKworICAgICAgaWYgKEdldENv bnNvbGVTY3JlZW5CdWZmZXJJbmZvIChoLCAmc2IpKQorCXsKKwkgIHN3aXRj aCAobjEpCisJICAgIHsKKwkgICAgY2FzZSAwOgorCSAgICAgIC8qIEVyYXNl IGZyb20gdGhlIGN1cnNvciB0byB0aGUgZW5kLiAgKi8KKwkgICAgICBjciA9 IHNiLmR3Q3Vyc29yUG9zaXRpb247CisJICAgICAgY250ID0gc2IuZHdTaXpl LlggLSBzYi5kd0N1cnNvclBvc2l0aW9uLlg7CisJICAgICAgYnJlYWs7CisJ ICAgIGNhc2UgMToKKwkgICAgICAvKiBFcmFzZSBmcm9tIHRoZSBjdXJzb3Ig dG8gdGhlIGJlZ2lubmluZy4gICovCisJICAgICAgY3IgPSBzYi5kd0N1cnNv clBvc2l0aW9uOworCSAgICAgIGNyLlggPSAwOworCSAgICAgIGNudCA9IHNi LmR3Q3Vyc29yUG9zaXRpb24uWCArIDE7CisJICAgICAgYnJlYWs7CisJICAg IGRlZmF1bHQ6CisJICAgICAgLyogRXJhc2UgdGhlIGVudGlyZSBsaW5lLiAg Ki8KKwkgICAgICBjciA9IHNiLmR3Q3Vyc29yUG9zaXRpb247CisJICAgICAg Y3IuWCA9IDA7CisJICAgICAgY250ID0gc2IuZHdTaXplLlg7CisJICAgICAg YnJlYWs7CisJICAgIH0KKwkgIEZpbGxDb25zb2xlT3V0cHV0Q2hhcmFjdGVy VyAoaCwgTCcgJywgY250LCBjciwgJnN0ZXApOworCSAgRmlsbENvbnNvbGVP dXRwdXRBdHRyaWJ1dGUgKGgsIHNiLndBdHRyaWJ1dGVzLCBjbnQsIGNyLCAm c3RlcCk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAvKiBFU0MgWyBuMSAn OycgbjIgJ20nCisJIFNldCBTR1IgcGFyYW1ldGVycy4gIFplcm8gb3IgbW9y ZSBwYXJhbWV0ZXJzIHdpbGwgZm9sbG93LiAgKi8KKyAgICBjYXNlIE1BS0VX T1JEICgnWycsICdtJyk6CisgICAgICBhdHRyaWJfYWRkID0gMDsKKyAgICAg IGF0dHJpYl9ybSA9IDA7CisgICAgICBpZiAoZXNjX2hlYWQgPT0gZXNjX3Rl cm0pCisJeworCSAgLyogV2hlbiBubyBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIHJl c2V0IHRoZSBjb25zb2xlLiAgKi8KKwkgIGF0dHJpYl9hZGQgfD0gKEZPUkVH Uk9VTkRfUkVEIHwgRk9SRUdST1VORF9HUkVFTgorCQkJIHwgRk9SRUdST1VO RF9CTFVFKTsKKwkgIGF0dHJpYl9ybSA9IC0xOyAvKiBSZW1vdmVzIGV2ZXJ5 dGhpbmcuICAqLworCSAgZ290byBzZ3Jfc2V0X2l0OworCX0KKyAgICAgIHBh cmFtID0gZXNjX2hlYWQ7CisgICAgICBkbworCXsKKwkgIC8qIFBhcnNlIGEg cGFyYW1ldGVyLiAgKi8KKwkgIG4xID0gc3RydG9sIChwYXJhbSwgJmVwdHIs IDEwKTsKKwkgIGlmICgqZXB0ciAhPSAnOycgJiYgZXB0ciAhPSBlc2NfdGVy bSkKKwkgICAgZ290byBzZ3Jfc2V0X2l0OworCisJICBzd2l0Y2ggKG4xKQor CSAgICB7CisJICAgIGNhc2UgMDoKKwkgICAgICAvKiBSZXNldC4gICovCisJ ICAgICAgYXR0cmliX2FkZCB8PSAoRk9SRUdST1VORF9SRUQgfCBGT1JFR1JP VU5EX0dSRUVOCisJCQkgICAgIHwgRk9SRUdST1VORF9CTFVFKTsKKwkgICAg ICBhdHRyaWJfcm0gPSAtMTsgLyogUmVtb3ZlcyBldmVyeXRoaW5nLiAgKi8K KwkgICAgICBicmVhazsKKwkgICAgY2FzZSAxOgorCSAgICAgIC8qIEJvbGQu ICAqLworCSAgICAgIGF0dHJpYl9hZGQgfD0gRk9SRUdST1VORF9JTlRFTlNJ VFk7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgNDoKKwkgICAgICAvKiBV bmRlcmxpbmUuICAqLworCSAgICAgIGF0dHJpYl9hZGQgfD0gQ09NTU9OX0xW Ql9VTkRFUlNDT1JFOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDU6CisJ ICAgICAgLyogQmxpbmsuICAqLworCSAgICAgIC8qIFhYWDogSXQgaXMgbm90 IEJMSU5LSU5HIGF0IGFsbCEgKi8KKwkgICAgICBhdHRyaWJfYWRkIHw9IEJB Q0tHUk9VTkRfSU5URU5TSVRZOworCSAgICAgIGJyZWFrOworCSAgICBjYXNl IDc6CisJICAgICAgLyogUmV2ZXJzZS4gICovCisJICAgICAgYXR0cmliX2Fk ZCB8PSBDT01NT05fTFZCX1JFVkVSU0VfVklERU87CisJICAgICAgYnJlYWs7 CisJICAgIGNhc2UgMjI6CisJICAgICAgLyogTm8gYm9sZC4gICovCisJICAg ICAgYXR0cmliX2FkZCAmPSB+Rk9SRUdST1VORF9JTlRFTlNJVFk7CisJICAg ICAgYXR0cmliX3JtIHw9IEZPUkVHUk9VTkRfSU5URU5TSVRZOworCSAgICAg IGJyZWFrOworCSAgICBjYXNlIDI0OgorCSAgICAgIC8qIE5vIHVuZGVybGlu ZS4gICovCisJICAgICAgYXR0cmliX2FkZCAmPSB+Q09NTU9OX0xWQl9VTkRF UlNDT1JFOworCSAgICAgIGF0dHJpYl9ybSB8PSBDT01NT05fTFZCX1VOREVS U0NPUkU7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMjU6CisJICAgICAg LyogTm8gYmxpbmsuICAqLworCSAgICAgIC8qIFhYWDogSXQgaXMgbm90IEJM SU5LSU5HIGF0IGFsbCEgKi8KKwkgICAgICBhdHRyaWJfYWRkICY9IH5CQUNL R1JPVU5EX0lOVEVOU0lUWTsKKwkgICAgICBhdHRyaWJfcm0gfD0gQkFDS0dS T1VORF9JTlRFTlNJVFk7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMjc6 CisJICAgICAgLyogTm8gcmV2ZXJzZS4gICovCisJICAgICAgYXR0cmliX2Fk ZCAmPSB+Q09NTU9OX0xWQl9SRVZFUlNFX1ZJREVPOworCSAgICAgIGF0dHJp Yl9ybSB8PSBDT01NT05fTFZCX1JFVkVSU0VfVklERU87CisJICAgICAgYnJl YWs7CisJICAgIGNhc2UgMzA6CisJICAgIGNhc2UgMzE6CisJICAgIGNhc2Ug MzI6CisJICAgIGNhc2UgMzM6CisJICAgIGNhc2UgMzQ6CisJICAgIGNhc2Ug MzU6CisJICAgIGNhc2UgMzY6CisJICAgIGNhc2UgMzc6CisJICAgICAgLyog Rm9yZWdyb3VuZCBjb2xvci4gICovCisJICAgICAgYXR0cmliX2FkZCAmPSB+ KEZPUkVHUk9VTkRfUkVEIHwgRk9SRUdST1VORF9HUkVFTgorCQkJICAgICAg fCBGT1JFR1JPVU5EX0JMVUUpOworCSAgICAgIG4xIC09IDMwOworCSAgICAg IGlmIChuMSAmIDEpCisJCWF0dHJpYl9hZGQgfD0gRk9SRUdST1VORF9SRUQ7 CisJICAgICAgaWYgKG4xICYgMikKKwkJYXR0cmliX2FkZCB8PSBGT1JFR1JP VU5EX0dSRUVOOworCSAgICAgIGlmIChuMSAmIDQpCisJCWF0dHJpYl9hZGQg fD0gRk9SRUdST1VORF9CTFVFOworCSAgICAgIGF0dHJpYl9ybSB8PSAoRk9S RUdST1VORF9SRUQgfCBGT1JFR1JPVU5EX0dSRUVOCisJCQkgICAgfCBGT1JF R1JPVU5EX0JMVUUpOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDM4Ogor CSAgICAgIC8qIFJlc2VydmVkIGZvciBleHRlbmRlZCBmb3JlZ3JvdW5kIGNv bG9yLgorCQkgRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIHBhcmFtZXRlcnMg cmVtYWluaW5nLgorCQkgQmFpbCBvdXQuICAqLworCSAgICAgIGdvdG8gc2dy X3NldF9pdDsKKwkgICAgY2FzZSAzOToKKwkgICAgICAvKiBSZXNldCBmb3Jl Z3JvdW5kIGNvbG9yLiAgKi8KKwkgICAgICAvKiBTZXQgdG8gZ3JleS4gICov CisJICAgICAgYXR0cmliX2FkZCB8PSAoRk9SRUdST1VORF9SRUQgfCBGT1JF R1JPVU5EX0dSRUVOCisJCQkgICAgIHwgRk9SRUdST1VORF9CTFVFKTsKKwkg ICAgICBhdHRyaWJfcm0gfD0gKEZPUkVHUk9VTkRfUkVEIHwgRk9SRUdST1VO RF9HUkVFTgorCQkJICAgIHwgRk9SRUdST1VORF9CTFVFKTsKKwkgICAgICBi cmVhazsKKwkgICAgY2FzZSA0MDoKKwkgICAgY2FzZSA0MToKKwkgICAgY2Fz ZSA0MjoKKwkgICAgY2FzZSA0MzoKKwkgICAgY2FzZSA0NDoKKwkgICAgY2Fz ZSA0NToKKwkgICAgY2FzZSA0NjoKKwkgICAgY2FzZSA0NzoKKwkgICAgICAv KiBCYWNrZ3JvdW5kIGNvbG9yLiAgKi8KKwkgICAgICBhdHRyaWJfYWRkICY9 IH4oQkFDS0dST1VORF9SRUQgfCBCQUNLR1JPVU5EX0dSRUVOCisJCQkgICAg ICB8IEJBQ0tHUk9VTkRfQkxVRSk7CisJICAgICAgbjEgLT0gNDA7CisJICAg ICAgaWYgKG4xICYgMSkKKwkJYXR0cmliX2FkZCB8PSBCQUNLR1JPVU5EX1JF RDsKKwkgICAgICBpZiAobjEgJiAyKQorCQlhdHRyaWJfYWRkIHw9IEJBQ0tH Uk9VTkRfR1JFRU47CisJICAgICAgaWYgKG4xICYgNCkKKwkJYXR0cmliX2Fk ZCB8PSBCQUNLR1JPVU5EX0JMVUU7CisJICAgICAgYXR0cmliX3JtIHw9IChC QUNLR1JPVU5EX1JFRCB8IEJBQ0tHUk9VTkRfR1JFRU4KKwkJCSAgICB8IEJB Q0tHUk9VTkRfQkxVRSk7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgNDg6 CisJICAgICAgLyogUmVzZXJ2ZWQgZm9yIGV4dGVuZGVkIGJhY2tncm91bmQg Y29sb3IuCisJCSBEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgcGFyYW1ldGVy cyByZW1haW5pbmcuCisJCSBCYWlsIG91dC4gICovCisJICAgICAgZ290byBz Z3Jfc2V0X2l0OworCSAgICBjYXNlIDQ5OgorCSAgICAgIC8qIFJlc2V0IGJh Y2tncm91bmQgY29sb3IuICAqLworCSAgICAgIC8qIFNldCB0byBibGFjay4g ICovCisJICAgICAgYXR0cmliX2FkZCAmPSB+KEJBQ0tHUk9VTkRfUkVEIHwg QkFDS0dST1VORF9HUkVFTgorCQkJICAgICAgfCBCQUNLR1JPVU5EX0JMVUUp OworCSAgICAgIGF0dHJpYl9ybSB8PSAoQkFDS0dST1VORF9SRUQgfCBCQUNL R1JPVU5EX0dSRUVOCisJCQkgICAgfCBCQUNLR1JPVU5EX0JMVUUpOworCSAg ICAgIGJyZWFrOworCSAgICB9CisKKwkgIC8qIFByZXBhcmUgdGhlIG5leHQg cGFyYW1ldGVyLiAgKi8KKwkgIHBhcmFtID0gZXB0ciArIDE7CisJfQorICAg ICAgd2hpbGUgKHBhcmFtICE9IGVzY190ZXJtKTsKKworc2dyX3NldF9pdDoK KyAgICAgIC8qIDB4RkZGRiByZW1vdmVzIGV2ZXJ5dGhpbmcuICBJZiBpdCBp cyBub3QgdGhlIGNhc2UsCisJIGNhcmUgbXVzdCBiZSB0YWtlbiB0byBwcmVz ZXJ2ZSBvbGQgYXR0cmlidXRlcy4gICovCisgICAgICBpZiAoYXR0cmliX3Jt ICE9IDB4RkZGRiAmJiBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoaCwg JnNiKSkKKwl7CisJICBhdHRyaWJfYWRkIHw9IHNiLndBdHRyaWJ1dGVzICYg fmF0dHJpYl9ybTsKKwl9CisgICAgICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0 ZSAoaCwgYXR0cmliX2FkZCk7CisgICAgICBicmVhazsKKyAgICB9Cit9CisK K2ludAorbWluZ3dfYW5zaV9mcHV0cyAoY29uc3QgY2hhciAqc3RyLCBGSUxF ICpmcCkKK3sKKyAgY29uc3QgY2hhciAqcmVhZCA9IHN0cjsKKyAgSEFORExF IGg7CisgIERXT1JEIG1vZGU7CisgIGludCBlc2NfY29kZSwgcHJlZml4X2xl bjsKKyAgY29uc3QgY2hhciAqZXNjX2hlYWQsICplc2NfdGVybTsKKworICBo ID0gKEhBTkRMRSkgX2dldF9vc2ZoYW5kbGUgKF9maWxlbm8gKGZwKSk7Cisg IGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgIHJldHVybiBF T0Y7CisKKyAgLyogRG9uJ3QgbWVzcyB1cCBzdGRpbyBmdW5jdGlvbnMgd2l0 aCBXaW5kb3dzIEFQSXMuICAqLworICBmZmx1c2ggKGZwKTsKKworICBpZiAo R2V0Q29uc29sZU1vZGUgKGgsICZtb2RlKSkKKyAgICAvKiBJZiBpdCBpcyBh IGNvbnNvbGUsIHRyYW5zbGF0ZSBBTlNJIGVzY2FwZSBjb2RlcyBhcyBuZWVk ZWQuICAqLworICAgIGZvciAoOzspCisgICAgICB7CisJaWYgKChlc2NfY29k ZSA9IGZpbmRfZXNjX2hlYWQgKCZwcmVmaXhfbGVuLCAmZXNjX2hlYWQsIHJl YWQpKSA9PSAwKQorCSAgeworCSAgICAvKiBXcml0ZSBhbGwgcmVtYWluaW5n IGNoYXJhY3RlcnMsIHRoZW4gZXhpdC4gICovCisJICAgIHdyaXRlX2FsbCAo aCwgcmVhZCwgc3RybGVuIChyZWFkKSk7CisJICAgIGJyZWFrOworCSAgfQor CWlmIChmaW5kX2VzY190ZXJtaW5hdG9yICgmZXNjX3Rlcm0sIGVzY19oZWFk KSA9PSAwKQorCSAgLyogSWdub3JlIGluY29tcGxldGUgZXNjYXBlIHNlcXVl bmNlcyBhdCB0aGUgbW9tZW50LgorCSAgICAgRklYTUU6IFRoZSBlc2NhcGUg c3RhdGUgc2hhbGwgYmUgY2FjaGVkIGZvciBmdXJ0aGVyIGNhbGxzCisJCSAg ICB0byB0aGlzIGZ1bmN0aW9uLiAgKi8KKwkgIGJyZWFrOworCXdyaXRlX2Fs bCAoaCwgcmVhZCwgZXNjX2hlYWQgLSBwcmVmaXhfbGVuIC0gcmVhZCk7CisJ ZWF0X2VzY19zZXF1ZW5jZSAoaCwgZXNjX2NvZGUsIGVzY19oZWFkLCBlc2Nf dGVybSk7CisJcmVhZCA9IGVzY190ZXJtICsgMTsKKyAgICAgIH0KKyAgZWxz ZQorICAgIC8qIElmIGl0IGlzIG5vdCBhIGNvbnNvbGUsIHdyaXRlIGV2ZXJ5 dGhpbmcgYXMtaXMuICAqLworICAgIHdyaXRlX2FsbCAoaCwgcmVhZCwgc3Ry bGVuIChyZWFkKSk7CisKKyAgX2Nsb3NlICgoaW50cHRyX3QpIGgpOworICBy ZXR1cm4gMTsKK30KKworI2VuZGlmIC8qIF9fTUlOR1czMl9fICovCisKIHN0 YXRpYyB2b2lkIHBwX3F1b3RlZF9zdHJpbmcgKHByZXR0eV9wcmludGVyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90ID0gLTEpOwogCiAvKiBPdmVyd3JpdGUg dGhlIGdpdmVuIGxvY2F0aW9uL3JhbmdlIHdpdGhpbiB0aGlzIHRleHRfaW5m bydzIHJpY2hfbG9jYXRpb24uCkBAIC0xNDAsNyArODAwLDExIEBAIHZvaWQK IHBwX3dyaXRlX3RleHRfdG9fc3RyZWFtIChwcmV0dHlfcHJpbnRlciAqcHAp CiB7CiAgIGNvbnN0IGNoYXIgKnRleHQgPSBwcF9mb3JtYXR0ZWRfdGV4dCAo cHApOworI2lmZGVmIF9fTUlOR1czMl9fCisgIG1pbmd3X2Fuc2lfZnB1dHMg KHRleHQsIHBwX2J1ZmZlciAocHApLT5zdHJlYW0pOworI2Vsc2UKICAgZnB1 dHMgKHRleHQsIHBwX2J1ZmZlciAocHApLT5zdHJlYW0pOworI2VuZGlmCiAg IHBwX2NsZWFyX291dHB1dF9hcmVhIChwcCk7CiB9CiAKLS0gCjIuMTQuMQoK ------=_Part_2747_628647581.1506537789023--