<?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>152617</bug_id>
          
          <creation_ts>2015-12-31 10:07:38 -0800</creation_ts>
          <short_desc>More scrollOffset/scrollPosition disambiguation, in RenderLayer</short_desc>
          <delta_ts>2015-12-31 12:08:29 -0800</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>WebKit 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>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1151724</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-31 10:07:38 -0800</bug_when>
    <thetext>More scrollOffset/scrollPosition disambiguation, in RenderLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151728</commentid>
    <comment_count>1</comment_count>
      <attachid>268044</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-31 10:11:20 -0800</bug_when>
    <thetext>Created attachment 268044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151729</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 10:13:52 -0800</bug_when>
    <thetext>Attachment 268044 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderBlock.cpp:2877:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/rendering/RenderBlock.cpp:2878:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 14 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>1151731</commentid>
    <comment_count>3</comment_count>
      <attachid>268044</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-12-31 10:17:57 -0800</bug_when>
    <thetext>Comment on attachment 268044
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3580
&gt; +    // FIXME: is point a ScrollOffset or ScrollPosition? Test in RTL overflow.

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151733</commentid>
    <comment_count>4</comment_count>
      <attachid>268046</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-31 10:27:43 -0800</bug_when>
    <thetext>Created attachment 268046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151740</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 10:51:11 -0800</bug_when>
    <thetext>Attachment 268046 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderBlock.cpp:2877:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/rendering/RenderBlock.cpp:2878:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 16 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>1151756</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-31 12:08:29 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/194466</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268044</attachid>
            <date>2015-12-31 10:11:20 -0800</date>
            <delta_ts>2015-12-31 10:17:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152617-20151231101045.patch</filename>
            <type>text/plain</type>
            <size>29389</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE2MDM1N2VkNmU1YTRl
