<?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>235034</bug_id>
          
          <creation_ts>2022-01-10 10:16:52 -0800</creation_ts>
          <short_desc>Use the new template ColorSpaceCG helpers to cleanup some code</short_desc>
          <delta_ts>2022-01-11 10:45:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>heycam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829523</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-10 10:16:52 -0800</bug_when>
    <thetext>Use the new template ColoreSpaceCG helpers to cleanup some code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829565</commentid>
    <comment_count>1</comment_count>
      <attachid>448778</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-10 11:14:08 -0800</bug_when>
    <thetext>Created attachment 448778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829576</commentid>
    <comment_count>2</comment_count>
      <attachid>448781</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-10 11:34:23 -0800</bug_when>
    <thetext>Created attachment 448781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829652</commentid>
    <comment_count>3</comment_count>
      <attachid>448805</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-10 15:16:54 -0800</bug_when>
    <thetext>Created attachment 448805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829709</commentid>
    <comment_count>4</comment_count>
      <attachid>448805</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-01-10 18:18:22 -0800</bug_when>
    <thetext>Comment on attachment 448805
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:511
&gt; +    using OutputSpaceColorType = std::conditional_t&lt;HasCGColorSpaceMapping&lt;ColorSpace::ExtendedSRGB&gt;, ExtendedSRGBA&lt;float&gt;, SRGBA&lt;float&gt;&gt;;

Since this declaration to choose &quot;ExtendedSRGB if supported else SRGB&quot; is used in a bunch of places, maybe it should be in CGColorSpace.h? Maybe a templated using statement (so float is still specified explicitly)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829847</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-11 10:39:33 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #4)
&gt; Comment on attachment 448805 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448805&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:511
&gt; &gt; +    using OutputSpaceColorType = std::conditional_t&lt;HasCGColorSpaceMapping&lt;ColorSpace::ExtendedSRGB&gt;, ExtendedSRGBA&lt;float&gt;, SRGBA&lt;float&gt;&gt;;
&gt; 
&gt; Since this declaration to choose &quot;ExtendedSRGB if supported else SRGB&quot; is
&gt; used in a bunch of places, maybe it should be in CGColorSpace.h? Maybe a
&gt; templated using statement (so float is still specified explicitly)?

Sounds like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829850</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-11 10:44:41 -0800</bug_when>
    <thetext>Committed r287889 (245928@main): &lt;https://commits.webkit.org/245928@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448805.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829852</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-11 10:45:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/87408048&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448778</attachid>
            <date>2022-01-10 11:14:08 -0800</date>
            <delta_ts>2022-01-10 11:34:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235034-20220110111407.patch</filename>
            <type>text/plain</type>
            <size>14727</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyB0ZW1wbGF0ZSBD
