<?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>221676</bug_id>
          
          <creation_ts>2021-02-10 08:35:28 -0800</creation_ts>
          <short_desc>Returning sRGB from CG color space functions on failure is too error prone</short_desc>
          <delta_ts>2021-02-11 09:45:30 -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>Platform</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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727548</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-10 08:35:28 -0800</bug_when>
    <thetext>Returning sRGB from CG color space functions on failure is too error prone. 

We know at compile time what color spaces we support, so we should use HAVE() macros and remove the weirdness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727551</commentid>
    <comment_count>1</comment_count>
      <attachid>419849</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-10 08:45:24 -0800</bug_when>
    <thetext>Created attachment 419849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727858</commentid>
    <comment_count>2</comment_count>
      <attachid>419849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-10 16:05:53 -0800</bug_when>
    <thetext>Comment on attachment 419849
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:120
&gt; +// NOTE: This function is guarenteed to return non-null, unlike cachedNullableCGColorSpace().

Seems mysterious to not say *why* it’s guaranteed. The subtle difference between DestinationColorSpace and ColorSpace. I’d say something like, &quot;Since this is for *destination* color spaces, this function is ...&quot;

Also, the word guaranteed is misspelled!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727859</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-10 16:06:26 -0800</bug_when>
    <thetext>Why all the Mac API test failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727890</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-10 17:18:08 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 419849 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419849&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:120
&gt; &gt; +// NOTE: This function is guarenteed to return non-null, unlike cachedNullableCGColorSpace().
&gt; 
&gt; Seems mysterious to not say *why* it’s guaranteed. The subtle difference
&gt; between DestinationColorSpace and ColorSpace. I’d say something like, &quot;Since
&gt; this is for *destination* color spaces, this function is ...&quot;
&gt; 
&gt; Also, the word guaranteed is misspelled!

The only thing guaranteed in this world is that I will misspell &quot;guaranteed&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728095</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-11 08:22:37 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Why all the Mac API test failures?

Looks like it was an issue elsewhere. Re-running them fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728096</commentid>
    <comment_count>6</comment_count>
      <attachid>419990</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-11 08:25:29 -0800</bug_when>
    <thetext>Created attachment 419990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728145</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-11 09:44:02 -0800</bug_when>
    <thetext>Committed r272736: &lt;https://commits.webkit.org/r272736&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728146</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-11 09:45:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/74238496&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419849</attachid>
            <date>2021-02-10 08:45:24 -0800</date>
            <delta_ts>2021-02-11 08:25:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>have.diff</filename>
            <type>text/plain</type>
            <size>17426</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzI2NTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTEwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXR1cm5pbmcgc1JHQiBmcm9tIENHIGNvbG9yIHNwYWNl