M2QxNGViMzE4NWVkNmI2NGE4MzYyMzEwYS4uOGZiMjVhYjVjMWRhNmM4M2RhZGVlZjEwM2U5NjA1
ZjQ5ZmY0YThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTEyLTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgc2Nyb2xs
T2Zmc2V0L3Njcm9sbFBvc2l0aW9uIGRpc2FtYmlndWF0aW9uLCBpbiBSZW5kZXJMYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDaGFu
Z2UgUmVuZGVyTGF5ZXIncyBtX3Njcm9sbE9mZnNldCB0byBiZSBtX3Njcm9sbFBvc2l0aW9uLCBz
aW5jZSBpdCBzdG9yZXMKKyAgICAgICAgc2Nyb2xsIHBvc2l0aW9ucyAobmVnYXRpdmUgaW4gUlRM
IG92ZXJmbG93KS4gc2Nyb2xsT2Zmc2V0KCkgd2FzIGFjY3VyYXRlbHkKKyAgICAgICAgbmFtZWQg
YWxyZWFkeSwgYnV0IGZpeCB0aGUgcmV0dXJuIHR5cGUsIGFuZCByZW1vdmUgdGhlIHVubmVjZXNz
YXJ5IHNjcm9sbFhPZmZzZXQoKS8KKyAgICAgICAgc2Nyb2xsWU9mZnNldCgpIHZhcmlhbnRzLCBm
aXhpbmcgY2FsbGVycyB0byB1c2UgLngoKSBhbmQgLnkoKS4KKyAgICAgICAgCisgICAgICAgIHNj
cm9sbFRvT2Zmc2V0KCkgd2FzIGFsc28gYWNjdXJhdGVseSBuYW1lZCwgYnV0IGZpeCBpdHMgYXJn
dW1lbnQuCisgICAgICAgIAorICAgICAgICBGaXggZnVuY3Rpb25zIHJlbGF0ZWQgdG8gc2F2aW5n
IHNjcm9sbCBwb3NpdGlvbnMgb24gRWxlbWVudCB0byByZWZlciB0byBzY3JvbGwgcG9zaXRpb25z
LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3JvbGxUbyk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzYXZlZExheWVyU2Nyb2xs
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRTYXZlZExh
eWVyU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpz
YXZlZExheWVyU2Nyb2xsT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6aXNaZXJvKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94OjpzY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzY3Jv
bGxlZENvbnRlbnRPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2xhbXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3Jv
bGxUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlKToKKwogMjAx
NS0xMi0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgZXhwbGljaXQgY29udmVyc2lvbnMgYmV0d2VlbiBzY3JvbGxPZmZzZXQgYW5kIHNjcm9s
bFBvc3Rpb24sIGFuZCB1c2UgdGhlbSBpbiBhIGZldyBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IGI4NDRjMjUwYmQzZWY3NDcwNzM2NzMxYjIwYTU5ZjBlNGI5YjY2ZWEuLmEyMGU5YzIw
NGIwMWM3MzFhMzYyMmU0YWFlZWNjOTI1NDhlM2Y1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMzU3Nyw3ICszNTc3LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3Jv
bGxUbyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAgICAgaWYgKCFib3guY2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJveC5s
YXllcigpLT5zY3JvbGxUb09mZnNldCh0b0ludFNpemUocG9pbnQpLCBSZW5kZXJMYXllcjo6U2Ny
b2xsT2Zmc2V0Q2xhbXBlZCk7CisgICAgLy8gRklYTUU6IGlzIHBvaW50IGEgU2Nyb2xsT2Zmc2V0
IG9yIFNjcm9sbFBvc2l0aW9uPyBUZXN0IGluIFJUTCBvdmVyZmxvdy4KKyAgICBib3gubGF5ZXIo
KS0+c2Nyb2xsVG9PZmZzZXQocG9pbnQsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVk
KTsKIH0KIAogI2lmIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYTc3
MWY0ZDkzODMwZDAyMmIxOTNkMTU3MDQzNjg1MDUzOTk2ZDRhMS4uNmIzOGEzZWY3NzcyOWFkNjAx
YThkMDc4YmQ1ZTFjY2I3ZDBiMjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU3NSw3
ICsxNTc1LDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNl
cnRpb25Qb2ludCkKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLmVsZW1lbnRSZW1vdmVkKHRoaXMpOwogI2VuZGlmCiAKLSAgICBzZXRTYXZlZExheWVy
U2Nyb2xsT2Zmc2V0KEludFNpemUoKSk7CisgICAgc2V0U2F2ZWRMYXllclNjcm9sbFBvc2l0aW9u
KFNjcm9sbFBvc2l0aW9uKCkpOwogCiAgICAgaWYgKGluc2VydGlvblBvaW50LmlzSW5UcmVlU2Nv
cGUoKSkgewogICAgICAgICBUcmVlU2NvcGUqIG9sZFNjb3BlID0gJmluc2VydGlvblBvaW50LnRy
ZWVTY29wZSgpOwpAQCAtMzE1MiwxNiArMzE1MiwxNiBAQCB2b2lkIEVsZW1lbnQ6OmRpZFJlbW92
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogfQogCi1JbnRTaXplIEVsZW1l
bnQ6OnNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdAorSW50UG9pbnQgRWxlbWVudDo6c2F2
ZWRMYXllclNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5zYXZlZExheWVyU2Nyb2xsT2Zmc2V0KCkgOiBJbnRTaXpl
KCk7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+c2F2ZWRM
YXllclNjcm9sbFBvc2l0aW9uKCkgOiBJbnRQb2ludCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNl
dFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgRWxlbWVu
dDo6c2V0U2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikK
IHsKLSAgICBpZiAoc2l6ZS5pc1plcm8oKSAmJiAhaGFzUmFyZURhdGEoKSkKKyAgICBpZiAocG9z
aXRpb24uaXNaZXJvKCkgJiYgIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KHNpemUpOwor
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbihw
b3NpdGlvbik7CiB9CiAKIFJlZlB0cjxBdHRyPiBFbGVtZW50OjphdHRySWZFeGlzdHMoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IDFmMTQ4NjE3MGEyZTgxOTk3ZGMwYzkwMzAyMmYzNWViYjg5
NDMyYTAuLjA5NDJhNDI4ZTU3MjgxNWQyZWExYWU0OGUwNDk2MTVhMmI5MDFiYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNDUyLDggKzQ1Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc05hbWUo
KSBjb25zdDsKICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7
CiAKLSAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKLSAgICB2b2lk
IHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOworICAgIEludFBvaW50
IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKICAgICBib29sIGRpc3BhdGNoTW91
c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgaW50IGNsaWNrQ291bnQgPSAwLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0ID0gbnVs
bHB0cik7CiAgICAgYm9vbCBkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNTk4MWNmNGFmNjQ0
NTkxZmRiOGQ0NGY0OTc5MDc3OWJiYmExZDhiNy4uYmFlNzVkNjM5MDdjMDNjODU1NzNkMWNkNWI1
NGViY2JmNjVhNzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMTAx
LDggKzEwMSw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9yUmVzaXpp
bmcoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7IH0KICAgICB2b2lk
IHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoTGF5b3V0U2l6ZSBzaXplKSB7IG1fbWluaW11bVNp
emVGb3JSZXNpemluZyA9IHNpemU7IH0KIAotICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbE9mZnNldDsgfQotICAgIHZv
aWQgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChJbnRTaXplIHNpemUpIHsgbV9zYXZlZExheWVy
U2Nyb2xsT2Zmc2V0ID0gc2l6ZTsgfQorICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9z
YXZlZExheWVyU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCiAgICAgYm9vbCBoYXNQZW5k
aW5nUmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nUmVzb3VyY2VzOyB9CiAg
ICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wgaGFzKSB7IG1faGFzUGVuZGluZ1Jl
c291cmNlcyA9IGhhczsgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgUmVnaW9u
T3ZlcnNldFN0YXRlIG1fcmVnaW9uT3ZlcnNldFN0YXRlOwogCiAgICAgTGF5b3V0U2l6ZSBtX21p
bmltdW1TaXplRm9yUmVzaXppbmc7Ci0gICAgSW50U2l6ZSBtX3NhdmVkTGF5ZXJTY3JvbGxPZmZz
ZXQ7CisgICAgSW50UG9pbnQgbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBtX2NvbXB1dGVkU3R5bGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0
YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwCmluZGV4IDdhMDhkZDdhOTMzYmVkMWVmNWU4MWQxZDFiNGVkNjBjMDY0
Y2NhMjguLjQ1ZTBlY2U2OGE0ODgwYjRiZmNiMGYzYmU3Mzk3MDc0MWU0YjA3NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBA
QCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KiBldmVudCkKICAg
ICAgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBpbm5lclRl
eHRSZW5kZXJlciA9IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGlubmVyTGF5ZXIgPSBpbm5lclRleHRSZW5kZXJl
ci0+bGF5ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZz
ZXQoIXJlbmRlclRleHRDb250cm9sLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
aW5uZXJMYXllci0+c2Nyb2xsV2lkdGgoKSA6IDAsIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCghcmVuZGVyVGV4dENvbnRyb2wuc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBpbm5lckxheWVyLT5zY3JvbGxXaWR0aCgpIDogMCwg
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckxheWVyLT5zY3JvbGxUb09mZnNldChz
Y3JvbGxPZmZzZXQsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRQb2ludC5oCmluZGV4IDBiNWQ0M2FlNzU4ODgzY2U3NmRjYzk0ZDU2ZGYz
ZDdjYTUxZDc0ZDQuLjMzOTBmNDRjYmNiNDhkZDc2YzlkMzQ5MzYyMmZkM2NmY2JlYTM1MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaApAQCAtNjYsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW50UG9pbnQoY29uc3QgRmxvYXRQb2ludCYp
OyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQogCiAgICAgc3Rh
dGljIEludFBvaW50IHplcm8oKSB7IHJldHVybiBJbnRQb2ludCgpOyB9CisgICAgYm9vbCBpc1pl
cm8oKSBjb25zdCB7IHJldHVybiAhbV94ICYmICFtX3k7IH0KIAogICAgIGludCB4KCkgY29uc3Qg
eyByZXR1cm4gbV94OyB9CiAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGY3OTUxOGI0ZWFhNTU0ZGMy
YjI0N2VjMWFiNTllNjlmOWQxNjk5NjMuLjNmYzNkMjIzYTBmMTNhMmY4ZTUzYjhjYTJlODNhMjM5
Nzk3MmI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
Mjg3NCw4ICsyODc0LDggQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgLy8gKHRo
ZSBjb250ZW50IGluc2lkZSB0aGVtIG1vdmVzKS4gIFRoaXMgbWF0Y2hlcyBXaW5JRSBhcyB3ZWxs
LCB3aGljaCBqdXN0IGJvdHRvbS1hbGlnbnMgdGhlbS4KICAgICAgICAgLy8gV2UgYWxzbyBnaXZl
IHVwIG9uIGZpbmRpbmcgYSBiYXNlbGluZSBpZiB3ZSBoYXZlIGEgdmVydGljYWwgc2Nyb2xsYmFy
LCBvciBpZiB3ZSBhcmUgc2Nyb2xsZWQKICAgICAgICAgLy8gdmVydGljYWxseSAoZS5nLiwgYW4g
b3ZlcmZsb3c6aGlkZGVuIGJsb2NrIHRoYXQgaGFzIGhhZCBzY3JvbGxUb3AgbW92ZWQpLgotICAg
ICAgICBib29sIGlnbm9yZUJhc2VsaW5lID0gKGxheWVyKCkgJiYgKGxheWVyKCktPm1hcnF1ZWUo
KSB8fCAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gKGxheWVyKCktPnZlcnRpY2FsU2Ny
b2xsYmFyKCkgfHwgbGF5ZXIoKS0+c2Nyb2xsWU9mZnNldCgpICE9IDApCi0gICAgICAgICAgICA6
IChsYXllcigpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgbGF5ZXIoKS0+c2Nyb2xsWE9mZnNl
dCgpICE9IDApKSkpIHx8IChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSk7Cisg
ICAgICAgIGJvb2wgaWdub3JlQmFzZWxpbmUgPSAobGF5ZXIoKSAmJiAobGF5ZXIoKS0+bWFycXVl
ZSgpIHx8IChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyAobGF5ZXIoKS0+dmVydGljYWxT
Y3JvbGxiYXIoKSB8fCBsYXllcigpLT5zY3JvbGxPZmZzZXQoKS55KCkgIT0gMCkKKyAgICAgICAg
ICAgIDogKGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSB8fCBsYXllcigpLT5zY3JvbGxP
ZmZzZXQoKS54KCkgIT0gMCkpKSkgfHwgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1
bigpKTsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPGludD4gYmFzZWxpbmVQb3MgPSBpZ25v
cmVCYXNlbGluZSA/IE9wdGlvbmFsPGludD4oKSA6IGlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0
aW9uKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IDA2NzM1MTliZTM1ZTJhZWU5N2Q4MDIzYjM2MmY5YTI1ZWNhODhiNDEuLjY4NzJjZTBhMTg5MjA2
ZWE1ZWVmYTdiNGUzOWNlNGNkMDJlMzliYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC0zNTYsMTEgKzM1NiwxMSBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQog
ICAgIC8vIElmIG91ciB6b29tIGZhY3RvciBjaGFuZ2VzIGFuZCB3ZSBoYXZlIGEgZGVmaW5lZCBz
Y3JvbGxMZWZ0L1RvcCwgd2UgbmVlZCB0byBhZGp1c3QgdGhhdCB2YWx1ZSBpbnRvIHRoZQogICAg
IC8vIG5ldyB6b29tZWQgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlw
KCkgJiYgbGF5ZXIoKSAmJiBvbGRTdHlsZSAmJiBvbGRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpICE9
IG5ld1N0eWxlLmVmZmVjdGl2ZVpvb20oKSkgewotICAgICAgICBpZiAoaW50IGxlZnQgPSBsYXll
cigpLT5zY3JvbGxYT2Zmc2V0KCkpIHsKKyAgICAgICAgaWYgKGludCBsZWZ0ID0gbGF5ZXIoKS0+
c2Nyb2xsT2Zmc2V0KCkueCgpKSB7CiAgICAgICAgICAgICBsZWZ0ID0gKGxlZnQgLyBvbGRTdHls
ZS0+ZWZmZWN0aXZlWm9vbSgpKSAqIG5ld1N0eWxlLmVmZmVjdGl2ZVpvb20oKTsKICAgICAgICAg
ICAgIGxheWVyKCktPnNjcm9sbFRvWE9mZnNldChsZWZ0KTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoaW50IHRvcCA9IGxheWVyKCktPnNjcm9sbFlPZmZzZXQoKSkgeworICAgICAgICBpZiAoaW50
IHRvcCA9IGxheWVyKCktPnNjcm9sbE9mZnNldCgpLnkoKSkgewogICAgICAgICAgICAgdG9wID0g
KHRvcCAvIG9sZFN0eWxlLT5lZmZlY3RpdmVab29tKCkpICogbmV3U3R5bGUuZWZmZWN0aXZlWm9v
bSgpOwogICAgICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zmc2V0KHRvcCk7CiAgICAgICAg
IH0KQEAgLTU3OCwxMiArNTc4LDEyIEBAIGludCBSZW5kZXJCb3g6OnNjcm9sbEhlaWdodCgpIGNv
bnN0CiAKIGludCBSZW5kZXJCb3g6OnNjcm9sbExlZnQoKSBjb25zdAogewotICAgIHJldHVybiBo
YXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsWE9mZnNldCgpIDog
MDsKKyAgICByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXIoKSA/IGxheWVyKCktPnNj
cm9sbE9mZnNldCgpLngoKSA6IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6OnNjcm9sbFRvcCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkgPyBsYXllcigp
LT5zY3JvbGxZT2Zmc2V0KCkgOiAwOworICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBs
YXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCkueSgpIDogMDsKIH0KIAogc3RhdGljIHZv
aWQgc2V0dXBXaGVlbEV2ZW50VGVzdFRyaWdnZXIoUmVuZGVyTGF5ZXImIGxheWVyLCBGcmFtZSog
ZnJhbWUpCkBAIC05NzgsNiArOTc4LDcgQEAgSW50U2l6ZSBSZW5kZXJCb3g6OnNjcm9sbGVkQ29u
dGVudE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICBBU1NF
UlQoaGFzTGF5ZXIoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmVyIGNvZGUgbmVlZHMgc2Nyb2xs
T2Zmc2V0L3Njcm9sbFBvc2l0aW9uIGRpc2FtYmlndWF0aW9uLgogICAgIHJldHVybiBsYXllcigp
LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggOTdiYzE5MjZkYzAxZmEyZjg2NTQzYTRhNTAzMmU1YTlmYjY0
MDY3Mi4uYjcyMjE1MmY3Yzc1YzUwMjJjNTc1Yjk2YWVjYzVlYmJkZmRlYWViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMzMsMTAgKzMzMywxMCBAQCBS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXJM
YXllck1vZGVsT2JqZWN0KQogCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigp
LmVsZW1lbnQoKSkgewogICAgICAgICAvLyBXZSBzYXZlIGFuZCByZXN0b3JlIG9ubHkgdGhlIHNj
cm9sbE9mZnNldCBhcyB0aGUgb3RoZXIgc2Nyb2xsIHZhbHVlcyBhcmUgcmVjYWxjdWxhdGVkLgot
ICAgICAgICBtX3Njcm9sbE9mZnNldCA9IGVsZW1lbnQtPnNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQo
KTsKLSAgICAgICAgaWYgKCFtX3Njcm9sbE9mZnNldC5pc1plcm8oKSkKLSAgICAgICAgICAgIHNj
cm9sbEFuaW1hdG9yKCkuc2V0Q3VycmVudFBvc2l0aW9uKEZsb2F0UG9pbnQobV9zY3JvbGxPZmZz
ZXQud2lkdGgoKSwgbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpKTsKLSAgICAgICAgZWxlbWVudC0+
c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChJbnRTaXplKCkpOworICAgICAgICBtX3Njcm9sbFBv
c2l0aW9uID0gZWxlbWVudC0+c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIGlm
ICghbV9zY3JvbGxQb3NpdGlvbi5pc1plcm8oKSkKKyAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9y
KCkuc2V0Q3VycmVudFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOworICAgICAgICBlbGVtZW50
LT5zZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoKSk7CiAgICAgfQogfQogCkBA
IC0zNTIsNyArMzUyLDcgQEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAgICAgICAgIHVu
cmVnaXN0ZXJBc1RvdWNoRXZlbnRMaXN0ZW5lckZvclNjcm9sbGluZygpOwogI2VuZGlmCiAgICAg
ICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5lbGVtZW50KCkpCi0gICAgICAg
ICAgICBlbGVtZW50LT5zZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KG1fc2Nyb2xsT2Zmc2V0KTsK
KyAgICAgICAgICAgIGVsZW1lbnQtPnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbihtX3Njcm9s
bFBvc2l0aW9uKTsKICAgICB9CiAKICAgICBkZXN0cm95U2Nyb2xsYmFyKEhvcml6b250YWxTY3Jv
bGxiYXIpOwpAQCAtMjI4OSw3ICsyMjg5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsQnlS
ZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcKICAg
ICAgICAgcmVzdHJpY3RlZEJ5TGluZUNsYW1wID0gIXJlbmRlcmVyKCkucGFyZW50KCktPnN0eWxl
KCkubGluZUNsYW1wKCkuaXNOb25lKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxv
d0NsaXAoKSAmJiAhcmVzdHJpY3RlZEJ5TGluZUNsYW1wKSB7Ci0gICAgICAgIEludFNpemUgbmV3
U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCkgKyBkZWx0YTsKKyAgICAgICAgU2Nyb2xsT2Zm
c2V0IG5ld1Njcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpICsgZGVsdGE7CiAgICAgICAgIHNj
cm9sbFRvT2Zmc2V0KG5ld1Njcm9sbE9mZnNldCwgY2xhbXApOwogICAgICAgICBpZiAoc2Nyb2xs
ZWRBcmVhKQogICAgICAgICAgICAgKnNjcm9sbGVkQXJlYSA9IHRoaXM7CkBAIC0yMzE0LDI2ICsy
MzE0LDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50
U2l6ZSYgZGVsdGEsIFNjcm9sbE9mZnNldENsYW1waW5nCiAgICAgfQogfQogCi1JbnRTaXplIFJl
bmRlckxheWVyOjpjbGFtcFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQp
IGNvbnN0CitTY3JvbGxPZmZzZXQgUmVuZGVyTGF5ZXI6OmNsYW1wU2Nyb2xsT2Zmc2V0KGNvbnN0
IFNjcm9sbE9mZnNldCYgc2Nyb2xsT2Zmc2V0KSBjb25zdAogewotICAgIFJlbmRlckJveCogYm94
ID0gcmVuZGVyQm94KCk7Ci0gICAgQVNTRVJUKGJveCk7Ci0KLSAgICBpbnQgbWF4WCA9IHNjcm9s
bFdpZHRoKCkgLSByb3VuZFRvSW50KGJveC0+Y2xpZW50V2lkdGgoKSk7Ci0gICAgaW50IG1heFkg
PSBzY3JvbGxIZWlnaHQoKSAtIHJvdW5kVG9JbnQoYm94LT5jbGllbnRIZWlnaHQoKSk7Ci0KLSAg
ICBpbnQgeCA9IHN0ZDo6bWF4KHN0ZDo6bWluKHNjcm9sbE9mZnNldC53aWR0aCgpLCBtYXhYKSwg
MCk7Ci0gICAgaW50IHkgPSBzdGQ6Om1heChzdGQ6Om1pbihzY3JvbGxPZmZzZXQuaGVpZ2h0KCks
IG1heFkpLCAwKTsKLSAgICByZXR1cm4gSW50U2l6ZSh4LCB5KTsKKyAgICByZXR1cm4gc2Nyb2xs
T2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQb2ludCgpLCBtYXhpbXVtU2Nyb2xsT2Zmc2V0
KCkpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUb09mZnNldChjb25zdCBJbnRTaXpl
JiBzY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNldENsYW1waW5nIGNsYW1wKQordm9pZCBSZW5kZXJM
YXllcjo6c2Nyb2xsVG9PZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBzY3JvbGxPZmZzZXQsIFNj
cm9sbE9mZnNldENsYW1waW5nIGNsYW1wKQogewotICAgIEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0
ID0gY2xhbXAgPT0gU2Nyb2xsT2Zmc2V0Q2xhbXBlZCA/IGNsYW1wU2Nyb2xsT2Zmc2V0KHNjcm9s
bE9mZnNldCkgOiBzY3JvbGxPZmZzZXQ7CisgICAgU2Nyb2xsT2Zmc2V0IG5ld1Njcm9sbE9mZnNl
dCA9IGNsYW1wID09IFNjcm9sbE9mZnNldENsYW1wZWQgPyBjbGFtcFNjcm9sbE9mZnNldChzY3Jv
bGxPZmZzZXQpIDogc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChuZXdTY3JvbGxPZmZzZXQgIT0gdGhp
cy0+c2Nyb2xsT2Zmc2V0KCkpCi0gICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlv
bihJbnRQb2ludChuZXdTY3JvbGxPZmZzZXQpKTsKKyAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKG5ld1Njcm9sbE9mZnNldCk7CiB9CiAKKy8vIHggYW5kIHkgYXJlIHNjcm9s
bCBvZmZzZXQgdmFsdWVzCisvLyBGSVhNRTogdXNlIGEgU2Nyb2xsT2Zmc2V0LCBvciBjaGFuZ2Ug
dGhpcyB0byB0YWtlIGEgU2Nyb2xsUG9zaXRpb24uCiB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxU
byhpbnQgeCwgaW50IHkpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKQEAg
LTIzNjIsOCArMjM1Niw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGludCB4LCBpbnQg
eSkKICAgICAvLyBjb21wbGljYXRlZCAoc2luY2UgaXQgd2lsbCBpbnZvbHZlIHRlc3Rpbmcgd2hl
dGhlciBvdXIgbGF5ZXIKICAgICAvLyBpcyBlaXRoZXIgb2NjbHVkZWQgYnkgYW5vdGhlciBsYXll
ciBvciBjbGlwcGVkIGJ5IGFuIGVuY2xvc2luZwogICAgIC8vIGxheWVyIG9yIGNvbnRhaW5zIGZp
eGVkIGJhY2tncm91bmRzLCBldGMuKS4KLSAgICBJbnRTaXplIG5ld1Njcm9sbE9mZnNldCA9IElu
dFNpemUoeCAtIHNjcm9sbE9yaWdpbigpLngoKSwgeSAtIHNjcm9sbE9yaWdpbigpLnkoKSk7Ci0g
ICAgaWYgKG1fc2Nyb2xsT2Zmc2V0ID09IG5ld1Njcm9sbE9mZnNldCkgeworICAgIFNjcm9sbFBv
c2l0aW9uIG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KFNjcm9s
bE9mZnNldCh4LCB5KSk7CisgICAgaWYgKG1fc2Nyb2xsUG9zaXRpb24gPT0gbmV3U2Nyb2xsUG9z
aXRpb24pIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChtX3JlcXVpcmVzU2Nyb2xs
Qm91bmRzT3JpZ2luVXBkYXRlKQogICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNB
ZnRlclNjcm9sbCgpOwpAQCAtMjM3MSw4ICsyMzY1LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Ny
b2xsVG8oaW50IHgsIGludCB5KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIElu
dFBvaW50IG9sZFBvc2l0aW9uID0gSW50UG9pbnQobV9zY3JvbGxPZmZzZXQpOwotICAgIG1fc2Ny
b2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0OworICAgIFNjcm9sbFBvc2l0aW9uIG9sZFBvc2l0
aW9uID0gSW50UG9pbnQobV9zY3JvbGxQb3NpdGlvbik7CisgICAgbV9zY3JvbGxQb3NpdGlvbiA9
IG5ld1Njcm9sbFBvc2l0aW9uOwogCiAgICAgUmVuZGVyVmlldyYgdmlldyA9IHJlbmRlcmVyKCku
dmlldygpOwogCkBAIC0yNDIzLDcgKzI0MTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxU
byhpbnQgeCwgaW50IHkpCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBhbmQgc2Nyb2xsLXJl
bGF0ZWQgRE9NIGV2ZW50cy4KICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyKCku
ZWxlbWVudCgpKSB7CiAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuZXZlbnRRdWV1ZSgpLmVu
cXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoKmVsZW1lbnQpOwotICAgICAgICBlbGVtZW50LT5k
b2N1bWVudCgpLnNlbmRXaWxsUmV2ZWFsRWRnZUV2ZW50c0lmTmVlZGVkKG9sZFBvc2l0aW9uLCBJ
bnRQb2ludChuZXdTY3JvbGxPZmZzZXQpLCB2aXNpYmxlQ29udGVudFJlY3QoKSwgY29udGVudHNT
aXplKCksIGVsZW1lbnQpOworICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnNlbmRXaWxsUmV2
ZWFsRWRnZUV2ZW50c0lmTmVlZGVkKG9sZFBvc2l0aW9uLCBuZXdTY3JvbGxQb3NpdGlvbiwgdmlz
aWJsZUNvbnRlbnRSZWN0KCksIGNvbnRlbnRzU2l6ZSgpLCBlbGVtZW50KTsKICAgICB9CiAKICAg
ICBpZiAoc2Nyb2xsc092ZXJmbG93KCkpCkBAIC0yNDkzLDkgKzI0ODcsOSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0
IFNjcm9sbEFsaWdubQogICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKDAsIDAsIGJveC0+
Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CiAgICAgICAgIExheW91dFJlY3Qg
ciA9IGdldFJlY3RUb0V4cG9zZShsYXllckJvdW5kcywgbGF5ZXJCb3VuZHMsIGxvY2FsRXhwb3Nl
UmVjdCwgYWxpZ25YLCBhbGlnblkpOwogCi0gICAgICAgIEludFNpemUgY2xhbXBlZFNjcm9sbE9m
ZnNldCA9IGNsYW1wU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpICsgdG9JbnRTaXplKHJvdW5k
ZWRJbnRSZWN0KHIpLmxvY2F0aW9uKCkpKTsKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRT
Y3JvbGxPZmZzZXQgPSBjbGFtcFNjcm9sbE9mZnNldChzY3JvbGxPZmZzZXQoKSArIHRvSW50U2l6
ZShyb3VuZGVkSW50UmVjdChyKS5sb2NhdGlvbigpKSk7CiAgICAgICAgIGlmIChjbGFtcGVkU2Ny
b2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBJbnRTaXplIG9sZFNj
cm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAgU2Nyb2xsT2Zmc2V0IG9s
ZFNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOwogICAgICAgICAgICAgc2Nyb2xsVG9PZmZz
ZXQoY2xhbXBlZFNjcm9sbE9mZnNldCk7CiAgICAgICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNl
dERpZmZlcmVuY2UgPSBzY3JvbGxPZmZzZXQoKSAtIG9sZFNjcm9sbE9mZnNldDsKICAgICAgICAg
ICAgIGxvY2FsRXhwb3NlUmVjdC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKQEAgLTI3
MzQsMjEgKzI3MjgsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0
IEludFBvaW50JiBvZmZzZXQpCiBpbnQgUmVuZGVyTGF5ZXI6OnNjcm9sbFBvc2l0aW9uKFNjcm9s
bGJhciogc2Nyb2xsYmFyKSBjb25zdAogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIHNjcm9sbFhPZmZzZXQo
KTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbE9mZnNldCgpLngoKTsKICAgICBpZiAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gc2Ny
b2xsWU9mZnNldCgpOworICAgICAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkueSgpOwogICAgIHJl
dHVybiAwOwogfQogCi1TY3JvbGxQb3NpdGlvbiBSZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24o
KSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHNjcm9sbE9mZnNldC9zY3JvbGxQ
b3NpdGlvbiBkaXNhbWJpZ3VhdGlvbi4KLSAgICByZXR1cm4gU2Nyb2xsUG9zaXRpb24obV9zY3Jv
bGxPZmZzZXQpOwotfQotCiBTY3JvbGxQb3NpdGlvbiBSZW5kZXJMYXllcjo6bWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogbV9zY3JvbGxTaXplIG1heSBub3Qg
YmUgdXAtdG8tZGF0ZSBpZiBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSBpcyB0cnVlLgorICAgIC8v
IEZJWE1FOiBzaG91bGQgYmUgYWJsZSB0byB1c2UgdGhlIFNjcm9sbGFibGVBcmVhIGltcGxlbWVu
dGF0aW9uLgogICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQocm91bmRlZEludFBv
aW50KG1fc2Nyb2xsU2l6ZSkgLSB2aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJz
KENvbnRlbnRzVmlzaWJsZVJlY3QpLnNpemUoKSk7CiB9CiAKQEAgLTM0NzYsNyArMzQ2NSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5ID0gdHJ1ZTsKLSAgICBJbnRT
aXplIG9yaWdpbmFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7CisgICAgU2Nyb2xsT2Zm
c2V0IG9yaWdpbmFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7CiAKICAgICBjb21wdXRl
U2Nyb2xsRGltZW5zaW9ucygpOwogCkBAIC0zNDg5LDcgKzM0NzgsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgIGlmIChib3gtPnN0eWxlKCku
b3ZlcmZsb3dYKCkgIT0gT01BUlFVRUUgJiYgIWlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSkgewog
ICAgICAgICAvLyBMYXlvdXQgbWF5IGNhdXNlIHVzIHRvIGJlIGF0IGFuIGludmFsaWQgc2Nyb2xs
IHBvc2l0aW9uLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZAogICAgICAgICAvLyB0byBwdWxsIG91ciBz
Y3JvbGwgb2Zmc2V0cyBiYWNrIHRvIHRoZSBtYXggKG9yIHB1c2ggdGhlbSB1cCB0byB0aGUgbWlu
KS4KLSAgICAgICAgSW50U2l6ZSBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZz
ZXQoc2Nyb2xsT2Zmc2V0KCkpOworICAgICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbE9m
ZnNldCA9IGNsYW1wU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpKTsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGxvb2tzIHdyb25nLiBUaGUgY2FyZXQgYWRqdXN0
IG1vZGUgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBvbiBlZGl0aW5nIHJlbGF0ZWQgZW50cnkgcG9p
bnRzLgogICAgICAgICAvLyBUaGlzIGNvZGUgd2FzIGFkZGVkIHRvIGZpeCBhbiBpc3N1ZSB3aGVy
ZSB0aGUgdGV4dCBpbnNlcnRpb24gcG9pbnQgd291bGQgYWx3YXlzIGJlIGRyYXduIG9uIHRoZSBy
aWdodCBlZGdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGNiMTU5
MTQ1NzNlMWI1MDY5ZmJiNTE5NDhlMjc4NDc3OGZmYTM5MjUuLmRkNmQ4OTkxZWUyZjkzMWEwNTll
NjhkZjU2OTdkMjhkZWMwMjU0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCkBAIC0xOTEsMTQgKzE5MSwxMyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIFNjcm9s
bGluZyBtZXRob2RzIGZvciBsYXllcnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWlyIG92ZXJmbG93Lgot
ICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiwgU2Nyb2xsT2Zmc2V0
Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQsIFNjcm9sbGFibGVBcmVhKiogc2Nyb2xs
ZWRBcmVhID0gbnVsbHB0cik7Ci0gICAgdm9pZCBzY3JvbGxUb09mZnNldChjb25zdCBJbnRTaXpl
JiwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpOwotICAgIHZv
aWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4LCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCA9IFNj
cm9sbE9mZnNldFVuY2xhbXBlZCkgeyBzY3JvbGxUb09mZnNldChJbnRTaXplKHgsIHNjcm9sbFlP
ZmZzZXQoKSksIGNsYW1wKTsgfQotICAgIHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0KGludCB5LCBTY3Jv
bGxPZmZzZXRDbGFtcGluZyBjbGFtcCA9IFNjcm9sbE9mZnNldFVuY2xhbXBlZCkgeyBzY3JvbGxU
b09mZnNldChJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSwgeSksIGNsYW1wKTsgfQotCi0gICAgaW50
IHNjcm9sbFhPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldC53aWR0aCgpICsg
c2Nyb2xsT3JpZ2luKCkueCgpOyB9Ci0gICAgaW50IHNjcm9sbFlPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSArIHNjcm9sbE9yaWdpbigpLnkoKTsgfQotICAg
IEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShzY3JvbGxYT2Zm
c2V0KCksIHNjcm9sbFlPZmZzZXQoKSk7IH0KKyAgICB2b2lkIHNjcm9sbEJ5UmVjdXJzaXZlbHko
Y29uc3QgSW50U2l6ZSYgZGVsdGEsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0
VW5jbGFtcGVkLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJlYSA9IG51bGxwdHIpOworCisg
ICAgdm9pZCBzY3JvbGxUb09mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmLCBTY3JvbGxPZmZzZXRD
bGFtcGluZyA9IFNjcm9sbE9mZnNldFVuY2xhbXBlZCk7CisgICAgdm9pZCBzY3JvbGxUb1hPZmZz
ZXQoaW50IHgsIFNjcm9sbE9mZnNldENsYW1waW5nIGNsYW1wID0gU2Nyb2xsT2Zmc2V0VW5jbGFt
cGVkKSB7IHNjcm9sbFRvT2Zmc2V0KFNjcm9sbE9mZnNldCh4LCBzY3JvbGxPZmZzZXQoKS55KCkp
LCBjbGFtcCk7IH0KKyAgICB2b2lkIHNjcm9sbFRvWU9mZnNldChpbnQgeSwgU2Nyb2xsT2Zmc2V0
Q2xhbXBpbmcgY2xhbXAgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpIHsgc2Nyb2xsVG9PZmZzZXQo
U2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpLngoKSwgeSksIGNsYW1wKTsgfQorCisgICAgU2Ny
b2xsT2Zmc2V0IHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbE9mZnNldEZyb21Q
b3NpdGlvbihtX3Njcm9sbFBvc2l0aW9uKTsgfQogICAgIEludFNpemUgc2Nyb2xsYWJsZUNvbnRl
bnRzU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExh
eW91dFJlY3QmLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxp
Z25tZW50JiBhbGlnblkpOwpAQCAtNzUxLDkgKzc1MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbChSZW5kZXJHZW9tZXRyeU1hcCosIFVwZGF0
ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxGbGFncyA9IE5vRmxhZyk7CiAKICAgICBmcmllbmQg
SW50U2l6ZSBSZW5kZXJCb3g6OnNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0OwotICAgIElu
dFNpemUgc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxPZmZz
ZXQ7IH0KKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoaXMgdG9zY3JvbGxlZENvbnRlbnRQb3NpdGlv
bigpLCBvciByZW1vdmUgaXQuCisgICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiB0b0ludFNpemUobV9zY3JvbGxQb3NpdGlvbik7IH0KIAotICAgIEludFNp
emUgY2xhbXBTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIFNjcm9sbE9m
ZnNldCBjbGFtcFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSBjb25zdDsKIAogICAg
IFJlbmRlckxheWVyKiBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXJJblN1YnRyZWUoY29uc3QgUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgUGFnaW5hdGlvbkluY2x1c2lvbk1vZGUpIGNvbnN0OwogCkBA
IC04NjUsNyArODY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNj
cm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFNj
cm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Nyb2xsUG9zaXRpb247IH0KICAgICB2aXJ0dWFsIFNjcm9sbFBvc2l0aW9uIG1heGltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBJbnRSZWN0IHZp
c2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xs
YmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTA5
Myw4ICsxMDkzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgbGF5ZXIncyB3aWR0aC9oZWlnaHQK
ICAgICBJbnRTaXplIG1fbGF5ZXJTaXplOwogCi0gICAgLy8gVGhpcyBpcyB0aGUgKHNjcm9sbCkg
b2Zmc2V0IGZyb20gc2Nyb2xsT3JpZ2luKCkuCi0gICAgSW50U2l6ZSBtX3Njcm9sbE9mZnNldDsK
KyAgICBTY3JvbGxQb3NpdGlvbiBtX3Njcm9sbFBvc2l0aW9uOwogCiAgICAgLy8gVGhlIHdpZHRo
L2hlaWdodCBvZiBvdXIgc2Nyb2xsZWQgYXJlYS4KICAgICBMYXlvdXRTaXplIG1fc2Nyb2xsU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggNjFmMjIwMzdhNDk5NmNjZDY0YzBjZDcwYzY1ZmY2MDA1M2M4MjkyMy4uOGY1NWNiMTZm
NmFmYjg3ZGE1M2M1YWI3NWZlYTdmM2MyM2U5N2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTk0Nyw3ICs5NDcsNyBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoKQogICAgICAgICBBU1NFUlQobV9z
Y3JvbGxpbmdDb250ZW50c0xheWVyKTsKICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKTsKICAgICAgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94
KHJlbmRlckJveC5ib3JkZXJMZWZ0KCksIHJlbmRlckJveC5ib3JkZXJUb3AoKSwgcmVuZGVyQm94
LndpZHRoKCkgLSByZW5kZXJCb3guYm9yZGVyTGVmdCgpIC0gcmVuZGVyQm94LmJvcmRlclJpZ2h0
KCksIHJlbmRlckJveC5oZWlnaHQoKSAtIHJlbmRlckJveC5ib3JkZXJUb3AoKSAtIHJlbmRlckJv
eC5ib3JkZXJCb3R0b20oKSk7Ci0gICAgICAgIExheW91dFNpemUgc2Nyb2xsT2Zmc2V0ID0gbV9v
d25pbmdMYXllci5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9m
ZnNldCA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsT2Zmc2V0KCk7CiAKICAgICAgICAgLy8gRklYTUU6
IG5lZWQgdG8gZG8gc29tZSBwaXhlbCBzbmFwcGluZyBoZXJlLgogICAgICAgICBtX3Njcm9sbGlu
Z0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIGxv
Y2FsQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKSkpOwpAQCAtOTYwLDExICs5NjAsMTEgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KCkKIAogICAgICAgICBpZiAo
bV9vd25pbmdMYXllci5pc0luVXNlclNjcm9sbCgpKSB7CiAgICAgICAgICAgICAvLyBJZiBzY3Jv
bGxpbmcgaXMgaGFwcGVuaW5nIGV4dGVybmFsbHksIHdlIGRvbid0IHdhbnQgdG8gdG91Y2ggdGhl
IGxheWVyIGJvdW5kcyBvcmlnaW4gaGVyZSBiZWNhdXNlIHRoYXQgd2lsbCBjYXVzZSBqaXR0ZXIu
Ci0gICAgICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zeW5jQm91bmRzT3JpZ2luKEZsb2F0UG9p
bnQoc2Nyb2xsT2Zmc2V0LndpZHRoKCksIHNjcm9sbE9mZnNldC5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgbV9zY3JvbGxpbmdMYXllci0+c3luY0JvdW5kc09yaWdpbihzY3JvbGxPZmZzZXQpOwog
ICAgICAgICAgICAgbV9vd25pbmdMYXllci5zZXRSZXF1aXJlc1Njcm9sbEJvdW5kc09yaWdpblVw
ZGF0ZSh0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSBpbXBsZW1lbnQgdGhlIGNvbnRlbnRzIG9mZnNldCB2aWEgdGhlIGJvdW5kcyBvcmlnaW4gb24g
dGhpcyBsYXllciwgcmF0aGVyIHRoYW4gYSBwb3NpdGlvbiBvbiB0aGUgc3VibGF5ZXIuCi0gICAg
ICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRCb3VuZHNPcmlnaW4oRmxvYXRQb2ludChzY3Jv
bGxPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSk7CisgICAgICAgICAgICBt
X3Njcm9sbGluZ0xheWVyLT5zZXRCb3VuZHNPcmlnaW4oc2Nyb2xsT2Zmc2V0KTsKICAgICAgICAg
ICAgIG1fb3duaW5nTGF5ZXIuc2V0UmVxdWlyZXNTY3JvbGxCb3VuZHNPcmlnaW5VcGRhdGUoZmFs
c2UpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTgwLDcgKzk4MCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgcGFp
bnQgb2Zmc2V0IGFuZCB0aGUgc2Nyb2xsIG9mZnNldCBzaG91bGQgcmVhbGx5IGJlIHNlcGFyYXRl
IGNvbmNlcHRzLgogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldE9mZnNldEZy
b21SZW5kZXJlcihwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpIC0gc2Nyb2xsT2Zm
c2V0LCBHcmFwaGljc0xheWVyOjpEb250U2V0TmVlZHNEaXNwbGF5KTsKICNlbHNlCi0gICAgICAg
IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgtc2Nyb2xs
T2Zmc2V0LndpZHRoKCksIC1zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9zY3Jv
bGxpbmdDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbigtc2Nyb2xsT2Zmc2V0KTsKIAogICAgICAg
ICBGbG9hdFNpemUgb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgPSBtX3Njcm9sbGluZ0xheWVyLT5v
ZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0T2Zmc2V0
RnJvbVJlbmRlcmVyKC10b0Zsb2F0U2l6ZShwYWRkaW5nQm94LmxvY2F0aW9uKCkpKTsKQEAgLTk5
Nyw3ICs5OTcsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoKQog
ICAgICAgICBpZiAoc2Nyb2xsU2l6ZSAhPSBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNpemUo
KSB8fCBwYWRkaW5nQm94T2Zmc2V0Q2hhbmdlZCkKICAgICAgICAgICAgIG1fc2Nyb2xsaW5nQ29u
dGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAgICAgICAgTGF5b3V0U2l6ZSBzY3Jv
bGxpbmdDb250ZW50c09mZnNldCA9IHRvTGF5b3V0U2l6ZShwYWRkaW5nQm94LmxvY2F0aW9uKCkg
LSBzY3JvbGxPZmZzZXQpOworICAgICAgICBMYXlvdXRTaXplIHNjcm9sbGluZ0NvbnRlbnRzT2Zm
c2V0ID0gdG9MYXlvdXRTaXplKHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIHRvTGF5b3V0U2l6ZShz
Y3JvbGxPZmZzZXQpKTsKICAgICAgICAgaWYgKHNjcm9sbGluZ0NvbnRlbnRzT2Zmc2V0ICE9IG1f
c2Nyb2xsaW5nQ29udGVudHNMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkgfHwgc2Nyb2xsU2l6
ZSAhPSBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNpemUoKSkKICAgICAgICAgICAgIGNvbXBv
c2l0b3IoKS5zY3JvbGxpbmdMYXllckRpZENoYW5nZShtX293bmluZ0xheWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmluZGV4IDU4NWQzZjgyOWI5MTM0
N2IzYTRhY2EzMTRmODI1YjMyNmIxYzkyNTAuLjExM2M2ODA1MTQ4MzM4OTE3MTZiZGJhMGQ3MTdh
MDdhM2VmN2ZiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5j
cHAKQEAgLTE1OSw5ICsxNTksOSBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnN0YXJ0KCkKIAogICAg
IGlmICghbV9zdXNwZW5kZWQgJiYgIW1fc3RvcHBlZCkgewogICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsKCkpCi0gICAgICAgICAgICBtX2xheWVyLT5zY3JvbGxUb09mZnNldChJbnRTaXplKG1fc3Rh
cnQsIDApKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KFNjcm9sbE9mZnNl
dChtX3N0YXJ0LCAwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fbGF5ZXItPnNjcm9s
bFRvT2Zmc2V0KEludFNpemUoMCwgbV9zdGFydCkpOworICAgICAgICAgICAgbV9sYXllci0+c2Ny
b2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KDAsIG1fc3RhcnQpKTsKICAgICB9CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBS
ZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKCkKICAgICAgICAgYm9vbCBwb3NpdGl2ZSA9IHJhbmdl
ID4gMDsKICAgICAgICAgaW50IGNsaWVudFNpemUgPSAoaXNIb3Jpem9udGFsKCkgPyByb3VuZFRv
SW50KG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRXaWR0aCgpKSA6IHJvdW5kVG9JbnQobV9s
YXllci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKSk7CiAgICAgICAgIGludCBpbmNyZW1l
bnQgPSBhYnMoaW50VmFsdWVGb3JMZW5ndGgobV9sYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLm1h
cnF1ZWVJbmNyZW1lbnQoKSwgY2xpZW50U2l6ZSkpOwotICAgICAgICBpbnQgY3VycmVudFBvcyA9
IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnNjcm9sbFhPZmZzZXQoKSA6IG1fbGF5ZXItPnNj
cm9sbFlPZmZzZXQoKSk7CisgICAgICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgp
ID8gbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCkueCgpIDogbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCku
eSgpKTsKICAgICAgICAgbmV3UG9zID0gIGN1cnJlbnRQb3MgKyAoYWRkSW5jcmVtZW50ID8gaW5j
cmVtZW50IDogLWluY3JlbWVudCk7CiAgICAgICAgIGlmIChwb3NpdGl2ZSkKICAgICAgICAgICAg
IG5ld1BvcyA9IHN0ZDo6bWluKG5ld1BvcywgZW5kUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGM5ODhjZTZmYWY2ZTNlOWRkNTVi
YmJiMDJkZDVhZDEyODljODE5MGQuLjAwZjI0NWUxZWRjOWIwZjBjZGZlODMxYzRmNTc4MTRmOGFl
MDEyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKQEAgLTYxNywxMCArNjE3LDEwIEBAIHN0YXRpYyB2b2lkIHdyaXRlKFRleHRTdHJlYW0mIHRz
LCBSZW5kZXJMYXllciYgbCwKICAgICB9CiAKICAgICBpZiAobC5yZW5kZXJlcigpLmhhc092ZXJm
bG93Q2xpcCgpKSB7Ci0gICAgICAgIGlmIChsLnNjcm9sbFhPZmZzZXQoKSkKLSAgICAgICAgICAg
IHRzIDw8ICIgc2Nyb2xsWCAiIDw8IGwuc2Nyb2xsWE9mZnNldCgpOwotICAgICAgICBpZiAobC5z
Y3JvbGxZT2Zmc2V0KCkpCi0gICAgICAgICAgICB0cyA8PCAiIHNjcm9sbFkgIiA8PCBsLnNjcm9s
bFlPZmZzZXQoKTsKKyAgICAgICAgaWYgKGwuc2Nyb2xsT2Zmc2V0KCkueCgpKQorICAgICAgICAg
ICAgdHMgPDwgIiBzY3JvbGxYICIgPDwgbC5zY3JvbGxPZmZzZXQoKS54KCk7CisgICAgICAgIGlm
IChsLnNjcm9sbE9mZnNldCgpLnkoKSkKKyAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsWSAiIDw8
IGwuc2Nyb2xsT2Zmc2V0KCkueSgpOwogICAgICAgICBpZiAobC5yZW5kZXJCb3goKSAmJiByb3Vu
ZFRvSW50KGwucmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpICE9IGwuc2Nyb2xsV2lkdGgoKSkK
ICAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsV2lkdGggIiA8PCBsLnNjcm9sbFdpZHRoKCk7CiAg
ICAgICAgIGlmIChsLnJlbmRlckJveCgpICYmIHJvdW5kVG9JbnQobC5yZW5kZXJCb3goKS0+Y2xp
ZW50SGVpZ2h0KCkpICE9IGwuc2Nyb2xsSGVpZ2h0KCkpCg==
</data>
<flag name="review"
          id="293002"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268046</attachid>
            <date>2015-12-31 10:27:43 -0800</date>
            <delta_ts>2015-12-31 10:27:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152617-20151231102708.patch</filename>
            <type>text/plain</type>
            <size>33294</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE2MDM1N2VkNmU1YTRl
