From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH 07/29] xl: lift a bunch of macros to xl_utils.h Date: Fri, 24 Feb 2017 16:12:52 +0000 Message-ID: <20170224161314.22154-8-wei.liu2@citrix.com> References: <20170224161314.22154-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1chIUi-0004X7-PV for xen-devel@lists.xenproject.org; Fri, 24 Feb 2017 16:13:20 +0000 In-Reply-To: <20170224161314.22154-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu , Ian Jackson List-Id: xen-devel@lists.xenproject.org V2UncmUgZ29pbmcgdG8gc3BsaXQgeGxfY21kaW1wbC5jIGludG8gbXVsdGlwbGUgZmlsZXMuIExp ZnQgdGhlIGNvbW1vbmx5CnVzZWQgbWFjcm9zIHRvIHhsX3V0aWxzLmguCgpTaWduZWQtb2ZmLWJ5 OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHRvb2xzL3hsL3hsX2NtZGltcGwu YyB8IDEwNCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0b29scy94 bC94bF91dGlscy5oICAgfCAxMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDEwMyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy94bC94bF91dGlscy5oCgpkaWZm IC0tZ2l0IGEvdG9vbHMveGwveGxfY21kaW1wbC5jIGIvdG9vbHMveGwveGxfY21kaW1wbC5jCmlu ZGV4IDFkN2NmOGZmYTguLmQ5ZDk0NzgyN2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZGlt cGwuYworKysgYi90b29scy94bC94bF9jbWRpbXBsLmMKQEAgLTM5LDQyICszOSw3IEBACiAjaW5j bHVkZSA8bGlieGxfanNvbi5oPgogI2luY2x1ZGUgPGxpYnhsdXRpbC5oPgogI2luY2x1ZGUgInhs LmgiCi0KLS8qIEZvciBjYWxscyB3aGljaCByZXR1cm4gYW4gZXJybm8gb24gZmFpbHVyZSAqLwot I2RlZmluZSBDSEtfRVJSTk9WQUwoIGNhbGwgKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICBpbnQgY2hrX2Vycm5vdmFsID0gKGNhbGwpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoY2hrX2Vycm5v dmFsIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICBlbHNlIGlmIChjaGtfZXJybm92YWwgPiAwKSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZnByaW50ZihzdGRl cnIsInhsOiBmYXRhbCBlcnJvcjogJXM6JWQ6ICVzOiAlc1xuIiwgICAgICAgICAgXAotICAgICAg ICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJTkVfXywgc3RyZXJyb3IoY2hrX2Vycm5vdmFsKSwg I2NhbGwpOyAgXAotICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0pCi0K LS8qIEZvciBjYWxscyB3aGljaCByZXR1cm4gLTEgYW5kIHNldCBlcnJubyBvbiBmYWlsdXJlICov Ci0jZGVmaW5lIENIS19TWVNDQUxMKCBjYWxsICkgKHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICgoY2FsbCkgPT0gLTEpIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwieGw6IGZhdGFsIGVycm9yOiAlczolZDogJXM6ICVzXG4iLCAgICAgICAgICBcCi0g ICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLF9fTElORV9fLCBzdHJlcnJvcihlcnJubyksICNj YWxsKTsgICAgICAgICBcCi0gICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg fSkKLQotI2RlZmluZSBNVVNUKCBjYWxsICkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpbnQgbXVzdF9yYyA9IChjYWxsKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAobXVz dF9yYyA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJ4bDogZmF0YWwgZXJyb3I6ICVzOiVk LCByYz0lZDogJXNcbiIsICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sX19M SU5FX18sIG11c3RfcmMsICNjYWxsKTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGV4 aXQoRVhJVF9GQUlMVVJFKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9KQotCi0jZGVmaW5lIFNUUl9IQVNfUFJFRklYKCBh LCBiICkgIFwKLSAgICAoIHN0cm5jbXAoYSwgYiwgc3RybGVuKGIpKSA9PSAwICkKLSNkZWZpbmUg U1RSX1NLSVBfUFJFRklYKCBhLCBiICkgXAotICAgICggU1RSX0hBU19QUkVGSVgoYSwgYikgPyAo KGEpICs9IHN0cmxlbihiKSwgMSkgOiAwICkKLQorI2luY2x1ZGUgInhsX3V0aWxzLmgiCiAKIGlu dCBsb2dmaWxlID0gMjsKIApAQCAtODMsNyArNDgsNiBAQCBsaWJ4bF9jdHggKmN0eDsKIAogeGxj aGlsZCBjaGlsZHJlbltjaGlsZF9tYXhdOwogCi0jZGVmaW5lIElOVkFMSURfRE9NSUQgfjAKIHN0 YXRpYyBjb25zdCBjaGFyICpjb21tb25fZG9tbmFtZTsKIHN0YXRpYyBpbnQgZmRfbG9jayA9IC0x OwogCkBAIC0zNDksOCArMzEzLDYgQEAgc3RhdGljIGNoYXIgKnhzdHJkdXAoY29uc3QgY2hhciAq eCkKICNkZWZpbmUgQVJSQVlfRVhURU5EX0lOSVRfTk9ERVZJRChhcnJheSxjb3VudCxpbml0Zm4p IFwKICAgICBBUlJBWV9FWFRFTkRfSU5JVF9fQ09SRSgoYXJyYXkpLChjb3VudCksKGluaXRmbiks IC8qIG5vdGhpbmcgKi8gKQogCi0jZGVmaW5lIExPRyhfZiwgX2EuLi4pICAgZG9sb2coX19GSUxF X18sIF9fTElORV9fLCBfX2Z1bmNfXywgX2YgIlxuIiwgIyNfYSkKLQogc3RhdGljIHZvaWQgZG9s b2coY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMsIGNoYXIgKmZt dCwgLi4uKQogICAgICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLDQsNSkpKTsKIApAQCAt MzMzMiwxMCArMzI5NCw2IEBAIHN0YXRpYyBpbnQ2NF90IHBhcnNlX21lbV9zaXplX2tiKGNvbnN0 IGNoYXIgKm1lbSkKICAgICByZXR1cm4ga2J5dGVzOwogfQogCi0vKiBNdXN0IGJlIGxhc3QgaW4g bGlzdCAqLwotI2RlZmluZSBDT01NT05fTE9OR19PUFRTIHsiaGVscCIsIDAsIDAsICdoJ30sIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgMCwgMH0KLQogLyoKICAqIENhbGxlcnMg c2hvdWxkIHVzZSBTV0lUQ0hfRk9SRUFDSF9PUFQgaW4gcHJlZmVyZW5jZSB0byBjYWxsaW5nIHRo aXMKICAqIGRpcmVjdGx5LgpAQCAtMzM3OCw2NiArMzMzNiw2IEBAIHN0YXRpYyBpbnQgZGVmX2dl dG9wdChpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSwKICAgICByZXR1cm4gLTE7CiB9CiAK LS8qCi0gKiBXcmFwcyBkZWZfZ2V0b3B0IGludG8gYSBjb252ZW5pZW50IGxvb3Arc3dpdGNoIHRv IHByb2Nlc3MgYWxsCi0gKiBhcmd1bWVudHMuIFRoaXMgbWFjcm8gaXMgaW50ZW5kZWQgdG8gYmUg Y2FsbGVkIGZyb20gbWFpbl9YWFgoKS4KLSAqCi0gKiAgIFNXSVRDSF9GT1JFQUNIX09QVChpbnQg Km9wdCwgIk9QVFMiLAotICogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlv biAqbG9uZ29wdHMsCi0gKiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21tYW5k bmFtZSwKLSAqICAgICAgICAgICAgICAgICAgICAgIGludCBudW1fb3B0c19yZXEpIHsgLi4uCi0g KgotICogb3B0OiAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gYW4gaW50IHZhcmlhYmxlLCBob2xk cyB0aGUgY3VycmVudCBvcHRpb24KLSAqICAgICAgICAgICAgICAgICAgICBkdXJpbmcgcHJvY2Vz c2luZy4KLSAqIE9QVFM6ICAgICAgICAgICAgICBzaG9ydCBvcHRpb25zLCBhcyBwZXIgZ2V0b3B0 X2xvbmcoMykncyBvcHRzdHJpbmcgYXJndW1lbnQuCi0gKiAgICAgICAgICAgICAgICAgICAgZG8g bm90IGluY2x1ZGUgImgiOyB3aWxsIGJlIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkKLSAqIGxvbmdv cHRzOiAgICAgICAgICBsb25nIG9wdGlvbnMsIGFzIHBlciBnZXRvcHRfbG9uZygzKSdzIGxvbmdv cHRzIGFyZ3VtZW50LgotICogICAgICAgICAgICAgICAgICAgIE1heSBiZSBudWxsLgotICogY29t bWFuZG5hbWU6ICAgICAgIG5hbWUgb2YgdGhpcyBjb21tYW5kLCBmb3IgdXNhZ2Ugc3RyaW5nLgot ICogbnVtX3JlcXVpcmVkX29wdHM6IG51bWJlciBvZiBub24tb3B0aW9uIGNvbW1hbmQgbGluZSBw YXJhbWV0ZXJzCi0gKiAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHJlcXVpcmVkLgotICoK LSAqIEluIGFkZGl0aW9uIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgZXhwZWN0ZWQgdG8gY29udGFp biB2YXJpYWJsZXMKLSAqICJhcmdjIiBhbmQgImFyZ3YiIGluIHRoZSBjb252ZW50aW9uYWwgQy1z dHlsZToKLSAqICAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gKiBtYW5uZXIuCi0gKgot ICogQ2FsbGVycyBzaG91bGQgdHJlYXQgU1dJVENIX0ZPUkVBQ0hfT1BUIGFzIHRoZXkgd291bGQg YSBzd2l0Y2gKLSAqIHN0YXRlbWVudCBvdmVyIHRoZSB2YWx1ZSBvZiBgb3B0YC4gRWFjaCBvcHRp b24gZ2l2ZW4gaW4gYG9wdHNgIChvcgotICogYGxvcHRzYCkgc2hvdWxkIGJlIGhhbmRsZWQgYnkg YSBjYXNlIHN0YXRlbWVudCBhcyBpZiBpdCB3ZXJlIGluc2lkZQotICogYSBzd2l0Y2ggc3RhdGVt ZW50LgotICoKLSAqIEluIGFkZGl0aW9uIHRvIHRoZSBvcHRpb25zIHByb3ZpZGVkIGluIG9wdHMg dGhlIG1hY3JvIHdpbGwgaGFuZGxlCi0gKiB0aGUgImhlbHAiIG9wdGlvbiBhbmQgZW5mb3JjZSBh IG1pbmltdW0gbnVtYmVyIG9mIG5vbi1vcHRpb24KLSAqIGNvbW1hbmQgbGluZSBwZWFyYW1ldGVy cyBhcyBmb2xsb3dzOgotICogIC0tIGlmIHRoZSB1c2VyIHBhc3NlcyBhIC1oIG9yIC0taGVscCBv cHRpb24uIGhlbHAgd2lsbCBiZSBwcmludGVkLAotICogICAgIGFuZCB0aGUgbWFjcm8gd2lsbCBj YXVzZSB0aGUgcHJvY2VzcyB0byBleGl0IHdpdGggY29kZSAwLgotICogIC0tIGlmIHRoZSB1c2Vy IGRvZXMgbm90IHByb3ZpZGVkIGBudW1fcmVxdWlyZWRfb3B0c2Agbm9uLW9wdGlvbgotICogICAg IGFyZ3VtZW50cywgdGhlIG1hY3JvIHdpbGwgY2F1c2UgdGhlIHByb2Nlc3MgdG8gZXhpdCB3aXRo IGNvZGUgMi4KLSAqCi0gKiBFeGFtcGxlOgotICoKLSAqIGludCBtYWluX2ZvbyhpbnQgYXJnYywg Y2hhciAqKmFyZ3YpIHsKLSAqICAgICBpbnQgb3B0OwotICoKLSAqICAgICBTV0lUQ0hfRk9SRUFD SF9PUFQob3B0LCAiYmxhaCIsIE5VTEwsICJmb28iLCAwKSB7Ci0gKiAgICAgIGNhc2UgJ2InOgot ICogICAgICAgICAgLi4uIGhhbmRsZSBiIG9wdGlvbi4uLgotICogICAgICAgICAgYnJlYWs7Ci0g KiAgICAgIGNhc2UgJ2wnOgotICogICAgICAgICAgLi4uIGhhbmRsZSBsIG9wdGlvbiAuLi4KLSAq ICAgICAgICAgIGJyZWFrOwotICogICAgICBjYXNlIGV0YyBldGMuLi4KLSAqICAgICAgfQotICog ICAgICAuLi4gZG8gc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBvcHRpb25zIC4uLgotICogfQot ICovCi0jZGVmaW5lIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsIG9wdHMsIGxvbmdvcHRzLCAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k bmFtZSwgbnVtX3JlcXVpcmVkX29wdHMpICAgICAgICAgICAgICBcCi0gICAgd2hpbGUgKCgob3B0 KSA9IGRlZl9nZXRvcHQoYXJnYywgYXJndiwgImgiIG9wdHMsIChsb25nb3B0cyksICAgICAgICAg IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRuYW1lKSwgKG51bV9y ZXF1aXJlZF9vcHRzKSkpICE9IC0xKSBcCi0gICAgICAgIHN3aXRjaCAob3B0KQotCiBzdGF0aWMg aW50IHNldF9tZW1vcnlfbWF4KHVpbnQzMl90IGRvbWlkLCBjb25zdCBjaGFyICptZW0pCiB7CiAg ICAgaW50NjRfdCBtZW1vcnlrYjsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3V0aWxzLmggYi90 b29scy94bC94bF91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmViYjkzMDViN2MKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy94bC94bF91dGlscy5oCkBAIC0w LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDktMjAxNyBDaXRyaXggTHRkIGFuZCBv dGhlciBjb250cmlidXRvcnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk CisgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuMSBvbmx5LiB3 aXRoIHRoZSBzcGVjaWFsCisgKiBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmls ZSBMSUNFTlNFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpZm5k ZWYgWExfVVRJTFNfSAorI2RlZmluZSBYTF9VVElMU19ICisKKy8qIEZvciBjYWxscyB3aGljaCBy ZXR1cm4gYW4gZXJybm8gb24gZmFpbHVyZSAqLworI2RlZmluZSBDSEtfRVJSTk9WQUwoIGNhbGwg KSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp bnQgY2hrX2Vycm5vdmFsID0gKGNhbGwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBpZiAoY2hrX2Vycm5vdmFsIDwgMCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYWJvcnQoKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNl IGlmIChjaGtfZXJybm92YWwgPiAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsInhsOiBmYXRhbCBlcnJvcjogJXM6JWQ6 ICVzOiAlc1xuIiwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJ TkVfXywgc3RyZXJyb3IoY2hrX2Vycm5vdmFsKSwgI2NhbGwpOyAgXAorICAgICAgICAgICAgZXhp dChFWElUX0ZBSUxVUkUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIH0pCisKKy8qIEZvciBjYWxscyB3aGljaCByZXR1cm4g LTEgYW5kIHNldCBlcnJubyBvbiBmYWlsdXJlICovCisjZGVmaW5lIENIS19TWVNDQUxMKCBjYWxs ICkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg IGlmICgoY2FsbCkgPT0gLTEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwieGw6IGZhdGFsIGVycm9yOiAl czolZDogJXM6ICVzXG4iLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIF9fRklMRV9f LF9fTElORV9fLCBzdHJlcnJvcihlcnJubyksICNjYWxsKTsgICAgICAgICBcCisgICAgICAgICAg ICBleGl0KEVYSVRfRkFJTFVSRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSkKKworI2RlZmluZSBNVVNUKCBjYWxsICkg KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICBpbnQgbXVzdF9yYyA9IChjYWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICBpZiAobXVzdF9yYyA8IDApIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZnByaW50ZihzdGRl cnIsInhsOiBmYXRhbCBlcnJvcjogJXM6JWQsIHJjPSVkOiAlc1xuIiwgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJTkVfXywgbXVzdF9yYywgI2NhbGwpOyAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0pCisK KyNkZWZpbmUgU1RSX0hBU19QUkVGSVgoIGEsIGIgKSAgXAorICAgICggc3RybmNtcChhLCBiLCBz dHJsZW4oYikpID09IDAgKQorI2RlZmluZSBTVFJfU0tJUF9QUkVGSVgoIGEsIGIgKSBcCisgICAg KCBTVFJfSEFTX1BSRUZJWChhLCBiKSA/ICgoYSkgKz0gc3RybGVuKGIpLCAxKSA6IDAgKQorCisj ZGVmaW5lIElOVkFMSURfRE9NSUQgfjAKKworI2RlZmluZSBMT0coX2YsIF9hLi4uKSAgIGRvbG9n KF9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18sIF9mICJcbiIsICMjX2EpCisKKy8qCisgKiBX cmFwcyBkZWZfZ2V0b3B0IGludG8gYSBjb252ZW5pZW50IGxvb3Arc3dpdGNoIHRvIHByb2Nlc3Mg YWxsCisgKiBhcmd1bWVudHMuIFRoaXMgbWFjcm8gaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZy b20gbWFpbl9YWFgoKS4KKyAqCisgKiAgIFNXSVRDSF9GT1JFQUNIX09QVChpbnQgKm9wdCwgIk9Q VFMiLAorICogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9uZ29w dHMsCisgKiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21tYW5kbmFtZSwKKyAq ICAgICAgICAgICAgICAgICAgICAgIGludCBudW1fb3B0c19yZXEpIHsgLi4uCisgKgorICogb3B0 OiAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gYW4gaW50IHZhcmlhYmxlLCBob2xkcyB0aGUgY3Vy cmVudCBvcHRpb24KKyAqICAgICAgICAgICAgICAgICAgICBkdXJpbmcgcHJvY2Vzc2luZy4KKyAq IE9QVFM6ICAgICAgICAgICAgICBzaG9ydCBvcHRpb25zLCBhcyBwZXIgZ2V0b3B0X2xvbmcoMykn cyBvcHRzdHJpbmcgYXJndW1lbnQuCisgKiAgICAgICAgICAgICAgICAgICAgZG8gbm90IGluY2x1 ZGUgImgiOyB3aWxsIGJlIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkKKyAqIGxvbmdvcHRzOiAgICAg ICAgICBsb25nIG9wdGlvbnMsIGFzIHBlciBnZXRvcHRfbG9uZygzKSdzIGxvbmdvcHRzIGFyZ3Vt ZW50LgorICogICAgICAgICAgICAgICAgICAgIE1heSBiZSBudWxsLgorICogY29tbWFuZG5hbWU6 ICAgICAgIG5hbWUgb2YgdGhpcyBjb21tYW5kLCBmb3IgdXNhZ2Ugc3RyaW5nLgorICogbnVtX3Jl cXVpcmVkX29wdHM6IG51bWJlciBvZiBub24tb3B0aW9uIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJz CisgKiAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHJlcXVpcmVkLgorICoKKyAqIEluIGFk ZGl0aW9uIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiB2YXJpYWJs ZXMKKyAqICJhcmdjIiBhbmQgImFyZ3YiIGluIHRoZSBjb252ZW50aW9uYWwgQy1zdHlsZToKKyAq ICAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgKiBtYW5uZXIuCisgKgorICogQ2FsbGVy cyBzaG91bGQgdHJlYXQgU1dJVENIX0ZPUkVBQ0hfT1BUIGFzIHRoZXkgd291bGQgYSBzd2l0Y2gK KyAqIHN0YXRlbWVudCBvdmVyIHRoZSB2YWx1ZSBvZiBgb3B0YC4gRWFjaCBvcHRpb24gZ2l2ZW4g aW4gYG9wdHNgIChvcgorICogYGxvcHRzYCkgc2hvdWxkIGJlIGhhbmRsZWQgYnkgYSBjYXNlIHN0 YXRlbWVudCBhcyBpZiBpdCB3ZXJlIGluc2lkZQorICogYSBzd2l0Y2ggc3RhdGVtZW50LgorICoK KyAqIEluIGFkZGl0aW9uIHRvIHRoZSBvcHRpb25zIHByb3ZpZGVkIGluIG9wdHMgdGhlIG1hY3Jv IHdpbGwgaGFuZGxlCisgKiB0aGUgImhlbHAiIG9wdGlvbiBhbmQgZW5mb3JjZSBhIG1pbmltdW0g bnVtYmVyIG9mIG5vbi1vcHRpb24KKyAqIGNvbW1hbmQgbGluZSBwZWFyYW1ldGVycyBhcyBmb2xs b3dzOgorICogIC0tIGlmIHRoZSB1c2VyIHBhc3NlcyBhIC1oIG9yIC0taGVscCBvcHRpb24uIGhl bHAgd2lsbCBiZSBwcmludGVkLAorICogICAgIGFuZCB0aGUgbWFjcm8gd2lsbCBjYXVzZSB0aGUg cHJvY2VzcyB0byBleGl0IHdpdGggY29kZSAwLgorICogIC0tIGlmIHRoZSB1c2VyIGRvZXMgbm90 IHByb3ZpZGVkIGBudW1fcmVxdWlyZWRfb3B0c2Agbm9uLW9wdGlvbgorICogICAgIGFyZ3VtZW50 cywgdGhlIG1hY3JvIHdpbGwgY2F1c2UgdGhlIHByb2Nlc3MgdG8gZXhpdCB3aXRoIGNvZGUgMi4K KyAqCisgKiBFeGFtcGxlOgorICoKKyAqIGludCBtYWluX2ZvbyhpbnQgYXJnYywgY2hhciAqKmFy Z3YpIHsKKyAqICAgICBpbnQgb3B0OworICoKKyAqICAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0 LCAiYmxhaCIsIE5VTEwsICJmb28iLCAwKSB7CisgKiAgICAgIGNhc2UgJ2InOgorICogICAgICAg ICAgLi4uIGhhbmRsZSBiIG9wdGlvbi4uLgorICogICAgICAgICAgYnJlYWs7CisgKiAgICAgIGNh c2UgJ2wnOgorICogICAgICAgICAgLi4uIGhhbmRsZSBsIG9wdGlvbiAuLi4KKyAqICAgICAgICAg IGJyZWFrOworICogICAgICBjYXNlIGV0YyBldGMuLi4KKyAqICAgICAgfQorICogICAgICAuLi4g ZG8gc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBvcHRpb25zIC4uLgorICogfQorICovCisjZGVm aW5lIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsIG9wdHMsIGxvbmdvcHRzLCAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kbmFtZSwgbnVt X3JlcXVpcmVkX29wdHMpICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKCgob3B0KSA9IGRlZl9n ZXRvcHQoYXJnYywgYXJndiwgImgiIG9wdHMsIChsb25nb3B0cyksICAgICAgICBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRuYW1lKSwgKG51bV9yZXF1aXJlZF9vcHRz KSkpICE9IC0xKSBcCisgICAgICAgIHN3aXRjaCAob3B0KQorCisvKiBNdXN0IGJlIGxhc3QgaW4g bGlzdCAqLworI2RlZmluZSBDT01NT05fTE9OR19PUFRTIHsiaGVscCIsIDAsIDAsICdoJ30sIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICB7MCwgMCwgMCwgMH0KKworI2VuZGlmIC8qIFhMX1VU SUxTX0ggKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtYmFz aWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAK Mi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==