<?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>233510</bug_id>
          
          <creation_ts>2021-11-25 21:21:09 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 11/23] Move FilterEffect relative absolutePaintRect calculation to FilterImage</short_desc>
          <delta_ts>2021-11-29 21:34:28 -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>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817881</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 21:21:09 -0800</bug_when>
    <thetext>This is a step towards simplifying the FilterEffect geometry and removing the FilterImage from FilterEffect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817883</commentid>
    <comment_count>1</comment_count>
      <attachid>445169</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 21:27:28 -0800</bug_when>
    <thetext>Created attachment 445169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817884</commentid>
    <comment_count>2</comment_count>
      <attachid>445169</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-25 21:48:51 -0800</bug_when>
    <thetext>Comment on attachment 445169
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        getting the moved the absolutePaintRect of a FilterEffect. No need for

&quot;getting the moved absolutePaintRect&quot;?

&gt; Source/WebCore/ChangeLog:12
&gt; +        clamping scaling since all FilterImages have to be within MaxClampedArea.

&quot;clamping or scaling&quot;

&gt; Source/WebCore/platform/graphics/filters/FilterImage.cpp:60
&gt; +IntRect FilterImage::relativeAbsoluteImageRect(const FilterImage&amp; origin) const

&quot;relativeAbsoluteImageRect&quot; is a confusing name for me, since &quot;relative&quot; and &quot;absolute&quot; are opposites. I&apos;m struggling to come up with a good name -- something like &quot;absoluteImageRectRelativeToFilterImage&quot;? Not sure. Maybe there could be a better name if the &quot;this&quot; and argument were the other way around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817886</commentid>
    <comment_count>3</comment_count>
      <attachid>445170</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 22:53:59 -0800</bug_when>
    <thetext>Created attachment 445170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817892</commentid>
    <comment_count>4</comment_count>
      <attachid>445169</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 23:18:04 -0800</bug_when>
    <thetext>Comment on attachment 445169
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterImage.cpp:60
&gt;&gt; +IntRect FilterImage::relativeAbsoluteImageRect(const FilterImage&amp; origin) const
&gt; 
&gt; &quot;relativeAbsoluteImageRect&quot; is a confusing name for me, since &quot;relative&quot; and &quot;absolute&quot; are opposites. I&apos;m struggling to come up with a good name -- something like &quot;absoluteImageRectRelativeToFilterImage&quot;? Not sure. Maybe there could be a better name if the &quot;this&quot; and argument were the other way around?

We agreed on naming it absoluteImageRectRelativeTo() at least for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817895</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-25 23:53:46 -0800</bug_when>
    <thetext>Committed r286172 (244555@main): &lt;https://commits.webkit.org/244555@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445170.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817896</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-25 23:54:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/85761241&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445169</attachid>
            <date>2021-11-25 21:27:28 -0800</date>
            <delta_ts>2021-11-25 22:12:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233510-20211125212728.patch</filename>
            <type>text/plain</type>
            <size>28850</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIzMGY5ZDc3ZjY4OTE2