M2QxNGViMzE4NWVkNmI2NGE4MzYyMzEwYS4uOGZiMjVhYjVjMWRhNmM4M2RhZGVlZjEwM2U5NjA1
ZjQ5ZmY0YThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE1LTEyLTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgc2Nyb2xs
T2Zmc2V0L3Njcm9sbFBvc2l0aW9uIGRpc2FtYmlndWF0aW9uLCBpbiBSZW5kZXJMYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDaGFu
Z2UgUmVuZGVyTGF5ZXIncyBtX3Njcm9sbE9mZnNldCB0byBiZSBtX3Njcm9sbFBvc2l0aW9uLCBz
aW5jZSBpdCBzdG9yZXMKKyAgICAgICAgc2Nyb2xsIHBvc2l0aW9ucyAobmVnYXRpdmUgaW4gUlRM
IG92ZXJmbG93KS4gc2Nyb2xsT2Zmc2V0KCkgd2FzIGFjY3VyYXRlbHkKKyAgICAgICAgbmFtZWQg
YWxyZWFkeSwgYnV0IGZpeCB0aGUgcmV0dXJuIHR5cGUsIGFuZCByZW1vdmUgdGhlIHVubmVjZXNz
YXJ5IHNjcm9sbFhPZmZzZXQoKS8KKyAgICAgICAgc2Nyb2xsWU9mZnNldCgpIHZhcmlhbnRzLCBm
aXhpbmcgY2FsbGVycyB0byB1c2UgLngoKSBhbmQgLnkoKS4KKyAgICAgICAgCisgICAgICAgIHNj
cm9sbFRvT2Zmc2V0KCkgd2FzIGFsc28gYWNjdXJhdGVseSBuYW1lZCwgYnV0IGZpeCBpdHMgYXJn
dW1lbnQuCisgICAgICAgIAorICAgICAgICBGaXggZnVuY3Rpb25zIHJlbGF0ZWQgdG8gc2F2aW5n
IHNjcm9sbCBwb3NpdGlvbnMgb24gRWxlbWVudCB0byByZWZlciB0byBzY3JvbGwgcG9zaXRpb25z
LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3JvbGxUbyk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzYXZlZExheWVyU2Nyb2xs
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRTYXZlZExh
eWVyU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpz
YXZlZExheWVyU2Nyb2xsT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpmb3J3YXJkRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ludFBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6aXNaZXJvKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94OjpzY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzY3Jv
bGxlZENvbnRlbnRPZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2xhbXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3Jv
bGxUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlKToKKwogMjAx
NS0xMi0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgZXhwbGljaXQgY29udmVyc2lvbnMgYmV0d2VlbiBzY3JvbGxPZmZzZXQgYW5kIHNjcm9s
bFBvc3Rpb24sIGFuZCB1c2UgdGhlbSBpbiBhIGZldyBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IGI4NDRjMjUwYmQzZWY3NDcwNzM2NzMxYjIwYTU5ZjBlNGI5YjY2ZWEuLmEyMGU5YzIw
NGIwMWM3MzFhMzYyMmU0YWFlZWNjOTI1NDhlM2Y1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMzU3Nyw3ICszNTc3LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3Jv
bGxUbyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAgICAgaWYgKCFib3guY2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJveC5s
YXllcigpLT5zY3JvbGxUb09mZnNldCh0b0ludFNpemUocG9pbnQpLCBSZW5kZXJMYXllcjo6U2Ny
b2xsT2Zmc2V0Q2xhbXBlZCk7CisgICAgLy8gRklYTUU6IGlzIHBvaW50IGEgU2Nyb2xsT2Zmc2V0
IG9yIFNjcm9sbFBvc2l0aW9uPyBUZXN0IGluIFJUTCBvdmVyZmxvdy4KKyAgICBib3gubGF5ZXIo
KS0+c2Nyb2xsVG9PZmZzZXQocG9pbnQsIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVk
KTsKIH0KIAogI2lmIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUhUTUwubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUhUTUwubW0KaW5kZXggMDI3NTk1ZTFlOTFiMmYzYWE2MjhlMjkzNjE1YmE1MWQyZmYwNTlkNS4u
MGMwM2Y5NmZhOWQ1NzUyNjA2NGI5ZWI0MWNjNzAzMTM4YzY3NWY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSFRNTC5tbQpAQCAtNzcsNyArNzcsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICBpZiAoIWlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSB8fCAhcmVuZGVy
ZXItPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKS0+c2Nyb2xsWE9mZnNldCgpOwor
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKS0+c2Nyb2xs
T2Zmc2V0KCkueCgpOwogfQogCiAtIChpbnQpc2Nyb2xsWU9mZnNldApAQCAtOTEsNyArOTEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBpZiAoIWlzPFJlbmRlckJveD4oKnJlbmRl
cmVyKSB8fCAhcmVuZGVyZXItPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKS0+c2Ny
b2xsWU9mZnNldCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlciku
bGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCkueSgpOwogfQogCiAtICh2b2lkKXNldFNjcm9sbFhPZmZz
ZXQ6KGludCl4IHNjcm9sbFlPZmZzZXQ6KGludCl5CkBAIC0xMTMsMTIgKzExMywxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKTsKICAgICBpZiAoYWRqdXN0Rm9ySU9TQ2FyZXQp
CiAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7
Ci0gICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KEludFNpemUoeCwgeSkpOworICAgIGxheWVyLT5z
Y3JvbGxUb09mZnNldChTY3JvbGxPZmZzZXQoeCwgeSkpOwogICAgIGlmIChhZGp1c3RGb3JJT1ND
YXJldCkKICAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhm
YWxzZSk7CiB9CiAKLS0gKHZvaWQpYWJzb2x1dGVQb3NpdGlvbjooaW50ICopeCA6KGludCAqKXkg
OihpbnQgKil3IDooaW50ICopaCB7CistICh2b2lkKWFic29sdXRlUG9zaXRpb246KGludCAqKXgg
OihpbnQgKil5IDooaW50ICopdyA6KGludCAqKWgKK3sKICAgICBSZW5kZXJCb3ggKnJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyQm94KCk7CiAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAg
IGlmICh3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGE3NzFmNGQ5MzgzMGQwMjJiMTkzZDE1
NzA0MzY4NTA1Mzk5NmQ0YTEuLjZiMzhhM2VmNzc3MjlhZDYwMWE4ZDA3OGJkNWUxY2NiN2QwYjI1
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQgRWxl
bWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAg
IGRvY3VtZW50KCkucGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS5lbGVtZW50UmVtb3Zl
ZCh0aGlzKTsKICNlbmRpZgogCi0gICAgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChJbnRTaXpl
KCkpOworICAgIHNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbihTY3JvbGxQb3NpdGlvbigpKTsK
IAogICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0luVHJlZVNjb3BlKCkpIHsKICAgICAgICAgVHJl
ZVNjb3BlKiBvbGRTY29wZSA9ICZpbnNlcnRpb25Qb2ludC50cmVlU2NvcGUoKTsKQEAgLTMxNTIs
MTYgKzMxNTIsMTYgQEAgdm9pZCBFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIGRpc3BhdGNoU3VidHJl
ZU1vZGlmaWVkRXZlbnQoKTsKIH0KIAotSW50U2l6ZSBFbGVtZW50OjpzYXZlZExheWVyU2Nyb2xs
T2Zmc2V0KCkgY29uc3QKK0ludFBvaW50IEVsZW1lbnQ6OnNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEo
KS0+c2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBoYXNS
YXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigp
IDogSW50UG9pbnQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRTYXZlZExheWVyU2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKHNpemUuaXNa
ZXJvKCkgJiYgIWhhc1JhcmVEYXRhKCkpCisgICAgaWYgKHBvc2l0aW9uLmlzWmVybygpICYmICFo
YXNSYXJlRGF0YSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCkuc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChzaXplKTsKKyAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwogfQogCiBSZWZQ
dHI8QXR0cj4gRWxlbWVudDo6YXR0cklmRXhpc3RzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxO
YW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCAxZjE0ODYxNzBhMmU4MTk5N2RjMGM5MDMwMjJmMzVlYmI4OTQzMmEwLi4wOTQyYTQyOGU1NzI4
MTVkMmVhMWFlNDhlMDQ5NjE1YTJiOTAxYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ1Miw4
ICs0NTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNOYW1lKCkgY29uc3Q7CiAgICAgY29uc3Qg
U3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcygpIGNvbnN0OwogCi0gICAgSW50U2l6ZSBzYXZl
ZExheWVyU2Nyb2xsT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xs
T2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9z
aXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbihjb25z
dCBJbnRQb2ludCYpOwogCiAgICAgYm9vbCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCBjbGlja0Nv
dW50ID0gMCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCA9IG51bGxwdHIpOwogICAgIGJvb2wgZGlz
cGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDU5ODFjZjRhZjY0NDU5MWZkYjhkNDRmNDk3OTA3Nzli
YmJhMWQ4YjcuLmJhZTc1ZDYzOTA3YzAzYzg1NTczZDFjZDViNTRlYmNiZjY1YTc1ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTEwMSw4ICsxMDEsOCBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0U2l6ZSBtaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVtU2l6ZUZvclJl
c2l6aW5nKExheW91dFNpemUgc2l6ZSkgeyBtX21pbmltdW1TaXplRm9yUmVzaXppbmcgPSBzaXpl
OyB9CiAKLSAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQ7IH0KLSAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3Jv
bGxPZmZzZXQoSW50U2l6ZSBzaXplKSB7IG1fc2F2ZWRMYXllclNjcm9sbE9mZnNldCA9IHNpemU7
IH0KKyAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0U2F2ZWRMYXllclNj
cm9sbFBvc2l0aW9uKEludFBvaW50IHBvc2l0aW9uKSB7IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0
aW9uID0gcG9zaXRpb247IH0KIAogICAgIGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUGVuZGluZ1Jlc291cmNlczsgfQogICAgIHZvaWQgc2V0SGFzUGVuZGlu
Z1Jlc291cmNlcyhib29sIGhhcykgeyBtX2hhc1BlbmRpbmdSZXNvdXJjZXMgPSBoYXM7IH0KQEAg
LTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBtX3JlZ2lv
bk92ZXJzZXRTdGF0ZTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5n
OwotICAgIEludFNpemUgbV9zYXZlZExheWVyU2Nyb2xsT2Zmc2V0OworICAgIEludFBvaW50IG1f
c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21w
dXRlZFN0eWxlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFzZXRET01TdHJpbmdNYXA+IG1f
ZGF0YXNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRl
eCA3YTA4ZGQ3YTkzM2JlZDFlZjVlODFkMWQxYjRlZDYwYzA2NGNjYTI4Li40NWUwZWNlNjhhNDg4
MGI0YmZjYjBmM2JlNzM5NzA3NDFlNGIwNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50KSB7CiAgICAgICAgICAgICAgICAgaWYg
KFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogaW5uZXJUZXh0UmVuZGVyZXIgPSBpbm5lclRl
eHRFbGVtZW50KCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFJlbmRl
ckxheWVyKiBpbm5lckxheWVyID0gaW5uZXJUZXh0UmVuZGVyZXItPmxheWVyKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCFyZW5kZXJUZXh0Q29udHJv
bC5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGlubmVyTGF5ZXItPnNjcm9sbFdp
ZHRoKCkgOiAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbE9mZnNldCBzY3Jv
bGxPZmZzZXQoIXJlbmRlclRleHRDb250cm9sLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gaW5uZXJMYXllci0+c2Nyb2xsV2lkdGgoKSA6IDAsIDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaW5uZXJMYXllci0+c2Nyb2xsVG9PZmZzZXQoc2Nyb2xsT2Zmc2V0LCBSZW5kZXJM
YXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGM0Yzg2NzNlNjQ4ODRlZGJjY2Zi
NTc0MzhlYWY5ZmI4NjA5NWJmYWQuLmEzOTRlZGE0MjNjMzY2NGZlZTlmMGY5MjM4OGM1MWJjMjYz
ZDQ2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC00OTAsMjUgKzQ5MCwyNSBAQCB2b2lkIEZy
YW1lOjpzY3JvbGxPdmVyZmxvd0xheWVyKFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZVJlY3QsCiAgICAgaWYgKHZpc2libGVSZWN0LmludGVyc2VjdHMoZXhwb3NlUmVj
dCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB4ID0gbGF5ZXItPnNjcm9sbFhPZmZzZXQo
KTsKKyAgICAvLyBGSVhNRTogV2h5IGlzbid0IHRoaXMganVzdCBjYWxsaW5nIFJlbmRlckxheWVy
OjpzY3JvbGxSZWN0VG9WaXNpYmxlKCk/CisgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCA9
IGxheWVyLT5zY3JvbGxPZmZzZXQoKTsKICAgICBpbnQgZXhwb3NlTGVmdCA9IGV4cG9zZVJlY3Qu
eCgpOwogICAgIGludCBleHBvc2VSaWdodCA9IGV4cG9zZUxlZnQgKyBleHBvc2VSZWN0LndpZHRo
KCk7CiAgICAgaW50IGNsaWVudFdpZHRoID0gcm91bmRUb0ludChib3gtPmNsaWVudFdpZHRoKCkp
OwogICAgIGlmIChleHBvc2VMZWZ0IDw9IDApCi0gICAgICAgIHggPSBzdGQ6Om1heCgwLCB4ICsg
ZXhwb3NlTGVmdCAtIGNsaWVudFdpZHRoIC8gMik7CisgICAgICAgIHNjcm9sbE9mZnNldC5zZXRY
KHN0ZDo6bWF4KDAsIHNjcm9sbE9mZnNldC54KCkgKyBleHBvc2VMZWZ0IC0gY2xpZW50V2lkdGgg
LyAyKSk7CiAgICAgZWxzZSBpZiAoZXhwb3NlUmlnaHQgPj0gY2xpZW50V2lkdGgpCi0gICAgICAg
IHggPSBzdGQ6Om1pbihib3gtPnNjcm9sbFdpZHRoKCkgLSBjbGllbnRXaWR0aCwgeCArIGNsaWVu
dFdpZHRoIC8gMik7CisgICAgICAgIHNjcm9sbE9mZnNldC5zZXRYKHN0ZDo6bWluKGJveC0+c2Ny
b2xsV2lkdGgoKSAtIGNsaWVudFdpZHRoLCBzY3JvbGxPZmZzZXQueCgpICsgY2xpZW50V2lkdGgg
LyAyKSk7CiAKLSAgICBpbnQgeSA9IGxheWVyLT5zY3JvbGxZT2Zmc2V0KCk7CiAgICAgaW50IGV4
cG9zZVRvcCA9IGV4cG9zZVJlY3QueSgpOwogICAgIGludCBleHBvc2VCb3R0b20gPSBleHBvc2VU
b3AgKyBleHBvc2VSZWN0LmhlaWdodCgpOwogICAgIGludCBjbGllbnRIZWlnaHQgPSByb3VuZFRv
SW50KGJveC0+Y2xpZW50SGVpZ2h0KCkpOwogICAgIGlmIChleHBvc2VUb3AgPD0gMCkKLSAgICAg
ICAgeSA9IHN0ZDo6bWF4KDAsIHkgKyBleHBvc2VUb3AgLSBjbGllbnRIZWlnaHQgLyAyKTsKKyAg
ICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoc3RkOjptYXgoMCwgc2Nyb2xsT2Zmc2V0LnkoKSArIGV4
cG9zZVRvcCAtIGNsaWVudEhlaWdodCAvIDIpKTsKICAgICBlbHNlIGlmIChleHBvc2VCb3R0b20g
Pj0gY2xpZW50SGVpZ2h0KQotICAgICAgICB5ID0gc3RkOjptaW4oYm94LT5zY3JvbGxIZWlnaHQo
KSAtIGNsaWVudEhlaWdodCwgeSArIGNsaWVudEhlaWdodCAvIDIpOworICAgICAgICBzY3JvbGxP
ZmZzZXQuc2V0WShzdGQ6Om1pbihib3gtPnNjcm9sbEhlaWdodCgpIC0gY2xpZW50SGVpZ2h0LCBz
Y3JvbGxPZmZzZXQueSgpICsgY2xpZW50SGVpZ2h0IC8gMikpOwogCi0gICAgbGF5ZXItPnNjcm9s
bFRvT2Zmc2V0KEludFNpemUoeCwgeSkpOworICAgIGxheWVyLT5zY3JvbGxUb09mZnNldChzY3Jv
bGxPZmZzZXQpOwogICAgIHNlbGVjdGlvbigpLnNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7CiAg
ICAgc2VsZWN0aW9uKCkudXBkYXRlQXBwZWFyYW5jZSgpOwogfQpAQCAtNjAyLDcgKzYwMiw3IEBA
IGludCBGcmFtZTo6Y2hlY2tPdmVyZmxvd1Njcm9sbChPdmVyZmxvd1Njcm9sbEFjdGlvbiBhY3Rp
b24pCiAgICAgfQogCiAgICAgaWYgKGFjdGlvbiA9PSBQZXJmb3JtT3ZlcmZsb3dTY3JvbGwgJiYg
KGRlbHRhWCB8fCBkZWx0YVkpKSB7Ci0gICAgICAgIGxheWVyLT5zY3JvbGxUb09mZnNldChJbnRT
aXplKGxheWVyLT5zY3JvbGxYT2Zmc2V0KCkgKyBkZWx0YVgsIGxheWVyLT5zY3JvbGxZT2Zmc2V0
KCkgKyBkZWx0YVkpKTsKKyAgICAgICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KGxheWVyLT5zY3Jv
bGxPZmZzZXQoKSArIEludFNpemUoZGVsdGFYLCBkZWx0YVkpKTsKIAogICAgICAgICAvLyBIYW5k
bGUgbWFraW5nIHNlbGVjdGlvbi4KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbihyZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChzZWxlY3Rpb25Qb3NpdGlvbiwgbnVsbHB0
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9p
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXgg
MGI1ZDQzYWU3NTg4ODNjZTc2ZGNjOTRkNTZkZjNkN2NhNTFkNzRkNC4uMzM5MGY0NGNiY2I0OGRk
NzZjOWQzNDkzNjIyZmQzY2ZjYmVhMzUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRQb2ludC5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBJbnRQb2ludChjb25zdCBGbG9hdFBvaW50Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRs
eSBzaW5jZSBpdCdzIGxvc3N5CiAKICAgICBzdGF0aWMgSW50UG9pbnQgemVybygpIHsgcmV0dXJu
IEludFBvaW50KCk7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFtX3ggJiYg
IW1feTsgfQogCiAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KICAgICBpbnQgeSgp
IGNvbnN0IHsgcmV0dXJuIG1feTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggZjc5NTE4YjRlYWE1NTRkYzJiMjQ3ZWMxYWI1OWU2OWY5ZDE2OTk2My4uM2Zj
M2QyMjNhMGYxM2EyZjhlNTNiOGNhMmU4M2EyMzk3OTcyYjZlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yODc0LDggKzI4NzQsOCBAQCBpbnQgUmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbmUsIExpbgogICAgICAgICAvLyAodGhlIGNvbnRlbnQgaW5zaWRlIHRoZW0gbW92ZXMp
LiAgVGhpcyBtYXRjaGVzIFdpbklFIGFzIHdlbGwsIHdoaWNoIGp1c3QgYm90dG9tLWFsaWducyB0
aGVtLgogICAgICAgICAvLyBXZSBhbHNvIGdpdmUgdXAgb24gZmluZGluZyBhIGJhc2VsaW5lIGlm
IHdlIGhhdmUgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIsIG9yIGlmIHdlIGFyZSBzY3JvbGxlZAogICAg
ICAgICAvLyB2ZXJ0aWNhbGx5IChlLmcuLCBhbiBvdmVyZmxvdzpoaWRkZW4gYmxvY2sgdGhhdCBo
YXMgaGFkIHNjcm9sbFRvcCBtb3ZlZCkuCi0gICAgICAgIGJvb2wgaWdub3JlQmFzZWxpbmUgPSAo
bGF5ZXIoKSAmJiAobGF5ZXIoKS0+bWFycXVlZSgpIHx8IChkaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyAobGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXIoKSB8fCBsYXllcigpLT5zY3JvbGxZ
T2Zmc2V0KCkgIT0gMCkKLSAgICAgICAgICAgIDogKGxheWVyKCktPmhvcml6b250YWxTY3JvbGxi
YXIoKSB8fCBsYXllcigpLT5zY3JvbGxYT2Zmc2V0KCkgIT0gMCkpKSkgfHwgKGlzV3JpdGluZ01v
ZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKTsKKyAgICAgICAgYm9vbCBpZ25vcmVCYXNlbGluZSA9
IChsYXllcigpICYmIChsYXllcigpLT5tYXJxdWVlKCkgfHwgKGRpcmVjdGlvbiA9PSBIb3Jpem9u
dGFsTGluZSA/IChsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9s
bE9mZnNldCgpLnkoKSAhPSAwKQorICAgICAgICAgICAgOiAobGF5ZXIoKS0+aG9yaXpvbnRhbFNj
cm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9sbE9mZnNldCgpLngoKSAhPSAwKSkpKSB8fCAoaXNX
cml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpOwogICAgICAgICAKICAgICAgICAgT3B0
aW9uYWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lID8gT3B0aW9uYWw8aW50Pigp
IDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMDY3MzUxOWJlMzVlMmFlZTk3ZDgwMjNiMzYy
ZjlhMjVlY2E4OGI0MS4uNjg3MmNlMGExODkyMDZlYTVlZWZhN2I0ZTM5Y2U0Y2QwMmUzOWJiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTM1NiwxMSArMzU2LDEx
IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAgLy8gSWYgb3VyIHpvb20gZmFjdG9yIGNo
YW5nZXMgYW5kIHdlIGhhdmUgYSBkZWZpbmVkIHNjcm9sbExlZnQvVG9wLCB3ZSBuZWVkIHRvIGFk
anVzdCB0aGF0IHZhbHVlIGludG8gdGhlCiAgICAgLy8gbmV3IHpvb21lZCBjb29yZGluYXRlIHNw
YWNlLgogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllcigpICYmIG9sZFN0eWxlICYm
IG9sZFN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gbmV3U3R5bGUuZWZmZWN0aXZlWm9vbSgpKSB7
Ci0gICAgICAgIGlmIChpbnQgbGVmdCA9IGxheWVyKCktPnNjcm9sbFhPZmZzZXQoKSkgeworICAg
ICAgICBpZiAoaW50IGxlZnQgPSBsYXllcigpLT5zY3JvbGxPZmZzZXQoKS54KCkpIHsKICAgICAg
ICAgICAgIGxlZnQgPSAobGVmdCAvIG9sZFN0eWxlLT5lZmZlY3RpdmVab29tKCkpICogbmV3U3R5
bGUuZWZmZWN0aXZlWm9vbSgpOwogICAgICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9YT2Zmc2V0
KGxlZnQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbnQgdG9wID0gbGF5ZXIoKS0+c2Nyb2xs
WU9mZnNldCgpKSB7CisgICAgICAgIGlmIChpbnQgdG9wID0gbGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0
KCkueSgpKSB7CiAgICAgICAgICAgICB0b3AgPSAodG9wIC8gb2xkU3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSkgKiBuZXdTdHlsZS5lZmZlY3RpdmVab29tKCk7CiAgICAgICAgICAgICBsYXllcigpLT5z
Y3JvbGxUb1lPZmZzZXQodG9wKTsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1NzgsMTIgQEAgaW50
IFJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QKIAogaW50IFJlbmRlckJveDo6c2Nyb2xs
TGVmdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkg
PyBsYXllcigpLT5zY3JvbGxYT2Zmc2V0KCkgOiAwOworICAgIHJldHVybiBoYXNPdmVyZmxvd0Ns
aXAoKSAmJiBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCkueCgpIDogMDsKIH0KIAog
aW50IFJlbmRlckJveDo6c2Nyb2xsVG9wKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzT3ZlcmZs
b3dDbGlwKCkgJiYgbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbFlPZmZzZXQoKSA6IDA7CisgICAg
cmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxPZmZz
ZXQoKS55KCkgOiAwOwogfQogCiBzdGF0aWMgdm9pZCBzZXR1cFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cihSZW5kZXJMYXllciYgbGF5ZXIsIEZyYW1lKiBmcmFtZSkKQEAgLTk3OCw2ICs5NzgsNyBAQCBJ
bnRTaXplIFJlbmRlckJveDo6c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkgY29uc3QKICAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKIAogICAgIEFTU0VSVChoYXNMYXllcigpKTsKKyAgICAvLyBGSVhN
RTogUmVuZGVyZXIgY29kZSBuZWVkcyBzY3JvbGxPZmZzZXQvc2Nyb2xsUG9zaXRpb24gZGlzYW1i
aWd1YXRpb24uCiAgICAgcmV0dXJuIGxheWVyKCktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5N2JjMTky
NmRjMDFmYTJmODY1NDNhNGE1MDMyZTVhOWZiNjQwNjcyLi5iNzIyMTUyZjdjNzVjNTAyMmM1NzVi
OTZhZWNjNWViYmRmZGVhZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTMzMywxMCArMzMzLDEwIEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5k
ZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlckxheWVyTW9kZWxPYmplY3QpCiAKICAgICBpZiAo
RWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyKCkuZWxlbWVudCgpKSB7CiAgICAgICAgIC8vIFdl
IHNhdmUgYW5kIHJlc3RvcmUgb25seSB0aGUgc2Nyb2xsT2Zmc2V0IGFzIHRoZSBvdGhlciBzY3Jv
bGwgdmFsdWVzIGFyZSByZWNhbGN1bGF0ZWQuCi0gICAgICAgIG1fc2Nyb2xsT2Zmc2V0ID0gZWxl
bWVudC0+c2F2ZWRMYXllclNjcm9sbE9mZnNldCgpOwotICAgICAgICBpZiAoIW1fc2Nyb2xsT2Zm
c2V0LmlzWmVybygpKQotICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRDdXJyZW50UG9z
aXRpb24oRmxvYXRQb2ludChtX3Njcm9sbE9mZnNldC53aWR0aCgpLCBtX3Njcm9sbE9mZnNldC5o
ZWlnaHQoKSkpOwotICAgICAgICBlbGVtZW50LT5zZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KElu
dFNpemUoKSk7CisgICAgICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBlbGVtZW50LT5zYXZlZExheWVy
U2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgaWYgKCFtX3Njcm9sbFBvc2l0aW9uLmlzWmVybygp
KQorICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRDdXJyZW50UG9zaXRpb24obV9zY3Jv
bGxQb3NpdGlvbik7CisgICAgICAgIGVsZW1lbnQtPnNldFNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlv
bihJbnRQb2ludCgpKTsKICAgICB9CiB9CiAKQEAgLTM1Miw3ICszNTIsNyBAQCBSZW5kZXJMYXll
cjo6flJlbmRlckxheWVyKCkKICAgICAgICAgdW5yZWdpc3RlckFzVG91Y2hFdmVudExpc3RlbmVy
Rm9yU2Nyb2xsaW5nKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBy
ZW5kZXJlcigpLmVsZW1lbnQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldFNhdmVkTGF5ZXJT
Y3JvbGxPZmZzZXQobV9zY3JvbGxPZmZzZXQpOworICAgICAgICAgICAgZWxlbWVudC0+c2V0U2F2
ZWRMYXllclNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOwogICAgIH0KIAogICAgIGRl
c3Ryb3lTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CkBAIC0yMjg5LDcgKzIyODksNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNvbnN0IEludFNpemUmIGRl
bHRhLCBTY3JvbGxPZmZzZXRDbGFtcGluZwogICAgICAgICByZXN0cmljdGVkQnlMaW5lQ2xhbXAg
PSAhcmVuZGVyZXIoKS5wYXJlbnQoKS0+c3R5bGUoKS5saW5lQ2xhbXAoKS5pc05vbmUoKTsKIAog
ICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpICYmICFyZXN0cmljdGVkQnlMaW5l
Q2xhbXApIHsKLSAgICAgICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQo
KSArIGRlbHRhOworICAgICAgICBTY3JvbGxPZmZzZXQgbmV3U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xs
T2Zmc2V0KCkgKyBkZWx0YTsKICAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3U2Nyb2xsT2Zmc2V0
LCBjbGFtcCk7CiAgICAgICAgIGlmIChzY3JvbGxlZEFyZWEpCiAgICAgICAgICAgICAqc2Nyb2xs
ZWRBcmVhID0gdGhpczsKQEAgLTIzMTQsMjYgKzIzMTQsMjAgQEAgdm9pZCBSZW5kZXJMYXllcjo6
c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsT2Zmc2V0Q2xh
bXBpbmcKICAgICB9CiB9CiAKLUludFNpemUgUmVuZGVyTGF5ZXI6OmNsYW1wU2Nyb2xsT2Zmc2V0
KGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkgY29uc3QKK1Njcm9sbE9mZnNldCBSZW5kZXJM
YXllcjo6Y2xhbXBTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBzY3JvbGxPZmZzZXQp
IGNvbnN0CiB7Ci0gICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBBU1NFUlQo
Ym94KTsKLQotICAgIGludCBtYXhYID0gc2Nyb2xsV2lkdGgoKSAtIHJvdW5kVG9JbnQoYm94LT5j
bGllbnRXaWR0aCgpKTsKLSAgICBpbnQgbWF4WSA9IHNjcm9sbEhlaWdodCgpIC0gcm91bmRUb0lu
dChib3gtPmNsaWVudEhlaWdodCgpKTsKLQotICAgIGludCB4ID0gc3RkOjptYXgoc3RkOjptaW4o
c2Nyb2xsT2Zmc2V0LndpZHRoKCksIG1heFgpLCAwKTsKLSAgICBpbnQgeSA9IHN0ZDo6bWF4KHN0
ZDo6bWluKHNjcm9sbE9mZnNldC5oZWlnaHQoKSwgbWF4WSksIDApOwotICAgIHJldHVybiBJbnRT
aXplKHgsIHkpOworICAgIHJldHVybiBzY3JvbGxPZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKElu
dFBvaW50KCksIG1heGltdW1TY3JvbGxPZmZzZXQoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6
OnNjcm9sbFRvT2Zmc2V0KGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0
Q2xhbXBpbmcgY2xhbXApCit2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUb09mZnNldChjb25zdCBT
Y3JvbGxPZmZzZXQmIHNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0Q2xhbXBpbmcgY2xhbXApCiB7
Ci0gICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBjbGFtcCA9PSBTY3JvbGxPZmZzZXRDbGFt
cGVkID8gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KSA6IHNjcm9sbE9mZnNldDsKKyAg
ICBTY3JvbGxPZmZzZXQgbmV3U2Nyb2xsT2Zmc2V0ID0gY2xhbXAgPT0gU2Nyb2xsT2Zmc2V0Q2xh
bXBlZCA/IGNsYW1wU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCkgOiBzY3JvbGxPZmZzZXQ7CiAg
ICAgaWYgKG5ld1Njcm9sbE9mZnNldCAhPSB0aGlzLT5zY3JvbGxPZmZzZXQoKSkKLSAgICAgICAg
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEludFBvaW50KG5ld1Njcm9sbE9mZnNldCkp
OworICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obmV3U2Nyb2xsT2Zmc2V0
KTsKIH0KIAorLy8geCBhbmQgeSBhcmUgc2Nyb2xsIG9mZnNldCB2YWx1ZXMKKy8vIEZJWE1FOiB1
c2UgYSBTY3JvbGxPZmZzZXQsIG9yIGNoYW5nZSB0aGlzIHRvIHRha2UgYSBTY3JvbGxQb3NpdGlv
bi4KIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGludCB4LCBpbnQgeSkKIHsKICAgICBSZW5k
ZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwpAQCAtMjM2Miw4ICsyMzU2LDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGludCB5KQogICAgIC8vIGNvbXBsaWNhdGVkIChzaW5j
ZSBpdCB3aWxsIGludm9sdmUgdGVzdGluZyB3aGV0aGVyIG91ciBsYXllcgogICAgIC8vIGlzIGVp
dGhlciBvY2NsdWRlZCBieSBhbm90aGVyIGxheWVyIG9yIGNsaXBwZWQgYnkgYW4gZW5jbG9zaW5n
CiAgICAgLy8gbGF5ZXIgb3IgY29udGFpbnMgZml4ZWQgYmFja2dyb3VuZHMsIGV0Yy4pLgotICAg
IEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSh4IC0gc2Nyb2xsT3JpZ2luKCkueCgp
LCB5IC0gc2Nyb2xsT3JpZ2luKCkueSgpKTsKLSAgICBpZiAobV9zY3JvbGxPZmZzZXQgPT0gbmV3
U2Nyb2xsT2Zmc2V0KSB7CisgICAgU2Nyb2xsUG9zaXRpb24gbmV3U2Nyb2xsUG9zaXRpb24gPSBz
Y3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoU2Nyb2xsT2Zmc2V0KHgsIHkpKTsKKyAgICBpZiAobV9z
Y3JvbGxQb3NpdGlvbiA9PSBuZXdTY3JvbGxQb3NpdGlvbikgewogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAgICAgaWYgKG1fcmVxdWlyZXNTY3JvbGxCb3VuZHNPcmlnaW5VcGRhdGUpCiAgICAgICAg
ICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsKCk7CkBAIC0yMzcxLDggKzIz
NjUsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgSW50UG9pbnQgb2xkUG9zaXRpb24gPSBJbnRQb2lu
dChtX3Njcm9sbE9mZnNldCk7Ci0gICAgbV9zY3JvbGxPZmZzZXQgPSBuZXdTY3JvbGxPZmZzZXQ7
CisgICAgU2Nyb2xsUG9zaXRpb24gb2xkUG9zaXRpb24gPSBJbnRQb2ludChtX3Njcm9sbFBvc2l0
aW9uKTsKKyAgICBtX3Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb247CiAKICAgICBS
ZW5kZXJWaWV3JiB2aWV3ID0gcmVuZGVyZXIoKS52aWV3KCk7CiAKQEAgLTI0MjMsNyArMjQxNyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGludCB4LCBpbnQgeSkKICAgICAvLyBTY2hl
ZHVsZSB0aGUgc2Nyb2xsIGFuZCBzY3JvbGwtcmVsYXRlZCBET00gZXZlbnRzLgogICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5lbGVtZW50KCkpIHsKICAgICAgICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCgq
ZWxlbWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc2VuZFdpbGxSZXZlYWxFZGdl
RXZlbnRzSWZOZWVkZWQob2xkUG9zaXRpb24sIEludFBvaW50KG5ld1Njcm9sbE9mZnNldCksIHZp
c2libGVDb250ZW50UmVjdCgpLCBjb250ZW50c1NpemUoKSwgZWxlbWVudCk7CisgICAgICAgIGVs
ZW1lbnQtPmRvY3VtZW50KCkuc2VuZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQob2xkUG9z
aXRpb24sIG5ld1Njcm9sbFBvc2l0aW9uLCB2aXNpYmxlQ29udGVudFJlY3QoKSwgY29udGVudHNT
aXplKCksIGVsZW1lbnQpOwogICAgIH0KIAogICAgIGlmIChzY3JvbGxzT3ZlcmZsb3coKSkKQEAg
LTI0OTMsOSArMjQ4Nyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAgIExheW91
dFJlY3QgbGF5ZXJCb3VuZHMoMCwgMCwgYm94LT5jbGllbnRXaWR0aCgpLCBib3gtPmNsaWVudEhl
aWdodCgpKTsKICAgICAgICAgTGF5b3V0UmVjdCByID0gZ2V0UmVjdFRvRXhwb3NlKGxheWVyQm91
bmRzLCBsYXllckJvdW5kcywgbG9jYWxFeHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7CiAKLSAg
ICAgICAgSW50U2l6ZSBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Ny
b2xsT2Zmc2V0KCkgKyB0b0ludFNpemUocm91bmRlZEludFJlY3QocikubG9jYXRpb24oKSkpOwor
ICAgICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbE9mZnNldCA9IGNsYW1wU2Nyb2xsT2Zm
c2V0KHNjcm9sbE9mZnNldCgpICsgdG9JbnRTaXplKHJvdW5kZWRJbnRSZWN0KHIpLmxvY2F0aW9u
KCkpKTsKICAgICAgICAgaWYgKGNsYW1wZWRTY3JvbGxPZmZzZXQgIT0gc2Nyb2xsT2Zmc2V0KCkp
IHsKLSAgICAgICAgICAgIEludFNpemUgb2xkU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7
CisgICAgICAgICAgICBTY3JvbGxPZmZzZXQgb2xkU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0
KCk7CiAgICAgICAgICAgICBzY3JvbGxUb09mZnNldChjbGFtcGVkU2Nyb2xsT2Zmc2V0KTsKICAg
ICAgICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSA9IHNjcm9sbE9mZnNldCgp
IC0gb2xkU2Nyb2xsT2Zmc2V0OwogICAgICAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmUoLXNj
cm9sbE9mZnNldERpZmZlcmVuY2UpOwpAQCAtMjczNCwyMSArMjcyOCwxNiBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9mZnNldCkKIGludCBSZW5k
ZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIGNvbnN0CiB7CiAg
ICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQot
ICAgICAgICByZXR1cm4gc2Nyb2xsWE9mZnNldCgpOworICAgICAgICByZXR1cm4gc2Nyb2xsT2Zm
c2V0KCkueCgpOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBzY3JvbGxZT2Zmc2V0KCk7CisgICAgICAgIHJldHVy
biBzY3JvbGxPZmZzZXQoKS55KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVNjcm9sbFBvc2l0aW9u
IFJlbmRlckxheWVyOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRo
aXMgbmVlZHMgc2Nyb2xsT2Zmc2V0L3Njcm9sbFBvc2l0aW9uIGRpc2FtYmlndWF0aW9uLgotICAg
IHJldHVybiBTY3JvbGxQb3NpdGlvbihtX3Njcm9sbE9mZnNldCk7Ci19Ci0KIFNjcm9sbFBvc2l0
aW9uIFJlbmRlckxheWVyOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBtX3Njcm9sbFNpemUgbWF5IG5vdCBiZSB1cC10by1kYXRlIGlmIG1fc2Nyb2xsRGlt
ZW5zaW9uc0RpcnR5IGlzIHRydWUuCisgICAgLy8gRklYTUU6IHNob3VsZCBiZSBhYmxlIHRvIHVz
ZSB0aGUgU2Nyb2xsYWJsZUFyZWEgaW1wbGVtZW50YXRpb24uCiAgICAgcmV0dXJuIHNjcm9sbFBv
c2l0aW9uRnJvbU9mZnNldChyb3VuZGVkSW50UG9pbnQobV9zY3JvbGxTaXplKSAtIHZpc2libGVD
b250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoQ29udGVudHNWaXNpYmxlUmVjdCkuc2l6ZSgp
KTsKIH0KIApAQCAtMzQ3Niw3ICszNDY1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zY3JvbGxEaW1l
bnNpb25zRGlydHkgPSB0cnVlOwotICAgIEludFNpemUgb3JpZ2luYWxTY3JvbGxPZmZzZXQgPSBz
Y3JvbGxPZmZzZXQoKTsKKyAgICBTY3JvbGxPZmZzZXQgb3JpZ2luYWxTY3JvbGxPZmZzZXQgPSBz
Y3JvbGxPZmZzZXQoKTsKIAogICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7CiAKQEAgLTM0
ODksNyArMzQ3OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCgpCiAgICAgaWYgKGJveC0+c3R5bGUoKS5vdmVyZmxvd1goKSAhPSBPTUFSUVVFRSAmJiAh
aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIC8vIExheW91dCBtYXkgY2F1c2Ug
dXMgdG8gYmUgYXQgYW4gaW52YWxpZCBzY3JvbGwgcG9zaXRpb24uIEluIHRoaXMgY2FzZSB3ZSBu
ZWVkCiAgICAgICAgIC8vIHRvIHB1bGwgb3VyIHNjcm9sbCBvZmZzZXRzIGJhY2sgdG8gdGhlIG1h
eCAob3IgcHVzaCB0aGVtIHVwIHRvIHRoZSBtaW4pLgotICAgICAgICBJbnRTaXplIGNsYW1wZWRT
Y3JvbGxPZmZzZXQgPSBjbGFtcFNjcm9sbE9mZnNldChzY3JvbGxPZmZzZXQoKSk7CisgICAgICAg
IFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Ny
b2xsT2Zmc2V0KCkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
bG9va3Mgd3JvbmcuIFRoZSBjYXJldCBhZGp1c3QgbW9kZSBzaG91bGQgb25seSBiZSBlbmFibGVk
IG9uIGVkaXRpbmcgcmVsYXRlZCBlbnRyeSBwb2ludHMuCiAgICAgICAgIC8vIFRoaXMgY29kZSB3
YXMgYWRkZWQgdG8gZml4IGFuIGlzc3VlIHdoZXJlIHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB3
b3VsZCBhbHdheXMgYmUgZHJhd24gb24gdGhlIHJpZ2h0IGVkZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggY2IxNTkxNDU3M2UxYjUwNjlmYmI1MTk0OGUyNzg0Nzc4
ZmZhMzkyNS4uZGQ2ZDg5OTFlZTJmOTMxYTA1OWU2OGRmNTY5N2QyOGRlYzAyNTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTE5MSwxNCArMTkxLDEzIEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0
IGNhbiBzY3JvbGwgdGhlaXIgb3ZlcmZsb3cuCi0gICAgdm9pZCBzY3JvbGxCeVJlY3Vyc2l2ZWx5
KGNvbnN0IEludFNpemUmLCBTY3JvbGxPZmZzZXRDbGFtcGluZyA9IFNjcm9sbE9mZnNldFVuY2xh
bXBlZCwgU2Nyb2xsYWJsZUFyZWEqKiBzY3JvbGxlZEFyZWEgPSBudWxscHRyKTsKLSAgICB2b2lk
IHNjcm9sbFRvT2Zmc2V0KGNvbnN0IEludFNpemUmLCBTY3JvbGxPZmZzZXRDbGFtcGluZyA9IFNj
cm9sbE9mZnNldFVuY2xhbXBlZCk7Ci0gICAgdm9pZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgsIFNj
cm9sbE9mZnNldENsYW1waW5nIGNsYW1wID0gU2Nyb2xsT2Zmc2V0VW5jbGFtcGVkKSB7IHNjcm9s
bFRvT2Zmc2V0KEludFNpemUoeCwgc2Nyb2xsWU9mZnNldCgpKSwgY2xhbXApOyB9Ci0gICAgdm9p
ZCBzY3JvbGxUb1lPZmZzZXQoaW50IHksIFNjcm9sbE9mZnNldENsYW1waW5nIGNsYW1wID0gU2Ny
b2xsT2Zmc2V0VW5jbGFtcGVkKSB7IHNjcm9sbFRvT2Zmc2V0KEludFNpemUoc2Nyb2xsWE9mZnNl
dCgpLCB5KSwgY2xhbXApOyB9Ci0KLSAgICBpbnQgc2Nyb2xsWE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkgKyBzY3JvbGxPcmlnaW4oKS54KCk7IH0KLSAgICBp
bnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
ICsgc2Nyb2xsT3JpZ2luKCkueSgpOyB9Ci0gICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSwgc2Nyb2xsWU9mZnNldCgpKTsgfQor
ICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xs
T2Zmc2V0Q2xhbXBpbmcgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQsIFNjcm9sbGFibGVBcmVhKiog
c2Nyb2xsZWRBcmVhID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGNvbnN0
IFNjcm9sbE9mZnNldCYsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0VW5jbGFt
cGVkKTsKKyAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCwgU2Nyb2xsT2Zmc2V0Q2xhbXBp
bmcgY2xhbXAgPSBTY3JvbGxPZmZzZXRVbmNsYW1wZWQpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xs
T2Zmc2V0KHgsIHNjcm9sbE9mZnNldCgpLnkoKSksIGNsYW1wKTsgfQorICAgIHZvaWQgc2Nyb2xs
VG9ZT2Zmc2V0KGludCB5LCBTY3JvbGxPZmZzZXRDbGFtcGluZyBjbGFtcCA9IFNjcm9sbE9mZnNl
dFVuY2xhbXBlZCkgeyBzY3JvbGxUb09mZnNldChTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCku
eCgpLCB5KSwgY2xhbXApOyB9CisKKyAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOyB9
CiAgICAgSW50U2l6ZSBzY3JvbGxhYmxlQ29udGVudHNTaXplKCkgY29uc3Q7CiAKICAgICB2b2lk
IHNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSk7CkBAIC03NTEsOSAr
NzUwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Ny
b2xsKFJlbmRlckdlb21ldHJ5TWFwKiwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZs
YWdzID0gTm9GbGFnKTsKIAogICAgIGZyaWVuZCBJbnRTaXplIFJlbmRlckJveDo6c2Nyb2xsZWRD
b250ZW50T2Zmc2V0KCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldDsgfQorICAgIC8vIEZJWE1FOiByZW5hbWUg
dGhpcyB0b3Njcm9sbGVkQ29udGVudFBvc2l0aW9uKCksIG9yIHJlbW92ZSBpdC4KKyAgICBJbnRT
aXplIHNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRvSW50U2l6ZShtX3Nj
cm9sbFBvc2l0aW9uKTsgfQogCi0gICAgSW50U2l6ZSBjbGFtcFNjcm9sbE9mZnNldChjb25zdCBJ
bnRTaXplJikgY29uc3Q7CisgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wU2Nyb2xsT2Zmc2V0KGNvbnN0
IFNjcm9sbE9mZnNldCYpIGNvbnN0OwogCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1BhZ2lu
YXRpb25MYXllckluU3VidHJlZShjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBQYWdpbmF0
aW9uSW5jbHVzaW9uTW9kZSkgY29uc3Q7CiAKQEAgLTg2NSw3ICs4NjUsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQogICAgIHZp
cnR1YWwgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlz
aWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhh
dmlvcikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMDkzLDggKzEwOTMsNyBAQCBwcml2YXRlOgogICAg
IC8vIFRoZSBsYXllcidzIHdpZHRoL2hlaWdodAogICAgIEludFNpemUgbV9sYXllclNpemU7CiAK
LSAgICAvLyBUaGlzIGlzIHRoZSAoc2Nyb2xsKSBvZmZzZXQgZnJvbSBzY3JvbGxPcmlnaW4oKS4K
LSAgICBJbnRTaXplIG1fc2Nyb2xsT2Zmc2V0OworICAgIFNjcm9sbFBvc2l0aW9uIG1fc2Nyb2xs
UG9zaXRpb247CiAKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIG91ciBzY3JvbGxlZCBhcmVh
LgogICAgIExheW91dFNpemUgbV9zY3JvbGxTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2MWYyMjAzN2E0OTk2Y2NkNjRjMGNk
NzBjNjVmZjYwMDUzYzgyOTIzLi44ZjU1Y2IxNmY2YWZiODdkYTUzYzVhYjc1ZmVhN2YzYzIzZTk3
YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVH
ZW9tZXRyeSgpCiAgICAgICAgIEFTU0VSVChtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIpOwogICAg
ICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpOwog
ICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3gocmVuZGVyQm94LmJvcmRlckxlZnQoKSwgcmVu
ZGVyQm94LmJvcmRlclRvcCgpLCByZW5kZXJCb3gud2lkdGgoKSAtIHJlbmRlckJveC5ib3JkZXJM
ZWZ0KCkgLSByZW5kZXJCb3guYm9yZGVyUmlnaHQoKSwgcmVuZGVyQm94LmhlaWdodCgpIC0gcmVu
ZGVyQm94LmJvcmRlclRvcCgpIC0gcmVuZGVyQm94LmJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAg
TGF5b3V0U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX293bmluZ0xheWVyLnNjcm9sbE9mZnNldCgpOwor
ICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gbV9vd25pbmdMYXllci5zY3JvbGxP
ZmZzZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBkbyBzb21lIHBpeGVsIHNuYXBw
aW5nIGhlcmUuCiAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQocGFkZGluZ0JveC5sb2NhdGlvbigpIC0gbG9jYWxDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlv
bigpKSk7CkBAIC05NjAsMTEgKzk2MCwxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlR2VvbWV0cnkoKQogCiAgICAgICAgIGlmIChtX293bmluZ0xheWVyLmlzSW5Vc2VyU2Nyb2xs
KCkpIHsKICAgICAgICAgICAgIC8vIElmIHNjcm9sbGluZyBpcyBoYXBwZW5pbmcgZXh0ZXJuYWxs
eSwgd2UgZG9uJ3Qgd2FudCB0byB0b3VjaCB0aGUgbGF5ZXIgYm91bmRzIG9yaWdpbiBoZXJlIGJl
Y2F1c2UgdGhhdCB3aWxsIGNhdXNlIGppdHRlci4KLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTGF5
ZXItPnN5bmNCb3VuZHNPcmlnaW4oRmxvYXRQb2ludChzY3JvbGxPZmZzZXQud2lkdGgoKSwgc2Ny
b2xsT2Zmc2V0LmhlaWdodCgpKSk7CisgICAgICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zeW5j
Qm91bmRzT3JpZ2luKHNjcm9sbE9mZnNldCk7CiAgICAgICAgICAgICBtX293bmluZ0xheWVyLnNl
dFJlcXVpcmVzU2Nyb2xsQm91bmRzT3JpZ2luVXBkYXRlKHRydWUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGltcGxlbWVudCB0aGUgY29udGVudHMgb2Zm
c2V0IHZpYSB0aGUgYm91bmRzIG9yaWdpbiBvbiB0aGlzIGxheWVyLCByYXRoZXIgdGhhbiBhIHBv
c2l0aW9uIG9uIHRoZSBzdWJsYXllci4KLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNl
dEJvdW5kc09yaWdpbihGbG9hdFBvaW50KHNjcm9sbE9mZnNldC53aWR0aCgpLCBzY3JvbGxPZmZz
ZXQuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldEJvdW5kc09y
aWdpbihzY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgbV9vd25pbmdMYXllci5zZXRSZXF1aXJl
c1Njcm9sbEJvdW5kc09yaWdpblVwZGF0ZShmYWxzZSk7CiAgICAgICAgIH0KICAgICAgICAgCkBA
IC05ODAsNyArOTgwLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5
KCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBwYWludCBvZmZzZXQgYW5kIHRoZSBzY3JvbGwgb2Zm
c2V0IHNob3VsZCByZWFsbHkgYmUgc2VwYXJhdGUgY29uY2VwdHMuCiAgICAgICAgIG1fc2Nyb2xs
aW5nQ29udGVudHNMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKHBhZGRpbmdCb3gubG9jYXRp
b24oKSAtIEludFBvaW50KCkgLSBzY3JvbGxPZmZzZXQsIEdyYXBoaWNzTGF5ZXI6OkRvbnRTZXRO
ZWVkc0Rpc3BsYXkpOwogI2Vsc2UKLSAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50KC1zY3JvbGxPZmZzZXQud2lkdGgoKSwgLXNjcm9sbE9mZnNl
dC5oZWlnaHQoKSkpOworICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldFBvc2l0
aW9uKC1zY3JvbGxPZmZzZXQpOwogCiAgICAgICAgIEZsb2F0U2l6ZSBvbGRTY3JvbGxpbmdMYXll
ck9mZnNldCA9IG1fc2Nyb2xsaW5nTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwogICAgICAg
ICBtX3Njcm9sbGluZ0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIoLXRvRmxvYXRTaXplKHBh
ZGRpbmdCb3gubG9jYXRpb24oKSkpOwpAQCAtOTk3LDcgKzk5Nyw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgICAgIGlmIChzY3JvbGxTaXplICE9IG1f
c2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2l6ZSgpIHx8IHBhZGRpbmdCb3hPZmZzZXRDaGFuZ2Vk
KQogICAgICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgICAgICBMYXlvdXRTaXplIHNjcm9sbGluZ0NvbnRlbnRzT2Zmc2V0ID0gdG9MYXlv
dXRTaXplKHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIHNjcm9sbE9mZnNldCk7CisgICAgICAgIExh
eW91dFNpemUgc2Nyb2xsaW5nQ29udGVudHNPZmZzZXQgPSB0b0xheW91dFNpemUocGFkZGluZ0Jv
eC5sb2NhdGlvbigpIC0gdG9MYXlvdXRTaXplKHNjcm9sbE9mZnNldCkpOwogICAgICAgICBpZiAo
c2Nyb2xsaW5nQ29udGVudHNPZmZzZXQgIT0gbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5vZmZz
ZXRGcm9tUmVuZGVyZXIoKSB8fCBzY3JvbGxTaXplICE9IG1fc2Nyb2xsaW5nQ29udGVudHNMYXll
ci0+c2l6ZSgpKQogICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjcm9sbGluZ0xheWVyRGlkQ2hh
bmdlKG1fb3duaW5nTGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAKaW5kZXggNTg1ZDNmODI5YjkxMzQ3YjNhNGFjYTMxNGY4MjViMzI2YjFjOTI1MC4u
MTEzYzY4MDUxNDgzMzg5MTcxNmJkYmEwZDcxN2EwN2EzZWY3ZmJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIHZvaWQg
UmVuZGVyTWFycXVlZTo6c3RhcnQoKQogCiAgICAgaWYgKCFtX3N1c3BlbmRlZCAmJiAhbV9zdG9w
cGVkKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwoKSkKLSAgICAgICAgICAgIG1fbGF5ZXIt
PnNjcm9sbFRvT2Zmc2V0KEludFNpemUobV9zdGFydCwgMCkpOworICAgICAgICAgICAgbV9sYXll
ci0+c2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KG1fc3RhcnQsIDApKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9sYXllci0+c2Nyb2xsVG9PZmZzZXQoSW50U2l6ZSgwLCBtX3N0YXJ0
KSk7CisgICAgICAgICAgICBtX2xheWVyLT5zY3JvbGxUb09mZnNldChTY3JvbGxPZmZzZXQoMCwg
bV9zdGFydCkpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbV9zdXNwZW5kZWQgPSBmYWxz
ZTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoKQog
ICAgICAgICBib29sIHBvc2l0aXZlID0gcmFuZ2UgPiAwOwogICAgICAgICBpbnQgY2xpZW50U2l6
ZSA9IChpc0hvcml6b250YWwoKSA/IHJvdW5kVG9JbnQobV9sYXllci0+cmVuZGVyQm94KCktPmNs
aWVudFdpZHRoKCkpIDogcm91bmRUb0ludChtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVp
Z2h0KCkpKTsKICAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyhpbnRWYWx1ZUZvckxlbmd0aCht
X2xheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkubWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXpl
KSk7Ci0gICAgICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+
c2Nyb2xsWE9mZnNldCgpIDogbV9sYXllci0+c2Nyb2xsWU9mZnNldCgpKTsKKyAgICAgICAgaW50
IGN1cnJlbnRQb3MgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVyLT5zY3JvbGxPZmZzZXQoKS54
KCkgOiBtX2xheWVyLT5zY3JvbGxPZmZzZXQoKS55KCkpOwogICAgICAgICBuZXdQb3MgPSAgY3Vy
cmVudFBvcyArIChhZGRJbmNyZW1lbnQgPyBpbmNyZW1lbnQgOiAtaW5jcmVtZW50KTsKICAgICAg
ICAgaWYgKHBvc2l0aXZlKQogICAgICAgICAgICAgbmV3UG9zID0gc3RkOjptaW4obmV3UG9zLCBl
bmRQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggYzk4OGNlNmZhZjZlM2U5ZGQ1NWJiYmIwMmRkNWFkMTI4OWM4MTkwZC4uMDBmMjQ1
ZTFlZGM5YjBmMGNkZmU4MzFjNGY1NzgxNGY4YWUwMTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNjE3LDEwICs2MTcsMTAgQEAgc3Rh
dGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgIH0KIAog
ICAgIGlmIChsLnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgaWYgKGwu
c2Nyb2xsWE9mZnNldCgpKQotICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxYICIgPDwgbC5zY3Jv
bGxYT2Zmc2V0KCk7Ci0gICAgICAgIGlmIChsLnNjcm9sbFlPZmZzZXQoKSkKLSAgICAgICAgICAg
IHRzIDw8ICIgc2Nyb2xsWSAiIDw8IGwuc2Nyb2xsWU9mZnNldCgpOworICAgICAgICBpZiAobC5z
Y3JvbGxPZmZzZXQoKS54KCkpCisgICAgICAgICAgICB0cyA8PCAiIHNjcm9sbFggIiA8PCBsLnNj
cm9sbE9mZnNldCgpLngoKTsKKyAgICAgICAgaWYgKGwuc2Nyb2xsT2Zmc2V0KCkueSgpKQorICAg
ICAgICAgICAgdHMgPDwgIiBzY3JvbGxZICIgPDwgbC5zY3JvbGxPZmZzZXQoKS55KCk7CiAgICAg
ICAgIGlmIChsLnJlbmRlckJveCgpICYmIHJvdW5kVG9JbnQobC5yZW5kZXJCb3goKS0+Y2xpZW50
V2lkdGgoKSkgIT0gbC5zY3JvbGxXaWR0aCgpKQogICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxX
aWR0aCAiIDw8IGwuc2Nyb2xsV2lkdGgoKTsKICAgICAgICAgaWYgKGwucmVuZGVyQm94KCkgJiYg
cm91bmRUb0ludChsLnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQoKSkgIT0gbC5zY3JvbGxIZWln
aHQoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>