<?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>136651</bug_id>
          
          <creation_ts>2014-09-08 17:41:10 -0700</creation_ts>
          <short_desc>Ensure that layout is up-to-date before hit-testing via RenderView</short_desc>
          <delta_ts>2014-09-22 21:39:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034008</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-08 17:41:10 -0700</bug_when>
    <thetext>Add a stack-based helper to ensure that layout is up-to-date before getting the RenderView, and use it in places that hit-test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034009</commentid>
    <comment_count>1</comment_count>
      <attachid>237824</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-08 17:45:05 -0700</bug_when>
    <thetext>Created attachment 237824
Patch for feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034010</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-08 17:45:42 -0700</bug_when>
    <thetext>Seeking feedback on the approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034011</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-08 17:47:00 -0700</bug_when>
    <thetext>Attachment 237824 did not pass style-queue:


ERROR: Source/WebCore/platform/DragImage.cpp:137:  The parameter name &quot;renderView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034211</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-09 16:54:22 -0700</bug_when>
    <thetext>I&apos;m not completely clear on the nullity of things?  It seems like you sometimes need to null check the RenderView, and sometimes don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034212</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-09 17:01:07 -0700</bug_when>
    <thetext>I null-check the RenderView if the existing code did, but maybe should do it all the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034256</commentid>
    <comment_count>6</comment_count>
      <attachid>237824</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-10 02:55:25 -0700</bug_when>
    <thetext>Comment on attachment 237824
Patch for feedback

View in context: https://bugs.webkit.org/attachment.cgi?id=237824&amp;action=review

Where are you planning to go with this type? The current patch essentially just adds some scattered assertions so it is not clear from it. 

I think this is a great idea but the goal should be to expand it everywhere. That is, you shouldn&apos;t be able to get a renderer pointer (from Element for example) without first requesting access. Also we should differentiate between read and write access with the former giving back const renderer reference.

