<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>20875</bug_id>
          
          <creation_ts>2008-09-15 21:53:18 -0700</creation_ts>
          <short_desc>DRT crashes on animation tests</short_desc>
          <delta_ts>2008-10-06 10:01:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91310</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-15 21:53:18 -0700</bug_when>
    <thetext>DumpRenderTree often crashes on LayoutTests/animations. We tracked this down to a test that ends up calling notifyDone() twice (change-one-anim.html).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91311</commentid>
    <comment_count>1</comment_count>
      <attachid>23458</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-15 21:54:00 -0700</bug_when>
    <thetext>Created attachment 23458
Step 1: rename layoutTestController to gLayoutTestController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91312</commentid>
    <comment_count>2</comment_count>
      <attachid>23459</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-15 21:58:01 -0700</bug_when>
    <thetext>Created attachment 23459
Step 2: bug fix.

The crash was caused by LayoutTestController::notifyDone() getting called after the LayoutTestController had been deleted, so the setting of m_waitToDump was writing to random memory.

I fixed this by having the LayoutTestController keep a pointer to the JSObjectRef that refers to it, and nulling out the privateData when the LayoutTestController is deleted. I also added a finalize function for the JSObjectRef, to clear out the JSObjectRef on the LayoutTestController.

If a test tries to call notifyDone() twice now, then DRT will spew to stdout and stderr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91332</commentid>
    <comment_count>3</comment_count>
      <attachid>23458</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-16 00:20:17 -0700</bug_when>
    <thetext>Comment on attachment 23458
Step 1: rename layoutTestController to gLayoutTestController

I&apos;m OK with this change, but I&apos;d really like to see the style guide updated at the same time if &quot;g&quot; is the new prefix for static variables.

http://webkit.org/coding/coding-style.html

Please update the style guide when landing this change, or make sure we have a style guide for this type of variable.  Right now we have no words on the subject in the guide.

Also, this needs a ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91333</commentid>
    <comment_count>4</comment_count>
      <attachid>23459</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-16 00:28:59 -0700</bug_when>
    <thetext>Comment on attachment 23459
Step 2: bug fix.

It would be relatively easy to make this crash by moving the notifyDone object onto something that wasn&apos;t the LayoutTestController and calling it.  But we don&apos;t have to make DRT robust against &quot;bad&quot; tests.

Why would you print the notifyDone() message to both STDOUT and STDERR?  Generally we just use STDERR For that.

Why do we need to null-check during finalize?

+static void layoutTestControllerObjectFinalize(JSObjectRef object)
+{
+    LayoutTestController* controller = reinterpret_cast&lt;LayoutTestController*&gt;(JSObjectGetPrivate(object));
+    if (controller)
+        controller-&gt;setJSObject(0);
+}

That seems wrong.  Cant&apos; it just ASSERT?

Equally simple would be to just have notifyDone() null out the private variable on the JSObject... since maybe notifyDone() is already destroying the LayoutTestController?

Please add a ChangeLog which explains why this change makes sense. :)  (I feel your pain re: git and ChangeLogs.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91350</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-16 07:15:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 23459 [edit])
&gt; It would be relatively easy to make this crash by moving the notifyDone object
&gt; onto something that wasn&apos;t the LayoutTestController and calling it.  But we
&gt; don&apos;t have to make DRT robust against &quot;bad&quot; tests.

Agreed, but neither do we want a &quot;naive&quot; test error to cause random memory
corruption that is very hard to identify.

&gt; Why would you print the notifyDone() message to both STDOUT and STDERR? 
&gt; Generally we just use STDERR For that.

I was following waitUntilDoneWatchdogFired(), which writes to both.

&gt; Why do we need to null-check during finalize?

This was to protect against the case where the JSObjectRef outlived the layoutTestController.

&gt; +static void layoutTestControllerObjectFinalize(JSObjectRef object)
&gt; +{
&gt; +    LayoutTestController* controller =
&gt; reinterpret_cast&lt;LayoutTestController*&gt;(JSObjectGetPrivate(object));
&gt; +    if (controller)
&gt; +        controller-&gt;setJSObject(0);
&gt; +}
&gt; 
&gt; That seems wrong.  Cant&apos; it just ASSERT?

Now that ~ LayoutTestController clears the private data of the JSObject, this is the usual code path. Note that runTest() deletes the LayoutTestController before the JSObjectRef is cleaned up (I think).

Another approach would be to make the LayoutTestController RefCounted and have the JSObjectRef hold a ref.

&gt; Equally simple would be to just have notifyDone() null out the private variable
&gt; on the JSObject... since maybe notifyDone() is already destroying the
&gt; LayoutTestController?

This would prevent tests from calling other methods on window.layoutTestController after the notifyDone, but I&apos;m not sure if they need to.

The lifetime/ownership model here is really poorly specified.

&gt; Please add a ChangeLog which explains why this change makes sense. :)  (I feel
&gt; your pain re: git and ChangeLogs.)

I will do changelogs; was waiting to see if these patches were the right approach before making them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91359</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-16 08:34:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m OK with this change, but I&apos;d really like to see the style guide updated at
&gt; the same time if &quot;g&quot; is the new prefix for static variables.

Elsewhere, WebKit code uses &quot;s_&quot; for this. I don&apos;t have a preference, really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91387</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-16 10:23:11 -0700</bug_when>
    <thetext>First patch:
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/DumpRenderTree.h
	M	WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
	M	WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
	M	WebKitTools/DumpRenderTree/mac/EditingDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/UIDelegate.mm
	M	WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
	M	WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/mac/UIDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
	M	WebKitTools/DumpRenderTree/mac/EditingDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h
	M	WebKitTools/DumpRenderTree/DumpRenderTree.h
	M	WebKitTools/ChangeLog
r36511 = f14a3a8f8d4a1cf3e0c15b1b673c533a91bda700 (trunk)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91390</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-16 10:27:49 -0700</bug_when>
    <thetext>Second patch:
Committed r36512
	M	WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
	M	WebKitTools/DumpRenderTree/LayoutTestController.cpp
	M	WebKitTools/DumpRenderTree/LayoutTestController.h
	M	WebKitTools/ChangeLog
r36512 = 5e82be48463378cb1b97abd669c82fa741f53d65 (trunk)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91392</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-09-16 10:29:36 -0700</bug_when>
    <thetext>Filed bug 20884 to fix tests now revealed to be behaving badly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94234</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-10-06 10:01:21 -0700</bug_when>
    <thetext>Note that this fix was changed in r36606</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23458</attachid>
            <date>2008-09-15 21:54:00 -0700</date>
            <delta_ts>2008-09-16 00:20:17 -0700</delta_ts>
            <desc>Step 1: rename layoutTestController to gLayoutTestController</desc>
            <filename>global_renaming.txt</filename>
            <type>text/plain</type>
            <size>41046</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCmluZGV4IGRhNjhh
