<?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>158629</bug_id>
          
          <creation_ts>2016-06-10 12:03:01 -0700</creation_ts>
          <short_desc>Focus event dispatched in iframe causes parent document to scroll incorrectly</short_desc>
          <delta_ts>2018-06-04 08:20:25 -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>Frames</component>
          <version>Safari 9</version>
          <rep_platform>iPhone / iPad</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158867</dependson>
    
    <dependson>158972</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Chu">aaron_chu</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jcraig</cc>
    
    <cc>jonlee</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yann.armelin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201319</commentid>
    <comment_count>0</comment_count>
      <attachid>281025</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-06-10 12:03:01 -0700</bug_when>
    <thetext>Created attachment 281025
a test case to demonstrate the bug

On a very long page, when the focus event is dispatched in an iframe to focus an element within the frame, the browser scrolls the page so that the iframe becomes visible when the scrollY begins at the top of the document (0). If the scrollY begins with a value &gt; 0, the browser incorrectly scroll pass the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201345</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-10 12:59:15 -0700</bug_when>
    <thetext>We do have code that tries to suppress scrolling:

#if PLATFORM(IOS)
    // Focusing a form element triggers animation in UIKit to scroll to the right position.
    // Calling updateFocusAppearance() would generate an unnecessary call to ScrollView::setScrollPosition(),
    // which would jump us around during this animation. See &lt;rdar://problem/6699741&gt;.
    FrameView* view = document().view();
    bool isFormControl = view &amp;&amp; is&lt;HTMLFormControlElement&gt;(*this);
    if (isFormControl)
        view-&gt;setProhibitsScrolling(true);
#endif
    updateFocusAppearance(restorePreviousSelection ? SelectionRestorationMode::Restore : SelectionRestorationMode::SetDefault);
#if PLATFORM(IOS)
    if (isFormControl)
        view-&gt;setProhibitsScrolling(false);
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201346</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-10 13:05:04 -0700</bug_when>
    <thetext>Ah, I think the problem is rather obvious. view-&gt;setProhibitsScrolling() is only called on the inner FrameView, not all the ancestor ones, so the ancestor ones scroll, and with incorrect offsets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202487</commentid>
    <comment_count>3</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-06-14 21:47:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/26521616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202567</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-15 07:56:24 -0700</bug_when>
    <thetext>I plan to fix this but am having some problems getting a reliable testcase for iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203071</commentid>
    <comment_count>5</comment_count>
      <attachid>281498</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-16 16:06:42 -0700</bug_when>
    <thetext>Created attachment 281498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203075</commentid>
    <comment_count>6</comment_count>
      <attachid>281498</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-06-16 16:17:47 -0700</bug_when>
    <thetext>Comment on attachment 281498
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203089</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-16 16:34:35 -0700</bug_when>
    <thetext>https://trac.webkit.org/r202147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203123</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-06-16 17:15:11 -0700</bug_when>
    <thetext>This change appears to have caused test failures on iso-simulator

Regressions: Unexpected text-only failures (9)
  editing/input/caret-at-the-edge-of-input.html [ Failure ]
  fast/forms/input-text-scroll-left-on-blur.html [ Failure ]
  fast/forms/textarea-no-scroll-on-blur.html [ Failure ]
  fast/forms/textarea-scrolled-type.html [ Failure ]
  fast/forms/textfield-outline.html [ Failure ]
  fast/overflow/scroll-nested-positioned-layer-in-overflow.html [ Failure ]
  fast/overflow/scrollRevealButton.html [ Failure ]
  fast/scrolling/ios/scrollTo-at-page-load.html [ Failure ]
  fast/transforms/scrollIntoView-transformed.html [ Failure ]

&lt;https://build.webkit.org/builders/Apple%20iOS%209%20Simulator%20Release%20WK2%20%28Tests%29/builds/6606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203136</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-16 17:53:01 -0700</bug_when>
    <thetext>Thanks, I will investigate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203150</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-16 18:29:08 -0700</bug_when>
    <thetext>I think these are probably because I disabled both overflow and frame scrolling, but we should really allow overflow scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203230</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-16 23:17:41 -0700</bug_when>
    <thetext>We can&apos;t have 9 tests failing of so long, this should have been rolled out. Will do it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203235</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 23:20:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 158867</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203236</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-16 23:20:40 -0700</bug_when>
    <thetext>What&apos;s particularly unfortunate is that some of these tests were already flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203887</commentid>
    <comment_count>14</comment_count>
      <attachid>281675</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-20 14:04:47 -0700</bug_when>
    <thetext>Created attachment 281675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203893</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-20 14:23:32 -0700</bug_when>
    <thetext>https://trac.webkit.org/r202243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204005</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-20 20:03:31 -0700</bug_when>
    <thetext>This broke Windows build:

C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\win\WebView.cpp(3975): error C2664: &apos;void WebCore::FrameSelection::revealSelection(WebCore::SelectionRevealMode,const WebCore::ScrollAlignment &amp;,WebCore::RevealExtentOption)&apos;: cannot convert argument 1 from &apos;const WebCore::ScrollAlignment&apos; to &apos;WebCore::SelectionRevealMode&apos; [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKit\WebKit.vcxproj]
  C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\win\WebView.cpp(3975): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

And iOS tests:

Regressions: Unexpected text-only failures (1)
  fast/overflow/scrollRevealButton.html [ Failure ]

Why was this patch landed without waiting for EWS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204007</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 20:05:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 158972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204014</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-20 20:09:04 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/r202263.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204274</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-21 13:58:46 -0700</bug_when>
    <thetext>https://trac.webkit.org/r202292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429791</commentid>
    <comment_count>20</comment_count>
    <who name="Yann Armelin">yann.armelin</who>
    <bug_when>2018-06-04 02:11:47 -0700</bug_when>
    <thetext>This issue still occurs on Safari 11 and last Webkit version, only if the target element is a non-input HTML elements (like div or span).

It can also be reproduced when element.scrollIntoView is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429792</commentid>
    <comment_count>21</comment_count>
      <attachid>341898</attachid>
    <who name="Yann Armelin">yann.armelin</who>
    <bug_when>2018-06-04 02:14:06 -0700</bug_when>
    <thetext>Created attachment 341898