IGZ1bmN0aW9ucyBvbiBmYWlsdXJlIGlzIHRvbyBlcnJvciBwcm9uZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjc2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6Cisg
ICAgICAgIEFkZCBzcGVjaWZpYyBtYWNyb3MgZm9yIGNvbG9yIHNwYWNlcyBzdXBwb3J0ZWQgYnkg
Q29yZSBHcmFwaGljcy4KKwogMjAyMS0wMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1cHBvcnQgZm9yIHRoZSBsYW5ndWFnZS9zdWJ0
aXRsZSB0cmFja3MgYnV0dG9uIHVzaW5nIGBVSU1lbnVgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAkocmV2aXNpb24gMjcyNjU1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAt
ODY5LDMgKzg2OSwxMyBAQAogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9JTlRFUlNUSVRJQUxf
RVZFTlRTIDEKICNlbmRpZgogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNkZWZpbmUg
SEFWRV9DT1JFX0dSQVBISUNTX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFIDEKKyNkZWZpbmUg
SEFWRV9DT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZF
X0NPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVf
Q09SRV9HUkFQSElDU19JVFVSXzIwMjBfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZFX0NPUkVf
R1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZFX0NPUkVfR1JB
UEhJQ1NfUk9NTVJHQl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVfQ09SRV9HUkFQSElDU19Y
WVpfQ09MT1JfU1BBQ0UgMQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI2NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MSBAQAorMjAyMS0wMi0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV0dXJuaW5nIHNSR0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVy
ZSBpcyB0b28gZXJyb3IgcHJvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZWFrQ0dDb2xvcik6CisgICAgICAgIFN3aXRjaCB0byBjaGVja2luZyBmb3Ig
bnVsbHB0ciByYXRoZXIgdGhhbiBzUkdCIGFuZCBiZSBleHBsaWNpdCBhYm91dCB3aGVyZSB3ZSBj
YW4KKyAgICAgICAgYW5kIGNhbm5vdCB1c2UgY29udmVyc2lvbiB0byBFeHRlbmRlZFNSR0IsIHJh
dGhlciB0aGFuIHRoZSBvbGQgYmVoYXZpb3Igd2hlcmUgd2UKKyAgICAgICAgd291bGQgc2VjcmV0
bHkgdXNlIHNSR0Igb24gcGxhdGZvcm1zIHdpdGhvdXQgRXh0ZW5kZWRTUkdCIGFuZCBleHBlY3Qg
Q0cgdG8gY2xhbXAgZm9yCisgICAgICAgIHVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNl
UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGlzcGxheVAzQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJDb3Jl
OjpleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OklUVVJfMjAy
MENvbG9yU3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGFiQ29sb3JTcGFjZVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJD
b3JlOjpST01NUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJDb3JlOjp4eXpDb2xvclNw
YWNlUmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhY2hlZENHQ29sb3JTcGFjZSk6CisgICAgICAgIFJlbmFtZSBjYWNoZWRDR0Nv
bG9yU3BhY2UgdG8gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UgdG8gaW5kaWNhdGUgdGhhdCBp
dCBjYW4KKyAgICAgICAgbm93IHJldHVybiBudWxscHRyIGZvciB1bnN1cHBvcnRlZCBjb2xvciBz
cGFjZXMuIEFkZCBleHBsaWNpdCBndWFyZHMgYXJvdW5kIGNvbG9yCisgICAgICAgIHNwYWNlIGFj
Y2Vzc29ycyB0byBlbnN1cmUgdGhleSBhcmUgb25seSBjYWxsZWQgb24gcGxhdGZvcm1zIHdoZXJl
IHRoZXkgYXJlIGtub3duCisgICAgICAgIHRvIGJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOgorICAgICAgICBCZSBleHBsaWNpdCBhYm91dCB3aGlj
aCBjb2xvciBzcGFjZSBpcyBiZWluZyB1c2VkIGZvciB0aGUgZ3JhZGllbiB3aGVuIGV4dGVuZGVk
IGNvbG9ycyBhcmUgcHJlc2VudC4KKyAgICAgICAgVGhpcyBpcyB0aGUgc2FtZSBiZWhhdmlvciBh
cyBiZWZvcmUsIGJ1dCBwcmV2aW91c2x5IGl0IHdvdWxkIGhhcHBlbiBzaWxlbnRseSBiZW5lYXRo
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQorICAgICAgICB3aGljaCBpcyBhIHN1cHJpc2lu
ZyByZXN1bHQuCisKIDIwMjEtMDItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzI2NTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTgsMjAgKzk4LDI2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9y
KGNvbnN0IENvbG8KIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9y
LmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CiAKLSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNh
Y2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNh
Y2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwogCiAgICAgLy8gU29tZSBDRyBw
b3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1
cm4KLSAgICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFj
ZXMuIEluIHRob3NlIGNhc2VzLCB3ZQotICAgIC8vIG5lZWQgdG8gZWFnZXJseSBjb252ZXJ0IHRo
ZSBjb2xvciBpbnRvIGV4dGVuZGVkIHNSR0Igb3Vyc2VsdmVzIGJlZm9yZQotICAgIC8vIGNyZWF0
aW5nIHRoZSBDR0NvbG9yUmVmLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhIGdvb2Qgd2F5
IHRvIGluZGljYXRlIGxhY2sgb2Ygc3VwcG9ydC4gTWFrZSB0aGlzCi0gICAgLy8gbW9yZSBleHBs
aWNpdC4KLSAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYmIGNnQ29sb3JT
cGFjZSA9PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBw
b3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UgZWFnZXJseSBjb252ZXJ0Cisg
ICAgLy8gdGhlIGNvbG9yIGludG8gZWl0aGVyIGV4dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0Is
IGlmIGV4dGVuZGVkIHNSR0IgaXMKKyAgICAvLyBub3Qgc3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRp
bmcgdGhlIENHQ29sb3JSZWYuCisgICAgaWYgKCFjZ0NvbG9yU3BhY2UpIHsKKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKICAgICAgICAgYXV0byBjb2xv
ckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMs
IGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewogICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpOwogICAgICAgICB9KTsK
ICAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9F
eHRlbmRlZFNSR0JBKTsKICAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JT
cGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBj
YWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYg
Y29sb3IpIHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihj
b2xvcik7CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVu
dHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKKyAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0g
Y29tcG9uZW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkocmV2aXNpb24gMjcyNjU1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTM0ICszMywxMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DR0NvbG9y
U3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZVJlZigpCitDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9y
U3BhY2VSZWYoKQogewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFj
ZTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOwogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBhOThSR0JDb2xvclNwYWNlID0gQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUFkb2JlUkdCMTk5OCk7CisjaWYg
UExBVEZPUk0oV0lOKQorICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdp
bGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcworICAgICAg
ICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRl
ZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cworICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFs
bCB3b3JrcyBvdXQgbmljZWx5LgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVk
ZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KKyAgICAgICAgc1JHQkNvbG9y
U3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Cisg
ICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCisgICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogI2Vsc2UKLSAgICAgICAgYTk4UkdCQ29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKKyAgICAgICAgc1JHQkNvbG9y
U3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Cisj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIH0pOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZTsKK30KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFD
RSkKK0NHQ29sb3JTcGFjZVJlZiBhZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGFkb2JlUkdCMTk5OENvbG9yU3BhY2U7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIGFkb2JlUkdCMTk5OENvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4KTsKKyAgICAgICAgQVNTRVJUKGFkb2Jl
UkdCMTk5OENvbG9yU3BhY2UpOwogICAgIH0pOwotICAgIHJldHVybiBhOThSR0JDb2xvclNwYWNl
OworICAgIHJldHVybiBhZG9iZVJHQjE5OThDb2xvclNwYWNlOwogfQorI2VuZGlmCiAKKyNpZiBI
QVZFKENPUkVfR1JBUEhJQ1NfRElTUExBWV9QM19DT0xPUl9TUEFDRSkKIENHQ29sb3JTcGFjZVJl
ZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGRpc3BsYXlQM0NvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0NvbG9y
U3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChkaXNw
bGF5UDNDb2xvclNwYWNlKTsKICAgICB9KTsKICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFj
ZTsKIH0KKyNlbmRpZgogCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCiBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCiB7
CiAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sg
dG8gc1JHQi4KLSAgICAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFj
ZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZSA9IGNvbG9yU3BhY2U7CisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKKyAgICAgICAg
QVNTRVJUKGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UpOwogICAgIH0pOwogICAgIHJldHVybiBleHRl
bmRlZFNSR0JDb2xvclNwYWNlOwogfQorI2VuZGlmCiAKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
SVRVUl8yMDIwX0NPTE9SX1NQQUNFKQorQ0dDb2xvclNwYWNlUmVmIElUVVJfMjAyMENvbG9yU3Bh
Y2VSZWYoKQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgSVRVUjIwMjBDb2xvclNwYWNl
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBJVFVSMjAyMENvbG9yU3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlSVRVUl8yMDIwKTsKKyAgICAgICAgQVNTRVJU
KElUVVIyMDIwQ29sb3JTcGFjZSk7CisgICAgfSk7CisgICAgcmV0dXJuIElUVVIyMDIwQ29sb3JT
cGFjZTsKK30KKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xBQl9DT0xPUl9TUEFD
RSkKIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCkKIHsKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbnZlcnNpb24gdG8gTGFiIG9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMu
Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CisjZW5kaWYKIAotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQorI2lm
IEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKK0NHQ29sb3JTcGFj
ZVJlZiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpCiB7CiAgICAgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVh
ciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAg
ICAgICAgbGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQog
ICAgICAgICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZUxpbmVhclNSR0IpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChsaW5lYXJS
R0JDb2xvclNwYWNlKTsKICAgICB9KTsKICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsK
IH0KLQotQ0dDb2xvclNwYWNlUmVmIHByb1Bob3RvUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBwcm9QaG90b1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHByb1Bob3RvUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VST01NUkdCKTsKLSNlbHNl
Ci0gICAgICAgIHByb1Bob3RvUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CiAj
ZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4gcHJvUGhvdG9SR0JDb2xvclNwYWNlOwotfQogCi1D
R0NvbG9yU3BhY2VSZWYgcmVjMjAyMENvbG9yU3BhY2VSZWYoKQorI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19ST01NUkdCX0NPTE9SX1NQQUNFKQorQ0dDb2xvclNwYWNlUmVmIFJPTU1SR0JDb2xvclNw
YWNlUmVmKCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHJlYzIwMjBDb2xvclNwYWNl
OworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2U7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHJlYzIwMjBDb2xvclNwYWNlID0g
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUlUVVJfMjAyMCk7Ci0jZWxz
ZQotICAgICAgICByZWMyMDIwQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5k
aWYKKyAgICAgICAgUk9NTVJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlUk9NTVJHQik7CisgICAgICAgIEFTU0VSVChST01NUkdCQ29sb3JTcGFj
ZSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHJlYzIwMjBDb2xvclNwYWNlOworICAgIHJldHVybiBS
T01NUkdCQ29sb3JTcGFjZTsKIH0KKyNlbmRpZgogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9y
U3BhY2VSZWYoKQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCitDR0Nv
bG9yU3BhY2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBzUkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHh5ekNvbG9y
U3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQt
b2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdC
LiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhv
c2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwot
ICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAv
LyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdh
cyBmaXhlZC4KLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0g
ICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
OwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgICAg
ICB4eXpDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZUdlbmVyaWNYWVopOworICAgICAgICBBU1NFUlQoeHl6Q29sb3JTcGFjZSk7CiAgICAgfSk7Ci0g
ICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOworICAgIHJldHVybiB4eXpDb2xvclNwYWNlOwogfQot
Ci1DR0NvbG9yU3BhY2VSZWYgeHl6RDUwQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICB4eXpENTBDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZUdlbmVyaWNYWVopOwotI2Vsc2UKLSAgICAgICAgeHl6RDUw
Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKLSAgICB9KTsKLSAgICBy
ZXR1cm4geHl6RDUwQ29sb3JTcGFjZTsKLX0KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24gMjcy
NjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ1ICszMSwxMDQgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dD
b2xvclNwYWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKK1dFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiBhZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworI2lm
IEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorCisj
aWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCiBXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworI2Vu
ZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQorV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKKyNl
bmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xBQl9DT0xPUl9TUEFDRSkKIFdFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9S
VCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIHByb1Bob3RvUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIHJlYzIwMjBDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VY
UE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKIAotc3RhdGlj
IGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0Up
CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0Up
CitXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsK
KyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKK1dFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKwor
c3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewogICAg
IGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgotICAgICAgICByZXR1cm4gYTk4UkdCQ29sb3JTcGFj
ZVJlZigpOworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFD
RSkKKyAgICAgICAgcmV0dXJuIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisg
ICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNw
bGF5UDM6CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCiAg
ICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgorI2lmIEhB
VkUoQ09SRV9HUkFQSElDU19MQUJfQ09MT1JfU1BBQ0UpCiAgICAgICAgIHJldHVybiBsYWJDb2xv
clNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNv
bG9yU3BhY2VSZWYoKTsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1Jf
U1BBQ0UpCisgICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKICAgICBjYXNlIENvbG9yU3BhY2U6OlBy
b1Bob3RvUkdCOgotICAgICAgICByZXR1cm4gcHJvUGhvdG9SR0JDb2xvclNwYWNlUmVmKCk7Cisj
aWYgSEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVy
biBST01NUkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisjZW5kaWYKICAgICBjYXNlIENvbG9yU3BhY2U6OlJlYzIwMjA6Ci0gICAgICAgIHJldHVybiBy
ZWMyMDIwQ29sb3JTcGFjZVJlZigpOworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19JVFVSXzIwMjBf
Q09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVybiBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAgIGNhc2UgQ29sb3JTcGFj
ZTo6U1JHQjoKICAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBD
b2xvclNwYWNlOjpYWVpfRDUwOgotICAgICAgICByZXR1cm4geHl6RDUwQ29sb3JTcGFjZVJlZigp
OworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVy
biB4eXpDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNl
bmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorLy8gTk9URTogVGhpcyBm
dW5jdGlvbiBpcyBndWFyZW50ZWVkIHRvIHJldHVybiBub24tbnVsbCwgdW5saWtlIGNhY2hlZE51
bGxhYmxlQ0dDb2xvclNwYWNlKCkuCiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNo
ZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAg
c3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAg
Y2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6IHsKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVybiBsaW5lYXJT
UkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hv
dWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdCLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDov
L3dlYmtpdC5vcmcvYi84MDAwMC4KKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7
CisjZW5kaWYKKyAgICB9CiAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CiAg
ICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCShyZXZp
c2lvbiAyNzI2NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsMTQgQEAgdm9pZCBHcmFkaWVu
dDo6Y3JlYXRlQ0dHcmFkaWVudCgpCiAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQo
c3RvcC5vZmZzZXQpOwogICAgIH0KIAorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9T
UkdCX0NPTE9SX1NQQUNFKQorICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgIGF1dG8gZXh0ZW5k
ZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlm
CisKICAgICBpZiAoaGFzRXh0ZW5kZWRDb2xvcnMpCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9w
dENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYo
KSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKKyAgICAgICAgbV9ncmFk
aWVudCA9IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvcnMoZXh0ZW5kZWRDb2xvcnNH
cmFkaWVudENvbG9yU3BhY2UsIGNvbG9yc0FycmF5LmdldCgpLCBsb2NhdGlvbnMuZGF0YSgpKSk7
CiAgICAgZWxzZQogICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwogfQo=
</data>
<flag name="review"
          id="438203"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419990</attachid>
            <date>2021-02-11 08:25:29 -0800</date>
            <delta_ts>2021-02-11 09:44:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>have.diff</filename>
            <type>text/plain</type>
            <size>17526</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzI2NTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTEwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXR1cm5pbmcgc1JHQiBmcm9tIENHIGNvbG9yIHNwYWNl