b2xvcmVTcGFjZUNHIGhlbHBlcnMgdG8gY2xlYW51cCBzb21lIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFV0aWxpemUgdGhlIG5ldyB0ZW1wbGF0
ZSBoZWxwZXJzIGluIENvbG9yU3BhY2VDRy5oIHRvIHJlbW92ZSBzb21lICNpZmRlZnMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZENHQ29sb3JUcmFuc2Zvcm0pOgorICAgICAgICBBZGQgYSBzaW5nbGV0b24gZm9y
IHRoaXMgdHJhbnNmb3JtIHNpbmNlIGl0IGlzIGFsd2F5cyB0aGUgc2FtZS4KKworICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6OmNyZWF0ZUFuZExvc3NsZXNzbHlDb252ZXJ0VG9TdXBwb3J0ZWRDb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0dDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMpOgorICAgICAgICBSZXBsYWNlICNpZmRl
ZnMgd2l0aCBjb25zdGV4cHIgY2hlY2tpbmcgb2YgSGFzQ0dDb2xvclNwYWNlTWFwcGluZzw+LiBB
bHNvIHN3aXRjaAorICAgICAgICBzb21lIGMtc3R5bGUgYXJyYXlzIHRvIHN0ZDo6YXJyYXkgZm9y
IGNvbnNpc3RlbmN5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvZGViYXNlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsYXNzaWZ5QWxwaGFUeXBlKToKKyAgICAgICAgTWFrZSBjb25zdGV4cHIgKGZlZWRi
YWNrIGZyb20gYSBwcmV2aW91cyBjaGFuZ2UpLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFk
aWVudFJlbmRlcmVyQ0c6OlNoYWRpbmc6OnNoYWRpbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VTaGFkaW5nIGNvbnN0KToKKyAgICAgICAgUmVw
bGFjZSAjaWZkZWZzIHdpdGggY29uc3RleHByIGNoZWNraW5nIG9mIEhhc0NHQ29sb3JTcGFjZU1h
cHBpbmc8Pi4KKwogMjAyMi0wMS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NTUyBDb2xvciA0XSBDU1MgY29sb3IoKSBmdW5jdGlvbiBzaG91bGQgbm90IGNs
YW1wIGNoYW5uZWxzIHRvIHRoZSAwLTEgcmFuZ2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyODc4MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODgsMjMgKzg4LDMwIEBAIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJv
dW5kQW5kQ2xhbXBUb1NSR0JBTG9zcwogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWlu
dDhfdD4+KG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4ociwgZywgYiwg
YSApKTsKIH0KIAordGVtcGxhdGU8Q29sb3JTcGFjZSBzcGFjZT4KK3N0YXRpYyBDR0NvbG9yVHJh
bnNmb3JtUmVmIGNhY2hlZENHQ29sb3JUcmFuc2Zvcm0oKQoreworICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JUcmFuc2Zvcm1SZWY+PiB0cmFuc2Zvcm07CisK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgdHJhbnNmb3JtLmNvbnN0cnVjdChhZG9wdENGKENHQ29s
b3JUcmFuc2Zvcm1DcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlPHNwYWNlPigpLCBudWxscHRyKSkp
OworICAgIH0pOworCisgICAgcmV0dXJuIHRyYW5zZm9ybS0+Z2V0KCk7Cit9CisKIENvbG9yIENv
bG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29udmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZShDR0Nv
bG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewotICAgIGF1dG8gc291cmNl
Q0dDb2xvclNwYWNlID0gQ0dDb2xvckdldENvbG9yU3BhY2UoY29sb3IpOwotI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFKQotICAgIGF1dG8gZGVzdGluYXRpb25DR0Nv
bG9yU3BhY2UgPSB4eXpENTBDb2xvclNwYWNlUmVmKCk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkNv
bG9yU3BhY2UgPSBDb2xvclNwYWNlOjpYWVpfRDUwOwotI2Vsc2UKLSAgICBhdXRvIGRlc3RpbmF0
aW9uQ0dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBhdXRvIGRlc3RpbmF0
aW9uQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7Ci0jZW5kaWYKLSAgICBBU1NFUlQoQ0dD
b2xvclNwYWNlR2V0TnVtYmVyT2ZDb21wb25lbnRzKGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlKSA9
PSAzKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIEV4dGVuZGVkU1JH
QkEgcmF0aGVyIHRoYW4gWFlaX0Q1MCwgYXMgaXQgaXMgYSBtb3JlIGNvbW1vbmx5IHVzZWQgY29s
b3Igc3BhY2UgYW5kIGp1c3QgYXMgZXhwcmVzc2l2ZS4KKyAgICBjb25zdGV4cHIgYXV0byBkZXN0
aW5hdGlvbkNvbG9yU3BhY2UgPSBIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OlhZ
Wl9ENTA+ID8gQ29sb3JTcGFjZTo6WFlaX0Q1MCA6IENvbG9yU3BhY2U6OlNSR0I7CisgICAgQVNT
RVJUKENHQ29sb3JTcGFjZUdldE51bWJlck9mQ29tcG9uZW50cyhjYWNoZWRDR0NvbG9yU3BhY2U8
ZGVzdGluYXRpb25Db2xvclNwYWNlPigpKSA9PSAzKTsKIAorICAgIGF1dG8gc291cmNlQ0dDb2xv
clNwYWNlID0gQ0dDb2xvckdldENvbG9yU3BhY2UoY29sb3IpOwogICAgIGF1dG8gc291cmNlQ29t
cG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKLSAgICBDR0Zsb2F0IGRlc3Rp
bmF0aW9uQ29tcG9uZW50c1szXSB7IH07CisgICAgc3RkOjphcnJheTxDR0Zsb2F0LCAzPiBkZXN0
aW5hdGlvbkNvbXBvbmVudHMgeyB9OwogCi0gICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdENGKENH
Q29sb3JUcmFuc2Zvcm1DcmVhdGUoZGVzdGluYXRpb25DR0NvbG9yU3BhY2UsIG51bGxwdHIpKTsK
LSAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRz
KHRyYW5zZm9ybS5nZXQoKSwgc291cmNlQ0dDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOworICAgIGF1
dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoY2FjaGVk
Q0dDb2xvclRyYW5zZm9ybTxkZXN0aW5hdGlvbkNvbG9yU3BhY2U+KCksIHNvdXJjZUNHQ29sb3JT
cGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cywgZGVzdGlu
YXRpb25Db21wb25lbnRzLmRhdGEoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CiAKICAgICBmbG9hdCBhID0gZGVzdGluYXRpb25Db21wb25lbnRzWzBdOwpAQCAtMTQzLDIy
ICsxNTAsMTUgQEAgc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9yU3BhY2VSZWYsIENvbG9yQ29tcG9u
ZW50czxmbG9hCiAgICAgLy8gdGhlIGNvbG9yIGludG8gZWl0aGVyIGV4dGVuZGVkIHNSR0Igb3Ig
bm9ybWFsIHNSR0IsIGlmIGV4dGVuZGVkIHNSR0IgaXMKICAgICAvLyBub3Qgc3VwcG9ydGVkLgog
Ci0gICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xv
clNwYWNlKTsKLSAgICBpZiAoIWNnQ29sb3JTcGFjZSkgewotI2lmIEhBVkUoQ09SRV9HUkFQSElD
U19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICBhdXRvIGNvbXBvbmVudHNDb252
ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xv
clNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBhc0Nv
bG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9yKS5y
ZXNvbHZlZCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB7IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKSwgY29tcG9uZW50c0NvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSB9OwotI2Vs
c2UKLSAgICAgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29s
b3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewot
ICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxm
bG9hdD4+KGNvbG9yKS5yZXNvbHZlZCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB7
IHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHNDb252ZXJ0ZWRUb1NSR0JBIH07Ci0jZW5k
aWYKLSAgICB9CisgICAgdXNpbmcgRmFsbGJhY2tDb2xvclR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFs
X3Q8SGFzQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFNSR0I+LCBFeHRl
bmRlZFNSR0JBPGZsb2F0PiwgU1JHQkE8ZmxvYXQ+PjsKIAotICAgIHJldHVybiB7IGNnQ29sb3JT
cGFjZSwgY29tcG9uZW50cyB9OworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51
bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKQorICAgICAgICByZXR1cm4geyBjZ0NvbG9y
U3BhY2UsIGNvbXBvbmVudHMgfTsKKworICAgIGF1dG8gY29tcG9uZW50c0NvbnZlcnRlZFRvRmFs
bGJhY2tDb2xvclNwYWNlID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFj
ZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9u
ZW50cyhjb252ZXJ0Q29sb3I8RmFsbGJhY2tDb2xvclR5cGU+KGNvbG9yKS5yZXNvbHZlZCgpKTsK
KyAgICB9KTsKKyAgICByZXR1cm4geyBjYWNoZWRDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZUZvcjxG
YWxsYmFja0NvbG9yVHlwZT4+KCksIGNvbXBvbmVudHNDb252ZXJ0ZWRUb0ZhbGxiYWNrQ29sb3JT
cGFjZSB9OwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMTY3LDkgKzE2Nyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvcgogICAgIGF1dG8gW2NnQ29sb3JT
cGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21w
b25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwogICAgIAogICAgIGF1dG8gW2MxLCBjMiwg
YzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29t
cG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAgc3RkOjphcnJheTxDR0Zsb2F0LCA0
PiBjZ0Zsb2F0Q29tcG9uZW50cyB7IGMxLCBjMiwgYzMsIGM0IH07CiAKLSAgICByZXR1cm4gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBv
bmVudHMuZGF0YSgpKSk7CiB9CiAKIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjYWNoZWRDR0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTIxOSwxMSArMjE5LDExIEBAIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbgogICAgICAgICByZXR1cm4g
Y2dDb21wYXRpYmxlQ29tcG9uZW50czsKIAogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNn
Q29tcGF0aWJsZUNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBzb3VyY2VDb21wb25lbnRzWzRdIHsg
YzEsIGMyLCBjMywgYzQgfTsKLSAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1s0XSB7
IH07CisgICAgc3RkOjphcnJheTxDR0Zsb2F0LCA0PiBzb3VyY2VDb21wb25lbnRzIHsgYzEsIGMy
LCBjMywgYzQgfTsKKyAgICBzdGQ6OmFycmF5PENHRmxvYXQsIDQ+IGRlc3RpbmF0aW9uQ29tcG9u
ZW50cyB7IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9y
bUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRyKSk7
Ci0gICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50
cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOworICAgIGF1
dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHModHJhbnNm
b3JtLmdldCgpLCBjZ0lucHV0Q29sb3JTcGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwg
c291cmNlQ29tcG9uZW50cy5kYXRhKCksIGRlc3RpbmF0aW9uQ29tcG9uZW50cy5kYXRhKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogICAgIC8vIEZJWE1FOiBDR0NvbG9y
VHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyBkb2Vzbid0IGNvcHkgb3ZlciBhbnkgYWxw
aGEgY29tcG9uZW50LgogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlv
bkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRz
WzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1syXSksIHN0YXRp
Y19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVu
ZGVyZXJDRy5jcHAJKHJldmlzaW9uIDI4NzgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgZW51bSBjbGFzcyBBbHBoYVR5cGUgewogICAgIEZ1bGx5VHJhbnNwYXJlbnQK
IH07CiAKLXN0YXRpYyBBbHBoYVR5cGUgY2xhc3NpZnlBbHBoYVR5cGUoZmxvYXQgYWxwaGEpCitz
dGF0aWMgY29uc3RleHByIEFscGhhVHlwZSBjbGFzc2lmeUFscGhhVHlwZShmbG9hdCBhbHBoYSkK
IHsKICAgICBpZiAoYWxwaGEgPT0gMS4wZikKICAgICAgICAgcmV0dXJuIEFscGhhVHlwZTo6T3Bh
cXVlOwpAQCAtNDY1LDMyICs0NjUsMjUgQEAgR3JhZGllbnRSZW5kZXJlckNHOjpTdHJhdGVneSBH
cmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHCiAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiByZXNlcnZl
ZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7CiAgICAgY29sb3JDb21wb25lbnRzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyAqIDQpOwogCi0gICAgYXV0byBncmFkaWVudENvbG9y
U3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotCi0gICAgLy8gRklYTUU6IE5vdyB0aGF0IHdl
IG9ubHkgZXZlciB1c2UgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHMsIHdlIHNo
b3VsZCBpbnZlc3RpZ2F0ZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSByZWFsIGJlbmVmaXQgdG8g
dXNpbmcgc1JHQiB3aGVuIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgdnMganVzdCB1c2luZwot
ICAgIC8vIGV4dGVuZGVkIHNSR0IgZm9yIGFsbCBncmFkaWVudHMuCi0gICAgaWYgKGhhc09ubHlC
b3VuZGVkU1JHQkNvbG9yU3RvcHMoc3RvcHMpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IHN0b3BzKSB7Ci0gICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29s
b3IudG9Db2xvclR5cGVMb3NzeTxTUkdCQTxmbG9hdD4+KCkucmVzb2x2ZWQoKTsKLSAgICAgICAg
ICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQocik7Ci0gICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGcpOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChiKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoYSk7Ci0KLSAgICAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQo
c3RvcC5vZmZzZXQpOworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gWyZdIHsKKyAgICAgICAgLy8g
RklYTUU6IE5vdyB0aGF0IHdlIG9ubHkgZXZlciB1c2UgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xv
ckNvbXBvbmVudHMsIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZQorICAgICAgICAvLyBpZiB0aGVyZSBp
cyBhbnkgcmVhbCBiZW5lZml0IHRvIHVzaW5nIHNSR0Igd2hlbiBhbGwgdGhlIHN0b3BzIGFyZSBi
b3VuZGVkIHZzIGp1c3QgdXNpbmcKKyAgICAgICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdy
YWRpZW50cy4KKyAgICAgICAgaWYgKGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoc3RvcHMp
KSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAg
ICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5
PFNSR0JBPGZsb2F0Pj4oKS5yZXNvbHZlZCgpOworICAgICAgICAgICAgICAgIGNvbG9yQ29tcG9u
ZW50cy51bmNoZWNrZWRBcHBlbmQocik7CisgICAgICAgICAgICAgICAgY29sb3JDb21wb25lbnRz
LnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5j
aGVja2VkQXBwZW5kKGIpOworICAgICAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNr
ZWRBcHBlbmQoYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ0dD
b2xvclNwYWNlPENvbG9yU3BhY2VGb3I8U1JHQkE8ZmxvYXQ+Pj4oKTsKICAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BB
Q0UpCi0gICAgICAgIGdyYWRpZW50Q29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLSNlbmRpZgogCisgICAgICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JUeXBlID0gc3Rk
Ojpjb25kaXRpb25hbF90PEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5k
ZWRTUkdCPiwgRXh0ZW5kZWRTUkdCQTxmbG9hdD4sIFNSR0JBPGZsb2F0Pj47CisKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
RVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PEV4dGVuZGVkU1JHQkE8ZmxvYXQ+PigpLnJl
c29sdmVkKCk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNv
bG9yLnRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpLnJlc29sdmVkKCk7Ci0jZW5kaWYK
KyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxv
c3N5PE91dHB1dFNwYWNlQ29sb3JUeXBlPigpLnJlc29sdmVkKCk7CiAgICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwogICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKICAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoYik7CkBAIC00OTgsMTIgKzQ5MSwxMyBAQCBHcmFkaWVudFJlbmRlcmVyQ0c6
OlN0cmF0ZWd5IEdyYWRpZW50UmVuZGVyZXJDRzo6bWFrZUcKIAogICAgICAgICAgICAgbG9jYXRp
b25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CiAgICAgICAgIH0KLSAgICB9CisgICAg
ICAgIHJldHVybiBjYWNoZWRDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZUZvcjxPdXRwdXRTcGFjZUNv
bG9yVHlwZT4+KCk7CisgICAgfSgpOwogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0dSQURJRU5U
X0NSRUFURV9XSVRIX09QVElPTlMpCi0gICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dy
YWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoZ3JhZGllbnRDb2xvclNw
YWNlLCBjb2xvckNvbXBvbmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0
b3BzLCBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkp
KSB9OworICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhD
b2xvckNvbXBvbmVudHNBbmRPcHRpb25zKGNnQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRh
dGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRpb25zRGlj
dGlvbmFyeShjb2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsKICNlbHNlCi0gICAgcmV0dXJu
IEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhn
cmFkaWVudENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRh
KCksIG51bWJlck9mU3RvcHMpKSB9OworICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dH
cmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHMoY2dDb2xvclNwYWNlLCBjb2xvckNvbXBv
bmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzKSkgfTsKICNlbmRp
ZgogfQogCkBAIC01MTMsMTEgKzUwNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVycG9sYXRp
b25TcGFjZSwgQWxwaGFQcmVtdWx0aXBsaQogdm9pZCBHcmFkaWVudFJlbmRlcmVyQ0c6OlNoYWRp
bmc6OnNoYWRpbmdGdW5jdGlvbih2b2lkKiBpbmZvLCBjb25zdCBDR0Zsb2F0KiBpbiwgQ0dGbG9h
dCogb3V0KQogewogICAgIHVzaW5nIEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZSA9IHR5cGVu
YW1lIEludGVycG9sYXRpb25TcGFjZTo6Q29sb3JUeXBlOwotI2lmIEhBVkUoQ09SRV9HUkFQSElD
U19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JU
eXBlID0gRXh0ZW5kZWRTUkdCQTxmbG9hdD47Ci0jZWxzZQotICAgIHVzaW5nIE91dHB1dFNwYWNl
Q29sb3JUeXBlID0gU1JHQkE8ZmxvYXQ+OwotI2VuZGlmCisgICAgdXNpbmcgT3V0cHV0U3BhY2VD
b2xvclR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8SGFzQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xv
clNwYWNlOjpFeHRlbmRlZFNSR0I+LCBFeHRlbmRlZFNSR0JBPGZsb2F0PiwgU1JHQkE8ZmxvYXQ+
PjsKIAogICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxHcmFkaWVudFJlbmRlcmVyQ0c6OlNo
YWRpbmc6OkRhdGEqPihpbmZvKTsKIApAQCAtNTU0LDYgKzU0NCw4IEBAIHZvaWQgR3JhZGllbnRS
ZW5kZXJlckNHOjpTaGFkaW5nOjpzaGFkaW5nRnVuY3Rpb24odm9pZAogCiBHcmFkaWVudFJlbmRl
cmVyQ0c6OlN0cmF0ZWd5IEdyYWRpZW50UmVuZGVyZXJDRzo6bWFrZVNoYWRpbmcoQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRD
b2xvclN0b3BzJiBzdG9wcykgY29uc3QKIHsKKyAgICB1c2luZyBPdXRwdXRTcGFjZUNvbG9yVHlw
ZSA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OkV4dGVuZGVkU1JHQj4sIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+LCBTUkdCQTxmbG9hdD4+OworCiAg
ICAgYXV0byBtYWtlRGF0YSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGF1
dG8mIHN0b3BzKSB7CiAgICAgICAgIGF1dG8gY29udmVydENvbG9yVG9Db2xvckludGVycG9sYXRp
b25TcGFjZSA9IFsmXSAoY29uc3QgQ29sb3ImIGNvbG9yLCBhdXRvIGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCkgLT4gQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKQEAg
LTYyNiwyNiArNjE4LDI1IEBAIEdyYWRpZW50UmVuZGVyZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRS
ZW5kZXJlckNHOjptYWtlUwogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGRvbWFpblsyXSA9IHsgMCwgMSB9OwotI2lmIEhBVkUoQ09SRV9H
UkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCByYW5nZVs4XSA9IHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgMCwgMSB9OwotI2Vsc2UKLSAgICAg
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcmFuZ2VbOF0gPSB7IDAsIDEsIDAsIDEsIDAsIDEsIDAs
IDEgfTsKLSNlbmRpZgorICAgICAgICBjb25zdGV4cHIgYXV0byBvdXRwdXRTcGFjZUNvbXBvbmVu
dEluZm8gPSBPdXRwdXRTcGFjZUNvbG9yVHlwZTo6TW9kZWw6OmNvbXBvbmVudEluZm87CiAKKyAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENHRmxvYXQsIDI+IGRvbWFpbiA9IHsg
MCwgMSB9OworICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q0dGbG9hdCwgOD4g
cmFuZ2UgPSB7CisgICAgICAgICAgICBvdXRwdXRTcGFjZUNvbXBvbmVudEluZm9bMF0ubWluLCBv
dXRwdXRTcGFjZUNvbXBvbmVudEluZm9bMF0ubWF4LAorICAgICAgICAgICAgb3V0cHV0U3BhY2VD
b21wb25lbnRJbmZvWzFdLm1pbiwgb3V0cHV0U3BhY2VDb21wb25lbnRJbmZvWzFdLm1heCwKKyAg
ICAgICAgICAgIG91dHB1dFNwYWNlQ29tcG9uZW50SW5mb1syXS5taW4sIG91dHB1dFNwYWNlQ29t
cG9uZW50SW5mb1syXS5tYXgsCisgICAgICAgICAgICAwLCAxCisgICAgICAgIH07CisKICAgICAg
ICAgUmVmIGRhdGFSZWZDb3B5ID0gZGF0YTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5j
dGlvbkNyZWF0ZSgmZGF0YVJlZkNvcHkubGVha1JlZigpLCAxLCBkb21haW4sIDQsIHJhbmdlLCAm
Y2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoJmRh
dGFSZWZDb3B5LmxlYWtSZWYoKSwgZG9tYWluLnNpemUoKSAvIDIsIGRvbWFpbi5kYXRhKCksIHJh
bmdlLnNpemUoKSAvIDIsIHJhbmdlLmRhdGEoKSwgJmNhbGxiYWNrcykpOwogICAgIH07CiAKICAg
ICBhdXRvIGRhdGEgPSBtYWtlRGF0YShjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsK
ICAgICBhdXRvIGZ1bmN0aW9uID0gbWFrZUZ1bmN0aW9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgZGF0YSk7CiAKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgdXNpbmcgYm91bmRlZCBzUkdC
IHdoZW4gdGhlIGlucHV0IHN0b3BzIGFyZSBhbGwgYm91bmRlZCBzUkdCLgotI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1dG8gY29sb3JTcGFj
ZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBjb2xvclNw
YWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgorICAgIGF1dG8gY29sb3JTcGFjZSA9
IGNhY2hlZENHQ29sb3JTcGFjZTxDb2xvclNwYWNlRm9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPj4o
KTsKIAogICAgIHJldHVybiBTaGFkaW5nIHsgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShmdW5jdGlv
biksIGNvbG9yU3BhY2UgfTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448781</attachid>
            <date>2022-01-10 11:34:23 -0800</date>
            <delta_ts>2022-01-10 15:16:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235034-20220110111407.patch</filename>
            <type>text/plain</type>
            <size>14726</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzg0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyB0ZW1wbGF0ZSBD
