From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Robert Burks Newsgroups: gmane.emacs.bugs Subject: bug#70183: [PATCH] Fix + ert for multiple watcher notifications (2 of 9) Date: Thu, 4 Apr 2024 04:44:41 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000366f490615415e6d" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19496"; mail-complaints-to="usenet@ciao.gmane.io" To: 70183@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Apr 04 11:18:41 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rsJF1-0004ue-Vi for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 04 Apr 2024 11:18:40 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsJEP-0007ue-HJ; Thu, 04 Apr 2024 05:18:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsJEN-0007sR-BU for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:17:59 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rsJEN-0000Bq-0d for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:17:59 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rsJER-0004n6-Rm for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 05:18:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Robert Burks Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 04 Apr 2024 09:18:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 70183 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: GNU BUGS Original-Received: via spool by submit@debbugs.gnu.org id=B.171222227418297 (code B ref -1); Thu, 04 Apr 2024 09:18:03 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Apr 2024 09:17:54 +0000 Original-Received: from localhost ([127.0.0.1]:60533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsJEE-0004kP-R6 for submit@debbugs.gnu.org; Thu, 04 Apr 2024 05:17:54 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:48400) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsIjd-0001nZ-Vr for submit@debbugs.gnu.org; Thu, 04 Apr 2024 04:46:16 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsIjT-0002ZW-F6 for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 04:46:03 -0400 Original-Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rsIjR-00027Q-0v for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 04:46:03 -0400 Original-Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-6963c0c507eso7949526d6.1 for ; Thu, 04 Apr 2024 01:45:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712220358; x=1712825158; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Hb1/RWN6O0/UWc14Fzin83cwRkwBcoR9KX+naTVHTec=; b=nKPNqmFbcItyTkUEyR79gLwJqnhgHoCW+tBNl2m78kwBaD726/WTUsaOBg95QQSyl6 if18JGfyXqpy7Ax8KnWfuF9lw/vSI5x8BBUfoMscYaQnEdvg/1NUSwxB5pnU/dzuSaKl QpU9vRO1TBwqgkSHm3V3GtOtzuOprSha/nG/b3D/iUQbdIosgeRtNxr5ZOMLzWFvwJoy 414qV0HtlZQ1cCXIOT8Kla9uMsydFkbHsqfKpzpY9JFFMBmE1dx4j17hrMgaXH5ds3qm 9XZQP/gIkJY3b4SoSfJ4jpZ02+9rbUDF4rCw5HEouyrsv9XBfTNWg5+KEdHKOSyVp4pu e45Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712220358; x=1712825158; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Hb1/RWN6O0/UWc14Fzin83cwRkwBcoR9KX+naTVHTec=; b=guLFsvRgOKduE7ZNIu7O7n1IN++td/fRoB3qYHDCqG4ZOYg4QmRdWTk0tcswevyAYd MabmLMfYjCSCRZWSFoqt9vnQGqoJCMDuQ3Ekj1PWnaIuVDuTUyqQslN3fik14eIT9slq diTv1bH7p6Q3hlipiZD7OTf3TZtoqmgHQSeTIYOuFzlRFxjJVS+X/tMtbDLYqoTr30mm b/Ay/BesyJA3DoJvXtxI13ckQNn5b70jrg6DNL9AgbYRbAjv7kmivUtu3MDaELs2opZ3 +rdy+u8G+rCj8VmikHcaC5ifzHHJfQAUN1ByLFanXQG9cAKtBs/U3/cCBY+5ZWe/o1k2 hYsA== X-Gm-Message-State: AOJu0YwSIVc9z4la6rozonMO0s/CwdavAbVTXQzfzvy6+2c5oX9LbcmC G4cMT3fBPQon+x80KezdXGsBtX9N+JNFO12XUY+8K05cgG9UllRIzsjZsOMK9W4qAHjdPY58/Nc p8CTNKnP3uGGcfsyZyf354jCY9rP8Kww= X-Google-Smtp-Source: AGHT+IGy7d9w5rEtjTbBTLtjJMQxrWbtQSqDTjaHATk6pNO5L96djFHUsACpBNFPobffoibo9K2vskmQw94y42tnZVE= X-Received: by 2002:a05:6214:1ccf:b0:691:67f9:16e7 with SMTP id g15-20020a0562141ccf00b0069167f916e7mr2840808qvd.24.1712220357927; Thu, 04 Apr 2024 01:45:57 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::f2f; envelope-from=rburksdev@gmail.com; helo=mail-qv1-xf2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 04 Apr 2024 05:17:46 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:282627 Archived-At: --000000000000366f490615415e6d Content-Type: multipart/alternative; boundary="000000000000366f490615415e6b" --000000000000366f490615415e6b Content-Type: text/plain; charset="UTF-8" (2 of 9) Bug#00001a (Using set-default with an alias double notifies) Bug#00001a (Using set-default on the alias of an unbound forwarded symbol) Bug#00001b (Setting a let bound forwarded symbol in buffer with no blv) ** Bug recreation is at the end (These are extremely specific paths derived from digging at the c code to make bugs happen, they are in no way intentional execution paths.) I am calling all of these the same bug because they arise from the functions set_internal and set_default_internal each calling the other along specific paths. There exists a way to achieve triple notification; however, that involves combining with another bug that I will cover later. Attached are patches to fix and testing for the bugs shown below. (Please note the BUG# placeholder in twelve(12) places will need to be updated.) I divided the fix into a commit for each function. These functions are tangled together so both are required to fix the problems. I added the testing as a separate commit. Also, there is reasoning behind checking for the constant at every step of redirection that will play out along the rest of my submissions. It isn't so much about checking at every step as much as it is about the end of the chain. At the top in the goto start loop is the easiest place to make that happen. Additionally, I moved the XSETSYMBOL to the top from inside the localized to point out that while redirection was important, the notes there didn't express how important it was to convert the symbol to bare. If handled only during cases of redirection there will occur times when byte compiling in which set_internal will be passed a symbol with position and then store it as a blv. Then kill-buffer will choke on encountering a symbol with position in a blv cons cell when it is accessed with positions disabled. e.g. auto-composition-mode was one I encountered. Simply moving the XSETSYMBOL to only happen after variable alias redirection caused an issue. That variable is a DEFVAR_LISP but is made buffer local in an .el file. Everything would build fine but byte compilation would die on that file because kill-buffer would pull all blv's and encounter that one put on with 'position' while not being in a 'positions-enabled' environment. Bug Recreations ------------------------------------------------------- Bug#00001a (Using set-default with an alias double notifies) emacs -Q--------------------------------------------------------------- (defvar test 5) test (defvar result nil) result (defvaralias 'test-alias 'test) test (add-variable-watcher 'test (lambda (&rest args) (push args result))) nil (set-default 'test-alias 100) 100 result ((test 100 set nil) (test 100 set nil)) ;; there should only be one result here!!!!!!!!!! ;; This bug arises from set_default_internal making notification ;; one time for the alias and another time when it calls set_internal. Bug#00001a (Using set-default on the alias of an unbound forwarded symbol) emacs -Q--------------------------------------------------------------- (defvar results nil) results (add-variable-watcher 'right-margin-width (lambda (&rest args) (push args results))) nil (defvaralias 'testa 'right-margin-width) right-margin-width (makunbound 'right-margin-width) right-margin-width (set 'results nil) nil (set-default 'testa 2000) 2000 results ((right-margin-width 2000 set nil) (right-margin-width 2000 set nil)) ;; only one set occurred!!!!!!!! ;; Calling set-default with the alias of an unbound forwarded symbol ;; causes watchers to be notified once in set_default_internal and another ;; time in set_internal. ;; This is the same bug as the previous example and occurs because set_internal converts ;; forwarded symbol into a plain value when it is unbound. Bug#00001b (Setting a let bound forwarded symbol in a buffer with no blv) emacs -Q--------------------------------------------------------------- (defvar results nil) results (add-variable-watcher 'right-margin-width (lambda (&rest args) (push args results))) nil (let ((right-margin-width 150)) (set 'right-margin-width 2000)) 2000 results ((right-margin-width 0 set nil) (right-margin-width 2000 set nil) (right-margin-width 2000 set #) (right-margin-width 150 set nil)) ;; ^ ^ ;; These are double _________________________________|__________________________________| ;; Notification is being sent once in set_internal and again in ;; set_default_internal as a result of being a let bound forwarded symbol. ;; Also, it is not sending the proper 'operation'. While these should be ;; acting on the default value just as a normal blv that is shadowing default ;; does, with blv the notification still reflects the proper operation used. ;; That being said, in this scenario they should not have a buffer name as it is ;; acting globally but it should still have the 'let' and 'unlet' like a blv would. ;; The (right-margin-width 2000 set #) being sent by ;; set_internal should not be there in this scenario. ********************************************************************** ;; I spent way to much time in gdb finding these last two paths. I knew ;; they existed just by looking at the code but couldn't trigger them ;; in lisp for the longest time. -----an example that looks like my testing------ ;; As long as the uninterned alias is added after the watcher uninterned symbols ;; work because the trapped write flag is copied and does not need to be "harmonized". ;; I will cover this in more depth later. This makes for clean and repeatable tests. ;; I have an alternate version of most of the tests without uninterned aliases. (let* ((r1 nil) (a1 (gensym)) (v1 (gensym)) (f1 (lambda (&rest args) (push args r1)))) (set v1 5) (add-variable-watcher v1 f1) (defvaralias a1 v1) (set-default a1 100) r1) ((g1 100 set nil) (g1 100 set nil)) --000000000000366f490615415e6b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
(2 of 9)