new test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429813</commentid>
    <comment_count>22</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-04 08:02:23 -0700</bug_when>
    <thetext>(In reply to Yann Armelin from comment #21)
&gt; Created attachment 341898 [details]
&gt; new test case

Because of the age of this bug, it&apos;s closed. Yann, would you mind filing a new bug containing your test case? Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429820</commentid>
    <comment_count>23</comment_count>
    <who name="Yann Armelin">yann.armelin</who>
    <bug_when>2018-06-04 08:20:25 -0700</bug_when>
    <thetext>Sure, new bug : https://bugs.webkit.org/show_bug.cgi?id=186268</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>281025</attachid>
            <date>2016-06-10 12:03:01 -0700</date>
            <delta_ts>2016-06-10 12:03:01 -0700</delta_ts>
            <desc>a test case to demonstrate the bug</desc>
            <filename>iframe-scrolling-offset.zip</filename>
            <type>application/zip</type>
            <size>1822</size>
            <attacher name="Aaron Chu">aaron_chu</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAE5dykgAAAAAAAAAAAAAAAAYABAAaWZyYW1lLXNjcm9sbGluZy1vZmZzZXQvVVgM
AAgKW1cUCltX9QFQAFBLAwQUAAgACAB4XMpIAAAAAAAAAAAAAAAAJAAQAGlmcmFtZS1zY3JvbGxp
bmctb2Zmc2V0L2NvbnRlbnQuaHRtbFVYDABOCVtXhAhbV/UBUAB9VMFu2zAMPcdfweVSF02d5LBL
4wbYug4r0GEFlh12VCw6ISBLnkQFKdb8+0gnKXJaLiLMx6f3KDL1hy8/Hla/Xx5hy51bFvX5QGOX
xahmYofLeno85UPi1yGwtLtrQ5MT/C1Go3WIFuMdzPs9pODIQkS7KEYHqZieSurpkbReB/u6LIpa
KIDs/bgdA5s1eYv7+/FsvFxtEZrgGT3XUwEpNjWRel4WOxPBwD1YuboTQLVBfnSo4efXJ1teUZ9y
d2uurhcDtv0ftlVU0WbfMAUP5BNGflKCsgnZ8wTWJuG1OAT5KV2/eA8bYR5Q8PYGc+HRRBsilJol
yc4WctSCup1LdHNzJgLoL1U1EQ3jSVh51auoE6wi7zF+W31/loLxc4jYwWBQqp1clYjBdChCpV8J
G0bO0h9LPaWG/AbQEVfwkKP0V1OdcZiysQZ2uKUmOwOYGJCVYGeco1TBk4c1rdFbueeS10ujhHHQ
KSnGrg9R4YwbFMsejISAGTwlgq0wRIwisTN76rIwv8SgqEa+pGRAylkGK8QJuNywzBKjc3Ls0E1g
F1zm3jAIgPWirzk1CBwpMf3JeOqEXMfkG7L6FC3Go7oKfqKV6RIqj94wJXCmUQ2fnBSbDrogrWBC
FetAHEgr80ZoXZBp1oJziyr4xeqbWnEEcRu8jv1R8WVz1854K3Zxrw1FT0P7lJK6HqMllLd42cpI
DSbFGWZKXbD6BhMV20tG5GNSe8e3Uxvvb6Oi3dkKZNaAPJlqfB4ZHdjK9L0ofdiSs2V/mqZDcSiK
6fRyxj/OJmB0A4qEvKIOQ+byfRvKa1nsthp2vBTUYQLz2WwmkWz0aRslPC6z7Lb+b/wDUEsHCH5L
btGAAgAATgQAAFBLAwQUAAgACADzXMpIAAAAAAAAAAAAAAAALQAQAGlmcmFtZS1zY3JvbGxpbmct
b2Zmc2V0L2lmcmFtZS1zY3JvbGxpbmcuaHRtbFVYDABdCVtXaQlbV/UBUACFVMFu2zAMvfsruFya
oqnTHnaqG2DrWqxAhxVoe9hRlpiEgCx5EhW0WPfvI+0k8HbZJVKox8f3KFrNhy/fb55/PN7Clju/
qprDgsatKoCGiT2u6C6ZDuHJpug9hU2zHONVsxyRTRvd26qqqsbRDshdz6jPpTs3s1WzlJAgaD1w
5GSvZzYGxsC1VlPEeLb6N7s9ZleqJdtEPassgJ1JYOAaXLSlU6oN8q1H3X5+u3fzk339k9OrI779
P75V/JCwLsEyxQAUMia+1+O5jSXwAlqT8RR+DbgDeX/1118rtQY0vL/D5Z5z4I0J5oogQVxcydII
8vxSdmdnU1KAfqrXJjSMe8nzk/5gbA+tKQRMX5+/PUjS7CEm7GCwJAxeSmZikBaLeOl9RsvIRTro
qKds5UYBPXENNyWZlvSoMx5zMc7ADrdkizeAmQFZCXZGxiDXcB+gpRaDkzpT3iDNE8ZBqxwxdn1M
CmfcoFgPYGQLWCBQJtgKQ8IkEjvzSl0R5scUFWUlkrMBSWcZuZgW4IvlkoXTe1l26Bewi75wbxgE
wFrormSLwIky08+C+05IOaZgyem1rDGN6mp4QidDJ1QBg2HK4I1VDZ+8JJsOuiitYEIV60EcSCvL
Rmh9bKUg5WOLanhh9U1rcQRpG4MQ7RVPm9t6E5zYxVdtKAYa2qeU1PWYHKHcxeNWxmwwKc6wUO6i
0ztYqNheTkQ+ZrU33p3aON6NivYHK1BYNxTI1LPp2Ogg16bvRe3Nlryb95Op+l2Nv8My/QouLxZg
9sBp/KPE2yHeLA/farMcXwZ5KPRl+QNQSwcIKhreQV4CAABwBAAAUEsBAhUDCgAAAAAATl3KSAAA
AAAAAAAAAAAAABgADAAAAAAAAAAAQO1BAAAAAGlmcmFtZS1zY3JvbGxpbmctb2Zmc2V0L1VYCAAI
CltXFApbV1BLAQIVAxQACAAIAHhcykh+S27RgAIAAE4EAAAkAAwAAAAAAAAAAECkgUYAAABpZnJh
bWUtc2Nyb2xsaW5nLW9mZnNldC9jb250ZW50Lmh0bWxVWAgATglbV4QIW1dQSwECFQMUAAgACADz
XMpIKhreQV4CAABwBAAALQAMAAAAAAAAAABApIEoAwAAaWZyYW1lLXNjcm9sbGluZy1vZmZzZXQv
aWZyYW1lLXNjcm9sbGluZy5odG1sVVgIAF0JW1dpCVtXUEsFBgAAAAADAAMAFwEAAPEFAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281498</attachid>
            <date>2016-06-16 16:06:42 -0700</date>
            <delta_ts>2016-06-20 14:04:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158629-20160616160640.patch</filename>
            <type>text/plain</type>
            <size>10234</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI0NzQwYTJlNTRmZTI0
ZjhjYzcyNWFlOGRiNDcwYTUxZWQxM2FjOC4uNmIzNjNkYzM2OWM5YTlmYjIzNGQ2M2U3Yzc0ZWE5
MjgxZWVkMTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA2LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEZvY3Vz
IGV2ZW50IGRpc3BhdGNoZWQgaW4gaWZyYW1lIGNhdXNlcyBwYXJlbnQgZG9jdW1lbnQgdG8gc2Ny
b2xsIGluY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2MjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjY1MjE2MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdoZW4gZm9j
dXNzaW5nIGVsZW1lbnRzIGluIGlmcmFtZXMsIHRoZSBwYWdlIGNvdWxkIHNjcm9sbCB0byBhbiBp
bmNvcnJlY3QgbG9jYXRpb24uCisgICAgICAgIFRoaXMgaGFwcGVuZWQgYmVjYXVzZSBjb2RlIGlu
IEVsZW1lbnQ6OmZvY3VzKCkgdHJpZWQgdG8gZGlzYWJsZSBzY3JvbGxpbmcgb24gZm9jdXMsCisg
ICAgICAgIGJ1dCBkaWQgc28gb25seSBmb3IgdGhlIGN1cnJlbnQgZnJhbWUsIHNvIGFuY2VzdG9y
IGZyYW1lcyBnb3QgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxlZC4KKyAgICAgICAgT24gaU9TIHdl
IGhhbmRsZSB0aGUgc2Nyb2xsaW5nIGluIHRoZSBVSSBwcm9jZXNzLCBzbyBuZXZlciB3YW50IHRo
ZSB3ZWIgcHJvY2VzcyB0bworICAgICAgICBkbyBwcm9ncmFtbWF0aWMgc2Nyb2xsaW5nLgorICAg
ICAgICAKKyAgICAgICAgRml4IGJ5IGNoYW5naW5nIHRoZSBmb2N1cyBhbmQgY2FjaGUgcmVzdG9y
ZSBjb2RlIHRvIHVzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbCwKKyAgICAgICAg
cmF0aGVyIHRoYW4gbWFudWFsbHkgcHJvaGliaXRpbmcgZnJhbWUgc2Nyb2xsaW5nLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lvcy9mb2N1cy1pbnB1dC1pbi1pZnJhbWUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGljLWZvY3VzLWlucHV0LWluLWlm
cmFtZS5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorCiAyMDE2LTA2LTE2ICBBZGFt
IEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJS
VEM6IENoZWNrIHR5cGUgb2YgdGhpcyBpbiBSVENQZWVyQ29ubmVjdGlvbiBKUyBidWlsdC1pbiBm
dW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlZWJiNzE1YjA5NzA0NjdlNzEzNDRi
YjdiOGJhNTJhYmQwNTRiNmI1Li5jZGI2NWE0ZGM2YjFjNTNlNDIyYzFkMDMwNzE2MWQ1OTc0YTVl
MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMjQ1LDYgKzIyNDUsOCBAQCB2b2lkIEVs
ZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24pCiAgICAgfQogICAgICAgICAKICAgICBjYW5jZWxGb2N1c0FwcGVhcmFuY2VV
cGRhdGUoKTsKKworICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRm9jdXNpbmcg
YSBmb3JtIGVsZW1lbnQgdHJpZ2dlcnMgYW5pbWF0aW9uIGluIFVJS2l0IHRvIHNjcm9sbCB0byB0
aGUgcmlnaHQgcG9zaXRpb24uCiAgICAgLy8gQ2FsbGluZyB1cGRhdGVGb2N1c0FwcGVhcmFuY2Uo
KSB3b3VsZCBnZW5lcmF0ZSBhbiB1bm5lY2Vzc2FyeSBjYWxsIHRvIFNjcm9sbFZpZXc6OnNldFNj
cm9sbFBvc2l0aW9uKCksCkBAIC0yMjUyLDEzICsyMjU0LDkgQEAgdm9pZCBFbGVtZW50Ojpmb2N1
cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50KCkudmlldygpOwogICAgIGJvb2wgaXNG
b3JtQ29udHJvbCA9IHZpZXcgJiYgaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKnRoaXMpOwog
ICAgIGlmIChpc0Zvcm1Db250cm9sKQotICAgICAgICB2aWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxp
bmcodHJ1ZSk7Ci0jZW5kaWYKLSAgICB1cGRhdGVGb2N1c0FwcGVhcmFuY2UocmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uID8gU2VsZWN0aW9uUmVzdG9yYXRpb25Nb2RlOjpSZXN0b3JlIDogU2VsZWN0
aW9uUmVzdG9yYXRpb25Nb2RlOjpTZXREZWZhdWx0KTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAg
aWYgKGlzRm9ybUNvbnRyb2wpCi0gICAgICAgIHZpZXctPnNldFByb2hpYml0c1Njcm9sbGluZyhm
YWxzZSk7CisgICAgICAgIHJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJl
dmVhbDsKICNlbmRpZgorICAgIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShyZXN0b3JlUHJldmlvdXNT
ZWxlY3Rpb24gPyBTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmUgOiBTZWxlY3Rpb25S
ZXN0b3JhdGlvbk1vZGU6OlNldERlZmF1bHQsIHJldmVhbE1vZGUpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZUFmdGVyQXR0YWNoSWZOZWVkZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggYWRkNjRlMGMxYjJlMzdkMmM1NjRiNzAyMjZl
OWM2MjMyNGI1MzdkNC4uZTcwMWFkNzJiNzBhOTc0NDAxMTY0OWMxNTJmMmQ0NzRiNmNiYmMyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC03NywyNSArNzcsMTggQEAg
dm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UmIHBhZ2UpCiAgICAgbV9jYWNoZWRNYWluRnJh
bWUtPm9wZW4oKTsKICAgICAKICAgICAvLyBSZXN0b3JlIHRoZSBmb2N1cyBhcHBlYXJhbmNlIGZv
ciB0aGUgZm9jdXNlZCBlbGVtZW50LgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2UgZG9uJ3Qg
c3VwcG9ydCBwYWdlcyB3LyBmcmFtZXMgaW4gdGhlIGIvZiBjYWNoZS4gIFRoaXMgbWF5IG5lZWQg
dG8gYmUgdHdlYWtlZCB3aGVuIHdlIGFkZCBzdXBwb3J0IGZvciB0aGF0LgorICAgIC8vIEZJWE1F
OiBSaWdodCBub3cgd2UgZG9uJ3Qgc3VwcG9ydCBwYWdlcyB3aXRoIGZyYW1lcyBpbiB0aGUgYi9m
IGNhY2hlLiBUaGlzIG1heSBuZWVkIHRvIGJlIHR3ZWFrZWQgd2hlbiB3ZSBhZGQgc3VwcG9ydCBm
b3IgdGhhdC4KICAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gcGFnZS5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmIChFbGVtZW50
KiBlbGVtZW50ID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpKSB7CisgICAgICAg
IFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1vZGU6OlJl
dmVhbDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgZm9jdXNl
ZCBub2RlcyBjaGFuZ2luZyBzY3JvbGwgcG9zaXRpb24gd2hlbiByZXN0b3JpbmcgZnJvbSB0aGUg
Y2FjaGUKICAgICAgICAgLy8gYXMgaXQgY2FuIGNhdXNlIHVnbHkganVtcHMgYmVmb3JlIHdlIG1h
bmFnZSB0byByZXN0b3JlIHRoZSBjYWNoZWQgcG9zaXRpb24uCiAgICAgICAgIHBhZ2UubWFpbkZy
YW1lKCkuc2VsZWN0aW9uKCkuc3VwcHJlc3NTY3JvbGxpbmcoKTsKLQotICAgICAgICBib29sIGhh
ZFByb2hpYml0c1Njcm9sbGluZyA9IGZhbHNlOwotICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IHBhZ2UubWFpbkZyYW1lKCkudmlldygpOwotICAgICAgICBpZiAoZnJhbWVWaWV3KSB7Ci0g
ICAgICAgICAgICBoYWRQcm9oaWJpdHNTY3JvbGxpbmcgPSBmcmFtZVZpZXctPnByb2hpYml0c1Nj
cm9sbGluZygpOwotICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmco
dHJ1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1v
ZGU6OkRvTm90UmV2ZWFsOwogI2VuZGlmCi0gICAgICAgIGVsZW1lbnQtPnVwZGF0ZUZvY3VzQXBw
ZWFyYW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGU6OlJlc3RvcmUpOworICAgICAgICBlbGVt
ZW50LT51cGRhdGVGb2N1c0FwcGVhcmFuY2UoU2VsZWN0aW9uUmVzdG9yYXRpb25Nb2RlOjpSZXN0
b3JlLCByZXZlYWxNb2RlKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIGlmIChmcmFtZVZp
ZXcpCi0gICAgICAgICAgICBmcmFtZVZpZXctPnNldFByb2hpYml0c1Njcm9sbGluZyhoYWRQcm9o
aWJpdHNTY3JvbGxpbmcpOwogICAgICAgICBwYWdlLm1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnJl
c3RvcmVTY3JvbGxpbmcoKTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YTJhMTcwOTFjMzcyZWU5
N2FlYjVkMTM5YWEzMmY0NGQwN2RiZTE1Li5hYjY3NWE1YTIzMTQ4ZTY5NDliMjE3OGI3MmQyM2Yw
YmYwNGFmNTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMTYgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgRm9jdXMgZXZlbnQgZGlzcGF0
Y2hlZCBpbiBpZnJhbWUgY2F1c2VzIHBhcmVudCBkb2N1bWVudCB0byBzY3JvbGwgaW5jb3JyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODYy
OQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNjUyMTYxNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdHMgZm9yIHVzZXItaW5pdGlh
dGVkIGFuZCBwcm9ncmFtbWF0aWMgZm9jdXMgaW4gZnJhbWVzLgorCisgICAgICAgICogZmFzdC9m
b3Jtcy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJh
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGljLWZv
Y3VzLWlucHV0LWluLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDE2LTA2LTE1ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0sy
XSBPbiBpUGFkLCBpbmRpcmVjdCBmb2N1c3Npbmcgb2YgYSB0ZXh0IGZpZWxkIGRvZXNuJ3QgYWx3
YXlzIHNjcm9sbCB0byB0aGUgY29ycmVjdCBsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2ZvY3VzLWlucHV0LWluLWlmcmFtZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjVhMmViZDJmZmFiNzEzOTk0MmUyY2Q3NmVlN2I2M2IyMGM3NmZjZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2ZvY3VzLWlucHV0
LWluLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB6b29taW5nIGlu
dG8gYSB0ZXh0IGlucHV0IG9uIHRhcC4KKworQ2xpY2sgdG8gZm9jdXMgaW5wdXQKKwordGFwIGxv
Y2F0aW9uCXsgeDogMjAuMDAwLCB5OiA2Mi4wMDAgfQorc2NhbGUJMS40NTUKK3Zpc2libGVSZWN0
CXsgbGVmdDogMC4wMDAsIHRvcDogMTIwMS45NzYsIHdpZHRoOiAyMTkuOTc5LCBoZWlnaHQ6IDMy
OS45NjggfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZm9jdXMtaW5w
dXQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9mb2N1cy1pbnB1
dC1pbi1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzcxMmRlZjBhZTg1ZmY1MzFiMjBiN2Y0MTZk
NWI4NTNmMzk4YTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
b3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9ImluaXRpYWwtc2NhbGU9MC41Ij4KKyAgICA8c3R5bGU+CisgICAgICAgIGJ1dHRvbiB7Cisg
ICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgfQorICAgICAgICBpZnJhbWUgewor
ICAgICAgICAgICAgbWFyZ2luLXRvcDogODAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
ICAgIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvem9vbWluZy10ZXN0LXV0aWxzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgIAor
ICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1
dCcpLmZvY3VzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7CisgICAg
ICAgIHRlc3Rab29tQWZ0ZXJUYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLCAx
MCwgMTApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9U
ZXN0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+VGVzdHMg
em9vbWluZyBpbnRvIGEgdGV4dCBpbnB1dCBvbiB0YXAuPC9wPgorPGJ1dHRvbiBpZD0idGFyZ2V0
IiBvbmNsaWNrPSJidXR0b25DbGlja2VkKCkiPkNsaWNrIHRvIGZvY3VzIGlucHV0PC9idXR0b24+
CisKKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmNkb2M9IjxzdHlsZT5pbnB1dCB7IG1hcmdpbjogNDAw
cHggMjBweDsgfTwvc3R5bGU+Cis8aW5wdXQgaWQ9J2lucHV0JyB0eXBlPSd0ZXh0Jz4KKyI+PC9p
ZnJhbWU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGljLWZvY3VzLWlucHV0LWlu
LWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlZjQ2NTg2MWVmMDcwMjQ4NmY3ZGRl
NTBhMGRlMjk4ZjE4YzIwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGVzdHMgdGhhdCBhIHByb2dyYW1tYXRpYyBmb2N1cyBzaG91bGQgbm90
IHNjcm9sbCBpbnRvIHZpZXcKKworUEFTUzogcGFnZSBkaWQgbm90IHNjcm9sbC4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGljLWZvY3VzLWlucHV0
LWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGlj
LWZvY3VzLWlucHV0LWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZGI1ZmE0NTM5MjRlYjBk
MzM4NTA1MWNmZGJhYWFkNDg0YzAxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lvcy9wcm9ncmFtbWF0aWMtZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWwKQEAg
LTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
dXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC41Ij4KKyAgICA8c3R5
bGU+CisgICAgICAgIGJ1dHRvbiB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAg
ICAgfQorICAgICAgICBpZnJhbWUgeworICAgICAgICAgICAgbWFyZ2luLXRvcDogODAwcHg7Cisg
ICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIAorICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKHRydWUpOworICAgIAorICAgIGZ1bmN0aW9uIHBhZ2VEaWRTY3JvbGwoKQorICAg
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLnRleHRDb250ZW50
ID0gJ0ZBSUw6IHBhZ2Ugc2Nyb2xsZWQgdG8gJyArIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQu
c2Nyb2xsVG9wOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5w
dXQnKS5mb2N1cygpOworICAgICAgICB9LCAwKTsKKworICAgICAgICAvLyBXYWl0IGZvciBhbnkg
c2Nyb2xsIHRvIGhhcHBlbi4KKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDEwMCk7CisgICAgfQorCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9uc2Nyb2xsPSJwYWdlRGlkU2Nyb2xsKCkiPgorCis8cD5UZXN0
cyB0aGF0IGEgcHJvZ3JhbW1hdGljIGZvY3VzIHNob3VsZCBub3Qgc2Nyb2xsIGludG8gdmlldzwv
cD4KKzxkaXYgaWQ9InJlc3VsdCI+CisgICAgUEFTUzogcGFnZSBkaWQgbm90IHNjcm9sbC4KKzwv
ZGl2PgorCis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjZG9jPSI8c3R5bGU+aW5wdXQgeyBtYXJnaW46
IDQwMHB4IDIwcHg7IH08L3N0eWxlPgorPGlucHV0IGlkPSdpbnB1dCcgdHlwZT0ndGV4dCc+Cisi
PjwvaWZyYW1lPgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281675</attachid>
            <date>2016-06-20 14:04:47 -0700</date>
            <delta_ts>2016-06-20 14:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158629-20160620140440.patch</filename>
            <type>text/plain</type>
            <size>35725</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhMjMwOGZiODEzMmRh
NDliZDkwMTIyNjM2NjllMmUyNGM0Y2RhZC4uMzNjNjQ4ZDFiZTViNTZlYWE3Yjc3NDc3ZmY5YzVk
YjgwNTQ1ODRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE2LTA2LTIwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZvY3VzIGV2ZW50
IGRpc3BhdGNoZWQgaW4gaWZyYW1lIGNhdXNlcyBwYXJlbnQgZG9jdW1lbnQgdG8gc2Nyb2xsIGlu
Y29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTg2MjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjY1MjE2MTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGZvY3Vzc2luZyBlbGVtZW50
cyBpbiBpZnJhbWVzLCB0aGUgcGFnZSBjb3VsZCBzY3JvbGwgdG8gYW4gaW5jb3JyZWN0IGxvY2F0
aW9uLgorICAgICAgICBUaGlzIGhhcHBlbmVkIGJlY2F1c2UgY29kZSBpbiBFbGVtZW50Ojpmb2N1
cygpIHRyaWVkIHRvIGRpc2FibGUgc2Nyb2xsaW5nIG9uIGZvY3VzLAorICAgICAgICBidXQgZGlk
IHNvIG9ubHkgZm9yIHRoZSBjdXJyZW50IGZyYW1lLCBzbyBhbmNlc3RvciBmcmFtZXMgZ290IHBy
b2dyYW1tYXRpY2FsbHkgc2Nyb2xsZWQuCisgICAgICAgIE9uIGlPUyB3ZSBoYW5kbGUgdGhlIHNj
cm9sbGluZyBpbiB0aGUgVUkgcHJvY2Vzcywgc28gbmV2ZXIgd2FudCB0aGUgd2ViIHByb2Nlc3Mg
dG8KKyAgICAgICAgZG8gcHJvZ3JhbW1hdGljIHNjcm9sbGluZy4KKworICAgICAgICBGaXggYnkg
Y2hhbmdpbmcgdGhlIGZvY3VzIGFuZCBjYWNoZSByZXN0b3JlIGNvZGUgdG8gdXNlIFNlbGVjdGlv
blJldmVhbE1vZGU6OkRvTm90UmV2ZWFsLAorICAgICAgICByYXRoZXIgdGhhbiBtYW51YWxseSBw
cm9oaWJpdGluZyBmcmFtZSBzY3JvbGxpbmcuIFBhc3MgU2VsZWN0aW9uUmV2ZWFsTW9kZSB0aHJv
dWdoIHZhcmlvdXMgY2FsbGVycywKKyAgICAgICAgYW5kIHVzZSBSZXZlYWxVcFRvTWFpbkZyYW1l
IGZvciBpT1MsIGFsbG93aW5nIHRoZSBVSSBwcm9jZXNzIHRvIGRvIHRoZSB6b29tVG9SZWN0OiBm
b3IgdGhlIG1haW4gZnJhbWUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvaW9zL2ZvY3Vz
LWlucHV0LWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lvcy9wcm9n
cmFtbWF0aWMtZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNjcm9sbEludG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9s
bEludG9WaWV3SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXdJZk5vdFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9jdXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZmluZFN0cmluZ0FuZFNjcm9sbFRv
VmlzaWJsZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0
ZUZvY3VzQXBwZWFyYW5jZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBw
ZWFyYW5jZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRvc2Nyb2xsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRv
VmlzaWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDE2LTA2
LTE3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
XSBTY3JvbGxpbmcgaW4gcG9wdXAgbWVudSBzY3JvbGxzIHBhc3QgbGFzdCBlbnRyeS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA3NTdkMmEwNDIzNTc2ZDg0MTM0ODJhNzViMzVlMDhkYzY5OWYyZTUyLi4w
YzJjNTdhMWJhMmRiOGVjM2Y4MjUzNTY3Zjk5ZTVmNzk5ZWQxMTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMDYtMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgRm9jdXMgZXZlbnQgZGlzcGF0Y2hlZCBpbiBpZnJhbWUg
Y2F1c2VzIHBhcmVudCBkb2N1bWVudCB0byBzY3JvbGwgaW5jb3JyZWN0bHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODYyOQorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8yNjUyMTYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgUGFzcyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwgaW4g
ZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTpdKToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOndpdGhJbnNldDpdKToKKyAgICAgICAgKC1b
V2ViRnJhbWUgcmV2ZWFsU2VsZWN0aW9uQXRFeHRlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcganVtcFRvU2VsZWN0aW9uOl0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhOl0p
OgorCiAyMDE2LTA2LTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgICtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1JTUVUeXBlc10gbGVha3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MDJjMmE5ZDQzNGJiN2FiMTg3MzFhMjQ1NTk3NWVlYzE4MDQ3Y2M4Li42
Y2FjZGRmMjFjMDBiY2M4ZWJiNTRhMTE3NGM1NGU4YTAzOTFjMDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTYtMDYtMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRm9jdXMgZXZlbnQgZGlzcGF0Y2hlZCBpbiBpZnJhbWUgY2F1c2Vz
IHBhcmVudCBkb2N1bWVudCB0byBzY3JvbGwgaW5jb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODYyOQorICAgICAgICByZGFyOi8vcHJv
YmxlbS8yNjUyMTYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhc3MgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsIGluIGV4aXN0aW5nIGNvZGUu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEpOgorCiAyMDE2LTA2
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTm8gbmVlZCB0
byByZWYgY29ubmVjdGlvbiBpbiBsYW1iZGEgaW5zaWRlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwYjgzOTYxOGY1
YmEyOTkxNjRlMTZlOGE4MDM2ZDdjMmExODY3YjEyLi41MDE3YzgyMmY0ZWQzY2UwZTZkNjhlZWRi
ZjEyYTdmM2RiZTEwZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjgyLDExICsyODIsNiBA
QCBlbnVtIGNsYXNzIFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSB7CiAgICAgU2V0RGVmYXVsdCwK
IH07CiAKLWVudW0gY2xhc3MgU2VsZWN0aW9uUmV2ZWFsTW9kZSB7Ci0gICAgUmV2ZWFsLAotICAg
IERvTm90UmV2ZWFsCi19OwotCiBlbnVtIGNsYXNzIEh0dHBFcXVpdlBvbGljeSB7CiAgICAgRW5h
YmxlZCwKICAgICBEaXNhYmxlZEJ5U2V0dGluZ3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
ZWViYjcxNWIwOTcwNDY3ZTcxMzQ0YmI3YjhiYTUyYWJkMDU0YjZiNS4uY2U3YzJjZDgxNjIzZWMx
OGU1ZWNmYjAwZjY5NDE3NTAwZGNlZjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjM5
LDkgKzYzOSw5IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9w
KQogICAgIExheW91dFJlY3QgYm91bmRzID0gcmVuZGVyZXIoKS0+YW5jaG9yUmVjdCgpOwogICAg
IC8vIEFsaWduIHRvIHRoZSB0b3AgLyBib3R0b20gYW5kIHRvIHRoZSBjbG9zZXN0IGVkZ2UuCiAg
ICAgaWYgKGFsaWduVG9Ub3ApCi0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2li
bGUoYm91bmRzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFs
aWdubWVudDo6YWxpZ25Ub3BBbHdheXMpOworICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0
VG9WaXNpYmxlKFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgYm91bmRzLCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdh
eXMpOwogICAgIGVsc2UKLSAgICAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShi
b3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnbkJvdHRvbUFsd2F5cyk7CisgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBib3VuZHMsIFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkJvdHRvbUFs
d2F5cyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNl
bnRlcklmTmVlZGVkKQpAQCAtNjUzLDkgKzY1Myw5IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZChib29sIGNlbnRlcklmTmVlZGVkKQogCiAgICAgTGF5b3V0UmVjdCBib3Vu
ZHMgPSByZW5kZXJlcigpLT5hbmNob3JSZWN0KCk7CiAgICAgaWYgKGNlbnRlcklmTmVlZGVkKQot
ICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgU2Nyb2xsQWxp
Z25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVy
SWZOZWVkZWQpOworICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVj
dGlvblJldmVhbE1vZGU6OlJldmVhbCwgYm91bmRzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2Vu
dGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CiAgICAg
ZWxzZQotICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWdu
VG9FZGdlSWZOZWVkZWQpOworICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgYm91bmRzLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50
ZXJJZk5vdFZpc2libGUpCkBAIC02NjcsOSArNjY3LDkgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJ
bnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklmTm90VmlzaWJsZSkKICAgICAKICAgICBM
YXlvdXRSZWN0IGJvdW5kcyA9IHJlbmRlcmVyKCktPmFuY2hvclJlY3QoKTsKICAgICBpZiAoY2Vu
dGVySWZOb3RWaXNpYmxlKQotICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KGJvdW5kcywgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSwgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSk7CisgICAgICAgIHJlbmRlcmVyKCkt
PnNjcm9sbFJlY3RUb1Zpc2libGUoU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBib3VuZHMs
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUsIFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUpOwogICAgIGVsc2UKLSAgICAgICAgcmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5vdFZpc2libGUsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUp
OworICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVjdGlvblJldmVh
bE1vZGU6OlJldmVhbCwgYm91bmRzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOb3RW
aXNpYmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOb3RWaXNpYmxlKTsKIH0KICAg
ICAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnlVbml0cyhpbnQgdW5pdHMsIFNjcm9sbEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5KQpAQCAtMjI0NSwyMCArMjI0NSwxOCBAQCB2b2lkIEVsZW1lbnQ6OmZv
Y3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgfQogICAgICAgICAKICAgICBjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsK
KworICAgIFNlbGVjdGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSA9IFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRm9jdXNpbmcgYSBmb3JtIGVs
ZW1lbnQgdHJpZ2dlcnMgYW5pbWF0aW9uIGluIFVJS2l0IHRvIHNjcm9sbCB0byB0aGUgcmlnaHQg
cG9zaXRpb24uCiAgICAgLy8gQ2FsbGluZyB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoKSB3b3VsZCBn
ZW5lcmF0ZSBhbiB1bm5lY2Vzc2FyeSBjYWxsIHRvIFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0
aW9uKCksCiAgICAgLy8gd2hpY2ggd291bGQganVtcCB1cyBhcm91bmQgZHVyaW5nIHRoaXMgYW5p
bWF0aW9uLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2OTk3NDE+LgotICAgIEZyYW1lVmlldyogdmll
dyA9IGRvY3VtZW50KCkudmlldygpOwotICAgIGJvb2wgaXNGb3JtQ29udHJvbCA9IHZpZXcgJiYg
aXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKnRoaXMpOwotICAgIGlmIChpc0Zvcm1Db250cm9s
KQotICAgICAgICB2aWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcodHJ1ZSk7Ci0jZW5kaWYKLSAg
ICB1cGRhdGVGb2N1c0FwcGVhcmFuY2UocmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID8gU2VsZWN0
aW9uUmVzdG9yYXRpb25Nb2RlOjpSZXN0b3JlIDogU2VsZWN0aW9uUmVzdG9yYXRpb25Nb2RlOjpT
ZXREZWZhdWx0KTsKLSNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBpc0Zvcm1Db250cm9sID0g
aXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKnRoaXMpOwogICAgIGlmIChpc0Zvcm1Db250cm9s
KQotICAgICAgICB2aWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcoZmFsc2UpOworICAgICAgICBy
ZXZlYWxNb2RlID0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsVXBUb01haW5GcmFtZTsKICNl
bmRpZgorCisgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHJlc3RvcmVQcmV2aW91c1NlbGVjdGlv
biA/IFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZTo6UmVzdG9yZSA6IFNlbGVjdGlvblJlc3RvcmF0
aW9uTW9kZTo6U2V0RGVmYXVsdCwgcmV2ZWFsTW9kZSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6dXBk
YXRlRm9jdXNBcHBlYXJhbmNlQWZ0ZXJBdHRhY2hJZk5lZWRlZCgpCkBAIC0yMjkwLDExICsyMjg4
LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3Rv
cmF0aW9uTW9kZSwgU2VsZWN0aW9uUmV2ZWFsTW9kCiAgICAgICAgIAogICAgICAgICBpZiAoZnJh
bWUtPnNlbGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7CiAg
ICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwg
RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEVsZW1lbnQ6OmRl
ZmF1bHRGb2N1c1RleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKLSAgICAgICAgICAgIGlmIChyZXZl
YWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCkKLSAgICAgICAgICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CisgICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKHJldmVhbE1vZGUpOwogICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpICYmIHJldmVh
bE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsKQotICAgICAgICByZW5kZXJlcigp
LT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlbmRlcmVyKCktPmFuY2hvclJlY3QoKSk7CisgICAgfSBl
bHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpKQorICAgICAgICBy
ZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJldmVhbE1vZGUsIHJlbmRlcmVyKCktPmFu
Y2hvclJlY3QoKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6Ymx1cigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCAyZmFhNjRiMzE5ODU2ZDc3NzQ1OGE4MDBkOTIxOWZkYmI5N2I2MjBmLi44Y2E2NGQ0ZWVk
YjMyYTRjZTVmNTRhZjIxZDg0ZDAzMThjNTY4YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTYw
LDYgKzYwLDEyIEBAIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKICAgICBTcGVsbGNo
ZWNrQXR0cmlidXRlRGVmYXVsdAogfTsKIAorZW51bSBjbGFzcyBTZWxlY3Rpb25SZXZlYWxNb2Rl
IHsKKyAgICBSZXZlYWwsCisgICAgUmV2ZWFsVXBUb01haW5GcmFtZSwgLy8gU2Nyb2xsIG92ZXJm
bG93IGFuZCBpZnJhbWVzLCBidXQgbm90IHRoZSBtYWluIGZyYW1lLgorICAgIERvTm90UmV2ZWFs
Cit9OworCiBjbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNiZmYzMmQ0
NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmI3NDU5N2FhMzliYWFkYTM0ZmE2MmRjODU5ZGU5NGI2
NWU2ZGFjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEyMDQsNyArMTIwNCw3
IEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluCiAgICAgICAgICAgICAvLyBSZXZlYWwgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGVkaXRlZEZyYW1lID0gZG9j
dW1lbnQtPmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBlZGl0ZWRG
cmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkucmV2
ZWFsU2VsZWN0aW9uKFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjc5OSw3ICsy
Nzk5LDcgQEAgdm9pZCBFZGl0b3I6OnJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlv
bihjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWdubWUKICAgICBpZiAobV9pZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oYWxpZ25tZW50LCByZXZlYWxFeHRlbnRPcHRpb24pOwor
ICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgYWxpZ25tZW50LCByZXZlYWxFeHRlbnRPcHRpb24pOwogfQogCiB2b2lkIEVk
aXRvcjo6c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoYm9vbCBpZ25vcmUsIFJl
dmVhbFNlbGVjdGlvbiBzaG91bGRSZXZlYWxFeGlzdGluZ1NlbGVjdGlvbikKQEAgLTMxNDcsNyAr
MzE0Nyw3IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpmaW5kU3RyaW5nQW5kU2Nyb2xsVG9WaXNp
YmxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSoKICAgICBpZiAoIW5leHRNYXRjaCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBuZXh0TWF0Y2gtPmZpcnN0Tm9kZSgpLT5yZW5k
ZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKG5leHRNYXRjaC0+YWJzb2x1dGVCb3VuZGluZ0Jv
eCgpLAorICAgIG5leHRNYXRjaC0+Zmlyc3ROb2RlKCktPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBuZXh0TWF0Y2gtPmFic29sdXRl
Qm91bmRpbmdCb3goKSwKICAgICAgICAgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVl
ZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwogCiAgICAgcmV0dXJu
IG5leHRNYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5k
ZXggYTU2ZTZiN2Q1NjEyNjc5NDA3MWQwZmJiNTlkZjFiNDlmZjdmMGQ0OS4uMzM4MzRhZDA5NmU4
MTgyMjUxNmU3ODEzYjJiODBkYzliYjI2ZTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKQEAgLTEyNyw3ICsxMjcsNiBAQCBGcmFtZVNlbGVjdGlvbjo6RnJh
bWVTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fdXBk
YXRlQXBwZWFyYW5jZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2NhcmV0QmxpbmtzKHRydWUpCi0g
ICAgLCBtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQoMCkKICNlbmRpZgogewogICAgIGlmIChzaG91
bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihtX2ZyYW1lKSkKQEAgLTM4OCw3ICszODcs
NyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oY29uc3Qg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBh
bGlnbm1lbnQgPSBtX2Fsd2F5c0FsaWduQ3Vyc29yT25TY3JvbGxXaGVuUmV2ZWFsaW5nU2VsZWN0
aW9uID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25Ub0VkZ2VJZk5lZWRlZDsKIAotICAgICAgICByZXZlYWxTZWxlY3Rpb24oYWxpZ25tZW50
LCBSZXZlYWxFeHRlbnQpOworICAgICAgICByZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFs
TW9kZTo6UmV2ZWFsLCBhbGlnbm1lbnQsIFJldmVhbEV4dGVudCk7CiAgICAgfQogCiAgICAgbm90
aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZShpbnRlbnQpOwpAQCAtMjI5MCw4ICsy
Mjg5LDExIEBAIEhUTUxGb3JtRWxlbWVudCogRnJhbWVTZWxlY3Rpb246OmN1cnJlbnRGb3JtKCkg
Y29uc3QKICAgICByZXR1cm4gc2NhbkZvckZvcm0oc3RhcnQpOwogfQogCi12b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnbm1lbnQs
IFJldmVhbEV4dGVudE9wdGlvbiByZXZlYWxFeHRlbnRPcHRpb24pCit2b2lkIEZyYW1lU2VsZWN0
aW9uOjpyZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFsTW9kZSByZXZlYWxNb2RlLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWdubWVudCwgUmV2ZWFsRXh0ZW50T3B0aW9uIHJldmVhbEV4
dGVudE9wdGlvbikKIHsKKyAgICBpZiAocmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpEb05vdFJldmVhbCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTGF5b3V0UmVjdCByZWN0Owog
CiAgICAgc3dpdGNoIChtX3NlbGVjdGlvbi5zZWxlY3Rpb25UeXBlKCkpIHsKQEAgLTIzMTIsNyAr
MjMxNCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbihjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmIGFsaWdubWVudCwgUmV2ZWFsRXh0CiAgICAgICAgIGlmIChSZW5kZXJMYXll
ciogbGF5ZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdM
YXllcigpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJlc3NDb3VudCkgewog
ICAgICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmco
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwg
YWxpZ25tZW50LCBhbGlnbm1lbnQpOworICAgICAgICAgICAgICAgIGxheWVyLT5zY3JvbGxSZWN0
VG9WaXNpYmxlKHJldmVhbE1vZGUsIHJlY3QsIGFsaWdubWVudCwgYWxpZ25tZW50KTsKICAgICAg
ICAgICAgICAgICBsYXllci0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nKGZhbHNl
KTsKICAgICAgICAgICAgICAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZnJhbWUtPnBhZ2UoKSkKQEAgLTIzMjMsNyArMjMyNSw3IEBAIHZvaWQgRnJhbWVTZWxl
Y3Rpb246OnJldmVhbFNlbGVjdGlvbihjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWdubWVudCwg
UmV2ZWFsRXh0CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgb25seSBoYW5kbGVzIHNjcm9s
bGluZyB0aGUgc3RhcnRDb250YWluZXIncyBsYXllciwgYnV0CiAgICAgICAgIC8vIHRoZSBzZWxl
Y3Rpb24gcmVjdCBjb3VsZCBpbnRlcnNlY3QgbW9yZSB0aGFuIGp1c3QgdGhhdC4KICAgICAgICAg
Ly8gU2VlIDxyZGFyOi8vcHJvYmxlbS80Nzk5ODk5Pi4KLSAgICAgICAgaWYgKHN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgYWxpZ25t
ZW50LCBhbGlnbm1lbnQpKQorICAgICAgICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZXZlYWxNb2RlLCByZWN0LCBhbGlnbm1lbnQs
IGFsaWdubWVudCkpCiAgICAgICAgICAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CiAjZW5kaWYKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggOTVhYzM3NzRi
ODAyNDUwZGI5ZDhmZmVkOTc5ZGQyMzhkMDVmNWUxZC4uZjc4Zjg3MjUyNjM2MjZjYzUyYWQxNDAw
M2JlMWM0ZjE0YmFiOGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQu
aCIKICNpbmNsdWRlICJFZGl0aW5nU3R5bGUuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgpAQCAtMjY2LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEhU
TUxGb3JtRWxlbWVudCogY3VycmVudEZvcm0oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmV2ZWFsU2VsZWN0aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgPSBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFJldmVhbEV4dGVudE9wdGlvbiA9IERvTm90UmV2
ZWFsRXh0ZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJldmVhbFNlbGVjdGlvbihTZWxl
Y3Rpb25SZXZlYWxNb2RlID0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBSZXZl
YWxFeHRlbnRPcHRpb24gPSBEb05vdFJldmVhbEV4dGVudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogCiAgICAgYm9vbCBzaG91bGRTaG93QmxvY2tD
dXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNob3dCbG9ja0N1cnNvcjsgfQpAQCAtMzUw
LDcgKzM1MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVk
IDogMTsKICAgICBib29sIG1fY2FyZXRCbGlua3MgOiAxOwogICAgIENvbG9yIG1fY2FyZXRDb2xv
cjsKLSAgICBpbnQgbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OworICAgIGludCBtX3Njcm9sbGlu
Z1N1cHByZXNzQ291bnQgeyAwIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGM4NmVmNGE5NzFmZWM5MDZmNDMyYmRjZGE1MGI1MjM3
ZjI2YWU2YjYuLjk2MzExMDZmZGJiNWFhNWQ0OTlmZWZjNDY4MDk1NjBlZWE5MzU2MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDA0LDggKzQwNCw4IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJl
c3RvcmF0aW9uTW9kZSByZXN0b3JhdGlvCiAgICAgICAgICAgICBzZWxlY3QoRWxlbWVudDo6ZGVm
YXVsdEZvY3VzVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChkb2N1bWVudCgpLmZy
YW1lKCkgJiYgcmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwpCi0gICAg
ICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigp
OworICAgICAgICBpZiAoZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgZG9jdW1lbnQo
KS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24ocmV2ZWFsTW9kZSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVGb2N1c0Fw
cGVhcmFuY2UocmVzdG9yYXRpb25Nb2RlLCByZXZlYWxNb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDI1NWJlZDY3OTcyODQyZGUzNDNi
MmU2NjBiMTNlM2I1NWM2YmI5N2QuLmY5MjEwOGFjYTZmMWQ4YTNkOWNlZGFjZGIwYjgwODJkZGYz
ODJjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlRm9jdXNB
cHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSByZXN0b3JhCiAgICAgfSBlbHNlCiAg
ICAgICAgIHJlc3RvcmVDYWNoZWRTZWxlY3Rpb24oRWxlbWVudDo6ZGVmYXVsdEZvY3VzVGV4dFN0
YXRlQ2hhbmdlSW50ZW50KCkpOwogCi0gICAgaWYgKGRvY3VtZW50KCkuZnJhbWUoKSAmJiByZXZl
YWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCkKLSAgICAgICAgZG9jdW1lbnQo
KS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKKyAgICBpZiAoZG9jdW1l
bnQoKS5mcmFtZSgpKQorICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnJl
dmVhbFNlbGVjdGlvbihyZXZlYWxNb2RlKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlZjIyZTUyNmJiYmJiNGM1NDhiOTRh
MDFmZTM4OTMzNzc2MzM4NGE2Li4zOTRiYjJjNTE5YTY3MTU3Y2VlZDhhZWVhNmY1OGYxYzc4ZjI4
MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgICAg
IEFTU0VSVChkb2N1bWVudCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ+IGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCpkb2N1bWVu
dCwgY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpkb2N1bWVudCwgdGl0bGUsICIiKSwgcmVwbGFj
ZU9wdGlvbnMpOwogICAgICAgICAgICAgYXBwbHlDb21tYW5kKGNvbW1hbmQpOwotICAgICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduVG9FZGdlSWZOZWVkZWQpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVh
bFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ3ZTRkNTUwMTc5NWE2ZDY3ODA1MGI0NTUx
MmU2ZjFkNTQ0MmNmZWEuLjY4MGJhYTU1ZTU2MDY2ODA3NmJjMGNkZTRlYjYxN2UyZWUzNjQwNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMwNTAsMTEgKzMwNTAsMTEgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKCkKICAgICAvLyBTY3JvbGwgbmVzdGVkIGxheWVy
cyBhbmQgZnJhbWVzIHRvIHJldmVhbCB0aGUgYW5jaG9yLgogICAgIC8vIEFsaWduIHRvIHRoZSB0
b3AgYW5kIHRvIHRoZSBjbG9zZXN0IHNpZGUgKHRoaXMgbWF0Y2hlcyBvdGhlciBicm93c2Vycyku
CiAgICAgaWYgKGFuY2hvck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKLSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRv
VmlzaWJsZShyZWN0LCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9s
bEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMpOworICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgcmVj
dCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9wQWx3YXlzKTsKICAgICBlbHNlIGlmIChhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIGFuY2hvck5vZGUt
PnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgU2Nyb2xsQWxpZ25tZW50Ojph
bGlnblJpZ2h0QWx3YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQpOwor
ICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVj
dGlvblJldmVhbE1vZGU6OlJldmVhbCwgcmVjdCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblJpZ2h0
QWx3YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogICAgIGVsc2UK
LSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0
LCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduTGVmdEFsd2F5cywgU2Nyb2xsQWxpZ25tZW50OjphbGln
blRvRWRnZUlmTmVlZGVkKTsKKyAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIHJlY3QsIFNjcm9sbEFs
aWdubWVudDo6YWxpZ25MZWZ0QWx3YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZO
ZWVkZWQpOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVu
dCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPmhhbmRsZVNjcm9s
bGVkVG9BbmNob3IoYW5jaG9yTm9kZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAppbmRleCA2YTZmMTE2NDk4ZDE4OTUzNjJhMDc4YThmOWIwNTE2ZDFlMzEw
ZmIwLi5kMDI5MDRiZDQwZTUzM2NjNzY4ZWVkNTgzM2EyNWFiYzhhMGFlYTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNs
dWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2luY2x1
ZGUgIk92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIgpAQCAtMjQ5MCw3ICsyNDkxLDcgQEAgYm9v
bCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIGJv
eC0+aGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgfHwgYm94LT5oYXNWZXJ0aWNhbE92ZXJmbG93KCk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZKQordm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShT
ZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNv
bnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWdu
WSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkxheWVyICIg
PDwgdGhpcyA8PCAiIHNjcm9sbFJlY3RUb1Zpc2libGUgIiA8PCByZWN0KTsKIApAQCAtMjU1MCw2
ICsyNTUxLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBM
YXlvdXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKHJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFs
VXBUb01haW5GcmFtZSAmJiBmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKwogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgICAgICBMYXlv
dXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpOwogICAgICAg
ICAgICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdFJlbGF0aXZlVG9Eb2N1bWVudCA9IHZpZXdSZWN0
OwpAQCAtMjU3NCw3ICsyNTc4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlz
aWJsZShjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm0KICAgICB9CiAg
ICAgCiAgICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBwYXJlbnRMYXllci0+c2Nyb2xsUmVj
dFRvVmlzaWJsZShuZXdSZWN0LCBhbGlnblgsIGFsaWduWSk7CisgICAgICAgIHBhcmVudExheWVy
LT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJldmVhbE1vZGUsIG5ld1JlY3QsIGFsaWduWCwgYWxpZ25Z
KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNj
cm9sbCgpCkBAIC0yNjY3LDcgKzI2NzEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRS
ZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheQogdm9p
ZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAg
ICAgSW50UG9pbnQgY3VycmVudERvY3VtZW50UG9zaXRpb24gPSByZW5kZXJlcigpLnZpZXcoKS5m
cmFtZVZpZXcoKS53aW5kb3dUb0NvbnRlbnRzKHBvc2l0aW9uKTsKLSAgICBzY3JvbGxSZWN0VG9W
aXNpYmxlKExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwg
MSkpLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CisgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24s
IExheW91dFNpemUoMSwgMSkpLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQs
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CiB9CiAKIGJvb2wgUmVuZGVy
TGF5ZXI6OmNhblJlc2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IGNlMTkwYmYxNzRhYmQ3NTFhZGE3YTk0ZmI0ZDJhNWU3YjY4NjI0MDMuLmVlOTMy
OTI5MTIxYjliOTU2YzJiN2Y1Yzg1MDFlMGU4MDUzMzljNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVj
dCYsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQm
IGFsaWduWSk7CisgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVjdGlvblJldmVhbE1v
ZGUsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpOwogCiAgICAgTGF5b3V0UmVjdCBnZXRSZWN0VG9F
eHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIHZp
c2libGVSZWN0UmVsYXRpdmVUb0RvY3VtZW50LCBjb25zdCBMYXlvdXRSZWN0JiBleHBvc2VSZWN0
LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBh
bGlnblkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGNiZDJlNjRiNWIzZWYyYjQ0ZjEyY2ZlNThlMTcxZDA5M2QxMzJkY2IuLjFiOWNiYjg3MTFhMjdl
ZGQxMDI1MTc0YzE1NTJmZjYwZjIxZTQ5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0zNTgsMTMgKzM1OCwxNiBAQCBSZW5kZXJMYXllciogUmVuZGVy
T2JqZWN0OjplbmNsb3NpbmdMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LWJvb2wgUmVuZGVyT2JqZWN0OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1l
bnQmIGFsaWduWSkKK2Jvb2wgUmVuZGVyT2JqZWN0OjpzY3JvbGxSZWN0VG9WaXNpYmxlKFNlbGVj
dGlvblJldmVhbE1vZGUgcmV2ZWFsTW9kZSwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKQog
eworICAgIGlmIChyZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OkRvTm90UmV2ZWFs
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5
ZXIgPSB0aGlzLT5lbmNsb3NpbmdMYXllcigpOwogICAgIGlmICghZW5jbG9zaW5nTGF5ZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGVuY2xvc2luZ0xheWVyLT5zY3JvbGxSZWN0VG9W
aXNpYmxlKHJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKKyAgICBlbmNsb3NpbmdMYXllci0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShyZXZlYWxNb2RlLCByZWN0LCBhbGlnblgsIGFsaWduWSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCBlM2E3ZDdmN2FlZTE4MDI0NGQ2ZGJjOTI2ZWY0MTdjNzVkMjdmYjBmLi40MGZlMTExMzEyMWFh
OTU5NGU0NDk5ODM4M2YwZGQyZDk3M2IxZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlbmRlckxheWVyKiBlbmNsb3NpbmdMYXllcigpIGNvbnN0OwogCiAgICAgLy8gU2Nyb2xs
aW5nIGlzIGEgUmVuZGVyQm94IGNvbmNlcHQsIGhvd2V2ZXIgc29tZSBjb2RlIGp1c3QgY2FyZXMg
YWJvdXQgcmVjdXJzaXZlbHkgc2Nyb2xsaW5nIG91ciBlbmNsb3NpbmcgU2Nyb2xsYWJsZUFyZWEo
cykuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExh
eW91dFJlY3QmLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCA9IFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkgPSBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJsZShTZWxlY3Rpb25SZXZlYWxNb2RlLCBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblggPSBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduQ2VudGVySWZOZWVkZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZID0gU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKIAogICAgIC8vIENvbnZlbmllbmNl
IGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRvIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBib3ggb2YgYSBS
ZW5kZXJPYmplY3QuCiAgICAgUmVuZGVyQm94JiBlbmNsb3NpbmdCb3goKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGIwZGNkOWE5YWE2YWVmZjRjZGY2YWRk
ZTA0ZWY3Y2YyOWFlNDE4NzYuLjA4MGQ2ZWMxNTE1ZjViMDRmOGEzM2M1MmUwZWM3MGQ3NWQyZWZh
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzE3LDEyICs3MTcs
MTIgQEAgLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2UK
ICAgICAgICAgCiAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpIHsK
ICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9s
bFJlY3RUb1Zpc2libGUoZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5l
ZWRlZCk7CisgICAgICAgIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJs
ZShTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0
KSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogI2Vsc2UKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gc3RhcnROb2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOwogICAgICAgICBpZiAo
bGF5ZXIpIHsKICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3Jv
bGxpbmcodHJ1ZSk7Ci0gICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJl
Y3RUb1Zpc2libGUoZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRl
ZCk7CisgICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2li
bGUoU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBlbmNsb3NpbmdJbnRSZWN0KHJhbmdlUmVj
dCksIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJ
T1NDYXJldFdoZW5TY3JvbGxpbmcoZmFsc2UpOwogICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+c2VsZWN0aW9uKCkuc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKICAgICAgICAgICAg
IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnVwZGF0ZUFwcGVhcmFuY2UoKTsKQEAg
LTc0MSw3ICs3NDEsNyBAQCAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFu
Z2UgKilyYW5nZSB3aXRoSW5zZXQ6KENHRmxvYXQpaW5zZXQKICAgICAgICAgUmVuZGVyTGF5ZXIq
IGxheWVyID0gc3RhcnROb2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOwogICAgICAg
ICBpZiAobGF5ZXIpIHsKICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdo
ZW5TY3JvbGxpbmcodHJ1ZSk7Ci0gICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJ
Zk5lZWRlZCk7CisgICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBlbmNsb3NpbmdJbnRSZWN0KHJh
bmdlUmVjdCksIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1
c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoZmFsc2UpOwogCiAgICAgICAgICAgICBGcmFtZSAq
Y29yZUZyYW1lID0gY29yZShzZWxmKTsKQEAgLTEzNzUsNyArMTM3NSw3IEBAIC0gKHZvaWQpcmV2
ZWFsU2VsZWN0aW9uQXRFeHRlbnQ6KEJPT0wpcmV2ZWFsRXh0ZW50CiB7CiAgICAgV2ViQ29yZTo6
RnJhbWUgKmZyYW1lID0gY29yZShzZWxmKTsKICAgICBSZXZlYWxFeHRlbnRPcHRpb24gcmV2ZWFs
RXh0ZW50T3B0aW9uID0gcmV2ZWFsRXh0ZW50ID8gUmV2ZWFsRXh0ZW50IDogRG9Ob3RSZXZlYWxF
eHRlbnQ7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTY3JvbGxBbGln
bm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIHJldmVhbEV4dGVudE9wdGlvbik7CisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgcmV2ZWFsRXh0ZW50T3B0
aW9uKTsKIH0KIAogLSAodm9pZClyZXNldFNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggN2VmMWEzMGE5YTBiNWEzMzc0NDFkZGVhYTc2ZGI3YmU3
ZmJiNzVhYi4uZmY0MWJkZGE0Yjg4Mjk3YTQ5OWE4M2RmZmUyYzY4NjE5N2EwNTQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zMTQ2LDcgKzMxNDYsNyBA
QCAtICh2b2lkKWp1bXBUb1NlbGVjdGlvbjooaWQpc2VuZGVyCiAgICAgQ09NTUFORF9QUk9MT0dV
RQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAg
ICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduQ2VudGVyQWx3YXlzKTsKKyAgICAgICAgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5y
ZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduQ2VudGVyQWx3YXlzKTsKIH0KIAogI2lmICFQTEFURk9STShJT1MpCkBAIC01MzQ1
LDcgKzUzNDUsNyBAQCAtICh2b2lkKWNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWE6KGlkKXNl
bmRlcgogICAgIENPTU1BTkRfUFJPTE9HVUUKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yZXZl
YWxTZWxlY3Rpb24oU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyk7CisgICAgICAg
IGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDYyNTI4N2VlNzViMjEyYjQ4YzU2ZmI4MmJkMGU4ZjdhMGI3ZTFmMzIu
LmQ5OTU0NmM5MTRjODY3Nzg4ODVhMWVkYjMxNjhhZTYxZTcxZTM0MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzOTUsNyArMjM5NSw3
IEBAIGJvb2wgV2ViUGFnZTo6c2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9uLCB1aW50
MzJfdCBzY3JvbGxHcmFudWxhcml0eSkKIHZvaWQgV2ViUGFnZTo6Y2VudGVyU2VsZWN0aW9uSW5W
aXNpYmxlQXJlYSgpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxT
ZWxlY3Rpb24oU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwg
U2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyk7CiAgICAgbV9maW5kQ29udHJvbGxl
ci5zaG93RmluZEluZGljYXRvckluU2VsZWN0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMTdlNDQ4NDg4
YTI3YmUwNjg1ZmExZmU3OTMwNzNlYmU1MDhiYzNjLi44YTMwYTYyZDgxMDhkNzA2MjY1YTViMWUw
ZGMwZTMxNzUyZjhiZDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMjAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgRm9jdXMgZXZlbnQg
ZGlzcGF0Y2hlZCBpbiBpZnJhbWUgY2F1c2VzIHBhcmVudCBkb2N1bWVudCB0byBzY3JvbGwgaW5j
b3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODYyOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNjUyMTYxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pb3MvZm9jdXMt
aW5wdXQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lvcy9wcm9ncmFtbWF0aWMtZm9jdXMtaW5w
dXQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA2LTE3ICBSeWFuIEhhZGRhZCAgPHJ5
YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXBwaW5nIHR3byBuZXcgTGF5b3V0VGVz
dHMgdGhhdCByZWx5IG9uIG1vdXNlIGV2ZW50cyBvbiBpb3Mtc2ltdWxhdG9yLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2ZvY3VzLWlucHV0LWluLWlmcmFt
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVhMmViZDJmZmFiNzEzOTk0MmUyY2Q3NmVlN2I2
M2IyMGM3NmZjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9z
L2ZvY3VzLWlucHV0LWluLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0
cyB6b29taW5nIGludG8gYSB0ZXh0IGlucHV0IG9uIHRhcC4KKworQ2xpY2sgdG8gZm9jdXMgaW5w
dXQKKwordGFwIGxvY2F0aW9uCXsgeDogMjAuMDAwLCB5OiA2Mi4wMDAgfQorc2NhbGUJMS40NTUK
K3Zpc2libGVSZWN0CXsgbGVmdDogMC4wMDAsIHRvcDogMTIwMS45NzYsIHdpZHRoOiAyMTkuOTc5
LCBoZWlnaHQ6IDMyOS45NjggfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
b3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lv
cy9mb2N1cy1pbnB1dC1pbi1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzcxMmRlZjBhZTg1ZmY1
MzFiMjBiN2Y0MTZkNWI4NTNmMzk4YTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pb3MvZm9jdXMtaW5wdXQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSw0OCBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC41Ij4KKyAgICA8c3R5bGU+CisgICAgICAg
IGJ1dHRvbiB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgfQorICAgICAg
ICBpZnJhbWUgeworICAgICAgICAgICAgbWFyZ2luLXRvcDogODAwcHg7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorICAgIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvem9vbWluZy10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRy
dWUpOworICAgIAorICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKQorICAgIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJykuY29udGVudERvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbnB1dCcpLmZvY3VzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9UZXN0KCkK
KyAgICB7CisgICAgICAgIHRlc3Rab29tQWZ0ZXJUYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RhcmdldCcpLCAxMCwgMTApOworICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHA+VGVzdHMgem9vbWluZyBpbnRvIGEgdGV4dCBpbnB1dCBvbiB0YXAuPC9wPgorPGJ1dHRv
biBpZD0idGFyZ2V0IiBvbmNsaWNrPSJidXR0b25DbGlja2VkKCkiPkNsaWNrIHRvIGZvY3VzIGlu
cHV0PC9idXR0b24+CisKKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmNkb2M9IjxzdHlsZT5pbnB1dCB7
IG1hcmdpbjogNDAwcHggMjBweDsgfTwvc3R5bGU+Cis8aW5wdXQgaWQ9J2lucHV0JyB0eXBlPSd0
ZXh0Jz4KKyI+PC9pZnJhbWU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGljLWZv
Y3VzLWlucHV0LWluLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlZjQ2NTg2MWVm
MDcwMjQ4NmY3ZGRlNTBhMGRlMjk4ZjE4YzIwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW9zL3Byb2dyYW1tYXRpYy1mb2N1cy1pbnB1dC1pbi1pZnJhbWUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdHMgdGhhdCBhIHByb2dyYW1tYXRpYyBmb2N1
cyBzaG91bGQgbm90IHNjcm9sbCBpbnRvIHZpZXcKKworUEFTUzogcGFnZSBkaWQgbm90IHNjcm9s
bC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3MvcHJvZ3JhbW1hdGlj
LWZvY3VzLWlucHV0LWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3Mv
cHJvZ3JhbW1hdGljLWZvY3VzLWlucHV0LWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZGI1
ZmE0NTM5MjRlYjBkMzM4NTA1MWNmZGJhYWFkNDg0YzAxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9wcm9ncmFtbWF0aWMtZm9jdXMtaW5wdXQtaW4taWZy
YW1lLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorPGhl
YWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC41
Ij4KKyAgICA8c3R5bGU+CisgICAgICAgIGJ1dHRvbiB7CisgICAgICAgICAgICBkaXNwbGF5OiBi
bG9jazsKKyAgICAgICAgfQorICAgICAgICBpZnJhbWUgeworICAgICAgICAgICAgbWFyZ2luLXRv
cDogODAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIAorICAgIDxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgIAorICAgIGZ1bmN0aW9uIHBhZ2VEaWRT
Y3JvbGwoKQorICAgIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LnRleHRDb250ZW50ID0gJ0ZBSUw6IHBhZ2Ugc2Nyb2xsZWQgdG8gJyArIGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQuc2Nyb2xsVG9wOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisg
ICAgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpLmNvbnRlbnREb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXQnKS5mb2N1cygpOworICAgICAgICB9LCAwKTsKKworICAgICAgICAvLyBX
YWl0IGZvciBhbnkgc2Nyb2xsIHRvIGhhcHBlbi4KKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDEwMCk7CisgICAg
fQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uc2Nyb2xsPSJwYWdlRGlkU2Nyb2xsKCki
PgorCis8cD5UZXN0cyB0aGF0IGEgcHJvZ3JhbW1hdGljIGZvY3VzIHNob3VsZCBub3Qgc2Nyb2xs
IGludG8gdmlldzwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+CisgICAgUEFTUzogcGFnZSBkaWQgbm90
IHNjcm9sbC4KKzwvZGl2PgorCis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjZG9jPSI8c3R5bGU+aW5w
dXQgeyBtYXJnaW46IDQwMHB4IDIwcHg7IH08L3N0eWxlPgorPGlucHV0IGlkPSdpbnB1dCcgdHlw
ZT0ndGV4dCc+CisiPjwvaWZyYW1lPgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="305500"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>341898</attachid>
            <date>2018-06-04 02:14:06 -0700</date>
            <delta_ts>2018-06-04 02:14:06 -0700</delta_ts>
            <desc>new test case</desc>
            <filename>scroll-bug.zip</filename>
            <type>application/zip</type>
            <size>764</size>
            <attacher name="Yann Armelin">yann.armelin</attacher>
            
              <data encoding="base64">UEsDBBQAAAAIAEBYxEy0hbEG/wAAAKABAAAKAAAAY2hpbGQuaHRtbI1RPU/DMBDd+ysOM7QdmjAi
iD0ABXUCCYTE6I9rYtWxUXJJyL/HdorUEQ++5+d779m66urp9fHj620PDbVOrKpUwElfc4aeiRVA
1aA0CUTYIknQjex6JM4GOu5u2fmKLDkUea/KXLK4/FNXKpgZepodcqakPtVdGLzZ6eBCd3e9z+ue
AQhYDI0dgaSy3uAPZzcMrOGMOvnNQDwHPfRSOQR02KKnqozt55eogSh4CF47q0+cTdEiTIWJmtRa
1Ej7RfUwH8xmnTzX2+KYPDdbJl7siJBPQAGkCuNFzGL+z6T05aLXXXDu4Cl8WpxSwHtmwEYKxshd
ukYcRXEQZR7IL1BLAwQUAAAACABGWMRM4NNwhd0AAABNAQAACwAAAHBhcmVudC5odG1sTZDBbsMg
DEDv/QoPabdlyXqqUshl23mTtsuOFNyARCACt1n/fkBSaRdsy+L52fzh7eP1++fzHQxNbtjxEsBJ
PwqGng07AG5Q6pLkdEKSoIyMCUmwC52bA9taZMnhUF/e1vD/j5cTCna1uMwhEgMVPKHPjMVqMkLj
1SpsavEEl4SxSUo6eXIofFg12rsHPwV9g0S33GQG7Wio33ddN/9uLl8qBudAh8WvCvYc83xIUQmm
jHX6uazJ7oxJxtH6hsLcHwrmuEFhXyuoWv1L1z0e2cDblbY6FZV8tbZe7w9QSwECPwAUAAAACABA
WMRMtIWxBv8AAACgAQAACgAkAAAAAAAAACAAAAAAAAAAY2hpbGQuaHRtbAoAIAAAAAAAAQAYAOV3
dLHi+9MB5Xd0seL70wEVZSRN4/vTAVBLAQI/ABQAAAAIAEZYxEzg03CF3QAAAE0BAAALACQAAAAA
AAAAIAAAACcBAABwYXJlbnQuaHRtbAoAIAAAAAAAAQAYADUjzLji+9MBNSPMuOL70wF1YMe44vvT
AVBLBQYAAAAAAgACALkAAAAtAgAAAAA=
</data>

          </attachment>
      

    </bug>

</bugzilla>