YWUxZmVjZGY0ZDI4ZDM1ZmVhMWUzNjE5ZS4uYmUyMDAxM2IyNTYxZWE5MGUyMzBmMjRhOWJlYWEx
ZWMwNDI0NzdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBGaWx0ZXJFZmZlY3QgcmVsYXRpdmUgYWJzb2x1dGVQYWludFJlY3QgY2FsY3VsYXRpb24g
dG8gRmlsdGVySW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzUxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoKSBhbmQgcmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dFBpeGVsQnVmZmVyKCkgd2lsbAorICAgICAgICBiZSByZW1vdmVkIGZyb20gRmlsdGVyRWZm
ZWN0IGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IEZpbHRlckltYWdlOjoKKyAgICAgICAgcmVsYXRp
dmVBYnNvbHV0ZUltYWdlUmVjdCgpLiBCb3RoIG9mIHRoZSByZW1vdmVkIGZ1bmN0aW9uIHdlcmUg
anVzdAorICAgICAgICBnZXR0aW5nIHRoZSBtb3ZlZCB0aGUgYWJzb2x1dGVQYWludFJlY3Qgb2Yg
YSBGaWx0ZXJFZmZlY3QuIE5vIG5lZWQgZm9yCisgICAgICAgIGNsYW1waW5nIHNjYWxpbmcgc2lu
Y2UgYWxsIEZpbHRlckltYWdlcyBoYXZlIHRvIGJlIHdpdGhpbiBNYXhDbGFtcGVkQXJlYS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6Om1heEVmZmVjdFJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6ZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdl
OjptYXhFZmZlY3RSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpy
ZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBw
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21w
b25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlB
cml0aG1ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVy
OjphcHBseU5vbkFyaXRobWV0aWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1h
cFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1h
cFNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2Fy
ZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVM
aWdodGluZ1NvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRU1lcmdlU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjph
cHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU9m
ZnNldFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldFNvZnR3
YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0KToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKwogMjAyMS0xMS0yNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xh
c3NdIEludmFsaWRhdGlvbiBzdXBwb3J0IGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIG5vZGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApp
bmRleCBjZGU4MWZiODFmNTAwNWI4MWZiZDJhODJmYmIyYTkyNDQ2MzFkZDRmLi44ODRlNzg4N2Vl
Y2VkMGRlN2ZjMWYxYTQ2NTQzMTdiZjI5OGMwZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTUzLDExICs1Myw2IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmluZ01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAot
ICAgIEZsb2F0UmVjdCBtYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3Vi
cmVnaW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVyc2VjdGlvbihwcmltaXRp
dmVTdWJyZWdpb24sIG1fZmlsdGVyUmVnaW9uKTsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2Nh
bGUpCiAgICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBmMzMwNjk0YmVlNDU0Y2QzZTUyYzAwNTA5MDAzMzkyZjYxZjJiNGVhLi43YWNiODgz
MWJjMmZkZWY0YTkwMTk1NDg3NjAwYmRjY2Y5ZmY1YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC01OCwyNSArNTgsNiBAQCBGbG9hdFBvaW50IEZpbHRlckVmZmVjdDo6bWFwUG9pbnRGcm9tVXNl
clNwYWNlVG9CdWZmZXIoRmxvYXRQb2ludCB1c2VyU3BhY2VQb2ludAogICAgIHJldHVybiBhYnNv
bHV0ZVBvaW50OwogfQogCi1JbnRSZWN0IEZpbHRlckVmZmVjdDo6cmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dFBpeGVsQnVmZmVyKGNvbnN0IEludFJlY3QmIGVmZmVjdFJlY3QpIGNvbnN0Ci17Ci0gICAg
SW50UG9pbnQgbG9jYXRpb24gPSBtX2Fic29sdXRlUGFpbnRSZWN0LmxvY2F0aW9uKCk7Ci0gICAg
bG9jYXRpb24ubW92ZUJ5KC1lZmZlY3RSZWN0LmxvY2F0aW9uKCkpOwotICAgIHJldHVybiBJbnRS
ZWN0KGxvY2F0aW9uLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci19Ci0KLUZsb2F0UmVj
dCBGaWx0ZXJFZmZlY3Q6OmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoY29uc3QgSW50UmVjdCYg
c3JjUmVjdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwotCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSwgc2NhbGUpOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAg
ICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpLnRyYW5zbGF0ZSgtbV9hYnNvbHV0ZVBhaW50UmVjdC5s
b2NhdGlvbigpKTsKLSAgICByZXR1cm4gdHJhbnNmb3JtLm1hcFJlY3Qoc3JjUmVjdCk7Ci19Ci0K
IEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKICAgICAvLyBGRVRpbGUsIEZFVHVyYnVsZW5jZSwg
RkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciByZWdpb24g
YXMgdW5pdGUgcmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDFmMzEyYzkzNTNmOTk4MDA3YTJmZmNj
ZTlmYzE0ZTllZWU3YWRiMTYuLjg3NWQ4ZmVmOTFkNTIwYTRhMjliZWZhMzcxZWVjMmQzMmU0NzI1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNTMsMTAgKzUzLDcgQEAgcHVibGljOgogICAgIEZpbHRl
ckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0K
ICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNp
Z25lZCBudW1iZXJPZkVmZmVjdElucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFZmZlY3Rz
LnNpemUoKTsgfQotICAgIAotICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IHJlcXVlc3RlZFJlZ2lvbk9mSW5w
dXRQaXhlbEJ1ZmZlcihjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgCisKICAgICAvLyBSZWN1
cnNlcyBvbiBpbnB1dHMuCiAgICAgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbihjb25zdCBGaWx0ZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcAppbmRleCA3NjkxNjc4NDY5
ZDE0OTQ5NmZiYjBiYWQyZWFiZDgzYzhiM2Q0NzE5Li43OTkzMzJiODAwYjI0Yjg0MTg4YjU1MWI1
YzZjNDFlZTlhN2VjMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcApAQCAtNTIsNiArNTIsMTYgQEAgRmls
dGVySW1hZ2U6OkZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9u
LCBjb25zdCBJbnRSZWN0JiBhYnMKIHsKIH0KIAorRmxvYXRSZWN0IEZpbHRlckltYWdlOjptYXhF
ZmZlY3RSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKSBjb25zdAoreworICAgIHJldHVybiBpbnRl
cnNlY3Rpb24obV9wcmltaXRpdmVTdWJyZWdpb24sIGZpbHRlci5maWx0ZXJSZWdpb24oKSk7Cit9
CisKK0ludFJlY3QgRmlsdGVySW1hZ2U6OnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJlY3QoY29uc3Qg
RmlsdGVySW1hZ2UmIG9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hYnNvbHV0ZUltYWdl
UmVjdCAtIG9yaWdpbi5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0aW9uKCk7Cit9CisKIEltYWdl
QnVmZmVyKiBGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXIoKQogewogICAgIGlmIChtX2ltYWdlQnVm
ZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJJbWFnZS5oCmluZGV4IDkzY2RlYzhiODAzYmUzMjc5N2U2YjkzODk5MDJmMTFhNTYy
YTAyYjUuLjIxZWMyN2EyMmIzODA1MzdkOWQ1ZDg3YzJjOWYxNWJlN2Q2Y2I4YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmgKQEAgLTQxLDcgKzQxLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEZpbHRl
ckltYWdlPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0
IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgUmVuZGVyaW5n
TW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAKICAgICBGbG9hdFJlY3QgcHJp
bWl0aXZlU3VicmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVTdWJyZWdpb247IH0K
KyAgICBGbG9hdFJlY3QgbWF4RWZmZWN0UmVjdChjb25zdCBGaWx0ZXImKSBjb25zdDsKKwogICAg
IEludFJlY3QgYWJzb2x1dGVJbWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlSW1h
Z2VSZWN0OyB9CisgICAgSW50UmVjdCByZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0KGNvbnN0IEZp
bHRlckltYWdlJiBvcmlnaW4pIGNvbnN0OwogCiAgICAgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2lzQWxwaGFJbWFnZTsgfQogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29m
dHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNGFmNzc3YTVjY2Yy
ZDU0MTdlZGQ0MzUzYjRiNGViYTFhNjBhMTBiOC4uYzAzMDFmOGQzNTk1M2VmNDU4NjEzNjM4NzRj
Y2I3YjZlZTcxYWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0
d2FyZUFwcGxpZXIuY3BwCkBAIC00OSw4ICs0OSwxMSBAQCBib29sIEZFQmxlbmRTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQyLmFi
c29sdXRlSW1hZ2VSZWN0KCkpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNv
bHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgeyBD
b21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgbV9lZmZlY3QuYmxlbmRNb2RlKCkgfSk7Cisg
ICAgYXV0byBpbnB1dEltYWdlUmVjdCA9IGlucHV0LnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJlY3Qo
cmVzdWx0KTsKKyAgICBhdXRvIGlucHV0SW1hZ2VSZWN0MiA9IGlucHV0Mi5yZWxhdGl2ZUFic29s
dXRlSW1hZ2VSZWN0KHJlc3VsdCk7CisKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW5wdXRJbWFnZTIsIGlucHV0SW1hZ2VSZWN0Mik7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGlucHV0SW1hZ2VSZWN0LCB7IHsgfSwgaW5wdXRJbWFn
ZS0+bG9naWNhbFNpemUoKSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX2Vm
ZmVjdC5ibGVuZE1vZGUoKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5j
cHAKaW5kZXggNDRhMzk1MDhhYWU5MGI4ZWM0YzlkODdkYmUwNTE1MjhiOTM0NDJkNi4uYTc5Nzg0
NjlhMDJmNmQ1NzkyYzAyNDI0YzQxYzU0ZGIwMzg3NmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29m
dHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yNjgs
OCArMjY4LDEwIEBAIGJvb2wgRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29u
c3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8gaW5wdXRJbWFnZSA9IGlucHV0LmltYWdlQnVmZmVyKCk7Ci0gICAgaWYg
KGlucHV0SW1hZ2UpCi0gICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVm
ZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0
LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICBpZiAoaW5wdXRJbWFnZSkgeworICAgICAgICBh
dXRvIGlucHV0SW1hZ2VSZWN0ID0gaW5wdXQucmVsYXRpdmVBYnNvbHV0ZUltYWdlUmVjdChyZXN1
bHQpOworICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5w
dXRJbWFnZSwgaW5wdXRJbWFnZVJlY3QpOworICAgIH0KIAogICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCByZXN1bHQuY29sb3JTcGFjZSgpIH07CiAgICAgSW50UmVjdCBpbWFnZVJl
Y3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPnRydW5jYXRlZExvZ2ljYWxTaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNv
ZnR3YXJlQXBwbGllci5jcHAKaW5kZXggY2EwOWQ4OTY2MGVmMDczZmU3Yjg5NDBhOGQ4ZWNkNGNh
MTE1NzgyNS4uNTNlNWY3ZmMwYzk3OGU5NjFlMWZmYWE2NWI3MDJiZDVmNzM5NzI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJT
b2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBGRUNvbXBvbmVudFRy
YW5zZmVyU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJ
bWFnZVYKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gZHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25P
ZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgYXV0byBk
cmF3aW5nUmVjdCA9IHJlc3VsdC5yZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0KGlucHV0KTsKICAg
ICBpbnB1dC5jb3B5UGl4ZWxCdWZmZXIoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGRyYXdpbmdS
ZWN0KTsKIAogICAgIGFwcGx5UGxhdGZvcm0oKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNw
cAppbmRleCAyYzZiYjRhNDAyYmVkM2RlMjc4M2Y1NGYyNDJmYzI4MDliZmExMzEwLi5kZWZkYTg4
OGUxNjM5ZDQxODZhYzI3ZDU4YzIxZjAyYTAwZDI0NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdh
cmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMTMyLDEyICsx
MzIsMTIgQEAgYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlBcml0aG1ldGlj
KEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVySW1hZ2UKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFJlY3QgZWZmZWN0QURy
YXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlu
cHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0
ID0gcmVzdWx0LnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJlY3QoaW5wdXQpOwogICAgIGF1dG8gc291
cmNlUGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzb3VyY2VQaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5y
ZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0
KCkpOworICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVzdWx0LnJlbGF0aXZlQWJz
b2x1dGVJbWFnZVJlY3QoaW5wdXQyKTsKICAgICBpbnB1dDIuY29weVBpeGVsQnVmZmVyKCpkZXN0
aW5hdGlvblBpeGVsQnVmZmVyLCBlZmZlY3RCRHJhd2luZ1JlY3QpOwogCiAgICAgYXV0byYgc291
cmNlUGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQnVmZmVyLT5kYXRhKCk7CkBAIC0xNjEsMTQgKzE2
MSwxNiBAQCBib29sIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseU5vbkFyaXRobWV0
aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJJbQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBhdXRvJiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBh
dXRvIGlucHV0SW1hZ2VSZWN0ID0gaW5wdXQucmVsYXRpdmVBYnNvbHV0ZUltYWdlUmVjdChyZXN1
bHQpOworICAgIGF1dG8gaW5wdXRJbWFnZVJlY3QyID0gaW5wdXQyLnJlbGF0aXZlQWJzb2x1dGVJ
bWFnZVJlY3QocmVzdWx0KTsKIAogICAgIHN3aXRjaCAobV9lZmZlY3Qub3BlcmF0aW9uKCkpIHsK
ICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV046CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUjoKLSAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSk7Ci0gICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBpbnB1dEltYWdl
UmVjdDIpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFn
ZSwgaW5wdXRJbWFnZVJlY3QpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkVDT01QT1NJ
VEVfT1BFUkFUT1JfSU46IHsKQEAgLTE4NywxOCArMTg5LDE4IEBAIGJvb2wgRkVDb21wb3NpdGVT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZp
bHRlckltCiAgICAgfQogCiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5k
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVj
dC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSwg
eyB7IH0sIGlucHV0SW1hZ2UyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpE
ZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbnB1dEltYWdlMiwgaW5wdXRJbWFnZVJlY3QyLCB7IHsgfSwgaW5wdXRJbWFn
ZTItPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uT3V0KTsK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlMiwgbV9lZmZl
Y3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSkp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9l
ZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgp
KSwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6
OlNvdXJjZUF0b3ApOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5w
dXRJbWFnZTIsIGlucHV0SW1hZ2VSZWN0Mik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCwgeyB7IH0sIGlucHV0SW1hZ2Ut
PmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZUF0b3ApOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKLSAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSksIHsgeyB9
LCBpbnB1dEltYWdlLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpYT1IpOwor
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlucHV0
SW1hZ2VSZWN0Mik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1
dEltYWdlLCBpbnB1dEltYWdlUmVjdCwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkg
fSwgQ29tcG9zaXRlT3BlcmF0b3I6OlhPUik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBG
RUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOgpAQCAtMjA2LDggKzIwOCw4IEBAIGJvb2wg
RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFn
ZSYgaW5wdXQsIEZpbHRlckltCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgRkVD
T01QT1NJVEVfT1BFUkFUT1JfTElHSFRFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpLCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNh
bFNpemUoKSB9LCBDb21wb3NpdGVPcGVyYXRvcjo6UGx1c0xpZ2h0ZXIpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlucHV0SW1hZ2VSZWN0Mik7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1
dEltYWdlUmVjdCwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRl
T3BlcmF0b3I6OlBsdXNMaWdodGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBs
aWVyLmNwcAppbmRleCA4ZWIyYWFjNjQ1ODRjNzEyNWNmMGZhZTgzOGQ1NTIwMjg3OTc1NTQxLi45
OWU5MWI5NDAyZjRlMmYxYWFkMWU1NmJiYWUzNzYxZjk0YzUzMzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVN
YXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdAogICAgIGlmICgh
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0
byBlZmZlY3REcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhl
bEJ1ZmZlcihpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIGVmZmVjdERyYXdp
bmdSZWN0ID0gcmVzdWx0LnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJlY3QoaW5wdXQpOwogICAgIGF1
dG8gc291cmNlUGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1ZmZlcihhbHBoYUZvcm1hdCwg
ZWZmZWN0RHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAg
aWYgKCFzb3VyY2VQaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURp
c3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBs
aWVyLmNwcAppbmRleCBkOTBjZjg1NTdiYzQxOGM1YmVhM2E0NGE4ZWMyZjY3NGI5MGViNWZjLi5i
OWQxNDQ1OGRkNzEyZTg3MGZlZmI3NTU2OGY3OGE5YjY3MDNhNzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2Vt
ZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVy
LmNwcApAQCAtNjAsMTAgKzYwLDEwIEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJCiAKICAgICBh
dXRvJiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRh
KCk7CiAKLSAgICBhdXRvIGVmZmVjdEFEcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJl
Z2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBh
dXRvIGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlc3VsdC5yZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0
KGlucHV0KTsKICAgICBhdXRvIGlucHV0UGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1ZmZl
cihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2luZ1Jl
Y3QpOwogCi0gICAgYXV0byBlZmZlY3RCRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRS
ZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAg
IGF1dG8gZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVzdWx0LnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJl
Y3QoaW5wdXQyKTsKICAgICAvLyBUaGUgY2FsY3VsYXRpb25zIHVzaW5nIHRoZSBwaXhlbCB2YWx1
ZXMgZnJvbSDigJhpbjLigJkgYXJlIHBlcmZvcm1lZCB1c2luZyBub24tcHJlbXVsdGlwbGllZCBj
b2xvciB2YWx1ZXMuCiAgICAgYXV0byBkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlciA9IGlucHV0Mi5n
ZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGVm
ZmVjdEJEcmF3aW5nUmVjdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNzY0MTgzM2JkMGY0OWJjMzZi
NzlhZTUwMmI5NWMxMGRjZDEwYTEyMy4uOGZlMjIzNzkxOTNkNjMwMTBjNGNjNzNhODlkNzMzMjdh
NDY4MGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93
U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNDEsOSArNDEsOSBAQCBib29sIEZFRHJvcFNoYWRvd1Nv
ZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlcklt
YWdlVgogICAgIEZsb2F0U2l6ZSBibHVyUmFkaXVzID0gMiAqIGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgpLCBtX2VmZmVjdC5zdGREZXZpYXRpb25Z
KCkgfSk7CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxl
KHsgbV9lZmZlY3QuZHgoKSwgbV9lZmZlY3QuZHkoKSB9KTsKIAotICAgIEZsb2F0UmVjdCBkcmF3
aW5nUmVnaW9uID0gbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNv
bHV0ZUltYWdlUmVjdCgpKTsKLSAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQo
ZHJhd2luZ1JlZ2lvbik7Ci0gICAgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQubW92ZShvZmZzZXQp
OworICAgIEZsb2F0UmVjdCBpbnB1dEltYWdlUmVjdCA9IGlucHV0LnJlbGF0aXZlQWJzb2x1dGVJ
bWFnZVJlY3QocmVzdWx0KTsKKyAgICBGbG9hdFJlY3QgaW5wdXRJbWFnZVJlY3RXaXRoT2Zmc2V0
KGlucHV0SW1hZ2VSZWN0KTsKKyAgICBpbnB1dEltYWdlUmVjdFdpdGhPZmZzZXQubW92ZShvZmZz
ZXQpOwogCiAgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQuaW1hZ2VCdWZmZXIoKTsKICAgICBp
ZiAoIWlucHV0SW1hZ2UpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgRkVEcm9wU2hhZG93U29mdHdh
cmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VW
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9lZmZlY3Quc2hhZG93T3BhY2l0
eSgpKTsKLSAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgZHJh
d2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdFdpdGhPZmZzZXQpOwogICAgIHJlc3VsdENvbnRl
eHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1
cywgb2Zmc2V0LCBtX2VmZmVjdC5zaGFkb3dDb2xvcigpKTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9v
bCBGRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVy
LCBjb25zdCBGaWx0ZXJJbWFnZVYKICAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKSksIG1fZWZm
ZWN0LnNoYWRvd0NvbG9yKCkpOwogICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGRyYXdpbmdSZWdpb24p
OworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdl
LCBpbnB1dEltYWdlUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lh
bkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggMWRmYTk3ZTljOTE5ZTc3M2IyMWYzNTkzNzcxMDFmNjM4ODg3ZTBlOC4uNWMzMTBhMjMxZDdl
YjBkZWE0NTNkMWU4NGMzMDQ1MWU4MWRjM2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJl
QXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCBib29sIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBG
aWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZwogICAgIGlmICghZGVzdGluYXRpb25QaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBlZmZlY3REcmF3aW5n
UmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1dC5h
YnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIGVmZmVjdERyYXdpbmdSZWN0ID0gcmVzdWx0
LnJlbGF0aXZlQWJzb2x1dGVJbWFnZVJlY3QoaW5wdXQpOwogICAgIGlucHV0LmNvcHlQaXhlbEJ1
ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGlm
ICghbV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgpICYmICFtX2VmZmVjdC5zdGREZXZpYXRpb25ZKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVM
aWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYzE5OGY0NjkwMzMzNTRmZmQxYjNlMTUx
YjVhMGQ5Njg2NDNkNTE0ZS4uOTA5MTc4YzJjNzUwYTVkYTQ1ZTc5MmQyNmIyN2U4MmVjZjg0ZWFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFw
cGxpZXIuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgYm9vbCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW4KIAog
ICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIt
PmRhdGEoKTsKIAotICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0
ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7Cisg
ICAgYXV0byBlZmZlY3REcmF3aW5nUmVjdCA9IHJlc3VsdC5yZWxhdGl2ZUFic29sdXRlSW1hZ2VS
ZWN0KGlucHV0KTsKICAgICBpbnB1dC5jb3B5UGl4ZWxCdWZmZXIoKmRlc3RpbmF0aW9uUGl4ZWxC
dWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsKIAogICAgIC8vIEZJWE1FOiBzdXBwb3J0IGtlcm5l
bFVuaXRMZW5ndGhzIG90aGVyIHRoYW4gKDEsMSkuIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhl
IFczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmNw
cAppbmRleCAwMTM4ZjVjMjg4MjBhYzg0YzMwY2RhZjY1ZWYwZDBiYmQxMjZkY2ViLi5lYmQwOTQz
MTRkYWQ2NjBmNGFhOGRjN2JiNDM2MjkyNmEyY2M4YTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFw
cGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgYm9v
bCBGRU1lcmdlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0
ZXJJbWFnZVZlY3RvciYgaW5wdXQKICAgICAgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQtPmlt
YWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwg
bV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC0+YWJzb2x1dGVJbWFnZVJl
Y3QoKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBpbnB1dEltYWdlUmVjdCA9IGlucHV0LT5y
ZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0KHJlc3VsdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhv
bG9neVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYTBkOTYwYTkyMGIxNWNjNDFmNjEyNjQ5NTEw
ZjQxNTczYmIzMjdjZC4uZGQ3MWU5M2VjOTU2MTJlNDNmODMzMDlmYWE0ZjM3YzU3NmRmMzQ4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVB
cHBsaWVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgRkVNb3JwaG9sb2d5U29mdHdhcmVB
cHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWCiAg
ICAgICAgIHJldHVybiByYWRpdXNYIDwgMCB8fCByYWRpdXNZIDwgMCB8fCAoIXJhZGl1c1ggJiYg
IXJhZGl1c1kpOwogICAgIH07CiAKLSAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gbV9l
ZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1h
Z2VSZWN0KCkpOworICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSByZXN1bHQucmVsYXRp
dmVBYnNvbHV0ZUltYWdlUmVjdChpbnB1dCk7CiAgICAgSW50U2l6ZSByYWRpdXMgPSBmbG9vcmVk
SW50U2l6ZShGbG9hdFNpemUobV9lZmZlY3QucmFkaXVzWCgpLCBtX2VmZmVjdC5yYWRpdXNZKCkp
KTsKIAogICAgIGlmIChpc0RlZ2VuZXJhdGUocmFkaXVzLndpZHRoKCksIHJhZGl1cy5oZWlnaHQo
KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGll
ci5jcHAKaW5kZXggZjBkYTVkMjg4ODQ3OWE3MmYzYzA5ZjZiMGEzMzhmNjFkYzVmMjk2Ni4uNmJk
N2QwNGRmZWFhZjA4ODYxMWRmN2Q1NzcxZDdmZWQ4OGFlYTQ4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU9mZnNldFNvZnR3
YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQxLDEwICs0MSwx
MCBAQCBib29sIEZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZp
bHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0bwogICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIWlu
cHV0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UmVjdCBkcmF3aW5n
UmVnaW9uID0gbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNvbHV0
ZUltYWdlUmVjdCgpKTsKLSAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLnNjYWxlZEJ5Rmls
dGVyU2NhbGUoeyBtX2VmZmVjdC5keCgpLCBtX2VmZmVjdC5keSgpIH0pKTsKKyAgICBGbG9hdFJl
Y3QgaW5wdXRJbWFnZVJlY3QgPSBpbnB1dC5yZWxhdGl2ZUFic29sdXRlSW1hZ2VSZWN0KHJlc3Vs
dCk7CisgICAgaW5wdXRJbWFnZVJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7
IG1fZWZmZWN0LmR4KCksIG1fZWZmZWN0LmR5KCkgfSkpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGRyYXdpbmdSZWdpb24pOworICAg
IHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1
dEltYWdlUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVB
cHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCAzM2M3YTAzZmY3N2JlNDFiYTUy
YTY2MGQ0NDMzNzdmODkxODFmZjFjLi41MTgyZGY1MWM1Yzk0YjY0MDQ5ZWZkODY1OGMwNWY1OGVj
NTM0ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxp
ZXIuY3BwCkBAIC00MiwxMCArNDIsMTAgQEAgYm9vbCBGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYKICAgICBh
dXRvIGlucHV0SW1hZ2VSZWN0ID0gaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKTsKICAgICBhdXRv
IHJlc3VsdEltYWdlUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpOwogCi0gICAgYXV0
byB0aWxlUmVjdCA9IGZpbHRlci5tYXhFZmZlY3RSZWN0KGlucHV0LnByaW1pdGl2ZVN1YnJlZ2lv
bigpKTsKKyAgICBhdXRvIHRpbGVSZWN0ID0gaW5wdXQubWF4RWZmZWN0UmVjdChmaWx0ZXIpOwog
ICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIGF1dG8gbWF4
UmVzdWx0UmVjdCA9IGZpbHRlci5tYXhFZmZlY3RSZWN0KHJlc3VsdC5wcmltaXRpdmVTdWJyZWdp
b24oKSk7CisgICAgYXV0byBtYXhSZXN1bHRSZWN0ID0gcmVzdWx0Lm1heEVmZmVjdFJlY3QoZmls
dGVyKTsKICAgICBtYXhSZXN1bHRSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAog
ICAgIGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlUmVjdC5zaXplKCks
IGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAppbmRleCBlMjhiODhmOTFkM2QyYWU2YjU1YjFhOTE4YmIxNmMwYmIxZWQwMjRiLi4wYWM2ODk5
YzM5YWZkMmMzMzdkNDNhOWYwMjRiZDk1NDc3NWNjMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIEludFJlY3QgQ1NTRmlsdGVyOjpv
dXRwdXRSZWN0KCkKICAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKIAogICAgIGlmIChl
ZmZlY3QtPmhhc1Jlc3VsdCgpIHx8IChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVy
ZXItPmhhc1Jlc3VsdCgpKSkKLSAgICAgICAgcmV0dXJuIGVmZmVjdC0+cmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dFBpeGVsQnVmZmVyKEludFJlY3QgeyBmaWx0ZXJSZWdpb24oKSB9KTsKKyAgICAgICAg
cmV0dXJuIGVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSAtIEludFBvaW50KGZpbHRlclJlZ2lv
bigpLmxvY2F0aW9uKCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggMDc0ZGYxOWM5
ZjhkMmMyM2EyMmZiMmVjNzRkNTBkYmQ0M2UxMDUyMS4uZWFhZDM4MjRlMDA3OTlkYjIzYTZkYzRj
MmU0OTY4YmEzODVlZGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTEwMCwxNCArMTAwLDE0IEBAIGJvb2wgRkVJbWFn
ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yCiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX2VmZmVjdC5zb3VyY2VJ
bWFnZVJlY3QoKTsKICAgICAgICAgICAgIG1fZWZmZWN0LnByZXNlcnZlQXNwZWN0UmF0aW8oKS50
cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICBpbWFnZVJlY3Qu
c2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgaW1hZ2VSZWN0ID0gbV9l
ZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVjdCkpOworICAg
ICAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0LmFic29sdXRl
SW1hZ2VSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGlt
YWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0
IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBhdXRvIGltYWdl
UmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAgICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnko
bV9lZmZlY3Quc291cmNlSW1hZ2VSZWN0KCkubG9jYXRpb24oKSk7CiAgICAgICAgICAgICBpbWFn
ZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgaW1hZ2VSZWN0
ID0gbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVjdCkp
OworICAgICAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0LmFi
c29sdXRlSW1hZ2VSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ICAgICApOwo=
</data>
<flag name="review"
          id="470308"
          type_id="1"
          status="+"
          setter="heycam"
    />
    <flag name="commit-queue"
          id="470309"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445170</attachid>
            <date>2021-11-25 22:53:59 -0800</date>
            <delta_ts>2021-11-25 23:53:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233510-20211125225358.patch</filename>
            <type>text/plain</type>
            <size>30492</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIzMGY5ZDc3ZjY4OTE2