Bug#00001a (Using set-default with an alia= s double notifies)
Bug#00001a (Using set-default on the alias of an unbo= und forwarded symbol)
Bug#00001b (Setting a let bound forwarded symbol i= n buffer with no blv)

** Bug recreation is at the end
(These are = extremely specific paths derived from digging at the c code
to make bugs= happen, they are in no way intentional execution paths.)

I am calli= ng all of these the same bug because they arise from the
functions set_i= nternal and set_default_internal each calling the other
along specific p= aths.=C2=A0 There exists a way to achieve triple notification;
however, = that involves combining with another bug that I will cover later.

At= tached are patches to fix and testing for the bugs shown below.
(Please = note the BUG# placeholder in twelve(12) places will need to be
updated.)=

I divided the fix into a commit for each function.=C2=A0 These func= tions are
tangled together so both are required to fix the problems. I a= dded the
testing as a separate commit.

Also, there is reasoning b= ehind checking for the constant at every
step of redirection that will p= lay out along the rest of my submissions.
It isn't so much abou= t checking at every step as much as it is about the
end of the ch= ain. At the top in the goto start loop is the easiest place to
make th= at happen.

=C2=A0 Additionally, I moved the XSETSYMBOL to the top fr= om inside the
localized to point out that while redirection was importan= t, the notes
there didn't express how important it was to convert th= e symbol to bare.
If handled only during cases of redirection there will= occur
times when byte compiling in which set_internal will be passed a = symbol
with position and then store it as a blv. Then kill-buffer will c= hoke
on encountering a symbol with position in a blv cons cell when it i= s
accessed with positions disabled.