ODQuLmRjYzVmN2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKIGV4dGVy
biB2b2xhdGlsZSBib29sIGRvbmU7CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgYmFkIGFic3RyYWN0
aW9uLiAgV2Ugc2hvdWxkIGluc3RlZCBwYXNzIHRoaXMgdG8gb3RoZXIgY29udHJvbGxlciBvYmpl
Y3RzIHdoaWNoIG5lZWQgYWNjZXNzIHRvIGl0LgotZXh0ZXJuIExheW91dFRlc3RDb250cm9sbGVy
KiBsYXlvdXRUZXN0Q29udHJvbGxlcjsKK2V4dGVybiBMYXlvdXRUZXN0Q29udHJvbGxlciogZ0xh
eW91dFRlc3RDb250cm9sbGVyOwogCiB2b2lkIGR1bXAoKTsKIHZvaWQgZGlzcGxheVdlYlZpZXco
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBw
b3J0Q0cuY3BwCmluZGV4IDQ2YTJiYTIuLjkwNmUyNzQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcApAQCAtOTgsMTIgKzk4
LDEyIEBAIHZvaWQgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29u
c3QgY2hhciogLypjdXJyZW50VGVzdCovLCBib29sCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gY29udGV4dCA9IGdldEJpdG1hcENvbnRleHRGcm9tV2ViVmlldygpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+dGVzdFJlcGFpbnQoKSkKLSAg
ICAgICAgcmVwYWludFdlYlZpZXcoY29udGV4dC5nZXQoKSwgbGF5b3V0VGVzdENvbnRyb2xsZXIt
PnRlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoKSk7CisgICAgaWYgKGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+dGVzdFJlcGFpbnQoKSkKKyAgICAgICAgcmVwYWludFdlYlZpZXcoY29udGV4dC5n
ZXQoKSwgZ0xheW91dFRlc3RDb250cm9sbGVyLT50ZXN0UmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5
KCkpOwogICAgIGVsc2UgCiAgICAgICAgIHBhaW50V2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAot
ICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNlbGVjdGlvblJlY3QoKSkKKyAgICBp
ZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wU2VsZWN0aW9uUmVjdCgpKQogICAgICAgICBk
cmF3U2VsZWN0aW9uUmVjdChjb250ZXh0LmdldCgpLCBnZXRTZWxlY3Rpb25SZWN0KCkpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRy
ZWUuY3BwCmluZGV4IGRkNWUyZTkuLjYyMDA1NTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgaW50IGR1bXBQaXhlbHM7CiBzdGF0aWMgaW50IGR1bXBUcmVlID0gMTsKIHN0YXRpYyBnY2hh
ciogY3VycmVudFRlc3Q7CiAKLUxheW91dFRlc3RDb250cm9sbGVyKiBsYXlvdXRUZXN0Q29udHJv
bGxlciA9IDA7CitMYXlvdXRUZXN0Q29udHJvbGxlciogZ0xheW91dFRlc3RDb250cm9sbGVyID0g
MDsKIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwogV2ViS2l0V2ViRnJhbWUqIG1haW5G
cmFtZSA9IDA7CiBXZWJLaXRXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lID0gMDsKQEAgLTExNSw3
ICsxMTUsNyBAQCBzdGF0aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lKQogICAgIH0KICAgICBnX2ZyZWUoaW5uZXJUZXh0KTsKIAotICAgIGlmIChsYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKKyAgICBpZiAoZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgewogICAgICAgICBHU0xp
c3QqIGNoaWxkcmVuID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oZnJhbWUpOwogICAg
ICAgICBmb3IgKEdTTGlzdCogY2hpbGQgPSBjaGlsZHJlbjsgY2hpbGQ7IGNoaWxkID0gZ19zbGlz
dF9uZXh0KGNoaWxkKSkKICAgICAgICAgICAgYXBwZW5kU3RyaW5nKHJlc3VsdCwgZHVtcEZyYW1l
c0FzVGV4dCgoV2ViS2l0V2ViRnJhbWUqKWNoaWxkcmVuLT5kYXRhKSk7CkBAIC0xMzksMTAgKzEz
OSwxMCBAQCB2b2lkIGR1bXAoKQogICAgIGlmIChkdW1wVHJlZSkgewogICAgICAgICBjaGFyKiBy
ZXN1bHQgPSAwOwogCi0gICAgICAgIGJvb2wgZHVtcEFzVGV4dCA9IGxheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wQXNUZXh0KCk7CisgICAgICAgIGJvb2wgZHVtcEFzVGV4dCA9IGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpOwogICAgICAgICAvLyBGSVhNRTogQWxzbyBkdW1wIHRl
eHQgcmVzdWxzIGFzIHRleHQuCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLT5zZXREdW1w
QXNUZXh0KGR1bXBBc1RleHQpOwotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBBc1RleHQoKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5zZXREdW1wQXNUZXh0
KGR1bXBBc1RleHQpOworICAgICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNU
ZXh0KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBkdW1wRnJhbWVzQXNUZXh0KG1haW5GcmFtZSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBpc1NWR1czQ1Rlc3QgPSAoZ19zdHJy
c3RyKGN1cnJlbnRUZXN0LCAic3ZnL1czQy1TVkctMS4xIikpOwpAQCAtMTU2LDExICsxNTYsMTEg
QEAgdm9pZCBkdW1wKCkKIAogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlOwotICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wQXNUZXh0KCkpCisgICAgICAgICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wQXNUZXh0KCkpCiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltkb2N1bWVu
dEVsZW1lbnQgaW5uZXJUZXh0XSI7Ci0gICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpKQorICAgICAgICAgICAgZWxzZSBpZiAoZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpCiAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gIltbbWFpbkZyYW1lIERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXSI7
Ci0gICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFz
V2ViQXJjaGl2ZSgpKQorICAgICAgICAgICAgZWxzZSBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpCiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gIltbbWFpbkZyYW1lIGRhdGFTb3VyY2VdIHdlYkFyY2hpdmVdIjsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiW21haW5GcmFtZSByZW5kZXJUcmVl
QXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uXSI7CkBAIC0xNjgsMTEgKzE2OCwxMSBAQCB2b2lkIGR1
bXAoKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnRmKCIlcyIsIHJlc3VsdCk7
CiAgICAgICAgICAgICBnX2ZyZWUocmVzdWx0KTsKLSAgICAgICAgICAgIGlmICghbGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAmJiAhbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBE
T01Bc1dlYkFyY2hpdmUoKSAmJiAhbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dl
YkFyY2hpdmUoKSkKKyAgICAgICAgICAgIGlmICghZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
QXNUZXh0KCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgp
ICYmICFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKICAg
ICAgICAgICAgICAgICBkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbihtYWluRnJhbWUpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQmFja0ZvcndhcmRM
aXN0KCkpIHsKKyAgICAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEJhY2tGb3J3
YXJkTGlzdCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbm90IGltcGxlbWVudGVkCiAgICAg
ICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgZHVtcCgpCiAgICAgfQogCiAgICAgaWYg
KGR1bXBQaXhlbHMpIHsKLSAgICAgICAgaWYgKCFsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFz
VGV4dCgpICYmICFsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpICYm
ICFsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CisgICAg
ICAgIGlmICghZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCkgJiYgIWdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpICYmICFnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBkdW1waW5nIHBpeGVscwogICAgICAgICB9CiAKQEAgLTIxNiwxMyAr
MjE2LDEzIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3QgY2hhciogcGF0aE9yVVJMKQogewog
ICAgIGdjaGFyKiB1cmwgPSBhdXRvY29ycmVjdFVSTChwYXRoT3JVUkwpOwogCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIgPSBuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGVzdFJlcGFpbnREZWZh
dWx0LCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlEZWZhdWx0KTsKKyAgICBnTGF5b3V0VGVzdENv
bnRyb2xsZXIgPSBuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGVzdFJlcGFpbnREZWZhdWx0LCBy
ZXBhaW50U3dlZXBIb3Jpem9udGFsbHlEZWZhdWx0KTsKIAogICAgIGRvbmUgPSBmYWxzZTsKICAg
ICB0b3BMb2FkaW5nRnJhbWUgPSAwOwogCiAgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVn
YXRlcyhwYXRoT3JVUkwpKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZy
YW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5z
ZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCiAgICAgZ19mcmVlKGN1cnJlbnRUZXN0
KTsKICAgICBjdXJyZW50VGVzdCA9IHVybDsKQEAgLTIzOCw4ICsyMzgsOCBAQCBzdGF0aWMgdm9p
ZCBydW5UZXN0KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAgICAvLyBBIGJsYW5rIGxvYWQgc2Vl
bXMgdG8gYmUgbmVjZXNzYXJ5IHRvIHJlc2V0IHN0YXRlIGFmdGVyIGNlcnRhaW4gdGVzdHMuCiAg
ICAgd2Via2l0X3dlYl92aWV3X29wZW4od2ViVmlldywgImFib3V0OmJsYW5rIik7CiAKLSAgICBk
ZWxldGUgbGF5b3V0VGVzdENvbnRyb2xsZXI7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIgPSAw
OworICAgIGRlbGV0ZSBnTGF5b3V0VGVzdENvbnRyb2xsZXI7CisgICAgZ0xheW91dFRlc3RDb250
cm9sbGVyID0gMDsKIH0KIAogdm9pZCB3ZWJWaWV3TG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyog
dmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCB2b2lkKikKQEAgLTI2MSw3ICsyNjEsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gcHJvY2Vzc1dvcmsodm9pZCogZGF0YSkKICAgICB9CiAKICAgICAvLyBp
ZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBuZXcgbG9hZCwgdGhlbiB3ZSBmaW5pc2hlZCBhbGwgdGhlIGNv
bW1hbmRzLCBzbyB3ZSdyZSByZWFkeSB0byBkdW1wIHN0YXRlCi0gICAgaWYgKCF0b3BMb2FkaW5n
RnJhbWUgJiYgIWxheW91dFRlc3RDb250cm9sbGVyLT53YWl0VG9EdW1wKCkpCisgICAgaWYgKCF0
b3BMb2FkaW5nRnJhbWUgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2FpdFRvRHVtcCgpKQog
ICAgICAgICBkdW1wKCk7CiAKICAgICByZXR1cm4gRkFMU0U7CkBAIC0yNzQsNyArMjc0LDcgQEAg
c3RhdGljIHZvaWQgd2ViVmlld0xvYWRGaW5pc2hlZChXZWJLaXRXZWJWaWV3KiB2aWV3LCBXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIHZvaWQKIAogICAgIHRvcExvYWRpbmdGcmFtZSA9IDA7CiAgICAg
V29ya1F1ZXVlOjpzaGFyZWQoKS0+c2V0RnJvemVuKHRydWUpOyAvLyBmaXJzdCBjb21wbGV0ZSBs
b2FkIGZyZWV6ZXMgdGhlIHF1ZXVlIGZvciB0aGUgcmVzdCBvZiB0aGlzIHRlc3QKLSAgICBpZiAo
bGF5b3V0VGVzdENvbnRyb2xsZXItPndhaXRUb0R1bXAoKSkKKyAgICBpZiAoZ0xheW91dFRlc3RD
b250cm9sbGVyLT53YWl0VG9EdW1wKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChXb3Jr
UXVldWU6OnNoYXJlZCgpLT5jb3VudCgpKQpAQCAtMjg2LDkgKzI4Niw5IEBAIHN0YXRpYyB2b2lk
IHdlYlZpZXdMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCB2b2lkCiBzdGF0aWMgdm9pZCB3ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZChXZWJL
aXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIGdwb2ludGVyIGRhdGEpCiB7CiAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIGFzc2VydChsYXlvdXRUZXN0Q29udHJv
bGxlcik7CisgICAgYXNzZXJ0KGdMYXlvdXRUZXN0Q29udHJvbGxlcik7CiAKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3dPYmplY3QsICZl
eGNlcHRpb24pOworICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChj
b250ZXh0LCB3aW5kb3dPYmplY3QsICZleGNlcHRpb24pOwogICAgIGFzc2VydCghZXhjZXB0aW9u
KTsKIH0KIApAQCAtMzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3U2NyaXB0
Q29uZmlybShXZWJLaXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsCiAKIHN0
YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdGl0bGUsIGdwb2ludGVyIGRhdGEpCiB7Ci0g
ICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVGl0bGVDaGFuZ2VzKCkgJiYgIWRvbmUp
CisgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFRpdGxlQ2hhbmdlcygpICYmICFk
b25lKQogICAgICAgICBwcmludGYoIlRJVExFIENIQU5HRUQ6ICVzXG4iLCB0aXRsZSA/IHRpdGxl
IDogIiIpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggZWM4N2U3ZC4uOGYzODY0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtODksOCArODksOCBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IGNoYXIgKnBhdGhPclVSTCk7CiAKIHZvbGF0aWxlIGJv
b2wgZG9uZTsKIAotTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyID0g
MDsKLUxheW91dFRlc3RDb250cm9sbGVyKiBsYXlvdXRUZXN0Q29udHJvbGxlciA9IDA7CitOYXZp
Z2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9sbGVyID0gMDsKK0xheW91dFRlc3RD
b250cm9sbGVyKiBnTGF5b3V0VGVzdENvbnRyb2xsZXIgPSAwOwogCiBXZWJGcmFtZSAqbWFpbkZy
YW1lID0gMDsKIC8vIFRoaXMgaXMgdGhlIHRvcG1vc3QgZnJhbWUgdGhhdCBpcyBsb2FkaW5nLCBk
dXJpbmcgYSBnaXZlbiBsb2FkLCBvciBuaWwgd2hlbiBubyBsb2FkIGlzIApAQCAtMzcxLDcgKzM3
MSw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbGxTaWduYWxIYW5kbGVycygpCiBzdGF0aWMgdm9pZCBh
bGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
bW92ZSB0aGVzZSBhbmQgbW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBbRm9vIHNoYXJlZEluc3Rh
bmNlXSBtb2RlbAotICAgIG5hdmlnYXRpb25Db250cm9sbGVyID0gW1tOYXZpZ2F0aW9uQ29udHJv
bGxlciBhbGxvY10gaW5pdF07CisgICAgZ05hdmlnYXRpb25Db250cm9sbGVyID0gW1tOYXZpZ2F0
aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF07CiAgICAgZnJhbWVMb2FkRGVsZWdhdGUgPSBbW0Zy
YW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKICAgICB1aURlbGVnYXRlID0gW1tVSURlbGVn
YXRlIGFsbG9jXSBpbml0XTsKICAgICBlZGl0aW5nRGVsZWdhdGUgPSBbW0VkaXRpbmdEZWxlZ2F0
ZSBhbGxvY10gaW5pdF07CkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJl
bGVhc2VBbmRaZXJvKE5TT2JqZWN0Kiogb2JqZWN0KQogCiBzdGF0aWMgdm9pZCByZWxlYXNlR2xv
YmFsQ29udHJvbGxlcnMoKQogewotICAgIHJlbGVhc2VBbmRaZXJvKCZuYXZpZ2F0aW9uQ29udHJv
bGxlcik7CisgICAgcmVsZWFzZUFuZFplcm8oJmdOYXZpZ2F0aW9uQ29udHJvbGxlcik7CiAgICAg
cmVsZWFzZUFuZFplcm8oJmZyYW1lTG9hZERlbGVnYXRlKTsKICAgICByZWxlYXNlQW5kWmVybygm
ZWRpdGluZ0RlbGVnYXRlKTsKICAgICByZWxlYXNlQW5kWmVybygmcmVzb3VyY2VMb2FkRGVsZWdh
dGUpOwpAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0
aW9uKFdlYkZyYW1lICpmKQogICAgICAgICBwcmludGYoInNjcm9sbGVkIHRvICUuZiwlLmZcbiIs
IHNjcm9sbFBvc2l0aW9uLngsIHNjcm9sbFBvc2l0aW9uLnkpOwogICAgIH0KIAotICAgIGlmIChs
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkgewor
ICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRp
b25zKCkpIHsKICAgICAgICAgTlNBcnJheSAqa2lkcyA9IFtmIGNoaWxkRnJhbWVzXTsKICAgICAg
ICAgaWYgKGtpZHMpCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgW2tpZHMg
Y291bnRdOyBpKyspCkBAIC02MDMsNyArNjAzLDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJh
bWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKIAogICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAi
JUBcbiIsIFtkb2N1bWVudEVsZW1lbnQgaW5uZXJUZXh0XV07CiAKLSAgICBpZiAobGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpKSB7CisgICAgaWYgKGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKICAgICAgICAgTlNBcnJh
eSAqa2lkcyA9IFtmcmFtZSBjaGlsZEZyYW1lc107CiAgICAgICAgIGlmIChraWRzKSB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgW2tpZHMgY291bnRdOyBpKyspCkBAIC04
MjgsMTEgKzgyOCwxMSBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkK
IHN0YXRpYyBjb25zdCBjaGFyICptZXRob2ROYW1lU3RyaW5nRm9yRmFpbGVkVGVzdCgpCiB7CiAg
ICAgY29uc3QgY2hhciAqZXJyb3JNZXNzYWdlOwotICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEFzVGV4dCgpKQorICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1Rl
eHQoKSkKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltkb2N1bWVudEVsZW1lbnQgaW5uZXJUZXh0
XSI7Ci0gICAgZWxzZSBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBET01Bc1dlYkFyY2hp
dmUoKSkKKyAgICBlbHNlIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBET01Bc1dlYkFy
Y2hpdmUoKSkKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltbbWFpbkZyYW1lIERPTURvY3VtZW50
XSB3ZWJBcmNoaXZlXSI7Ci0gICAgZWxzZSBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBT
b3VyY2VBc1dlYkFyY2hpdmUoKSkKKyAgICBlbHNlIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltbbWFp
bkZyYW1lIGRhdGFTb3VyY2VdIHdlYkFyY2hpdmVdIjsKICAgICBlbHNlCiAgICAgICAgIGVycm9y
TWVzc2FnZSA9ICJbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb25d
IjsKQEAgLTg2OSwxOSArODY5LDE5IEBAIHZvaWQgZHVtcCgpCiAgICAgICAgIE5TRGF0YSAqcmVz
dWx0RGF0YSA9IG5pbDsKICAgICAgICAgTlNTdHJpbmcgKnJlc3VsdE1pbWVUeXBlID0gQCJ0ZXh0
L3BsYWluIjsKIAotICAgICAgICBib29sIGR1bXBBc1RleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEFzVGV4dCgpOworICAgICAgICBib29sIGR1bXBBc1RleHQgPSBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPmR1bXBBc1RleHQoKTsKICAgICAgICAgZHVtcEFzVGV4dCB8PSBbW1ttYWluRnJh
bWUgZGF0YVNvdXJjZV0gX3Jlc3BvbnNlTUlNRVR5cGVdIGlzRXF1YWxUb1N0cmluZzpAInRleHQv
cGxhaW4iXTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXItPnNldER1bXBBc1RleHQoZHVt
cEFzVGV4dCk7Ci0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgp
KSB7CisgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEFzVGV4dChkdW1wQXNU
ZXh0KTsKKyAgICAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpKSB7
CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBkdW1wRnJhbWVzQXNUZXh0KG1haW5GcmFtZSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1BERigpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNQREYoKSkg
ewogICAgICAgICAgICAgcmVzdWx0RGF0YSA9IGR1bXBGcmFtZUFzUERGKG1haW5GcmFtZSk7CiAg
ICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vcGRmIjsKLSAgICAgICAg
fSBlbHNlIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJB
cmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5G
cmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV07CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcg
PSBzZXJpYWxpemVXZWJBcmNoaXZlVG9YTUwod2ViQXJjaGl2ZSk7CiAgICAgICAgICAgICByZXN1
bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKLSAgICAgICAgfSBlbHNl
IGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wU291cmNlQXNXZWJB
cmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5G
cmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9
IHNlcmlhbGl6ZVdlYkFyY2hpdmVUb1hNTCh3ZWJBcmNoaXZlKTsKICAgICAgICAgICAgIHJlc3Vs
dE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwpAQCAtODk4LDEwICs4OTgs
MTAgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgaWYgKHJlc3VsdERhdGEpIHsKICAgICAgICAgICAg
IGZ3cml0ZShbcmVzdWx0RGF0YSBieXRlc10sIDEsIFtyZXN1bHREYXRhIGxlbmd0aF0sIHN0ZG91
dCk7CiAKLSAgICAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQo
KSAmJiAhbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBET01Bc1dlYkFyY2hpdmUoKSAmJiAhbGF5
b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKKyAgICAgICAgICAg
IGlmICghZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCkgJiYgIWdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpICYmICFnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVT
Y3JvbGxQb3NpdGlvbihtYWluRnJhbWUpOwogCi0gICAgICAgICAgICBpZiAobGF5b3V0VGVzdENv
bnRyb2xsZXItPmR1bXBCYWNrRm9yd2FyZExpc3QoKSkKKyAgICAgICAgICAgIGlmIChnTGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBCYWNrRm9yd2FyZExpc3QoKSkKICAgICAgICAgICAgICAgICBk
dW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxsV2luZG93cygpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHByaW50ZigiRVJST1I6IG5pbCByZXN1bHQgZnJvbSAlcyIsIG1ldGhvZE5hbWVTdHJp
bmdGb3JGYWlsZWRUZXN0KCkpOwpAQCAtOTc5LDE0ICs5NzksMTQgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChjb25zdCBjaGFyICpwYXRoT3JVUkwpCiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3Rl
bnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyID0gbmV3
IExheW91dFRlc3RDb250cm9sbGVyKHRlc3RSZXBhaW50RGVmYXVsdCwgcmVwYWludFN3ZWVwSG9y
aXpvbnRhbGx5RGVmYXVsdCk7CisgICAgZ0xheW91dFRlc3RDb250cm9sbGVyID0gbmV3IExheW91
dFRlc3RDb250cm9sbGVyKHRlc3RSZXBhaW50RGVmYXVsdCwgcmVwYWludFN3ZWVwSG9yaXpvbnRh
bGx5RGVmYXVsdCk7CiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogICAgIGRvbmUgPSBOTzsK
IAogICAgIGlmIChkaXNhbGxvd2VkVVJMcykKICAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMo
ZGlzYWxsb3dlZFVSTHMpOwogICAgIGlmIChzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMocGF0
aE9yVVJMKSkKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXItPnNldER1bXBGcmFtZUxvYWRD
YWxsYmFja3ModHJ1ZSk7CisgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZy
YW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIAogICAgIGlmIChbV2ViSGlzdG9yeSBvcHRpb25hbFNo
YXJlZEhpc3RvcnldKQogICAgICAgICBbV2ViSGlzdG9yeSBzZXRPcHRpb25hbFNoYXJlZEhpc3Rv
cnk6bmlsXTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qg
Y2hhciAqcGF0aE9yVVJMKQogCiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+Y2xlYXIoKTsKIAot
ICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNv
bXBsZXRlKCkpIHsKKyAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5jbG9zZVJlbWFpbmlu
Z1dpbmRvd3NXaGVuQ29tcGxldGUoKSkgewogICAgICAgICBOU0FycmF5KiBhcnJheSA9IFtEdW1w
UmVuZGVyVHJlZVdpbmRvdyBvcGVuV2luZG93c107CiAKICAgICAgICAgdW5zaWduZWQgY291bnQg
PSBbYXJyYXkgY291bnRdOwpAQCAtMTA0OCw4ICsxMDQ4LDggQEAgc3RhdGljIHZvaWQgcnVuVGVz
dChjb25zdCBjaGFyICpwYXRoT3JVUkwpCiAgICAgQVNTRVJUKENGQXJyYXlHZXRDb3VudChvcGVu
V2luZG93c1JlZikgPT0gMSk7CiAgICAgQVNTRVJUKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgob3Bl
bldpbmRvd3NSZWYsIDApID09IFtbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10pOwogCi0gICAg
ZGVsZXRlIGxheW91dFRlc3RDb250cm9sbGVyOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyID0g
MDsKKyAgICBkZWxldGUgZ0xheW91dFRlc3RDb250cm9sbGVyOworICAgIGdMYXlvdXRUZXN0Q29u
dHJvbGxlciA9IDA7CiAKICAgICBpZiAoX3Nob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MpCiAg
ICAgICAgIFtXZWJDb3JlU3RhdGlzdGljcyBzdG9wSWdub3JpbmdXZWJDb3JlTm9kZUxlYWtzXTsK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZU1hYy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFj
LmgKaW5kZXggMmI2NDM2OS4uMDNkMzU0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKQEAgLTUxLDcgKzUxLDcgQEAgZXh0ZXJu
IENGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZy
YW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWU7CiBleHRlcm4gRHVtcFJlbmRl
clRyZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbzsKLWV4dGVybiBOYXZpZ2F0aW9uQ29udHJv
bGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXI7CitleHRlcm4gTmF2aWdhdGlvbkNvbnRyb2xsZXIq
IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGV4dGVybiBQb2xpY3lEZWxlZ2F0ZSogcG9saWN5RGVs
ZWdhdGU7CiAKIGV4dGVybiBjb25zdCB1bnNpZ25lZCBtYXhWaWV3SGVpZ2h0OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1t
CmluZGV4IDM0MGU3OWMuLmIzZmM1YTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIENGQXJyYXlDYWxsQmFja3MgTm9uUmV0YWluaW5nQXJyYXlDYWxsYmFja3MgPSB7CiAK
IC0gKEJPT0wpaXNLZXlXaW5kb3cKIHsKLSAgICByZXR1cm4gbGF5b3V0VGVzdENvbnRyb2xsZXIg
PyBsYXlvdXRUZXN0Q29udHJvbGxlci0+d2luZG93SXNLZXkoKSA6IFlFUzsKKyAgICByZXR1cm4g
Z0xheW91dFRlc3RDb250cm9sbGVyID8gZ0xheW91dFRlc3RDb250cm9sbGVyLT53aW5kb3dJc0tl
eSgpIDogWUVTOwogfQogCiAtICh2b2lkKWtleURvd246KGlkKXNlbmRlcgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0VkaXRpbmdEZWxlZ2F0ZS5tbSBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FZGl0aW5nRGVsZWdhdGUubW0KaW5kZXggYThmMDgx
NS4uY2Y0MDI2YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Vk
aXRpbmdEZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRWRp
dGluZ0RlbGVnYXRlLm1tCkBAIC03MywxNCArNzMsMTQgQEAKIAogLSAoQk9PTCl3ZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOihET01SYW5nZSAq
KXJhbmdlCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRp
dGluZ0NhbGxiYWNrcygpKQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FU
RTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTolc1xuIiwgW1tyYW5nZSBkdW1wXSBVVEY4
U3RyaW5nXSk7CiAgICAgcmV0dXJuIGFjY2VwdHNFZGl0aW5nOwogfQogCiAtIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOihET01SYW5n
ZSAqKXJhbmdlCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RWRpdGluZ0NhbGxiYWNrcygpKQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxF
R0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6JXNcbiIsIFtbcmFuZ2UgZHVtcF0gVVRG
OFN0cmluZ10pOwogICAgIHJldHVybiBhY2NlcHRzRWRpdGluZzsKIH0KQEAgLTkzLDcgKzkzLDcg
QEAKICAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKICAgICB9OwogCi0gICAg
aWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygp
KQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0
Tm9kZTolcyByZXBsYWNpbmdET01SYW5nZTolcyBnaXZlbkFjdGlvbjolc1xuIiwgW1tub2RlIGR1
bXBQYXRoXSBVVEY4U3RyaW5nXSwgW1tyYW5nZSBkdW1wXSBVVEY4U3RyaW5nXSwgaW5zZXJ0YWN0
aW9uc3RyaW5nW2FjdGlvbl0pOwogICAgIHJldHVybiBhY2NlcHRzRWRpdGluZzsKIH0KQEAgLTEw
NiwxNCArMTA2LDE0IEBACiAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCIsCiAg
ICAgfTsKIAotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVkaXRp
bmdDYWxsYmFja3MoKSkKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEluc2VydFRleHQ6JXMgcmVwbGFjaW5nRE9NUmFuZ2U6JXMgZ2l2ZW5BY3Rpb246JXNc
biIsIFtbdGV4dCBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10sIFtbcmFuZ2UgZHVtcF0gVVRGOFN0
cmluZ10sIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKICAgICByZXR1cm4gYWNjZXB0c0Vk
aXRpbmc7CiB9CiAKIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkRGVs
ZXRlRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsKLSAgICBpZiAoIWRvbmUgJiYgbGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgaWYgKCFkb25lICYm
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKICAgICAgICAg
cHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTolc1xuIiwgW1ty
YW5nZSBkdW1wXSBVVEY4U3RyaW5nXSk7CiAgICAgcmV0dXJuIGFjY2VwdHNFZGl0aW5nOwogfQpA
QCAtMTM0LDUyICsxMzQsNTIgQEAKICAgICAgICAgIlRSVUUiCiAgICAgfTsKIAotICAgIGlmICgh
ZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAg
ICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0NhbGxiYWNr
cygpKQogICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6JXMgdG9ET01SYW5nZTolcyBhZmZpbml0eTolcyBzdGlsbFNlbGVjdGluZzol
c1xuIiwgW1tjdXJyZW50UmFuZ2UgZHVtcF0gVVRGOFN0cmluZ10sIFtbcHJvcG9zZWRSYW5nZSBk
dW1wXSBVVEY4U3RyaW5nXSwgYWZmaW5pdHlzdHJpbmdbc2VsZWN0aW9uQWZmaW5pdHldLCBib29s
c3RyaW5nW2ZsYWddKTsKICAgICByZXR1cm4gYWNjZXB0c0VkaXRpbmc7CiB9CiAKIC0gKEJPT0wp
d2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkQXBwbHlTdHlsZTooRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKXN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdl
CiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0Nh
bGxiYWNrcygpKQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hv
dWxkQXBwbHlTdHlsZTolcyB0b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwgW1tzdHlsZSBkZXNj
cmlwdGlvbl0gVVRGOFN0cmluZ10sIFtbcmFuZ2UgZHVtcF0gVVRGOFN0cmluZ10pOwogICAgIHJl
dHVybiBhY2NlcHRzRWRpdGluZzsKIH0KIAogLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyBzaG91bGRDaGFuZ2VUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWN1
cnJlbnRTdHlsZSB0b1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopcHJvcG9zZWRTdHls
ZQogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVkaXRpbmdD
YWxsYmFja3MoKSkKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVR5cGluZ1N0eWxlOiVzIHRvU3R5bGU6JXNcbiIsIFtbY3VycmVudFN0eWxlIGRl
c2NyaXB0aW9uXSBVVEY4U3RyaW5nXSwgW1twcm9wb3NlZFN0eWxlIGRlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7CiAgICAgcmV0dXJuIGFjY2VwdHNFZGl0aW5nOwogfQogCiAtICh2b2lkKXdlYlZp
ZXdEaWRCZWdpbkVkaXRpbmc6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAg
aWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygp
KQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJl
Z2luRWRpdGluZzolc1xuIiwgW1tub3RpZmljYXRpb24gbmFtZV0gVVRGOFN0cmluZ10pOwogfQog
CiAtICh2b2lkKXdlYlZpZXdEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0Nh
bGxiYWNrcygpKQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTolc1xuIiwgW1tub3RpZmljYXRpb24gbmFtZV0gVVRGOFN0cmluZ10pOwog
fQogCiAtICh2b2lkKXdlYlZpZXdEaWRFbmRFZGl0aW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVk
aXRpbmdDYWxsYmFja3MoKSkKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOiVzXG4iLCBbW25vdGlmaWNhdGlvbiBuYW1lXSBVVEY4
U3RyaW5nXSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICBpZiAoIWRvbmUgJiYgZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpKQogICAgICAgICBwcmlu
dGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZTolc1xuIiwg
W1tub3RpZmljYXRpb24gbmFtZV0gVVRGOFN0cmluZ10pOwogfQogCiAtICh2b2lkKXdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAg
aWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygp
KQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjolc1xuIiwgW1tub3RpZmljYXRpb24gbmFtZV0gVVRGOFN0cmluZ10pOwog
fQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2Fk
RGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVs
ZWdhdGUubW0KaW5kZXggY2Y3OGNhMi4uM2Q3ZjhiNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMTIwLDcgKzEyMCw3
IEBACiAgICAgfQogCiAgICAgLy8gaWYgd2UgZGlkbid0IHN0YXJ0IGEgbmV3IGxvYWQsIHRoZW4g
d2UgZmluaXNoZWQgYWxsIHRoZSBjb21tYW5kcywgc28gd2UncmUgcmVhZHkgdG8gZHVtcCBzdGF0
ZQotICAgIGlmICghdG9wTG9hZGluZ0ZyYW1lICYmICFsYXlvdXRUZXN0Q29udHJvbGxlci0+d2Fp
dFRvRHVtcCgpKQorICAgIGlmICghdG9wTG9hZGluZ0ZyYW1lICYmICFnTGF5b3V0VGVzdENvbnRy
b2xsZXItPndhaXRUb0R1bXAoKSkKICAgICAgICAgZHVtcCgpOwogfQogCkBAIC0xMjksNyArMTI5
LDcgQEAKICAgICBpZiAoW2RhdGFTb3VyY2Ugd2ViRnJhbWVdID09IHRvcExvYWRpbmdGcmFtZSkg
ewogICAgICAgICB0b3BMb2FkaW5nRnJhbWUgPSBuaWw7CiAgICAgICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPnNldEZyb3plbih0cnVlKTsgLy8gZmlyc3QgY29tcGxldGUgbG9hZCBmcmVlemVzIHRo
ZSBxdWV1ZSBmb3IgdGhlIHJlc3Qgb2YgdGhpcyB0ZXN0Ci0gICAgICAgIGlmICghbGF5b3V0VGVz
dENvbnRyb2xsZXItPndhaXRUb0R1bXAoKSkgeworICAgICAgICBpZiAoIWdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+d2FpdFRvRHVtcCgpKSB7CiAgICAgICAgICAgICBpZiAoV29ya1F1ZXVlOjpzaGFy
ZWQoKS0+Y291bnQoKSkKICAgICAgICAgICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKHByb2Nlc3NXb3JrOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowXTsKICAgICAg
ICAgICAgIGVsc2UKQEAgLTE0MCw3ICsxNDAsNyBAQAogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilm
cmFtZQogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpKSB7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9
CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICBpZiAoIXRvcExvYWRpbmdGcmFtZSAmJiAhZG9uZSkK
ICAgICAgICAgdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7CiAKLSAgICBpZiAoIWRvbmUgJiYgbGF5
b3V0VGVzdENvbnRyb2xsZXItPnN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMoKSkgeworICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPnN0b3BQcm92aXNpb25hbEZyYW1lTG9h
ZHMoKSkgewogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQCAtIHN0b3BwaW5nIGxvYWQgaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSBjYWxsYmFjayIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAg
ICAgICAgW2ZyYW1lIHN0b3BMb2FkaW5nXTsKQEAgLTE2MCw3ICsxNjAsNyBAQAogCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250
cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnN0
cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRDb21taXRMb2FkRm9y
RnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwog
ICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpAQCAt
MTY4LDcgKzE2OCw3IEBACiAgICAgQVNTRVJUKCFbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNl
XSk7CiAgICAgQVNTRVJUKFtmcmFtZSBkYXRhU291cmNlXSk7CiAgICAgCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXItPnNldFdpbmRvd0lzS2V5KHRydWUpOworICAgIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+c2V0V2luZG93SXNLZXkodHJ1ZSk7CiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBb
W21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOmRvY3VtZW50Vmlld107CiAgICAgaWYg
KFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKQEAgLTE3
Nyw3ICsxNzcsNyBAQAogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIGZvckZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNTdHJpbmcg
KnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10p
OwogICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQAogICAgIEFTU0VSVChbZnJhbWUgZGF0YVNvdXJj
ZV0pOwogICAgIEFTU0VSVChmcmFtZSA9PSBbW2ZyYW1lIGRhdGFTb3VyY2VdIHdlYkZyYW1lXSk7
CiAgICAgCi0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUi
LCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAg
ICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpAQCAtMjA5LDEy
ICsyMDksMTIgQEAKICAgICBpZiAoW1tzZW5kZXIgbWFpbkZyYW1lXSBpc0VxdWFsOmZyYW1lXSkK
ICAgICAgICAgW3NlbmRlciBkaXNwbGF5SWZOZWVkZWRdOwogICAgIFtzZWxmIHdlYlZpZXc6c2Vu
ZGVyIGxvY2F0aW9uQ2hhbmdlRG9uZTpuaWwgZm9yRGF0YVNvdXJjZTpbZnJhbWUgZGF0YVNvdXJj
ZV1dOwotICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB3ZWJWaWV3OnNlbmRlciBkaWRGaW5pc2hM
b2FkRm9yRnJhbWU6ZnJhbWVdOworICAgIFtnTmF2aWdhdGlvbkNvbnRyb2xsZXIgd2ViVmlldzpz
ZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOmZyYW1lXTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaWxMb2FkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3Ig
Zm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUg
JiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAg
LSBkaWRGYWlsTG9hZFdpdGhFcnJvciIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKICAgICB9CkBAIC0yMjcsNyArMjI3LDcgQEAKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyB3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGU6KFdlYlNjcmlwdE9iamVj
dCAqKXdpbmRvd1NjcmlwdE9iamVjdDsKIHsKLSAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENv
bnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgIGlmICghZG9uZSAmJiBn
TGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAg
ICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI/PyAtIHdp
bmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSJdOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0
cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpAQCAtMjQ1LDggKzI0NSw4IEBACiAgICAgSlNPYmpl
Y3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOwog
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKIAotICAgIEFTU0VSVChsYXlvdXRUZXN0Q29u
dHJvbGxlcik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QoY29u
dGV4dCwgZ2xvYmFsT2JqZWN0LCAmZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoZ0xheW91dFRlc3RD
b250cm9sbGVyKTsKKyAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3Qo
Y29udGV4dCwgZ2xvYmFsT2JqZWN0LCAmZXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWV4Y2VwdGlv
bik7CiAKICAgICBnY0NvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgZ2xvYmFs
T2JqZWN0LCAmZXhjZXB0aW9uKTsKQEAgLTI3Miw3ICsyNzIsNyBAQAogICAgIFtvYmogc2V0VmFs
dWU6b2NjIGZvcktleTpAIm9iakNDb250cm9sbGVyIl07CiAgICAgW29jYyByZWxlYXNlXTsKIAot
ICAgIFtvYmogc2V0VmFsdWU6bmF2aWdhdGlvbkNvbnRyb2xsZXIgZm9yS2V5OkAibmF2aWdhdGlv
bkNvbnRyb2xsZXIiXTsKKyAgICBbb2JqIHNldFZhbHVlOmdOYXZpZ2F0aW9uQ29udHJvbGxlciBm
b3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxlciJdOwogICAgIAogICAgIE9iakNQbHVnaW4gKnBs
dWdpbiA9IFtbT2JqQ1BsdWdpbiBhbGxvY10gaW5pdF07CiAgICAgW29iaiBzZXRWYWx1ZTpwbHVn
aW4gZm9yS2V5OkAib2JqQ1BsdWdpbiJdOwpAQCAtMjg1LDE4ICsyODUsMTggQEAKIAogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFJlY2VpdmVUaXRsZTooTlNTdHJpbmcgKil0
aXRsZSBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewotICAgIGlmICghZG9uZSAmJiBsYXlv
dXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgaWYgKCFk
b25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7
CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAIC0gZGlkUmVjZWl2ZVRpdGxlOiAlQCIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0XSwgdGl0bGVdOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmlu
ZyBVVEY4U3RyaW5nXSk7CiAgICAgfQogICAgIAotICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcFRpdGxlQ2hhbmdlcygpKQorICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBUaXRsZUNoYW5nZXMoKSkKICAgICAgICAgcHJpbnRmKCJUSVRMRSBDSEFOR0VEOiAlc1xuIiwg
W3RpdGxlIFVURjhTdHJpbmddKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNTdHJp
bmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4i
LCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAKIAogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUg
JiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAg
LSBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBb
c3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0zMTIsNyArMzEyLDcgQEAKIAogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6KE5T
RGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKLSAgICBpZiAoIWRvbmUg
JiYgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkgewogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQCAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1l
IF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtz
dHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KQEAgLTMyMCw3ICszMjAsNyBAQAogCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZQogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgaWYgKCFkb25lICYmIGdMYXlv
dXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIE5T
U3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhT
dHJpbmddKTsKICAgICB9CkBAIC0zMjgsNyArMzI4LDcgQEAKIAogLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lOwogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAg
fSBlbHNlIGlmICghZG9uZSkgewpAQCAtMzQyLDcgKzM0Miw3IEBACiAKIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTooV2ViRnJh
bWUgKilmcmFtZTsKIHsKLSAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAgICBOU1N0cmluZyAq
c3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA4OWI4YTYxLi4zYzJkZWMxIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBA
IC0xMDgsNyArMTA4LDcgQEAKIHsKICAgICBBU1NFUlQoW1tkYXRhU291cmNlIHdlYkZyYW1lXSBk
YXRhU291cmNlXSB8fCBbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIHByb3Zpc2lvbmFsRGF0YVNvdXJj
ZV0pOwogICAgIAotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpKQorICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJuIFtbcmVx
dWVzdCBVUkxdIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdOwogICAgIAog
ICAgIHJldHVybiBAIjx1bmtub3duPiI7CkBAIC0xMTYsNyArMTE2LDcgQEAKIAogLShOU1VSTFJl
cXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNl
bmRSZXF1ZXN0OiAoTlNVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihO
U1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNv
dXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgeworICAgIGlmICghZG9uZSAmJiBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAg
ICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdp
bGxTZW5kUmVxdWVzdCAlQCByZWRpcmVjdFJlc3BvbnNlICVAIiwgaWRlbnRpZmllciwgW25ld1Jl
cXVlc3QgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sCiAgICAgICAgICAg
ICBbcmVkaXJlY3RSZXNwb25zZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
XV07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwpAQCAtMTQ5
LDcgKzE0OSw3IEBACiAKIC0odm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlk
ZW50aWZpZXIgZGlkUmVjZWl2ZVJlc3BvbnNlOiAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGZy
b21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewotICAgIGlmICghZG9u
ZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7
CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVAIiwgaWRlbnRpZmllciwg
W3Jlc3BvbnNlIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAg
ICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0gICAgCkBAIC0x
NjEsNyArMTYxLDcgQEAKIAogLSh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6
aWRlbnRpZmllciBkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2Ug
KilkYXRhU291cmNlCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgTlNT
dHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRGaW5p
c2hMb2FkaW5nIiwgaWRlbnRpZmllcl07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5n
IFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0xNjksNyArMTY5LDcgQEAKIAogLSh2b2lkKXdlYlZp
ZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0
YVNvdXJjZQogewotICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5n
ICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkRmFpbExvYWRp
bmdXaXRoRXJyb3I6ICVAIiwgaWRlbnRpZmllciwgW2Vycm9yIF9kcnRfZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRG
OFN0cmluZ10pOwogICAgIH0KQEAgLTE4NCw3ICsxODQsNyBAQAogCiAtKE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKikgd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciB3
aWxsQ2FjaGVSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGZyb21EYXRh
U291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewotICAgIGlmICghZG9uZSAmJiBs
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKSB7CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAIC0gd2lsbENhY2hlUmVzcG9uc2U6IGNhbGxlZCIsIGlkZW50aWZpZXJdOwog
ICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQppbmRleCA3OGRjMmRi
Li4wYzVhOTNjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQpAQCAtOTUsNyArOTUsNyBAQCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dp
bmdJbmZvID0gbmlsOwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdJbWFn
ZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3CiB7CiAgICAgIGFzc2VydCghZHJhZ2dpbmdJ
bmZvKTsKLSAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5hZGRGaWxlVG9QYXN0ZWJvYXJk
T25EcmFnKCkpIHsKKyAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+YWRkRmlsZVRvUGFz
dGVib2FyZE9uRHJhZygpKSB7CiAgICAgICAgICBbcGJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogICAg
ICAgICAgW3Bib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OkAi
RFJURmFrZUZpbGUiXSBmb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07CiAgICAgIH0KQEAg
LTEwNSwyMSArMTA1LDIxIEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0lu
Zm8gPSBuaWw7CiAKIC0gKHZvaWQpd2ViVmlld0ZvY3VzOihXZWJWaWV3ICopd2ViVmlldwogewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLT5zZXRXaW5kb3dJc0tleSh0cnVlKTsKKyAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPnNldFdpbmRvd0lzS2V5KHRydWUpOwogfQogCiAtICh2b2lkKXdl
YlZpZXdVbmZvY3VzOihXZWJWaWV3ICopd2ViVmlldwogewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLT5zZXRXaW5kb3dJc0tleShmYWxzZSk7CisgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5z
ZXRXaW5kb3dJc0tleShmYWxzZSk7CiB9CiAKIC0gKFdlYlZpZXcgKil3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dAogewotICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbk9wZW5XaW5kb3dzKCkpCisg
ICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbk9wZW5XaW5kb3dzKCkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2FpdFVudGlsRG9uZSBo
YXMgYmVlbiBjYWxsZWQuCi0gICAgQVNTRVJUKGxheW91dFRlc3RDb250cm9sbGVyLT53YWl0VG9E
dW1wKCkpOworICAgIEFTU0VSVChnTGF5b3V0VGVzdENvbnRyb2xsZXItPndhaXRUb0R1bXAoKSk7
CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRv
dygpOwogICAgIApAQCAtMTMwLDcgKzEzMCw3IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZv
ICpkcmFnZ2luZ0luZm8gPSBuaWw7CiB7CiAgICAgTlNXaW5kb3cqIHdpbmRvdyA9IFtzZW5kZXIg
d2luZG93XTsKICAKLSAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmNhbGxDbG9zZU9uV2Vi
Vmlld3MoKSkKKyAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5jYWxsQ2xvc2VPbldlYlZp
ZXdzKCkpCiAgICAgICAgIFtzZW5kZXIgY2xvc2VdOwogICAgIAogICAgIFt3aW5kb3cgY2xvc2Vd
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2lu
Z0luZm8gPSBuaWw7CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBmcmFtZToo
V2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjoo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJ
ZGVudGlmaWVyCiB7Ci0gICAgaWYgKCFkb25lICYmIGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RGF0YWJhc2VDYWxsYmFja3MoKSkKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FU
RSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmln
aW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdpbiBwcm90b2NvbF0gVVRGOFN0
cmluZ10sIFtbb3JpZ2luIGhvc3RdIFVURjhTdHJpbmddLCAKICAgICAgICAgICAgIFtvcmlnaW4g
cG9ydF0sIFtkYXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10pOwogCkBAIC0xNDgsNyArMTQ4
LDcgQEAgRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbyA9IG5pbDsKIAog
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNldFN0YXR1c1RleHQ6KE5TU3RyaW5n
ICopdGV4dAogewotICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFN0YXR1c0NhbGxi
YWNrcygpKQorICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTdGF0dXNDYWxsYmFj
a3MoKSkKICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0
YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVURjhTdHJpbmddKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggOTM5MmVjYi4u
ZjI2YWQyMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBS
ZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIENPTVB0cjxSZXNvdXJjZUxvYWREZWxlZ2F0
ZT4gc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGU7CiBJV2ViRnJhbWUqIGZyYW1lOwogSFdORCB3
ZWJWaWV3V2luZG93OwogCi1MYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xs
ZXIgPSAwOworTGF5b3V0VGVzdENvbnRyb2xsZXIqIGdMYXlvdXRUZXN0Q29udHJvbGxlciA9IDA7
CiBDRlJ1bkxvb3BUaW1lclJlZiB3YWl0VG9EdW1wV2F0Y2hkb2cgPSAwOyAKIAogY29uc3QgdW5z
aWduZWQgbWF4Vmlld1dpZHRoID0gODAwOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgZHVtcEZy
YW1lU2Nyb2xsUG9zaXRpb24oSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAgcHJpbnRmKCJzY3Jv
bGxlZCB0byAlLmYsJS5mXG4iLCAoZG91YmxlKXNjcm9sbFBvc2l0aW9uLmN4LCAoZG91YmxlKXNj
cm9sbFBvc2l0aW9uLmN5KTsKICAgICB9CiAKLSAgICBpZiAoOjpsYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkgeworICAgIGlmICg6OmdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkgewogICAgICAg
ICBDT01QdHI8SUVudW1WQVJJQU5UPiBlbnVtS2lkczsKICAgICAgICAgaWYgKEZBSUxFRChmcmFt
ZS0+Y2hpbGRGcmFtZXMoJmVudW1LaWRzKSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDMs
NyArMzQzLDcgQEAgc3RhdGljIHdzdHJpbmcgZHVtcEZyYW1lc0FzVGV4dChJV2ViRnJhbWUqIGZy
YW1lKQogCiAgICAgU3lzRnJlZVN0cmluZyhpbm5lclRleHQpOwogCi0gICAgaWYgKDo6bGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpKSB7CisgICAgaWYgKDo6Z0xh
eW91dFRlc3RDb250cm9sbGVyLT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgewogICAgICAgICBD
T01QdHI8SUVudW1WQVJJQU5UPiBlbnVtS2lkczsKICAgICAgICAgaWYgKEZBSUxFRChmcmFtZS0+
Y2hpbGRGcmFtZXMoJmVudW1LaWRzKSkpCiAgICAgICAgICAgICByZXR1cm4gTCIiOwpAQCAtNTQ2
LDcgKzU0Niw3IEBAIHZvaWQgZHVtcCgpCiAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YVNvdXJj
ZS0+cmVzcG9uc2UoJnJlc3BvbnNlKSkgJiYgcmVzcG9uc2UpIHsKICAgICAgICAgICAgIEJTVFIg
bWltZVR5cGU7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3BvbnNlLT5NSU1FVHlwZSgm
bWltZVR5cGUpKSkKLSAgICAgICAgICAgICAgICA6OmxheW91dFRlc3RDb250cm9sbGVyLT5zZXRE
dW1wQXNUZXh0KDo6bGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSB8ICFfdGNzY21w
KG1pbWVUeXBlLCBURVhUKCJ0ZXh0L3BsYWluIikpKTsKKyAgICAgICAgICAgICAgICA6OmdMYXlv
dXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEFzVGV4dCg6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+
ZHVtcEFzVGV4dCgpIHwgIV90Y3NjbXAobWltZVR5cGUsIFRFWFQoInRleHQvcGxhaW4iKSkpOwog
ICAgICAgICAgICAgU3lzRnJlZVN0cmluZyhtaW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC01NTQsNyArNTU0LDcgQEAgdm9pZCBkdW1wKCkKICAgICBCU1RSIHJlc3VsdFN0cmluZyA9IDA7
CiAKICAgICBpZiAoZHVtcFRyZWUpIHsKLSAgICAgICAgaWYgKDo6bGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBBc1RleHQoKSkgeworICAgICAgICBpZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBBc1RleHQoKSkgewogICAgICAgICAgICAgOjpJbnZhbGlkYXRlUmVjdCh3ZWJWaWV3V2lu
ZG93LCAwLCBUUlVFKTsKICAgICAgICAgICAgIDo6U2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywg
V01fUEFJTlQsIDAsIDApOwogICAgICAgICAgICAgd3N0cmluZyByZXN1bHQgPSBkdW1wRnJhbWVz
QXNUZXh0KGZyYW1lKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIGR1bXAoKQogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoIXJlc3VsdFN0cmluZykKLSAgICAgICAgICAgIHByaW50
ZigiRVJST1I6IG5pbCByZXN1bHQgZnJvbSAlcyIsIDo6bGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBBc1RleHQoKSA/ICJJRE9NRWxlbWVudDo6aW5uZXJUZXh0IiA6ICJJRnJhbWVWaWV3UHJpdmF0
ZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbiIpOworICAgICAgICAgICAgcHJp
bnRmKCJFUlJPUjogbmlsIHJlc3VsdCBmcm9tICVzIiwgOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBBc1RleHQoKSA/ICJJRE9NRWxlbWVudDo6aW5uZXJUZXh0IiA6ICJJRnJhbWVWaWV3UHJp
dmF0ZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbiIpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFN5c1N0cmluZ0xlbihyZXN1
bHRTdHJpbmcpOwogICAgICAgICAgICAgaW50IGJ1ZmZlclNpemUgPSA6OldpZGVDaGFyVG9NdWx0
aUJ5dGUoQ1BfVVRGOCwgMCwgcmVzdWx0U3RyaW5nLCBzdHJpbmdMZW5ndGgsIDAsIDAsIDAsIDAp
OwpAQCAtNTkwLDEwICs1OTAsMTAgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIDo6V2lkZUNo
YXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCByZXN1bHRTdHJpbmcsIHN0cmluZ0xlbmd0aCwgYnVm
ZmVyLCBidWZmZXJTaXplICsgMSwgMCwgMCk7CiAgICAgICAgICAgICBmd3JpdGUoYnVmZmVyLCAx
LCBidWZmZXJTaXplLCBzdGRvdXQpOwogICAgICAgICAgICAgZnJlZShidWZmZXIpOwotICAgICAg
ICAgICAgaWYgKCE6OmxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCkpCisgICAgICAg
ICAgICBpZiAoITo6Z0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCkpCiAgICAgICAg
ICAgICAgICAgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oZnJhbWUpOwogICAgICAgICB9Ci0gICAg
ICAgIGlmICg6OmxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQmFja0ZvcndhcmRMaXN0KCkpCisg
ICAgICAgIGlmICg6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEJhY2tGb3J3YXJkTGlzdCgp
KQogICAgICAgICAgICAgZHVtcEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKTsKICAgICB9
CiAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIGR1bXAoKQogICAgIH0KIAogICAgIGlmIChkdW1w
UGl4ZWxzKSB7Ci0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgp
IHx8IGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkgfHwgbGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKKyAgICAgICAgaWYgKGdM
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpIHx8IGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpIHx8IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNv
dXJjZUFzV2ViQXJjaGl2ZSgpKQogICAgICAgICAgICAgcHJpbnRmKCIjRU9GXG4iKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhw
ZWN0ZWQoY3VycmVudFRlc3QsIGR1bXBBbGxQaXhlbHMpOwpAQCAtNjk0LDEyICs2OTQsMTIgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiAKICAgICBjdXJyZW50
VGVzdCA9IHBhdGhPclVSTDsKIAotICAgIDo6bGF5b3V0VGVzdENvbnRyb2xsZXIgPSBuZXcgTGF5
b3V0VGVzdENvbnRyb2xsZXIoZmFsc2UsIGZhbHNlKTsKKyAgICA6OmdMYXlvdXRUZXN0Q29udHJv
bGxlciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcihmYWxzZSwgZmFsc2UpOwogICAgIGRvbmUg
PSBmYWxzZTsKICAgICB0b3BMb2FkaW5nRnJhbWUgPSAwOwogCiAgICAgaWYgKHNob3VsZExvZ0Zy
YW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwpKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKKyAgICAgICAgZ0xheW91dFRlc3RD
b250cm9sbGVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCiAgICAgQ09NUHRy
PElXZWJIaXN0b3J5PiBoaXN0b3J5KENyZWF0ZSwgQ0xTSURfV2ViSGlzdG9yeSk7CiAgICAgaWYg
KGhpc3RvcnkpCkBAIC03NDUsNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBj
aGFyKiBwYXRoT3JVUkwpCiAKICAgICBmcmFtZS0+c3RvcExvYWRpbmcoKTsKIAotICAgIGlmICg6
OmxheW91dFRlc3RDb250cm9sbGVyLT5jbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUo
KSkgeworICAgIGlmICg6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VSZW1haW5pbmdXaW5k
b3dzV2hlbkNvbXBsZXRlKCkpIHsKICAgICAgICAgVmVjdG9yPEhXTkQ+IHdpbmRvd3MgPSBvcGVu
V2luZG93cygpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gd2luZG93cy5zaXplKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKQEAgLTc2MSw3ICs3NjEs
NyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIAogZXhpdDoK
ICAgICBTeXNGcmVlU3RyaW5nKHVybEJTdHIpOwotICAgIGRlbGV0ZSA6OmxheW91dFRlc3RDb250
cm9sbGVyOworICAgIGRlbGV0ZSA6OmdMYXlvdXRUZXN0Q29udHJvbGxlcjsKIAogICAgIHJldHVy
bjsKIH0K
</data>
<flag name="review"
          id="10476"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23459</attachid>
            <date>2008-09-15 21:58:01 -0700</date>
            <delta_ts>2008-09-16 00:28:59 -0700</delta_ts>
            <desc>Step 2: bug fix.</desc>
            <filename>bug_fix.txt</filename>
            <type>text/plain</type>
            <size>4385</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAppbmRleCA4YTJiNjg0Li4yOTY5YWUyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01OSw2ICs1OSw3IEBAIExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihib29sIHRlc3RSZXBhaW50