&gt; Source/WebCore/rendering/RenderTreeAccess.h:38
&gt; +class RenderTreeAccess {

What sort of access? Read? Read-write?

&gt; Source/WebCore/rendering/RenderTreeAccess.h:46
&gt; +    RenderTreeAccess(Frame&amp;, LayoutUpdateType = UpdateLayout);
&gt; +    RenderTreeAccess(Document&amp;, LayoutUpdateType = UpdateLayout);

Not a big fan of these default values.

&gt; Source/WebCore/rendering/RenderTreeAccess.h:50
&gt; +    RenderView* renderView();

I think this should be a reference. Constructors should assert document.hasLivingRenderTree(). Clients should not use this class without a living tree and the class should prevent render tree teardown.

&gt; Source/WebCore/rendering/RenderTreeAccess.h:52
&gt; +    void ensureLayoutUpdated(LayoutUpdateType = UpdateLayout);

This is not used externally so should be private. Any client doing tree mutating things should drop and reacquire the render tree (read) access instead of using this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034257</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-10 03:00:24 -0700</bug_when>
    <thetext>&gt; Not a big fan of these default values.

Specifically with the default values there is nothing indicating this type actually updates the layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034306</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-10 08:24:59 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; That is, you shouldn&apos;t be able to get a renderer pointer (from Element for example) without first requesting access.

If practical, to go along with this the renderer pointers should be smart pointers that, in debug builds, assert if used after additional DOM mutation. Much like hash table iterators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034330</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-10 09:11:12 -0700</bug_when>
    <thetext>All good ideas, thanks!

&gt; I think this should be a reference. Constructors should assert document.hasLivingRenderTree(). Clients should not use this class without a living tree and the class should prevent render tree teardown.

That&apos;s an interesting thought.

There are lots of access of RenderView which don&apos;t need to force layout; they just get the RenderView&apos;s RenderLayer, for example. So I don&apos;t think we can say that EVERY access of the render tree should force layout to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034424</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-10 15:11:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; There are lots of access of RenderView which don&apos;t need to force layout; they just get the RenderView&apos;s RenderLayer, for example. So I don&apos;t think we can say that EVERY access of the render tree should force layout to be updated.

Right, there should be a way to request access without updating the layout. In that case we can still assert for example that no mutations happens until the access is dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036575</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-22 12:38:55 -0700</bug_when>
    <thetext>Other places that need this class (and may not have it in the patch)

RenderEmbeddedObject::isReplacementObscured()
RenderWidget::nodeAtPoint()
FrameSelection::contains()
ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture()
WebPage::dynamicViewportSizeUpdate()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036626</commentid>
    <comment_count>12</comment_count>
      <attachid>238505</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-22 17:32:23 -0700</bug_when>
    <thetext>Created attachment 238505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036628</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-22 17:32:51 -0700</bug_when>
    <thetext>I went with a watered-down version after chatting with hyatt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036635</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-22 17:51:31 -0700</bug_when>
    <thetext>*** Bug 136265 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036647</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-22 18:59:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I went with a watered-down version after chatting with hyatt.

What arguments were made?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036648</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-22 19:20:26 -0700</bug_when>
    <thetext>He thought that the first patch was ugly, and it was just much simpler to update layout inside RenderView::hitTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036654</commentid>
    <comment_count>17</comment_count>
      <attachid>238505</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-09-22 20:29:39 -0700</bug_when>
    <thetext>Comment on attachment 238505
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036658</commentid>
    <comment_count>18</comment_count>
      <attachid>238505</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-22 21:39:41 -0700</bug_when>
    <thetext>Comment on attachment 238505
Patch

Clearing flags on attachment: 238505

Committed r173865: &lt;http://trac.webkit.org/changeset/173865&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036659</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-22 21:39:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237824</attachid>
            <date>2014-09-08 17:45:05 -0700</date>
            <delta_ts>2014-09-22 17:32:20 -0700</delta_ts>
            <desc>Patch for feedback</desc>
            <filename>bug-136651-20140908174500.patch</filename>
            <type>text/plain</type>
            <size>46661</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYxOWI4ZDU0Y2VmOWY0
ZDA5YjEyNjBjZDNkZmI0NTQ0N2Y1MjNmNy4uNjZkZjU1NGI4YWJjMTI5MTNiNzdlZDMzMGU3NmEz
YjU3NDc0ZTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE0LTA5LTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHN0YWNr
LWJhc2VkIGhlbHBlciB0byBlbnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAtdG8tZGF0ZSBiZWZvcmUg
Z2V0dGluZyB0aGUgUmVuZGVyVmlldywgYW5kIHVzZSBpdCBpbiBwbGFjZXMgdGhhdCBoaXQtdGVz
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NjUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBBZGQgYW4gUkFJSSBjbGFzcywgUmVuZGVyVHJlZUFjY2Vzcywgd2l0aCB0aGUgaW50ZW50IHRo
YXQgaXQgd2lsbCBiZSB1c2VkIGluIGJsb2NrcworICAgICAgICBvZiBjb2RlIHRoYXQgYWNjZXNz
IHRoZSByZW5kZXIgdHJlZSwgYW5kIG5lZWQgdG8gZW5zdXJlIHRoYXQgbGF5b3V0IGlzIHVwLXRv
LWRhdGUuCisgICAgICAgIEl0cyBkZXN0cnVjdG9yIGFzc2VydHMgdGhhdCBsYXlvdXQgaXMgbm90
IG5lZWRlZCB0byBkZXRlY3QgY29kZSB0aGF0IGtlZXBzIHVzaW5nCisgICAgICAgIHRoZSByZW5k
ZXIgdHJlZSBhZnRlciBsYXlvdXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQuCisgICAgICAgIAorICAg
ICAgICBVc2UgdGhpcyBjbGFzcyBpbiB2YXJpb3VzIHBsYWNlcywgbW9zdGx5IHRob3NlIHRoYXQg
Y2FsbCBSZW5kZXJWaWV3OjpoaXRUZXN0KCkuCisKKyAgICAgICAgQSBmZXcgZHJpdmUtYnkgbnVs
bHB0ciBjaGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwcmVzcyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnN1cHBvcnRzQVJJQU93bnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dG9wUmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoLVtET01IVE1MTGlua0VsZW1lbnQgX21l
ZGlhUXVlcnlNYXRjaGVzXSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZG9tL1Ry
ZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlRnJvbVBvaW50KToKKyAgICAgICAg
KiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojpjb250YWlucyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbGVtZW50VW5kZXJNb3VzZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdn
ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnRE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjppc0luc2lkZVNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjb250ZW50UmVuZGVyZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRGcmFtZVNl
bGVjdGlvblN0YXRlOjpTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGU6On5TY29wZWRGcmFtZVNlbGVjdGlvblN0YXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJRnJhbWU6OmNvbnRlbnRSb290UmVuZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6ZnJhbWVDb250ZW50c0NvbXBvc2l0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQWNjZXNzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQWNjZXNz
OjpSZW5kZXJUcmVlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVBY2Nlc3M6
On5SZW5kZXJUcmVlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVBY2Nlc3M6
OnJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFjY2Vzczo6ZW5zdXJl
TGF5b3V0VXBkYXRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBY2Nlc3MuaDog
QWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3Qp
OgorCiAyMDE0LTA5LTA4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEFsd2F5cyB1cGRhdGUgdGhlIHJlZmVycmVyIGhlYWRlciBpbiBDYWNoZWRSZXNv
dXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDI1NDVjZDQ0OTNlYjUwYmU2OTVlZDI5YTBkMzc2MjY2YTNhM2I1
NzYuLjkxNmZhM2U5OTQ2ODgyMTcwNjNhNGNiMTRlMzdmYzcwOWZiOGEyNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNyBAQAogMjAxNC0wOS0wOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgYSBzdGFjay1iYXNlZCBoZWxwZXIgdG8gZW5zdXJl
IHRoYXQgbGF5b3V0IGlzIHVwLXRvLWRhdGUgYmVmb3JlIGdldHRpbmcgdGhlIFJlbmRlclZpZXcs
IGFuZCB1c2UgaXQgaW4gcGxhY2VzIHRoYXQgaGl0LXRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjY1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVuZGVyVHJlZUFjY2VzcyB0byBl
bnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAtdG8tZGF0ZSBiZWZvcmUgaGl0IHRlc3RpbmcuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorCisyMDE0LTA5LTA4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCB0aGUg
aU9TIGJ1aWxkLgogCiAgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4uRGV2ZWxvcG1lbnQubW06CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGE5OTExMTcyYzM1MTk5ZmZiMThjMThmZTIyMzc4MTRkM2ZkNDNlZDguLjA1MWQ1ZTMx
OGE4M2E0YWFhYWRkZjVlNjYwMDViNGE0YTBkYmJkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC03MTYsNiArNzE2LDkgQEAgX19aTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9uQzFFUktOU18x
NVJlc291cmNlUmVxdWVzdEUKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNf
MTVSZXNvdXJjZVJlcXVlc3RFTlNfMTNGcmFtZUxvYWRUeXBlRWIKIF9fWk43V2ViQ29yZTE2TmF2
aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTROYXZpZ2F0aW9uVHlw
ZUUKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRXYKK19fWk43V2ViQ29yZTE2UmVu
ZGVyVHJlZUFjY2VzczEwcmVuZGVyVmlld0V2CitfX1pON1dlYkNvcmUxNlJlbmRlclRyZWVBY2Nl
c3NDMUVSTlNfOERvY3VtZW50RU5TMF8xNkxheW91dFVwZGF0ZVR5cGVFCitfX1pON1dlYkNvcmUx
NlJlbmRlclRyZWVBY2Nlc3NEMUV2CiBfX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNl
dENlcnRpZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRy
b2xsZXIxMGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZT
Y3JpcHRDb250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmEzNTM2NTYyZTEyYTIwNjJhZWY0
ZTQ0ZmI3NzY4N2YxNDJiMzQ4Yi4uNTVkNmVjYjNlMTdkY2EwNmFkMDhjNjJkNmFjZTVkODYxNjIy
MTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTE2LDYgKzUxNiw4IEBACiAJCTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2MDVBRUIxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0
cmFpbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY2MzgzREQxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzODNEQjE4
NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKIAkJMEY2
MzgzREUxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MzgzREMxODYxNUIyOTAw
M0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNkY2NUI2MTlCRTRENUIwMDk5RkJDQiAvKiBS
ZW5kZXJUcmVlQWNjZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNkY2NUI0MTlCRTRENUIwMDk5RkJDQiAvKiBSZW5kZXJUcmVlQWNjZXNzLmNw
cCAqLzsgfTsKKwkJMEY2RjY1QjcxOUJFNEQ1QjAwOTlGQkNCIC8qIFJlbmRlclRyZWVBY2Nlc3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkY2NUI1
MTlCRTRENUIwMDk5RkJDQiAvKiBSZW5kZXJUcmVlQWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3MzIxODg0QzQ1QzAwQjRBRjg2
IC8qIFBsYXRmb3JtVGV4dFRyYWNrTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcyODQ3RTMxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4
dFRyYWNrTWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGN0QwNzMzMTg4NEM1NkMwMEI0QUY4NiAvKiBQbGF0Zm9ybVRleHRUcmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyODQ3RTIxNkVC
QzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5N0E2NTgxNTVEQTgxRTAwRkFERDRDIC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MubW0gKi87IH07CkBAIC03NDI5LDYgKzc0MzEsOCBAQAogCQkwRjYwNUFF
QjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MzgzREIxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJl
YWRlZFNjcm9sbGluZ1RyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYz
ODNEQzE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZGNjVCNDE5QkU0RDVCMDA5OUZCQ0IgLyogUmVuZGVy
VHJlZUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJUcmVlQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2RjY1QjUx
OUJFNEQ1QjAwOTlGQkNCIC8qIFJlbmRlclRyZWVBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyVHJlZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9y
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3
NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3Jh
cGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMzY3
LDYgKzIyMzcxLDggQEAKIAkJCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhl
bWVJT1MubW0gKi8sCiAJCQkJQkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1l
TWFjLmggKi8sCiAJCQkJQkNFQTQ4NDkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
Lm1tICovLAorCQkJCTBGNkY2NUI0MTlCRTRENUIwMDk5RkJDQiAvKiBSZW5kZXJUcmVlQWNjZXNz
LmNwcCAqLywKKwkJCQkwRjZGNjVCNTE5QkU0RDVCMDA5OUZCQ0IgLyogUmVuZGVyVHJlZUFjY2Vz
cy5oICovLAogCQkJCTkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVlQXNUZXh0
LmNwcCAqLywKIAkJCQk5Mzk1NUE0MTAzRDcyOTMyMDA4NjM1Q0UgLyogUmVuZGVyVHJlZUFzVGV4
dC5oICovLAogCQkJCUU0QjQxRTMzMENCRkI2MDkwMEFGMkVDRSAvKiBSZW5kZXJWaWRlby5jcHAg
Ki8sCkBAIC0yMzI2NCw2ICsyMzI3MCw3IEBACiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhE
IC8qIEF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAv
KiBBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdBMTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZGNjVCNzE5QkU0RDVCMDA5
OUZCQ0IgLyogUmVuZGVyVHJlZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2MjlFQTMx
NTRCNDcxNjAwMDZEMDI2IC8qIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNUZGNzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY5MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYzNSw2ICsyNzY0Miw3IEBACiAJCQkJNTE0
QjNGNzYwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTYwMzAwQjBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3NkQ2QzhEMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNkY2NUI2MTlCRTRENUIwMDk5RkJDQiAvKiBSZW5kZXJU
cmVlQWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNjlFMEU4MURBRUIwMEIyNTk2
NSAvKiBGaWxsTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDhDOTI1MTkwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxM0Y2NTE0
NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA1MzBhODUzY2JkMDgyZTIyMTFjMTg2ZGE3YTY3NjNmYzljNTE4ZTgwLi5j
N2Q0ZDE2ZTRhZDUzM2U0M2YwMDA5Yzk2ZGIwNzE0YWI4MzNlYzcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTU3
LDYgKzU3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlJlbmRlclRy
ZWVBY2Nlc3MuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lk
Z2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgpAQCAtNzgyLDEyICs3ODMsMTQg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmVzcygpCiAgICAgLy8gYXMgdGhlIHRhcmdl
dCBvZiB0aGUgYWN0aW9uLgogICAgIEVsZW1lbnQqIGhpdFRlc3RFbGVtZW50ID0gbnVsbHB0cjsK
ICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewotICAgICAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKLSAgICAg
ICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyVmlldy0+bGF5ZXIoKTsKLSAgICAgICAgCisg
ICAgICAgIFJlbmRlclRyZWVBY2Nlc3MgcmVuZGVyVHJlZUFjY2VzcygqZG9jdW1lbnQpOworICAg
ICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gcmVuZGVyVHJlZUFjY2Vzcy5yZW5kZXJWaWV3
KCk7CisgICAgICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWNjZXNzaWJpbGl0
eUhpdFRlc3QpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0
UmVzdWx0KGNsaWNrUG9pbnQoKSk7Ci0gICAgICAgIGxheWVyLT5oaXRUZXN0KHJlcXVlc3QsIGhp
dFRlc3RSZXN1bHQpOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIGhpdFRl
c3RSZXN1bHQpOwogICAgICAgICBpZiAoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAg
ICAgICAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+ZGVw
cmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgICAgICAgICAgaWYgKGlubmVyTm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZjMzODM3NTIzZmI2YmIw
MmZiYTZhYTQ4NWE2ZGUzN2FiZjU1MGJlMC4uZTBmYjhlYzNkNTU2ZDhjZmM0NGUzNGU4Y2Y5ZWNh
ZTg0ZjZjYTFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC04Nyw2ICs4Nyw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJSZW5kZXJU
cmVlQWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldp
ZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKQEAgLTE3MDAsMTUgKzE3MDEs
NiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMoKSBj
b25zdAogCiAgICAgcmV0dXJuICFhcmlhT3ducy5pc0VtcHR5KCk7CiB9Ci0gICAgCi1SZW5kZXJW
aWV3KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0b3BSZW5kZXJlcigpIGNvbnN0Ci17Ci0g
ICAgRG9jdW1lbnQqIHRvcERvYyA9IHRvcERvY3VtZW50KCk7Ci0gICAgaWYgKCF0b3BEb2MpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHJldHVybiB0b3BEb2MtPnJlbmRlclZp
ZXcoKTsKLX0KIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvY3VtZW50
KCkgY29uc3QKIHsKQEAgLTE5NzgsMjggKzE5NzAsMzMgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBv
aW4KICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCiAgICAgLy8gY29udmVydCBh
YnNvbHV0ZSBwb2ludCB0byB2aWV3IGNvb3JkaW5hdGVzCi0gICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IHRvcFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJWaWV3KQorICAgIERvY3VtZW50
KiBjdXJyRG9jdW1lbnQgPSB0b3BEb2N1bWVudCgpOworICAgIGlmICghY3VyckRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9ICZyZW5kZXJWaWV3LT5mcmFtZVZpZXcoKTsKKyAg
ICBGcmFtZVZpZXcqIGN1cnJGcmFtZVZpZXcgPSBjdXJyRG9jdW1lbnQtPnZpZXcoKTsKICNlbmRp
ZgogCiAgICAgTm9kZSogaW5uZXJOb2RlID0gbnVsbHB0cjsKICAgICAKICAgICAvLyBsb2NhdGUg
dGhlIG5vZGUgY29udGFpbmluZyB0aGUgcG9pbnQKICAgICBMYXlvdXRQb2ludCBwb2ludFJlc3Vs
dDsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICBMYXlvdXRQb2ludCBvdXJwb2ludDsKKyAgICB3
aGlsZSAoY3VyckRvY3VtZW50ICYmIGN1cnJGcmFtZVZpZXcpIHsKKyAgICAgICAgTGF5b3V0UG9p
bnQgY29udGVudHNQb2ludDsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIG91cnBvaW50ID0g
ZnJhbWVWaWV3LT5zY3JlZW5Ub0NvbnRlbnRzKHBvaW50KTsKKyAgICAgICAgY29udGVudHNQb2lu
dCA9IGN1cnJGcmFtZVZpZXctPnNjcmVlblRvQ29udGVudHMocG9pbnQpOwogI2Vsc2UKLSAgICAg
ICAgb3VycG9pbnQgPSBwb2ludDsKKyAgICAgICAgY29udGVudHNQb2ludCA9IHBvaW50OwogI2Vu
ZGlmCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlKTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQob3VycG9pbnQpOworICAgICAgICBS
ZW5kZXJUcmVlQWNjZXNzIHJlbmRlclRyZWVBY2Nlc3MoKmN1cnJEb2N1bWVudCk7CisgICAgICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKTsK
KyAgICAgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOworCisgICAgICAgIC8vIEZJWE1FOiB3aHkgbm90IGp1c3QgaGl0VGVzdCB3aXRoIEFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQgcmF0aGVyIHRoYW4gdGhpcyBtYW51YWwgbG9vcD8KKyAgICAg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoY29udGVu
dHNQb2ludCk7CiAgICAgICAgIHJlbmRlclZpZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsK
ICAgICAgICAgaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgICAgICBpZiAoIWlu
bmVyTm9kZSkKQEAgLTIwMjAsMTMgKzIwMTcsMTYgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW4K
ICAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBGcmFtZSYgZnJhbWUgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5m
cmFtZSgpOwotICAgICAgICByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpOworICAgICAgICBjdXJyRG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOwogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBmcmFtZVZpZXcgPSB0b0ZyYW1lVmlldyh3aWRnZXQpOworICAg
ICAgICBjdXJyRnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKICNlbmRpZgogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50
KHBvaW50UmVzdWx0LCBudWxscHRyKTsKKyAgICBpZiAoaW5uZXJOb2RlKQorICAgICAgICByZXR1
cm4gaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50UmVzdWx0LCBu
dWxscHRyKTsKKyAgICAKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiB9CiAKIC8vIE5P
VEU6IENvbnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9kIGFzIEFYIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAppbmRleCBiNGQyNDA1NGUzYzM2NzExZTM2NzkxMzBhNDliNWI4YmNiMTUyYTgz
Li4zNWJmNjFkODYzMjg1NWY2MGZmYWI5MDVkZGQ5OTE2MzRmMzVhYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaApAQCAtMTMyLDcgKzEzMiw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJWaWV3KiB0b3BSZW5kZXJl
cigpIGNvbnN0OwogICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCgpIGNvbnN0Owog
ICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0OwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA3ODA5NDBjYzYyM2Q0OTNjNjJk
ZjU5MTkwMzk3MzQ4YjllYzY3MjIxLi41Nzc3YWRmMzY5OGU3Nzk0YWJlYWZlMjUxODlmZTQyYmM1
NTUxMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNzUxLDcgKzc1MSw3
IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
bGluay0+ZG9jdW1lbnQoKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJ5
U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtZWRp
YSk7Ci0gICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVu
dC5mcmFtZSgpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogMCk7CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3Jl
ZW4iLCBkb2N1bWVudC5mcmFtZSgpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQu
cmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gc2NyZWVuRXZh
bC5ldmFsKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggOWIyMmY0MDgyMjNjYjU2OTAwOWUwNjEyOTZlMjQ5NjY5ZDBjYzViYy4uNjllYzhlMmZmOGE5
MmY3NzA3MDVjMzk5YTdiMGMwOTc0YmVmZGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xMTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFjY2Vzcy5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKQEAgLTMwMjMsNyArMzAyNCwxMCBAQCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcgogICAgICAgICByZXR1cm4gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhldmVudCwg
SGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKSk7CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dChkb2N1bWVudFBvaW50KTsKLSAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKKyAgICB7CisgICAgICAgIFJlbmRlclRyZWVBY2Nlc3MgcmVuZGVyVHJlZUFjY2Vzcygq
dGhpcyk7CisgICAgICAgIHJlbmRlclRyZWVBY2Nlc3MucmVuZGVyVmlldygpLT5oaXRUZXN0KHJl
cXVlc3QsIHJlc3VsdCk7CisgICAgfQogCiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRPbmx5KCkpCiAg
ICAgICAgIHVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggYjA1MzY2M2Y4ZDM0YTY3MGJiMDQy
OTY5OTRmYTI4NDdiYTIzMjY2YS4uNzZmYTQxOTAyNzE0YTZkZTFkNjk0ZTdjZWE1OWU3MjA1ZGNl
MTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVBY2Nlc3MuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTI0Miw3ICsyNDMsOCBAQCBOb2RlKiBub2Rl
RnJvbVBvaW50KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCBMYXlvdXRQb2ludCog
bG9jYWxQb2ludCkKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAg
ICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAg
UmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKCpkb2N1bWVudCk7CisgICAgcmVuZGVy
VHJlZUFjY2Vzcy5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAg
IGlmIChsb2NhbFBvaW50KQogICAgICAgICAqbG9jYWxQb2ludCA9IHJlc3VsdC5sb2NhbFBvaW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggZjFhZjNiZmE2ZWFmMDhkMDk5YjM2MDExNWM3
MGY1MTU4N2QyNzBhYi4uNmEyZDliMmJlNTczZGIwOGQ1YjA2NzU2MzVmMGYzNDViYjVkZmQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGluZSBib29sIFRy
ZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lCiAgICAgcmV0dXJuIG1fZWxlbWVudHNCeU5hbWUgJiYgbmFtZS5pbXBsKCkgJiYg
bV9lbGVtZW50c0J5TmFtZS0+Y29udGFpbnNNdWx0aXBsZSgqbmFtZS5pbXBsKCkpOwogfQogCi1O
b2RlKiBub2RlRnJvbVBvaW50KERvY3VtZW50KiwgaW50IHgsIGludCB5LCBMYXlvdXRQb2ludCog
bG9jYWxQb2ludCA9IDApOworTm9kZSogbm9kZUZyb21Qb2ludChEb2N1bWVudCosIGludCB4LCBp
bnQgeSwgTGF5b3V0UG9pbnQqIGxvY2FsUG9pbnQgPSBudWxscHRyKTsKIFRyZWVTY29wZSogY29t
bW9uVHJlZVNjb3BlKE5vZGUqLCBOb2RlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBmNDEwNjViZjkzOTMxNTRjNmM5YWVhMjhhZjY1
NmU5MWRmODQzN2ViLi45YmYxZWU0YjA2YWYzZTc2MWQ0Y2M0ODI4ODQ3M2Q1MzA2ZWFkZWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAi
UmVtb3ZlRm9ybWF0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQWNjZXNzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTMyODUsNyArMzI4Niw3IEBAIHVu
c2lnbmVkIEVkaXRvcjo6Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwg
UmFuZ2UqIHJhbmdlLCBGaW5kT3B0CiAgICAgaWYgKG1hcmtNYXRjaGVzIHx8IG1hdGNoZXMpIHsK
ICAgICAgICAgLy8gRG8gYSAiZmFrZSIgcGFpbnQgaW4gb3JkZXIgdG8gZXhlY3V0ZSB0aGUgY29k
ZSB0aGF0IGNvbXB1dGVzIHRoZSByZW5kZXJlZCByZWN0IGZvciBlYWNoIHRleHQgbWF0Y2guCiAg
ICAgICAgIGlmIChtX2ZyYW1lLnZpZXcoKSAmJiBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKSB7
Ci0gICAgICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOyAvLyBFbnN1cmUgbGF5b3V0
IGlzIHVwIHRvIGRhdGUuCisgICAgICAgICAgICBSZW5kZXJUcmVlQWNjZXNzIHJlbmRlclRyZWVB
Y2Nlc3MoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogdW5jbGVhciBpZiB3ZSBu
ZWVkIExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QuCiAgICAgICAgICAgICAvLyBGSVhNRTog
dGhpcyBzaG91bGQgcHJvYmFibHkgbG9vayBhdCBwYWludHNFbnRpcmVDb250ZW50cygpCiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHZpc2libGVSZWN0ID0gbV9mcmFtZS52aWV3KCktPnZpc2libGVD
b250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDhkM2FlMjlk
YmJlNDM0YTE2MTY5ZDg4YzU0NWY3YTU3OTA0YzViOWUuLjY1N2RmOTkxMzU5NThjMTdiYzBiZjY3
OWE4MzcyMTU2ZmM2MjkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNs
dWRlICJSZW5kZXJUcmVlQWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKQEAgLTE1
OTMsMTIgKzE1OTQsMTcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50KQogICAgIC8vIFRyZWF0IGEgY29sbGFwc2VkIHNlbGVjdGlvbiBsaWtl
IG5vIHNlbGVjdGlvbi4KICAgICBpZiAoIWlzUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkgCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0gICAgZG9j
dW1lbnQtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworICAgIHsKKyAg
ICAgICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKCpkb2N1bWVudCk7CisgICAg
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXco
KTsKKyAgICAgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgfQorCiAg
ICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICghaW5uZXJO
b2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMTYyZWU0OWI1YWYzZmNmZWRk
OTY4ZjNmMjk0MDgyNWI4MWZjNjMxNy4uNTYwNTE0ZTJjZTdmZmJkMDk4OGQ5ZDQ2MTBjZTE5OWRj
Y2VhNTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY2LDYg
KzY2LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUcmVlQWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBA
IC0yODYsOSArMjg3LDExIEBAIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50VW5kZXJNb3VzZShEb2N1
bWVudCogZG9jdW1lbnRVbmRlck1vdXNlLCBjb25zdCBJbnRQb2ludCYKICAgICBmbG9hdCB6b29t
RmFjdG9yID0gZnJhbWUgPyBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSA6IDE7CiAgICAgTGF5b3V0
UG9pbnQgcG9pbnQocC54KCkgKiB6b29tRmFjdG9yLCBwLnkoKSAqIHpvb21GYWN0b3IpOwogCisg
ICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKCpkb2N1bWVudFVuZGVyTW91c2Up
OworICAgIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1No
YWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICBkb2N1
bWVudFVuZGVyTW91c2UtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwor
ICAgIHJlbmRlclRyZWVBY2Nlc3MucmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CiAKICAgICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChuICYm
ICFuLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggNTAyYjI0ZTFjMGVhMmYwYmM0OTllZDIzYTQwMGJkYjViOTVkYTgxNS4uNjdlMGMxNWJiOTMz
YmU3MDlhY2UwMTViYjM0NDU4MGQ0MTgyNmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtNzUsNiArNzUsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKICNp
bmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQWNjZXNzLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtODQwLDkgKzg0MSwxNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZQogICAgIH0KIAogICAgIGlmIChtX3NlbGVjdGlvbkluaXRpYXRpb25TdGF0
ZSAhPSBFeHRlbmRlZFNlbGVjdGlvbikgewotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnJl
bmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworICAgICAgICAKKyAgICAgICAg
eworICAgICAgICAgICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKG1fZnJhbWUp
OworICAgICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHJlbmRlclRyZWVBY2Nlc3Mu
cmVuZGVyVmlldygpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CisgICAgICAgICAgICByZW5kZXJWaWV3
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIH0KIAogICAgICAgICB1cGRhdGVT
ZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKICAgICB9CkBAIC04NTUsOCArODY0LDEzIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50KSBjb25zdAogICAgIC8vIFRoaXMgaXMgYSBwcmUtZmxpZ2h0IGNoZWNrIG9m
IHdoZXRoZXIgdGhlIGV2ZW50IG1pZ2h0IGxlYWQgdG8gYSBkcmFnIGJlaW5nIHN0YXJ0ZWQuICBC
ZSBjYXJlZnVsCiAgICAgLy8gdGhhdCBpdHMgbG9naWMgbmVlZHMgdG8gc3RheSBpbiBzeW5jIHdp
dGggaGFuZGxlTW91c2VNb3ZlRXZlbnQoKSBhbmQgdGhlIHdheSB3ZSBzZXRNb3VzZURvd25NYXlT
dGFydERyYWcKICAgICAvLyBpbiBoYW5kbGVNb3VzZVByZXNzRXZlbnQKLSAgICAKLSAgICBpZiAo
IW1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwgIW1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkt
Pmhhc0xheWVyKCkpCisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChldmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmNsaWNrQ291bnQo
KSAhPSAxKQpAQCAtODY1LDE4ICs4NzksMTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5
U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYg
KG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KTsKLSAgICBpZiAoIXBhZ2UpCisgICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNz
KG1fZnJhbWUpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSByZW5kZXJUcmVlQWNjZXNz
LnJlbmRlclZpZXcoKTsKKyAgICAKKyAgICBpZiAoIXJlbmRlclZpZXcgfHwgIXJlbmRlclZpZXct
Pmhhc0xheWVyKCkpIC8vIEZJWE1FOiB3aHkgdGhlIGhhc0xheWVyIGNoZWNrPwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKTsKICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOwotICAgIG1fZnJh
bWUuY29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICByZW5k
ZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwog
ICAgIHJldHVybiByZXN1bHQuaW5uZXJFbGVtZW50KCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQuaW5uZXJFbGVtZW50KCksIHJlc3Vs
dC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCksIHN0YXRlKTsKIH0KQEAgLTg4NiwxMyAr
ODk4LDE1IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWco
KQogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlclZpZXcqIHJlbmRlcmVyID0gbV9mcmFtZS5jb250
ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQorCisgICAgUmVuZGVyVHJlZUFjY2Vz
cyByZW5kZXJUcmVlQWNjZXNzKG1fZnJhbWUpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKTsKKyAgICBpZiAoIXJlbmRlclZpZXcpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpN
b3ZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9z
aXRpb24pKTsKLSAgICByZW5kZXJlci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworICAgIHJl
bmRlclZpZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICB1cGRhdGVTZWxlY3Rpb25G
b3JNb3VzZURyYWcocmVzdWx0KTsKIH0KIApAQCAtMTEzMSwxNSArMTE0NSwxOCBAQCBIaXRUZXN0
UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50LCBIaXRUZQogICAgIH0KIAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50
LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlIHwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogCi0gICAgaWYgKCFtX2ZyYW1l
LmNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgbV9mcmFt
ZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICB7CisgICAgICAgIFJlbmRlclRyZWVB
Y2Nlc3MgcmVuZGVyVHJlZUFjY2VzcyhtX2ZyYW1lKTsKKyAgICAgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IHJlbmRlclRyZWVBY2Nlc3MucmVuZGVyVmlldygpOworICAgICAgICBpZiAoIXJl
bmRlclZpZXcpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAKKyAgICAgICAg
Ly8gaGl0VGVzdFJlc3VsdEF0UG9pbnQgaXMgc3BlY2lmaWNhbGx5IHVzZWQgdG8gaGl0VGVzdCBp
bnRvIGFsbCBmcmFtZXMsIHRodXMgaXQgYWx3YXlzIGFsbG93cyBjaGlsZCBmcmFtZSBjb250ZW50
LgorICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgfQog
ICAgIAotICAgIC8vIGhpdFRlc3RSZXN1bHRBdFBvaW50IGlzIHNwZWNpZmljYWxseSB1c2VkIHRv
IGhpdFRlc3QgaW50byBhbGwgZnJhbWVzLCB0aHVzIGl0IGFsd2F5cyBhbGxvd3MgY2hpbGQgZnJh
bWUgY29udGVudC4KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUgfCBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7Ci0gICAgbV9mcmFtZS5jb250ZW50UmVu
ZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGlmICghcmVxdWVzdC5yZWFk
T25seSgpKQogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUhvdmVyQWN0aXZlU3Rh
dGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKIApAQCAtMTMzMSwxMCArMTM0OCw2
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IoKQogICAgIGlmICghdmlldykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXctPnJlbmRl
clZpZXcoKTsKLSAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlm
ICghdmlldy0+c2hvdWxkU2V0Q3Vyc29yKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM0NCwx
MSArMTM1NywxNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKCkKICAgICBib29s
IG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJT
dGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKIAotICAgIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmll
dy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKLSAgICByZW5k
ZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisKKyAgICB7CisgICAgICAgIFJlbmRl
clRyZWVBY2Nlc3MgcmVuZGVyVHJlZUFjY2VzcyhtX2ZyYW1lKTsKKyAgICAgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IHJlbmRlclRyZWVBY2Nlc3MucmVuZGVyVmlldygpOworICAgICAgICBp
ZiAoIXJlbmRlclZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgICAgICByZW5kZXJW
aWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgfQogCiAgICAgT3B0aW9uYWxDdXJz
b3Igb3B0aW9uYWxDdXJzb3IgPSBzZWxlY3RDdXJzb3IocmVzdWx0LCBzaGlmdEtleSk7CiAgICAg
aWYgKG9wdGlvbmFsQ3Vyc29yLmlzQ3Vyc29yQ2hhbmdlKCkpIHsKQEAgLTI2MjEsMTQgKzI2NDAs
MTUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKIAogYm9vbCBFdmVudEhhbmRsZXI6OmlzSW5z
aWRlU2Nyb2xsYmFyKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QKIHsKLSAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkpIHsK
LSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKLSAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQod2luZG93UG9pbnQpOwotICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuc2Nyb2xsYmFyKCk7Ci0g
ICAgfQorICAgIFJlbmRlclRyZWVBY2Nlc3MgcmVuZGVyVHJlZUFjY2VzcyhtX2ZyYW1lKTsKKyAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gcmVuZGVyVHJlZUFjY2Vzcy5yZW5kZXJWaWV3KCk7
CisgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCh3aW5kb3dQb2ludCk7CisgICAgcmVuZGVyVmlldy0+aGl0VGVzdChy
ZXF1ZXN0LCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQuc2Nyb2xsYmFyKCk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oR1RLKQpAQCAtMjY3MCwxMCArMjY5MCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwbGF0Zm9ybUNvbXBsZXRlUGxhdGZvcm1XaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUu
dmlldygpKTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwpAQCAtMjY4
Myw5ICsyNjk5LDE3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCA9
IHRydWU7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwogCi0gICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKLSAgICBkb2N1bWVudC0+cmVuZGVy
VmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisKKyAgICB7CisgICAgICAgIFJlbmRl
clRyZWVBY2Nlc3MgcmVuZGVyVHJlZUFjY2VzcyhtX2ZyYW1lKTsKKyAgICAgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IHJlbmRlclRyZWVBY2Nlc3MucmVuZGVyVmlldygpOworICAgICAgICBp
ZiAoIXJlbmRlclZpZXcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICAgICAgcmVuZGVyVmlldy0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOworICAgIH0KIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50
ID0gcmVzdWx0LmlubmVyRWxlbWVudCgpOwogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzY3Jv
bGxhYmxlQ29udGFpbmVyOwpAQCAtMjk4OSwxNCArMzAxMywyMSBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6aG92ZXJUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mKQogCiAgICAgQVNTRVJUKG1f
ZnJhbWUuZG9jdW1lbnQoKSk7CiAKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyZXIgPSBtX2Zy
YW1lLmNvbnRlbnRSZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLnZpZXcoKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQp
OwotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50
cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5oaXRU
ZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKLSAg
ICAgICAgfQorICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAgIGlmICgh
dmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQp
OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0
S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgeworICAgICAgICBSZW5kZXJUcmVlQWNjZXNzIHJl
bmRlclRyZWVBY2Nlc3MobV9mcmFtZSk7CisgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJWaWV3
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAgICAgfQorICAgICAgICAKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKIH0K
IAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUFjY2Vzc0tleShjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGV2dCkKQEAgLTMzOTQsNyArMzQyNSwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hl
Y2tEcgogICAgICAgICAvLyB0cnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUg
ZHJhZ2dlZAogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIG1fZnJhbWUu
Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICAgICAgewor
ICAgICAgICAgICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKG1fZnJhbWUpOwor
ICAgICAgICAgICAgcmVuZGVyVHJlZUFjY2Vzcy5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVz
dCwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1fZnJhbWUucGFn
ZSgpKQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkuc291cmNlID0gbV9mcmFtZS5wYWdlKCktPmRy
YWdDb250cm9sbGVyKCkuZHJhZ2dhYmxlRWxlbWVudCgmbV9mcmFtZSwgcmVzdWx0LmlubmVyRWxl
bWVudCgpLCBtX21vdXNlRG93blBvcywgZHJhZ1N0YXRlKCkpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggZmUyNmRkMWUzYjdhZGM2NGUzYThlYjE1YTJjNzY4NGM0ZjM5OTZkNy4u
ZTQ2OTdjMWQ4NjIxZDI1MTdhZWJmZWJkZmU0MzE0ZjgwZGI3NTgzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0Zv
cldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHRWZQogCiBSZW5k
ZXJWaWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9j
dW1lbnQoKSA/IGRvY3VtZW50KCktPnJlbmRlclZpZXcoKSA6IDA7CisgICAgcmV0dXJuIGRvY3Vt
ZW50KCkgPyBkb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkgOiBudWxscHRyOwogfQogCiBSZW5kZXJX
aWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCmluZGV4IDVmMWUxZGRkZmUyYmVjZmYwM2E4MDVlZjdhNzFhMzNjOGFjYjMw
NDMuLjAxZDNiMTQ3N2U4ZjUwNTVmMWRlYmIxZDQzN2QyZjhkNjdmNTYxOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTI4LDE0ICsxMjgsMTQgQEAgc3RydWN0IFNj
b3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgewogICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUo
RnJhbWUmIGZyYW1lKQogICAgICAgICA6IGZyYW1lKGZyYW1lKQogICAgIHsKLSAgICAgICAgaWYg
KFJlbmRlclZpZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgICAg
IHJvb3QtPmdldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVy
ZXIsIGVuZE9mZnNldCk7CisgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJh
bWUuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJWaWV3LT5nZXRTZWxlY3Rp
b24oc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRPZmZzZXQpOwog
ICAgIH0KIAogICAgIH5TY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlKCkKICAgICB7Ci0gICAgICAg
IGlmIChSZW5kZXJWaWV3KiByb290ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICByb290LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZFJl
bmRlcmVyLCBlbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICAgICAg
aWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKKyAg
ICAgICAgICAgIHJlbmRlclZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9m
ZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcp
OwogICAgIH0KIAogICAgIGNvbnN0IEZyYW1lJiBmcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IGNiOTIwYWY2MjY3YWMy
OTk2ZTljYTc3ZGYxYWVkMWI3ZmJjODAxOTkuLmE2MzdiMWEzNTdmNzFhMzRkZjk5YmRkZjliYTZl
NzdjNTM2NWI3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXdC
YXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgorI2luY2x1ZGUgIlJlbmRlclRyZWVBY2Nlc3MuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC00MTgsMTEgKzQx
OSwxMiBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQo
KSBjb25zdAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBSZW5kZXJWaWV3KiByb290UmVuZGVyVmlldyA9IGRvY3VtZW50KCkudG9wRG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCk7CisgICAgUmVuZGVyVHJlZUFjY2VzcyByZW5kZXJUcmVlQWNjZXNzKGRv
Y3VtZW50KCkudG9wRG9jdW1lbnQoKSk7CisgICAgUmVuZGVyVmlldyogcm9vdFJlbmRlclZpZXcg
PSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKTsKICAgICBBU1NFUlQocm9vdFJlbmRlclZp
ZXcpOwogICAgIGlmICghcm9vdFJlbmRlclZpZXcpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisg
ICAgCiAgICAgSW50UmVjdCByb290Vmlld1JlY3QgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVy
dFRvUm9vdFZpZXcoc25hcHBlZEludFJlY3QocmVjdCkpOwogICAgIAogICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpE
aXNhbGxvd1NoYWRvd0NvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29u
dGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4IDBl
ZGNlMmRiZDZlODk1YTE2MzBjY2FjMmNkNjM5Y2E5YTNkOTc5OWEuLmEzNWRjMzdjZTA1NTVkMTU2
MDc2Y2ZkYjYwYTM0ZGZhNjJlODYwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuY3BwCkBAIC02NCwxMiArNjQsNiBAQCBib29sIFJlbmRlcklGcmFtZTo6cmVxdWly
ZXNMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlckZyYW1lQmFzZTo6cmVxdWlyZXNMYXll
cigpIHx8IHN0eWxlKCkucmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiB9CiAKLVJlbmRlclZpZXcq
IFJlbmRlcklGcmFtZTo6Y29udGVudFJvb3RSZW5kZXJlcigpIGNvbnN0Ci17Ci0gICAgRnJhbWVW
aWV3KiBjaGlsZEZyYW1lVmlldyA9IGNoaWxkVmlldygpOwotICAgIHJldHVybiBjaGlsZEZyYW1l
VmlldyA/IGNoaWxkRnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpIDogMDsKLX0K
LQogYm9vbCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpIGNvbnN0CiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gaWZyYW1lRWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAppbmRleCA3Y2MwMzMxYjZjYmVmNGQzODU2YmJiMGU0
YTk2Nzg5Y2JkYzY5MTdmLi5jZTgzNmI2ZWQ5M2NkM2RjOGVmMWFjODk5M2U4MzE1MTg5YTcyYjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCkBAIC01OCw4ICs1OCw2
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBSZW5kZXJWaWV3KiBjb250ZW50Um9vdFJlbmRlcmVyKCkg
Y29uc3Q7CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVySUZyYW1lLCBpc1Jl
bmRlcklGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhYWUyZmJiMmVmZTBjOTk4NDJjMWQ3MWRmNDM2NDRjOGUw
N2VhM2ZmLi5jZDM0MmU5N2RiMjgxOTUxYTBlOGYxODg3OWJmODY3ZDJiYTQyM2Q3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMTcwMiw3ICsxNzAyLDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmZyYW1lQ29udGVudHNDb21wb3NpdG9yKFJlbmRlcldpZGcKICAgICAgICAgaWYg
KFJlbmRlclZpZXcqIHZpZXcgPSBjb250ZW50RG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAg
ICAgICAgIHJldHVybiAmdmlldy0+Y29tcG9zaXRvcigpOwogICAgIH0KLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBh
cmVudEZyYW1lQ29udGVudExheWVycyhSZW5kZXJXaWRnZXQqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBY2Nlc3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBY2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyOTBl
YzQ2YTdiMTFkOWI0M2RkMmExZDJkNTQyODJiY2EzMTYwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFjY2Vzcy5jcHAKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJU
cmVlQWNjZXNzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbmRl
clRyZWVBY2Nlc3M6OlJlbmRlclRyZWVBY2Nlc3MoRnJhbWUmIGZyYW1lLCBMYXlvdXRVcGRhdGVU
eXBlIHVwZGF0ZUxheW91dFR5cGUpCisgICAgOiBtX2RvY3VtZW50KGZyYW1lLmRvY3VtZW50KCkp
Cit7CisgICAgZW5zdXJlTGF5b3V0VXBkYXRlZCh1cGRhdGVMYXlvdXRUeXBlKTsKK30KKworUmVu
ZGVyVHJlZUFjY2Vzczo6UmVuZGVyVHJlZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1lbnQsIExheW91
dFVwZGF0ZVR5cGUgdXBkYXRlTGF5b3V0VHlwZSkKKyAgICA6IG1fZG9jdW1lbnQoJmRvY3VtZW50
KQoreworICAgIGVuc3VyZUxheW91dFVwZGF0ZWQodXBkYXRlTGF5b3V0VHlwZSk7Cit9CisKK1Jl
bmRlclRyZWVBY2Nlc3M6On5SZW5kZXJUcmVlQWNjZXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fZG9j
dW1lbnQgfHwgIW1fZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8fCAhbV9kb2N1bWVudC0+cmVuZGVy
VmlldygpLT5uZWVkc0xheW91dCgpKTsKK30KKworUmVuZGVyVmlldyogUmVuZGVyVHJlZUFjY2Vz
czo6cmVuZGVyVmlldygpCit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5y
ZW5kZXJWaWV3KCkgOiBudWxscHRyOworfQorCit2b2lkIFJlbmRlclRyZWVBY2Nlc3M6OmVuc3Vy
ZUxheW91dFVwZGF0ZWQoTGF5b3V0VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQoreworICAgIGlmICgh
bV9kb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHVwZGF0ZVR5cGUgPT0gVXBk
YXRlTGF5b3V0KQorICAgICAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKyAgICBlbHNl
CisgICAgICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFjY2Vzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTRjZGI0MjYzODM2Y2YzYTFlOWIy
YjRhMDA1MDg5ZmM0Y2U4NmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBY2Nlc3MuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBSZW5kZXJUcmVlQWNjZXNzX2gKKyNkZWZpbmUgUmVuZGVyVHJlZUFjY2Vzc19oCisK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBGcmFtZTsKKworY2xhc3MgUmVuZGVyVmlldzsKKworY2xhc3MgUmVu
ZGVyVHJlZUFjY2VzcyB7CitwdWJsaWM6CisgICAgZW51bSBMYXlvdXRVcGRhdGVUeXBlIHsKKyAg
ICAgICAgVXBkYXRlTGF5b3V0LAorICAgICAgICBVcGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMKKyAgICB9OworCisgICAgUmVuZGVyVHJlZUFjY2VzcyhGcmFtZSYsIExheW91dFVw
ZGF0ZVR5cGUgPSBVcGRhdGVMYXlvdXQpOworICAgIFJlbmRlclRyZWVBY2Nlc3MoRG9jdW1lbnQm
LCBMYXlvdXRVcGRhdGVUeXBlID0gVXBkYXRlTGF5b3V0KTsKKyAgICAKKyAgICB+UmVuZGVyVHJl
ZUFjY2VzcygpOworICAgIAorICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKTsKKyAgICAKKyAg
ICB2b2lkIGVuc3VyZUxheW91dFVwZGF0ZWQoTGF5b3V0VXBkYXRlVHlwZSA9IFVwZGF0ZUxheW91
dCk7CisgICAgCitwcml2YXRlOgorICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CmluZGV4IDNjYjE5OGMxZmQ5ZWU3MTU4OWExM2MwNjJjNzYxN2U2N2U1ZjM0NDAuLmI0OWFiZDJh
OWU3NDQzNWUyMDY2MjVjYzBiZGE3ZWQwOWM3ZDM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJCYWNraW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUFjY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KQEAgLTM0OCwxNSArMzQ5LDE3IEBAIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzCiB7CiAg
ICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSAmJiB3aWRnZXQoKSAmJiB3
aWRnZXQoKS0+aXNGcmFtZVZpZXcoKSAmJiB0b0ZyYW1lVmlldyh3aWRnZXQoKSktPnJlbmRlclZp
ZXcoKSkgewogICAgICAgICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gdG9GcmFtZVZpZXco
d2lkZ2V0KCkpOwotICAgICAgICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmll
dy0+cmVuZGVyVmlldygpOworICAgIAorICAgICAgICBSZW5kZXJUcmVlQWNjZXNzIHJlbmRlclRy
ZWVBY2Nlc3MoY2hpbGRGcmFtZVZpZXctPmZyYW1lKCkpOworICAgICAgICBSZW5kZXJWaWV3KiBj
aGlsZFJlbmRlclZpZXcgPSByZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKTsKIAogICAgICAg
ICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0aW9uID0gYWNjdW11bGF0ZWRPZmZzZXQgKyBsb2Nh
dGlvbigpOwogICAgICAgICBMYXlvdXRQb2ludCBjb250ZW50T2Zmc2V0ID0gTGF5b3V0UG9pbnQo
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
IC0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbE9mZnNldCgpOwogICAgICAgICBIaXRUZXN0TG9jYXRp
b24gbmV3SGl0VGVzdExvY2F0aW9uKGxvY2F0aW9uSW5Db250YWluZXIsIC1hZGp1c3RlZExvY2F0
aW9uIC0gY29udGVudE9mZnNldCk7CisKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgbmV3SGl0VGVz
dFJlcXVlc3QocmVxdWVzdC50eXBlKCkgfCBIaXRUZXN0UmVxdWVzdDo6Q2hpbGRGcmFtZUhpdFRl
c3QpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IGNoaWxkRnJhbWVSZXN1bHQobmV3SGl0VGVzdExv
Y2F0aW9uKTsKLQotICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9IGNoaWxkUm9vdC0+
aGl0VGVzdChuZXdIaXRUZXN0UmVxdWVzdCwgbmV3SGl0VGVzdExvY2F0aW9uLCBjaGlsZEZyYW1l
UmVzdWx0KTsKKyAgICAgICAgYm9vbCBpc0luc2lkZUNoaWxkRnJhbWUgPSBjaGlsZFJlbmRlclZp
ZXctPmhpdFRlc3QobmV3SGl0VGVzdFJlcXVlc3QsIG5ld0hpdFRlc3RMb2NhdGlvbiwgY2hpbGRG
cmFtZVJlc3VsdCk7CiAKICAgICAgICAgaWYgKG5ld0hpdFRlc3RMb2NhdGlvbi5pc1JlY3RCYXNl
ZFRlc3QoKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGRGcmFtZVJlc3VsdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGEwMjY3YWNkNDc1NDc1YTcwMDgz
YmIxZThiODc3NWQ4ZTdlYTIxZS4uMjRiMDYxZDFlZmFjNzUyZjZiZmNkZjI5YTljNDk1M2EzMTRh
M2Q0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTExNyw3ICsxMTE3
LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3Vt
ZW50KiBkb2N1bWVudCwgaW50IGNlbnRlclgsIGkKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IGRvY3VtZW50LT52aWV3KCk7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGRvY3VtZW50
LT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAppbmRleCA4YjkzY2Q2Yjk1OWJiMTUzZmJjYWQwZThmZWE5ODM5YWY5NmFkM2MyLi40NGIw
MmEzY2QwYjFiZTk2YmEyMWNkNmVmOWY0NjhiNTZmNGU3NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZURvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJUcmVlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC04MiwxMSArODMsMTMgQEAgdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEYK
ICAgICBpZiAobV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVy
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBJbnRQb2ludCBvcmlnaW5JbkNvbnRl
bnRzU3BhY2UgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJv
dW5kZWRJbnRQb2ludChvcmlnaW4pKTsKICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQg
PSBIaXRUZXN0UmVzdWx0KG9yaWdpbkluQ29udGVudHNTcGFjZSk7Ci0KLSAgICBtX3dlYlBhZ2Uu
bWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgaGl0VGVzdFJl
c3VsdCk7CisgICAgeworICAgICAgICBSZW5kZXJUcmVlQWNjZXNzIHJlbmRlclRyZWVBY2Nlc3Mo
Km1fd2ViUGFnZS5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgICAgICBy
ZW5kZXJUcmVlQWNjZXNzLnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVz
dWx0KTsKKyAgICB9CiAKICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJO
b2RlKCkpIHsKICAgICAgICAgYm9vbCBpc1JlcGxhY2VkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238505</attachid>
            <date>2014-09-22 17:32:23 -0700</date>
            <delta_ts>2014-09-22 21:39:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136651-20140922173221.patch</filename>
            <type>text/plain</type>
            <size>12982</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE3NGFjZWZmMDA2NGFi
OTBmZjNhYWVhM2MzMjlmZmY1YzJlNDIxOS4uOWQ1ZTc5YTMxN2YxYmRiZTgxOTUzZWZkOWQ0YjZh
ZDIxNTFkNmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE0LTA5LTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEVuc3VyZSB0aGF0
IGxheW91dCBpcyB1cC10by1kYXRlIGJlZm9yZSBoaXQtdGVzdGluZyB2aWEgUmVuZGVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NjUxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIHRo
YXQgbGF5b3V0IGlzIHVwLXRvLWRhdGUgYmVmb3JlIHdlIGRvIGhpdC10ZXN0aW5nIHZpYSB0aGUg
UmVuZGVyVmlldy4KKyAgICAgICAgUHJldmlvdXNseSwgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoKSBj
YWxsZWQgdXBkYXRlTGF5b3V0KCksIGJ1dCBpdCdzIGJldHRlcgorICAgICAgICB0byBwdXNoIHRo
YXQgcmVzcG9uc2liaWxpdHkgb250byBSZW5kZXJWaWV3IGJlZm9yZSBlbnRlcmluZyB0aGUgUmVu
ZGVyTGF5ZXIKKyAgICAgICAgdHJlZS4KKyAgICAgICAgCisgICAgICAgIE1ha2UgY2FsbGVycyBh
IGxpdHRsZSBtb3JlIGNvbnNpc3RlbnQgaW4gZ2V0dGluZyB0aGUgUmVuZGVyVmlldyB2aWEKKyAg
ICAgICAgRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpLCB0aG91Z2ggcGVyaGFwcyB3ZSBzaG91bGQg
cmVtb3ZlIHRoYXQgYW5kIGp1c3QKKyAgICAgICAgY2FsbCBEb2N1bWVudDo6cmVuZGVyVmlldygp
IGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3MpOiBI
aXQgdGVzdCB2aWEgdGhlIFJlbmRlclZpZXcsIHJhdGhlcgorICAgICAgICB0aGFuIGRvaW5nIHNv
IG9uIHRoZSBSZW5kZXJWaWV3J3MgbGF5ZXIsIHRvIGVuc3VyZSB0aGF0IHdlIHVwZGF0ZUxheW91
dCgpLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SGl0VGVzdCk6IFRoaXMgY29kZSBjYWxscworICAgICAgICBoaXRUZXN0KCkgb24gYXJi
aXRyYXJ5IGxheWVycywgc28gbmVlZHMgdG8gZXhwbGljaXRseSB1cGRhdGUgbGF5b3V0LgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OmNvbnRhaW5zKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQp
OiBUaGUgZXhwbGljaXQgdXBkYXRlTGF5b3V0KCkgaXMKKyAgICAgICAgbm8gbG9uZ2VyIG5lZWRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpoaXRUZXN0UmVzdWx0SW5GcmFtZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6Y29udGVudFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRl
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OmhpdFRlc3QpOiBIZXJlJ3Mgd2hlcmUgd2UgZW5zdXJlIHRoYXQgbGF5
b3V0IGlzIHVwLXRvLWRhdGUuCisKKzIwMTQtMDktMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBub2RlRnJvbVBvaW50KCkgYmFjayB0byBE
b2N1bWVudCB3aGVyZSBpdCBiZWxvbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzcwMTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggYmZhODI1ZTg3YzI2OGFkNmQ0
MGVkNzFjZmI3Yzc4MTM4Y2FlMDUwNy4uNjg5ZjFkNmM3NGE5MDc2NjljNDA3NmE2NGY3MmY4NzAy
MmY3Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCkBAIC03ODIsMTIgKzc4Miw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6cHJlc3MoKQogICAgIC8vIGFzIHRoZSB0YXJnZXQgb2YgdGhlIGFjdGlvbi4KICAg
ICBFbGVtZW50KiBoaXRUZXN0RWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYgKERvY3VtZW50KiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7Ci0gICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHJlbmRlclZpZXctPmxheWVyKCk7Ci0gICAgICAgIAogICAgICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6QWNjZXNzaWJpbGl0eUhpdFRlc3QpOwotICAgICAgICBIaXRU
ZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVzdWx0KGNsaWNrUG9pbnQoKSk7Ci0g
ICAgICAgIGxheWVyLT5oaXRUZXN0KHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQpOworICAgICAgICBI
aXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQoY2xpY2tQb2ludCgpKTsKKyAgICAgICAgZG9jdW1l
bnQtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKICAgICAg
ICAgaWYgKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKICAgICAgICAgICAgIE5vZGUqIGlu
bmVyTm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0ZWRTaGFkb3dBbmNl
c3Rvck5vZGUoKTsKICAgICAgICAgICAgIGlmIChpbm5lck5vZGUtPmlzRWxlbWVudE5vZGUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGRjZmE3ZDU1ZjkzMzBiNmIxYjI4ODI1M2ZjZTkyMGM0
N2M5N2I3NzIuLjc2NDk1YjU3MTU2Njc3YWIzZmM4ZTRhODU0NGNlMTI1MDU0YjhjNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcApAQCAtMjE5OSw2ICsyMTk5LDggQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG8KICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAorICAgIG1fcmVuZGVyZXItPmRvY3VtZW50KCku
dXBkYXRlTGF5b3V0KCk7CisKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveCht
X3JlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICAgCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6OkFjY2Vzc2liaWxpdHlIaXRUZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYmFiMTI1NzE3Y2E1OWJhNzQ4MDgwOGYyYmUzNTM5NDZi
ZjMyYjY1YS4uMGUzZjNmZTAzOWMwN2Q1YTIxZjE5MDVkOWZlZDA1Mjg0NjAwM2Y0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE1ODksMTYgKzE1ODks
MTYgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QqIHIs
IGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAKIGJvb2wgRnJhbWVTZWxlY3Rpb246OmNvbnRhaW5zKGNv
bnN0IExheW91dFBvaW50JiBwb2ludCkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpOwotICAgIAogICAgIC8vIFRyZWF0IGEgY29sbGFwc2VkIHNlbGVjdGlv
biBsaWtlIG5vIHNlbGVjdGlvbi4KICAgICBpZiAoIWlzUmFuZ2UoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkgCisgICAgCisgICAgUmVu
ZGVyVmlldyogcmVuZGVyVmlldyA9IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHBvaW50KTsKLSAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0
KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3VsdCk7CisgICAgcmVuZGVyVmlldy0+aGl0VGVzdChIaXRU
ZXN0UmVxdWVzdCgpLCByZXN1bHQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC5pbm5l
ck5vZGUoKTsKICAgICBpZiAoIWlubmVyTm9kZSB8fCAhaW5uZXJOb2RlLT5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggYTg0MTdmZGNhYjBjM2Y1OTc5NDA0YTk3NTczZTUyNjE1MDA3OGMxMi4uZDk3ZDljNzE4YmI5
NDJiOTMxYzZmNDgyNzk4OTUxZWExZDU4ZTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtODUwLDggKzg1MCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0
YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIC8vIFRo
aXMgaXMgYSBwcmUtZmxpZ2h0IGNoZWNrIG9mIHdoZXRoZXIgdGhlIGV2ZW50IG1pZ2h0IGxlYWQg
dG8gYSBkcmFnIGJlaW5nIHN0YXJ0ZWQuICBCZSBjYXJlZnVsCiAgICAgLy8gdGhhdCBpdHMgbG9n
aWMgbmVlZHMgdG8gc3RheSBpbiBzeW5jIHdpdGggaGFuZGxlTW91c2VNb3ZlRXZlbnQoKSBhbmQg
dGhlIHdheSB3ZSBzZXRNb3VzZURvd25NYXlTdGFydERyYWcKICAgICAvLyBpbiBoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQKLSAgICAKLSAgICBpZiAoIW1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwg
IW1fZnJhbWUuY29udGVudFJlbmRlcmVyKCktPmhhc0xheWVyKCkpCisgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJW
aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZXZlbnQuYnV0dG9uKCkgIT0g
TGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0gMSkKQEAgLTg3MSw3ICs4NzEsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkgY29uc3QKICAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQo
KTsKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOwotICAg
IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAg
ICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0
YXRlOwogICAgIHJldHVybiByZXN1bHQuaW5uZXJFbGVtZW50KCkgJiYgcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQuaW5uZXJFbGVtZW50KCks
IHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCksIHN0YXRlKTsKIH0KQEAgLTg4
MSwxMyArODgxLDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURyYWcoKQogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlclZpZXcqIHJlbmRlcmVyID0gbV9mcmFt
ZS5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQorICAgIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
VmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJl
cXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbikpOwotICAgIHJlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7
CisgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIHVwZGF0ZVNl
bGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwogfQogCkBAIC0xMTI3LDE0ICsxMTI3LDEzIEBA
IEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlCiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2lu
dCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBw
YWRkaW5nLndpZHRoKCkpOwogCi0gICAgaWYgKCFtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQor
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgCiAgICAgLy8gaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgaXMgc3BlY2lmaWNhbGx5IHVzZWQgdG8gaGl0VGVzdCBpbnRvIGFsbCBmcmFtZXMs
IHRodXMgaXQgYWx3YXlzIGFsbG93cyBjaGlsZCBmcmFtZSBjb250ZW50LgogICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVD
b250ZW50KTsKLSAgICBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CisgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAg
IGlmICghcmVxdWVzdC5yZWFkT25seSgpKQogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKIApA
QCAtMTMzOSw4ICsxMzM4LDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcigpCiAg
ICAgYm9vbCBtZXRhS2V5OwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1v
ZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7CiAKLSAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotCiAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAg
ICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwpAQCAtMjY2Miw4ICsyNjU5
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEUKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudC0+
cmVuZGVyVmlldygpKQorICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX2ZyYW1lLmNvbnRl
bnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKQEAg
LTI2NzcsNyArMjY3NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1No
YWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29u
dGVudHMoZXZlbnQucG9zaXRpb24oKSkpOwotICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmhp
dFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICByZW5kZXJWaWV3LT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IHJlc3VsdC5pbm5lckVs
ZW1lbnQoKTsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2Nyb2xsYWJsZUNvbnRhaW5lcjsK
QEAgLTI2ODcsOSArMjY4NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgaWYgKGV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lICYmIGV2
ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCi0gICAg
ewogICAgICAgICBtX2ZyYW1lLm1haW5GcmFtZSgpLmxhdGNoaW5nU3RhdGUoKS0+Y2xlYXIoKTsK
LSAgICB9CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgbm90IGJlIG5lY2Vzc2Fy
eSB0byBkbyB0aGlzIG11dGF0aW9uIGhlcmUuCkBAIC0yOTg1LDExICsyOTgwLDExIEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiYpCiAKICAg
ICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKIAotICAgIGlmIChSZW5kZXJWaWV3KiByZW5k
ZXJlciA9IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkpIHsKKyAgICBpZiAoUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKEZy
YW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2Fs
bG93U2hhZG93Q29udGVudCk7CiAgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOwotICAgICAgICAg
ICAgcmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbmRl
clZpZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVt
ZW50KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzc2Myw2ICszNzU4LDcgQEAgc3RhdGljIEhp
dFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEluRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQKIAogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKwogICAgIGlmIChmcmFtZS0+dmlldygpKSB7
CiAgICAgICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVj
dCgpOwogICAgICAgICBpZiAoIXJlY3QuY29udGFpbnMocm91bmRlZEludFBvaW50KHBvaW50KSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI5NjBlZDIyODMyMmQzMWJlZjliZWM0NGEyM2E0OTY1
YzMyNGVmN2IuLjU2Y2FiZDdlYzhjZjY1YmQ1MTg3YjE3MGU3NjFiOTNlYjI0M2U3YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNl
clNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
VmUKIAogUmVuZGVyVmlldyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkgOiAwOworICAgIHJl
dHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKIH0K
IAogUmVuZGVyV2lkZ2V0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1NzM1ZTE2MmRmNDM2MmUzOTUyOGUy
OGY0N2I2MDY1NDlhNTFmZmZhLi4xNTc0M2ZkYmE5MTQ2YjQ1Yzk2ZGYyZjA4NzZiNzUxNjM0NjY5
NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ2NDEs
OCArNDY0MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIGJvb2wgUmVuZGVyTGF5ZXI6Omhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYgaGl0VGVzdExvY2F0aW9uLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgQVNTRVJU
KGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQo
KSk7Ci0KLSAgICByZW5kZXJlcigpLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisgICAgQVNT
RVJUKCFyZW5kZXJlcigpLnZpZXcoKS5uZWVkc0xheW91dCgpKTsKIAogICAgIExheW91dFJlY3Qg
aGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyRmxv
d1RocmVhZCgmcmVuZGVyZXIoKSktPnZpc3VhbE92ZXJmbG93UmVjdCgpIDogcmVuZGVyZXIoKS52
aWV3KCkuZG9jdW1lbnRSZWN0KCk7CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNjBjNzNhNGM0YmMx
MDU1ZDE0NzkyZmY3OWNhOGZjMzA0MmIwYTUyZS4uYTc5ZGQyNWVkNDg4MWE2ZjRiZThiNTg4MjM4
NjU4MmFhMGI5ZGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApA
QCAtMTc0LDYgKzE3NCw4IEBAIGJvb2wgUmVuZGVyVmlldzo6aGl0VGVzdChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogCiBib29sIFJlbmRlclZp
ZXc6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb24sIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKKyAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dCgpOworCiAgICAgaWYgKGxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwg
bG9jYXRpb24sIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>