From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56533 invoked by alias); 14 Sep 2015 10:37:11 -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 56506 invoked by uid 89); 14 Sep 2015 10:37:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (146.101.78.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 14 Sep 2015 10:37:07 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-31-CLck1_dRQfup4EAwm-HHbw-1; Mon, 14 Sep 2015 11:37:03 +0100 Received: from E105887 ([10.1.2.79]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 14 Sep 2015 11:37:02 +0100 From: "David Sherwood" To: "'Richard Biener'" , "GCC Patches" , "Richard Sandiford" References: <000001d0d5b0$5da4dbb0$18ee9310$@arm.com> <000001d0d8cf$2fb42770$8f1c7650$@arm.com> <000001d0d9a6$1efdc350$5cf949f0$@arm.com> <87fv3gbs36.fsf@e105548-lin.cambridge.arm.com> <8737zfbo2j.fsf@e105548-lin.cambridge.arm.com> <87y4h7a35q.fsf@e105548-lin.cambridge.arm.com> <87twrva0ml.fsf@e105548-lin.cambridge.arm.com> In-Reply-To: Subject: RE: [PING][Patch] Add support for IEEE-conformant versions of scalar fmin* and fmax* Date: Mon, 14 Sep 2015 10:47:00 -0000 Message-ID: <000001d0eed9$48ed0070$dac70150$@arm.com> MIME-Version: 1.0 X-MC-Unique: CLck1_dRQfup4EAwm-HHbw-1 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0001_01D0EEE1.AAF79930" X-SW-Source: 2015-09/txt/msg00925.txt.bz2 This is a multipart message in MIME format. ------=_NextPart_000_0001_01D0EEE1.AAF79930 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3171 Hi All, For what it's worth I have uploaded a new patch that changes the name from STRICT_FMIN/MAX to just FMIN/FMAX, although I realise that this discussion has not yet been resolved. I have also added scheduling attributes to the aarch64 instructions. Regards, David Sherwood. ChangeLog: 2015-08-28 David Sherwood gcc/ * builtins.c (integer_valued_real_p): Add FMIN_EXPR and FMAX_EXPR. (fold_builtin_fmin_fmax): For strict math, convert builtins fmin and fmax to FMIN_EXPR and FMIN_EXPR, respectively. * expr.c (expand_expr_real_2): Add FMIN_EXPR and FMAX_EXPR. * fold-const.c (const_binop): Likewise. (fold_binary_loc, tree_binary_nonnegative_warnv_p): Likewise. (tree_binary_nonzero_warnv_p): Likewise. * optabs.h (fminmax_support): Declare. * optabs.def: Add new optabs fmax_optab/fmin_optab. * optabs.c (optab_for_tree_code): Return new optabs for FMIN_EXPR and FMAX_EXPR. (fminmax_support): New function. * real.c (real_arithmetic): Add FMIN_EXPR and FMAX_EXPR. * tree.def: Likewise. * tree.c (associative_tree_code, commutative_tree_code): Likewise. * tree-cfg.c (verify_expr): Likewise. (verify_gimple_assign_binary): Likewise. * tree-inline.c (estimate_operator_cost): Likewise. * tree-pretty-print.c (dump_generic_node, op_code_prio): Likewise. (op_symbol_code): Likewise. * config/aarch64/aarch64.md: New pattern. * config/aarch64/aarch64-simd.md: Likewise. * config/aarch64/iterators.md: New unspecs, iterators. * config/arm/iterators.md: New iterators. * config/arm/unspecs.md: New unspecs. * config/arm/neon.md: New pattern. * config/arm/vfp.md: Likewise. * doc/generic.texi: Add FMAX_EXPR and FMIN_EXPR. * doc/md.texi: Add fmin and fmax patterns. gcc/testsuite * gcc.target/aarch64/fmaxmin.c: New test. * gcc.target/arm/fmaxmin.c: New test. > -----Original Message----- > From: Richard Biener [mailto:richard.guenther@gmail.com] > Sent: 19 August 2015 14:41 > To: Richard Biener; David Sherwood; GCC Patches; Richard Sandiford > Subject: Re: [PING][Patch] Add support for IEEE-conformant versions of sc= alar fmin* and fmax* >=20 > On Wed, Aug 19, 2015 at 3:06 PM, Richard Sandiford > wrote: > > Richard Biener writes: > >> As an additional point for many math functions we have to support errno > >> which means, like, BUILT_IN_SQRT can be rewritten to SQRT_EXPR > >> only if -fno-math-errno is in effect. But then code has to handle > >> both variants for things like constant folding and expression combinin= g. > >> That's very unfortunate and something we want to avoid (one reason > >> the POW_EXPR thing didn't fly when I tried). STRICT_FMIN/MAX_EXPR > >> is an example where this doesn't apply, of course (but I detest the na= me, > >> just use FMIN/FMAX_EXPR?). Still you'd need to handle both, > >> FMIN_EXPR and BUILT_IN_FMIN, in code doing analysis/transform. > > > > Yeah, but match.pd makes that easy, right? ;-) >=20 > Sure, but that only addresses stmt combining, not other passes. And of c= ourse > it causes {gimple,generic}-match.c to become even bigger ;) >=20 > Richard. ------=_NextPart_000_0001_01D0EEE1.AAF79930 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="fmaxmin.patch" Content-Disposition: attachment; filename="fmaxmin.patch" Content-length: 28784 ZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jIGIvZ2NjL2J1aWx0aW5zLmMK aW5kZXggZDc5MzcyYy4uMjg0NTM0ZiAxMDA2NDQKLS0tIGEvZ2NjL2J1aWx0 aW5zLmMKKysrIGIvZ2NjL2J1aWx0aW5zLmMKQEAgLTczOTMsNiArNzM5Myw4 IEBAIGludGVnZXJfdmFsdWVkX3JlYWxfcCAodHJlZSB0KQogICAgIGNhc2Ug TVVMVF9FWFBSOgogICAgIGNhc2UgTUlOX0VYUFI6CiAgICAgY2FzZSBNQVhf RVhQUjoKKyAgICBjYXNlIEZNSU5fRVhQUjoKKyAgICBjYXNlIEZNQVhfRVhQ UjoKICAgICAgIHJldHVybiBpbnRlZ2VyX3ZhbHVlZF9yZWFsX3AgKFRSRUVf T1BFUkFORCAodCwgMCkpCiAJICAgICAmJiBpbnRlZ2VyX3ZhbHVlZF9yZWFs X3AgKFRSRUVfT1BFUkFORCAodCwgMSkpOwogCkBAIC05MTc2LDYgKzkxNzgs MTAgQEAgZm9sZF9idWlsdGluX2ZtaW5fZm1heCAobG9jYXRpb25fdCBsb2Ms IHRyZWUgYXJnMCwgdHJlZSBhcmcxLAogCXJldHVybiBmb2xkX2J1aWxkMl9s b2MgKGxvYywgKG1heCA/IE1BWF9FWFBSIDogTUlOX0VYUFIpLCB0eXBlLAog CQkJICAgIGZvbGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwgYXJnMCksCiAJ CQkgICAgZm9sZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBhcmcxKSk7Cisg ICAgICBlbHNlIGlmIChmbWlubWF4X3N1cHBvcnQgKHR5cGUsIG1heCkpCisJ cmV0dXJuIGZvbGRfYnVpbGQyX2xvYyAobG9jLCAobWF4ID8gRk1BWF9FWFBS IDogRk1JTl9FWFBSKSwgdHlwZSwKKwkJCSAgICBmb2xkX2NvbnZlcnRfbG9j IChsb2MsIHR5cGUsIGFyZzApLAorCQkJICAgIGZvbGRfY29udmVydF9sb2Mg KGxvYywgdHlwZSwgYXJnMSkpOwogICAgIH0KICAgcmV0dXJuIE5VTExfVFJF RTsKIH0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LXNpbWQubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1k CmluZGV4IDk3Nzc0MTguLjBhNzA0YjYgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtMTgyMSw2ICsxODIxLDE2IEBA CiAgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2ZwX21pbm1heF88VmV0eXBl PjxxPiIpXQogKQogCisoZGVmaW5lX2luc24gIjxmbWF4bWluPjxtb2RlPjMi CisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZEUUYgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj13IikKKwkodW5zcGVjOlZEUUYgWyhtYXRjaF9vcGVyYW5kOlZE UUYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKQorCQkgICAgICAobWF0Y2hf b3BlcmFuZDpWRFFGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ3IildCisJCSAg ICAgIEZNQVhNSU5fU1RSSUNUKSldCisgICJUQVJHRVRfU0lNRCIKKyAgIjxm bWF4bWluX29wPlxcdCUwLjxWdHlwZT4sICUxLjxWdHlwZT4sICUyLjxWdHlw ZT4iCisgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2ZwX21pbm1heF88VmV0 eXBlPjxxPiIpXQorKQorCiAoZGVmaW5lX2luc24gIjxtYXhtaW5fdW5zPjxt b2RlPjMiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZEUUYgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj13IikKICAgICAgICAodW5zcGVjOlZEUUYgWyhtYXRj aF9vcGVyYW5kOlZEUUYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKQpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAppbmRleCBjODUxMWYwLi4wMjNi ZTU4IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5t ZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApAQCAtNDMx NSw2ICs0MzE1LDE2IEBACiAgIFsoc2V0X2F0dHIgInR5cGUiICJmX21pbm1h eDxzPiIpXQogKQogCisoZGVmaW5lX2luc24gIjxmbWF4bWluPjxtb2RlPjMi CisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkdQRiAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXciKQorCSh1bnNwZWM6R1BGIFsobWF0Y2hfb3BlcmFuZDpHUEYg MSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKQorCQkgICAgIChtYXRjaF9vcGVy YW5kOkdQRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpXQorCQkgICAgIEZN QVhNSU5fU1RSSUNUKSldCisgICJUQVJHRVRfRkxPQVQiCisgICI8Zm1heG1p bl9vcD5cXHQlPHM+MCwgJTxzPjEsICU8cz4yIgorICBbKHNldF9hdHRyICJ0 eXBlIiAiZl9taW5tYXg8cz4iKV0KKykKKwogOzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogOzsgUmVsb2FkIHN1cHBvcnQKIDs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9pdGVy YXRvcnMubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCmlu ZGV4IGI4YTQ1ZDEuLjVlMjQ4YmMgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv YWFyY2g2NC9pdGVyYXRvcnMubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0 L2l0ZXJhdG9ycy5tZApAQCAtMjgyLDYgKzI4Miw4IEBACiAgICAgVU5TUEVD X1BNVUxMMiAgICAgICA7IFVzZWQgaW4gYWFyY2g2NC1zaW1kLm1kLgogICAg IFVOU1BFQ19SRVZfUkVHTElTVCAgOyBVc2VkIGluIGFhcmNoNjQtc2ltZC5t ZC4KICAgICBVTlNQRUNfVkVDX1NIUiAgICAgIDsgVXNlZCBpbiBhYXJjaDY0 LXNpbWQubWQuCisgICAgVU5TUEVDX0ZNQVhfU1RSSUNUICA7IFVzZWQgaW4g YWFyY2g2NC1zaW1kLm1kLgorICAgIFVOU1BFQ19GTUlOX1NUUklDVCAgOyBV c2VkIGluIGFhcmNoNjQtc2ltZC5tZC4KIF0pCiAKIDs7IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTg3Myw2ICs4NzUsOCBAQAogCiAoZGVmaW5lX2lu dF9pdGVyYXRvciBGTUFYTUlOX1VOUyBbVU5TUEVDX0ZNQVggVU5TUEVDX0ZN SU5dKQogCisoZGVmaW5lX2ludF9pdGVyYXRvciBGTUFYTUlOX1NUUklDVCBb VU5TUEVDX0ZNQVhfU1RSSUNUIFVOU1BFQ19GTUlOX1NUUklDVF0pCisKIChk ZWZpbmVfaW50X2l0ZXJhdG9yIFZRRE1VTEggW1VOU1BFQ19TUURNVUxIIFVO U1BFQ19TUVJETVVMSF0pCiAKIChkZWZpbmVfaW50X2l0ZXJhdG9yIFVTU1VR QUREIFtVTlNQRUNfU1VRQUREIFVOU1BFQ19VU1FBRERdKQpAQCAtOTUzLDYg Kzk1NywxMiBAQAogCQkJCSAoVU5TUEVDX0ZNSU5OTVYgImZtaW5ubSIpCiAJ CQkJIChVTlNQRUNfRk1JTlYgImZtaW4iKV0pCiAKKyhkZWZpbmVfaW50X2F0 dHIgZm1heG1pbiBbKFVOU1BFQ19GTUFYX1NUUklDVCAiZm1heCIpCisJCQkg IChVTlNQRUNfRk1JTl9TVFJJQ1QgImZtaW4iKV0pCisKKyhkZWZpbmVfaW50 X2F0dHIgZm1heG1pbl9vcCBbKFVOU1BFQ19GTUFYX1NUUklDVCAiZm1heG5t IikKKwkJCSAgICAgKFVOU1BFQ19GTUlOX1NUUklDVCAiZm1pbm5tIildKQor CiAoZGVmaW5lX2ludF9hdHRyIHN1ciBbKFVOU1BFQ19TSEFERCAicyIpIChV TlNQRUNfVUhBREQgInUiKQogCQkgICAgICAoVU5TUEVDX1NSSEFERCAic3Ii KSAoVU5TUEVDX1VSSEFERCAidXIiKQogCQkgICAgICAoVU5TUEVDX1NIU1VC ICJzIikgKFVOU1BFQ19VSFNVQiAidSIpCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FybS9pdGVyYXRvcnMubWQgYi9nY2MvY29uZmlnL2FybS9pdGVyYXRv cnMubWQKaW5kZXggMWU3ZjNmMS4uNDJmYzY4OCAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9hcm0vaXRlcmF0b3JzLm1kCisrKyBiL2djYy9jb25maWcvYXJt L2l0ZXJhdG9ycy5tZApAQCAtMjkyLDYgKzI5Miw4IEBACiAKIChkZWZpbmVf aW50X2l0ZXJhdG9yIFZNQVhNSU5GIFtVTlNQRUNfVk1BWCBVTlNQRUNfVk1J Tl0pCiAKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFZNQVhNSU5GX1NUUklDVCBb VU5TUEVDX1ZNQVhfU1RSSUNUIFVOU1BFQ19WTUlOX1NUUklDVF0pCisKIChk ZWZpbmVfaW50X2l0ZXJhdG9yIFZQQURETCBbVU5TUEVDX1ZQQURETF9TIFVO U1BFQ19WUEFERExfVV0pCiAKIChkZWZpbmVfaW50X2l0ZXJhdG9yIFZQQURB TCBbVU5TUEVDX1ZQQURBTF9TIFVOU1BFQ19WUEFEQUxfVV0pCkBAIC03MTYs NiArNzE4LDEzIEBACiAgIChVTlNQRUNfVlBNSU4gIm1pbiIpIChVTlNQRUNf VlBNSU5fVSAibWluIikKIF0pCiAKKyhkZWZpbmVfaW50X2F0dHIgZm1heG1p biBbCisgIChVTlNQRUNfVk1BWF9TVFJJQ1QgImZtYXgiKSAoVU5TUEVDX1ZN SU5fU1RSSUNUICJmbWluIildKQorCisoZGVmaW5lX2ludF9hdHRyIGZtYXht aW5fb3AgWworICAoVU5TUEVDX1ZNQVhfU1RSSUNUICJ2bWF4bm0iKSAoVU5T UEVDX1ZNSU5fU1RSSUNUICJ2bWlubm0iKQorXSkKKwogKGRlZmluZV9pbnRf YXR0ciBzaGlmdF9vcCBbCiAgIChVTlNQRUNfVlNITF9TICJzaGwiKSAoVU5T UEVDX1ZTSExfVSAic2hsIikKICAgKFVOU1BFQ19WUlNITF9TICJyc2hsIikg KFVOU1BFQ19WUlNITF9VICJyc2hsIikKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvYXJtL25lb24ubWQgYi9nY2MvY29uZmlnL2FybS9uZW9uLm1kCmluZGV4 IDg3MzMzMGYuLmQzOWY3ZmYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJt L25lb24ubWQKKysrIGIvZ2NjL2NvbmZpZy9hcm0vbmVvbi5tZApAQCAtMjM1 NCw2ICsyMzU0LDE2IEBACiAgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2Zw X21pbm1heF9zPHE+IildCiApCiAKKyhkZWZpbmVfaW5zbiAiPGZtYXhtaW4+ PG1vZGU+MyIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkNWVEYgMCAic19y ZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQorCSh1bnNwZWM6VkNWVEYgWyhtYXRj aF9vcGVyYW5kOlZDVlRGIDEgInNfcmVnaXN0ZXJfb3BlcmFuZCIgInciKQor CQkgICAgICAgKG1hdGNoX29wZXJhbmQ6VkNWVEYgMiAic19yZWdpc3Rlcl9v cGVyYW5kIiAidyIpXQorCQkgICAgICAgVk1BWE1JTkZfU1RSSUNUKSldCisg ICJUQVJHRVRfTkVPTiAmJiBUQVJHRVRfRlBVX0FSTVY4IgorICAiPGZtYXht aW5fb3A+LjxWX3NfZWxlbT5cdCU8Vl9yZWc+MCwgJTxWX3JlZz4xLCAlPFZf cmVnPjIiCisgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2ZwX21pbm1heF9z PHE+IildCispCisKIChkZWZpbmVfZXhwYW5kICJuZW9uX3ZwYWRkPG1vZGU+ IgogICBbKG1hdGNoX29wZXJhbmQ6VkQgMCAic19yZWdpc3Rlcl9vcGVyYW5k IiAiPXciKQogICAgKG1hdGNoX29wZXJhbmQ6VkQgMSAic19yZWdpc3Rlcl9v cGVyYW5kIiAidyIpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS91bnNw ZWNzLm1kIGIvZ2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZAppbmRleCAwZWMy YzQ4Li44MzA5NGQ1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS91bnNw ZWNzLm1kCisrKyBiL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQKQEAgLTIy NCw4ICsyMjQsMTAgQEAKICAgVU5TUEVDX1ZMRDRfTEFORQogICBVTlNQRUNf Vk1BWAogICBVTlNQRUNfVk1BWF9VCisgIFVOU1BFQ19WTUFYX1NUUklDVAog ICBVTlNQRUNfVk1JTgogICBVTlNQRUNfVk1JTl9VCisgIFVOU1BFQ19WTUlO X1NUUklDVAogICBVTlNQRUNfVk1MQQogICBVTlNQRUNfVk1MQV9MQU5FCiAg IFVOU1BFQ19WTUxBTF9TCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS92 ZnAubWQgYi9nY2MvY29uZmlnL2FybS92ZnAubWQKaW5kZXggMDgxYWFiMi4u YTlhNTk0OSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vdmZwLm1kCisr KyBiL2djYy9jb25maWcvYXJtL3ZmcC5tZApAQCAtMTM2OCw2ICsxMzY4LDE3 IEBACiAgICAoc2V0X2F0dHIgImNvbmRzIiAidW5jb25kaXRpb25hbCIpXQog KQogCisoZGVmaW5lX2luc24gIjxmbWF4bWluPjxtb2RlPjMiCisgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlNERiAwICJzX3JlZ2lzdGVyX29wZXJhbmQiICI9 PEZfY29uc3RyYWludD4iKQorCSh1bnNwZWM6U0RGIFsobWF0Y2hfb3BlcmFu ZDpTREYgMSAic19yZWdpc3Rlcl9vcGVyYW5kIiAiPEZfY29uc3RyYWludD4i KQorCQkgICAgIChtYXRjaF9vcGVyYW5kOlNERiAyICJzX3JlZ2lzdGVyX29w ZXJhbmQiICI8Rl9jb25zdHJhaW50PiIpXQorCQkgICAgIFZNQVhNSU5GX1NU UklDVCkpXQorICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX1ZGUDUg PHZmcF9kb3VibGVfY29uZD4iCisgICI8Zm1heG1pbl9vcD4uPFZfaWZfZWxl bT5cXHQlPFZfcmVnPjAsICU8Vl9yZWc+MSwgJTxWX3JlZz4yIgorICBbKHNl dF9hdHRyICJ0eXBlIiAiZl9taW5tYXg8dmZwX3R5cGU+IikKKyAgIChzZXRf YXR0ciAiY29uZHMiICJ1bmNvbmRpdGlvbmFsIildCispCisKIDs7IFdyaXRl IEZsb2F0aW5nLXBvaW50IFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3Rlci4K IChkZWZpbmVfaW5zbiAic2V0X2Zwc2NyIgogICBbKHVuc3BlY192b2xhdGls ZSBbKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgInIi KV0gVlVOU1BFQ19TRVRfRlBTQ1IpXQpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9n ZW5lcmljLnRleGkgYi9nY2MvZG9jL2dlbmVyaWMudGV4aQppbmRleCBiYmFm YWQ5Li45MzdjYTViIDEwMDY0NAotLS0gYS9nY2MvZG9jL2dlbmVyaWMudGV4 aQorKysgYi9nY2MvZG9jL2dlbmVyaWMudGV4aQpAQCAtMTI2OCw2ICsxMjY4 LDggQEAgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZSBmaWVsZCwgYnV0IHNob3Vs ZCBub3QgYmUgdXNlZCBkaXJlY3RseTsgY2FsbAogQHRpbmRleCBUQVJHRVRf RVhQUgogQHRpbmRleCBWQV9BUkdfRVhQUgogQHRpbmRleCBBTk5PVEFURV9F WFBSCitAdGluZGV4IEZNQVhfRVhQUgorQHRpbmRleCBGTUlOX0VYUFIKIAog QHRhYmxlIEBjb2RlCiBAaXRlbSBORUdBVEVfRVhQUgpAQCAtMTY4Nyw4ICsx Njg5LDE2IEBAIGl0cyBzb2xlIGFyZ3VtZW50IHlpZWxkcyB0aGUgcmVwcmVz ZW50YXRpb24gZm9yIEBjb2Rle2FwfS4KIFRoaXMgbm9kZSBpcyB1c2VkIHRv IGF0dGFjaCBtYXJrZXJzIHRvIGFuIGV4cHJlc3Npb24uIFRoZSBmaXJzdCBv cGVyYW5kCiBpcyB0aGUgYW5ub3RhdGVkIGV4cHJlc3Npb24sIHRoZSBzZWNv bmQgaXMgYW4gQGNvZGV7SU5URUdFUl9DU1R9IHdpdGgKIGEgdmFsdWUgZnJv bSBAY29kZXtlbnVtIGFubm90X2V4cHJfa2luZH0uCi1AZW5kIHRhYmxlCiAK K0BpdGVtIEZNQVhfRVhQUgorQGl0ZW0gRk1JTl9FWFBSCitUaGVzZSBub2Rl cyByZXByZXNlbnQgSUVFRS1jb25mb3JtYW50IG1heGltdW0gYW5kIG1pbmlt dW0gb3BlcmF0aW9ucy4gIElmIGVpdGhlcgorb3BlcmFuZCBpcyBhIHF1aWV0 IEBjb2Rle05hTn0gdGhlIG90aGVyIG9wZXJhbmQgaXMgcmV0dXJuZWQuICBJ ZiBib3RoIG9wZXJhbmRzCithcmUgcXVpZXQgQGNvZGV7TmFOfSwgdGhlbiBh IHF1aWV0IEBjb2Rle05hTn0gaXMgcmV0dXJuZWQuICBJbiB0aGUgY2FzZSB3 aGVuIGdjYworc3VwcG9ydHMgc2lnbmFsbGluZyBAY29kZXtOYU59ICgtZnNp Z25hbGluZy1uYW5zKSBhbiBpbnZhbGlkIGZsb2F0aW5nIHBvaW50CitleGNl cHRpb24gaXMgcmFpc2VkIGFuZCBhIHF1aWV0IEBjb2Rle05hTn0gaXMgcmV0 dXJuZWQuCisKK0BlbmQgdGFibGUKIAogQG5vZGUgVmVjdG9ycwogQHN1YnNl Y3Rpb24gVmVjdG9ycwpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIv Z2NjL2RvYy9tZC50ZXhpCmluZGV4IDBiZmZkYzYuLjMxYjFkMjQgMTAwNjQ0 Ci0tLSBhL2djYy9kb2MvbWQudGV4aQorKysgYi9nY2MvZG9jL21kLnRleGkK QEAgLTQ4NzksNiArNDg3OSwxNSBAQCBTaWduZWQgbWluaW11bSBhbmQgbWF4 aW11bSBvcGVyYXRpb25zLiAgV2hlbiB1c2VkIHdpdGggZmxvYXRpbmcgcG9p bnQsCiBpZiBib3RoIG9wZXJhbmRzIGFyZSB6ZXJvcywgb3IgaWYgZWl0aGVy IG9wZXJhbmQgaXMgQGNvZGV7TmFOfSwgdGhlbgogaXQgaXMgdW5zcGVjaWZp ZWQgd2hpY2ggb2YgdGhlIHR3byBvcGVyYW5kcyBpcyByZXR1cm5lZCBhcyB0 aGUgcmVzdWx0LgogCitAY2luZGV4IEBjb2Rle2ZtaW5AdmFye219M30gaW5z dHJ1Y3Rpb24gcGF0dGVybgorQGNpbmRleCBAY29kZXtmbWF4QHZhcnttfTN9 IGluc3RydWN0aW9uIHBhdHRlcm4KK0BpdGVtIEBzYW1we2ZtaW5AdmFye219 M30sIEBzYW1we2ZtYXhAdmFye219M30KK0lFRUUtY29uZm9ybWFudCBtaW5p bXVtIGFuZCBtYXhpbXVtIG9wZXJhdGlvbnMuICBJZiBvbmUgb3BlcmFuZCBp cyBhIHF1aWV0CitAY29kZXtOYU59LCB0aGVuIHRoZSBvdGhlciBvcGVyYW5k IGlzIHJldHVybmVkLiAgSWYgYm90aCBvcGVyYW5kcyBhcmUgcXVpZXQKK0Bj b2Rle05hTn0sIHRoZW4gYSBxdWlldCBAY29kZXtOYU59IGlzIHJldHVybmVk LiAgSW4gdGhlIGNhc2Ugd2hlbiBnY2Mgc3VwcG9ydHMKK3NpZ25hbGxpbmcg QGNvZGV7TmFOfSAoLWZzaWduYWxpbmctbmFucykgYW4gaW52YWxpZCBmbG9h dGluZyBwb2ludCBleGNlcHRpb24gaXMKK3JhaXNlZCBhbmQgYSBxdWlldCBA Y29kZXtOYU59IGlzIHJldHVybmVkLgorCiBAY2luZGV4IEBjb2Rle3JlZHVj X3NtaW5fQHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybgogQGNpbmRleCBA Y29kZXtyZWR1Y19zbWF4X0B2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4K IEBpdGVtIEBzYW1we3JlZHVjX3NtaW5fQHZhcnttfX0sIEBzYW1we3JlZHVj X3NtYXhfQHZhcnttfX0KZGlmZiAtLWdpdCBhL2djYy9leHByLmMgYi9nY2Mv ZXhwci5jCmluZGV4IDFlODIwYjQuLmY2OWJhODAgMTAwNjQ0Ci0tLSBhL2dj Yy9leHByLmMKKysrIGIvZ2NjL2V4cHIuYwpAQCAtODY4OSw2ICs4Njg5LDgg QEAgZXhwYW5kX2V4cHJfcmVhbF8yIChzZXBvcHMgb3BzLCBydHggdGFyZ2V0 LCBtYWNoaW5lX21vZGUgdG1vZGUsCiAgICAgICByZXR1cm4gZXhwYW5kX2Fi cyAobW9kZSwgb3AwLCB0YXJnZXQsIHVuc2lnbmVkcCwKIAkJCSBzYWZlX2Zy b21fcCAodGFyZ2V0LCB0cmVlb3AwLCAxKSk7CiAKKyAgICBjYXNlIEZNQVhf RVhQUjoKKyAgICBjYXNlIEZNSU5fRVhQUjoKICAgICBjYXNlIE1BWF9FWFBS OgogICAgIGNhc2UgTUlOX0VYUFI6CiAgICAgICB0YXJnZXQgPSBvcmlnaW5h bF90YXJnZXQ7CmRpZmYgLS1naXQgYS9nY2MvZm9sZC1jb25zdC5jIGIvZ2Nj L2ZvbGQtY29uc3QuYwppbmRleCBjODI2ZTY3Li43ODQ2ZTQyIDEwMDY0NAot LS0gYS9nY2MvZm9sZC1jb25zdC5jCisrKyBiL2djYy9mb2xkLWNvbnN0LmMK QEAgLTExNTUsNiArMTE1NSw4IEBAIGNvbnN0X2Jpbm9wIChlbnVtIHRyZWVf Y29kZSBjb2RlLCB0cmVlIGFyZzEsIHRyZWUgYXJnMikKIAljYXNlIFJESVZf RVhQUjoKIAljYXNlIE1JTl9FWFBSOgogCWNhc2UgTUFYX0VYUFI6CisJY2Fz ZSBGTUlOX0VYUFI6CisJY2FzZSBGTUFYX0VYUFI6CiAJICBicmVhazsKIAog CWRlZmF1bHQ6CkBAIC05MDY5LDcgKzkwNzEsOCBAQCBmb2xkX2JpbmFyeV9s b2MgKGxvY2F0aW9uX3QgbG9jLAogICAgICBjYXNlcywgdGhlIGFwcHJvcHJp YXRlIHR5cGUgY29udmVyc2lvbnMgc2hvdWxkIGJlIHB1dCBiYWNrIGluCiAg ICAgIHRoZSB0cmVlIHRoYXQgd2lsbCBnZXQgb3V0IG9mIHRoZSBjb25zdGFu dCBmb2xkZXIuICAqLwogCi0gIGlmIChraW5kID09IHRjY19jb21wYXJpc29u IHx8IGNvZGUgPT0gTUlOX0VYUFIgfHwgY29kZSA9PSBNQVhfRVhQUikKKyAg aWYgKGtpbmQgPT0gdGNjX2NvbXBhcmlzb24gfHwgY29kZSA9PSBNSU5fRVhQ UiB8fCBjb2RlID09IE1BWF9FWFBSCisgICAgICB8fCBjb2RlID09IEZNSU5f RVhQUiB8fCBjb2RlID09IEZNQVhfRVhQUikKICAgICB7CiAgICAgICBTVFJJ UF9TSUdOX05PUFMgKGFyZzApOwogICAgICAgU1RSSVBfU0lHTl9OT1BTIChh cmcxKTsKQEAgLTEzMDE3LDYgKzEzMDIwLDcgQEAgdHJlZV9iaW5hcnlfbm9u bmVnYXRpdmVfd2FybnZfcCAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSB0 eXBlLCB0cmVlIG9wMCwKIAogICAgIGNhc2UgQklUX0FORF9FWFBSOgogICAg IGNhc2UgTUFYX0VYUFI6CisgICAgY2FzZSBGTUFYX0VYUFI6CiAgICAgICBy ZXR1cm4gKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93YXJudl9wIChvcDAsCiAJ CQkJCSAgICAgc3RyaWN0X292ZXJmbG93X3ApCiAJICAgICAgfHwgdHJlZV9l eHByX25vbm5lZ2F0aXZlX3dhcm52X3AgKG9wMSwKQEAgLTEzMDI1LDYgKzEz MDI5LDcgQEAgdHJlZV9iaW5hcnlfbm9ubmVnYXRpdmVfd2FybnZfcCAoZW51 bSB0cmVlX2NvZGUgY29kZSwgdHJlZSB0eXBlLCB0cmVlIG9wMCwKICAgICBj YXNlIEJJVF9JT1JfRVhQUjoKICAgICBjYXNlIEJJVF9YT1JfRVhQUjoKICAg ICBjYXNlIE1JTl9FWFBSOgorICAgIGNhc2UgRk1JTl9FWFBSOgogICAgIGNh c2UgUkRJVl9FWFBSOgogICAgIGNhc2UgVFJVTkNfRElWX0VYUFI6CiAgICAg Y2FzZSBDRUlMX0RJVl9FWFBSOgpAQCAtMTM0NzksNiArMTM0ODQsNyBAQCB0 cmVlX2JpbmFyeV9ub256ZXJvX3dhcm52X3AgKGVudW0gdHJlZV9jb2RlIGNv ZGUsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgTUlOX0VYUFI6CisgICAg Y2FzZSBGTUlOX0VYUFI6CiAgICAgICBzdWJfc3RyaWN0X292ZXJmbG93X3Ag PSBmYWxzZTsKICAgICAgIGlmICh0cmVlX2V4cHJfbm9uemVyb193YXJudl9w IChvcDAsCiAJCQkJICAgICAmc3ViX3N0cmljdF9vdmVyZmxvd19wKQpAQCAt MTM0OTEsNiArMTM0OTcsNyBAQCB0cmVlX2JpbmFyeV9ub256ZXJvX3dhcm52 X3AgKGVudW0gdHJlZV9jb2RlIGNvZGUsCiAgICAgICBicmVhazsKIAogICAg IGNhc2UgTUFYX0VYUFI6CisgICAgY2FzZSBGTUFYX0VYUFI6CiAgICAgICBz dWJfc3RyaWN0X292ZXJmbG93X3AgPSBmYWxzZTsKICAgICAgIGlmICh0cmVl X2V4cHJfbm9uemVyb193YXJudl9wIChvcDAsCiAJCQkJICAgICAmc3ViX3N0 cmljdF9vdmVyZmxvd19wKSkKZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMuYyBi L2djYy9vcHRhYnMuYwppbmRleCBlNTMzZTZlLi5iNzMzYTJlIDEwMDY0NAot LS0gYS9nY2Mvb3B0YWJzLmMKKysrIGIvZ2NjL29wdGFicy5jCkBAIC00NzYs NiArNDc2LDEyIEBAIG9wdGFiX2Zvcl90cmVlX2NvZGUgKGVudW0gdHJlZV9j b2RlIGNvZGUsIGNvbnN0X3RyZWUgdHlwZSwKICAgICBjYXNlIE1JTl9FWFBS OgogICAgICAgcmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUpID8gdW1pbl9v cHRhYiA6IHNtaW5fb3B0YWI7CiAKKyAgICBjYXNlIEZNQVhfRVhQUjoKKyAg ICAgIHJldHVybiBmbWF4X29wdGFiOworCisgICAgY2FzZSBGTUlOX0VYUFI6 CisgICAgICByZXR1cm4gZm1pbl9vcHRhYjsKKwogICAgIGNhc2UgUkVBTElH Tl9MT0FEX0VYUFI6CiAgICAgICByZXR1cm4gdmVjX3JlYWxpZ25fbG9hZF9v cHRhYjsKIApAQCAtNjc5MSw2ICs2Nzk3LDE2IEBAIGV4cGFuZF92ZWNfcGVy bSAobWFjaGluZV9tb2RlIG1vZGUsIHJ0eCB2MCwgcnR4IHYxLCBydHggc2Vs LCBydHggdGFyZ2V0KQogICByZXR1cm4gdG1wOwogfQogCisvKiBSZXR1cm4g dHJ1ZSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIHN0cmljdCBGUCBtYXRoIG1h eCAoTUFYID0gVFJVRSkgYW5kIG1pbgorICAgKE1BWCA9IEZBTFNFKSBvcGVy YXRpb25zIG9uIHR5cGUgVFlQRS4gICovCitib29sCitmbWlubWF4X3N1cHBv cnQgKHRyZWUgdHlwZSwgYm9vbCBtYXgpCit7CisgIG9wdGFiIG9wdGFiID0g b3B0YWJfZm9yX3RyZWVfY29kZQorICAgIChtYXggPyBGTUFYX0VYUFIgOiBG TUlOX0VYUFIsIHR5cGUsIG9wdGFiX2RlZmF1bHQpOworICByZXR1cm4gb3B0 YWJfaGFuZGxlciAob3B0YWIsIFRZUEVfTU9ERSAodHlwZSkpICE9IENPREVf Rk9SX25vdGhpbmc7Cit9CisKIC8qIFJldHVybiBpbnNuIGNvZGUgZm9yIGEg Y29uZGl0aW9uYWwgb3BlcmF0b3Igd2l0aCBhIGNvbXBhcmlzb24gaW4KICAg IG1vZGUgQ01PREUsIHVuc2lnbmVkIGlmIFVOUyBpcyB0cnVlLCByZXN1bHRp bmcgaW4gYSB2YWx1ZSBvZiBtb2RlIFZNT0RFLiAgKi8KIApkaWZmIC0tZ2l0 IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZgppbmRleCA4ODhi MjFjLi4zNmM3MmQ4IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmRlZgorKysg Yi9nY2Mvb3B0YWJzLmRlZgpAQCAtMjQ0LDYgKzI0NCwxMCBAQCBPUFRBQl9E IChzaW5fb3B0YWIsICJzaW4kYTIiKQogT1BUQUJfRCAoc2luY29zX29wdGFi LCAic2luY29zJGEzIikKIE9QVEFCX0QgKHRhbl9vcHRhYiwgInRhbiRhMiIp CiAKKy8qIEM5OSBpbXBsZW1lbnRhdGlvbnMgb2YgZm1heC9mbWluLiAgKi8K K09QVEFCX0QgKGZtYXhfb3B0YWIsICJmbWF4JGEzIikKK09QVEFCX0QgKGZt aW5fb3B0YWIsICJmbWluJGEzIikKKwogLyogVmVjdG9yIHJlZHVjdGlvbiB0 byBhIHNjYWxhci4gICovCiBPUFRBQl9EIChyZWR1Y19zbWF4X3NjYWxfb3B0 YWIsICJyZWR1Y19zbWF4X3NjYWxfJGEiKQogT1BUQUJfRCAocmVkdWNfc21p bl9zY2FsX29wdGFiLCAicmVkdWNfc21pbl9zY2FsXyRhIikKZGlmZiAtLWdp dCBhL2djYy9vcHRhYnMuaCBiL2djYy9vcHRhYnMuaAppbmRleCA5NWY1Y2Jj Li4wYmJmNzM2IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmgKKysrIGIvZ2Nj L29wdGFicy5oCkBAIC01NjUsNCArNTY1LDYgQEAgZXh0ZXJuIGJvb2wgbHNo aWZ0X2NoZWFwX3AgKGJvb2wpOwogCiBleHRlcm4gZW51bSBydHhfY29kZSBn ZXRfcnR4X2NvZGUgKGVudW0gdHJlZV9jb2RlIHRjb2RlLCBib29sIHVuc2ln bmVkcCk7CiAKK2V4dGVybiBib29sIGZtaW5tYXhfc3VwcG9ydCAodHJlZSwg Ym9vbCk7CisKICNlbmRpZiAvKiBHQ0NfT1BUQUJTX0ggKi8KZGlmZiAtLWdp dCBhL2djYy9yZWFsLmMgYi9nY2MvcmVhbC5jCmluZGV4IGMxZmY3OGQuLjNh MmQ3YjYgMTAwNjQ0Ci0tLSBhL2djYy9yZWFsLmMKKysrIGIvZ2NjL3JlYWwu YwpAQCAtMTAzMyw2ICsxMDMzLDE1IEBAIHJlYWxfYXJpdGhtZXRpYyAoUkVB TF9WQUxVRV9UWVBFICpyLCBpbnQgaWNvZGUsIGNvbnN0IFJFQUxfVkFMVUVf VFlQRSAqb3AwLAogCSpyID0gKm9wMTsKICAgICAgIGJyZWFrOwogCisgICAg Y2FzZSBGTUlOX0VYUFI6CisgICAgICBpZiAob3AwLT5jbCA9PSBydmNfbmFu KQorCSpyID0gKm9wMTsKKyAgICAgIGVsc2UgaWYgKGRvX2NvbXBhcmUgKG9w MCwgb3AxLCAtMSkgPCAwKQorCSpyID0gKm9wMDsKKyAgICAgIGVsc2UKKwkq ciA9ICpvcDE7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgTUFYX0VYUFI6 CiAgICAgICBpZiAob3AxLT5jbCA9PSBydmNfbmFuKQogCSpyID0gKm9wMTsK QEAgLTEwNDIsNiArMTA1MSwxNSBAQCByZWFsX2FyaXRobWV0aWMgKFJFQUxf VkFMVUVfVFlQRSAqciwgaW50IGljb2RlLCBjb25zdCBSRUFMX1ZBTFVFX1RZ UEUgKm9wMCwKIAkqciA9ICpvcDA7CiAgICAgICBicmVhazsKIAorICAgIGNh c2UgRk1BWF9FWFBSOgorICAgICAgaWYgKG9wMC0+Y2wgPT0gcnZjX25hbikK KwkqciA9ICpvcDE7CisgICAgICBlbHNlIGlmIChkb19jb21wYXJlIChvcDAs IG9wMSwgMSkgPCAwKQorCSpyID0gKm9wMTsKKyAgICAgIGVsc2UKKwkqciA9 ICpvcDA7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgTkVHQVRFX0VYUFI6 CiAgICAgICAqciA9ICpvcDA7CiAgICAgICByLT5zaWduIF49IDE7CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9mbWF4 bWluLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9mbWF4 bWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY1 NDk1NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2ZtYXhtaW4uYwpAQCAtMCwwICsxLDY5IEBACisvKiB7 IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnRyZWUt dmVjdG9yaXplIC1mbm8taW5saW5lIC1zYXZlLXRlbXBzIiB9ICovCisKKwor ZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworZG91YmxlIGZtYXggKGRvdWJs ZSwgZG91YmxlKTsKK2Zsb2F0IGZtYXhmIChmbG9hdCwgZmxvYXQpOworZG91 YmxlIGZtaW4gKGRvdWJsZSwgZG91YmxlKTsKK2Zsb2F0IGZtaW5mIChmbG9h dCwgZmxvYXQpOworCisjZGVmaW5lIGlzbmFuIF9fYnVpbHRpbl9pc25hbgor I2RlZmluZSBpc2luZiBfX2J1aWx0aW5faXNpbmYKKworI2RlZmluZSBOQU4g X19idWlsdGluX25hbiAoIiIpCisjZGVmaW5lIElORklOSVRZIF9fYnVpbHRp bl9pbmYgKCkKKworI2RlZmluZSBOVU1fRUxFTVMoVFlQRSkgKDE2IC8gc2l6 ZW9mIChUWVBFKSkKKworI2RlZmluZSBERUZfTUFYTUlOKFRZUEUsRlVOKVwK K3ZvaWQgdGVzdF8jI0ZVTiAoVFlQRSAqX19yZXN0cmljdF9fIHIsIFRZUEUg Kl9fcmVzdHJpY3RfXyBhLFwKKwkJIFRZUEUgKl9fcmVzdHJpY3RfXyBiKVwK K3tcCisgIGludCBpO1wKKyAgZm9yIChpID0gMDsgaSA8IE5VTV9FTEVNUyAo VFlQRSk7IGkrKylcCisgICAgcltpXSA9IEZVTiAoYVtpXSwgYltpXSk7XAor fVwKKworREVGX01BWE1JTiAoZmxvYXQsIGZtYXhmKQorREVGX01BWE1JTiAo ZG91YmxlLCBmbWF4KQorCitERUZfTUFYTUlOIChmbG9hdCwgZm1pbmYpCitE RUZfTUFYTUlOIChkb3VibGUsIGZtaW4pCisKK2ludCBtYWluICgpCit7Cisg IGZsb2F0IGFfZls0XSA9IHsgNCwgTkFOLCAtMywgSU5GSU5JVFkgfTsKKyAg ZmxvYXQgYl9mWzRdID0geyAxLCAgIDcsTkFOLCAwIH07CisgIGZsb2F0IHJf Zls0XTsKKyAgZG91YmxlIGFfZFs0XSA9IHsgNCwgTkFOLCAgLTMsICBJTkZJ TklUWSB9OworICBkb3VibGUgYl9kWzRdID0geyAxLCAgIDcsIE5BTiwgIDAg fTsKKyAgZG91YmxlIHJfZFs0XTsKKworICB0ZXN0X2ZtYXhmIChyX2YsIGFf ZiwgYl9mKTsKKyAgaWYgKHJfZlswXSAhPSA0IHx8IGlzbmFuIChyX2ZbMV0p IHx8IGlzbmFuIChyX2ZbMl0pIHx8ICFpc2luZiAocl9mWzNdKSkKKyAgICBh Ym9ydCAoKTsKKworICB0ZXN0X2ZtaW5mIChyX2YsIGFfZiwgYl9mKTsKKyAg aWYgKHJfZlswXSAhPSAxIHx8IGlzbmFuIChyX2ZbMV0pIHx8IGlzbmFuIChy X2ZbMl0pIHx8IGlzaW5mIChyX2ZbM10pKQorICAgIGFib3J0ICgpOworCisg IHRlc3RfZm1heCAocl9kLCBhX2QsIGJfZCk7CisgIHRlc3RfZm1heCAoJnJf ZFsyXSwgJmFfZFsyXSwgJmJfZFsyXSk7CisgIGlmIChyX2RbMF0gIT0gNCB8 fCBpc25hbiAocl9kWzFdKSB8fCBpc25hbiAocl9kWzJdKSB8fCAhaXNpbmYg KHJfZFszXSkpCisgICAgYWJvcnQgKCk7CisKKyAgdGVzdF9mbWluIChyX2Qs IGFfZCwgYl9kKTsKKyAgdGVzdF9mbWluICgmcl9kWzJdLCAmYV9kWzJdLCAm Yl9kWzJdKTsKKyAgaWYgKHJfZFswXSAhPSAxIHx8IGlzbmFuIChyX2RbMV0p IHx8IGlzbmFuIChyX2RbMl0pIHx8IGlzaW5mIChyX2RbM10pKQorICAgIGFi b3J0ICgpOworCisgIHJldHVybiAwOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgImZtYXhubVx0dlxbMC05XF0rXC40cywg dlxbMC05XF0rXC40cywgdlxbMC05XF0rXC40cyIgMSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiZm1heG5tXHR2XFsw LTlcXStcLjJkLCB2XFswLTlcXStcLjJkLCB2XFswLTlcXStcLjJkIiAxIH0g fSAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg ImZtaW5ubVx0dlxbMC05XF0rXC40cywgdlxbMC05XF0rXC40cywgdlxbMC05 XF0rXC40cyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiZm1pbm5tXHR2XFswLTlcXStcLjJkLCB2XFswLTlcXStc LjJkLCB2XFswLTlcXStcLjJkIiAxIH0gfSAqLworCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2ZtYXhtaW4uYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vZm1heG1pbi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NWFjNWYKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2ZtYXhtaW4u YwpAQCAtMCwwICsxLDY3IEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fdjhfbmVvbl9vayB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1m bm8taW5saW5lIC1tYXJjaD1hcm12OC1hIC1zYXZlLXRlbXBzIiB9ICovCisv KiB7IGRnLWFkZC1vcHRpb25zIGFybV92OF9uZW9uIH0gKi8KKworZXh0ZXJu IHZvaWQgYWJvcnQgKHZvaWQpOworZG91YmxlIGZtYXggKGRvdWJsZSwgZG91 YmxlKTsKK2Zsb2F0IGZtYXhmIChmbG9hdCwgZmxvYXQpOworZG91YmxlIGZt aW4gKGRvdWJsZSwgZG91YmxlKTsKK2Zsb2F0IGZtaW5mIChmbG9hdCwgZmxv YXQpOworCisjZGVmaW5lIGlzbmFuIF9fYnVpbHRpbl9pc25hbgorI2RlZmlu ZSBpc2luZiBfX2J1aWx0aW5faXNpbmYKKworI2RlZmluZSBOQU4gX19idWls dGluX25hbiAoIiIpCisjZGVmaW5lIElORklOSVRZIF9fYnVpbHRpbl9pbmYg KCkKKworI2RlZmluZSBERUZfTUFYTUlOKFRZUEUsRlVOKVwKK3ZvaWQgdGVz dF8jI0ZVTiAoVFlQRSAqX19yZXN0cmljdF9fIHIsIFRZUEUgKl9fcmVzdHJp Y3RfXyBhLFwKKwkJIFRZUEUgKl9fcmVzdHJpY3RfXyBiKVwKK3tcCisgIGlu dCBpO1wKKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKylcCisgICAgcltpXSA9 IEZVTiAoYVtpXSwgYltpXSk7XAorfVwKKworREVGX01BWE1JTiAoZmxvYXQs IGZtYXhmKQorREVGX01BWE1JTiAoZG91YmxlLCBmbWF4KQorCitERUZfTUFY TUlOIChmbG9hdCwgZm1pbmYpCitERUZfTUFYTUlOIChkb3VibGUsIGZtaW4p CisKK2ludCBtYWluICgpCit7CisgIGZsb2F0IGFfZls0XSA9IHsgNCwgTkFO LCAtMywgSU5GSU5JVFkgfTsKKyAgZmxvYXQgYl9mWzRdID0geyAxLCAgIDcs TkFOLCAwIH07CisgIGZsb2F0IHJfZls0XTsKKyAgZG91YmxlIGFfZFs0XSA9 IHsgNCwgTkFOLCAgLTMsICBJTkZJTklUWSB9OworICBkb3VibGUgYl9kWzRd ID0geyAxLCAgIDcsIE5BTiwgIDAgfTsKKyAgZG91YmxlIHJfZFs0XTsKKwor ICB0ZXN0X2ZtYXhmIChyX2YsIGFfZiwgYl9mKTsKKyAgaWYgKHJfZlswXSAh PSA0IHx8IGlzbmFuIChyX2ZbMV0pIHx8IGlzbmFuIChyX2ZbMl0pIHx8ICFp c2luZiAocl9mWzNdKSkKKyAgICBhYm9ydCAoKTsKKworICB0ZXN0X2ZtaW5m IChyX2YsIGFfZiwgYl9mKTsKKyAgaWYgKHJfZlswXSAhPSAxIHx8IGlzbmFu IChyX2ZbMV0pIHx8IGlzbmFuIChyX2ZbMl0pIHx8IGlzaW5mIChyX2ZbM10p KQorICAgIGFib3J0ICgpOworCisgIHRlc3RfZm1heCAocl9kLCBhX2QsIGJf ZCk7CisgIGlmIChyX2RbMF0gIT0gNCB8fCBpc25hbiAocl9kWzFdKSB8fCBp c25hbiAocl9kWzJdKSB8fCAhaXNpbmYgKHJfZFszXSkpCisgICAgYWJvcnQg KCk7CisKKyAgdGVzdF9mbWluIChyX2QsIGFfZCwgYl9kKTsKKyAgaWYgKHJf ZFswXSAhPSAxIHx8IGlzbmFuIChyX2RbMV0pIHx8IGlzbmFuIChyX2RbMl0p IHx8IGlzaW5mIChyX2RbM10pKQorICAgIGFib3J0ICgpOworCisgIHJldHVy biAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgInZtYXhubS5mMzJcdHFcWzAtOVxdKywgcVxbMC05XF0rLCBxXFswLTlc XSsiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInZtaW5ubS5mMzJcdHFcWzAtOVxdKywgcVxbMC05XF0rLCBxXFsw LTlcXSsiIDEgfSB9ICovCisKKy8qIE5PVEU6IFRoZXJlIGFyZSBubyBkb3Vi bGUgcHJlY2lzaW9uIHZlY3RvciB2ZXJzaW9ucyBvZiB2bWF4bm0vdm1pbm5t LiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dm1heG5tLmY2NFx0ZFxbMC05XF0rLCBkXFswLTlcXSssIGRcWzAtOVxdKyIg MSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAidm1pbm5tLmY2NFx0ZFxbMC05XF0rLCBkXFswLTlcXSssIGRcWzAtOVxd KyIgMSB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmMgYi9n Y2MvdHJlZS1jZmcuYwppbmRleCA1YWM3M2IzLi4zNmFiN2E5IDEwMDY0NAot LS0gYS9nY2MvdHJlZS1jZmcuYworKysgYi9nY2MvdHJlZS1jZmcuYwpAQCAt MzA1NSw2ICszMDU1LDggQEAgdmVyaWZ5X2V4cHIgKHRyZWUgKnRwLCBpbnQg KndhbGtfc3VidHJlZXMsIHZvaWQgKmRhdGEgQVRUUklCVVRFX1VOVVNFRCkK ICAgICBjYXNlIEVYQUNUX0RJVl9FWFBSOgogICAgIGNhc2UgTUlOX0VYUFI6 CiAgICAgY2FzZSBNQVhfRVhQUjoKKyAgICBjYXNlIEZNSU5fRVhQUjoKKyAg ICBjYXNlIEZNQVhfRVhQUjoKICAgICBjYXNlIExTSElGVF9FWFBSOgogICAg IGNhc2UgUlNISUZUX0VYUFI6CiAgICAgY2FzZSBMUk9UQVRFX0VYUFI6CkBA IC0zODgwLDYgKzM4ODIsOCBAQCB2ZXJpZnlfZ2ltcGxlX2Fzc2lnbl9iaW5h cnkgKGdhc3NpZ24gKnN0bXQpCiAgICAgY2FzZSBFWEFDVF9ESVZfRVhQUjoK ICAgICBjYXNlIE1JTl9FWFBSOgogICAgIGNhc2UgTUFYX0VYUFI6CisgICAg Y2FzZSBGTUlOX0VYUFI6CisgICAgY2FzZSBGTUFYX0VYUFI6CiAgICAgY2Fz ZSBCSVRfSU9SX0VYUFI6CiAgICAgY2FzZSBCSVRfWE9SX0VYUFI6CiAgICAg Y2FzZSBCSVRfQU5EX0VYUFI6CmRpZmYgLS1naXQgYS9nY2MvdHJlZS1pbmxp bmUuYyBiL2djYy90cmVlLWlubGluZS5jCmluZGV4IGUxY2VlYTQuLmQ0MWM4 ZmYgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWlubGluZS5jCisrKyBiL2djYy90 cmVlLWlubGluZS5jCkBAIC0zODczLDYgKzM4NzMsOCBAQCBlc3RpbWF0ZV9v cGVyYXRvcl9jb3N0IChlbnVtIHRyZWVfY29kZSBjb2RlLCBlbmlfd2VpZ2h0 cyAqd2VpZ2h0cywKICAgICBjYXNlIEZMT0FUX0VYUFI6CiAgICAgY2FzZSBN SU5fRVhQUjoKICAgICBjYXNlIE1BWF9FWFBSOgorICAgIGNhc2UgRk1JTl9F WFBSOgorICAgIGNhc2UgRk1BWF9FWFBSOgogICAgIGNhc2UgQUJTX0VYUFI6 CiAKICAgICBjYXNlIExTSElGVF9FWFBSOgpkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUtcHJldHR5LXByaW50LmMgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwpp bmRleCA3Y2QxZmU3Li5kYzk1MGY3IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1w cmV0dHktcHJpbnQuYworKysgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwpA QCAtMjg0NCw2ICsyODQ0LDggQEAgZHVtcF9nZW5lcmljX25vZGUgKHByZXR0 eV9wcmludGVyICpwcCwgdHJlZSBub2RlLCBpbnQgc3BjLCBpbnQgZmxhZ3Ms CiAgICAgICBwcF9zdHJpbmcgKHBwLCAiID4gIik7CiAgICAgICBicmVhazsK IAorICAgIGNhc2UgRk1JTl9FWFBSOgorICAgIGNhc2UgRk1BWF9FWFBSOgog ICAgIGNhc2UgVkVDX1dJREVOX01VTFRfSElfRVhQUjoKICAgICBjYXNlIFZF Q19XSURFTl9NVUxUX0xPX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVM VF9FVkVOX0VYUFI6CkBAIC0zMjE4LDYgKzMyMjAsOCBAQCBvcF9jb2RlX3By aW8gKGVudW0gdHJlZV9jb2RlIGNvZGUpCiAgICAgICAvKiBTcGVjaWFsIGV4 cHJlc3Npb25zLiAgKi8KICAgICBjYXNlIE1JTl9FWFBSOgogICAgIGNhc2Ug TUFYX0VYUFI6CisgICAgY2FzZSBGTUlOX0VYUFI6CisgICAgY2FzZSBGTUFY X0VYUFI6CiAgICAgY2FzZSBBQlNfRVhQUjoKICAgICBjYXNlIFJFQUxQQVJU X0VYUFI6CiAgICAgY2FzZSBJTUFHUEFSVF9FWFBSOgpAQCAtMzQxNCw2ICsz NDE4LDEyIEBAIG9wX3N5bWJvbF9jb2RlIChlbnVtIHRyZWVfY29kZSBjb2Rl KQogICAgIGNhc2UgTUlOX0VYUFI6CiAgICAgICByZXR1cm4gIm1pbiI7CiAK KyAgICBjYXNlIEZNQVhfRVhQUjoKKyAgICAgIHJldHVybiAiZm1heCI7CisK KyAgICBjYXNlIEZNSU5fRVhQUjoKKyAgICAgIHJldHVybiAiZm1pbiI7CisK ICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuICI8PDwgPz8/ID4+PiI7CiAg ICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuYyBiL2djYy90cmVlLmMKaW5k ZXggYWYzYTZhMy4uMTgzYTllNiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuYwor KysgYi9nY2MvdHJlZS5jCkBAIC03NTMzLDYgKzc1MzMsOCBAQCBhc3NvY2lh dGl2ZV90cmVlX2NvZGUgKGVudW0gdHJlZV9jb2RlIGNvZGUpCiAgICAgY2Fz ZSBNVUxUX0VYUFI6CiAgICAgY2FzZSBNSU5fRVhQUjoKICAgICBjYXNlIE1B WF9FWFBSOgorICAgIGNhc2UgRk1JTl9FWFBSOgorICAgIGNhc2UgRk1BWF9F WFBSOgogICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkZWZhdWx0OgpAQCAt NzU1Myw2ICs3NTU1LDggQEAgY29tbXV0YXRpdmVfdHJlZV9jb2RlIChlbnVt IHRyZWVfY29kZSBjb2RlKQogICAgIGNhc2UgTVVMVF9ISUdIUEFSVF9FWFBS OgogICAgIGNhc2UgTUlOX0VYUFI6CiAgICAgY2FzZSBNQVhfRVhQUjoKKyAg ICBjYXNlIEZNSU5fRVhQUjoKKyAgICBjYXNlIEZNQVhfRVhQUjoKICAgICBj YXNlIEJJVF9JT1JfRVhQUjoKICAgICBjYXNlIEJJVF9YT1JfRVhQUjoKICAg ICBjYXNlIEJJVF9BTkRfRVhQUjoKZGlmZiAtLWdpdCBhL2djYy90cmVlLmRl ZiBiL2djYy90cmVlLmRlZgppbmRleCA1NjU4MGFmLi5jZjE5MzkyIDEwMDY0 NAotLS0gYS9nY2MvdHJlZS5kZWYKKysrIGIvZ2NjL3RyZWUuZGVmCkBAIC03 MjIsNiArNzIyLDE0IEBAIERFRlRSRUVDT0RFIChORUdBVEVfRVhQUiwgIm5l Z2F0ZV9leHByIiwgdGNjX3VuYXJ5LCAxKQogREVGVFJFRUNPREUgKE1JTl9F WFBSLCAibWluX2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQogREVGVFJFRUNPREUg KE1BWF9FWFBSLCAibWF4X2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQogCisvKiBN aW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcywgYnV0IHdoZW4gdXNlZCB3aXRo IGZsb2F0aW5nIHBvaW50IGl0IGNvbmZvcm1zIHRvCisgICB0aGUgQzk5IGRl ZmluaXRpb24gb2YgZm1heCBhbmQgZm1pbiwgaS5lLgorICAgICAxLiBpZiBv bmUgb3BlcmFuZCBpcyBOYU4gdGhlIG90aGVyIG51bWVyaWMgdmFsdWUgaXMg cmV0dXJuZWQsCisgICAgIDIuIGlmIGJvdGggb3BlcmFuZHMgYXJlIE5hTiB0 aGVuIGEgTmFOIGlzIHJldHVybmVkLAorICAgICAzLiB0aGVyZSBpcyBubyBk aXN0aW5jdGlvbiBiZXR3ZWVuIC0wIGFuZCAwLiAgKi8KK0RFRlRSRUVDT0RF IChGTUlOX0VYUFIsICJmbWluX2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQorREVG VFJFRUNPREUgKEZNQVhfRVhQUiwgImZtYXhfZXhwciIsIHRjY19iaW5hcnks IDIpCisKIC8qIFJlcHJlc2VudHMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRo ZSBvcGVyYW5kLgogCiAgICBBbiBBQlNfRVhQUiBtdXN0IGhhdmUgZWl0aGVy IGFuIElOVEVHRVJfVFlQRSBvciBhIFJFQUxfVFlQRS4gIFRoZQo= ------=_NextPart_000_0001_01D0EEE1.AAF79930--