YWUxZmVjZGY0ZDI4ZDM1ZmVhMWUzNjE5ZS4uYTJkMmU5Y2I2ODBkMmExOWMyOGUyZThlZjY0MWU4
NjY4OTgyYTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBGaWx0ZXJFZmZlY3QgcmVsYXRpdmUgYWJzb2x1dGVQYWludFJlY3QgY2FsY3VsYXRpb24g
dG8gRmlsdGVySW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzUxMAorCisgICAgICAgIFJldmlld2VkIGJ5IENhbWVyb24gTWNDb3JtYWNrLgor
CisgICAgICAgIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoKSBhbmQgcmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dFBpeGVsQnVmZmVyKCkgd2lsbAorICAgICAgICBiZSByZW1vdmVkIGZyb20gRmlsdGVy
RWZmZWN0IGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IEZpbHRlckltYWdlOjoKKyAgICAgICAgYWJz
b2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKCkuIEJvdGggb2YgdGhlIHJlbW92ZWQgZnVuY3Rpb24g
d2VyZSBqdXN0CisgICAgICAgIGdldHRpbmcgdGhlIGFic29sdXRlUGFpbnRSZWN0IG9mIGEgRmls
dGVyRWZmZWN0IHJlbGF0aXZlIHRvIGEgc3BlY2lmaWVkCisgICAgICAgIEZpbHRlckltYWdlLiBB
bHNvIHRoZXJlIGlzIG8gbmVlZCBmb3Igc2NhbGluZyBiZWNhdXNlIG9mIGNsYW1waW5nIHNpbmNl
IAorICAgICAgICB0aGUgYXJlYXMgb2YgYWxsIEZpbHRlckltYWdlcyBoYXZlIHRvIGJlIGxlc3Mg
dGhhbiBNYXhDbGFtcGVkQXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6Om1heEVmZmVjdFJlY3QgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWVzdGVkUmVn
aW9uT2ZJbnB1dFBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjptYXhFZmZlY3RSZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckltYWdlOjphYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8gY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2Fy
ZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZFNvZnR3YXJlQXBwbGllcjo6
YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVD
b2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9y
TWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXI6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9z
aXRlU29mdHdhcmVBcHBsaWVyOjphcHBseUFyaXRobWV0aWMpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29m
dHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXhTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0
d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93U29mdHdhcmVB
cHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29m
dHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2VTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNvZnR3YXJlQXBwbGllcjo6YXBw
bHkpOgorCiAyMDIxLTExLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbOmhhcygpIHBzZXVkby1jbGFzc10gSW52YWxpZGF0aW9uIHN1cHBvcnQgZm9yIGFk
ZGluZyBhbmQgcmVtb3Zpbmcgbm9kZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IGNkZTgxZmI4MWY1MDA1YjgxZmJkMmE4MmZi
YjJhOTI0NDYzMWRkNGYuLjg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMxN2JmMjk4YzBlNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXIuaApAQCAtNTMsMTEgKzUzLDYgQEAgcHVibGljOgogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0
UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdN
b2RlID0gcmVuZGVyaW5nTW9kZTsgfQogCi0gICAgRmxvYXRSZWN0IG1heEVmZmVjdFJlY3QoY29u
c3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gaW50ZXJzZWN0aW9uKHByaW1pdGl2ZVN1YnJlZ2lvbiwgbV9maWx0ZXJSZWdpb24pOwot
ICAgIH0KLQogcHJvdGVjdGVkOgogICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKICAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihm
aWx0ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGYzMzA2OTRiZWU0NTRjZDNlNTJjMDA1
MDkwMDMzOTJmNjFmMmI0ZWEuLjdhY2I4ODMxYmMyZmRlZjRhOTAxOTU0ODc2MDBiZGNjZjlmZjVh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTU4LDI1ICs1OCw2IEBAIEZsb2F0UG9pbnQgRmls
dGVyRWZmZWN0OjptYXBQb2ludEZyb21Vc2VyU3BhY2VUb0J1ZmZlcihGbG9hdFBvaW50IHVzZXJT
cGFjZVBvaW50CiAgICAgcmV0dXJuIGFic29sdXRlUG9pbnQ7CiB9CiAKLUludFJlY3QgRmlsdGVy
RWZmZWN0OjpyZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoY29uc3QgSW50UmVjdCYg
ZWZmZWN0UmVjdCkgY29uc3QKLXsKLSAgICBJbnRQb2ludCBsb2NhdGlvbiA9IG1fYWJzb2x1dGVQ
YWludFJlY3QubG9jYXRpb24oKTsKLSAgICBsb2NhdGlvbi5tb3ZlQnkoLWVmZmVjdFJlY3QubG9j
YXRpb24oKSk7Ci0gICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKTsKLX0KLQotRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAgIEFTU0VSVCho
YXNSZXN1bHQoKSk7Ci0KLSAgICBGbG9hdFNpemUgc2NhbGU7Ci0gICAgSW1hZ2VCdWZmZXI6OmNs
YW1wZWRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0KLSAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSkudHJhbnNs
YXRlKC1tX2Fic29sdXRlUGFpbnRSZWN0LmxvY2F0aW9uKCkpOwotICAgIHJldHVybiB0cmFuc2Zv
cm0ubWFwUmVjdChzcmNSZWN0KTsKLX0KLQogRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAg
IC8vIEZFVGlsZSwgRkVUdXJidWxlbmNlLCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0
cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBhcyB1bml0ZSByZWN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5k
ZXggMWYzMTJjOTM1M2Y5OTgwMDdhMmZmY2NlOWZjMTRlOWVlZTdhZGIxNi4uODc1ZDhmZWY5MWQ1
MjBhNGEyOWJlZmEzNzFlZWMyZDMyZTQ3MjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC01MywxMCAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMoKSB7
IHJldHVybiBtX2lucHV0RWZmZWN0czsgfQogICAgIEZpbHRlckVmZmVjdCogaW5wdXRFZmZlY3Qo
dW5zaWduZWQpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29u
c3QgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOyB9Ci0gICAgCi0gICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIElu
dFJlY3QgcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGNvbnN0IEludFJlY3QmKSBj
b25zdDsKLSAgICAKKwogICAgIC8vIFJlY3Vyc2VzIG9uIGlucHV0cy4KICAgICBGbG9hdFJlY3Qg
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZpbHRlciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
SW1hZ2UuY3BwCmluZGV4IDc2OTE2Nzg0NjlkMTQ5NDk2ZmJiMGJhZDJlYWJkODNjOGIzZDQ3MTku
LjA1NWRkODU1NzA1YmM1YjM3YzczNzk5MjJmMDJjNjY0MGQzN2ZkYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2Uu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmls
dGVySW1hZ2UuaCIKIAorI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIu
aCIKQEAgLTUyLDYgKzUzLDE2IEBAIEZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25zdCBGbG9h
dFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgSW50UmVjdCYgYWJzCiB7CiB9CiAKK0Zs
b2F0UmVjdCBGaWx0ZXJJbWFnZTo6bWF4RWZmZWN0UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gaW50ZXJzZWN0aW9uKG1fcHJpbWl0aXZlU3VicmVnaW9uLCBm
aWx0ZXIuZmlsdGVyUmVnaW9uKCkpOworfQorCitJbnRSZWN0IEZpbHRlckltYWdlOjphYnNvbHV0
ZUltYWdlUmVjdFJlbGF0aXZlVG8oY29uc3QgRmlsdGVySW1hZ2UmIG9yaWdpbikgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9hYnNvbHV0ZUltYWdlUmVjdCAtIG9yaWdpbi5hYnNvbHV0ZUltYWdlUmVj
dCgpLmxvY2F0aW9uKCk7Cit9CisKIEltYWdlQnVmZmVyKiBGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZm
ZXIoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IDkzY2RlYzhi
ODAzYmUzMjc5N2U2YjkzODk5MDJmMTFhNTYyYTAyYjUuLmRkNzcxY2UwZDFlZjcxOGUyYWU2NDdj
NTM1ZjcyODAyMGJhZDRlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKQEAgLTQxLDcgKzQxLDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0
JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBi
b29sIGlzQWxwaGFJbWFnZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJik7CiAKICAgICBGbG9hdFJlY3QgcHJpbWl0aXZlU3VicmVnaW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltaXRpdmVTdWJyZWdpb247IH0KKyAgICBGbG9hdFJlY3QgbWF4RWZmZWN0UmVjdChj
b25zdCBGaWx0ZXImKSBjb25zdDsKKwogICAgIEludFJlY3QgYWJzb2x1dGVJbWFnZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2Fic29sdXRlSW1hZ2VSZWN0OyB9CisgICAgSW50UmVjdCBhYnNvbHV0
ZUltYWdlUmVjdFJlbGF0aXZlVG8oY29uc3QgRmlsdGVySW1hZ2UmIG9yaWdpbikgY29uc3Q7CiAK
ICAgICBib29sIGlzQWxwaGFJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbHBoYUltYWdlOyB9
CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJpbmdNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVB
cHBsaWVyLmNwcAppbmRleCA0YWY3NzdhNWNjZjJkNTQxN2VkZDQzNTNiNGI0ZWJhMWE2MGExMGI4
Li5kM2NiNTVjMjYwYTk4NmJlYzExYmNlNjRjNDI5NmQ5OWM0MjNkZTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRT
b2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQ5LDggKzQ5
LDExIEBAIGJvb2wgRkVCbGVuZFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGF1dG8mIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSkpOwotICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpLCB7IHsgfSwgaW5w
dXRJbWFnZS0+bG9naWNhbFNpemUoKSB9LCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVy
LCBtX2VmZmVjdC5ibGVuZE1vZGUoKSB9KTsKKyAgICBhdXRvIGlucHV0SW1hZ2VSZWN0ID0gaW5w
dXQuYWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKHJlc3VsdCk7CisgICAgYXV0byBpbnB1dElt
YWdlUmVjdDIgPSBpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKHJlc3VsdCk7CisK
KyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlucHV0SW1h
Z2VSZWN0Mik7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2Us
IGlucHV0SW1hZ2VSZWN0LCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNhbFNpemUoKSB9LCB7IENv
bXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX2VmZmVjdC5ibGVuZE1vZGUoKSB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBs
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNDRhMzk1MDhhYWU5MGI4
ZWM0YzlkODdkYmUwNTE1MjhiOTM0NDJkNi4uNGYwZTNmYjU0NTk3ZTJkMDAyMmZhZGQ3MzI2NzY4
YzU1M2I0YmJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JN
YXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yNjgsOCArMjY4LDEwIEBAIGJvb2wgRkVDb2xv
ck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVy
SW1hZ2VWZWN0b3ImCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gaW5wdXRJbWFn
ZSA9IGlucHV0LmltYWdlQnVmZmVyKCk7Ci0gICAgaWYgKGlucHV0SW1hZ2UpCi0gICAgICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVj
dC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsK
KyAgICBpZiAoaW5wdXRJbWFnZSkgeworICAgICAgICBhdXRvIGlucHV0SW1hZ2VSZWN0ID0gaW5w
dXQuYWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdElt
YWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVj
dCk7CisgICAgfQogCiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHJlc3VsdC5j
b2xvclNwYWNlKCkgfTsKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJ
bWFnZS0+dHJ1bmNhdGVkTG9naWNhbFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNwcAppbmRl
eCBjYTA5ZDg5NjYwZWYwNzNmZTdiODk0MGE4ZDhlY2Q0Y2ExMTU3ODI1Li4xYjI1Zjc4Njc0NzQ3
MTAxNDhjOTNlYmQ0ZmUzZWJmYzk4NDRkMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0
d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5jcHAKQEAg
LTEzOSw3ICsxMzksNyBAQCBib29sIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXI6
OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlmICghZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBkcmF3
aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1
dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIGRyYXdpbmdSZWN0ID0gcmVzdWx0LmFi
c29sdXRlSW1hZ2VSZWN0UmVsYXRpdmVUbyhpbnB1dCk7CiAgICAgaW5wdXQuY29weVBpeGVsQnVm
ZmVyKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBkcmF3aW5nUmVjdCk7CiAKICAgICBhcHBseVBs
YXRmb3JtKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2Fy
ZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggMmM2YmI0YTQwMmJl
ZDNkZTI3ODNmNTRmMjQyZmMyODA5YmZhMTMxMC4uMTUwYTI4YWQ0YTMxMGM1ZDA3YjIyNDkxNTYx
ZDIwNzA4MzQ2YTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBv
c2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIGJvb2wgRkVDb21w
b3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5QXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQs
IEZpbHRlckltYWdlCiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IG1fZWZmZWN0
LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1dC5hYnNvbHV0ZUltYWdlUmVj
dCgpKTsKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUlt
YWdlUmVjdFJlbGF0aXZlVG8oaW5wdXQpOwogICAgIGF1dG8gc291cmNlUGl4ZWxCdWZmZXIgPSBp
bnB1dC5nZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBlZmZlY3RBRHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAg
ICAgaWYgKCFzb3VyY2VQaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
SW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklu
cHV0UGl4ZWxCdWZmZXIoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIEludFJlY3Qg
ZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0UmVsYXRpdmVUbyhp
bnB1dDIpOwogICAgIGlucHV0Mi5jb3B5UGl4ZWxCdWZmZXIoKmRlc3RpbmF0aW9uUGl4ZWxCdWZm
ZXIsIGVmZmVjdEJEcmF3aW5nUmVjdCk7CiAKICAgICBhdXRvJiBzb3VyY2VQaXhlbEFycmF5ID0g
c291cmNlUGl4ZWxCdWZmZXItPmRhdGEoKTsKQEAgLTE2MSwxNCArMTYxLDE2IEBAIGJvb2wgRkVD
b21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYg
aW5wdXQsIEZpbHRlckltCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGF1dG8gaW5wdXRJbWFnZVJl
Y3QgPSBpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8ocmVzdWx0KTsKKyAgICBhdXRv
IGlucHV0SW1hZ2VSZWN0MiA9IGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8ocmVz
dWx0KTsKIAogICAgIHN3aXRjaCAobV9lZmZlY3Qub3BlcmF0aW9uKCkpIHsKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX1VOS05PV046CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBpbnB1dEltYWdlUmVjdDIpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgaW5wdXRJbWFn
ZVJlY3QpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1Jf
SU46IHsKQEAgLTE4NywxOCArMTg5LDE4IEBAIGJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltCiAgICAg
fQogCiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6Ci0gICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlucHV0
SW1hZ2UyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk91
dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBp
bnB1dEltYWdlUmVjdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bnB1dEltYWdlMiwgaW5wdXRJbWFnZVJlY3QyLCB7IHsgfSwgaW5wdXRJbWFnZTItPmxvZ2ljYWxT
aXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSkpOwotICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlu
cHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZUF0b3Ap
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlu
cHV0SW1hZ2VSZWN0Mik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXpl
KCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZUF0b3ApOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSksIHsgeyB9LCBpbnB1dEltYWdl
LT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpYT1IpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlucHV0SW1hZ2VSZWN0Mik7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1
dEltYWdlUmVjdCwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRl
T3BlcmF0b3I6OlhPUik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRUNPTVBPU0lURV9P
UEVSQVRPUl9BUklUSE1FVElDOgpAQCAtMjA2LDggKzIwOCw4IEBAIGJvb2wgRkVDb21wb3NpdGVT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZp
bHRlckltCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BF
UkFUT1JfTElHSFRFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlu
cHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNv
bHV0ZUltYWdlUmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFi
c29sdXRlSW1hZ2VSZWN0KCkpLCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNhbFNpemUoKSB9LCBD
b21wb3NpdGVPcGVyYXRvcjo6UGx1c0xpZ2h0ZXIpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIGlucHV0SW1hZ2VSZWN0Mik7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCwg
eyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlBs
dXNMaWdodGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRy
aXhTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcAppbmRl
eCA4ZWIyYWFjNjQ1ODRjNzEyNWNmMGZhZTgzOGQ1NTIwMjg3OTc1NTQxLi42ZTViMWMwNTQ3YzM3
NjlmYjc1MjQ1MjI3YTVmMDNjY2E0NzE0NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI5NSw3
ICsyOTUsNyBAQCBib29sIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdAogICAgIGlmICghZGVzdGluYXRpb25Q
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBlZmZlY3REcmF3
aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1
dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIGVmZmVjdERyYXdpbmdSZWN0ID0gcmVz
dWx0LmFic29sdXRlSW1hZ2VSZWN0UmVsYXRpdmVUbyhpbnB1dCk7CiAgICAgYXV0byBzb3VyY2VQ
aXhlbEJ1ZmZlciA9IGlucHV0LmdldFBpeGVsQnVmZmVyKGFscGhhRm9ybWF0LCBlZmZlY3REcmF3
aW5nUmVjdCwgbV9lZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAoIXNvdXJj
ZVBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50
TWFwU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIuY3BwCmlu
ZGV4IGQ5MGNmODU1N2JjNDE4YzViZWEzYTQ0YThlYzJmNjc0YjkwZWI1ZmMuLjRlY2QwNDlmNWQx
YTMzNDU0OTE5M2RkZWM4MzY1NDlkNDI1ZWViODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0
d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC02
MCwxMCArNjAsMTAgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcjo6YXBw
bHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckkKIAogICAgIGF1dG8mIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKIAotICAg
IGF1dG8gZWZmZWN0QURyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1
dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIGF1dG8gZWZmZWN0
QURyYXdpbmdSZWN0ID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0UmVsYXRpdmVUbyhpbnB1dCk7
CiAgICAgYXV0byBpbnB1dFBpeGVsQnVmZmVyID0gaW5wdXQuZ2V0UGl4ZWxCdWZmZXIoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgZWZmZWN0QURyYXdpbmdSZWN0KTsKIAot
ICAgIGF1dG8gZWZmZWN0QkRyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dFBpeGVsQnVmZmVyKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIGVm
ZmVjdEJEcmF3aW5nUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8oaW5w
dXQyKTsKICAgICAvLyBUaGUgY2FsY3VsYXRpb25zIHVzaW5nIHRoZSBwaXhlbCB2YWx1ZXMgZnJv
bSDigJhpbjLigJkgYXJlIHBlcmZvcm1lZCB1c2luZyBub24tcHJlbXVsdGlwbGllZCBjb2xvciB2
YWx1ZXMuCiAgICAgYXV0byBkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlciA9IGlucHV0Mi5nZXRQaXhl
bEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGVmZmVjdEJE
cmF3aW5nUmVjdCk7CiAgICAgCkBAIC03NCw5ICs3NCw5IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRN
YXBTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0
ZXJJCiAgICAgYXV0byYgZGlzcGxhY2VtZW50UGl4ZWxBcnJheSA9IGRpc3BsYWNlbWVudFBpeGVs
QnVmZmVyLT5kYXRhKCk7CiAgICAgQVNTRVJUKGlucHV0UGl4ZWxBcnJheS5sZW5ndGgoKSA9PSBk
aXNwbGFjZW1lbnRQaXhlbEFycmF5Lmxlbmd0aCgpKTsKIAotICAgIEludFNpemUgcGFpbnRTaXpl
ID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpOworICAgIGF1dG8gcGFpbnRTaXpl
ID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpOworICAgIGF1dG8gc2NhbGUgPSBm
aWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZWZmZWN0LnNjYWxlKCksIG1fZWZmZWN0LnNj
YWxlKCkgfSk7CiAKLSAgICBGbG9hdFNpemUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJT
Y2FsZSh7IG1fZWZmZWN0LnNjYWxlKCksIG1fZWZmZWN0LnNjYWxlKCkgfSk7CiAgICAgZmxvYXQg
c2NhbGVGb3JDb2xvclggPSBzY2FsZS53aWR0aCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVG
b3JDb2xvclkgPSBzY2FsZS5oZWlnaHQoKSAvIDI1NS4wOwogICAgIGZsb2F0IHNjYWxlZE9mZnNl
dFggPSAwLjUgLSBzY2FsZS53aWR0aCgpICogMC41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2Fy
ZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDc2NDE4MzNiZDBm
NDliYzM2Yjc5YWU1MDJiOTVjMTBkY2QxMGExMjMuLjc5YTNlNzcyMWQwMmMxMzNiYWFhYTc5NmE4
ZmJlZTBkNjQ4YTYwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJv
cFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQxLDE3ICs0MSwxNyBAQCBib29sIEZFRHJv
cFNoYWRvd1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IEZpbHRlckltYWdlVgogICAgIEZsb2F0U2l6ZSBibHVyUmFkaXVzID0gMiAqIGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgpLCBtX2VmZmVjdC5zdGRE
ZXZpYXRpb25ZKCkgfSk7CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IGZpbHRlci5zY2FsZWRCeUZp
bHRlclNjYWxlKHsgbV9lZmZlY3QuZHgoKSwgbV9lZmZlY3QuZHkoKSB9KTsKIAotICAgIEZsb2F0
UmVjdCBkcmF3aW5nUmVnaW9uID0gbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKLSAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbldp
dGhPZmZzZXQoZHJhd2luZ1JlZ2lvbik7Ci0gICAgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQubW92
ZShvZmZzZXQpOworICAgIEZsb2F0UmVjdCBpbnB1dEltYWdlUmVjdCA9IGlucHV0LmFic29sdXRl
SW1hZ2VSZWN0UmVsYXRpdmVUbyhyZXN1bHQpOworICAgIEZsb2F0UmVjdCBpbnB1dEltYWdlUmVj
dFdpdGhPZmZzZXQoaW5wdXRJbWFnZVJlY3QpOworICAgIGlucHV0SW1hZ2VSZWN0V2l0aE9mZnNl
dC5tb3ZlKG9mZnNldCk7CiAKICAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZl
cigpOwogICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsK
KyAgICBhdXRvJiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBy
ZXN1bHRDb250ZXh0LnNldEFscGhhKG1fZWZmZWN0LnNoYWRvd09wYWNpdHkoKSk7Ci0gICAgcmVz
dWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGRyYXdpbmdSZWdpb25XaXRo
T2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwg
aW5wdXRJbWFnZVJlY3RXaXRoT2Zmc2V0KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEp
OwogCiAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9l
ZmZlY3Quc2hhZG93Q29sb3IoKSk7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgRkVEcm9wU2hhZG93
U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVy
SW1hZ2VWCiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5zaXplKCkpLCBtX2VmZmVjdC5zaGFkb3dDb2xv
cigpKTsKICAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVP
cGVyYXRvcjo6RGVzdGluYXRpb25PdmVyKTsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCku
ZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgaW5wdXRJbWFnZVJl
Y3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVB
cHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDFkZmE5N2U5Yzkx
OWU3NzNiMjFmMzU5Mzc3MTAxZjYzODg4N2UwZTguLmRiMTk2YmJiMDUyY2U4OWM0OTAxZGIxNDky
ZWUxYzExMDEwODQwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVH
YXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBG
RUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckltYWcKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVj
dC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJl
Y3QoKSk7CisgICAgYXV0byBlZmZlY3REcmF3aW5nUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdl
UmVjdFJlbGF0aXZlVG8oaW5wdXQpOwogICAgIGlucHV0LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGlmICghbV9lZmZlY3Qu
c3RkRGV2aWF0aW9uWCgpICYmICFtX2VmZmVjdC5zdGREZXZpYXRpb25ZKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3
YXJlQXBwbGllci5jcHAKaW5kZXggYzE5OGY0NjkwMzMzNTRmZmQxYjNlMTUxYjVhMGQ5Njg2NDNk
NTE0ZS4uODgwYTIxMmI5ZjJlOWUxMTkxNmNhMDQ1MDA5MGEyYTA2NDk0Njk3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxp
Z2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgYm9vbCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW4KIAogICAgIGF1dG8mIGRl
c3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKIAot
ICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklu
cHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgYXV0byBlZmZl
Y3REcmF3aW5nUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8oaW5wdXQp
OwogICAgIGlucHV0LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZm
ZWN0RHJhd2luZ1JlY3QpOwogCiAgICAgLy8gRklYTUU6IHN1cHBvcnQga2VybmVsVW5pdExlbmd0
aHMgb3RoZXIgdGhhbiAoMSwxKS4gVGhlIGlzc3VlIGhlcmUgaXMgdGhhdCB0aGUgVzMKQEAgLTQw
OSw3ICs0MDksNyBAQCBib29sIEZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbgogICAgIC8vIG91dHB1dCBmb3Ig
dmFyaW91cyBrZXJuZWxVbml0TGVuZ3RocywgYW5kIEkgYW0gbm90IHN1cmUgdGhleSBhcmUgcmVs
aWFibGUuCiAgICAgLy8gQW55d2F5LCBmZUNvbnZvbHZlTWF0cml4IHNob3VsZCBhbHNvIHVzZSB0
aGUgaW1wbGVtZW50YXRpb24KIAotICAgIEludFNpemUgc2l6ZSA9IEludFNpemUocmVzdWx0LmFi
c29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpKTsKKyAgICBhdXRvIHNpemUgPSBJbnRTaXplKHJlc3Vs
dC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKSk7CiAKICAgICAvLyBGSVhNRTogZG8gc29tZXRo
aW5nIGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUg
VzMgc3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJl
dHVybnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVy
LmNwcAppbmRleCAwMTM4ZjVjMjg4MjBhYzg0YzMwY2RhZjY1ZWYwZDBiYmQxMjZkY2ViLi4yM2Ix
ZmJkNDQ2ZjVkZDdmZGJjMTNiYzMxZDJmZmUyNWVkMjIzYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQzLDcgKzQzLDkgQEAg
Ym9vbCBGRU1lcmdlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBG
aWx0ZXJJbWFnZVZlY3RvciYgaW5wdXQKICAgICAgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQt
PmltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFn
ZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC0+YWJzb2x1dGVJbWFn
ZVJlY3QoKSkpOworCisgICAgICAgIGF1dG8gaW5wdXRJbWFnZVJlY3QgPSBpbnB1dC0+YWJzb2x1
dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKHJlc3VsdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9n
eVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYTBkOTYwYTkyMGIxNWNjNDFmNjEyNjQ5NTEwZjQx
NTczYmIzMjdjZC4uYjQwNTQxMWNhZTk1ZjQzYTUzZDBjYjhlN2Q2YWI1OGI5ZGE0N2Y1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtMTUzLDggKzE1Myw4IEBAIGJvb2wgRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWCiAgICAg
ICAgIHJldHVybiByYWRpdXNYIDwgMCB8fCByYWRpdXNZIDwgMCB8fCAoIXJhZGl1c1ggJiYgIXJh
ZGl1c1kpOwogICAgIH07CiAKLSAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gbV9lZmZl
Y3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VS
ZWN0KCkpOwotICAgIEludFNpemUgcmFkaXVzID0gZmxvb3JlZEludFNpemUoRmxvYXRTaXplKG1f
ZWZmZWN0LnJhZGl1c1goKSwgbV9lZmZlY3QucmFkaXVzWSgpKSk7CisgICAgYXV0byBlZmZlY3RE
cmF3aW5nUmVjdCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8oaW5wdXQpOwor
ICAgIGF1dG8gcmFkaXVzID0gZmxvb3JlZEludFNpemUoRmxvYXRTaXplKG1fZWZmZWN0LnJhZGl1
c1goKSwgbV9lZmZlY3QucmFkaXVzWSgpKSk7CiAKICAgICBpZiAoaXNEZWdlbmVyYXRlKHJhZGl1
cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGlucHV0LmNvcHlQaXhlbEJ1
ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RU9mZnNldFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBm
MGRhNWQyODg4NDc5YTcyZjNjMDlmNmIwYTMzOGY2MWRjNWYyOTY2Li4wMWU4ZjRlNWI4OTU5Mzhj
MTI1YjU3ODYyNmE0YjI1NTk4ODU0MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIGJvb2wgRkVP
ZmZzZXRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBG
aWx0ZXJJbWFnZVZlY3RvCiAgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5wdXRJbWFnZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBtX2Vm
ZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkp
OwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
ZWZmZWN0LmR4KCksIG1fZWZmZWN0LmR5KCkgfSkpOworICAgIEZsb2F0UmVjdCBpbnB1dEltYWdl
UmVjdCA9IGlucHV0LmFic29sdXRlSW1hZ2VSZWN0UmVsYXRpdmVUbyhyZXN1bHQpOworICAgIGlu
cHV0SW1hZ2VSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2VmZmVjdC5k
eCgpLCBtX2VmZmVjdC5keSgpIH0pKTsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgaW5wdXRJbWFnZVJlY3Qp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGls
ZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggMzNjN2EwM2ZmNzdiZTQxYmE1MmE2NjBkNDQzMzc3
Zjg5MTgxZmYxYy4uNTE4MmRmNTFjNWM5NGI2NDA0OWVmZDg2NThjMDVmNThlYzUzNGViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcApAQCAt
NDIsMTAgKzQyLDEwIEBAIGJvb2wgRkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBG
aWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImCiAgICAgYXV0byBpbnB1dElt
YWdlUmVjdCA9IGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCk7CiAgICAgYXV0byByZXN1bHRJbWFn
ZVJlY3QgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKTsKIAotICAgIGF1dG8gdGlsZVJlY3Qg
PSBmaWx0ZXIubWF4RWZmZWN0UmVjdChpbnB1dC5wcmltaXRpdmVTdWJyZWdpb24oKSk7CisgICAg
YXV0byB0aWxlUmVjdCA9IGlucHV0Lm1heEVmZmVjdFJlY3QoZmlsdGVyKTsKICAgICB0aWxlUmVj
dC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKLSAgICBhdXRvIG1heFJlc3VsdFJlY3Qg
PSBmaWx0ZXIubWF4RWZmZWN0UmVjdChyZXN1bHQucHJpbWl0aXZlU3VicmVnaW9uKCkpOworICAg
IGF1dG8gbWF4UmVzdWx0UmVjdCA9IHJlc3VsdC5tYXhFZmZlY3RSZWN0KGZpbHRlcik7CiAgICAg
bWF4UmVzdWx0UmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBhdXRvIHRp
bGVJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZVJlY3Quc2l6ZSgpLCBmaWx0ZXIucmVu
ZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggZTI4
Yjg4ZjkxZDNkMmFlNmI1NWIxYTkxOGJiMTZjMGJiMWVkMDI0Yi4uMGFjNjg5OWMzOWFmZDJjMzM3
ZDQzYTlmMDI0YmQ5NTQ3NzVjYzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgp
CiAgICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7CiAKICAgICBpZiAoZWZmZWN0LT5oYXNS
ZXN1bHQoKSB8fCAobV9maWx0ZXJSZW5kZXJlciAmJiBtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1
bHQoKSkpCi0gICAgICAgIHJldHVybiBlZmZlY3QtPnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhl
bEJ1ZmZlcihJbnRSZWN0IHsgZmlsdGVyUmVnaW9uKCkgfSk7CisgICAgICAgIHJldHVybiBlZmZl
Y3QtPmFic29sdXRlUGFpbnRSZWN0KCkgLSBJbnRQb2ludChmaWx0ZXJSZWdpb24oKS5sb2NhdGlv
bigpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDA3NGRmMTljOWY4ZDJjMjNhMjJm
YjJlYzc0ZDUwZGJkNDNlMTA1MjEuLmVhYWQzODI0ZTAwNzk5ZGIyM2E2ZGM0YzJlNDk2OGJhMzg1
ZWRiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCkBAIC0xMDAsMTQgKzEwMCwxNCBAQCBib29sIEZFSW1hZ2VTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3Rv
cgogICAgICAgICAgICAgYXV0byBzcmNSZWN0ID0gbV9lZmZlY3Quc291cmNlSW1hZ2VSZWN0KCk7
CiAgICAgICAgICAgICBtX2VmZmVjdC5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVj
dChpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRl
ci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIGltYWdlUmVjdCA9IG1fZWZmZWN0LmRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKKyAgICAgICAgICAgIGlt
YWdlUmVjdCA9IEludFJlY3QoaW1hZ2VSZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgp
LmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgaW1hZ2VS
ZWN0LCBzcmNSZWN0KTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VC
dWZmZXI+JiBpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmlt
aXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBpbWFnZVJlY3QubW92ZUJ5KG1fZWZmZWN0LnNv
dXJjZUltYWdlUmVjdCgpLmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgaW1hZ2VSZWN0LnNjYWxl
KGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIGltYWdlUmVjdCA9IG1fZWZmZWN0
LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKKyAgICAgICAg
ICAgIGltYWdlUmVjdCA9IEludFJlY3QoaW1hZ2VSZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdl
UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgaW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICB9CiAgICAgKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>