From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 979063858D20 for ; Tue, 8 Aug 2023 09:06:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 979063858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5222c5d71b8so7571428a12.2 for ; Tue, 08 Aug 2023 02:06:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691485600; x=1692090400; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Vk4wHg9K9D3wzuXxA0jW5wkV7WrSsGUQBpm7X4jqYmE=; b=sir+S6qVDfiXnr6FGttc8HZYhBZ1FDosizLfPdK+xDjyroJp7ou0JcDm4VoyHgCXhU 3Tp7sNKi045CfmRU/33JQP4ZAyyOCNejSw42JdiPQg442cVFsyBdDU8Km+XJ3FUI8Zk8 NH6GdmIKYbWGewKGS0Yq17Kd5KerhjjsZsM6WtmcZZMh7gCV3oOIdd4UgR5zRuNDHUkb /58EbrLlKhHnEqCTpXfrdmzzzNWjQjpZHTx+sx+dXWgOTrEMWWd+8smnfM/D6co/DN++ 6YjrY8n2+qhnX3zjEvk5FTPMb9DT3PLbRhpv6yGnDuHaG16hV7jdFIF6SMx59o1+n2Su Vb2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691485600; x=1692090400; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Vk4wHg9K9D3wzuXxA0jW5wkV7WrSsGUQBpm7X4jqYmE=; b=B+A2UFO7UmvBR9PC4UGM7ejrYN0dgVI0qiJWEnWxnhPK+7Q3eNictH3SoQZ1w5JpQE voFcA2m9C07jAHyYN+VSzxpOnk7M3htRFmllUuMNxLWUDJx7CznmjT+THUBd3f5fUB1k EC+mNefnnE1cV1/Om3tEFki2MftQO1OPkBQIM6VEURCLb4x9fzQ27vKkXCKuJXMtMHew tsppidRBsNaCX61grvRXLeJwy3BEA7KKivIlRvHtKqiYky0cQX6plnOq8IyvNGnE4x/o rFzFOEmvDYLLndmToei84OffKSGH4CCNRH5PwLWdVN48+HBNK970iEdWYq/yQVfB0/hj JB0g== X-Gm-Message-State: AOJu0YwFf0g2vupaOzsv1Vmx9A4lDylFmy5qaKkhbNH/t+K/yxzysbE8 /AWORkwhQoCL89epNlq0NYZJCp6heJjRl/UYsqA= X-Google-Smtp-Source: AGHT+IEu5Id39N7J5QyocSKLABfnzSNRHeebdTIheq+hmJqiOcYJ0CY9lK1PztOzEV1O8ANcfcRTw0rsQSAhvtC9O5w= X-Received: by 2002:a05:6402:3da:b0:522:2782:537 with SMTP id t26-20020a05640203da00b0052227820537mr9089449edw.15.1691485599366; Tue, 08 Aug 2023 02:06:39 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Uros Bizjak Date: Tue, 8 Aug 2023 11:06:26 +0200 Message-ID: Subject: Re: [RFC PATCH] i386: Do not sanitize upper part of V2SFmode reg with -fno-trapping-math [PR110832] To: Richard Biener Cc: "gcc-patches@gcc.gnu.org" , Jan Hubicka , Hongtao Liu Content-Type: multipart/mixed; boundary="0000000000004b3278060265ae3e" X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000004b3278060265ae3e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Aug 8, 2023 at 10:07=E2=80=AFAM Richard Biener = wrote: > > On Mon, 7 Aug 2023, Uros Bizjak wrote: > > > On Mon, Jul 31, 2023 at 11:40?AM Richard Biener wro= te: > > > > > > On Sun, 30 Jul 2023, Uros Bizjak wrote: > > > > > > > Also introduce -m[no-]mmxfp-with-sse option to disable trapping V2S= F > > > > named patterns in order to avoid generation of partial vector V4SFm= ode > > > > trapping instructions. > > > > > > > > The new option is enabled by default, because even with sanitizatio= n, > > > > a small but consistent speed up of 2 to 3% with Polyhedron capacita > > > > benchmark can be achieved vs. scalar code. > > > > > > > > Using -fno-trapping-math improves Polyhedron capacita runtime 8 to = 9% > > > > vs. scalar code. This is what clang does by default, as it default= s > > > > to -fno-trapping-math. > > > > > > I like the new option, note you lack invoke.texi documentation where > > > I'd also elaborate a bit on the interaction with -fno-trapping-math > > > and the possible performance impact then NaNs or denormals leak > > > into the upper halves and cross-reference -mdaz-ftz. > > > > The attached doc patch is invoke.texi entry for -mmmxfp-with-sse > > option. It is written in a way to also cover half-float vectors. WDYT? > > "generate trapping floating-point operations" > > I'd say "generate floating-point operations that might affect the > set of floating point status flags", the word "trapping" is IMHO > misleading. > Not sure if "set of floating point status flags" is the correct term, > but it's what the C standard seems to refer to when talking about > things you get with fegetexceptflag. feraieexcept refers to > "floating-point exceptions". Unfortunately the -fno-trapping-math > documentation is similarly confusing (and maybe even wrong, I read > it to conform to 'non-stop' IEEE arithmetic). Thanks for suggesting the right terminology. I think that: +@opindex mpartial-vector-math +@item -mpartial-vector-math +This option enables GCC to generate floating-point operations that might +affect the set of floating point status flags on partial vectors, where +vector elements reside in the low part of the 128-bit SSE register. Unles= s +@option{-fno-trapping-math} is specified, the compiler guarantees correct +behavior by sanitizing all input operands to have zeroes in the unused +upper part of the vector register. Note that by using built-in functions +or inline assembly with partial vector arguments, NaNs, denormal or invali= d +values can leak into the upper part of the vector, causing possible +performance issues when @option{-fno-trapping-math} is in effect. These +issues can be mitigated by manually sanitizing the upper part of the parti= al +vector argument register or by using @option{-mdaz-ftz} to set +denormals-are-zero (DAZ) flag in the MXCSR register. Now explain in adequate detail what the option does. IMO, the "floating-point operations that might affect the set of floating point status flags" correctly identifies affected operations, so an example, as suggested below, is not necessary. > I'd maybe give an example of a FP operation that's _not_ affected > by the flag (copysign?). Please note that I have renamed the option to "-mpartial-vector-math" with a short target-specific description: +partial-vector-math +Target Var(ix86_partial_vec_math) Init(1) +Enable floating-point status flags setting SSE vector operations on partial vectors which I think summarises the option (without the word "trapping"). The same approach will be taken for Float16 operations, so the approach is not specific to MMX vectors. > Otherwise it looks OK to me. Thanks, I have attached the RFC V2 patch; I plan to submit a formal patch later today. Uros. --0000000000004b3278060265ae3e Content-Type: text/plain; charset="US-ASCII"; name="pr110832-v2.diff.txt" Content-Disposition: attachment; filename="pr110832-v2.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll22tmz40 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCBiL2djYy9jb25maWcvaTM4Ni9p Mzg2Lm9wdAppbmRleCAxY2M4NTYzNDc3YS4uOGQ5YTFhZTkzZjMgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvaTM4Ni9pMzg2Lm9wdAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKQEAgLTYz Miw2ICs2MzIsMTAgQEAgRW51bShwcmVmZXJfdmVjdG9yX3dpZHRoKSBTdHJpbmcoMjU2KSBWYWx1 ZShQVldfQVZYMjU2KQogRW51bVZhbHVlCiBFbnVtKHByZWZlcl92ZWN0b3Jfd2lkdGgpIFN0cmlu Zyg1MTIpIFZhbHVlKFBWV19BVlg1MTIpCiAKK3BhcnRpYWwtdmVjdG9yLW1hdGgKK1RhcmdldCBW YXIoaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoKSBJbml0KDEpCitFbmFibGUgZmxvYXRpbmctcG9pbnQg c3RhdHVzIGZsYWdzIHNldHRpbmcgU1NFIHZlY3RvciBvcGVyYXRpb25zIG9uIHBhcnRpYWwgdmVj dG9ycworCiBtbW92ZS1tYXg9CiBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIFZhcihpeDg2 X21vdmVfbWF4KSBFbnVtKHByZWZlcl92ZWN0b3Jfd2lkdGgpIEluaXQoUFZXX05PTkUpIFNhdmUK IE1heGltdW0gbnVtYmVyIG9mIGJpdHMgdGhhdCBjYW4gYmUgbW92ZWQgZnJvbSBtZW1vcnkgdG8g bWVtb3J5IGVmZmljaWVudGx5LgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L21teC5tZCBi L2djYy9jb25maWcvaTM4Ni9tbXgubWQKaW5kZXggYjQ5NTU0ZTliOGYuLjk1ZjdhMDExM2U3IDEw MDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvbW14Lm1kCisrKyBiL2djYy9jb25maWcvaTM4Ni9t bXgubWQKQEAgLTU5NSw3ICs1OTUsMTggQEAgKGRlZmluZV9leHBhbmQgIm1vdnFfPG1vZGU+X3Rv X3NzZSIKIAkgIChtYXRjaF9vcGVyYW5kOlYyRklfVjRIRiAxICJub25pbW1lZGlhdGVfb3BlcmFu ZCIpCiAJICAobWF0Y2hfZHVwIDIpKSldCiAgICJUQVJHRVRfU1NFMiIKLSAgIm9wZXJhbmRzWzJd ID0gQ09OU1QwX1JUWCAoPE1PREU+bW9kZSk7IikKK3sKKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjJT Rm1vZGUKKyAgICAgICYmICFmbGFnX3RyYXBwaW5nX21hdGgpCisgICAgeworICAgICAgcnR4IG9w MSA9IGZvcmNlX3JlZyAoPE1PREU+bW9kZSwgb3BlcmFuZHNbMV0pOworICAgICAgZW1pdF9tb3Zl X2luc24gKG9wZXJhbmRzWzBdLCBsb3dwYXJ0X3N1YnJlZyAoPG1teGRvdWJsZXZlY21vZGU+bW9k ZSwKKwkJCQkJCSAgIG9wMSwgPE1PREU+bW9kZSkpOworICAgICAgRE9ORTsKKyAgICB9CisKKyAg b3BlcmFuZHNbMl0gPSBDT05TVDBfUlRYICg8TU9ERT5tb2RlKTsKK30pCiAKIDs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OwogOzsKQEAgLTY0OCw3ICs2NTksNyBAQCAoZGVmaW5lX2V4cGFuZCAiPGluc24+djJzZjMiCiAJ KHBsdXNtaW51c211bHQ6VjJTRgogCSAgKG1hdGNoX29wZXJhbmQ6VjJTRiAxICJub25pbW1lZGlh dGVfb3BlcmFuZCIpCiAJICAobWF0Y2hfb3BlcmFuZDpWMlNGIDIgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIikpKV0KLSAgIlRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICJUQVJHRVRfTU1YX1dJVEhfU1NF ICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMiA9IGdlbl9yZWdfcnR4IChW NFNGbW9kZSk7CiAgIHJ0eCBvcDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtNzI2LDcg KzczNyw3IEBAIChkZWZpbmVfZXhwYW5kICJkaXZ2MnNmMyIKICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjJTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkoZGl2OlYyU0YgKG1hdGNoX29wZXJhbmQ6 VjJTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkJICAobWF0Y2hfb3BlcmFuZDpWMlNGIDIgInJl Z2lzdGVyX29wZXJhbmQiKSkpXQotICAiVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9N TVhfV0lUSF9TU0UgJiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgogewogICBydHggb3AyID0gZ2Vu X3JlZ19ydHggKFY0U0Ztb2RlKTsKICAgcnR4IG9wMSA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7 CkBAIC03NDgsNyArNzU5LDcgQEAgKGRlZmluZV9leHBhbmQgIjxjb2RlPnYyc2YzIgogICAgICAg ICAoc21heG1pbjpWMlNGCiAJICAobWF0Y2hfb3BlcmFuZDpWMlNGIDEgInJlZ2lzdGVyX29wZXJh bmQiKQogCSAgKG1hdGNoX29wZXJhbmQ6VjJTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIikpKV0KLSAg IlRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICJUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFy dGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMiA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CiAg IHJ0eCBvcDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtODUwLDcgKzg2MSw3IEBAIChk ZWZpbmVfaW5zbiAibW14X3JjcGl0MnYyc2YzIgogKGRlZmluZV9leHBhbmQgInNxcnR2MnNmMiIK ICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkoc3Fy dDpWMlNGIChtYXRjaF9vcGVyYW5kOlYyU0YgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKSkpXQot ICAiVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9w YXJ0aWFsX3ZlY19tYXRoIgogewogICBydHggb3AxID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsK ICAgcnR4IG9wMCA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CkBAIC05MzEsNyArOTQyLDcgQEAg KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKm1teF9oYWRkdjJzZjNfbG93IgogCSAgKHZlY19zZWxl Y3Q6U0YKIAkgICAgKG1hdGNoX2R1cCAxKQogCSAgICAocGFyYWxsZWwgWyhtYXRjaF9vcGVyYW5k OlNJIDMgImNvbnN0XzBfdG9fMV9vcGVyYW5kIildKSkpKV0KLSAgIlRBUkdFVF9TU0UzICYmIFRB UkdFVF9NTVhfV0lUSF9TU0UKKyAgIlRBUkdFVF9TU0UzICYmIFRBUkdFVF9NTVhfV0lUSF9TU0Ug JiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoCiAgICAmJiBJTlRWQUwgKG9wZXJhbmRzWzJdKSAhPSBJ TlRWQUwgKG9wZXJhbmRzWzNdKQogICAgJiYgaXg4Nl9wcmVfcmVsb2FkX3NwbGl0ICgpIgogICAi IyIKQEAgLTk3Nyw3ICs5ODgsNyBAQCAoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqbW14X2hzdWJ2 MnNmM19sb3ciCiAJICAodmVjX3NlbGVjdDpTRgogCSAgICAobWF0Y2hfZHVwIDEpCiAJICAgIChw YXJhbGxlbCBbKGNvbnN0X2ludCAxKV0pKSkpXQotICAiVEFSR0VUX1NTRTMgJiYgVEFSR0VUX01N WF9XSVRIX1NTRQorICAiVEFSR0VUX1NTRTMgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSAmJiBpeDg2 X3BhcnRpYWxfdmVjX21hdGgKICAgICYmIGl4ODZfcHJlX3JlbG9hZF9zcGxpdCAoKSIKICAgIiMi CiAgICImJiAxIgpAQCAtMTAzOSw3ICsxMDUwLDcgQEAgKGRlZmluZV9leHBhbmQgInZlY19hZGRz dWJ2MnNmMyIKIAkgICAgKG1hdGNoX29wZXJhbmQ6VjJTRiAyICJub25pbW1lZGlhdGVfb3BlcmFu ZCIpKQogCSAgKHBsdXM6VjJTRiAobWF0Y2hfZHVwIDEpIChtYXRjaF9kdXAgMikpCiAJICAoY29u c3RfaW50IDEpKSldCi0gICJUQVJHRVRfU1NFMyAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFIgorICAi VEFSR0VUX1NTRTMgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSAmJiBpeDg2X3BhcnRpYWxfdmVjX21h dGgiCiB7CiAgIHJ0eCBvcDIgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwogICBydHggb3AxID0g Z2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsKQEAgLTExMDIsNyArMTExMyw3IEBAIChkZWZpbmVfZXhw YW5kICJ2ZWNfY21wdjJzZnYyc2kiCiAJKG1hdGNoX29wZXJhdG9yOlYyU0kgMSAiIgogCSAgWyht YXRjaF9vcGVyYW5kOlYyU0YgMiAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQogCSAgIChtYXRjaF9v cGVyYW5kOlYyU0YgMyAibm9uaW1tZWRpYXRlX29wZXJhbmQiKV0pKV0KLSAgIlRBUkdFVF9NTVhf V0lUSF9TU0UiCisgICJUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0 aCIKIHsKICAgcnR4IG9wc1s0XTsKICAgb3BzWzNdID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsK QEAgLTExMjgsNyArMTEzOSw3IEBAIChkZWZpbmVfZXhwYW5kICJ2Y29uZDxtb2RlPnYyc2YiCiAJ ICAgICAobWF0Y2hfb3BlcmFuZDpWMlNGIDUgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIildKQogCSAg KG1hdGNoX29wZXJhbmQ6VjJGSSAxICJnZW5lcmFsX29wZXJhbmQiKQogCSAgKG1hdGNoX29wZXJh bmQ6VjJGSSAyICJnZW5lcmFsX29wZXJhbmQiKSkpXQotICAiVEFSR0VUX01NWF9XSVRIX1NTRSIK KyAgIlRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgogewogICBy dHggb3BzWzZdOwogICBvcHNbNV0gPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtMTMxOCw3 ICsxMzI5LDcgQEAgKGRlZmluZV9leHBhbmQgImZtYXYyc2Y0IgogCSAgKG1hdGNoX29wZXJhbmQ6 VjJTRiAyICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCiAJICAobWF0Y2hfb3BlcmFuZDpWMlNGIDMg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIikpKV0KICAgIihUQVJHRVRfRk1BIHx8IFRBUkdFVF9GTUE0 IHx8IFRBUkdFVF9BVlg1MTJWTCkKLSAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICAmJiBU QVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9w MyA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDIgPSBnZW5fcmVnX3J0eCAoVjRT Rm1vZGUpOwpAQCAtMTM0Myw3ICsxMzU0LDcgQEAgKGRlZmluZV9leHBhbmQgImZtc3Yyc2Y0Igog CSAgKG5lZzpWMlNGCiAJICAgIChtYXRjaF9vcGVyYW5kOlYyU0YgMyAibm9uaW1tZWRpYXRlX29w ZXJhbmQiKSkpKV0KICAgIihUQVJHRVRfRk1BIHx8IFRBUkdFVF9GTUE0IHx8IFRBUkdFVF9BVlg1 MTJWTCkKLSAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICAmJiBUQVJHRVRfTU1YX1dJVEhf U1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMyA9IGdlbl9yZWdfcnR4 IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDIgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtMTM2 OCw3ICsxMzc5LDcgQEAgKGRlZmluZV9leHBhbmQgImZubWF2MnNmNCIKIAkgIChtYXRjaF9vcGVy YW5kOlYyU0YgICAyICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCiAJICAobWF0Y2hfb3BlcmFuZDpW MlNGICAgMyAibm9uaW1tZWRpYXRlX29wZXJhbmQiKSkpXQogICAiKFRBUkdFVF9GTUEgfHwgVEFS R0VUX0ZNQTQgfHwgVEFSR0VUX0FWWDUxMlZMKQotICAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIK KyAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgogewog ICBydHggb3AzID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsKICAgcnR4IG9wMiA9IGdlbl9yZWdf cnR4IChWNFNGbW9kZSk7CkBAIC0xMzk0LDcgKzE0MDUsNyBAQCAoZGVmaW5lX2V4cGFuZCAiZm5t c3Yyc2Y0IgogCSAgKG5lZzpWMlNGCiAJICAgIChtYXRjaF9vcGVyYW5kOlYyU0YgMyAibm9uaW1t ZWRpYXRlX29wZXJhbmQiKSkpKV0KICAgIihUQVJHRVRfRk1BIHx8IFRBUkdFVF9GTUE0IHx8IFRB UkdFVF9BVlg1MTJWTCkKLSAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICAmJiBUQVJHRVRf TU1YX1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMyA9IGdl bl9yZWdfcnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDIgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUp OwpAQCAtMTQyMCw3ICsxNDMxLDcgQEAgKGRlZmluZV9leHBhbmQgImZubXN2MnNmNCIKIChkZWZp bmVfZXhwYW5kICJmaXhfdHJ1bmN2MnNmdjJzaTIiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYy U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAJKGZpeDpWMlNJIChtYXRjaF9vcGVyYW5kOlYyU0Yg MSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKSkpXQotICAiVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAg IlRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgogewogICBydHgg b3AxID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsKICAgcnR4IG9wMCA9IGdlbl9yZWdfcnR4IChW NFNJbW9kZSk7CkBAIC0xNDM2LDcgKzE0NDcsNyBAQCAoZGVmaW5lX2V4cGFuZCAiZml4X3RydW5j djJzZnYyc2kyIgogKGRlZmluZV9leHBhbmQgImZpeHVuc190cnVuY3Yyc2Z2MnNpMiIKICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VjJTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkodW5zaWduZWRf Zml4OlYyU0kgKG1hdGNoX29wZXJhbmQ6VjJTRiAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIpKSld Ci0gICJUQVJHRVRfQVZYNTEyVkwgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9B Vlg1MTJWTCAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIK IHsKICAgcnR4IG9wMSA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDAgPSBnZW5f cmVnX3J0eCAoVjRTSW1vZGUpOwpAQCAtMTQ2MSw3ICsxNDcyLDcgQEAgKGRlZmluZV9pbnNuICJt bXhfZml4X3RydW5jdjJzZnYyc2kyIgogKGRlZmluZV9leHBhbmQgImZsb2F0djJzaXYyc2YyIgog ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiKQogCShmbG9h dDpWMlNGIChtYXRjaF9vcGVyYW5kOlYyU0kgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKSkpXQot ICAiVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9w YXJ0aWFsX3ZlY19tYXRoIgogewogICBydHggb3AxID0gZ2VuX3JlZ19ydHggKFY0U0ltb2RlKTsK ICAgcnR4IG9wMCA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CkBAIC0xNDc3LDcgKzE0ODgsNyBA QCAoZGVmaW5lX2V4cGFuZCAiZmxvYXR2MnNpdjJzZjIiCiAoZGVmaW5lX2V4cGFuZCAiZmxvYXR1 bnN2MnNpdjJzZjIiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyU0YgMCAicmVnaXN0ZXJfb3Bl cmFuZCIpCiAJKHVuc2lnbmVkX2Zsb2F0OlYyU0YgKG1hdGNoX29wZXJhbmQ6VjJTSSAxICJub25p bW1lZGlhdGVfb3BlcmFuZCIpKSldCi0gICJUQVJHRVRfQVZYNTEyVkwgJiYgVEFSR0VUX01NWF9X SVRIX1NTRSIKKyAgIlRBUkdFVF9BVlg1MTJWTCAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4 ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMSA9IGdlbl9yZWdfcnR4IChWNFNJbW9k ZSk7CiAgIHJ0eCBvcDAgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtMTc1NCw3ICsxNzY1 LDcgQEAgKGRlZmluZV9leHBhbmQgInZlY19pbml0djJzZnNmIgogKGRlZmluZV9leHBhbmQgIm5l YXJieWludHYyc2YyIgogICBbKG1hdGNoX29wZXJhbmQ6VjJTRiAwICJyZWdpc3Rlcl9vcGVyYW5k IikKICAgIChtYXRjaF9vcGVyYW5kOlYyU0YgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKV0KLSAg IlRBUkdFVF9TU0U0XzEgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9TU0U0XzEg JiYgVEFSR0VUX01NWF9XSVRIX1NTRSAmJiBpeDg2X3BhcnRpYWxfdmVjX21hdGgiCiB7CiAgIHJ0 eCBvcDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwogICBydHggb3AwID0gZ2VuX3JlZ19ydHgg KFY0U0Ztb2RlKTsKQEAgLTE3NzAsNyArMTc4MSw3IEBAIChkZWZpbmVfZXhwYW5kICJuZWFyYnlp bnR2MnNmMiIKIChkZWZpbmVfZXhwYW5kICJyaW50djJzZjIiCiAgIFsobWF0Y2hfb3BlcmFuZDpW MlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQ6VjJTRiAxICJub25p bW1lZGlhdGVfb3BlcmFuZCIpXQotICAiVEFSR0VUX1NTRTRfMSAmJiBUQVJHRVRfTU1YX1dJVEhf U1NFIgorICAiVEFSR0VUX1NTRTRfMSAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFy dGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMSA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CiAg IHJ0eCBvcDAgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpAQCAtMTc4Niw4ICsxNzk3LDggQEAg KGRlZmluZV9leHBhbmQgInJpbnR2MnNmMiIKIChkZWZpbmVfZXhwYW5kICJscmludHYyc2Z2MnNp MiIKICAgWyhtYXRjaF9vcGVyYW5kOlYyU0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAobWF0 Y2hfb3BlcmFuZDpWMlNGIDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIildCi0gIlRBUkdFVF9TU0U0 XzEgJiYgIWZsYWdfdHJhcHBpbmdfbWF0aAotICAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFIgorICAi VEFSR0VUX1NTRTRfMSAmJiAhZmxhZ190cmFwcGluZ19tYXRoCisgICAmJiBUQVJHRVRfTU1YX1dJ VEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMSA9IGdlbl9yZWdf cnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDAgPSBnZW5fcmVnX3J0eCAoVjRTSW1vZGUpOwpAQCAt MTgwNCw3ICsxODE1LDcgQEAgKGRlZmluZV9leHBhbmQgImNlaWx2MnNmMiIKICAgWyhtYXRjaF9v cGVyYW5kOlYyU0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDpWMlNG IDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIildCiAgICJUQVJHRVRfU1NFNF8xICYmICFmbGFnX3Ry YXBwaW5nX21hdGgKLSAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UiCisgICAmJiBUQVJHRVRfTU1Y X1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsKICAgcnR4IG9wMSA9IGdlbl9y ZWdfcnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDAgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwpA QCAtMTgyMCw4ICsxODMxLDggQEAgKGRlZmluZV9leHBhbmQgImNlaWx2MnNmMiIKIChkZWZpbmVf ZXhwYW5kICJsY2VpbHYyc2Z2MnNpMiIKICAgWyhtYXRjaF9vcGVyYW5kOlYyU0kgMCAicmVnaXN0 ZXJfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDpWMlNGIDEgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIildCi0gIlRBUkdFVF9TU0U0XzEgJiYgIWZsYWdfdHJhcHBpbmdfbWF0aAotICAmJiBUQVJH RVRfTU1YX1dJVEhfU1NFIgorICAiVEFSR0VUX1NTRTRfMSAmJiAhZmxhZ190cmFwcGluZ19tYXRo CisgICAmJiBUQVJHRVRfTU1YX1dJVEhfU1NFICYmIGl4ODZfcGFydGlhbF92ZWNfbWF0aCIKIHsK ICAgcnR4IG9wMSA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CiAgIHJ0eCBvcDAgPSBnZW5fcmVn X3J0eCAoVjRTSW1vZGUpOwpAQCAtMTgzOCw3ICsxODQ5LDcgQEAgKGRlZmluZV9leHBhbmQgImZs b29ydjJzZjIiCiAgIFsobWF0Y2hfb3BlcmFuZDpWMlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiKQog ICAgKG1hdGNoX29wZXJhbmQ6VjJTRiAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIpXQogICAiVEFS R0VUX1NTRTRfMSAmJiAhZmxhZ190cmFwcGluZ19tYXRoCi0gICYmIFRBUkdFVF9NTVhfV0lUSF9T U0UiCisgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0UgJiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgog ewogICBydHggb3AxID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsKICAgcnR4IG9wMCA9IGdlbl9y ZWdfcnR4IChWNFNGbW9kZSk7CkBAIC0xODU0LDggKzE4NjUsOCBAQCAoZGVmaW5lX2V4cGFuZCAi Zmxvb3J2MnNmMiIKIChkZWZpbmVfZXhwYW5kICJsZmxvb3J2MnNmdjJzaTIiCiAgIFsobWF0Y2hf b3BlcmFuZDpWMlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQ6VjJT RiAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIpXQotICJUQVJHRVRfU1NFNF8xICYmICFmbGFnX3Ry YXBwaW5nX21hdGgKLSAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgIlRBUkdFVF9TU0U0XzEg JiYgIWZsYWdfdHJhcHBpbmdfbWF0aAorICAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSAmJiBpeDg2 X3BhcnRpYWxfdmVjX21hdGgiCiB7CiAgIHJ0eCBvcDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUp OwogICBydHggb3AwID0gZ2VuX3JlZ19ydHggKFY0U0ltb2RlKTsKQEAgLTE4NzIsNyArMTg4Myw3 IEBAIChkZWZpbmVfZXhwYW5kICJidHJ1bmN2MnNmMiIKICAgWyhtYXRjaF9vcGVyYW5kOlYyU0Yg MCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDpWMlNGIDEgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIildCiAgICJUQVJHRVRfU1NFNF8xICYmICFmbGFnX3RyYXBwaW5nX21hdGgK LSAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSAmJiBp eDg2X3BhcnRpYWxfdmVjX21hdGgiCiB7CiAgIHJ0eCBvcDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1v ZGUpOwogICBydHggb3AwID0gZ2VuX3JlZ19ydHggKFY0U0Ztb2RlKTsKQEAgLTE4ODksNyArMTkw MCw3IEBAIChkZWZpbmVfZXhwYW5kICJyb3VuZHYyc2YyIgogICBbKG1hdGNoX29wZXJhbmQ6VjJT RiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kOlYyU0YgMSAibm9uaW1t ZWRpYXRlX29wZXJhbmQiKV0KICAgIlRBUkdFVF9TU0U0XzEgJiYgIWZsYWdfdHJhcHBpbmdfbWF0 aAotICAgJiYgVEFSR0VUX01NWF9XSVRIX1NTRSIKKyAgICYmIFRBUkdFVF9NTVhfV0lUSF9TU0Ug JiYgaXg4Nl9wYXJ0aWFsX3ZlY19tYXRoIgogewogICBydHggb3AxID0gZ2VuX3JlZ19ydHggKFY0 U0Ztb2RlKTsKICAgcnR4IG9wMCA9IGdlbl9yZWdfcnR4IChWNFNGbW9kZSk7CkBAIC0xOTA1LDgg KzE5MTYsOCBAQCAoZGVmaW5lX2V4cGFuZCAicm91bmR2MnNmMiIKIChkZWZpbmVfZXhwYW5kICJs cm91bmR2MnNmdjJzaTIiCiAgIFsobWF0Y2hfb3BlcmFuZDpWMlNJIDAgInJlZ2lzdGVyX29wZXJh bmQiKQogICAgKG1hdGNoX29wZXJhbmQ6VjJTRiAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIpXQot ICJUQVJHRVRfU1NFNF8xICYmICFmbGFnX3RyYXBwaW5nX21hdGgKLSAgJiYgVEFSR0VUX01NWF9X SVRIX1NTRSIKKyAgIlRBUkdFVF9TU0U0XzEgJiYgIWZsYWdfdHJhcHBpbmdfbWF0aAorICAgJiYg VEFSR0VUX01NWF9XSVRIX1NTRSAmJiBpeDg2X3BhcnRpYWxfdmVjX21hdGgiCiB7CiAgIHJ0eCBv cDEgPSBnZW5fcmVnX3J0eCAoVjRTRm1vZGUpOwogICBydHggb3AwID0gZ2VuX3JlZ19ydHggKFY0 U0ltb2RlKTsKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9r ZS50ZXhpCmluZGV4IDY3NGY5NTZmNGI4Li5mNTA4MWMwY2ZiOSAxMDA2NDQKLS0tIGEvZ2NjL2Rv Yy9pbnZva2UudGV4aQorKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCkBAIC0xNDE5LDYgKzE0MTks NyBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zLgogLW1jbGQgIC1tY3gxNiAgLW1z YWhmICAtbW1vdmJlICAtbWNyYzMyIC1tbXdhaXQKIC1tcmVjaXAgIC1tcmVjaXA9QHZhcntvcHR9 CiAtbXZ6ZXJvdXBwZXIgIC1tcHJlZmVyLWF2eDEyOCAgLW1wcmVmZXItdmVjdG9yLXdpZHRoPUB2 YXJ7b3B0fQorLW1wYXJ0aWFsLXZlY3Rvci1tYXRoCiAtbW1vdmUtbWF4PUB2YXJ7Yml0c30gLW1z dG9yZS1tYXg9QHZhcntiaXRzfQogLW1tbXggIC1tc3NlICAtbXNzZTIgIC1tc3NlMyAgLW1zc3Nl MyAgLW1zc2U0LjEgIC1tc3NlNC4yICAtbXNzZTQgIC1tYXZ4CiAtbWF2eDIgIC1tYXZ4NTEyZiAg LW1hdng1MTJwZiAgLW1hdng1MTJlciAgLW1hdng1MTJjZCAgLW1hdng1MTJ2bApAQCAtMzM3NTQs NiArMzM3NTUsMjMgQEAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEdDQyB0byB1c2UgMTI4LWJpdCBB VlggaW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YKIFRoaXMgb3B0aW9uIGluc3RydWN0cyBHQ0MgdG8g dXNlIEB2YXJ7b3B0fS1iaXQgdmVjdG9yIHdpZHRoIGluIGluc3RydWN0aW9ucwogaW5zdGVhZCBv ZiBkZWZhdWx0IG9uIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybS4KIAorQG9waW5kZXggbXBhcnRpYWwt dmVjdG9yLW1hdGgKK0BpdGVtIC1tcGFydGlhbC12ZWN0b3ItbWF0aAorVGhpcyBvcHRpb24gZW5h YmxlcyBHQ0MgdG8gZ2VuZXJhdGUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0 CithZmZlY3QgdGhlIHNldCBvZiBmbG9hdGluZyBwb2ludCBzdGF0dXMgZmxhZ3Mgb24gcGFydGlh bCB2ZWN0b3JzLCB3aGVyZQordmVjdG9yIGVsZW1lbnRzIHJlc2lkZSBpbiB0aGUgbG93IHBhcnQg b2YgdGhlIDEyOC1iaXQgU1NFIHJlZ2lzdGVyLiAgVW5sZXNzCitAb3B0aW9uey1mbm8tdHJhcHBp bmctbWF0aH0gaXMgc3BlY2lmaWVkLCB0aGUgY29tcGlsZXIgZ3VhcmFudGVlcyBjb3JyZWN0Citi ZWhhdmlvciBieSBzYW5pdGl6aW5nIGFsbCBpbnB1dCBvcGVyYW5kcyB0byBoYXZlIHplcm9lcyBp biB0aGUgdW51c2VkCit1cHBlciBwYXJ0IG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIuICBOb3RlIHRo YXQgYnkgdXNpbmcgYnVpbHQtaW4gZnVuY3Rpb25zCitvciBpbmxpbmUgYXNzZW1ibHkgd2l0aCBw YXJ0aWFsIHZlY3RvciBhcmd1bWVudHMsIE5hTnMsIGRlbm9ybWFsIG9yIGludmFsaWQKK3ZhbHVl cyBjYW4gbGVhayBpbnRvIHRoZSB1cHBlciBwYXJ0IG9mIHRoZSB2ZWN0b3IsIGNhdXNpbmcgcG9z c2libGUKK3BlcmZvcm1hbmNlIGlzc3VlcyB3aGVuIEBvcHRpb257LWZuby10cmFwcGluZy1tYXRo fSBpcyBpbiBlZmZlY3QuICBUaGVzZQoraXNzdWVzIGNhbiBiZSBtaXRpZ2F0ZWQgYnkgbWFudWFs bHkgc2FuaXRpemluZyB0aGUgdXBwZXIgcGFydCBvZiB0aGUgcGFydGlhbAordmVjdG9yIGFyZ3Vt ZW50IHJlZ2lzdGVyIG9yIGJ5IHVzaW5nIEBvcHRpb257LW1kYXotZnR6fSB0byBzZXQKK2Rlbm9y bWFscy1hcmUtemVybyAoREFaKSBmbGFnIGluIHRoZSBNWENTUiByZWdpc3Rlci4KKworVGhpcyBv cHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorCiBAb3BpbmRleCBtbW92ZS1tYXgKIEBpdGVt IC1tbW92ZS1tYXg9QHZhcntiaXRzfQogVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEdDQyB0byBzZXQg dGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMgY2FuIGJlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjExMDgzMi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjExMDgzMi0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjNkZjIyZTNiNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHIxMTA4MzItMS5jCkBAIC0wLDAgKzEsMTIgQEAKKy8qIFBSIHRhcmdldC8xMTA4 MzIgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLyog eyBkZy1vcHRpb25zICItTzIgLW1zc2UyIC1tbm8tcGFydGlhbC12ZWN0b3ItbWF0aCIgfSAqLwor Cit0eXBlZGVmIGZsb2F0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDgpKSkgdjJzZjsKKwor djJzZiB0ZXN0ICh2MnNmIGEsIHYyc2YgYikKK3sKKyAgcmV0dXJuIGEgKyBiOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJhZGRwcyIgfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjExMDgzMi0yLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjExMDgzMi0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjRkMTY0ODhiNGZiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMTA4MzItMi5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIFBS IHRhcmdldC8xMTA4MzIgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLWZ0cmFwcGluZy1tYXRoIC1tc3NlMiAtbXBh cnRpYWwtdmVjdG9yLW1hdGggLWRwIiB9ICovCisKK3R5cGVkZWYgZmxvYXQgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoOCkpKSB2MnNmOworCit2MnNmIHRlc3QgKHYyc2YgYSwgdjJzZiBiKQor eworICByZXR1cm4gYSArIGI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi YWRkcHMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJcXCp2 ZWNfY29uY2F0djRzZl8wIiAyIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHIxMTA4MzItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv cHIxMTA4MzItMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmNi NGZjODEwMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByMTEwODMyLTMuYwpAQCAtMCwwICsxLDEzIEBACisvKiBQUiB0YXJnZXQvMTEwODMyICovCisv KiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8yIC1mbm8tdHJhcHBpbmctbWF0aCAtbXNzZTIgLW1wYXJ0aWFsLXZlY3Rvci1tYXRo IC1kcCIgfSAqLworCit0eXBlZGVmIGZsb2F0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDgp KSkgdjJzZjsKKwordjJzZiB0ZXN0ICh2MnNmIGEsIHYyc2YgYikKK3sKKyAgcmV0dXJuIGEgKyBi OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFkZHBzIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIlxcKnZlY19jb25jYXR2NHNmXzAiIH0g fSAqLwo= --0000000000004b3278060265ae3e--