RGVmYXVsdCwgYm9vbCB0ZXN0UmVwCiAgICAgLCBtX3dhaXRUb0R1bXAoZmFsc2UpCiAgICAgLCBt
X3dpbmRvd0lzS2V5KHRydWUpCiAgICAgLCBtX2dsb2JhbEZsYWcoZmFsc2UpCisgICAgLCBtX3Nl
bGZKU09iamVjdCgwKQogewogfQogCkBAIC0zMzcsOCArMzM4LDEzIEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIG5vdGlmeURvbmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sCiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KICAgICAv
LyBNYXkgYmUgYWJsZSB0byBiZSBtYWRlIHBsYXRmb3JtIGluZGVwZW5kYW50IGJ5IHVzaW5nIHNo
YXJlZCBXb3JrUXVldWUKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPm5vdGlmeURvbmUoKTsKLQorICAgIGlmIChj
b250cm9sbGVyKQorICAgICAgICBjb250cm9sbGVyLT5ub3RpZnlEb25lKCk7CisgICAgZWxzZSB7
CisgICAgICAgIGNvbnN0IGNoYXIqIG1zZyA9ICJGQUlMOiBOdWxsIGxheW91dFRlc3RDb250cm9s
bGVyIGluIG5vdGlmeURvbmUoKS4gRGlkIGEgdGVzdCBjYWxsIG5vdGlmeURvbmUoKSB0d2ljZT9c
biI7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCBtc2cpOworICAgICAgICBmcHJpbnRmKHN0ZG91
dCwgbXNnKTsKKyAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogfQogCkBAIC02NDAsMTMgKzY0NiwyMCBAQCBzdGF0aWMgYm9vbCBzZXRHbG9iYWxGbGFnQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0
RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKyAgICBpZiAoY29udHJvbGxlcikKKyAgICAgICAg
Y29udHJvbGxlci0+c2V0SlNPYmplY3QoMCk7Cit9CisKIC8vIE9iamVjdCBDcmVhdGlvbgogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjptYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGF5b3V0VGVzdENvbnRvbGxlclN0cihB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVy
IikpOwotICAgIEpTVmFsdWVSZWYgbGF5b3V0VGVzdENvbnRvbGxlck9iamVjdCA9IEpTT2JqZWN0
TWFrZShjb250ZXh0LCBnZXRKU0NsYXNzKCksIHRoaXMpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHkoY29udGV4dCwgd2luZG93T2JqZWN0LCBsYXlvdXRUZXN0Q29udG9sbGVyU3RyLmdldCgpLCBs
YXlvdXRUZXN0Q29udG9sbGVyT2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCBleGNlcHRpb24pOworICAgIHNldEpTT2Jq
ZWN0KEpTT2JqZWN0TWFrZShjb250ZXh0LCBnZXRKU0NsYXNzKCksIHRoaXMpKTsKKyAgICBKU09i
amVjdFNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgbGF5b3V0VGVzdENvbnRvbGxl
clN0ci5nZXQoKSwganNPYmplY3QoKSwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgZXhjZXB0aW9uKTsKIH0KIAogSlNDbGFzc1Jl
ZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2V0SlNDbGFzcygpCkBAIC02NTgsNyArNjcxLDcgQEAg
SlNDbGFzc1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2V0SlNDbGFzcygpCiAgICAgICAgIEpT
U3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9ucyA9IExheW91dFRlc3RDb250cm9sbGVyOjpz
dGF0aWNGdW5jdGlvbnMoKTsKICAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0
aW9uID0gewogICAgICAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiTGF5b3V0VGVz
dENvbnRyb2xsZXIiLCAwLCBzdGF0aWNWYWx1ZXMsIHN0YXRpY0Z1bmN0aW9ucywKLSAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKKyAgICAgICAgICAgIDAsIGxheW91
dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAK
ICAgICAgICAgfTsKIAogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlckNsYXNzID0gSlNDbGFz
c0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGViNDZjM2QuLmY2NGQ5ZjcgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtMTQzLDYgKzE0Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGdsb2JhbEZsYWcoKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KICAgICB2b2lkIHNldEdsb2JhbEZsYWcoYm9vbCBnbG9i
YWxGbGFnKSB7IG1fZ2xvYmFsRmxhZyA9IGdsb2JhbEZsYWc7IH0KICAgICAKKyAgICBKU09iamVj
dFJlZiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZkpTT2JqZWN0OyB9CisgICAgdm9p
ZCBzZXRKU09iamVjdChKU09iamVjdFJlZiBvYmopIHsgbV9zZWxmSlNPYmplY3QgPSBvYmo7IH0K
KyAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBBc1RleHQ7CiAgICAgYm9vbCBtX2R1bXBB
c1BERjsKQEAgLTE3MCw2ICsxNzMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2dsb2JhbEZs
YWc7CiAKKyAgICBKU09iamVjdFJlZiBtX3NlbGZKU09iamVjdDsKKyAgICAKICAgICBzdGF0aWMg
SlNDbGFzc1JlZiBnZXRKU0NsYXNzKCk7CiAgICAgc3RhdGljIEpTU3RhdGljVmFsdWUqIHN0YXRp
Y1ZhbHVlcygpOwogICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbnMo
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCAzYTQ3YWViLi5kZWE0NDYzIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCkBAIC01MCwxMCArNTAsMTUgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJTZWN1cml0eU9y
aWdpblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIExheW91dFRlc3RDb250cm9sbGVyOjp+TGF5b3V0VGVzdENv
bnRyb2xsZXIoKQogeworICAgIGlmIChtX3NlbGZKU09iamVjdCkgeworICAgICAgICBBU1NFUlQo
SlNPYmplY3RHZXRQcml2YXRlKG1fc2VsZkpTT2JqZWN0KSA9PSB0aGlzKTsKKyAgICAgICAgSlNP
YmplY3RTZXRQcml2YXRlKG1fc2VsZkpTT2JqZWN0LCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQo=
</data>
<flag name="review"
          id="10477"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>