b2xvclNwYWNlQ0cgaGVscGVycyB0byBjbGVhbnVwIHNvbWUgY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXRpbGl6ZSB0aGUgbmV3IHRlbXBsYXRl
IGhlbHBlcnMgaW4gQ29sb3JTcGFjZUNHLmggdG8gcmVtb3ZlIHNvbWUgI2lmZGVmcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVkQ0dDb2xvclRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIHNpbmdsZXRvbiBmb3Ig
dGhpcyB0cmFuc2Zvcm0gc2luY2UgaXQgaXMgYWx3YXlzIHRoZSBzYW1lLgorCisgICAgICAgIChX
ZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kTG9zc2xlc3NseUNvbnZlcnRUb1N1cHBvcnRlZENvbG9y
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgIFJlcGxhY2UgI2lmZGVm
cyB3aXRoIGNvbnN0ZXhwciBjaGVja2luZyBvZiBIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPD4uIEFs
c28gc3dpdGNoCisgICAgICAgIHNvbWUgYy1zdHlsZSBhcnJheXMgdG8gc3RkOjphcnJheSBmb3Ig
Y29uc2lzdGVuY3kgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29kZWJhc2UuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xhc3NpZnlBbHBoYVR5cGUpOgorICAgICAgICBNYWtlIGNvbnN0ZXhwciAoZmVlZGJh
Y2sgZnJvbSBhIHByZXZpb3VzIGNoYW5nZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
UmVuZGVyZXJDRzo6bWFrZUdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRp
ZW50UmVuZGVyZXJDRzo6U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50UmVuZGVyZXJDRzo6bWFrZVNoYWRpbmcgY29uc3QpOgorICAgICAgICBSZXBs
YWNlICNpZmRlZnMgd2l0aCBjb25zdGV4cHIgY2hlY2tpbmcgb2YgSGFzQ0dDb2xvclNwYWNlTWFw
cGluZzw+LgorCiAyMDIyLTAxLTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ1NTIENvbG9yIDRdIENTUyBjb2xvcigpIGZ1bmN0aW9uIHNob3VsZCBub3QgY2xh
bXAgY2hhbm5lbHMgdG8gdGhlIDAtMSByYW5nZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI4NzgyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OCwyMyArODgsMzAgQEAgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91
bmRBbmRDbGFtcFRvU1JHQkFMb3NzCiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBh
ICkpOwogfQogCit0ZW1wbGF0ZTxDb2xvclNwYWNlIHNwYWNlPgorc3RhdGljIENHQ29sb3JUcmFu
c2Zvcm1SZWYgY2FjaGVkQ0dDb2xvclRyYW5zZm9ybSgpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dDb2xvclRyYW5zZm9ybVJlZj4+IHRyYW5zZm9ybTsKKwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10geworICAgICAgICB0cmFuc2Zvcm0uY29uc3RydWN0KGFkb3B0Q0YoQ0dDb2xv
clRyYW5zZm9ybUNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2U8c3BhY2U+KCksIG51bGxwdHIpKSk7
CisgICAgfSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtLT5nZXQoKTsKK30KKwogQ29sb3IgQ29s
b3I6OmNyZWF0ZUFuZExvc3NsZXNzbHlDb252ZXJ0VG9TdXBwb3J0ZWRDb2xvclNwYWNlKENHQ29s
b3JSZWYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgYXV0byBzb3VyY2VD
R0NvbG9yU3BhY2UgPSBDR0NvbG9yR2V0Q29sb3JTcGFjZShjb2xvcik7Ci0jaWYgSEFWRShDT1JF
X0dSQVBISUNTX1hZWl9ENTBfQ09MT1JfU1BBQ0UpCi0gICAgYXV0byBkZXN0aW5hdGlvbkNHQ29s
b3JTcGFjZSA9IHh5ekQ1MENvbG9yU3BhY2VSZWYoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQ29s
b3JTcGFjZSA9IENvbG9yU3BhY2U6OlhZWl9ENTA7Ci0jZWxzZQotICAgIGF1dG8gZGVzdGluYXRp
b25DR0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotICAgIGF1dG8gZGVzdGluYXRp
b25Db2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQjsKLSNlbmRpZgotICAgIEFTU0VSVChDR0Nv
bG9yU3BhY2VHZXROdW1iZXJPZkNvbXBvbmVudHMoZGVzdGluYXRpb25DR0NvbG9yU3BhY2UpID09
IDMpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgRXh0ZW5kZWRTUkdC
QSByYXRoZXIgdGhhbiBYWVpfRDUwLCBhcyBpdCBpcyBhIG1vcmUgY29tbW9ubHkgdXNlZCBjb2xv
ciBzcGFjZSBhbmQganVzdCBhcyBleHByZXNzaXZlLgorICAgIGNvbnN0ZXhwciBhdXRvIGRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSA9IEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFla
X0Q1MD4gPyBDb2xvclNwYWNlOjpYWVpfRDUwIDogQ29sb3JTcGFjZTo6U1JHQjsKKyAgICBBU1NF
UlQoQ0dDb2xvclNwYWNlR2V0TnVtYmVyT2ZDb21wb25lbnRzKGNhY2hlZENHQ29sb3JTcGFjZTxk
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+KCkpID09IDMpOwogCisgICAgYXV0byBzb3VyY2VDR0NvbG9y
U3BhY2UgPSBDR0NvbG9yR2V0Q29sb3JTcGFjZShjb2xvcik7CiAgICAgYXV0byBzb3VyY2VDb21w
b25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoY29sb3IpOwotICAgIENHRmxvYXQgZGVzdGlu
YXRpb25Db21wb25lbnRzWzNdIHsgfTsKKyAgICBzdGQ6OmFycmF5PENHRmxvYXQsIDM+IGRlc3Rp
bmF0aW9uQ29tcG9uZW50cyB7IH07CiAKLSAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dD
b2xvclRyYW5zZm9ybUNyZWF0ZShkZXN0aW5hdGlvbkNHQ29sb3JTcGFjZSwgbnVsbHB0cikpOwot
ICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMo
dHJhbnNmb3JtLmdldCgpLCBzb3VyY2VDR0NvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CisgICAgYXV0
byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhjYWNoZWRD
R0NvbG9yVHJhbnNmb3JtPGRlc3RpbmF0aW9uQ29sb3JTcGFjZT4oKSwgc291cmNlQ0dDb2xvclNw
YWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5h
dGlvbkNvbXBvbmVudHMuZGF0YSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKIAogICAgIGZsb2F0IGEgPSBkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF07CkBAIC0xNDMsMjIg
KzE1MCwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25l
bnRzPGZsb2EKICAgICAvLyB0aGUgY29sb3IgaW50byBlaXRoZXIgZXh0ZW5kZWQgc1JHQiBvciBu
b3JtYWwgc1JHQiwgaWYgZXh0ZW5kZWQgc1JHQiBpcwogICAgIC8vIG5vdCBzdXBwb3J0ZWQuCiAK
LSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9y
U3BhY2UpOwotICAgIGlmICghY2dDb2xvclNwYWNlKSB7Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29tcG9uZW50c0NvbnZl
cnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9y
U3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpLnJl
c29sdmVkKCkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZVJlZigpLCBjb21wb25lbnRzQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBIH07Ci0jZWxz
ZQotICAgICAgICBhdXRvIGNvbXBvbmVudHNDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xv
clR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZs
b2F0Pj4oY29sb3IpLnJlc29sdmVkKCkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHsg
c1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50c0NvbnZlcnRlZFRvU1JHQkEgfTsKLSNlbmRp
ZgotICAgIH0KKyAgICB1c2luZyBGYWxsYmFja0NvbG9yVHlwZSA9IHN0ZDo6Y29uZGl0aW9uYWxf
dDxIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj4sIEV4dGVu
ZGVkU1JHQkE8ZmxvYXQ+LCBTUkdCQTxmbG9hdD4+OwogCi0gICAgcmV0dXJuIHsgY2dDb2xvclNw
YWNlLCBjb21wb25lbnRzIH07CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVs
bGFibGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpCisgICAgICAgIHJldHVybiB7IGNnQ29sb3JT
cGFjZSwgY29tcG9uZW50cyB9OworCisgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVkVG9GYWxs
YmFja0NvbG9yU3BhY2UgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNl
LCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25l
bnRzKGNvbnZlcnRDb2xvcjxGYWxsYmFja0NvbG9yVHlwZT4oY29sb3IpLnJlc29sdmVkKCkpOwor
ICAgIH0pOworICAgIHJldHVybiB7IGNhY2hlZENHQ29sb3JTcGFjZTxDb2xvclNwYWNlRm9yPEZh
bGxiYWNrQ29sb3JUeXBlPj4oKSwgY29tcG9uZW50c0NvbnZlcnRlZFRvRmFsbGJhY2tDb2xvclNw
YWNlIH07CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCkBAIC0xNjcsOSArMTY3LDkgQEAgc3RhdGljIFJldGFpblB0cjxD
R0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yCiAgICAgYXV0byBbY2dDb2xvclNw
YWNlLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBv
bmVudHMoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7CiAgICAgCiAgICAgYXV0byBbYzEsIGMyLCBj
MywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21w
b25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKKyAgICBzdGQ6OmFycmF5PENHRmxvYXQsIDQ+
IGNnRmxvYXRDb21wb25lbnRzIHsgYzEsIGMyLCBjMywgYzQgfTsKIAotICAgIHJldHVybiBhZG9w
dENGKENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cykpOworICAg
IHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9u
ZW50cy5kYXRhKCkpKTsKIH0KIAogUmV0YWluUHRyPENHQ29sb3JSZWY+IGNhY2hlZENHQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMjE5LDExICsyMTksMTEgQEAgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVuCiAgICAgICAgIHJldHVybiBj
Z0NvbXBhdGlibGVDb21wb25lbnRzOwogCiAgICAgYXV0byBbYzEsIGMyLCBjMywgYzRdID0gY2dD
b21wYXRpYmxlQ29tcG9uZW50czsKLSAgICBDR0Zsb2F0IHNvdXJjZUNvbXBvbmVudHNbNF0geyBj
MSwgYzIsIGMzLCBjNCB9OwotICAgIENHRmxvYXQgZGVzdGluYXRpb25Db21wb25lbnRzWzRdIHsg
fTsKKyAgICBzdGQ6OmFycmF5PENHRmxvYXQsIDQ+IHNvdXJjZUNvbXBvbmVudHMgeyBjMSwgYzIs
IGMzLCBjNCB9OworICAgIHN0ZDo6YXJyYXk8Q0dGbG9hdCwgND4gZGVzdGluYXRpb25Db21wb25l
bnRzIHsgfTsKIAogICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNmb3Jt
Q3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxwdHIpKTsK
LSAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRz
KHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CisgICAgYXV0
byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFuc2Zv
cm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBz
b3VyY2VDb21wb25lbnRzLmRhdGEoKSwgZGVzdGluYXRpb25Db21wb25lbnRzLmRhdGEoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAgLy8gRklYTUU6IENHQ29sb3JU
cmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzIGRvZXNuJ3QgY29weSBvdmVyIGFueSBhbHBo
YSBjb21wb25lbnQuCiAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9u
Q29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNb
MV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5k
ZXJlckNHLmNwcAkocmV2aXNpb24gMjg3ODI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBlbnVtIGNsYXNzIEFscGhhVHlwZSB7CiAgICAgRnVsbHlUcmFuc3BhcmVudAog
fTsKIAotc3RhdGljIEFscGhhVHlwZSBjbGFzc2lmeUFscGhhVHlwZShmbG9hdCBhbHBoYSkKK3N0
YXRpYyBjb25zdGV4cHIgQWxwaGFUeXBlIGNsYXNzaWZ5QWxwaGFUeXBlKGZsb2F0IGFscGhhKQog
ewogICAgIGlmIChhbHBoYSA9PSAxLjBmKQogICAgICAgICByZXR1cm4gQWxwaGFUeXBlOjpPcGFx
dWU7CkBAIC00NjUsMzIgKzQ2NSwyNSBAQCBHcmFkaWVudFJlbmRlcmVyQ0c6OlN0cmF0ZWd5IEdy
YWRpZW50UmVuZGVyZXJDRzo6bWFrZUcKICAgICBWZWN0b3I8Q0dGbG9hdCwgNCAqIHJlc2VydmVk
U3RvcHM+IGNvbG9yQ29tcG9uZW50czsKICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShudW1iZXJPZlN0b3BzICogNCk7CiAKLSAgICBhdXRvIGdyYWRpZW50Q29sb3JT
cGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICAvLyBGSVhNRTogTm93IHRoYXQgd2Ug
b25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cywgd2Ugc2hv
dWxkIGludmVzdGlnYXRlCi0gICAgLy8gaWYgdGhlcmUgaXMgYW55IHJlYWwgYmVuZWZpdCB0byB1
c2luZyBzUkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCB2cyBqdXN0IHVzaW5nCi0g
ICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KLSAgICBpZiAoaGFzT25seUJv
dW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
dG9wIDogc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3RvcC5jb2xv
ci50b0NvbG9yVHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKS5yZXNvbHZlZCgpOwotICAgICAgICAg
ICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9y
Q29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVu
dHMudW5jaGVja2VkQXBwZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hl
Y2tlZEFwcGVuZChhKTsKLQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChz
dG9wLm9mZnNldCk7CisgICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBbJl0geworICAgICAgICAvLyBG
SVhNRTogTm93IHRoYXQgd2Ugb25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9y
Q29tcG9uZW50cywgd2Ugc2hvdWxkIGludmVzdGlnYXRlCisgICAgICAgIC8vIGlmIHRoZXJlIGlz
IGFueSByZWFsIGJlbmVmaXQgdG8gdXNpbmcgc1JHQiB3aGVuIGFsbCB0aGUgc3RvcHMgYXJlIGJv
dW5kZWQgdnMganVzdCB1c2luZworICAgICAgICAvLyBleHRlbmRlZCBzUkdCIGZvciBhbGwgZ3Jh
ZGllbnRzLgorICAgICAgICBpZiAoaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykp
IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKSB7CisgICAgICAg
ICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8
U1JHQkE8ZmxvYXQ+PigpLnJlc29sdmVkKCk7CisgICAgICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMu
dW5jaGVja2VkQXBwZW5kKGcpOworICAgICAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tl
ZEFwcGVuZChhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjYWNoZWRDR0Nv
bG9yU3BhY2U8Q29sb3JTcGFjZUZvcjxTUkdCQTxmbG9hdD4+PigpOwogICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFD
RSkKLSAgICAgICAgZ3JhZGllbnRDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2VuZGlmCiAKKyAgICAgICAgdXNpbmcgT3V0cHV0U3BhY2VDb2xvclR5cGUgPSBzdGQ6
OmNvbmRpdGlvbmFsX3Q8SGFzQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRl
ZFNSR0I+LCBFeHRlbmRlZFNSR0JBPGZsb2F0PiwgU1JHQkE8ZmxvYXQ+PjsKKwogICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgewotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19F
WFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0g
PSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCkucmVz
b2x2ZWQoKTsKLSNlbHNlCi0gICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29s
b3IudG9Db2xvclR5cGVMb3NzeTxTUkdCQTxmbG9hdD4+KCkucmVzb2x2ZWQoKTsKLSNlbmRpZgor
ICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9z
c3k8T3V0cHV0U3BhY2VDb2xvclR5cGU+KCkucmVzb2x2ZWQoKTsKICAgICAgICAgICAgIGNvbG9y
Q29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQocik7CiAgICAgICAgICAgICBjb2xvckNvbXBvbmVu
dHMudW5jaGVja2VkQXBwZW5kKGcpOwogICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hl
Y2tlZEFwcGVuZChiKTsKQEAgLTQ5OCwxMiArNDkxLDEzIEBAIEdyYWRpZW50UmVuZGVyZXJDRzo6
U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjptYWtlRwogCiAgICAgICAgICAgICBsb2NhdGlv
bnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKICAgICAgICAgfQotICAgIH0KKyAgICAg
ICAgcmV0dXJuIGNhY2hlZENHQ29sb3JTcGFjZTxDb2xvclNwYWNlRm9yPE91dHB1dFNwYWNlQ29s
b3JUeXBlPj4oKTsKKyAgICB9KCk7CiAKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRf
Q1JFQVRFX1dJVEhfT1BUSU9OUykKLSAgICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENHR3Jh
ZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzQW5kT3B0aW9ucyhncmFkaWVudENvbG9yU3Bh
Y2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3Rv
cHMsIGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSkp
IH07CisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENv
bG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoY2dDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMuZGF0
YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzLCBncmFkaWVudE9wdGlvbnNEaWN0
aW9uYXJ5KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkpKSB9OwogI2Vsc2UKLSAgICByZXR1cm4g
R3JhZGllbnQgeyBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKGdy
YWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEo
KSwgbnVtYmVyT2ZTdG9wcykpIH07CisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dy
YWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhjZ0NvbG9yU3BhY2UsIGNvbG9yQ29tcG9u
ZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMpKSB9OwogI2VuZGlm
CiB9CiAKQEAgLTUxMywxMSArNTA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlv
blNwYWNlLCBBbHBoYVByZW11bHRpcGxpCiB2b2lkIEdyYWRpZW50UmVuZGVyZXJDRzo6U2hhZGlu
Zzo6c2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQqIGluLCBDR0Zsb2F0
KiBvdXQpCiB7CiAgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlID0gdHlwZW5h
bWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgdXNpbmcgT3V0cHV0U3BhY2VDb2xvclR5
cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKLSNlbHNlCi0gICAgdXNpbmcgT3V0cHV0U3BhY2VD
b2xvclR5cGUgPSBTUkdCQTxmbG9hdD47Ci0jZW5kaWYKKyAgICB1c2luZyBPdXRwdXRTcGFjZUNv
bG9yVHlwZSA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkU1JHQj4sIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+LCBTUkdCQTxmbG9hdD4+
OwogCiAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PEdyYWRpZW50UmVuZGVyZXJDRzo6U2hh
ZGluZzo6RGF0YSo+KGluZm8pOwogCkBAIC01NTQsNiArNTQ0LDggQEAgdm9pZCBHcmFkaWVudFJl
bmRlcmVyQ0c6OlNoYWRpbmc6OnNoYWRpbmdGdW5jdGlvbih2b2lkCiAKIEdyYWRpZW50UmVuZGVy
ZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyhDb2xvckludGVy
cG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENv
bG9yU3RvcHMmIHN0b3BzKSBjb25zdAogeworICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JUeXBl
ID0gc3RkOjpjb25kaXRpb25hbF90PEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6
RXh0ZW5kZWRTUkdCPiwgRXh0ZW5kZWRTUkdCQTxmbG9hdD4sIFNSR0JBPGZsb2F0Pj47CisKICAg
ICBhdXRvIG1ha2VEYXRhID0gWyZdIChhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgYXV0
byYgc3RvcHMpIHsKICAgICAgICAgYXV0byBjb252ZXJ0Q29sb3JUb0NvbG9ySW50ZXJwb2xhdGlv
blNwYWNlID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kKSAtPiBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHsKICAgICAgICAgICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLApAQCAt
NjI2LDI2ICs2MTgsMjUgQEAgR3JhZGllbnRSZW5kZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJl
bmRlcmVyQ0c6Om1ha2VTCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgZG9tYWluWzJdID0geyAwLCAxIH07Ci0jaWYgSEFWRShDT1JFX0dS
QVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHJhbmdlWzhdID0geyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAwLCAxIH07Ci0jZWxzZQotICAgICAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCByYW5nZVs4XSA9IHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwg
MSB9OwotI2VuZGlmCisgICAgICAgIGNvbnN0ZXhwciBhdXRvIG91dHB1dFNwYWNlQ29tcG9uZW50
SW5mbyA9IE91dHB1dFNwYWNlQ29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAorICAg
ICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q0dGbG9hdCwgMj4gZG9tYWluID0geyAw
LCAxIH07CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDR0Zsb2F0LCA4PiBy
YW5nZSA9IHsKKyAgICAgICAgICAgIG91dHB1dFNwYWNlQ29tcG9uZW50SW5mb1swXS5taW4sIG91
dHB1dFNwYWNlQ29tcG9uZW50SW5mb1swXS5tYXgsCisgICAgICAgICAgICBvdXRwdXRTcGFjZUNv
bXBvbmVudEluZm9bMV0ubWluLCBvdXRwdXRTcGFjZUNvbXBvbmVudEluZm9bMV0ubWF4LAorICAg
ICAgICAgICAgb3V0cHV0U3BhY2VDb21wb25lbnRJbmZvWzJdLm1pbiwgb3V0cHV0U3BhY2VDb21w
b25lbnRJbmZvWzJdLm1heCwKKyAgICAgICAgICAgIDAsIDEKKyAgICAgICAgfTsKKwogICAgICAg
ICBSZWYgZGF0YVJlZkNvcHkgPSBkYXRhOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0Z1bmN0
aW9uQ3JlYXRlKCZkYXRhUmVmQ29weS5sZWFrUmVmKCksIDEsIGRvbWFpbiwgNCwgcmFuZ2UsICZj
YWxsYmFja3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZSgmZGF0
YVJlZkNvcHkubGVha1JlZigpLCBkb21haW4uc2l6ZSgpIC8gMiwgZG9tYWluLmRhdGEoKSwgcmFu
Z2Uuc2l6ZSgpIC8gMiwgcmFuZ2UuZGF0YSgpLCAmY2FsbGJhY2tzKSk7CiAgICAgfTsKIAogICAg
IGF1dG8gZGF0YSA9IG1ha2VEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOwog
ICAgIGF1dG8gZnVuY3Rpb24gPSBtYWtlRnVuY3Rpb24oY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
LCBkYXRhKTsKIAogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSB1c2luZyBib3VuZGVkIHNSR0Ig
d2hlbiB0aGUgaW5wdXQgc3RvcHMgYXJlIGFsbCBib3VuZGVkIHNSR0IuCi0jaWYgSEFWRShDT1JF
X0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgYXV0byBjb2xvclNwYWNl
ID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCisgICAgYXV0byBjb2xvclNwYWNlID0g
Y2FjaGVkQ0dDb2xvclNwYWNlPENvbG9yU3BhY2VGb3I8T3V0cHV0U3BhY2VDb2xvclR5cGU+Pigp
OwogCiAgICAgcmV0dXJuIFNoYWRpbmcgeyBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGZ1bmN0aW9u
KSwgY29sb3JTcGFjZSB9OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448805</attachid>
            <date>2022-01-10 15:16:54 -0800</date>
            <delta_ts>2022-01-11 10:44:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235034-20220110151654.patch</filename>
            <type>text/plain</type>
            <size>14803</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAxLTEwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyB0ZW1wbGF0ZSBD