IGZ1bmN0aW9ucyBvbiBmYWlsdXJlIGlzIHRvbyBlcnJvciBwcm9uZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjc2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisgICAg
ICAgIEFkZCBzcGVjaWZpYyBtYWNyb3MgZm9yIGNvbG9yIHNwYWNlcyBzdXBwb3J0ZWQgYnkgQ29y
ZSBHcmFwaGljcy4KKwogMjAyMS0wMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1cHBvcnQgZm9yIHRoZSBsYW5ndWFnZS9zdWJ0aXRs
ZSB0cmFja3MgYnV0dG9uIHVzaW5nIGBVSU1lbnVgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAko
cmV2aXNpb24gMjcyNjU1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODY5
LDMgKzg2OSwxMyBAQAogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9JTlRFUlNUSVRJQUxfRVZF
TlRTIDEKICNlbmRpZgogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNkZWZpbmUgSEFW
RV9DT1JFX0dSQVBISUNTX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFIDEKKyNkZWZpbmUgSEFW
RV9DT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZFX0NP
UkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVfQ09S
RV9HUkFQSElDU19JVFVSXzIwMjBfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZFX0NPUkVfR1JB
UEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UgMQorI2RlZmluZSBIQVZFX0NPUkVfR1JBUEhJ
Q1NfUk9NTVJHQl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVfQ09SRV9HUkFQSElDU19YWVpf
Q09MT1JfU1BBQ0UgMQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI2NTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBA
QAorMjAyMS0wMi0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV0dXJuaW5nIHNSR0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVyZSBp
cyB0b28gZXJyb3IgcHJvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsZWFrQ0dDb2xvcik6CisgICAgICAgIFN3aXRjaCB0byBjaGVja2luZyBmb3IgbnVsbHB0
ciByYXRoZXIgdGhhbiBzUkdCIGFuZCBiZSBleHBsaWNpdCBhYm91dCB3aGVyZSB3ZSBjYW4KKyAg
ICAgICAgYW5kIGNhbm5vdCB1c2UgY29udmVyc2lvbiB0byBFeHRlbmRlZFNSR0IsIHJhdGhlciB0
aGFuIHRoZSBvbGQgYmVoYXZpb3Igd2hlcmUgd2UKKyAgICAgICAgd291bGQgc2VjcmV0bHkgdXNl
IHNSR0Igb24gcGxhdGZvcm1zIHdpdGhvdXQgRXh0ZW5kZWRTUkdCIGFuZCBleHBlY3QgQ0cgdG8g
Y2xhbXAgZm9yCisgICAgICAgIHVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYpOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGxheVAzQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OklUVVJfMjAyMENvbG9y
U3BhY2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6bGFiQ29sb3JTcGFjZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpS
T01NUkdCQ29sb3JTcGFjZVJlZik6CisgICAgICAgIChXZWJDb3JlOjp4eXpDb2xvclNwYWNlUmVm
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZENHQ29sb3JTcGFjZSk6CisgICAgICAgIFJlbmFtZSBjYWNoZWRDR0NvbG9yU3Bh
Y2UgdG8gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UgdG8gaW5kaWNhdGUgdGhhdCBpdCBjYW4K
KyAgICAgICAgbm93IHJldHVybiBudWxscHRyIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMu
IEFkZCBleHBsaWNpdCBndWFyZHMgYXJvdW5kIGNvbG9yCisgICAgICAgIHNwYWNlIGFjY2Vzc29y
cyB0byBlbnN1cmUgdGhleSBhcmUgb25seSBjYWxsZWQgb24gcGxhdGZvcm1zIHdoZXJlIHRoZXkg
YXJlIGtub3duCisgICAgICAgIHRvIGJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6
OmNyZWF0ZUNHR3JhZGllbnQpOgorICAgICAgICBCZSBleHBsaWNpdCBhYm91dCB3aGljaCBjb2xv
ciBzcGFjZSBpcyBiZWluZyB1c2VkIGZvciB0aGUgZ3JhZGllbiB3aGVuIGV4dGVuZGVkIGNvbG9y
cyBhcmUgcHJlc2VudC4KKyAgICAgICAgVGhpcyBpcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBiZWZv
cmUsIGJ1dCBwcmV2aW91c2x5IGl0IHdvdWxkIGhhcHBlbiBzaWxlbnRseSBiZW5lYXRoIGV4dGVu
ZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQorICAgICAgICB3aGljaCBpcyBhIHN1cHJpc2luZyByZXN1
bHQuCisKIDIwMjEtMDItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzI2NTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsMjAgKzk4LDI2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0
IENvbG8KIHsKICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9y
U3BhY2VBbmRDb21wb25lbnRzKCk7CiAKLSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZENH
Q29sb3JTcGFjZShjb2xvclNwYWNlKTsKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51
bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwogCiAgICAgLy8gU29tZSBDRyBwb3J0cyBk
b24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KLSAg
ICAvLyBzUkdCQ29sb3JTcGFjZVJlZigpIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIElu
IHRob3NlIGNhc2VzLCB3ZQotICAgIC8vIG5lZWQgdG8gZWFnZXJseSBjb252ZXJ0IHRoZSBjb2xv
ciBpbnRvIGV4dGVuZGVkIHNSR0Igb3Vyc2VsdmVzIGJlZm9yZQotICAgIC8vIGNyZWF0aW5nIHRo
ZSBDR0NvbG9yUmVmLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIGlu
ZGljYXRlIGxhY2sgb2Ygc3VwcG9ydC4gTWFrZSB0aGlzCi0gICAgLy8gbW9yZSBleHBsaWNpdC4K
LSAgICBpZiAoY29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdCICYmIGNnQ29sb3JTcGFjZSA9
PSBzUkdCQ29sb3JTcGFjZVJlZigpKSB7CisgICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBwb3J0ZWQg
Y29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UgZWFnZXJseSBjb252ZXJ0CisgICAgLy8g
dGhlIGNvbG9yIGludG8gZWl0aGVyIGV4dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4
dGVuZGVkIHNSR0IgaXMKKyAgICAvLyBub3Qgc3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRpbmcgdGhl
IENHQ29sb3JSZWYuCisgICAgaWYgKCFjZ0NvbG9yU3BhY2UpIHsKKyNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKICAgICAgICAgYXV0byBjb2xvckNvbnZl
cnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9y
U3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewogICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpOwogICAgICAgICB9KTsKICAgICAg
ICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9FeHRlbmRl
ZFNSR0JBKTsKICAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOworI2Vsc2UKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0
aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3Ip
IHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcik7
CisgICAgICAgIH0pOworICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29s
b3JDb252ZXJ0ZWRUb1NSR0JBKTsKKyAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9u
ZW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3Bh
Y2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcAkocmV2aXNpb24gMjcyNjU1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTM0ICszMywxMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DR0NvbG9yU3BhY2VS
ZWYgYTk4UkdCQ29sb3JTcGFjZVJlZigpCitDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKQogewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgYTk4UkdCQ29sb3JTcGFjZTsKKyAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBhOThSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUFkb2JlUkdCMTk5OCk7CisjaWYgUExBVEZP
Uk0oV0lOKQorICAgICAgICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90
IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcworICAgICAgICAvLyBj
YXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQg
Y29sb3Igc3BhY2UgaW4gV2luZG93cworICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3Jr
cyBvdXQgbmljZWx5LgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJk
YXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhlZC4KKyAgICAgICAgc1JHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CisgICAgICAg
IGlmICghc1JHQkNvbG9yU3BhY2UpCisgICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogI2Vsc2UKLSAgICAgICAgYTk4UkdCQ29sb3JTcGFj
ZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKKyAgICAgICAgc1JHQkNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CisjZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQorICAgIH0pOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZTsKK30K
KworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKK0NH
Q29sb3JTcGFjZVJlZiBhZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGFkb2JlUkdCMTk5OENvbG9yU3BhY2U7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIGFkb2JlUkdCMTk5OENvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4KTsKKyAgICAgICAgQVNTRVJUKGFkb2JlUkdCMTk5
OENvbG9yU3BhY2UpOwogICAgIH0pOwotICAgIHJldHVybiBhOThSR0JDb2xvclNwYWNlOworICAg
IHJldHVybiBhZG9iZVJHQjE5OThDb2xvclNwYWNlOwogfQorI2VuZGlmCiAKKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRElTUExBWV9QM19DT0xPUl9TUEFDRSkKIENHQ29sb3JTcGFjZVJlZiBkaXNw
bGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpc3Bs
YXlQM0NvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIGRpc3BsYXlQM0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlRGlzcGxheVAzKTsKLSNlbHNlCi0gICAgICAgIGRpc3BsYXlQM0NvbG9yU3BhY2Ug
PSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChkaXNwbGF5UDND
b2xvclNwYWNlKTsKICAgICB9KTsKICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZTsKIH0K
KyNlbmRpZgogCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BB
Q0UpCiBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpCiB7CiAgICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlOwogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IG51bGxwdHI7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKLSNlbmRpZgotICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBleHRlbmRlZCBzUkdCLCBmYWxsIGJhY2sgdG8gc1JH
Qi4KLSAgICAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgY29sb3JTcGFjZSA9IHNS
R0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAgICAgICAgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSA9IGNv
bG9yU3BhY2U7CisgICAgICAgIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKKyAgICAgICAgQVNTRVJU
KGV4dGVuZGVkU1JHQkNvbG9yU3BhY2UpOwogICAgIH0pOwogICAgIHJldHVybiBleHRlbmRlZFNS
R0JDb2xvclNwYWNlOwogfQorI2VuZGlmCiAKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8y
MDIwX0NPTE9SX1NQQUNFKQorQ0dDb2xvclNwYWNlUmVmIElUVVJfMjAyMENvbG9yU3BhY2VSZWYo
KQoreworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgSVRVUjIwMjBDb2xvclNwYWNlOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBJVFVSMjAyMENvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlSVRVUl8yMDIwKTsKKyAgICAgICAgQVNTRVJUKElUVVIy
MDIwQ29sb3JTcGFjZSk7CisgICAgfSk7CisgICAgcmV0dXJuIElUVVIyMDIwQ29sb3JTcGFjZTsK
K30KKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xBQl9DT0xPUl9TUEFDRSkKIENH
Q29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCkKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIGNvbnZlcnNpb24gdG8gTGFiIG9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCi0gICAg
cmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CisjZW5k
aWYKIAotQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQorI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKK0NHQ29sb3JTcGFjZVJlZiBs
aW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpCiB7CiAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBs
aW5lYXJSR0JDb2xvclNwYWNlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGxpbmVhciBzUkdC
LCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi84MDAwMC4KLSAgICAgICAg
bGluZWFyUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQogICAgICAg
ICBsaW5lYXJSR0JDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZUxpbmVhclNSR0IpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChsaW5lYXJSR0JDb2xv
clNwYWNlKTsKICAgICB9KTsKICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZTsKIH0KLQot
Q0dDb2xvclNwYWNlUmVmIHByb1Bob3RvUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBwcm9QaG90b1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHByb1Bob3RvUkdCQ29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VST01NUkdCKTsKLSNlbHNlCi0gICAg
ICAgIHByb1Bob3RvUkdCQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYK
LSAgICB9KTsKLSAgICByZXR1cm4gcHJvUGhvdG9SR0JDb2xvclNwYWNlOwotfQogCi1DR0NvbG9y
U3BhY2VSZWYgcmVjMjAyMENvbG9yU3BhY2VSZWYoKQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19S
T01NUkdCX0NPTE9SX1NQQUNFKQorQ0dDb2xvclNwYWNlUmVmIFJPTU1SR0JDb2xvclNwYWNlUmVm
KCkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHJlYzIwMjBDb2xvclNwYWNlOworICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHJlYzIwMjBDb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUlUVVJfMjAyMCk7Ci0jZWxzZQotICAg
ICAgICByZWMyMDIwQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKKyAg
ICAgICAgUk9NTVJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlUk9NTVJHQik7CisgICAgICAgIEFTU0VSVChST01NUkdCQ29sb3JTcGFjZSk7CiAg
ICAgfSk7Ci0gICAgcmV0dXJuIHJlYzIwMjBDb2xvclNwYWNlOworICAgIHJldHVybiBST01NUkdC
Q29sb3JTcGFjZTsKIH0KKyNlbmRpZgogCi1DR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCitDR0NvbG9yU3Bh
Y2VSZWYgeHl6Q29sb3JTcGFjZVJlZigpCiB7Ci0gICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBz
UkdCQ29sb3JTcGFjZTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHh5ekNvbG9yU3BhY2U7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBPdXQtb2YtZGF0
ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VTUkdCLiBUaGlz
IGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIgdGhvc2UgY29u
ZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93cwotICAgICAg
ICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAgICAvLyBGSVhN
RTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1IHdhcyBmaXhl
ZC4KLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2UpCi0gICAgICAg
ICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotI2Vs
c2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgICAgICB4eXpD
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUdlbmVy
aWNYWVopOworICAgICAgICBBU1NFUlQoeHl6Q29sb3JTcGFjZSk7CiAgICAgfSk7Ci0gICAgcmV0
dXJuIHNSR0JDb2xvclNwYWNlOworICAgIHJldHVybiB4eXpDb2xvclNwYWNlOwogfQotCi1DR0Nv
bG9yU3BhY2VSZWYgeHl6RDUwQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiB4eXpENTBDb2xvclNwYWNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgICAgICB4eXpENTBDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoa0NHQ29sb3JTcGFjZUdlbmVyaWNYWVopOwotI2Vsc2UKLSAgICAgICAgeHl6RDUwQ29sb3JT
cGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CiAjZW5kaWYKLSAgICB9KTsKLSAgICByZXR1cm4g
eHl6RDUwQ29sb3JTcGFjZTsKLX0KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24gMjcyNjU1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDQ1ICszMSwxMDQgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNw
YWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBhOThSR0JDb2xvclNwYWNlUmVmKCk7CitXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JT
cGFjZVJlZiBhZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorCisjaWYgSEFW
RShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9S
VCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisK
KyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQorV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgor
CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xBQl9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBsYWJDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIHByb1Bob3RvUkdCQ29sb3JTcGFjZVJlZigpOwotV0VCQ09SRV9FWFBPUlQg
Q0dDb2xvclNwYWNlUmVmIHJlYzIwMjBDb2xvclNwYWNlUmVmKCk7Ci1XRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKLVdFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKIAotc3RhdGljIGlubGlu
ZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UpCitXRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNl
bmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCitXRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRp
ZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKK1dFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiB4eXpDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworc3RhdGlj
IGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewogICAgIGNhc2Ug
Q29sb3JTcGFjZTo6QTk4UkdCOgotICAgICAgICByZXR1cm4gYTk4UkdCQ29sb3JTcGFjZVJlZigp
OworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKKyAg
ICAgICAgcmV0dXJuIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6
CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCiAgICAgICAg
IHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyNlbmRpZgogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgorI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19MQUJfQ09MT1JfU1BBQ0UpCiAgICAgICAgIHJldHVybiBsYWJDb2xvclNwYWNl
UmVmKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAgIGNhc2Ug
Q29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3Bh
Y2VSZWYoKTsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0Up
CisgICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3Rv
UkdCOgotICAgICAgICByZXR1cm4gcHJvUGhvdG9SR0JDb2xvclNwYWNlUmVmKCk7CisjaWYgSEFW
RShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVybiBST01N
UkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKICAgICBjYXNlIENvbG9yU3BhY2U6OlJlYzIwMjA6Ci0gICAgICAgIHJldHVybiByZWMyMDIw
Q29sb3JTcGFjZVJlZigpOworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19JVFVSXzIwMjBfQ09MT1Jf
U1BBQ0UpCisgICAgICAgIHJldHVybiBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCk7CisjZWxzZQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JH
QjoKICAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBDb2xvclNw
YWNlOjpYWVpfRDUwOgotICAgICAgICByZXR1cm4geHl6RDUwQ29sb3JTcGFjZVJlZigpOworI2lm
IEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCisgICAgICAgIHJldHVybiB4eXpD
b2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorLy8gTk9URTogU2luY2UgdGhpcyBm
dW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBzcGFjZXMgd2hvc2UgY2FsbGVycyBh
bHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2UsIHRoaXMgZnVuY3Rpb24gaXMgZ3Vh
cmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBjYWNoZWROdWxsYWJsZUNHQ29sb3JT
cGFjZSgpLgogc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JT
cGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAg
ICAgICByZXR1cm4gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOiB7CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0xJTkVB
Ul9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKKyNlbHNlCisgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCBiZSBhYmxlIHRv
IHVzZSBsaW5lYXIgc1JHQiwgdGhpcyBpcyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2Iv
ODAwMDAuCisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisgICAg
fQogICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgogICAgICAgICByZXR1cm4g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjcyNjU1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDggKzc3LDE0IEBAIHZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3Jh
ZGllbnQoKQogICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsK
ICAgICB9CiAKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFD
RSkKKyAgICBhdXRvIGV4dGVuZGVkQ29sb3JzR3JhZGllbnRDb2xvclNwYWNlID0gZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZVJlZigpOworI2Vsc2UKKyAgICBhdXRvIGV4dGVuZGVkQ29sb3JzR3JhZGll
bnRDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorCiAgICAgaWYgKGhh
c0V4dGVuZGVkQ29sb3JzKQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50
Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCksIGNvbG9yc0FycmF5
LmdldCgpLCBsb2NhdGlvbnMuZGF0YSgpKSk7CisgICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENG
KENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3JhZGllbnRDb2xvclNw
YWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwogICAgIGVsc2UKICAg
ICAgICAgbV9ncmFkaWVudCA9IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBv
bmVudHMoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRp
b25zLmRhdGEoKSwgbnVtU3RvcHMpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>