From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Thompson, David" Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCH] Add unboxed floating point comparison instructions. Date: Wed, 4 Jan 2017 20:41:42 -0500 Message-ID: References: <87lgvjgu2s.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> <87mvfpumfi.fsf@pobox.com> <87vaud7zrf.fsf@netris.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113e45cee3895f05454f0046 X-Trace: blaine.gmane.org 1483580525 27409 195.159.176.226 (5 Jan 2017 01:42:05 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 5 Jan 2017 01:42:05 +0000 (UTC) Cc: Andy Wingo , guile-devel To: Mark H Weaver Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu Jan 05 02:42:00 2017 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cOx3v-0005JU-N7 for guile-devel@m.gmane.org; Thu, 05 Jan 2017 02:41:52 +0100 Original-Received: from localhost ([::1]:43219 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOx3y-0003z7-4G for guile-devel@m.gmane.org; Wed, 04 Jan 2017 20:41:54 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39712) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cOx3r-0003yw-UJ for guile-devel@gnu.org; Wed, 04 Jan 2017 20:41:50 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cOx3p-00006l-VI for guile-devel@gnu.org; Wed, 04 Jan 2017 20:41:47 -0500 Original-Received: from mail-ua0-x242.google.com ([2607:f8b0:400c:c08::242]:34184) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cOx3p-00006T-Ny for guile-devel@gnu.org; Wed, 04 Jan 2017 20:41:45 -0500 Original-Received: by mail-ua0-x242.google.com with SMTP id i68so38428315uad.1 for ; Wed, 04 Jan 2017 17:41:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=worcester-edu.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=LZbkgsEBdXrSy2TPLekxRzKABoeelHW6oWOvsTcF2UY=; b=nehWE5Z1r8/NXrWpIhwUNxjjXgUQ9SIsoWcleGV/evbxlP1Nl2oyz4DMv9lgixRBb8 hyqGMw1Vkr/nsrbD21QhZw7+VHc35Oh1DE5R+IB8hbCW/foSOR/6k/n0jcObXE1vWcCO V982eZXjyoO97WGkTcW8wClrhMXwVpenQaB87V+5i3hWZTzcuux3B2hyDJEYxlgM6Ebk 9T4BLrK0o9OO+w97hkJP1N/0tl2OkrBcQNenLVXKvkcTRn/Pjm0cQzaze+4lp4ipw22i 3IdnROBKKvgASgHoqmUWOmgcQsrqNERIxEYflt+h5ZV1wuUojpdAakP5nBWsuzqMTgPE r5NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=LZbkgsEBdXrSy2TPLekxRzKABoeelHW6oWOvsTcF2UY=; b=cQT9oTNDDI1taIRQojod0FoEbn1KmHTXb6oMjcEsyhcxjrg0QVJgCnnB4i23JYHGLg u2aLfK48HB6h16VaGmi3R9G/4u3/uEX4EMnNO49muwYqCYifW8GSMa9e+eQkIjoDgVS4 TkhwCYlimfRpRbgx+8lp69ZK6hXNChIWwT8F3RzquXaQyZJTq8HKQtOlpkKBtXsHn223 DR7liZFPdcSmmQpS7Qdu2e/71D7kqV6y48ssk0xKptY8UigBBbO1HE/9X4NvsyhDwOIQ G/Uq+ALZWI8A5hcm+itJk+R5cg97Tkjl/V6WAIJ0Z0Q2eWampzEaK4n2m+nzmGXUKOtg oCZw== X-Gm-Message-State: AIkVDXKio/DIzT5Zx36JVYguzNXg+tHRGbUFiAIcUTgpchbOo0bzPhnUrAGI02xg6dqaqnjJVBcUgyHtOPNG2Xt7 X-Received: by 10.176.0.82 with SMTP id 76mr51420603uai.46.1483580503182; Wed, 04 Jan 2017 17:41:43 -0800 (PST) Original-Received: by 10.31.83.135 with HTTP; Wed, 4 Jan 2017 17:41:42 -0800 (PST) In-Reply-To: <87vaud7zrf.fsf@netris.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400c:c08::242 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:18816 Archived-At: --001a113e45cee3895f05454f0046 Content-Type: text/plain; charset=UTF-8 Hello Andy and Mark, Thanks for taking the time to review this patch and bearing with me as a I stumble around the compiler. I've attached a new patch and have some additionally commentary below: On Wed, Dec 21, 2016 at 4:12 PM, Mark H Weaver wrote: > Andy Wingo writes: > >> I think &min/0 should be replaced by (&min/f64). Probably also you need >> a good +nan.0 story here; does this do the right thing? e.g. >> >> (let ((a +nan.0)) >> (if (< a 100.0) >> (< a 200.0) >> (> a 50.0))) >> >> Does this fold to #t? I think for +nan.0 it should not, > > Right, any numerical comparison involving a NaN must return false. > >> but AFAIU with >> your patch it does fold. (Guile has some optimizer problems related to >> flonums, I think; this patch doesn't have to fix them all, but it >> shouldn't make them worse, or if it does, we need a nice story.) This returns false with my patch applied, but I noticed that the compiler has optimized everything away. Is this what you expected, Andy? Disassembly of #:13:3 ()> at #x1a7919c: 0 (assert-nargs-ee/locals 1 1) ;; 2 slots (0 args) at (unknown file):13:3 1 (make-short-immediate 0 4) ;; #f at (unknown file):17:6 2 (handle-interrupts) 3 (return-values 2) ;; 1 value >>> +(define-simple-type-checker (f64-< &f64 &f64)) >>> +(define-f64-comparison-inferrer (f64-< < >=)) >> >> Likewise we need an understanding that the inverse of < is in fact >=. >> Maybe it is indeed :) > > No, it is not, because of NaNs. What we can say is that (< x y) is > equivalent to (> y x) and (<= x y) is equivalent to (>= y x). > > Also, inexact numerical operations are not associative. There's a lot > more that could be said about this topic, but in general please be aware > that the usual mathematical intuitions are a poor guide, and it is easy > for a naive compiler to destroy the properties of carefully written > numerical codes. I was more ignorant of floating point arithmetic than I realized, so thanks for the education here. The good news is that I was able to just remove all changes to types.scm to resolve these issues (I think). How does this new patch look? Thanks! - Dave --001a113e45cee3895f05454f0046 Content-Type: text/x-diff; charset=US-ASCII; name="0001-Add-unboxed-floating-point-comparison-instructions.patch" Content-Disposition: attachment; filename="0001-Add-unboxed-floating-point-comparison-instructions.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ixjpge8q0 RnJvbSA1M2NmZGI0ZDg2ZWZhYTg4ZmYzYjk1MjM0N2ZhNWExYzIwMmMyMzU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBUaG9tcHNvbiA8ZHRob21wc29uMkB3b3JjZXN0ZXIu ZWR1PgpEYXRlOiBNb24sIDEyIERlYyAyMDE2IDIyOjQ2OjA4IC0wNTAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIHVuYm94ZWQgZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbiBpbnN0cnVjdGlvbnMuCgoq IGxpYmd1aWxlL3ZtLWVuZ2luZS5jIChCUl9GNjRfQVJJVEhNRVRJQyk6IE5ldyBwcmVwcm9jZXNz b3IgbWFjcm8uCihicl9pZl9mNjRfZWUsIGJyX2lmX2Y2NF9sdCwgYnJfaWZfZjY0X2xlLCBicl9p Zl9mNjRfZ3QsIGJyX2lmX2Y2NF9nZSk6Ck5ldyBWTSBpbnN0cnVjdGlvbnMuCiogbW9kdWxlL2xh bmd1YWdlL2Nwcy9jb21waWxlLWJ5dGVjb2RlLnNjbSAoY29tcGlsZS1mdW5jdGlvbik6IEVtaXQg ZjY0CmNvbXBhcmlzb24gaW5zdHJ1Y3Rpb25zLgoqIG1vZHVsZS9sYW5ndWFnZS9jcHMvZWZmZWN0 cy1hbmFseXNpcy5zY206IERlZmluZSBlZmZlY3RzIGZvciBmNjQKcHJpbWNhbGxzLgoqIG1vZHVs ZS9sYW5ndWFnZS9jcHMvcHJpbWl0aXZlcy5zY20gKCpicmFuY2hpbmctcHJpbWNhbGwtYXJpdGll cyopOiBBZGQKYXJpdGllcyBmb3IgZjY0IHByaW1jYWxscy4KKiBtb2R1bGUvbGFuZ3VhZ2UvY3Bz L3NwZWNpYWxpemUtbnVtYmVycy5zY20gKHNwZWNpYWxpemUtZjY0LWNvbXBhcmlzb24pOgpOZXcg cHJvY2VkdXJlLgooc3BlY2lhbGl6ZS1vcGVyYXRpb25zKTogU3BlY2lhbGl6ZSBmNjQgY29tcGFy aXNvbnMuCiogbW9kdWxlL2xhbmd1YWdlL2Nwcy90eXBlLWZvbGQuc2NtOiBEZWZpbmUgYnJhbmNo IGZvbGRlciBhbGlhc2VzIGZvcgpmNjQgcHJpbWNhbGxzLgoqIG1vZHVsZS9zeXN0ZW0vdm0vYXNz ZW1ibGVyLnNjbSAoZW1pdC1ici1pZi1mNjQtPSwgZW1pdC1ici1pZi1mNjQtPCkKKGVtaXQtYnIt aWYtZjY0LTw9LCBlbWl0LWJyLWlmLWY2NC0+LCBlbWl0LWJyLWlmLWY2NC0+PSk6IEV4cG9ydC4K KiBtb2R1bGUvc3lzdGVtL3ZtL2Rpc2Fzc2VtYmxlci5zY20gKGNvZGUtYW5ub3RhdGlvbik6IEFk ZCBhbm5vdGF0aW9ucwpmb3IgZjY0IGNvbXBhcmlzb24gaW5zdHJ1Y3Rpb25zLgotLS0KIGxpYmd1 aWxlL3ZtLWVuZ2luZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDY4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogbW9kdWxlL2xhbmd1YWdlL2Nwcy9jb21waWxlLWJ5dGVjb2RlLnNj bSAgIHwgIDcgKystCiBtb2R1bGUvbGFuZ3VhZ2UvY3BzL2VmZmVjdHMtYW5hbHlzaXMuc2NtICAg fCAgNSArKysKIG1vZHVsZS9sYW5ndWFnZS9jcHMvcHJpbWl0aXZlcy5zY20gICAgICAgICB8ICA3 ICsrLQogbW9kdWxlL2xhbmd1YWdlL2Nwcy9zcGVjaWFsaXplLW51bWJlcnMuc2NtIHwgNDkgKysr KysrKysrKysrKysrLS0tLS0tCiBtb2R1bGUvbGFuZ3VhZ2UvY3BzL3R5cGUtZm9sZC5zY20gICAg ICAgICAgfCAgNSArKysKIG1vZHVsZS9zeXN0ZW0vdm0vYXNzZW1ibGVyLnNjbSAgICAgICAgICAg ICB8ICA1ICsrKwogbW9kdWxlL3N5c3RlbS92bS9kaXNhc3NlbWJsZXIuc2NtICAgICAgICAgIHwg IDIgKwogOCBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0tZW5naW5lLmMgYi9saWJndWlsZS92bS1lbmdpbmUu YwppbmRleCA0NDA2ODQ1Li42YTdiYTUxIDEwMDY0NAotLS0gYS9saWJndWlsZS92bS1lbmdpbmUu YworKysgYi9saWJndWlsZS92bS1lbmdpbmUuYwpAQCAtMzU4LDYgKzM1OCwyNCBAQAogICAgIE5F WFQgKDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICB9CiAKKyNkZWZpbmUgQlJfRjY0X0FSSVRITUVUSUMoY3JlbCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICBzY21fdF91aW50MzIgYSwgYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICBzY21fdF91aW50NjQgeCwgeTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBVTlBBQ0tfMjQgKG9wLCBhKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBV TlBBQ0tfMjQgKGlwWzFdLCBiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICB4ID0gU1BfUkVGX0Y2NCAoYSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB5ID0gU1BfUkVGX0Y2NCAoYik7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAo KGlwWzJdICYgMHgxKSA/ICEoeCBjcmVsIHkpIDogKHggY3JlbCB5KSkgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2NtX3RfaW50MzIgb2Zmc2V0ID0g aXBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgb2Zm c2V0ID4+PSA4OyAvKiBTaWduLWV4dGVuZGluZyBzaGlmdC4gKi8gICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgTkVYVCAob2Zmc2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBORVhUICgzKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgfQorCisKICNkZWZpbmUgQVJHUzEoYTEpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgc2NtX3RfdWludDE2IGRzdCwgc3JjOyAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgU0NNIGExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM5 NTAsMTEgKzM5NjgsNTEgQEAgVk1fTkFNRSAoc2NtX2lfdGhyZWFkICp0aHJlYWQsIHN0cnVjdCBz Y21fdm0gKnZwLAogICAgICAgTkVYVCAoMSk7CiAgICAgfQogCi0gIFZNX0RFRklORV9PUCAoMTg3 LCB1bnVzZWRfMTg3LCBOVUxMLCBOT1ApCi0gIFZNX0RFRklORV9PUCAoMTg4LCB1bnVzZWRfMTg4 LCBOVUxMLCBOT1ApCi0gIFZNX0RFRklORV9PUCAoMTg5LCB1bnVzZWRfMTg5LCBOVUxMLCBOT1Ap Ci0gIFZNX0RFRklORV9PUCAoMTkwLCB1bnVzZWRfMTkwLCBOVUxMLCBOT1ApCi0gIFZNX0RFRklO RV9PUCAoMTkxLCB1bnVzZWRfMTkxLCBOVUxMLCBOT1ApCisgIC8qIGJyLWlmLWY2ND0gYToxMiBi OjEyIGludmVydDoxIF86NyBvZmZzZXQ6MjQKKyAgICoKKyAgICogSWYgdGhlIEY2NCB2YWx1ZSBp biBBIGlzID0gdG8gdGhlIHZhbHVlIGluIEIsIGFkZCBPRkZTRVQsIGEgc2lnbmVkCisgICAqIDI0 LWJpdCBudW1iZXIsIHRvIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAqLwor ICBWTV9ERUZJTkVfT1AgKDE4NywgYnJfaWZfZjY0X2VlLCAiYnItaWYtZjY0LT0iLCBPUDMgKFg4 X1MyNCwgWDhfUzI0LCBCMV9YN19MMjQpKQorICAgIHsKKyAgICAgIEJSX0Y2NF9BUklUSE1FVElD ICg9PSk7CisgICAgfQorCisgIC8qIGJyLWlmLWY2NDwgYToxMiBiOjEyIGludmVydDoxIF86NyBv ZmZzZXQ6MjQKKyAgICoKKyAgICogSWYgdGhlIEY2NCB2YWx1ZSBpbiBBIGlzIDwgdG8gdGhlIHZh bHVlIGluIEIsIGFkZCBPRkZTRVQsIGEgc2lnbmVkCisgICAqIDI0LWJpdCBudW1iZXIsIHRvIHRo ZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAqLworICBWTV9ERUZJTkVfT1AgKDE4 OCwgYnJfaWZfZjY0X2x0LCAiYnItaWYtZjY0LTwiLCBPUDMgKFg4X1MyNCwgWDhfUzI0LCBCMV9Y N19MMjQpKQorICAgIHsKKyAgICAgIEJSX0Y2NF9BUklUSE1FVElDICg8KTsKKyAgICB9CisKKyAg Vk1fREVGSU5FX09QICgxODksIGJyX2lmX2Y2NF9sZSwgImJyLWlmLWY2NC08PSIsIE9QMyAoWDhf UzI0LCBYOF9TMjQsIEIxX1g3X0wyNCkpCisgICAgeworICAgICAgQlJfRjY0X0FSSVRITUVUSUMg KDw9KTsKKyAgICB9CisKKyAgLyogYnItaWYtZjY0LT4gYToyNCBfOjggYjoyNCBpbnZlcnQ6MSBf Ojcgb2Zmc2V0OjI0CisgICAqCisgICAqIElmIHRoZSBGNjQgdmFsdWUgaW4gQSBpcyA+IHRoYW4g dGhlIFNDTSB2YWx1ZSBpbiBCLCBhZGQgT0ZGU0VULCBhCisgICAqIHNpZ25lZCAyNC1iaXQgbnVt YmVyLCB0byB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgKi8KKyAgVk1fREVG SU5FX09QICgxOTAsIGJyX2lmX2Y2NF9ndCwgImJyLWlmLWY2NC0+IiwgT1AzIChYOF9TMjQsIFg4 X1MyNCwgQjFfWDdfTDI0KSkKKyAgICB7CisgICAgICBCUl9GNjRfQVJJVEhNRVRJQyAoPik7Cisg ICAgfQorCisgIC8qIGJyLWlmLXVmNC0+PSBhOjI0IF86OCBiOjI0IGludmVydDoxIF86NyBvZmZz ZXQ6MjQKKyAgICoKKyAgICogSWYgdGhlIEY2NCB2YWx1ZSBpbiBBIGlzID49IHRoYW4gdGhlIFND TSB2YWx1ZSBpbiBCLCBhZGQgT0ZGU0VULCBhCisgICAqIHNpZ25lZCAyNC1iaXQgbnVtYmVyLCB0 byB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgKi8KKyAgVk1fREVGSU5FX09Q ICgxOTEsIGJyX2lmX2Y2NF9nZSwgImJyLWlmLWY2NC0+PSIsIE9QMyAoWDhfUzI0LCBYOF9TMjQs IEIxX1g3X0wyNCkpCisgICAgeworICAgICAgQlJfRjY0X0FSSVRITUVUSUMgKD49KTsKKyAgICB9 CisKICAgVk1fREVGSU5FX09QICgxOTIsIHVudXNlZF8xOTIsIE5VTEwsIE5PUCkKICAgVk1fREVG SU5FX09QICgxOTMsIHVudXNlZF8xOTMsIE5VTEwsIE5PUCkKICAgVk1fREVGSU5FX09QICgxOTQs IHVudXNlZF8xOTQsIE5VTEwsIE5PUCkKZGlmZiAtLWdpdCBhL21vZHVsZS9sYW5ndWFnZS9jcHMv Y29tcGlsZS1ieXRlY29kZS5zY20gYi9tb2R1bGUvbGFuZ3VhZ2UvY3BzL2NvbXBpbGUtYnl0ZWNv ZGUuc2NtCmluZGV4IGRiNWI4ZmEuLmEzZjhiYTQgMTAwNjQ0Ci0tLSBhL21vZHVsZS9sYW5ndWFn ZS9jcHMvY29tcGlsZS1ieXRlY29kZS5zY20KKysrIGIvbW9kdWxlL2xhbmd1YWdlL2Nwcy9jb21w aWxlLWJ5dGVjb2RlLnNjbQpAQCAtNDQ2LDcgKzQ0NiwxMiBAQAogICAgICAgICAoKCQgJHByaW1j YWxsICd1NjQtPS1zY20gKGEgYikpIChiaW5hcnkgZW1pdC1ici1pZi11NjQtPS1zY20gYSBiKSkK ICAgICAgICAgKCgkICRwcmltY2FsbCAndTY0LT49LXNjbSAoYSBiKSkgKGJpbmFyeSBlbWl0LWJy LWlmLXU2NC0+PS1zY20gYSBiKSkKICAgICAgICAgKCgkICRwcmltY2FsbCAndTY0LT4tc2NtIChh IGIpKSAoYmluYXJ5IGVtaXQtYnItaWYtdTY0LT4tc2NtIGEgYikpCi0gICAgICAgICgoJCAkcHJp bWNhbGwgJ2xvZ3Rlc3QgKGEgYikpIChiaW5hcnkgZW1pdC1ici1pZi1sb2d0ZXN0IGEgYikpKSkK KyAgICAgICAgKCgkICRwcmltY2FsbCAnbG9ndGVzdCAoYSBiKSkgKGJpbmFyeSBlbWl0LWJyLWlm LWxvZ3Rlc3QgYSBiKSkKKyAgICAgICAgKCgkICRwcmltY2FsbCAnZjY0LTwgKGEgYikpIChiaW5h cnkgZW1pdC1ici1pZi1mNjQtPCBhIGIpKQorICAgICAgICAoKCQgJHByaW1jYWxsICdmNjQtPD0g KGEgYikpIChiaW5hcnkgZW1pdC1ici1pZi1mNjQtPD0gYSBiKSkKKyAgICAgICAgKCgkICRwcmlt Y2FsbCAnZjY0LT0gKGEgYikpIChiaW5hcnkgZW1pdC1ici1pZi1mNjQtPSBhIGIpKQorICAgICAg ICAoKCQgJHByaW1jYWxsICdmNjQtPj0gKGEgYikpIChiaW5hcnkgZW1pdC1ici1pZi1mNjQtPj0g YSBiKSkKKyAgICAgICAgKCgkICRwcmltY2FsbCAnZjY0LT4gKGEgYikpIChiaW5hcnkgZW1pdC1i ci1pZi1mNjQtPiBhIGIpKSkpCiAKICAgICAoZGVmaW5lIChjb21waWxlLXRydW5jIGxhYmVsIGsg ZXhwIG5yZXEgcmVzdC12YXIpCiAgICAgICAoZGVmaW5lIChkby1jYWxsIHByb2MgYXJncyBlbWl0 LWNhbGwpCmRpZmYgLS1naXQgYS9tb2R1bGUvbGFuZ3VhZ2UvY3BzL2VmZmVjdHMtYW5hbHlzaXMu c2NtIGIvbW9kdWxlL2xhbmd1YWdlL2Nwcy9lZmZlY3RzLWFuYWx5c2lzLnNjbQppbmRleCA5Y2U2 NTg1Li5mMTgzM2JiIDEwMDY0NAotLS0gYS9tb2R1bGUvbGFuZ3VhZ2UvY3BzL2VmZmVjdHMtYW5h bHlzaXMuc2NtCisrKyBiL21vZHVsZS9sYW5ndWFnZS9jcHMvZWZmZWN0cy1hbmFseXNpcy5zY20K QEAgLTQzOSw2ICs0MzksMTEgQEAgaXMgb3IgbWlnaHQgYmUgYSByZWFkIG9yIGEgd3JpdGUgdG8g dGhlIHNhbWUgbG9jYXRpb24gYXMgQS4iCiAgICgodTY0LT0tc2NtIC4gXykgICAgICAgICAgICAg ICAgICZ0eXBlLWNoZWNrKQogICAoKHU2NC0+PS1zY20gLiBfKSAgICAgICAgICAgICAgICAgJnR5 cGUtY2hlY2spCiAgICgodTY0LT4tc2NtIC4gXykgICAgICAgICAgICAgICAgICZ0eXBlLWNoZWNr KQorICAoKGY2NC09IC4gXykpCisgICgoZjY0LTwgLiBfKSkKKyAgKChmNjQtPiAuIF8pKQorICAo KGY2NC08PSAuIF8pKQorICAoKGY2NC0+PSAuIF8pKQogICAoKHplcm8/IC4gXykgICAgICAgICAg ICAgICAgICAgICAmdHlwZS1jaGVjaykKICAgKChhZGQgLiBfKSAgICAgICAgICAgICAgICAgICAg ICAgJnR5cGUtY2hlY2spCiAgICgoYWRkL2ltbWVkaWF0ZSAuIF8pICAgICAgICAgICAgICZ0eXBl LWNoZWNrKQpkaWZmIC0tZ2l0IGEvbW9kdWxlL2xhbmd1YWdlL2Nwcy9wcmltaXRpdmVzLnNjbSBi L21vZHVsZS9sYW5ndWFnZS9jcHMvcHJpbWl0aXZlcy5zY20KaW5kZXggYmMwM2M5OC4uYTNlNmUz OCAxMDA2NDQKLS0tIGEvbW9kdWxlL2xhbmd1YWdlL2Nwcy9wcmltaXRpdmVzLnNjbQorKysgYi9t b2R1bGUvbGFuZ3VhZ2UvY3BzL3ByaW1pdGl2ZXMuc2NtCkBAIC05OSw3ICs5OSwxMiBAQAogICAg ICh1NjQtPS1zY20gLiAoMSAuIDIpKQogICAgICh1NjQtPj0tc2NtIC4gKDEgLiAyKSkKICAgICAo dTY0LT4tc2NtIC4gKDEgLiAyKSkKLSAgICAobG9ndGVzdCAuICgxIC4gMikpKSkKKyAgICAobG9n dGVzdCAuICgxIC4gMikpCisgICAgKGY2NC09IC4gKDEgLiAyKSkKKyAgICAoZjY0LTwgLiAoMSAu IDIpKQorICAgIChmNjQtPiAuICgxIC4gMikpCisgICAgKGY2NC08PSAuICgxIC4gMikpCisgICAg KGY2NC0+PSAuICgxIC4gMikpKSkKIAogKGRlZmluZSAoY29tcHV0ZS1wcmltLWluc3RydWN0aW9u cykKICAgKGxldCAoKHRhYmxlIChtYWtlLWhhc2gtdGFibGUpKSkKZGlmZiAtLWdpdCBhL21vZHVs ZS9sYW5ndWFnZS9jcHMvc3BlY2lhbGl6ZS1udW1iZXJzLnNjbSBiL21vZHVsZS9sYW5ndWFnZS9j cHMvc3BlY2lhbGl6ZS1udW1iZXJzLnNjbQppbmRleCBkOWZlNzZjLi42Yzg2MjdhIDEwMDY0NAot LS0gYS9tb2R1bGUvbGFuZ3VhZ2UvY3BzL3NwZWNpYWxpemUtbnVtYmVycy5zY20KKysrIGIvbW9k dWxlL2xhbmd1YWdlL2Nwcy9zcGVjaWFsaXplLW51bWJlcnMuc2NtCkBAIC0xNDQsNiArMTQ0LDIw IEBACiAgICAgICAgICgkY29udGludWUga29wIHNyYwogICAgICAgICAgICgkcHJpbWNhbGwgJ3Nj bS0+dTY0IChhLXU2NCkpKSkpKSkKIAorKGRlZmluZSAoc3BlY2lhbGl6ZS1mNjQtY29tcGFyaXNv biBjcHMga2Yga3Qgc3JjIG9wIGEgYikKKyAgKGxldCAoKG9wIChzeW1ib2wtYXBwZW5kICdmNjQt IG9wKSkpCisgICAgKHdpdGgtY3BzIGNwcworICAgICAgKGxldHYgZjY0LWEgZjY0LWIpCisgICAg ICAobGV0ayBrb3AgKCRrYXJncyAoJ2Y2NC1iKSAoZjY0LWIpCisgICAgICAgICAgICAgICAgICAo JGNvbnRpbnVlIGtmIHNyYworICAgICAgICAgICAgICAgICAgICAoJGJyYW5jaCBrdCAoJHByaW1j YWxsIG9wIChmNjQtYSBmNjQtYikpKSkpKQorICAgICAgKGxldGsga3VuYm94LWIgKCRrYXJncyAo J2Y2NC1hKSAoZjY0LWEpCisgICAgICAgICAgICAgICAgICAgICAgICgkY29udGludWUga29wIHNy YworICAgICAgICAgICAgICAgICAgICAgICAgICgkcHJpbWNhbGwgJ3NjbS0+ZjY0IChiKSkpKSkK KyAgICAgIChidWlsZC10ZXJtCisgICAgICAgICgkY29udGludWUga3VuYm94LWIgc3JjCisgICAg ICAgICAgKCRwcmltY2FsbCAnc2NtLT5mNjQgKGEpKSkpKSkpCisKIChkZWZpbmUgKHNpZ2JpdHMt dW5pb24geCB5KQogICAoYW5kIHggeSAobG9naW9yIHggeSkpKQogCkBAIC0yODMsNiArMjk3LDgg QEAgQklUUyBpbmRpY2F0aW5nIHRoZSBzaWduaWZpY2FudCBiaXRzIG5lZWRlZCBmb3IgYSB2YXJp YWJsZS4gIEJJVFMgbWF5IGJlCiAgICAgICAgICAgICAobGFtYmRhICh0eXBlIG1pbiBtYXgpCiAg ICAgICAgICAgICAgIChhbmQgKGVxdj8gdHlwZSAmZXhhY3QtaW50ZWdlcikKICAgICAgICAgICAg ICAgICAgICAoPD0gMCBtaW4gbWF4ICN4ZmZmZmZmZmZmZmZmZmZmZikpKSkpKQorICAgIChkZWZp bmUgKGY2NC1vcGVyYW5kPyB2YXIpCisgICAgICAob3BlcmFuZC1pbi1yYW5nZT8gdmFyICZmbG9u dW0gLWluZi4wICtpbmYuMCkpCiAgICAgKG1hdGNoIGNvbnQKICAgICAgICgoJCAka2Z1bikKICAg ICAgICAobGV0ICgodHlwZXMgKGluZmVyLXR5cGVzIGNwcyBsYWJlbCkpKQpAQCAtMzg3LDIwICs0 MDMsMjUgQEAgQklUUyBpbmRpY2F0aW5nIHRoZSBzaWduaWZpY2FudCBiaXRzIG5lZWRlZCBmb3Ig YSB2YXJpYWJsZS4gIEJJVFMgbWF5IGJlCiAgICAgICAgICAgKCQgJGNvbnRpbnVlIGsgc3JjCiAg ICAgICAgICAgICAgKCQgJGJyYW5jaCBrdCAoJCAkcHJpbWNhbGwgKGFuZCBvcCAob3IgJzwgJzw9 ICc9ICc+PSAnPikpIChhIGIpKSkpKQogICAgICAgICh2YWx1ZXMKLSAgICAgICAgKGlmICh1NjQt b3BlcmFuZD8gYSkKLSAgICAgICAgICAgIChsZXQgKChzcGVjaWFsaXplIChpZiAodTY0LW9wZXJh bmQ/IGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZS11NjQt Y29tcGFyaXNvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemUt dTY0LXNjbS1jb21wYXJpc29uKSkpCi0gICAgICAgICAgICAgICh3aXRoLWNwcyBjcHMKLSAgICAg ICAgICAgICAgICAobGV0JCBib2R5IChzcGVjaWFsaXplIGsga3Qgc3JjIG9wIGEgYikpCi0gICAg ICAgICAgICAgICAgKHNldGsgbGFiZWwgKCRrYXJncyBuYW1lcyB2YXJzICxib2R5KSkpKQotICAg ICAgICAgICAgKGlmICh1NjQtb3BlcmFuZD8gYikKLSAgICAgICAgICAgICAgICAobGV0ICgob3Ag KG1hdGNoIG9wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc8ICc+KSAoJzw9ICc+PSkg KCc9ICc9KSAoJz49ICc8PSkgKCc+ICc8KSkpKQotICAgICAgICAgICAgICAgICAgKHdpdGgtY3Bz IGNwcwotICAgICAgICAgICAgICAgICAgICAobGV0JCBib2R5IChzcGVjaWFsaXplLXU2NC1zY20t Y29tcGFyaXNvbiBrIGt0IHNyYyBvcCBiIGEpKQotICAgICAgICAgICAgICAgICAgICAoc2V0ayBs YWJlbCAoJGthcmdzIG5hbWVzIHZhcnMgLGJvZHkpKSkpCi0gICAgICAgICAgICAgICAgY3BzKSkK KyAgICAgICAgKGNvbmQKKyAgICAgICAgICgob3IgKGY2NC1vcGVyYW5kPyBhKSAoZjY0LW9wZXJh bmQ/IGIpKQorICAgICAgICAgICh3aXRoLWNwcyBjcHMKKyAgICAgICAgICAgIChsZXQkIGJvZHkg KHNwZWNpYWxpemUtZjY0LWNvbXBhcmlzb24gayBrdCBzcmMgb3AgYSBiKSkKKyAgICAgICAgICAg IChzZXRrIGxhYmVsICgka2FyZ3MgbmFtZXMgdmFycyAsYm9keSkpKSkKKyAgICAgICAgICgodTY0 LW9wZXJhbmQ/IGEpCisgICAgICAgICAgKGxldCAoKHNwZWNpYWxpemUgKGlmICh1NjQtb3BlcmFu ZD8gYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZS11NjQtY29t cGFyaXNvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplLXU2NC1z Y20tY29tcGFyaXNvbikpKQorICAgICAgICAgICAgKHdpdGgtY3BzIGNwcworICAgICAgICAgICAg ICAobGV0JCBib2R5IChzcGVjaWFsaXplIGsga3Qgc3JjIG9wIGEgYikpCisgICAgICAgICAgICAg IChzZXRrIGxhYmVsICgka2FyZ3MgbmFtZXMgdmFycyAsYm9keSkpKSkpCisgICAgICAgICAoKHU2 NC1vcGVyYW5kPyBiKQorICAgICAgICAgIChsZXQgKChvcCAobWF0Y2ggb3AKKyAgICAgICAgICAg ICAgICAgICAgICAoJzwgJz4pICgnPD0gJz49KSAoJz0gJz0pICgnPj0gJzw9KSAoJz4gJzwpKSkp CisgICAgICAgICAgICAod2l0aC1jcHMgY3BzCisgICAgICAgICAgICAgIChsZXQkIGJvZHkgKHNw ZWNpYWxpemUtdTY0LXNjbS1jb21wYXJpc29uIGsga3Qgc3JjIG9wIGIgYSkpCisgICAgICAgICAg ICAgIChzZXRrIGxhYmVsICgka2FyZ3MgbmFtZXMgdmFycyAsYm9keSkpKSkpCisgICAgICAgICAo ZWxzZSBjcHMpKQogICAgICAgICB0eXBlcwogICAgICAgICBzaWdiaXRzKSkKICAgICAgIChfICh2 YWx1ZXMgY3BzIHR5cGVzIHNpZ2JpdHMpKSkpCmRpZmYgLS1naXQgYS9tb2R1bGUvbGFuZ3VhZ2Uv Y3BzL3R5cGUtZm9sZC5zY20gYi9tb2R1bGUvbGFuZ3VhZ2UvY3BzL3R5cGUtZm9sZC5zY20KaW5k ZXggOTQ1OWUzMS4uYTY4ODI5MiAxMDA2NDQKLS0tIGEvbW9kdWxlL2xhbmd1YWdlL2Nwcy90eXBl LWZvbGQuc2NtCisrKyBiL21vZHVsZS9sYW5ndWFnZS9jcHMvdHlwZS1mb2xkLnNjbQpAQCAtMTEw LDYgKzExMCw3IEBACiAgICAgKGVsc2UgKHZhbHVlcyAjZiAjZikpKSkKIChkZWZpbmUtYnJhbmNo LWZvbGRlci1hbGlhcyB1NjQtPCA8KQogKGRlZmluZS1icmFuY2gtZm9sZGVyLWFsaWFzIHU2NC08 LXNjbSA8KQorKGRlZmluZS1icmFuY2gtZm9sZGVyLWFsaWFzIGY2NC08IDwpCiAKIChkZWZpbmUt YmluYXJ5LWJyYW5jaC1mb2xkZXIgKDw9IHR5cGUwIG1pbjAgbWF4MCB0eXBlMSBtaW4xIG1heDEp CiAgIChjYXNlIChjb21wYXJlLXJhbmdlcyB0eXBlMCBtaW4wIG1heDAgdHlwZTEgbWluMSBtYXgx KQpAQCAtMTE4LDYgKzExOSw3IEBACiAgICAgKGVsc2UgKHZhbHVlcyAjZiAjZikpKSkKIChkZWZp bmUtYnJhbmNoLWZvbGRlci1hbGlhcyB1NjQtPD0gPD0pCiAoZGVmaW5lLWJyYW5jaC1mb2xkZXIt YWxpYXMgdTY0LTw9LXNjbSA8PSkKKyhkZWZpbmUtYnJhbmNoLWZvbGRlci1hbGlhcyBmNjQtPD0g PD0pCiAKIChkZWZpbmUtYmluYXJ5LWJyYW5jaC1mb2xkZXIgKD0gdHlwZTAgbWluMCBtYXgwIHR5 cGUxIG1pbjEgbWF4MSkKICAgKGNhc2UgKGNvbXBhcmUtcmFuZ2VzIHR5cGUwIG1pbjAgbWF4MCB0 eXBlMSBtaW4xIG1heDEpCkBAIC0xMjYsNiArMTI4LDcgQEAKICAgICAoZWxzZSAodmFsdWVzICNm ICNmKSkpKQogKGRlZmluZS1icmFuY2gtZm9sZGVyLWFsaWFzIHU2NC09ID0pCiAoZGVmaW5lLWJy YW5jaC1mb2xkZXItYWxpYXMgdTY0LT0tc2NtID0pCisoZGVmaW5lLWJyYW5jaC1mb2xkZXItYWxp YXMgZjY0LT0gPSkKIAogKGRlZmluZS1iaW5hcnktYnJhbmNoLWZvbGRlciAoPj0gdHlwZTAgbWlu MCBtYXgwIHR5cGUxIG1pbjEgbWF4MSkKICAgKGNhc2UgKGNvbXBhcmUtcmFuZ2VzIHR5cGUwIG1p bjAgbWF4MCB0eXBlMSBtaW4xIG1heDEpCkBAIC0xMzQsNiArMTM3LDcgQEAKICAgICAoZWxzZSAo dmFsdWVzICNmICNmKSkpKQogKGRlZmluZS1icmFuY2gtZm9sZGVyLWFsaWFzIHU2NC0+PSA+PSkK IChkZWZpbmUtYnJhbmNoLWZvbGRlci1hbGlhcyB1NjQtPj0tc2NtID49KQorKGRlZmluZS1icmFu Y2gtZm9sZGVyLWFsaWFzIGY2NC0+PSA+PSkKIAogKGRlZmluZS1iaW5hcnktYnJhbmNoLWZvbGRl ciAoPiB0eXBlMCBtaW4wIG1heDAgdHlwZTEgbWluMSBtYXgxKQogICAoY2FzZSAoY29tcGFyZS1y YW5nZXMgdHlwZTAgbWluMCBtYXgwIHR5cGUxIG1pbjEgbWF4MSkKQEAgLTE0Miw2ICsxNDYsNyBA QAogICAgIChlbHNlICh2YWx1ZXMgI2YgI2YpKSkpCiAoZGVmaW5lLWJyYW5jaC1mb2xkZXItYWxp YXMgdTY0LT4gPikKIChkZWZpbmUtYnJhbmNoLWZvbGRlci1hbGlhcyB1NjQtPi1zY20gPikKKyhk ZWZpbmUtYnJhbmNoLWZvbGRlci1hbGlhcyBmNjQtPiA+KQogCiAoZGVmaW5lLWJpbmFyeS1icmFu Y2gtZm9sZGVyIChsb2d0ZXN0IHR5cGUwIG1pbjAgbWF4MCB0eXBlMSBtaW4xIG1heDEpCiAgIChk ZWZpbmUgKGxvZ2FuZC1taW4gYSBiKQpkaWZmIC0tZ2l0IGEvbW9kdWxlL3N5c3RlbS92bS9hc3Nl bWJsZXIuc2NtIGIvbW9kdWxlL3N5c3RlbS92bS9hc3NlbWJsZXIuc2NtCmluZGV4IDJjNmJmODEu LjIyNmEyMjMgMTAwNjQ0Ci0tLSBhL21vZHVsZS9zeXN0ZW0vdm0vYXNzZW1ibGVyLnNjbQorKysg Yi9tb2R1bGUvc3lzdGVtL3ZtL2Fzc2VtYmxlci5zY20KQEAgLTEwNiw2ICsxMDYsMTEgQEAKICAg ICAgICAgICAgIGVtaXQtYnItaWYtdTY0LT0tc2NtCiAgICAgICAgICAgICBlbWl0LWJyLWlmLXU2 NC0+PS1zY20KICAgICAgICAgICAgIGVtaXQtYnItaWYtdTY0LT4tc2NtCisgICAgICAgICAgICBl bWl0LWJyLWlmLWY2NC09CisgICAgICAgICAgICBlbWl0LWJyLWlmLWY2NC08CisgICAgICAgICAg ICBlbWl0LWJyLWlmLWY2NC08PQorICAgICAgICAgICAgZW1pdC1ici1pZi1mNjQtPgorICAgICAg ICAgICAgZW1pdC1ici1pZi1mNjQtPj0KICAgICAgICAgICAgIGVtaXQtYm94CiAgICAgICAgICAg ICBlbWl0LWJveC1yZWYKICAgICAgICAgICAgIGVtaXQtYm94LXNldCEKZGlmZiAtLWdpdCBhL21v ZHVsZS9zeXN0ZW0vdm0vZGlzYXNzZW1ibGVyLnNjbSBiL21vZHVsZS9zeXN0ZW0vdm0vZGlzYXNz ZW1ibGVyLnNjbQppbmRleCBiMDg2N2U2Li5iNmY0Zjc4IDEwMDY0NAotLS0gYS9tb2R1bGUvc3lz dGVtL3ZtL2Rpc2Fzc2VtYmxlci5zY20KKysrIGIvbW9kdWxlL3N5c3RlbS92bS9kaXNhc3NlbWJs ZXIuc2NtCkBAIC0xOTgsNiArMTk4LDggQEAgYWRkcmVzcyBvZiB0aGF0IG9mZnNldC4iCiAgICAg ICAgICAgJ2JyLWlmLXU2NC09ICdici1pZi11NjQtPCAnYnItaWYtdTY0LTw9CiAgICAgICAgICAg J2JyLWlmLXU2NC08LXNjbSAnYnItaWYtdTY0LTw9LXNjbSAnYnItaWYtdTY0LT0tc2NtCiAgICAg ICAgICAgJ2JyLWlmLXU2NC0+LXNjbSAnYnItaWYtdTY0LT49LXNjbQorICAgICAgICAgICdici1p Zi1mNjQtPSAnYnItaWYtZjY0LTwgJ2JyLWlmLWY2NC08PQorICAgICAgICAgICdici1pZi1mNjQt PiAnYnItaWYtZjY0LT49CiAgICAgICAgICAgJ2JyLWlmLWxvZ3Rlc3QpIF8gLi4uIHRhcmdldCkK ICAgICAgKGxpc3QgIi0+IH5BIiAodmVjdG9yLXJlZiBsYWJlbHMgKC0gKCsgb2Zmc2V0IHRhcmdl dCkgc3RhcnQpKSkpCiAgICAgKCgnYnItaWYtdGM3IHNsb3QgaW52ZXJ0PyB0YzcgdGFyZ2V0KQot LSAKMi4xMC4wCgo= --001a113e45cee3895f05454f0046--