<?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>221030</bug_id>
          
          <creation_ts>2021-01-27 02:55:53 -0800</creation_ts>
          <short_desc>Make closestSnapOffset a method on ScrollSnapOffsetsInfo</short_desc>
          <delta_ts>2021-07-07 07:17:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</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>145099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722882</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-27 02:55:53 -0800</bug_when>
    <thetext>ScrollSnapOffsetsInfo has all the information it needs to implement this method and this will prevent callers from having to pull out the horizontal and vertical offsets and offset ranges themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722893</commentid>
    <comment_count>1</comment_count>
      <attachid>418521</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-27 03:09:37 -0800</bug_when>
    <thetext>Created attachment 418521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722897</commentid>
    <comment_count>2</comment_count>
      <attachid>418523</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-27 03:33:48 -0800</bug_when>
    <thetext>Created attachment 418523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722904</commentid>
    <comment_count>3</comment_count>
      <attachid>418527</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-27 04:07:16 -0800</bug_when>
    <thetext>Created attachment 418527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723058</commentid>
    <comment_count>4</comment_count>
      <attachid>418527</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-27 10:47:42 -0800</bug_when>
    <thetext>Comment on attachment 418527
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:369
&gt; +template &lt;&gt;
&gt; +LayoutUnit ScrollSnapOffsetsInfo&lt;LayoutUnit&gt;::closestSnapOffset(ScrollEventAxis axis, LayoutUnit scrollDestinationOffset, float velocity, unsigned&amp; activeSnapIndex, Optional&lt;LayoutUnit&gt; originalPositionForDirectionalSnapping) const
&gt; +{

Would be nicer if these returned a std::pair&lt;LayoutUnit, unsigned&gt;

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:370
&gt; +    return ::WebCore::closestSnapOffset(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, activeSnapIndex, originalPositionForDirectionalSnapping);

Is the leading :: really necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723344</commentid>
    <comment_count>5</comment_count>
      <attachid>418636</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-28 04:09:18 -0800</bug_when>
    <thetext>Created attachment 418636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723345</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-28 04:12:47 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 418527 [details]
&gt; Patch

Thanks for the review.

&gt; &gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:369
&gt; &gt; +template &lt;&gt;
&gt; &gt; +LayoutUnit ScrollSnapOffsetsInfo&lt;LayoutUnit&gt;::closestSnapOffset(ScrollEventAxis axis, LayoutUnit scrollDestinationOffset, float velocity, unsigned&amp; activeSnapIndex, Optional&lt;LayoutUnit&gt; originalPositionForDirectionalSnapping) const
&gt; &gt; +{
&gt; 
&gt; Would be nicer if these returned a std::pair&lt;LayoutUnit, unsigned&gt;

I&apos;ve done this and have used c++17 structured binding at all call sites and std::tie in places that I was not able to.

&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:370
&gt; &gt; +    return ::WebCore::closestSnapOffset(offsetsForAxis(axis), offsetRangesForAxis(axis), scrollDestinationOffset, velocity, activeSnapIndex, originalPositionForDirectionalSnapping);
&gt; 
&gt; Is the leading :: really necessary?

I&apos;m not sure, but I went ahead and renamed the free function to closestSnapOffsetWithOffetsAndRanges so that the namespace specifier isn&apos;t necessary at all now. This also makes the code a bit clearer, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723347</commentid>
    <comment_count>7</comment_count>
      <attachid>418638</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-28 04:29:37 -0800</bug_when>
    <thetext>Created attachment 418638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723415</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-28 10:32:33 -0800</bug_when>
    <thetext>Committed r272019: &lt;https://trac.webkit.org/changeset/272019&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418638.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723416</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-28 10:33:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/73714375&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418521</attachid>
            <date>2021-01-27 03:09:37 -0800</date>
            <delta_ts>2021-01-27 03:36:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221030-20210127120935.patch</filename>
            <type>text/plain</type>
            <size>18805</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY0NjQ3ZDc0OWZhNGEw
NjQxZjliMTg0YTBhYTM3Nzg1YjI1ODBjMy4uZmZiMzA5MDcyZTY4MTE4ZWI5YTBlMjcxNDc5NzBk
YWFkYjk5N2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGNsb3Nl
c3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBP
ZmZzZXQgYSBtZXRob2QgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBt
ZXRob2QuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENv
bnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRJbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOgorCiAyMDIxLTAx
LTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRp
YVNhbXBsZUN1cnNvcjo6c3RlcEluT3JkZXJlZE1hcCBjYW4gaGFuZyB3aGVuIHN0ZXBwaW5nIHRv
IHRoZSBlbmQgb2YgYSB0cmFjayB0aGF0IGhhc24ndCBiZWVuIGZ1bGx5IHBhcnNlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkMzE2MTY1MWY3YmMwNDE1YWMxZTFhN2Q5NjZlNDEyZTZiODkyYzMxLi4zN2E2NTk3OWIy
ODBiZWVhZDhkZGVlOWMzN2I0NjYyYzkyOGVkODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIxLTAxLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIGNsb3Nlc3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBjbG9zZXN0U25hcE9mZnNldCBhIG1ldGhvZCBhbmQgY2hhbmdlIGFsbCBjYWxsIHNpdGVz
IHRvIHVzZSB0aGUgbmV3IG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
OgorICAgICAgICAoLVtXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmll
d1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKToKKwog
MjAyMS0wMS0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01h
Y10gTWVkaWFTYW1wbGVDdXJzb3I6OnN0ZXBJbk9yZGVyZWRNYXAgY2FuIGhhbmcgd2hlbiBzdGVw
cGluZyB0byB0aGUgZW5kIG9mIGEgdHJhY2sgdGhhdCBoYXNuJ3QgYmVlbiBmdWxseSBwYXJzZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uY3BwCmluZGV4IGEzMGM1YjcyNzk2MTVlMWY3Nzk0ZDk4ZTAwZGFmYTY3ODVmMzlm
NjMuLjBkMjhkYTVhNmMzYmIwMzg2YzE1Nzg0NWYyMGNmNzQ0Mzg0ZjZlNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcApAQCAtMTYxLDE2ICsxNjEsNiBAQCBzdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9m
ZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdAogICAgIHJl
dHVybiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKIH0KIAotTGF5b3V0VW5pdCBjbG9zZXN0U25h
cE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlv
dXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQm
IGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRGb3JE
aXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldDxMYXlv
dXRVbml0PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBhY3RpdmVTbmFwSW5kZXgsIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7Ci19Ci0KLWZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxmbG9hdD4g
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJldHVybiBjbG9z
ZXN0U25hcE9mZnNldDxmbG9hdD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4LCBvcmlnaW5hbE9m
ZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwotfQotCiBlbnVtIGNsYXNzIEluc2V0T3JPdXRz
ZXQgewogICAgIEluc2V0LAogICAgIE91dHNldApAQCAtMzcxLDYgKzM2MSwxOCBAQCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6
Y29udmVydFVuaXRzKGZsbwogICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlvdXRVbml0
LCBmbG9hdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAordGVtcGxhdGUgPD4KK0xh
eW91dFVuaXQgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KG9mZnNldHNGb3JB
eGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVj
dGlvbmFsU25hcHBpbmcpOworfQorCit0ZW1wbGF0ZSA8PgorZmxvYXQgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZs
b2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFj
dGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKSBjb25zdAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNsb3Nlc3RTbmFw
T2Zmc2V0KG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwgb3JpZ2lu
YWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworfQorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkYWIxZjhmYWJjMDg5YjkxNWJj
YTgyZDYxNGFiODc2YTZlMzJiNDQzLi5jODdmNDU5YzAyY2IzMWFhMzQ2MGU5Mjk2NzUxZDEyZmNm
YzVhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtODAsMTMgKzgwLDE4IEBAIHN0cnVjdCBTY3JvbGxTbmFw
T2Zmc2V0c0luZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRwdXRUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFQgY2xvc2Vz
dFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBUIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBm
bG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8VD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0
OwogfTsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0VW5pdHMoZmxv
YXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwordGVtcGxhdGUgPD4KK1dFQkNPUkVf
RVhQT1JUIGZsb2F0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zm
c2V0KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxmbG9hdD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgogU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3Q7Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5pdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKIAogY29uc3QgdW5zaWduZWQg
aW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwogCkBAIC05NSw5ICsxMDAsNiBAQCBj
b25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAvLyB0aGUg
c2Nyb2xsaW5nIGNvbnRhaW5lcidzIGJvcmRlciBib3guCiB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRz
Rm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBSZW5kZXJCb3gmIHNjcm9s
bGluZ0VsZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3JvbGxpbmdFbGVtZW50U3R5bGUs
IExheW91dFJlY3Qgdmlld3BvcnRSZWN0SW5Cb3JkZXJCb3hDb29yZGluYXRlcyk7CiAKLVdFQkNP
UkVfRVhQT1JUIExheW91dFVuaXQgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPExheW91
dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RG
OjpudWxsb3B0KTsKLVdFQkNPUkVfRVhQT1JUIGZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxm
bG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxv
cHQpOwotCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCmluZGV4IDc3MTkxNjMxMzRlOWFkOTRjNmQ0Mjg4NjIxZGRiNzdiNjhhZDRj
YmIuLjc1MTY2MjVjY2YzNTI2MmI5YzVlNGNmOTMyMzQwOGIwZGJjMGU0NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtODg0
LDcgKzg4NCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzCiAgICAgTGF5b3V0VW5pdCBjbGFt
cGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZh
Y3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkpLCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwogCiAgICAg
dW5zaWduZWQgYWN0aXZlSW5kZXggPSAwOwotICAgIGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcyksIHNuYXBTdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9y
QXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZlSW5kZXgpOworICAgIHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIGNsYW1wZWRPZmZzZXQs
IDAsIGFjdGl2ZUluZGV4KTsKIAogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CkBAIC05MDcsNyArOTA3LDcg
QEAgZmxvYXQgU2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGZsb2F0IGRlc3QKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmln
aW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFsT2Zmc2V0Lmhhc1ZhbHVl
KCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cyA9IExheW91dFVuaXQoKm9y
aWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIExheW91dFVu
aXQgb2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhp
cyhheGlzKSwgc25hcFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBMYXlvdXRV
bml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxv
Y2l0eSwgc25hcEluZGV4LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpOworICAgIExheW91
dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZz
ZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2Fs
ZUZhY3RvcigpKSwgdmVsb2NpdHksIHNuYXBJbmRleCwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVu
aXRzKTsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCmluZGV4IDY0MDA5OTk1MWRkNzkxOWNhNzVkMTNlNWEwZTk4ZWZlMjRj
MjJjMGMuLjczMjk4NGIxOGJiNjg1NDlmZjNmOWZkMGNmZWJkODM2OWJmYTllNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuaApAQCAtNjIsMTAgKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXhpcyA9
PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyA6IG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNl
dFJhbmdlczsKICAgICB9CiAKLSAgICB2b2lkIHNldFNuYXBPZmZzZXRJbmZvKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgbmV3SW5mbykKLSAgICB7Ci0gICAgICAgIG1f
c25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsKLSAgICB9CisgICAgY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c25hcE9mZnNldHNJbmZvOyB9CisgICAgdm9pZCBzZXRTbmFwT2Zmc2V0SW5mbyhjb25zdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIG5ld0luZm8pIHsgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBuZXdJbmZvOyB9CiAKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4m
IHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
JiBzbmFwT2Zmc2V0UmFuZ2VzKQogICAgIHsKQEAgLTEwMiw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwogCiBwcml2YXRl
OgotICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQg
c3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9h
dCBkZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3Q7CisgICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBtYXhTY3Jv
bGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0
IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcElu
ZGV4KSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25h
cFN0YXRlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLm1tCmluZGV4IDIzNWIwYzQ1NWE4ZjQzZTFmYjRjN2I2MWM1
ZDM3NzdiOTk5YmEyZmQuLmMzYWU0Njg3NzcwNzYxYjMxMTVmNDg5ZWExMTdjMmM5ZWNmNGNlNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmlt
YXRvclN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLm1tCkBAIC01MSw4ICs1MSw4IEBAIHZvaWQgU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBj
b25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbFRh
cmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgp
OwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldCht
X3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMsIG1fc25hcE9mZnNldHNJbmZv
Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3Bv
cnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
d2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5k
ZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cywgbV9zbmFwT2Zmc2V0c0lu
Zm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdl
dC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0aXZlU25h
cEluZGV4WSk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udGVudFNpemUud2lkdGgoKSAt
IHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xs
VGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZl
U25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0
YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnRlbnRTaXplLmhlaWdodCgp
IC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSwgbV9h
Y3RpdmVTbmFwSW5kZXhZKTsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0UmV0YXJnZXRl
ZFNjcm9sbE9mZnNldCh7IHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkgfSk7CiAgICAgbV9z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX2N1cnJlbnRTdGF0ZSA9IHN0
YXRlOwpAQCAtOTEsMTggKzkxLDEyIEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGU6OmN1cnJlbnRBbmltYXRlZFNjcm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlvCiAgICAgcmV0
dXJuIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVs
YXBzZWRUaW1lKTsKIH0KIAotZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9m
ZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMs
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRS
YW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHBy
ZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2ln
bmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZs
b2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9m
ZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRB
Y3RpdmVTbmFwSW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkg
ewotICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4Owot
ICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1heFNjcm9sbE9m
ZnNldCk7Ci0gICAgfQotCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZz
ZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFVuaXQocHJlZGljdGVkT2Zm
c2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOwotICAg
IGZsb2F0IG1pbmltdW1UYXJnZXRPZmZzZXQgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc25hcE9mZnNl
dHMuZmlyc3QoKSk7Ci0gICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWluPGZs
b2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKSk7Ci0gICAgdGFyZ2V0T2Zm
c2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBtaW5pbXVtVGFyZ2V0T2Zmc2V0LCBt
YXhpbXVtVGFyZ2V0T2Zmc2V0KTsKLSAgICByZXR1cm4gcGFnZVNjYWxlICogdGFyZ2V0T2Zmc2V0
OworICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IG1fc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFw
T2Zmc2V0KGF4aXMsIExheW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5p
dGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOworICAgIGlmICh0YXJnZXRPZmZzZXQgIT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRhcmdl
dE9mZnNldDsKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1heFNj
cm9sbE9mZnNldCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMWJi
MDk1MDg1ZDIzNmVlNDViN2M3MzkwZDQ4MTlmODM4NzU2OTRmMS4uMjM2ZTg4YWE5ZjdlZDc3YjQ5
MDYwN2E4N2Y4NjZjMTZlNDI4MTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjI1LDExICsyMjUsMTAgQEAg
ZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRG
b3JNYWluRnJhbWVTY3JvbGxpbmcoU2MKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1f
c2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0Zy
YW1lU2Nyb2xsaW5nTm9kZSgpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
KiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUqPihyb290KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9
IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlz
KTsKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNl
dFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRSYW5n
ZXNGb3JBeGlzKGF4aXMpOworICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRJbmZvID0gcm9vdFNj
cm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xs
RGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpOwotICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2Vz
dFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjYWxlZFNjcm9sbERl
c3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKKyAgICBmbG9hdCByYXdDbG9zZXN0
U25hcE9mZnNldCA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBzY2Fs
ZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRleCk7CiAgICAgcmV0dXJu
IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNj
YWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ZWQyMWQ3ZGRhYzg3NWIzYTA1ZGNkZDQ5
M2ZiMzQ2MjBkZjQ1ZGIwLi45MWE0ZmZlMGQ4ZDcwOWU4MjA2NjQxYmIzOTlmYmU0NWU4YWExYzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xMDYsMTkgKzEwNiwxOCBAQCAtICh2b2lkKXNjcm9sbFZp
ZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5
OihDR1BvaQogICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9z
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpOwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9z
aXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CiAKLSAgICBjb25zdCBhdXRvJiBob3Jpem9udGFs
ID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0
c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHM7Ci0gICAgaWYgKCFob3Jpem9udGFsLmlzRW1w
dHkoKSkgeworICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRJbmZvID0gX3Njcm9sbGluZ1RyZWVO
b2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKTsKKyAgICBpZiAo
IXNuYXBPZmZzZXRJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9
IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAg
ICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gc25hcE9mZnNldEluZm8uY2xvc2Vz
dFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0
LCB2ZWxvY2l0eS54LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChpbmRl
eCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdl
dCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29u
dGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKICAgICB9CiAKLSAgICBjb25z
dCBhdXRvJiB2ZXJ0aWNhbCA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdO
b2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0czsKLSAgICBpZiAoIXZl
cnRpY2FsLmlzRW1wdHkoKSkgeworICAgIGlmICghc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25h
cE9mZnNldHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBm
bG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldCh2
ZXJ0aWNhbCwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFw
T2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsVGFyZ2V0LCB2
ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9
IHNuYXBPZmZzZXRJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2
ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAg
ICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247Cg==
</data>
<flag name="commit-queue"
          id="436513"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418523</attachid>
            <date>2021-01-27 03:33:48 -0800</date>
            <delta_ts>2021-01-27 04:07:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221030-20210127123347.patch</filename>
            <type>text/plain</type>
            <size>18824</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY0NjQ3ZDc0OWZhNGEw
NjQxZjliMTg0YTBhYTM3Nzg1YjI1ODBjMy4uZmZiMzA5MDcyZTY4MTE4ZWI5YTBlMjcxNDc5NzBk
YWFkYjk5N2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGNsb3Nl
c3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBP
ZmZzZXQgYSBtZXRob2QgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBt
ZXRob2QuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENv
bnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRJbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOgorCiAyMDIxLTAx
LTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRp
YVNhbXBsZUN1cnNvcjo6c3RlcEluT3JkZXJlZE1hcCBjYW4gaGFuZyB3aGVuIHN0ZXBwaW5nIHRv
IHRoZSBlbmQgb2YgYSB0cmFjayB0aGF0IGhhc24ndCBiZWVuIGZ1bGx5IHBhcnNlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkMzE2MTY1MWY3YmMwNDE1YWMxZTFhN2Q5NjZlNDEyZTZiODkyYzMxLi4zN2E2NTk3OWIy
ODBiZWVhZDhkZGVlOWMzN2I0NjYyYzkyOGVkODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIxLTAxLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIGNsb3Nlc3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBjbG9zZXN0U25hcE9mZnNldCBhIG1ldGhvZCBhbmQgY2hhbmdlIGFsbCBjYWxsIHNpdGVz
IHRvIHVzZSB0aGUgbmV3IG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
OgorICAgICAgICAoLVtXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmll
d1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKToKKwog
MjAyMS0wMS0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01h
Y10gTWVkaWFTYW1wbGVDdXJzb3I6OnN0ZXBJbk9yZGVyZWRNYXAgY2FuIGhhbmcgd2hlbiBzdGVw
cGluZyB0byB0aGUgZW5kIG9mIGEgdHJhY2sgdGhhdCBoYXNuJ3QgYmVlbiBmdWxseSBwYXJzZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uY3BwCmluZGV4IGEzMGM1YjcyNzk2MTVlMWY3Nzk0ZDk4ZTAwZGFmYTY3ODVmMzlm
NjMuLjBkMjhkYTVhNmMzYmIwMzg2YzE1Nzg0NWYyMGNmNzQ0Mzg0ZjZlNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcApAQCAtMTYxLDE2ICsxNjEsNiBAQCBzdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9m
ZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdAogICAgIHJl
dHVybiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKIH0KIAotTGF5b3V0VW5pdCBjbG9zZXN0U25h
cE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlv
dXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQm
IGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRGb3JE
aXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldDxMYXlv
dXRVbml0PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBhY3RpdmVTbmFwSW5kZXgsIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7Ci19Ci0KLWZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxmbG9hdD4g
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJldHVybiBjbG9z
ZXN0U25hcE9mZnNldDxmbG9hdD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4LCBvcmlnaW5hbE9m
ZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwotfQotCiBlbnVtIGNsYXNzIEluc2V0T3JPdXRz
ZXQgewogICAgIEluc2V0LAogICAgIE91dHNldApAQCAtMzcxLDYgKzM2MSwxOCBAQCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6
Y29udmVydFVuaXRzKGZsbwogICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlvdXRVbml0
LCBmbG9hdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAordGVtcGxhdGUgPD4KK0xh
eW91dFVuaXQgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KG9mZnNldHNGb3JB
eGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVj
dGlvbmFsU25hcHBpbmcpOworfQorCit0ZW1wbGF0ZSA8PgorZmxvYXQgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZs
b2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFj
dGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKSBjb25zdAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNsb3Nlc3RTbmFw
T2Zmc2V0KG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwgb3JpZ2lu
YWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworfQorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkYWIxZjhmYWJjMDg5YjkxNWJj
YTgyZDYxNGFiODc2YTZlMzJiNDQzLi5jODdmNDU5YzAyY2IzMWFhMzQ2MGU5Mjk2NzUxZDEyZmNm
YzVhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtODAsMTMgKzgwLDE4IEBAIHN0cnVjdCBTY3JvbGxTbmFw
T2Zmc2V0c0luZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRwdXRUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFQgY2xvc2Vz
dFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBUIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBm
bG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8VD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0
OwogfTsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0VW5pdHMoZmxv
YXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwordGVtcGxhdGUgPD4KK1dFQkNPUkVf
RVhQT1JUIGZsb2F0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zm
c2V0KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxmbG9hdD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgogU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3Q7Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5pdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKIAogY29uc3QgdW5zaWduZWQg
aW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwogCkBAIC05NSw5ICsxMDAsNiBAQCBj
b25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAvLyB0aGUg
c2Nyb2xsaW5nIGNvbnRhaW5lcidzIGJvcmRlciBib3guCiB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRz
Rm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBSZW5kZXJCb3gmIHNjcm9s
bGluZ0VsZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3JvbGxpbmdFbGVtZW50U3R5bGUs
IExheW91dFJlY3Qgdmlld3BvcnRSZWN0SW5Cb3JkZXJCb3hDb29yZGluYXRlcyk7CiAKLVdFQkNP
UkVfRVhQT1JUIExheW91dFVuaXQgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPExheW91
dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RG
OjpudWxsb3B0KTsKLVdFQkNPUkVfRVhQT1JUIGZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxm
bG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxv
cHQpOwotCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCmluZGV4IDc3MTkxNjMxMzRlOWFkOTRjNmQ0Mjg4NjIxZGRiNzdiNjhhZDRj
YmIuLjc1MTY2MjVjY2YzNTI2MmI5YzVlNGNmOTMyMzQwOGIwZGJjMGU0NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtODg0
LDcgKzg4NCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzCiAgICAgTGF5b3V0VW5pdCBjbGFt
cGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZh
Y3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkpLCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwogCiAgICAg
dW5zaWduZWQgYWN0aXZlSW5kZXggPSAwOwotICAgIGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcyksIHNuYXBTdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9y
QXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZlSW5kZXgpOworICAgIHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIGNsYW1wZWRPZmZzZXQs
IDAsIGFjdGl2ZUluZGV4KTsKIAogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CkBAIC05MDcsNyArOTA3LDcg
QEAgZmxvYXQgU2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGZsb2F0IGRlc3QKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmln
aW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFsT2Zmc2V0Lmhhc1ZhbHVl
KCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cyA9IExheW91dFVuaXQoKm9y
aWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIExheW91dFVu
aXQgb2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhp
cyhheGlzKSwgc25hcFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBMYXlvdXRV
bml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxv
Y2l0eSwgc25hcEluZGV4LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpOworICAgIExheW91
dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZz
ZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2Fs
ZUZhY3RvcigpKSwgdmVsb2NpdHksIHNuYXBJbmRleCwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVu
aXRzKTsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCmluZGV4IDY0MDA5OTk1MWRkNzkxOWNhNzVkMTNlNWEwZTk4ZWZlMjRj
MjJjMGMuLjczMjk4NGIxOGJiNjg1NDlmZjNmOWZkMGNmZWJkODM2OWJmYTllNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuaApAQCAtNjIsMTAgKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXhpcyA9
PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyA6IG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNl
dFJhbmdlczsKICAgICB9CiAKLSAgICB2b2lkIHNldFNuYXBPZmZzZXRJbmZvKGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgbmV3SW5mbykKLSAgICB7Ci0gICAgICAgIG1f
c25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsKLSAgICB9CisgICAgY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c25hcE9mZnNldHNJbmZvOyB9CisgICAgdm9pZCBzZXRTbmFwT2Zmc2V0SW5mbyhjb25zdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIG5ld0luZm8pIHsgbV9zbmFwT2Zmc2V0c0lu
Zm8gPSBuZXdJbmZvOyB9CiAKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4m
IHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
JiBzbmFwT2Zmc2V0UmFuZ2VzKQogICAgIHsKQEAgLTEwMiw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwogCiBwcml2YXRl
OgotICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQg
c3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9h
dCBkZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3Q7CisgICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBtYXhTY3Jv
bGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0
IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcElu
ZGV4KSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25h
cFN0YXRlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLm1tCmluZGV4IDIzNWIwYzQ1NWE4ZjQzZTFmYjRjN2I2MWM1
ZDM3NzdiOTk5YmEyZmQuLmMzYWU0Njg3NzcwNzYxYjMxMTVmNDg5ZWExMTdjMmM5ZWNmNGNlNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmlt
YXRvclN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLm1tCkBAIC01MSw4ICs1MSw4IEBAIHZvaWQgU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBj
b25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbFRh
cmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgp
OwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldCht
X3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMsIG1fc25hcE9mZnNldHNJbmZv
Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3Bv
cnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
d2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5k
ZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cywgbV9zbmFwT2Zmc2V0c0lu
Zm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdl
dC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0aXZlU25h
cEluZGV4WSk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udGVudFNpemUud2lkdGgoKSAt
IHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xs
VGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZl
U25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0
YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnRlbnRTaXplLmhlaWdodCgp
IC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSwgbV9h
Y3RpdmVTbmFwSW5kZXhZKTsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0UmV0YXJnZXRl
ZFNjcm9sbE9mZnNldCh7IHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkgfSk7CiAgICAgbV9z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX2N1cnJlbnRTdGF0ZSA9IHN0
YXRlOwpAQCAtOTEsMTggKzkxLDEyIEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGU6OmN1cnJlbnRBbmltYXRlZFNjcm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlvCiAgICAgcmV0
dXJuIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVs
YXBzZWRUaW1lKTsKIH0KIAotZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9m
ZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMs
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRS
YW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHBy
ZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2ln
bmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZs
b2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9m
ZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRB
Y3RpdmVTbmFwSW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkg
ewotICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4Owot
ICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1heFNjcm9sbE9m
ZnNldCk7Ci0gICAgfQotCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZz
ZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFVuaXQocHJlZGljdGVkT2Zm
c2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOwotICAg
IGZsb2F0IG1pbmltdW1UYXJnZXRPZmZzZXQgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc25hcE9mZnNl
dHMuZmlyc3QoKSk7Ci0gICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWluPGZs
b2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKSk7Ci0gICAgdGFyZ2V0T2Zm
c2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBtaW5pbXVtVGFyZ2V0T2Zmc2V0LCBt
YXhpbXVtVGFyZ2V0T2Zmc2V0KTsKLSAgICByZXR1cm4gcGFnZVNjYWxlICogdGFyZ2V0T2Zmc2V0
OworICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IG1fc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFw
T2Zmc2V0KGF4aXMsIExheW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5p
dGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOworICAgIGlmICh0YXJnZXRPZmZzZXQgIT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRhcmdl
dE9mZnNldDsKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1heFNj
cm9sbE9mZnNldCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMWJi
MDk1MDg1ZDIzNmVlNDViN2M3MzkwZDQ4MTlmODM4NzU2OTRmMS4uY2E5YzBlNTc3NjEzYTFlNjdj
ZjNkNWIwZmFlZjY0MDkxZjVjNWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjI1LDExICsyMjUsMTAgQEAg
ZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRG
b3JNYWluRnJhbWVTY3JvbGxpbmcoU2MKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1f
c2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0Zy
YW1lU2Nyb2xsaW5nTm9kZSgpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
KiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUqPihyb290KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9
IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlz
KTsKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNl
dFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRSYW5n
ZXNGb3JBeGlzKGF4aXMpOworICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzSW5mbyA9IHJvb3RT
Y3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGZsb2F0IHNjYWxlZFNjcm9s
bERlc3RpbmF0aW9uID0gc2Nyb2xsRGVzdGluYXRpb24gLyBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5
ZWRDb250ZW50U2NhbGUoKTsKLSAgICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNldCA9IGNsb3Nl
c3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY2FsZWRTY3JvbGxE
ZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRleCk7CisgICAgZmxvYXQgcmF3Q2xvc2Vz
dFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgc2Nh
bGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJyZW50SW5kZXgpOwogICAgIHJldHVy
biByYXdDbG9zZXN0U25hcE9mZnNldCAqIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRT
Y2FsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggOGVkMjFkN2RkYWM4NzViM2EwNWRjZGQ0
OTNmYjM0NjIwZGY0NWRiMC4uNmFjYzBhZGI2ZjhhNWVmMTY0YTVjZjA1NDJlZTZkMDkzYzgyMmQ1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA2LDE5ICsxMDYsMTggQEAgLSAodm9pZClzY3JvbGxW
aWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0
eTooQ0dQb2kKICAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKTsKICAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBv
c2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0gICAgY29uc3QgYXV0byYgaG9yaXpvbnRh
bCA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNl
dHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIGlmICghaG9yaXpvbnRhbC5pc0Vt
cHR5KCkpIHsKKyAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0SW5mbyA9IF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCk7CisgICAgaWYg
KCFzbmFwT2Zmc2V0SW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24g
PSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldChob3Jpem9udGFsLCBfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7Cisg
ICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRJbmZvLmNsb3Nl
c3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgaG9yaXpv
bnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6
b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAg
IHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQog
Ci0gICAgY29uc3QgYXV0byYgdmVydGljYWwgPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHM7Ci0g
ICAgaWYgKCF2ZXJ0aWNhbC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby52
ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleDsK
LSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29yZTo6Y2xvc2VzdFNu
YXBPZmZzZXQodmVydGljYWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdO
b2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNh
bFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFw
UG9zaXRpb24gPSBzbmFwT2Zmc2V0SW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgp
OwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRp
Y2FsVGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6
ZS5oZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFs
U25hcFBvc2l0aW9uOwo=
</data>
<flag name="commit-queue"
          id="436520"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418527</attachid>
            <date>2021-01-27 04:07:16 -0800</date>
            <delta_ts>2021-01-28 04:09:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221030-20210127130714.patch</filename>
            <type>text/plain</type>
            <size>19692</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY0NjQ3ZDc0OWZhNGEw
NjQxZjliMTg0YTBhYTM3Nzg1YjI1ODBjMy4uZmZiMzA5MDcyZTY4MTE4ZWI5YTBlMjcxNDc5NzBk
YWFkYjk5N2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGNsb3Nl
c3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBP
ZmZzZXQgYSBtZXRob2QgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBt
ZXRob2QuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENv
bnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRJbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOgorCiAyMDIxLTAx
LTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRp
YVNhbXBsZUN1cnNvcjo6c3RlcEluT3JkZXJlZE1hcCBjYW4gaGFuZyB3aGVuIHN0ZXBwaW5nIHRv
IHRoZSBlbmQgb2YgYSB0cmFjayB0aGF0IGhhc24ndCBiZWVuIGZ1bGx5IHBhcnNlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkMzE2MTY1MWY3YmMwNDE1YWMxZTFhN2Q5NjZlNDEyZTZiODkyYzMxLi4zN2E2NTk3OWIy
ODBiZWVhZDhkZGVlOWMzN2I0NjYyYzkyOGVkODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIxLTAxLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIGNsb3Nlc3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBjbG9zZXN0U25hcE9mZnNldCBhIG1ldGhvZCBhbmQgY2hhbmdlIGFsbCBjYWxsIHNpdGVz
IHRvIHVzZSB0aGUgbmV3IG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
OgorICAgICAgICAoLVtXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmll
d1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKToKKwog
MjAyMS0wMS0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01h
Y10gTWVkaWFTYW1wbGVDdXJzb3I6OnN0ZXBJbk9yZGVyZWRNYXAgY2FuIGhhbmcgd2hlbiBzdGVw
cGluZyB0byB0aGUgZW5kIG9mIGEgdHJhY2sgdGhhdCBoYXNuJ3QgYmVlbiBmdWxseSBwYXJzZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uY3BwCmluZGV4IGEzMGM1YjcyNzk2MTVlMWY3Nzk0ZDk4ZTAwZGFmYTY3ODVmMzlm
NjMuLjBiOTRjNzgzZWU5MzM0MzY0ZDViMWRkZWFkNjk4NzA4MjY1NTNmNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcApAQCAtMTAyLDkgKzEwMiwxMiBAQCBzdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25h
cE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxMYXlvdXRUeQogdGVtcGxh
dGUgPHR5cGVuYW1lIExheW91dFR5cGU+CiBzdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9m
ZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRU
eXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFj
dGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nKQogewotICAgIEFTU0VSVChzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAg
IGFjdGl2ZVNuYXBJbmRleCA9IDA7CisgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewor
ICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAg
ICByZXR1cm4gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7CisgICAgfQogCisgICAgYWN0aXZlU25h
cEluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBsb3dlclNuYXBPZmZzZXRSYW5nZUluZGV4OwogICAg
IHVuc2lnbmVkIHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXg7CiAgICAgaW5kaWNlc09mTmVhcmVz
dFNuYXBPZmZzZXRSYW5nZXM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNu
YXBPZmZzZXRSYW5nZXMsIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXgsIHVwcGVyU25hcE9mZnNl
dFJhbmdlSW5kZXgpOwpAQCAtMTYxLDE2ICsxNjQsNiBAQCBzdGF0aWMgTGF5b3V0VHlwZSBjbG9z
ZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25z
dAogICAgIHJldHVybiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKIH0KIAotTGF5b3V0VW5pdCBj
bG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBj
b25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFu
Z2VzLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
dW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxP
ZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJldHVybiBjbG9zZXN0U25hcE9m
ZnNldDxMYXlvdXRVbml0PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2Nyb2xsRGVz
dGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBhY3RpdmVTbmFwSW5kZXgsIG9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7Ci19Ci0KLWZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25h
bDxmbG9hdD4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIHJl
dHVybiBjbG9zZXN0U25hcE9mZnNldDxmbG9hdD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5n
ZXMsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4LCBv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwotfQotCiBlbnVtIGNsYXNzIElu
c2V0T3JPdXRzZXQgewogICAgIEluc2V0LAogICAgIE91dHNldApAQCAtMzcxLDYgKzM2NCwxOCBA
QCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0Pjo6Y29udmVydFVuaXRzKGZsbwogICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxM
YXlvdXRVbml0LCBmbG9hdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAordGVtcGxh
dGUgPD4KK0xheW91dFVuaXQgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+OjpjbG9z
ZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgs
IE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBw
aW5nKSBjb25zdAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KG9m
ZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwgb3JpZ2luYWxQb3NpdGlv
bkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworfQorCit0ZW1wbGF0ZSA8PgorZmxvYXQgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5z
aWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25G
b3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAoreworICAgIHJldHVybiA6OldlYkNvcmU6OmNs
b3Nlc3RTbmFwT2Zmc2V0KG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlz
KGF4aXMpLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRl
eCwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworfQorCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCBkYWIxZjhmYWJj
MDg5YjkxNWJjYTgyZDYxNGFiODc2YTZlMzJiNDQzLi5jODdmNDU5YzAyY2IzMWFhMzQ2MGU5Mjk2
NzUxZDEyZmNmYzVhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtODAsMTMgKzgwLDE4IEBAIHN0cnVjdCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91
dHB1dFR5cGU+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRwdXRUeXBlPiBjb252ZXJ0VW5pdHMo
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFQgY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBUIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9u
YWw8VD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxv
cHQpIGNvbnN0OwogfTsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxMYXlvdXRVbml0PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0
VW5pdHMoZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwordGVtcGxhdGUgPD4K
K1dFQkNPUkVfRVhQT1JUIGZsb2F0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nl
c3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBPcHRpb25hbDxm
bG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiB0
ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgogU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5p
dCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQg
dmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFsPExheW91dFVuaXQ+
IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKIAogY29uc3Qg
dW5zaWduZWQgaW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwogCkBAIC05NSw5ICsx
MDAsNiBAQCBjb25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7
CiAvLyB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lcidzIGJvcmRlciBib3guCiB2b2lkIHVwZGF0ZVNu
YXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBSZW5kZXJC
b3gmIHNjcm9sbGluZ0VsZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3JvbGxpbmdFbGVt
ZW50U3R5bGUsIExheW91dFJlY3Qgdmlld3BvcnRSZWN0SW5Cb3JkZXJCb3hDb29yZGluYXRlcyk7
CiAKLVdFQkNPUkVfRVhQT1JUIExheW91dFVuaXQgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVj
dG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgs
IE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBw
aW5nID0gV1RGOjpudWxsb3B0KTsKLVdFQkNPUkVfRVhQT1JUIGZsb2F0IGNsb3Nlc3RTbmFwT2Zm
c2V0KGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4LCBP
cHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBX
VEY6Om51bGxvcHQpOwotCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IDc3MTkxNjMxMzRlOWFkOTRjNmQ0Mjg4NjIxZGRi
NzdiNjhhZDRjYmIuLjc1MTY2MjVjY2YzNTI2MmI5YzVlNGNmOTMyMzQwOGIwZGJjMGU0NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5t
bQpAQCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNj
cm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzCiAgICAgTGF5b3V0
VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5b3V0VW5pdChvZmZzZXQg
LyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkpLCBzbmFwT2Zmc2V0cy5sYXN0KCkp
OwogCiAgICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSAwOwotICAgIGNsb3Nlc3RTbmFwT2Zmc2V0
KHNuYXBTdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcyksIHNuYXBTdGF0ZS5zbmFwT2Zmc2V0
UmFuZ2VzRm9yQXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZlSW5kZXgpOworICAg
IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIGNsYW1w
ZWRPZmZzZXQsIDAsIGFjdGl2ZUluZGV4KTsKIAogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CkBAIC05MDcs
NyArOTA3LDcgQEAgZmxvYXQgU2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24oU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IGRlc3QKICAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFsT2Zmc2V0
Lmhhc1ZhbHVlKCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cyA9IExheW91
dFVuaXQoKm9yaWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOwotICAg
IExheW91dFVuaXQgb2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNuYXBPZmZz
ZXRzRm9yQXhpcyhheGlzKSwgc25hcFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMp
LCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9y
KCkpLCB2ZWxvY2l0eSwgc25hcEluZGV4LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpOwor
ICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2Vz
dFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9mZnNldCAvIG1fY2xpZW50
LnBhZ2VTY2FsZUZhY3RvcigpKSwgdmVsb2NpdHksIHNuYXBJbmRleCwgb3JpZ2luYWxPZmZzZXRJ
bkxheW91dFVuaXRzKTsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFj
dG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCmluZGV4IDY0MDA5OTk1MWRkNzkxOWNhNzVkMTNlNWEw
ZTk4ZWZlMjRjMjJjMGMuLjczMjk4NGIxOGJiNjg1NDlmZjNmOWZkMGNmZWJkODM2OWJmYTllNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGUuaApAQCAtNjIsMTAgKzYyLDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRzSW5m
by5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA6IG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlczsKICAgICB9CiAKLSAgICB2b2lkIHNldFNuYXBPZmZzZXRJbmZvKGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgbmV3SW5mbykKLSAgICB7Ci0g
ICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsKLSAgICB9CisgICAgY29uc3QgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9CisgICAgdm9pZCBzZXRTbmFwT2Zmc2V0SW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIG5ld0luZm8pIHsgbV9zbmFw
T2Zmc2V0c0luZm8gPSBuZXdJbmZvOyB9CiAKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzQW5kUG9z
aXRpb25SYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5
b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5
b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzKQogICAgIHsKQEAgLTEwMiw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwog
CiBwcml2YXRlOgotICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNl
dCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNj
YWxlLCBmbG9hdCBkZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3Q7Cisg
ICAgZmxvYXQgdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9h
dCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0
aXZlU25hcEluZGV4KSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUo
U2Nyb2xsU25hcFN0YXRlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xs
U25hcFN0YXRlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsRGVsdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tCmluZGV4IDIzNWIwYzQ1NWE4ZjQzZTFm
YjRjN2I2MWM1ZDM3NzdiOTk5YmEyZmQuLmMzYWU0Njg3NzcwNzYxYjMxMTVmNDg5ZWExMTdjMmM5
ZWNmNGNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tCkBAIC01MSw4ICs1MSw4IEBAIHZvaWQgU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRl
IHN0YXRlLCBjb25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxP
ZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBhdXRvIHByZWRpY3Rl
ZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0ZWREZXN0aW5hdGlv
bk9mZnNldCgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldChtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMsIG1fc25hcE9m
ZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS53aWR0aCgp
IC0gdmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3Jv
bGxUYXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3Rp
dmVTbmFwSW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9y
U3RhcnRPZmZzZXQobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cywgbV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBjb250ZW50U2l6ZS5oZWlnaHQo
KSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNj
cm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1f
YWN0aXZlU25hcEluZGV4WSk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNl
dEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udGVudFNpemUu
d2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGlj
dGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCks
IG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9m
ZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnRlbnRTaXpl
LmhlaWdodCgpIC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJl
ZGljdGVkU2Nyb2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWln
aHQoKSwgbV9hY3RpdmVTbmFwSW5kZXhZKTsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0
UmV0YXJnZXRlZFNjcm9sbE9mZnNldCh7IHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkgfSk7
CiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX2N1cnJlbnRT
dGF0ZSA9IHN0YXRlOwpAQCAtOTEsMTggKzkxLDEyIEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRlZFNjcm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlv
CiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBz
ZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAotZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6
OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25h
cE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNu
YXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVs
dGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHBy
ZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2ln
bmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlz
RW1wdHkoKSkgewotICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNl
dEluZGV4OwotICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1h
eFNjcm9sbE9mZnNldCk7Ci0gICAgfQotCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gY2xvc2Vz
dFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFVuaXQocHJl
ZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5k
ZXgpOwotICAgIGZsb2F0IG1pbmltdW1UYXJnZXRPZmZzZXQgPSBzdGQ6Om1heDxmbG9hdD4oMCwg
c25hcE9mZnNldHMuZmlyc3QoKSk7Ci0gICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0
ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKSk7Ci0gICAg
dGFyZ2V0T2Zmc2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBtaW5pbXVtVGFyZ2V0
T2Zmc2V0LCBtYXhpbXVtVGFyZ2V0T2Zmc2V0KTsKLSAgICByZXR1cm4gcGFnZVNjYWxlICogdGFy
Z2V0T2Zmc2V0OworICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IG1fc25hcE9mZnNldHNJbmZvLmNs
b3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNj
YWxlKSwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOworICAgIGlmICh0YXJnZXRP
ZmZzZXQgIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgcmV0dXJuIHBhZ2VTY2Fs
ZSAqIHRhcmdldE9mZnNldDsKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQs
IDAsIG1heFNjcm9sbE9mZnNldCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0K
aW5kZXggMWJiMDk1MDg1ZDIzNmVlNDViN2M3MzkwZDQ4MTlmODM4NzU2OTRmMS4uY2E5YzBlNTc3
NjEzYTFlNjdjZjNkNWIwZmFlZjY0MDkxZjVjNWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjI1LDExICsy
MjUsMTAgQEAgZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNu
YXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2MKICAgICBTY3JvbGxpbmdUcmVlTm9kZSog
cm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiBy
b290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFw
T2Zmc2V0cyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9y
QXhpcyhheGlzKTsKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYg
c25hcE9mZnNldFJhbmdlcyA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5v
ZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpOworICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzSW5m
byA9IHJvb3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIGZsb2F0IHNj
YWxlZFNjcm9sbERlc3RpbmF0aW9uID0gc2Nyb2xsRGVzdGluYXRpb24gLyBtX3dlYlBhZ2VQcm94
eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKLSAgICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNl
dCA9IGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY2Fs
ZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRleCk7CisgICAgZmxvYXQg
cmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQo
YXhpcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJyZW50SW5kZXgpOwog
ICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAqIG1fd2ViUGFnZVByb3h5LmRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggOGVkMjFkN2RkYWM4NzVi
M2EwNWRjZGQ0OTNmYjM0NjIwZGY0NWRiMC4uZDlhNWQ1Nzk2MDA4OGZiNzc4ZjRhZGI1YWVjZTcy
NmMxNzhhYTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA2LDE5ICsxMDYsMTggQEAgLSAodm9p
ZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdp
dGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9z
aXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRp
Y2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05v
ZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0gICAgY29uc3QgYXV0byYg
aG9yaXpvbnRhbCA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCku
c25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIGlmICghaG9yaXpv
bnRhbC5pc0VtcHR5KCkpIHsKKyAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygp
OworICAgIGlmICghc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5
KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNu
YXBQb3NpdGlvbiA9IFdlYkNvcmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCku
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5Lngs
IGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gc25hcE9mZnNl
dHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwogICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+
PSAwICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkK
ICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRp
b247CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgdmVydGljYWwgPSBfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25h
cE9mZnNldHM7Ci0gICAgaWYgKCF2ZXJ0aWNhbC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIXNuYXBP
ZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNp
Z25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gV2ViQ29y
ZTo6Y2xvc2VzdFNuYXBPZmZzZXQodmVydGljYWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOworICAgICAgICBmbG9hdCBw
b3RlbnRpYWxTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQo
V2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQsIHZlbG9j
aXR5LngsIGluZGV4KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAg
ICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZp
ZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+
eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418636</attachid>
            <date>2021-01-28 04:09:18 -0800</date>
            <delta_ts>2021-01-28 04:37:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221030-20210128130916.patch</filename>
            <type>text/plain</type>
            <size>24185</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM4MDhkYmRiOTFkODE4
NDRmODVhNWU2ZTNmMTFlZjYzOTgwNGY0NS4uMDk1ZTEwYjEzNmRiODBjN2E3Y2MxODg3YzIwZDgx
ZmQ3YmI5M2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGNsb3Nl
c3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBP
ZmZzZXQgYSBtZXRob2QgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBt
ZXRob2QuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENv
bnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRJbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOgorCiAyMDIxLTAx
LTI3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI2ODYxNSk6IGltYWdlcyBmbGlja2VyIG9uIGFwcGxlLmNvbS9pb3MvaW9zLTE0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDdiZDhkNjIyMTA4MTczN2QxY2JiM2ZjNDVkNjQ3ZGE3NDUyMGYzOTYuLmFhNGZh
YmZmMzQ3YmMyMDk2YTU1NjQzNzBmMDQzNDI0NDlmZTg4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDEtMjcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBPZmZzZXQgYSBtZXRob2Qgb24gU2Nyb2xsU25h
cE9mZnNldHNJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIGNsb3Nlc3RTbmFwT2Zmc2V0IGEgbWV0aG9kIGFuZCBjaGFuZ2UgYWxsIGNhbGwg
c2l0ZXMgdG8gdXNlIHRoZSBuZXcgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNu
YXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3Jv
bGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0p
OgorCiAyMDIxLTAxLTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBhZGQgYWNjZXNzaWJpbGl0eSBpbWFnZSBleHRyYWN0aW9uIGNvbnRleHRtZW51
IGl0ZW0gZm9yIHJldmVhbGluZyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IGEzMGM1YjcyNzk2
MTVlMWY3Nzk0ZDk4ZTAwZGFmYTY3ODVmMzlmNjMuLjUxYzBiMmNjZWE2ZjY5ODk4NDFmZWU4Y2Ni
MGFkYjY3YTEyNzg4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMTAwLDI1ICsxMDAsMjIgQEAgc3Rh
dGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBj
b25zdCBWZWN0b3I8TGF5b3V0VHkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+
Ci1zdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0
VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8
TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQorc3RhdGlj
IHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zm
c2V0c0FuZFJhbmdlcyhjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2Vz
LCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0
aW9uYWw8TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQog
ewotICAgIEFTU0VSVChzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGFjdGl2ZVNuYXBJbmRleCA9
IDA7CisgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4
KTsKIAogICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7CiAgICAgdW5zaWdu
ZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKICAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9m
ZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNl
dFJhbmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJ
bmRleCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zm
c2V0UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpIHsKLSAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKLSAgICAgICAgcmV0dXJuIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OwotICAgIH0K
KyAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSB1cHBlclNuYXBPZmZzZXRSYW5n
ZUluZGV4ICYmIHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKIAogICAgIGlmIChzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQotICAgICAgICByZXR1cm4gc25hcE9mZnNl
dHMuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmZp
cnN0KCksIDB1KTsKIAotICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAt
IDE7CiAgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZzZXRzLmxhc3Qo
KSkKLSAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmxhc3QoKSwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7
CiAKICAgICB1bnNpZ25lZCBsb3dlckluZGV4OwogICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7CkBA
IC0xMjcsOCArMTI0LDcgQEAgc3RhdGljIExheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29u
c3QgVmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgY29uc3QKICAgICBMYXlvdXRUeXBl
IHVwcGVyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbdXBwZXJJbmRleF07CiAgICAgaWYgKCFz
dGQ6OmFicyh2ZWxvY2l0eSkpIHsKICAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9z
aXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVw
cGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIGFjdGl2
ZVNuYXBJbmRleCA9IGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VySW5kZXggOiB1
cHBlckluZGV4OwotICAgICAgICByZXR1cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8g
bG93ZXJTbmFwUG9zaXRpb24gOiB1cHBlclNuYXBQb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIGlz
Q2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0
aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBl
ckluZGV4KTsKICAgICB9CiAKICAgICAvLyBOb24temVybyB2ZWxvY2l0eSBpbmRpY2F0ZXMgYSBm
bGljayBnZXN0dXJlLiBFdmVuIGlmIGFub3RoZXIgc25hcCBwb2ludCBpcyBjbG9zZXIsIHdlIHNo
b3VsZCBjaG9vc2UgdGhlIG9uZSBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGljayBnZXN0dXJl
CkBAIC0xMzYsMzkgKzEzMiwxOCBAQCBzdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNl
dChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdAogICAgIC8vIHNu
YXBwaW5nLCB3ZSBzaG91bGQgbmV2ZXIgc25hcCB0byBhIHBvaW50IHRoYXQgd2FzIG9uIHRoZSBv
dGhlciBzaWRlIG9mIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIG9mIHRoaXMgc2Nyb2xsLgogICAgIC8vIFRoaXMgYWxsb3dzIGRpcmVjdGlvbmFsIHNjcm9s
bGluZyB0byBlc2NhcGUgc25hcCBwb2ludHMuCiAgICAgaWYgKHZlbG9jaXR5IDwgMCkgewotICAg
ICAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldElu
ZGV4IHx8IGxvd2VyU25hcFBvc2l0aW9uID49IHNuYXBPZmZzZXRSYW5nZXNbbG93ZXJTbmFwT2Zm
c2V0UmFuZ2VJbmRleF0uZW5kKSB7Ci0gICAgICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBsb3dl
ckluZGV4OwotICAgICAgICAgICAgcmV0dXJuIGxvd2VyU25hcFBvc2l0aW9uOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFz
VmFsdWUoKSB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nID4gdXBwZXJT
bmFwUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFjdGl2ZVNuYXBJbmRleCA9IHVwcGVySW5kZXg7
Ci0gICAgICAgICAgICByZXR1cm4gdXBwZXJTbmFwUG9zaXRpb247Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eCB8fCBsb3dlclNuYXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNl
dFJhbmdlSW5kZXhdLmVuZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dl
clNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7CisgICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRG
b3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGly
ZWN0aW9uYWxTbmFwcGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFjdGl2ZVNuYXBJ
bmRleCA9IHVwcGVySW5kZXg7Ci0gICAgICAgICAgICByZXR1cm4gdXBwZXJTbmFwUG9zaXRpb247
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxT
bmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBp
bmcgPCBsb3dlclNuYXBQb3NpdGlvbikgewotICAgICAgICAgICAgYWN0aXZlU25hcEluZGV4ID0g
bG93ZXJJbmRleDsKLSAgICAgICAgICAgIHJldHVybiBsb3dlclNuYXBQb3NpdGlvbjsKLSAgICAg
ICAgfQorICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOworICAgICAgICBpZiAoIW9y
aWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5h
bE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRl
eCk7CiAgICAgfQogCi0gICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eDsKLSAgICByZXR1cm4gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci19Ci0KLUxheW91dFVuaXQg
Y2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywg
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJh
bmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFs
T2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKLXsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBP
ZmZzZXQ8TGF5b3V0VW5pdD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4LCBvcmlnaW5hbE9mZnNl
dEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwotfQotCi1mbG9hdCBjbG9zZXN0U25hcE9mZnNldChj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9u
YWw8ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKLXsKLSAgICBy
ZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQ+KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFu
Z2VzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwg
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
OwogfQogCiBlbnVtIGNsYXNzIEluc2V0T3JPdXRzZXQgewpAQCAtMzcxLDYgKzM0NiwxOCBAQCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0Pjo6Y29udmVydFVuaXRzKGZsbwogICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlv
dXRVbml0LCBmbG9hdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAordGVtcGxhdGUg
PD4KK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgTGF5
b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dAoreworICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5kUmFuZ2VzKG9m
ZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNu
YXBwaW5nKTsKK30KKwordGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykg
Y29uc3QKK3sKKyAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdl
cyhvZmZzZXRzRm9yQXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9u
YWxTbmFwcGluZyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCmluZGV4IGRhYjFmOGZhYmMwODliOTE1YmNhODJkNjE0YWI4NzZhNmUzMmI0NDMu
LmEyNTU5MjM3OTk1NjgwYzliZDljOGQ3MDdkMjJhOTBjNzBhMjlmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBA
IC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCi0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
MCwxMyArODEsMTggQEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91
dHB1dFR5cGU+IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFQsIHVuc2lnbmVkPiBjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIFQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCBPcHRpb25hbDxUPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFw
cGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8
PgogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZhY3RvciAqLykgY29u
c3Q7Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25l
ZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykg
Y29uc3Q7CiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y29udmVydFVuaXRzKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsKK3RlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBMYXlvdXRVbml0
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBj
b25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTk1
LDkgKzEwMSw2IEBAIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5U
X01BWDsKIC8vIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBk
YXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJl
bmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGlu
Z0VsZW1lbnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5h
dGVzKTsKIAotV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5pdCBjbG9zZXN0U25hcE9mZnNldChjb25z
dCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0IHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJ
bmRleCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFs
U25hcHBpbmcgPSBXVEY6Om51bGxvcHQpOwotV0VCQ09SRV9FWFBPUlQgZmxvYXQgY2xvc2VzdFNu
YXBPZmZzZXQoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5k
ZXgsIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZyA9IFdURjo6bnVsbG9wdCk7Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggNzcxOTE2MzEzNGU5YWQ5NGM2ZDQyODg2
MjFkZGI3N2I2OGFkNGNiYi4uMGMzNDU3ZGQ3NmU3NjY2NzU3NzllZjY0ODI1YjM1NTY4ZTNmNmY5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tCkBAIC04ODMsOSArODgzLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXROZWFy
ZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKIAogICAg
IExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQo
b2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0cy5maXJzdCgpKSwgc25hcE9mZnNldHMu
bGFzdCgpKTsKIAotICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gMDsKLSAgICBjbG9zZXN0U25h
cE9mZnNldChzbmFwU3RhdGUuc25hcE9mZnNldHNGb3JBeGlzKGF4aXMpLCBzbmFwU3RhdGUuc25h
cE9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIGNsYW1wZWRPZmZzZXQsIDAsIGFjdGl2ZUluZGV4
KTsKLQorICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZv
KCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgY2xhbXBlZE9mZnNldCwgMCkuc2Vjb25kOwogICAg
IGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTkwMywxMSArOTAxLDEwIEBAIGZsb2F0IFNjcm9sbENvbnRy
b2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9h
dCBkZXN0CiAgICAgaWYgKCFzbmFwT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBkZXN0
aW5hdGlvbk9mZnNldDsKIAotICAgIHVuc2lnbmVkIHNuYXBJbmRleDsKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFs
T2Zmc2V0Lmhhc1ZhbHVlKCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cyA9
IExheW91dFVuaXQoKm9yaWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkp
OwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNu
YXBPZmZzZXRzRm9yQXhpcyhheGlzKSwgc25hcFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlz
KGF4aXMpLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxl
RmFjdG9yKCkpLCB2ZWxvY2l0eSwgc25hcEluZGV4LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5p
dHMpOworICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCku
Y2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9mZnNldCAvIG1f
Y2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKSwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0SW5MYXlv
dXRVbml0cykuZmlyc3Q7CiAgICAgcmV0dXJuIG9mZnNldCAqIG1fY2xpZW50LnBhZ2VTY2FsZUZh
Y3RvcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCA2NDAwOTk5NTFkZDc5MTljYTc1ZDEzZTVh
MGU5OGVmZTI0YzIyYzBjLi43MzI5ODRiMThiYjY4NTQ5ZmYzZjlmZDBjZmViZDgzNjliZmE5ZTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLmgKQEAgLTYyLDEwICs2Miw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgOiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXM7CiAgICAgfQogCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0SW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIG5ld0luZm8pCi0gICAgewot
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IG5ld0luZm87Ci0gICAgfQorICAgIGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7
IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8o
Y29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1fc25h
cE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQogCiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0FuZFBv
c2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExh
eW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExh
eW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKICAgICB7CkBAIC0xMDIsNyArMTAwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsK
IAogcHJpdmF0ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBW
ZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgZGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0Owor
ICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgZmxv
YXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zm
c2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91dEFj
dGl2ZVNuYXBJbmRleCkgY29uc3Q7CiAgICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRl
KFNjcm9sbFNuYXBTdGF0ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQppbmRleCAyMzViMGM0NTVhOGY0M2Ux
ZmI0YzdiNjFjNWQzNzc3Yjk5OWJhMmZkLi4yZDRiYzZjY2UwYjAyYWY1ZWYyZGZlZTIxMTllODE5
YjI0NWU5YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQpAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0
ZSBzdGF0ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0
ZWRTY3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRp
b25PZmZzZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQobV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3NuYXBP
ZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgY29udGVudFNpemUud2lkdGgo
KSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0
aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZv
clN0YXJ0T2Zmc2V0KG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMsIG1fc25h
cE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgY29udGVudFNpemUuaGVpZ2h0
KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRT
Y3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBt
X2FjdGl2ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZz
ZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnRlbnRTaXpl
LndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNldC54KCksIHByZWRp
Y3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS53aWR0aCgp
LCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFkgPSB0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb250ZW50U2l6
ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHBy
ZWRpY3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVp
Z2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNl
dFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0p
OwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV9jdXJyZW50
U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE4ICs5MSwxMyBAQCBGbG9hdFBvaW50IFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoYm9vbCYgaXNBbmltYXRp
bwogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFw
c2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLWZsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRl
Ojp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNu
YXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBz
bmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0
LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERl
bHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAorZmxvYXQgU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cyBheGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBw
cmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNp
Z25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAogewotICAgIGlmIChzbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgb3V0QWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKLSAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0YXJ0T2Zmc2V0LCAwLCBt
YXhTY3JvbGxPZmZzZXQpOwotICAgIH0KLQotICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IGNsb3Nl
c3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0KHBy
ZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwgb3V0QWN0aXZlU25hcElu
ZGV4KTsKLSAgICBmbG9hdCBtaW5pbXVtVGFyZ2V0T2Zmc2V0ID0gc3RkOjptYXg8ZmxvYXQ+KDAs
IHNuYXBPZmZzZXRzLmZpcnN0KCkpOwotICAgIGZsb2F0IG1heGltdW1UYXJnZXRPZmZzZXQgPSBz
dGQ6Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0LCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwotICAg
IHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRhcmdl
dE9mZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7Ci0gICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRh
cmdldE9mZnNldDsKKyAgICBMYXlvdXRVbml0IHByb3Bvc2VkT2Zmc2V0OworICAgIHN0ZDo6dGll
KHByb3Bvc2VkT2Zmc2V0LCBvdXRBY3RpdmVTbmFwSW5kZXgpID0gbV9zbmFwT2Zmc2V0c0luZm8u
Y2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChwcmVkaWN0ZWRPZmZzZXQgLyBwYWdl
U2NhbGUpLCBpbml0aWFsRGVsdGEpOworICAgIGlmIChvdXRBY3RpdmVTbmFwSW5kZXggIT0gaW52
YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHByb3Bvc2Vk
T2Zmc2V0OworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGFydE9mZnNldCwgMCwgbWF4U2Ny
b2xsT2Zmc2V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCAxYmIw
OTUwODVkMjM2ZWU0NWI3YzczOTBkNDgxOWY4Mzg3NTY5NGYxLi5kZWU1YzAzY2RhMjAwYTdiYjAw
ODkyMDdlNjVjYWU3MTRhMDVhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oPgorI2ltcG9ydCA8dHVw
bGU+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsMTEgKzIyNiwxMSBAQCBm
bG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTYwogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9z
Y3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJh
bWVTY3JvbGxpbmdOb2RlKCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUq
IHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZSo+KHJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0g
cm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMp
OwotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0
UmFuZ2VzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldFJhbmdl
c0ZvckF4aXMoYXhpcyk7CisgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gcm9vdFNj
cm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xs
RGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpOwotICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2Vz
dFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjYWxlZFNjcm9sbERl
c3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKKyAgICBmbG9hdCByYXdDbG9zZXN0
U25hcE9mZnNldDsKKyAgICBzdGQ6OnRpZShyYXdDbG9zZXN0U25hcE9mZnNldCwgY3VycmVudElu
ZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBzY2FsZWRTY3Jv
bGxEZXN0aW5hdGlvbiwgdmVsb2NpdHkpOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNl
dCAqIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW0KaW5kZXggOGVkMjFkN2RkYWM4NzViM2EwNWRjZGQ0OTNmYjM0NjIwZGY0NWRiMC4uM2Y4
ZWEyNTAxNjYyYTI4NjYxNjM5MzNhZjE4NDVmMzFmYzBjZjM2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpA
QCAtMTA2LDE5ICsxMDYsMTYgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25l
ZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsK
ICAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleCgpOwogCi0gICAgY29uc3QgYXV0byYgaG9yaXpvbnRhbCA9IF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzOwotICAgIGlmICghaG9yaXpvbnRhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgdW5z
aWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNv
cmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZz
ZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICBjb25z
dCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOworICAgIGlmICghc25hcE9mZnNldHNJbmZv
Lmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbcG90ZW50
aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZz
ZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0
LCB2ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAg
ICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNj
cm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zm
c2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8m
IHZlcnRpY2FsID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5z
bmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOwotICAgIGlmICghdmVydGljYWwu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3Rl
bnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldCh2ZXJ0aWNhbCwg
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55
LCBpbmRleCk7CisgICAgaWYgKCFzbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0g
PSBjbG9zZXN0U25hcEluZm8gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2Vi
Q29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5
LngpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgp
LnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZl
cnRpY2FsVGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50
U2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50
aWFsU25hcFBvc2l0aW9uOwo=
</data>
<flag name="commit-queue"
          id="436658"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418638</attachid>
            <date>2021-01-28 04:29:37 -0800</date>
            <delta_ts>2021-01-28 10:32:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221030-20210128132935.patch</filename>
            <type>text/plain</type>
            <size>24167</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM4MDhkYmRiOTFkODE4
NDRmODVhNWU2ZTNmMTFlZjYzOTgwNGY0NS4uMDk1ZTEwYjEzNmRiODBjN2E3Y2MxODg3YzIwZDgx
ZmQ3YmI5M2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGNsb3Nl
c3RTbmFwT2Zmc2V0IGEgbWV0aG9kIG9uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBP
ZmZzZXQgYSBtZXRob2QgYW5kIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBt
ZXRob2QuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENv
bnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRJbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOgorCiAyMDIxLTAx
LTI3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI2ODYxNSk6IGltYWdlcyBmbGlja2VyIG9uIGFwcGxlLmNvbS9pb3MvaW9zLTE0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDdiZDhkNjIyMTA4MTczN2QxY2JiM2ZjNDVkNjQ3ZGE3NDUyMGYzOTYuLmFhNGZh
YmZmMzQ3YmMyMDk2YTU1NjQzNzBmMDQzNDI0NDlmZTg4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDEtMjcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1ha2UgY2xvc2VzdFNuYXBPZmZzZXQgYSBtZXRob2Qgb24gU2Nyb2xsU25h
cE9mZnNldHNJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIGNsb3Nlc3RTbmFwT2Zmc2V0IGEgbWV0aG9kIGFuZCBjaGFuZ2UgYWxsIGNhbGwg
c2l0ZXMgdG8gdXNlIHRoZSBuZXcgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNu
YXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3Jv
bGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0p
OgorCiAyMDIxLTAxLTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBhZGQgYWNjZXNzaWJpbGl0eSBpbWFnZSBleHRyYWN0aW9uIGNvbnRleHRtZW51
IGl0ZW0gZm9yIHJldmVhbGluZyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IGEzMGM1YjcyNzk2
MTVlMWY3Nzk0ZDk4ZTAwZGFmYTY3ODVmMzlmNjMuLjUxYzBiMmNjZWE2ZjY5ODk4NDFmZWU4Y2Ni
MGFkYjY3YTEyNzg4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtMTAwLDI1ICsxMDAsMjIgQEAgc3Rh
dGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBj
b25zdCBWZWN0b3I8TGF5b3V0VHkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+
Ci1zdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0
VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9uYWw8
TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQorc3RhdGlj
IHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zm
c2V0c0FuZFJhbmdlcyhjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2Vz
LCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0
aW9uYWw8TGF5b3V0VHlwZT4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQog
ewotICAgIEFTU0VSVChzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGFjdGl2ZVNuYXBJbmRleCA9
IDA7CisgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4
KTsKIAogICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7CiAgICAgdW5zaWdu
ZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKICAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9m
ZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNl
dFJhbmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJ
bmRleCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zm
c2V0UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpIHsKLSAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKLSAgICAgICAgcmV0dXJuIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OwotICAgIH0K
KyAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSB1cHBlclNuYXBPZmZzZXRSYW5n
ZUluZGV4ICYmIHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKIAogICAgIGlmIChzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQotICAgICAgICByZXR1cm4gc25hcE9mZnNl
dHMuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmZp
cnN0KCksIDB1KTsKIAotICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAt
IDE7CiAgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZzZXRzLmxhc3Qo
KSkKLSAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmxhc3QoKSwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7
CiAKICAgICB1bnNpZ25lZCBsb3dlckluZGV4OwogICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7CkBA
IC0xMjcsOCArMTI0LDcgQEAgc3RhdGljIExheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29u
c3QgVmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgY29uc3QKICAgICBMYXlvdXRUeXBl
IHVwcGVyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbdXBwZXJJbmRleF07CiAgICAgaWYgKCFz
dGQ6OmFicyh2ZWxvY2l0eSkpIHsKICAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9z
aXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVw
cGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIGFjdGl2
ZVNuYXBJbmRleCA9IGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VySW5kZXggOiB1
cHBlckluZGV4OwotICAgICAgICByZXR1cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8g
bG93ZXJTbmFwUG9zaXRpb24gOiB1cHBlclNuYXBQb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIGlz
Q2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0
aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBl
ckluZGV4KTsKICAgICB9CiAKICAgICAvLyBOb24temVybyB2ZWxvY2l0eSBpbmRpY2F0ZXMgYSBm
bGljayBnZXN0dXJlLiBFdmVuIGlmIGFub3RoZXIgc25hcCBwb2ludCBpcyBjbG9zZXIsIHdlIHNo
b3VsZCBjaG9vc2UgdGhlIG9uZSBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGljayBnZXN0dXJl
CkBAIC0xMzYsMzkgKzEzMiwxOCBAQCBzdGF0aWMgTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNl
dChjb25zdCBWZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdAogICAgIC8vIHNu
YXBwaW5nLCB3ZSBzaG91bGQgbmV2ZXIgc25hcCB0byBhIHBvaW50IHRoYXQgd2FzIG9uIHRoZSBv
dGhlciBzaWRlIG9mIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0
aW9uIG9mIHRoaXMgc2Nyb2xsLgogICAgIC8vIFRoaXMgYWxsb3dzIGRpcmVjdGlvbmFsIHNjcm9s
bGluZyB0byBlc2NhcGUgc25hcCBwb2ludHMuCiAgICAgaWYgKHZlbG9jaXR5IDwgMCkgewotICAg
ICAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldElu
ZGV4IHx8IGxvd2VyU25hcFBvc2l0aW9uID49IHNuYXBPZmZzZXRSYW5nZXNbbG93ZXJTbmFwT2Zm
c2V0UmFuZ2VJbmRleF0uZW5kKSB7Ci0gICAgICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBsb3dl
ckluZGV4OwotICAgICAgICAgICAgcmV0dXJuIGxvd2VyU25hcFBvc2l0aW9uOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFz
VmFsdWUoKSB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nID4gdXBwZXJT
bmFwUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFjdGl2ZVNuYXBJbmRleCA9IHVwcGVySW5kZXg7
Ci0gICAgICAgICAgICByZXR1cm4gdXBwZXJTbmFwUG9zaXRpb247Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eCB8fCBsb3dlclNuYXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNl
dFJhbmdlSW5kZXhdLmVuZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dl
clNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7CisgICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRG
b3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGly
ZWN0aW9uYWxTbmFwcGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFjdGl2ZVNuYXBJ
bmRleCA9IHVwcGVySW5kZXg7Ci0gICAgICAgICAgICByZXR1cm4gdXBwZXJTbmFwUG9zaXRpb247
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxT
bmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBp
bmcgPCBsb3dlclNuYXBQb3NpdGlvbikgewotICAgICAgICAgICAgYWN0aXZlU25hcEluZGV4ID0g
bG93ZXJJbmRleDsKLSAgICAgICAgICAgIHJldHVybiBsb3dlclNuYXBQb3NpdGlvbjsKLSAgICAg
ICAgfQorICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOworICAgICAgICBpZiAoIW9y
aWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5h
bE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRl
eCk7CiAgICAgfQogCi0gICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eDsKLSAgICByZXR1cm4gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci19Ci0KLUxheW91dFVuaXQg
Y2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywg
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJh
bmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgsIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFs
T2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKLXsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBP
ZmZzZXQ8TGF5b3V0VW5pdD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4LCBvcmlnaW5hbE9mZnNl
dEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwotfQotCi1mbG9hdCBjbG9zZXN0U25hcE9mZnNldChj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCwgT3B0aW9u
YWw8ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKLXsKLSAgICBy
ZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQ+KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFu
Z2VzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCwg
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
OwogfQogCiBlbnVtIGNsYXNzIEluc2V0T3JPdXRzZXQgewpAQCAtMzcxLDYgKzM0NiwxOCBAQCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0Pjo6Y29udmVydFVuaXRzKGZsbwogICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlv
dXRVbml0LCBmbG9hdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAordGVtcGxhdGUg
PD4KK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgTGF5
b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dAoreworICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5kUmFuZ2VzKG9m
ZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNu
YXBwaW5nKTsKK30KKwordGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykg
Y29uc3QKK3sKKyAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdl
cyhvZmZzZXRzRm9yQXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9u
YWxTbmFwcGluZyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCmluZGV4IGRhYjFmOGZhYmMwODliOTE1YmNhODJkNjE0YWI4NzZhNmUzMmI0NDMu
LmEyNTU5MjM3OTk1NjgwYzliZDljOGQ3MDdkMjJhOTBjNzBhMjlmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBA
IC0zMCw3ICszMCw4IEBACiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCi0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
MCwxMyArODEsMTggQEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91
dHB1dFR5cGU+IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFQsIHVuc2lnbmVkPiBjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIFQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCBPcHRpb25hbDxUPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFw
cGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8
PgogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZhY3RvciAqLykgY29u
c3Q7Cit0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25l
ZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykg
Y29uc3Q7CiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y29udmVydFVuaXRzKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsKK3RlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBMYXlvdXRVbml0
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBj
b25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTk1
LDkgKzEwMSw2IEBAIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5U
X01BWDsKIC8vIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBk
YXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJl
bmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGlu
Z0VsZW1lbnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5h
dGVzKTsKIAotV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5pdCBjbG9zZXN0U25hcE9mZnNldChjb25z
dCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0IHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJ
bmRleCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFs
U25hcHBpbmcgPSBXVEY6Om51bGxvcHQpOwotV0VCQ09SRV9FWFBPUlQgZmxvYXQgY2xvc2VzdFNu
YXBPZmZzZXQoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5k
ZXgsIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZyA9IFdURjo6bnVsbG9wdCk7Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggNzcxOTE2MzEzNGU5YWQ5NGM2ZDQyODg2
MjFkZGI3N2I2OGFkNGNiYi4uMGMzNDU3ZGQ3NmU3NjY2NzU3NzllZjY0ODI1YjM1NTY4ZTNmNmY5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tCkBAIC04ODMsOSArODgzLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXROZWFy
ZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKIAogICAg
IExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQo
b2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0cy5maXJzdCgpKSwgc25hcE9mZnNldHMu
bGFzdCgpKTsKIAotICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gMDsKLSAgICBjbG9zZXN0U25h
cE9mZnNldChzbmFwU3RhdGUuc25hcE9mZnNldHNGb3JBeGlzKGF4aXMpLCBzbmFwU3RhdGUuc25h
cE9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIGNsYW1wZWRPZmZzZXQsIDAsIGFjdGl2ZUluZGV4
KTsKLQorICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZv
KCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgY2xhbXBlZE9mZnNldCwgMCkuc2Vjb25kOwogICAg
IGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTkwMywxMSArOTAxLDEwIEBAIGZsb2F0IFNjcm9sbENvbnRy
b2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9h
dCBkZXN0CiAgICAgaWYgKCFzbmFwT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBkZXN0
aW5hdGlvbk9mZnNldDsKIAotICAgIHVuc2lnbmVkIHNuYXBJbmRleDsKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFs
T2Zmc2V0Lmhhc1ZhbHVlKCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cyA9
IExheW91dFVuaXQoKm9yaWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkp
OwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNu
YXBPZmZzZXRzRm9yQXhpcyhheGlzKSwgc25hcFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlz
KGF4aXMpLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxl
RmFjdG9yKCkpLCB2ZWxvY2l0eSwgc25hcEluZGV4LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5p
dHMpOworICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCku
Y2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9mZnNldCAvIG1f
Y2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKSwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0SW5MYXlv
dXRVbml0cykuZmlyc3Q7CiAgICAgcmV0dXJuIG9mZnNldCAqIG1fY2xpZW50LnBhZ2VTY2FsZUZh
Y3RvcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCA2NDAwOTk5NTFkZDc5MTljYTc1ZDEzZTVh
MGU5OGVmZTI0YzIyYzBjLi43MzI5ODRiMThiYjY4NTQ5ZmYzZjlmZDBjZmViZDgzNjliZmE5ZTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLmgKQEAgLTYyLDEwICs2Miw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgOiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXM7CiAgICAgfQogCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0SW5mbyhj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIG5ld0luZm8pCi0gICAgewot
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IG5ld0luZm87Ci0gICAgfQorICAgIGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7
IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8o
Y29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1fc25h
cE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQogCiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0FuZFBv
c2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExh
eW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExh
eW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKICAgICB7CkBAIC0xMDIsNyArMTAwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsK
IAogcHJpdmF0ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBW
ZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgZGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0Owor
ICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgZmxv
YXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zm
c2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91dEFj
dGl2ZVNuYXBJbmRleCkgY29uc3Q7CiAgICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRl
KFNjcm9sbFNuYXBTdGF0ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQppbmRleCAyMzViMGM0NTVhOGY0M2Ux
ZmI0YzdiNjFjNWQzNzc3Yjk5OWJhMmZkLi4yZDRiYzZjY2UwYjAyYWY1ZWYyZGZlZTIxMTllODE5
YjI0NWU5YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQpAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0
ZSBzdGF0ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0
ZWRTY3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRp
b25PZmZzZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQobV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3NuYXBP
ZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgY29udGVudFNpemUud2lkdGgo
KSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0
aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZv
clN0YXJ0T2Zmc2V0KG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMsIG1fc25h
cE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgY29udGVudFNpemUuaGVpZ2h0
KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRT
Y3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBt
X2FjdGl2ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZz
ZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnRlbnRTaXpl
LndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNldC54KCksIHByZWRp
Y3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS53aWR0aCgp
LCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFkgPSB0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb250ZW50U2l6
ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHBy
ZWRpY3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVp
Z2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNl
dFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0p
OwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV9jdXJyZW50
U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE4ICs5MSwxMyBAQCBGbG9hdFBvaW50IFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoYm9vbCYgaXNBbmltYXRp
bwogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFw
c2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLWZsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRl
Ojp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNu
YXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBz
bmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0
LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERl
bHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAorZmxvYXQgU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cyBheGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBw
cmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNp
Z25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAogewotICAgIGlmIChzbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgb3V0QWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKLSAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0YXJ0T2Zmc2V0LCAwLCBt
YXhTY3JvbGxPZmZzZXQpOwotICAgIH0KLQotICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IGNsb3Nl
c3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0KHBy
ZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwgb3V0QWN0aXZlU25hcElu
ZGV4KTsKLSAgICBmbG9hdCBtaW5pbXVtVGFyZ2V0T2Zmc2V0ID0gc3RkOjptYXg8ZmxvYXQ+KDAs
IHNuYXBPZmZzZXRzLmZpcnN0KCkpOwotICAgIGZsb2F0IG1heGltdW1UYXJnZXRPZmZzZXQgPSBz
dGQ6Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0LCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwotICAg
IHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRhcmdl
dE9mZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7Ci0gICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRh
cmdldE9mZnNldDsKKyAgICBMYXlvdXRVbml0IHByb3Bvc2VkT2Zmc2V0OworICAgIHN0ZDo6dGll
KHByb3Bvc2VkT2Zmc2V0LCBvdXRBY3RpdmVTbmFwSW5kZXgpID0gbV9zbmFwT2Zmc2V0c0luZm8u
Y2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChwcmVkaWN0ZWRPZmZzZXQgLyBwYWdl
U2NhbGUpLCBpbml0aWFsRGVsdGEpOworICAgIGlmIChvdXRBY3RpdmVTbmFwSW5kZXggIT0gaW52
YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHByb3Bvc2Vk
T2Zmc2V0OworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGFydE9mZnNldCwgMCwgbWF4U2Ny
b2xsT2Zmc2V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCAxYmIw
OTUwODVkMjM2ZWU0NWI3YzczOTBkNDgxOWY4Mzg3NTY5NGYxLi5kZWU1YzAzY2RhMjAwYTdiYjAw
ODkyMDdlNjVjYWU3MTRhMDVhZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oPgorI2ltcG9ydCA8dHVw
bGU+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsMTEgKzIyNiwxMSBAQCBm
bG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZv
ck1haW5GcmFtZVNjcm9sbGluZyhTYwogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9z
Y3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJh
bWVTY3JvbGxpbmdOb2RlKCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUq
IHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZSo+KHJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0g
cm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMp
OwotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0
UmFuZ2VzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldFJhbmdl
c0ZvckF4aXMoYXhpcyk7CisgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gcm9vdFNj
cm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xs
RGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpOwotICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2Vz
dFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjYWxlZFNjcm9sbERl
c3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKKyAgICBmbG9hdCByYXdDbG9zZXN0
U25hcE9mZnNldDsKKyAgICBzdGQ6OnRpZShyYXdDbG9zZXN0U25hcE9mZnNldCwgY3VycmVudElu
ZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBzY2FsZWRTY3Jv
bGxEZXN0aW5hdGlvbiwgdmVsb2NpdHkpOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNl
dCAqIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW0KaW5kZXggOGVkMjFkN2RkYWM4NzViM2EwNWRjZGQ0OTNmYjM0NjIwZGY0NWRiMC4uODgw
YzAzMTk1Zjg5YzRiZDEzZGQ2YTY0NjUyM2YxZGY4NGM5NTY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpA
QCAtMTA2LDE5ICsxMDYsMTYgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25l
ZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsK
ICAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleCgpOwogCi0gICAgY29uc3QgYXV0byYgaG9yaXpvbnRhbCA9IF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzOwotICAgIGlmICghaG9yaXpvbnRhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgdW5z
aWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IFdlYkNv
cmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KGhvcml6b250YWwsIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlLT5zY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZz
ZXRSYW5nZXMsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICBjb25z
dCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOworICAgIGlmICghc25hcE9mZnNldHNJbmZv
Lmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbcG90ZW50
aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZz
ZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0
LCB2ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAg
ICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNj
cm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zm
c2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8m
IHZlcnRpY2FsID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5z
bmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzOwotICAgIGlmICghdmVydGljYWwu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3Rl
bnRpYWxTbmFwUG9zaXRpb24gPSBXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldCh2ZXJ0aWNhbCwg
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55
LCBpbmRleCk7CisgICAgaWYgKCFzbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0g
PSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LngpOwogICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAg
JiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQpCiAgICAg
ICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>