b2xvclNwYWNlQ0cgaGVscGVycyB0byBjbGVhbnVwIHNvbWUgY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXRpbGl6ZSB0aGUgbmV3IHRlbXBsYXRl
IGhlbHBlcnMgaW4gQ29sb3JTcGFjZUNHLmggdG8gcmVtb3ZlIHNvbWUgI2lmZGVmcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVkQ0dDb2xvclRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIHNpbmdsZXRvbiBmb3Ig
dGhpcyB0cmFuc2Zvcm0gc2luY2UgaXQgaXMgYWx3YXlzIHRoZSBzYW1lLgorCisgICAgICAgIChX
ZWJDb3JlOjpDb2xvcjo6Y3JlYXRlQW5kTG9zc2xlc3NseUNvbnZlcnRUb1N1cHBvcnRlZENvbG9y
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgIFJlcGxhY2UgI2lmZGVm
cyB3aXRoIGNvbnN0ZXhwciBjaGVja2luZyBvZiBIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPD4uIEFs
c28gc3dpdGNoCisgICAgICAgIHNvbWUgYy1zdHlsZSBhcnJheXMgdG8gc3RkOjphcnJheSBmb3Ig
Y29uc2lzdGVuY3kgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29kZWJhc2UuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xhc3NpZnlBbHBoYVR5cGUpOgorICAgICAgICBNYWtlIGNvbnN0ZXhwciAoZmVlZGJh
Y2sgZnJvbSBhIHByZXZpb3VzIGNoYW5nZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
UmVuZGVyZXJDRzo6bWFrZUdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRp
ZW50UmVuZGVyZXJDRzo6U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50UmVuZGVyZXJDRzo6bWFrZVNoYWRpbmcgY29uc3QpOgorICAgICAgICBSZXBs
YWNlICNpZmRlZnMgd2l0aCBjb25zdGV4cHIgY2hlY2tpbmcgb2YgSGFzQ0dDb2xvclNwYWNlTWFw
cGluZzw+LgorCiAyMDIyLTAxLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vZGFsIGNvbnRhaW5lciBvYnNlcnZlciBmYWlscyBkZXRlY3Rpb24g
d2hlbiByZW5kZXJlZCB0ZXh0IGlzIGluc2VydGVkIGFmdGVyIHRoZSBjb250YWluZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShy
ZXZpc2lvbiAyODc4MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMjMgKzg4LDMwIEBAIHN0ZDo6b3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zcwogICAgIHJldHVybiBj
b252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nPFNS
R0JBPGZsb2F0Pj4ociwgZywgYiwgYSApKTsKIH0KIAordGVtcGxhdGU8Q29sb3JTcGFjZSBzcGFj
ZT4KK3N0YXRpYyBDR0NvbG9yVHJhbnNmb3JtUmVmIGNhY2hlZENHQ29sb3JUcmFuc2Zvcm0oKQor
eworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHQ29sb3JUcmFuc2Zv
cm1SZWY+PiB0cmFuc2Zvcm07CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgdHJhbnNmb3JtLmNv
bnN0cnVjdChhZG9wdENGKENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNl
PHNwYWNlPigpLCBudWxscHRyKSkpOworICAgIH0pOworCisgICAgcmV0dXJuIHRyYW5zZm9ybS0+
Z2V0KCk7Cit9CisKIENvbG9yIENvbG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29udmVydFRvU3Vw
cG9ydGVkQ29sb3JTcGFjZShDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdz
KQogewotICAgIGF1dG8gc291cmNlQ0dDb2xvclNwYWNlID0gQ0dDb2xvckdldENvbG9yU3BhY2Uo
Y29sb3IpOwotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFKQotICAg
IGF1dG8gZGVzdGluYXRpb25DR0NvbG9yU3BhY2UgPSB4eXpENTBDb2xvclNwYWNlUmVmKCk7Ci0g
ICAgYXV0byBkZXN0aW5hdGlvbkNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpYWVpfRDUwOwotI2Vs
c2UKLSAgICBhdXRvIGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7Ci0j
ZW5kaWYKLSAgICBBU1NFUlQoQ0dDb2xvclNwYWNlR2V0TnVtYmVyT2ZDb21wb25lbnRzKGRlc3Rp
bmF0aW9uQ0dDb2xvclNwYWNlKSA9PSAzKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgdXNlIEV4dGVuZGVkU1JHQkEgcmF0aGVyIHRoYW4gWFlaX0Q1MCwgYXMgaXQgaXMgYSBt
b3JlIGNvbW1vbmx5IHVzZWQgY29sb3Igc3BhY2UgYW5kIGp1c3QgYXMgZXhwcmVzc2l2ZS4KKyAg
ICBjb25zdGV4cHIgYXV0byBkZXN0aW5hdGlvbkNvbG9yU3BhY2UgPSBIYXNDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OlhZWl9ENTA+ID8gQ29sb3JTcGFjZTo6WFlaX0Q1MCA6IENvbG9y
U3BhY2U6OlNSR0I7CisgICAgQVNTRVJUKENHQ29sb3JTcGFjZUdldE51bWJlck9mQ29tcG9uZW50
cyhjYWNoZWRDR0NvbG9yU3BhY2U8ZGVzdGluYXRpb25Db2xvclNwYWNlPigpKSA9PSAzKTsKIAor
ICAgIGF1dG8gc291cmNlQ0dDb2xvclNwYWNlID0gQ0dDb2xvckdldENvbG9yU3BhY2UoY29sb3Ip
OwogICAgIGF1dG8gc291cmNlQ29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9y
KTsKLSAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSB7IH07CisgICAgc3RkOjph
cnJheTxDR0Zsb2F0LCAzPiBkZXN0aW5hdGlvbkNvbXBvbmVudHMgeyB9OwogCi0gICAgYXV0byB0
cmFuc2Zvcm0gPSBhZG9wdENGKENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUoZGVzdGluYXRpb25DR0Nv
bG9yU3BhY2UsIG51bGxwdHIpKTsKLSAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1D
b252ZXJ0Q29sb3JDb21wb25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgc291cmNlQ0dDb2xvclNwYWNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlv
bkNvbXBvbmVudHMpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRD
b2xvckNvbXBvbmVudHMoY2FjaGVkQ0dDb2xvclRyYW5zZm9ybTxkZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+KCksIHNvdXJjZUNHQ29sb3JTcGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291
cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25Db21wb25lbnRzLmRhdGEoKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAKICAgICBmbG9hdCBhID0gZGVzdGluYXRpb25Db21w
b25lbnRzWzBdOwpAQCAtMTQzLDIyICsxNTAsMTUgQEAgc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9y
U3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxmbG9hCiAgICAgLy8gdGhlIGNvbG9yIGludG8gZWl0
aGVyIGV4dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4dGVuZGVkIHNSR0IgaXMKICAg
ICAvLyBub3Qgc3VwcG9ydGVkLgogCi0gICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWROdWxs
YWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKLSAgICBpZiAoIWNnQ29sb3JTcGFjZSkgewot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAg
ICBhdXRvIGNvbXBvbmVudHNDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9y
VHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAg
ICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0ZW5kZWRT
UkdCQTxmbG9hdD4+KGNvbG9yKS5yZXNvbHZlZCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50c0NvbnZlcnRlZFRv
RXh0ZW5kZWRTUkdCQSB9OwotI2Vsc2UKLSAgICAgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVk
VG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChj
b25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRz
KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKS5yZXNvbHZlZCgpKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiB7IHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHNDb252
ZXJ0ZWRUb1NSR0JBIH07Ci0jZW5kaWYKLSAgICB9CisgICAgdXNpbmcgRmFsbGJhY2tDb2xvclR5
cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8SGFzQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNl
OjpFeHRlbmRlZFNSR0I+LCBFeHRlbmRlZFNSR0JBPGZsb2F0PiwgU1JHQkE8ZmxvYXQ+PjsKIAot
ICAgIHJldHVybiB7IGNnQ29sb3JTcGFjZSwgY29tcG9uZW50cyB9OworICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKQorICAg
ICAgICByZXR1cm4geyBjZ0NvbG9yU3BhY2UsIGNvbXBvbmVudHMgfTsKKworICAgIGF1dG8gY29t
cG9uZW50c0NvbnZlcnRlZFRvRmFsbGJhY2tDb2xvclNwYWNlID0gY2FsbFdpdGhDb2xvclR5cGUo
Y29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAg
IHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RmFsbGJhY2tDb2xvclR5cGU+
KGNvbG9yKS5yZXNvbHZlZCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4geyBjYWNoZWRDR0NvbG9y
U3BhY2U8Q29sb3JTcGFjZUZvcjxGYWxsYmFja0NvbG9yVHlwZT4+KCksIGNvbXBvbmVudHNDb252
ZXJ0ZWRUb0ZhbGxiYWNrQ29sb3JTcGFjZSB9OwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMTY3LDkgKzE2Nyw5
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xv
cgogICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252
ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwogICAg
IAogICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7Ci0g
ICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAg
c3RkOjphcnJheTxDR0Zsb2F0LCA0PiBjZ0Zsb2F0Q29tcG9uZW50cyB7IGMxLCBjMiwgYzMsIGM0
IH07CiAKLSAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dG
bG9hdENvbXBvbmVudHMpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29s
b3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMuZGF0YSgpKSk7CiB9CiAKIFJldGFpblB0cjxDR0Nv
bG9yUmVmPiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTIxOSwxMSArMjE5
LDExIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21w
b25lbgogICAgICAgICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKIAogICAgIGF1dG8g
W2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBz
b3VyY2VDb21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKLSAgICBDR0Zsb2F0IGRlc3Rp
bmF0aW9uQ29tcG9uZW50c1s0XSB7IH07CisgICAgc3RkOjphcnJheTxDR0Zsb2F0LCA0PiBzb3Vy
Y2VDb21wb25lbnRzIHsgYzEsIGMyLCBjMywgYzQgfTsKKyAgICBzdGQ6OmFycmF5PENHRmxvYXQs
IDQ+IGRlc3RpbmF0aW9uQ29tcG9uZW50cyB7IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9IGFk
b3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29s
b3JTcGFjZSgpLCBudWxscHRyKSk7Ci0gICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3Jt
Q29udmVydENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlv
bkNvbXBvbmVudHMpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRD
b2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBjZ0lucHV0Q29sb3JTcGFjZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cy5kYXRhKCksIGRlc3RpbmF0aW9u
Q29tcG9uZW50cy5kYXRhKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwog
ICAgIC8vIEZJWE1FOiBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyBkb2Vz
bid0IGNvcHkgb3ZlciBhbnkgYWxwaGEgY29tcG9uZW50LgogICAgIHJldHVybiB7IHN0YXRpY19j
YXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4o
ZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9u
Q29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNb
M10pIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dFJlbmRlcmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAJKHJldmlzaW9uIDI4NzgyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgZW51bSBjbGFzcyBBbHBoYVR5cGUgewog
ICAgIEZ1bGx5VHJhbnNwYXJlbnQKIH07CiAKLXN0YXRpYyBBbHBoYVR5cGUgY2xhc3NpZnlBbHBo
YVR5cGUoZmxvYXQgYWxwaGEpCitzdGF0aWMgY29uc3RleHByIEFscGhhVHlwZSBjbGFzc2lmeUFs
cGhhVHlwZShmbG9hdCBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEgPT0gMS4wZikKICAgICAgICAg
cmV0dXJuIEFscGhhVHlwZTo6T3BhcXVlOwpAQCAtNDY1LDMyICs0NjUsMjYgQEAgR3JhZGllbnRS
ZW5kZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHCiAgICAgVmVjdG9y
PENHRmxvYXQsIDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7CiAgICAgY29sb3JD
b21wb25lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyAqIDQpOwogCi0g
ICAgYXV0byBncmFkaWVudENvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGF1
dG8gY2dDb2xvclNwYWNlID0gWyZdIHsKKyAgICAgICAgLy8gRklYTUU6IE5vdyB0aGF0IHdlIG9u
bHkgZXZlciB1c2UgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHMsIHdlIHNob3Vs
ZCBpbnZlc3RpZ2F0ZQorICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmVhbCBiZW5lZml0IHRv
IHVzaW5nIHNSR0Igd2hlbiBhbGwgdGhlIHN0b3BzIGFyZSBib3VuZGVkIHZzIGp1c3QgdXNpbmcK
KyAgICAgICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KKyAgICAgICAgaWYg
KGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoc3RvcHMpKSB7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAgICAgICAgICAgIGF1dG8gW3IsIGcs
IGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKS5yZXNv
bHZlZCgpOworICAgICAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQo
cik7CisgICAgICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsK
KyAgICAgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOworICAg
ICAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYSk7CiAKLSAgICAv
LyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENv
bG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGludmVzdGlnYXRlCi0gICAgLy8gaWYgdGhlcmUgaXMg
YW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBzUkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91
bmRlZCB2cyBqdXN0IHVzaW5nCi0gICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50
cy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKS5y
ZXNvbHZlZCgpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChy
KTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoZyk7Ci0gICAg
ICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOwotICAgICAgICAgICAg
Y29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsKLQotICAgICAgICAgICAgbG9jYXRp
b25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CisgICAgICAgICAgICAgICAgbG9jYXRp
b25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvclNwYWNlPENvbG9yU3BhY2VGb3I8U1JHQkE8ZmxvYXQ+
Pj4oKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VY
VEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGdyYWRpZW50Q29sb3JTcGFjZSA9IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgogCisgICAgICAgIHVzaW5nIE91dHB1
dFNwYWNlQ29sb3JUeXBlID0gc3RkOjpjb25kaXRpb25hbF90PEhhc0NHQ29sb3JTcGFjZU1hcHBp
bmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRTUkdCPiwgRXh0ZW5kZWRTUkdCQTxmbG9hdD4sIFNSR0JB
PGZsb2F0Pj47CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKSB7Ci0jaWYg
SEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgICAg
ICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29sb3IudG9Db2xvclR5cGVMb3NzeTxFeHRlbmRl
ZFNSR0JBPGZsb2F0Pj4oKS5yZXNvbHZlZCgpOwotI2Vsc2UKLSAgICAgICAgICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKS5y
ZXNvbHZlZCgpOwotI2VuZGlmCisgICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3Au
Y29sb3IudG9Db2xvclR5cGVMb3NzeTxPdXRwdXRTcGFjZUNvbG9yVHlwZT4oKS5yZXNvbHZlZCgp
OwogICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKICAgICAg
ICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoZyk7CiAgICAgICAgICAgICBj
b2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOwpAQCAtNDk4LDEyICs0OTIsMTMgQEAg
R3JhZGllbnRSZW5kZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHCiAK
ICAgICAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwogICAg
ICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvclNwYWNlPENvbG9yU3Bh
Y2VGb3I8T3V0cHV0U3BhY2VDb2xvclR5cGU+PigpOworICAgIH0oKTsKIAogI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQotICAgIHJldHVybiBHcmFk
aWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRp
b25zKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25z
LmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShjb2xvcklu
dGVycG9sYXRpb25NZXRob2QpKSkgfTsKKyAgICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENH
R3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzQW5kT3B0aW9ucyhjZ0NvbG9yU3BhY2Us
IGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMs
IGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSkpIH07
CiAjZWxzZQotICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdp
dGhDb2xvckNvbXBvbmVudHMoZ3JhZGllbnRDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMuZGF0
YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzKSkgfTsKKyAgICByZXR1cm4gR3Jh
ZGllbnQgeyBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKGNnQ29s
b3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbnVtYmVy
T2ZTdG9wcykpIH07CiAjZW5kaWYKIH0KIApAQCAtNTEzLDExICs1MDgsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRlcnBvbGF0aW9uU3BhY2UsIEFscGhhUHJlbXVsdGlwbGkKIHZvaWQgR3JhZGll
bnRSZW5kZXJlckNHOjpTaGFkaW5nOjpzaGFkaW5nRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3Qg
Q0dGbG9hdCogaW4sIENHRmxvYXQqIG91dCkKIHsKICAgICB1c2luZyBJbnRlcnBvbGF0aW9uU3Bh
Y2VDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uU3BhY2U6OkNvbG9yVHlwZTsKLSNp
ZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICB1c2lu
ZyBPdXRwdXRTcGFjZUNvbG9yVHlwZSA9IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+OwotI2Vsc2UKLSAg
ICB1c2luZyBPdXRwdXRTcGFjZUNvbG9yVHlwZSA9IFNSR0JBPGZsb2F0PjsKLSNlbmRpZgorICAg
IHVzaW5nIE91dHB1dFNwYWNlQ29sb3JUeXBlID0gc3RkOjpjb25kaXRpb25hbF90PEhhc0NHQ29s
b3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRTUkdCPiwgRXh0ZW5kZWRTUkdCQTxm
bG9hdD4sIFNSR0JBPGZsb2F0Pj47CiAKICAgICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8R3Jh
ZGllbnRSZW5kZXJlckNHOjpTaGFkaW5nOjpEYXRhKj4oaW5mbyk7CiAKQEAgLTU1NCw2ICs1NDUs
OCBAQCB2b2lkIEdyYWRpZW50UmVuZGVyZXJDRzo6U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKHZv
aWQKIAogR3JhZGllbnRSZW5kZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1h
a2VTaGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9wcyYgc3RvcHMpIGNvbnN0CiB7CisgICAgdXNpbmcg
T3V0cHV0U3BhY2VDb2xvclR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8SGFzQ0dDb2xvclNwYWNl
TWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFNSR0I+LCBFeHRlbmRlZFNSR0JBPGZsb2F0Piwg
U1JHQkE8ZmxvYXQ+PjsKKwogICAgIGF1dG8gbWFrZURhdGEgPSBbJl0gKGF1dG8gY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBhdXRvJiBzdG9wcykgewogICAgICAgICBhdXRvIGNvbnZlcnRDb2xv
clRvQ29sb3JJbnRlcnBvbGF0aW9uU3BhY2UgPSBbJl0gKGNvbnN0IENvbG9yJiBjb2xvciwgYXV0
byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
ewogICAgICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLmNvbG9yU3BhY2UsCkBAIC02MjYsMjYgKzYxOSwyNSBAQCBHcmFkaWVudFJlbmRlcmVyQ0c6
OlN0cmF0ZWd5IEdyYWRpZW50UmVuZGVyZXJDRzo6bWFrZVMKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEg
fTsKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAg
ICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcmFuZ2VbOF0gPSB7IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIDAs
IDEgfTsKLSNlbHNlCi0gICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAw
LCAxLCAwLCAxLCAwLCAxLCAwLCAxIH07Ci0jZW5kaWYKKyAgICAgICAgY29uc3RleHByIGF1dG8g
b3V0cHV0U3BhY2VDb21wb25lbnRJbmZvID0gT3V0cHV0U3BhY2VDb2xvclR5cGU6Ok1vZGVsOjpj
b21wb25lbnRJbmZvOwogCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDR0Zs
b2F0LCAyPiBkb21haW4gPSB7IDAsIDEgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PENHRmxvYXQsIDg+IHJhbmdlID0geworICAgICAgICAgICAgb3V0cHV0U3BhY2VDb21w
b25lbnRJbmZvWzBdLm1pbiwgb3V0cHV0U3BhY2VDb21wb25lbnRJbmZvWzBdLm1heCwKKyAgICAg
ICAgICAgIG91dHB1dFNwYWNlQ29tcG9uZW50SW5mb1sxXS5taW4sIG91dHB1dFNwYWNlQ29tcG9u
ZW50SW5mb1sxXS5tYXgsCisgICAgICAgICAgICBvdXRwdXRTcGFjZUNvbXBvbmVudEluZm9bMl0u
bWluLCBvdXRwdXRTcGFjZUNvbXBvbmVudEluZm9bMl0ubWF4LAorICAgICAgICAgICAgMCwgMQor
ICAgICAgICB9OworCiAgICAgICAgIFJlZiBkYXRhUmVmQ29weSA9IGRhdGE7Ci0gICAgICAgIHJl
dHVybiBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoJmRhdGFSZWZDb3B5LmxlYWtSZWYoKSwgMSwg
ZG9tYWluLCA0LCByYW5nZSwgJmNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRDRihD
R0Z1bmN0aW9uQ3JlYXRlKCZkYXRhUmVmQ29weS5sZWFrUmVmKCksIGRvbWFpbi5zaXplKCkgLyAy
LCBkb21haW4uZGF0YSgpLCByYW5nZS5zaXplKCkgLyAyLCByYW5nZS5kYXRhKCksICZjYWxsYmFj
a3MpKTsKICAgICB9OwogCiAgICAgYXV0byBkYXRhID0gbWFrZURhdGEoY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBzdG9wcyk7CiAgICAgYXV0byBmdW5jdGlvbiA9IG1ha2VGdW5jdGlvbihjb2xv
ckludGVycG9sYXRpb25NZXRob2QsIGRhdGEpOwogCiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRl
IHVzaW5nIGJvdW5kZWQgc1JHQiB3aGVuIHRoZSBpbnB1dCBzdG9wcyBhcmUgYWxsIGJvdW5kZWQg
c1JHQi4KLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkK
LSAgICBhdXRvIGNvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxz
ZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZUZvcjxPdXRw
dXRTcGFjZUNvbG9yVHlwZT4+KCk7CiAKICAgICByZXR1cm4gU2hhZGluZyB7IFdURk1vdmUoZGF0
YSksIFdURk1vdmUoZnVuY3Rpb24pLCBjb2xvclNwYWNlIH07CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>