e.g. auto-composition-mode wa= s one I encountered.=C2=A0 Simply moving the
XSETSYMBOL to only happen a= fter variable alias redirection caused an issue.
That variable is a DEFV= AR_LISP but is made buffer local in an .el file.
Everything would build= fine but byte compilation would die on that file
because kill-buffer wo= uld pull all blv's and encounter that one put on
with 'position&= #39; while not being in a 'positions-enabled' environment.

= Bug Recreations -------------------------------------------------------
=
Bug#00001a (Using set-default with an alias double notifies)
emacs -= Q---------------------------------------------------------------

(de= fvar test 5)
test

(defvar result nil)
result

(defvarali= as 'test-alias 'test)
test

(add-variable-watcher 'tes= t (lambda (&rest args)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (push ar= gs result)))
nil

(set-default 'test-alias 100)
100

= result
((test 100 set nil) (test 100 set nil))
;; there should only b= e one result here!!!!!!!!!!
;; This bug arises from set_default_internal= making notification
;; one time for the alias and another time when it= calls set_internal.

Bug#00001a (Using set-default on the alias of a= n unbound forwarded symbol)
emacs -Q------------------------------------= ---------------------------

(defvar results nil)
results

(= add-variable-watcher 'right-margin-width (lambda (&rest args) (push= args results)))
nil

(defvaralias 'testa 'right-margin-wi= dth)
right-margin-width

(makunbound 'right-margin-width)
r= ight-margin-width

(set 'results nil)
nil

(set-default = 'testa 2000)
2000

results
((right-margin-width 2000 set ni= l) (right-margin-width 2000 set nil))
;; only one set occurred!!!!!!!!;; Calling set-default with the alias of an unbound forwarded symbol
;= ; causes watchers to be notified once in set_default_internal and another;; time in set_internal.
;; This is the same bug as the previous examp= le and occurs because set_internal converts
;; forwarded symbol into a p= lain value when it is unbound.


Bug#00001b (Setting a let bound f= orwarded symbol in a buffer with no blv)
emacs -Q-----------------------= ----------------------------------------

(defvar results nil)
res= ults

(add-variable-watcher 'right-margin-width (lambda (&res= t args) (push args results)))
nil

(let ((right-margin-width 150))=
=C2=A0 (set 'right-margin-width 2000))
2000

results
((= right-margin-width 0 set nil) (right-margin-width 2000 set nil) (right-marg= in-width 2000 set #<buffer *scratch*>) (right-margin-width 150 set ni= l))
;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0^
;; These are double _________________________________|______= ____________________________|
;; Notification is being sent once in set_= internal and again in
;; set_default_internal as a result of being a let= bound forwarded symbol.
;; Also, it is not sending the proper 'oper= ation'.=C2=A0 While these should be
;; acting on the default value j= ust as a normal blv that is shadowing default
;; does, with blv the noti= fication still reflects the proper operation used.
;; That being said, i= n this scenario they should not have a buffer name as it is
;; acting gl= obally but it should still have the 'let' and 'unlet' like = a blv would.
;; The (right-margin-width 2000 set #<buffer *scratch*&g= t;) being sent by
;; set_internal should not be there in this scenario.<= br>
********************************************************************= **
;; I spent way to much time in gdb finding these last two paths.=C2= =A0 I knew
;; they existed just by looking at the code but couldn't = trigger them
;; in lisp for the longest time.


-----an example= that looks like my testing------
;; As long as the uninterned alias is = added after the watcher uninterned symbols
;; work because the trapped w= rite flag is copied and does not need to be "harmonized".
;; I= will cover this in more depth later.=C2=A0 This makes for clean and repeat= able tests.
;; I have an alternate version of most of the tests without = uninterned aliases.
(let* ((r1 nil)
=C2=A0 =C2=A0 =C2=A0 =C2=A0(a1 (g= ensym))
=C2=A0 =C2=A0 =C2=A0 =C2=A0(v1 (gensym))
=C2=A0 =C2=A0 =C2=A0= =C2=A0(f1 (lambda (&rest args) (push args r1))))
=C2=A0 (set v1 5)<= br>=C2=A0 (add-variable-watcher v1 f1)
=C2=A0 (defvaralias a1 v1)
=C2= =A0 (set-default a1 100)
=C2=A0 r1)
((g1 100 set nil) (g1 100 set nil= ))
--000000000000366f490615415e6b-- --000000000000366f490615415e6d Content-Type: application/x-patch; name="0002-Fix-multiple-watcher-calls-in-set_default_internal-b.patch" Content-Disposition: attachment; filename="0002-Fix-multiple-watcher-calls-in-set_default_internal-b.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvakg72 RnJvbSBjZDc4ZGNkZjAxODkwYWQ2OWQ5NjJlZjE4ZmVlZjc5YWUyYzRjZjJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCA2IE1hciAyMDI0IDE4OjU2OjMxIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAw Mi8zMV0gRml4IG11bHRpcGxlIHdhdGNoZXIgY2FsbHMgaW4gc2V0X2RlZmF1bHRfaW50ZXJuYWwK IChidWcjMDAwMDEpCgoqIHNyYy9kYXRhLmMgKHNldF9kZWZhdWx0X2ludGVybmFsKToKVmFyaWFi bGUgd2F0Y2hlcnMgd2lsbCBub3cgZXhlY3V0ZSBvbmUgdGltZSBpZiBjYWxsZWQgdXNpbmcgYW4g YWxpYXMuCihidWcjMDAwMDEpCi0tLQogc3JjL2RhdGEuYyB8IDQzICsrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25z KCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGF0YS5jIGIvc3JjL2RhdGEu YwppbmRleCBjNDI0MjQ0OTdhZC4uNDhkYTVjZWU0MjkgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMK KysrIGIvc3JjL2RhdGEuYwpAQCAtMTk4NiwzMSArMTk4NiwyMSBAQCBzZXRfZGVmYXVsdF9pbnRl cm5hbCAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCB2YWx1ZSwKIHsKICAgQ0hFQ0tf U1lNQk9MIChzeW1ib2wpOwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bSA9IFhTWU1CT0wgKHN5 bWJvbCk7Ci0gIHN3aXRjaCAoc3ltLT51LnMudHJhcHBlZF93cml0ZSkKKyAgLyogVXBkYXRlIGZv ciBhbGlhc2luZyBhbmQgc2FuaXRpemUgdGhlIGlucHV0IHRvIGVuc3VyZSBvbmx5IGEgYmFyZQor ICAgICBzeW1ib2wgaXMgc3RvcmVkLiAgSXQgbWF5IGJlIGFjY2Vzc2VkIHdpdGggcG9zaXRpb25z IGRpc2FibGVkLiAgKi8KKyBzdGFydDoKKyAgWFNFVFNZTUJPTCAoc3ltYm9sLCBzeW0pOworCisg IGlmIChzeW0tPnUucy50cmFwcGVkX3dyaXRlID09IFNZTUJPTF9OT1dSSVRFKQogICAgIHsKLSAg ICBjYXNlIFNZTUJPTF9OT1dSSVRFOgogICAgICAgaWYgKE5JTFAgKEZrZXl3b3JkcCAoc3ltYm9s KSkKICAgICAgICAgICB8fCAhRVEgKHZhbHVlLCBGc3ltYm9sX3ZhbHVlIChzeW1ib2wpKSkKICAg ICAgICAgeHNpZ25hbDEgKFFzZXR0aW5nX2NvbnN0YW50LCBzeW1ib2wpOwogICAgICAgZWxzZQog ICAgICAgICAvKiBBbGxvdyBzZXR0aW5nIGtleXdvcmRzIHRvIHRoZWlyIG93biB2YWx1ZS4gICov Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgU1lNQk9MX1RSQVBQRURfV1JJVEU6Ci0gICAg ICAvKiBEb24ndCBub3RpZnkgaGVyZSBpZiB3ZSdyZSBnb2luZyB0byBjYWxsIEZzZXQgYW55d2F5 LiAgKi8KLSAgICAgIGlmIChzeW0tPnUucy5yZWRpcmVjdCAhPSBTWU1CT0xfUExBSU5WQUwKLSAg ICAgICAgICAvKiBTZXR0aW5nIGR1ZSB0byB0aHJlYWQgc3dpdGNoaW5nIGRvZXNuJ3QgY291bnQu ICAqLwotICAgICAgICAgICYmIGJpbmRmbGFnICE9IFNFVF9JTlRFUk5BTF9USFJFQURfU1dJVENI KQotICAgICAgICBub3RpZnlfdmFyaWFibGVfd2F0Y2hlcnMgKHN5bWJvbCwgdmFsdWUsIFFzZXRf ZGVmYXVsdCwgUW5pbCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1lNQk9MX1VOVFJBUFBF RF9XUklURToKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDogZW1hY3NfYWJvcnQgKCk7CisJ cmV0dXJuOwogICAgIH0KIAotIHN0YXJ0OgogICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGlyZWN0KQog ICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gU1lNQk9MX0FMSUFTIChzeW0p OyBnb3RvIHN0YXJ0OwpAQCAtMjAxOSw2ICsyMDA5LDExIEBAIHNldF9kZWZhdWx0X2ludGVybmFs IChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IHZhbHVlLAogICAgICAgewogCXN0cnVj dCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2ID0gU1lNQk9MX0JMViAoc3ltKTsKIAorCS8q IElmIHdhdGNoZWQgbm90aWZ5IHVubGVzcyB0aHJlYWQgc3dpdGNoaW5nICovCisJaWYgKHN5bS0+ dS5zLnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEUKKwkgICAgJiYgYmluZGZs YWcgIT0gU0VUX0lOVEVSTkFMX1RIUkVBRF9TV0lUQ0gpCisJICBub3RpZnlfdmFyaWFibGVfd2F0 Y2hlcnMgKHN5bWJvbCwgdmFsdWUsIFFzZXRfZGVmYXVsdCwgUW5pbCk7CisKIAkvKiBTdG9yZSBu ZXcgdmFsdWUgaW50byB0aGUgREVGQVVMVC1WQUxVRSBzbG90LiAgKi8KIAlYU0VUQ0RSIChibHYt PmRlZmNlbGwsIHZhbHVlKTsKIApAQCAtMjAzOSw2ICsyMDM0LDIwIEBAIHNldF9kZWZhdWx0X2lu dGVybmFsIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IHZhbHVlLAogCSAgICBpbnQg b2Zmc2V0ID0gWEJVRkZFUl9PQkpGV0QgKHZhbGNvbnRlbnRzKS0+b2Zmc2V0OwogCSAgICBpbnQg aWR4ID0gUEVSX0JVRkZFUl9JRFggKG9mZnNldCk7CiAKKwkgICAgLyogSWYgd2F0Y2hlZCBub3Rp ZnkgdW5sZXNzIHRocmVhZCBzd2l0Y2hpbmcgKi8KKwkgICAgaWYgKHN5bS0+dS5zLnRyYXBwZWRf d3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEUKKwkJJiYgYmluZGZsYWcgIT0gU0VUX0lOVEVS TkFMX1RIUkVBRF9TV0lUQ0gpCisJICAgICAgeworCQkvKiBJZiBhIGxldCBzaGFkb3dzIGJ1ZmZl ciBiaW5kaW5nIHdlIGNhbiByZWFjaCBoZXJlCisJCSAgIGZyb20gYSAnbWFrdW5ib3VuZCcgd2l0 aGluIGEgbGV0LiAgKi8KKwkJYm9vbCB2b2lkZSA9IEJBU0VfRVEgKHZhbHVlLCBRdW5ib3VuZCk7 CisKKwkJbm90aWZ5X3ZhcmlhYmxlX3dhdGNoZXJzIChzeW1ib2wsIHZvaWRlPyBRbmlsIDogdmFs dWUsCisJCQkJCSAgKGJpbmRmbGFnID09IFNFVF9JTlRFUk5BTF9CSU5EPyBRbGV0IDoKKwkJCQkJ ICAgYmluZGZsYWcgPT0gU0VUX0lOVEVSTkFMX1VOQklORD8gUXVubGV0IDoKKwkJCQkJICAgdm9p ZGU/IFFtYWt1bmJvdW5kIDogUXNldF9kZWZhdWx0KSwgUW5pbCk7CisJICAgICAgfQorCiAJICAg IHNldF9wZXJfYnVmZmVyX2RlZmF1bHQgKG9mZnNldCwgdmFsdWUpOwogCiAJICAgIC8qIElmIHRo aXMgdmFyaWFibGUgaXMgbm90IGFsd2F5cyBsb2NhbCBpbiBhbGwgYnVmZmVycywKLS0gCjIuMzQu MQoK --000000000000366f490615415e6d Content-Type: application/x-patch; name="0003-Fix-multiple-watcher-notification-in-set_internal-bu.patch" Content-Disposition: attachment; filename="0003-Fix-multiple-watcher-notification-in-set_internal-bu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvakg21 RnJvbSBkNDlmYTA1YzljZTE2NmFkNTNjZTllYmI3M2UwYTViZTJiYjYzYTcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogVGh1LCA3IE1hciAyMDI0IDAyOjA3OjI5IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAw My8zMV0gRml4IG11bHRpcGxlIHdhdGNoZXIgbm90aWZpY2F0aW9uIGluIHNldF9pbnRlcm5hbAog KGJ1ZyMwMDAwMSkKCiogc3JjL2RhdGEuYyAoc2V0X2ludGVybmFsKToKVmFyaWFibGUgd2F0Y2hl ciB3aWxsIG5vdyBvbmx5IGV4ZWN1dGUgb25lIHRpbWUgd2hlbiBzZXR0aW5nIGluc2lkZSBhCmxl dCBiaW5kaW5nIG9mIGEgZm9yd2FyZGVkIHN5bWJvbC4gKGJ1ZyMwMDAwMSkKLS0tCiBzcmMvZGF0 YS5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEuYyBiL3NyYy9kYXRhLmMKaW5kZXggNDhkYTVjZWU0Mjku LmU1MGFkYjk0NjE5IDEwMDY0NAotLS0gYS9zcmMvZGF0YS5jCisrKyBiL3NyYy9kYXRhLmMKQEAg LTE2MzQsNDAgKzE2MzQsNDkgQEAgc2V0X2ludGVybmFsIChMaXNwX09iamVjdCBzeW1ib2wsIExp c3BfT2JqZWN0IG5ld3ZhbCwgTGlzcF9PYmplY3Qgd2hlcmUsCiAKICAgQ0hFQ0tfU1lNQk9MIChz eW1ib2wpOwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bSA9IFhTWU1CT0wgKHN5bWJvbCk7Ci0g IHN3aXRjaCAoc3ltLT51LnMudHJhcHBlZF93cml0ZSkKKyAgLyogVXBkYXRlIGZvciBhbGlhc2lu ZyBhbmQgc2FuaXRpemUgdGhlIGlucHV0IHRvIGVuc3VyZSBvbmx5IGEgYmFyZQorICAgICBzeW1i b2wgaXMgc3RvcmVkLiAgSXQgbWF5IGJlIGFjY2Vzc2VkIHdpdGggcG9zaXRpb25zIGRpc2FibGVk LgorICAgICAoZS5nLiBBIGJsdiBjb25zIGNlbGwgbWF5IGJlIGFjY2Vzc2VkIGRpcmVjdGx5Likg ICovCisgc3RhcnQ6CisgIFhTRVRTWU1CT0wgKHN5bWJvbCwgc3ltKTsKKworICBpZiAoc3ltLT51 LnMudHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfTk9XUklURSkKICAgICB7Ci0gICAgY2FzZSBTWU1C T0xfTk9XUklURToKICAgICAgIGlmIChOSUxQIChGa2V5d29yZHAgKHN5bWJvbCkpCiAgICAgICAg ICAgfHwgIUVRIChuZXd2YWwsIEZzeW1ib2xfdmFsdWUgKHN5bWJvbCkpKQogICAgICAgICB4c2ln bmFsMSAoUXNldHRpbmdfY29uc3RhbnQsIHN5bWJvbCk7CiAgICAgICBlbHNlCiAgICAgICAgIC8q IEFsbG93IHNldHRpbmcga2V5d29yZHMgdG8gdGhlaXIgb3duIHZhbHVlLiAgKi8KLSAgICAgICAg cmV0dXJuOwotCi0gICAgY2FzZSBTWU1CT0xfVFJBUFBFRF9XUklURToKLSAgICAgIC8qIFNldHRp bmcgZHVlIHRvIHRocmVhZC1zd2l0Y2hpbmcgZG9lc24ndCBjb3VudC4gICovCi0gICAgICBpZiAo YmluZGZsYWcgIT0gU0VUX0lOVEVSTkFMX1RIUkVBRF9TV0lUQ0gpCi0gICAgICAgIG5vdGlmeV92 YXJpYWJsZV93YXRjaGVycyAoc3ltYm9sLCB2b2lkZT8gUW5pbCA6IG5ld3ZhbCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYmluZGZsYWcgPT0gU0VUX0lOVEVSTkFMX0JJTkQ/ IFFsZXQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kZmxhZyA9PSBT RVRfSU5URVJOQUxfVU5CSU5EPyBRdW5sZXQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkZT8gUW1ha3VuYm91bmQgOiBRc2V0KSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB3aGVyZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1lNQk9MX1VO VFJBUFBFRF9XUklURToKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDogZW1hY3NfYWJvcnQg KCk7CisJcmV0dXJuOwogICAgIH0KIAotIHN0YXJ0OgogICBzd2l0Y2ggKHN5bS0+dS5zLnJlZGly ZWN0KQogICAgIHsKICAgICBjYXNlIFNZTUJPTF9WQVJBTElBUzogc3ltID0gU1lNQk9MX0FMSUFT IChzeW0pOyBnb3RvIHN0YXJ0OwotICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOiBTRVRfU1lNQk9M X1ZBTCAoc3ltICwgbmV3dmFsKTsgcmV0dXJuOworICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOgor ICAgICAgeworCS8qIElmIHdhdGNoZWQgbm90aWZ5LiBQbGFpbiB2YWx1ZXMgYXJlIGhhbmRsZWQg YnkgJ3VucmV3aW5kJy4KKwkgICBXZSB3aWxsIG5vdCByZWFjaCBoZXJlIGR1cmluZyB0aHJlYWQg c3dpdGNoLiAgKi8KKwlpZiAoc3ltLT51LnMudHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfVFJBUFBF RF9XUklURSkKKwkgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAoc3ltYm9sLCB2b2lkZT8gUW5p bCA6IG5ld3ZhbCwKKwkJCQkgICAgKGJpbmRmbGFnID09IFNFVF9JTlRFUk5BTF9CSU5EPyBRbGV0 IDoKKwkJCQkgICAgIGJpbmRmbGFnID09IFNFVF9JTlRFUk5BTF9VTkJJTkQ/IFF1bmxldCA6CisJ CQkJICAgICB2b2lkZT8gUW1ha3VuYm91bmQgOiBRc2V0KSwgUW5pbCk7CisJU0VUX1NZTUJPTF9W QUwgKHN5bSwgbmV3dmFsKTsKKwlyZXR1cm47CisgICAgICB9CiAgICAgY2FzZSBTWU1CT0xfTE9D QUxJWkVEOgogICAgICAgewogCXN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2ID0g U1lNQk9MX0JMViAoc3ltKTsKKworCS8qIElmIHdhdGNoZWQgbm90aWZ5IHVubGVzcyB0aHJlYWQg c3dpdGNoaW5nLiAgKi8KKwlpZiAoc3ltLT51LnMudHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfVFJB UFBFRF9XUklURQorCSAgICAmJiBiaW5kZmxhZyAhPSBTRVRfSU5URVJOQUxfVEhSRUFEX1NXSVRD SCkKKwkgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAoc3ltYm9sLCB2b2lkZT8gUW5pbCA6IG5l d3ZhbCwKKwkJCQkgICAgKGJpbmRmbGFnID09IFNFVF9JTlRFUk5BTF9CSU5EPyBRbGV0IDoKKwkJ CQkgICAgIGJpbmRmbGFnID09IFNFVF9JTlRFUk5BTF9VTkJJTkQ/IFF1bmxldCA6CisJCQkJICAg ICB2b2lkZT8gUW1ha3VuYm91bmQgOiBRc2V0KSwgd2hlcmUpOworCiAJaWYgKE5JTFAgKHdoZXJl KSkKIAkgIFhTRVRCVUZGRVIgKHdoZXJlLCBjdXJyZW50X2J1ZmZlcik7CiAKQEAgLTE2ODYsOCAr MTY5NSw2IEBAIHNldF9pbnRlcm5hbCAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBu ZXd2YWwsIExpc3BfT2JqZWN0IHdoZXJlLAogCSAgICBpZiAoYmx2LT5md2QuZndkcHRyKQogCSAg ICAgIHNldF9ibHZfdmFsdWUgKGJsdiwgZG9fc3ltdmFsX2ZvcndhcmRpbmcgKGJsdi0+ZndkKSk7 CiAKLQkgICAgLyogRmluZCB0aGUgbmV3IGJpbmRpbmcuICAqLwotCSAgICBYU0VUU1lNQk9MIChz eW1ib2wsIHN5bSk7IC8qIE1heSBoYXZlIGNoYW5nZWQgdmlhIGFsaWFzaW5nLiAgKi8KIAkgICAg TGlzcF9PYmplY3QgdGVtMQogCSAgICAgID0gYXNzcV9ub19xdWl0IChzeW1ib2wsCiAJCQkgICAg ICBCVkFSIChYQlVGRkVSICh3aGVyZSksIGxvY2FsX3Zhcl9hbGlzdCkpOwpAQCAtMTc0Niw2ICsx NzUzLDE0IEBAIHNldF9pbnRlcm5hbCAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBu ZXd2YWwsIExpc3BfT2JqZWN0IHdoZXJlLAogICAgICAgfQogICAgIGNhc2UgU1lNQk9MX0ZPUldB UkRFRDoKICAgICAgIHsKKwkvKiBJZiBsZXQgYmluZGluZyBzaGFkb3dzIGJ1ZmZlciBiaW5kaW5n IHNldF9kZWZhdWx0X2ludGVybmFsCisJICAgd2lsbCBiZSBjYWxsZWQsIGxldCBpdCBoYW5kbGUg bm90aWZpY2F0aW9uLgorCSAgIE90aGVyd2lzZSwgbWFrZSBzdXJlIG5vdGlmaWNhdGlvbiBvY2N1 cnMgcHJpb3IgdG8gc2V0dGluZworCSAgIHBlciBidWZmZXIgaW5kaWNhdG9yLiAoQ291bGQgdGhl c2UgYmUgY29tYmluZWQ/IFllcy4gV291bGQKKwkgICBpdCBjb25mdXNlIHRoZSBuZXh0IGd1eT8g WWVzLikgICovCisJYm9vbCBub3RpZnkgPSB0cnVlOworCWludCAgcGVyX2J1ZmZlcl9hZnRlciA9 IDA7CisKIAlzdHJ1Y3QgYnVmZmVyICpidWYKIAkgID0gQlVGRkVSUCAod2hlcmUpID8gWEJVRkZF UiAod2hlcmUpIDogY3VycmVudF9idWZmZXI7CiAJbGlzcGZ3ZCBpbm5lcmNvbnRlbnRzID0gU1lN Qk9MX0ZXRCAoc3ltKTsKQEAgLTE3NTcsMTIgKzE3NzIsMzEgQEAgc2V0X2ludGVybmFsIChMaXNw X09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IG5ld3ZhbCwgTGlzcF9PYmplY3Qgd2hlcmUsCiAJ ICAgICAgICAmJiAhUEVSX0JVRkZFUl9WQUxVRV9QIChidWYsIGlkeCkpCiAJICAgICAgewogCQlp ZiAobGV0X3NoYWRvd3NfYnVmZmVyX2JpbmRpbmdfcCAoc3ltKSkKLQkJICBzZXRfZGVmYXVsdF9p bnRlcm5hbCAoc3ltYm9sLCBuZXd2YWwsIGJpbmRmbGFnKTsKKwkJICB7CisJCSAgICBub3RpZnkg PSBmYWxzZTsKKwkJICAgIHNldF9kZWZhdWx0X2ludGVybmFsIChzeW1ib2wsIG5ld3ZhbCwgYmlu ZGZsYWcpOworCQkgIH0KIAkJZWxzZQotCQkgIFNFVF9QRVJfQlVGRkVSX1ZBTFVFX1AgKGJ1Ziwg aWR4LCAxKTsKKwkJICBwZXJfYnVmZmVyX2FmdGVyID0gaWR4OwogCSAgICAgIH0KIAkgIH0KIAor CS8qIElmIHdhdGNoZWQgbm90aWZ5IHVubGVzcyB0aHJlYWQgc3dpdGNoaW5nLiAgRG8gbm90IG5v dGlmeQorCSAgIGlmIHNldF9kZWZhdWx0X2ludGVybmFsIHdhcyBjYWxsZWQsIHRoYXQgcGF0aCB3 aWxsLiAgKi8KKwlpZiAoc3ltLT51LnMudHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfVFJBUFBFRF9X UklURQorCSAgICAmJiBub3RpZnkKKwkgICAgJiYgYmluZGZsYWcgIT0gU0VUX0lOVEVSTkFMX1RI UkVBRF9TV0lUQ0gpCisJICB7CisJICAgIG5vdGlmeV92YXJpYWJsZV93YXRjaGVycyAoc3ltYm9s LCB2b2lkZT8gUW5pbCA6IG5ld3ZhbCwKKwkJCQkgICAgICAoYmluZGZsYWcgPT0gU0VUX0lOVEVS TkFMX0JJTkQ/IFFsZXQgOgorCQkJCSAgICAgICBiaW5kZmxhZyA9PSBTRVRfSU5URVJOQUxfVU5C SU5EPyBRdW5sZXQgOgorCQkJCSAgICAgICB2b2lkZT8gUW1ha3VuYm91bmQgOiBRc2V0KSwgd2hl cmUpOworCSAgfQorCisJLyogU2V0IHBlciBidWZmZXIgaW5kaWNhdG9yIGFmdGVyIG5vdGlmaWNh dGlvbi4gICovCisJaWYgKHBlcl9idWZmZXJfYWZ0ZXIgPiAwKQorCSAgIFNFVF9QRVJfQlVGRkVS X1ZBTFVFX1AgKGJ1ZiwgcGVyX2J1ZmZlcl9hZnRlciwgMSk7CisKIAlpZiAodm9pZGUpCiAJICB7 IC8qIElmIHN0b3Jpbmcgdm9pZCAobWFraW5nIHRoZSBzeW1ib2wgdm9pZCksIGZvcndhcmQgb25s eSB0aHJvdWdoCiAJICAgICAgIGJ1ZmZlci1sb2NhbCBpbmRpY2F0b3IsIG5vdCB0aHJvdWdoIExp c3BfT2JqZndkLCBldGMuICAqLwotLSAKMi4zNC4xCgo= --000000000000366f490615415e6d Content-Type: application/x-patch; name="0004-Add-ert-for-variable-watchers-bug-00001.patch" Content-Disposition: attachment; filename="0004-Add-ert-for-variable-watchers-bug-00001.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lukvakfp0 RnJvbSBmNjdlYTNhMWE1MmVlZGQ0ZDc5OGUxOTM3YTY2ZjVhOTI5NTQ2MDQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUm9iZXJ0IEEuIEJ1cmtzIiA8cmJ1cmtzZGV2QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxMSBNYXIgMjAyNCAxNzozMjowNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDQvMzFdIEFkZCBlcnQgZm9yIHZhcmlhYmxlIHdhdGNoZXJzIChidWcjMDAwMDEpCgoqIHRlc3Qv c3JjL2RhdGEtdGVzdHMuZWwgKGRhdGEtdGVzdHMtd2F0Y2hlcnMtYWxpYXMtYnVnMDAwMDEpOgoo ZGF0YS10ZXN0cy13YXRjaGVycy1mb3J3YXJkLWJ1ZzAwMDAxKToKQWRkIGVydCBmb3IgdmFyaWFi bGUgd2F0Y2hlciBhbGlhcyBhbmQgZm9yd2FyZGVkIHN5bWJvbCBidWdzLiAoYnVnIzAwMDAxKQot LS0KIHRlc3Qvc3JjL2RhdGEtdGVzdHMuZWwgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv dGVzdC9zcmMvZGF0YS10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2RhdGEtdGVzdHMuZWwKaW5kZXggMDc3 OGY4MjM4YWMuLjFkMzRkZDNjNGE5IDEwMDY0NAotLS0gYS90ZXN0L3NyYy9kYXRhLXRlc3RzLmVs CisrKyBiL3Rlc3Qvc3JjL2RhdGEtdGVzdHMuZWwKQEAgLTYxMCw2ICs2MTAsMzkgQEAgZGF0YS10 ZXN0cy1nZXQtdmFyaWFibGUtd2F0Y2hlcnMtaW5wdXRzCiAgICAgKHNob3VsZC1lcnJvciAoZ2V0 LXZhcmlhYmxlLXdhdGNoZXJzIGJhcjIpKQogICAgIChzaG91bGQtZXJyb3IgKGdldC12YXJpYWJs ZS13YXRjaGVycyBiYXIzKSkpKQogCis7OyBCVUcjMDAwMDEgVGVzdCB3YXRjaGVyIHdoZW4gdXNp bmcgYHNldC1kZWZhdWx0JyB3aXRoIGFuIGFsaWFzCisoZXJ0LWRlZnRlc3QgZGF0YS10ZXN0cy13 YXRjaGVycy1hbGlhcy1idWcwMDAwMSAoKQorICAobGV0KiAoKHIxIG5pbCkKKyAgICAgICAgIChh MSAoZ2Vuc3ltKSkKKyAgICAgICAgICh2MSAoZ2Vuc3ltKSkKKyAgICAgICAgIChmMSAobGFtYmRh ICgmcmVzdCBhcmdzKSAocHVzaCBhcmdzIHIxKSkpKQorICAgIChzZXQgdjEgNSkKKyAgICAoYWRk LXZhcmlhYmxlLXdhdGNoZXIgdjEgZjEpCisgICAgKGRlZnZhcmFsaWFzIGExIHYxKQorICAgIChz ZXQtZGVmYXVsdCBhMSAxMDApCisgICAgKHNob3VsZCAoZXF1YWwgKHBvcCByMSkgYCgsdjEgMTAw IHNldCBuaWwpKSkKKyAgICAoc2hvdWxkIChudWxsICByMSkpKSkKKworOzsgQlVHIzAwMDAxCis7 OyBUZXN0IHdhdGNoZXJzIG9mIGZvcndhcmRlZCBzeW1ib2wgZm9yIGEgcGFydGljdWxhciBkb3Vi bGUgbm90aWZpY2F0aW9uCis7OyBidWcgdGhhdCBhcmlzZXMgZnJvbSBzZXRfaW50ZXJuYWwgYW5k IHNldF9kZWZhdWx0X2ludGVybmFsIGVhY2ggaGF2aW5nCis7OyBjYXNlcyBpbiB3aGljaCB0aGV5 IGNhbGwgdGhlIG90aGVyLgorOzsgYHJpZ2h0LW1hcmdpbi13aWR0aCcgaXMgYW4gZXhhbXBsZSBv ZiBhIERFRlZBUl9QRVJfQlVGRkVSIGZvcndhcmRlZAorOzsgc3ltYm9sLiAgSW4gdGhpcyBjYXNl IGl0IHNoYWRvd3MgdGhlIGRlZmF1bHQgdmFsdWUuCisoZXJ0LWRlZnRlc3QgZGF0YS10ZXN0cy13 YXRjaGVycy1mb3J3YXJkLWJ1ZzAwMDAxICgpCisgIChsZXQqICgocjEgbmlsKQorICAgICAgICAg KG8xIChkZWZhdWx0LXZhbHVlICdyaWdodC1tYXJnaW4td2lkdGgpKQorICAgICAgICAgKGYxIChs YW1iZGEgKCZyZXN0IGFyZ3MpIChwdXNoIGFyZ3MgcjEpKSkpCisgICAgKGFkZC12YXJpYWJsZS13 YXRjaGVyICdyaWdodC1tYXJnaW4td2lkdGggZjEpCisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAg ICAgIChsZXQgKChyaWdodC1tYXJnaW4td2lkdGggNTApKQorICAgICAgICAoc2V0ICdyaWdodC1t YXJnaW4td2lkdGggMjApKSkKKyAgICAoc2hvdWxkIChlcXVhbCAocG9wIHIxKSBgKHJpZ2h0LW1h cmdpbi13aWR0aCAsbzEgdW5sZXQgbmlsKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKHBvcCByMSkg JyhyaWdodC1tYXJnaW4td2lkdGggMjAgc2V0IG5pbCkpKQorICAgIChzaG91bGQgKGVxdWFsIChw b3AgcjEpICcocmlnaHQtbWFyZ2luLXdpZHRoIDUwIGxldCBuaWwpKSkKKyAgICAoc2hvdWxkIChu dWxsICByMSkpCisgICAgKHJlbW92ZS12YXJpYWJsZS13YXRjaGVyICdyaWdodC1tYXJnaW4td2lk dGggZjEpKSkKKwogKGVydC1kZWZ0ZXN0IGRhdGEtdGVzdHMta2lsbC1hbGwtbG9jYWwtdmFyaWFi bGVzICgpIDtidWcjMzA4NDYKICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAoc2V0cS1sb2NhbCBk YXRhLXRlc3RzLWZvbzEgMSkKLS0gCjIuMzQuMQoK --000000000000366f490615415e6d--