<?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>243766</bug_id>
          
          <creation_ts>2022-08-09 21:58:39 -0700</creation_ts>
          <short_desc>[Painting] Add support for decorating box based text box painting</short_desc>
          <delta_ts>2022-09-17 14:01:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=245209</see_also>
          <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>
          <dependson>243526</dependson>
    
    <dependson>243564</dependson>
    
    <dependson>243575</dependson>
    
    <dependson>243576</dependson>
    
    <dependson>243577</dependson>
    
    <dependson>243610</dependson>
    
    <dependson>243611</dependson>
    
    <dependson>243619</dependson>
    
    <dependson>243621</dependson>
    
    <dependson>243632</dependson>
    
    <dependson>243647</dependson>
    
    <dependson>243712</dependson>
    
    <dependson>243732</dependson>
    
    <dependson>243752</dependson>
    
    <dependson>243756</dependson>
    
    <dependson>243762</dependson>
    
    <dependson>243765</dependson>
    
    <dependson>243792</dependson>
    
    <dependson>243921</dependson>
    
    <dependson>243922</dependson>
    
    <dependson>245209</dependson>
    
    <dependson>245316</dependson>
          <blocked>243928</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1890199</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-08-09 21:58:39 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890201</commentid>
    <comment_count>1</comment_count>
      <attachid>461518</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-09 22:01:14 -0700</bug_when>
    <thetext>Created attachment 461518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890807</commentid>
    <comment_count>2</comment_count>
      <attachid>461554</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-11 22:03:37 -0700</bug_when>
    <thetext>Created attachment 461554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890872</commentid>
    <comment_count>3</comment_count>
      <attachid>461554</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-12 07:50:38 -0700</bug_when>
    <thetext>Comment on attachment 461554
Patch

2 small issues still:
1, subpixel width difference on nested inline box underline
2, marked text style is ignored on propagated (nested) inline box drawing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890881</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-08-12 08:08:24 -0700</bug_when>
    <thetext>oh and vertical writing mode, that&apos;s still quite a mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890977</commentid>
    <comment_count>5</comment_count>
      <attachid>461566</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-12 13:21:33 -0700</bug_when>
    <thetext>Created attachment 461566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890978</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-08-12 13:23:18 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891004</commentid>
    <comment_count>7</comment_count>
      <attachid>461567</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-12 14:56:51 -0700</bug_when>
    <thetext>Created attachment 461567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891113</commentid>
    <comment_count>8</comment_count>
      <attachid>461575</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-13 06:56:18 -0700</bug_when>
    <thetext>Created attachment 461575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891121</commentid>
    <comment_count>9</comment_count>
      <attachid>461578</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-13 08:12:15 -0700</bug_when>
    <thetext>Created attachment 461578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891133</commentid>
    <comment_count>10</comment_count>
      <attachid>461583</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-13 09:59:17 -0700</bug_when>
    <thetext>Created attachment 461583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891196</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-13 22:40:20 -0700</bug_when>
    <thetext>Committed 253406@main (519c36a6ca3c): &lt;https://commits.webkit.org/253406@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461583.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891197</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-13 22:41:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/98629973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891258</commentid>
    <comment_count>13</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-08-14 14:17:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/98121284&amp;98188799&amp;98188799&amp;98194323&amp;98209140&amp;98223304&amp;98240132&amp;98250164&amp;98274655&amp;98254665&amp;98273126&amp;98319548&amp;98450106&amp;98450839&amp;98458659&amp;98470568&amp;98505292&amp;98537188&amp;98640439&amp;98645175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891294</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-08-14 22:38:48 -0700</bug_when>
    <thetext>*** Bug 239069 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891328</commentid>
    <comment_count>15</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-08-15 08:14:45 -0700</bug_when>
    <thetext>(In reply to zalan from comment #13)
&gt; &lt;rdar://problem/
&gt; 98121284&amp;98188799&amp;98188799&amp;98194323&amp;98209140&amp;98223304&amp;98240132&amp;98250164&amp;98274
&gt; 655&amp;98254665&amp;98273126&amp;98319548&amp;98450106&amp;98450839&amp;98458659&amp;98470568&amp;98505292&amp;9
&gt; 8537188&amp;98640439&amp;98645175&gt;
and rdar://problem/98468166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898849</commentid>
    <comment_count>16</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-15 16:31:19 -0700</bug_when>
    <thetext>This regressed bug 245209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898965</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-16 07:28:09 -0700</bug_when>
    <thetext>(In reply to zalan from comment #15)
&gt; (In reply to zalan from comment #13)
&gt; &gt; &lt;rdar://problem/
&gt; &gt; 98121284&amp;98188799&amp;98188799&amp;98194323&amp;98209140&amp;98223304&amp;98240132&amp;98250164&amp;98274
&gt; &gt; 655&amp;98254665&amp;98273126&amp;98319548&amp;98450106&amp;98450839&amp;98458659&amp;98470568&amp;98505292&amp;9
&gt; &gt; 8537188&amp;98640439&amp;98645175&gt;
&gt; and rdar://problem/98468166
and rdar://problem/99950939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899243</commentid>
    <comment_count>18</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-17 14:01:39 -0700</bug_when>
    <thetext>(In reply to zalan from comment #17)
&gt; (In reply to zalan from comment #15)
&gt; &gt; (In reply to zalan from comment #13)
&gt; &gt; &gt; &lt;rdar://problem/
&gt; &gt; &gt; 98121284&amp;98188799&amp;98188799&amp;98194323&amp;98209140&amp;98223304&amp;98240132&amp;98250164&amp;98274
&gt; &gt; &gt; 655&amp;98254665&amp;98273126&amp;98319548&amp;98450106&amp;98450839&amp;98458659&amp;98470568&amp;98505292&amp;9
&gt; &gt; &gt; 8537188&amp;98640439&amp;98645175&gt;
&gt; &gt; and rdar://problem/98468166
&gt; and rdar://problem/99950939
and rdar://problem/100071411</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461518</attachid>
            <date>2022-08-09 22:01:14 -0700</date>
            <delta_ts>2022-08-11 22:03:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220809220113.patch</filename>
            <type>text/plain</type>
            <size>9759</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkNTEwMjc1YmE1MTU3MmE3YzFmNjhkOWM5Mzk4YjU0NWQxYWQzYmVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDkgQXVnIDIwMjIgMjE6NTg6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IEFkZCBzdXBwb3J0IGZvciBkZWNvcmF0aW5nIGJveCBiYXNlZCB0ZXh0IGJveAogcGFpbnRpbmcg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Mzc2NgoKUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgpDb2xsZWN0IHRoZSBhbmNlc3RvciBpbmxpbmUgYm94ZXMgd2l0
aCBkZWNvcmF0aW9uIHVuZGVybGluZSBhbmQgdXNlIHRoZWlyIHN0eWxlL2dlb21ldHJ5IHRvIGNh
bGwgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucygpLgoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgooV2ViQ29yZTo6
VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpUZXh0Qm94UGFpbnRlcik6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaDoKLS0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIHwgMTE2ICsrKysrKysrKysrKysr
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaCAgIHwgICAx
ICsKIDIgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggNWVlNjEy
YjgxMDQzLi5jMmM1OTY4NTRiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRC
b3hQYWludGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5bGUuaCIKICNpbmNsdWRlICJM
ZWdhY3lJbmxpbmVUZXh0Qm94LmgiCkBAIC03MCw2ICs3MSw3IEBAIFRleHRCb3hQYWludGVyPFRl
eHRCb3hQYXRoPjo6VGV4dEJveFBhaW50ZXIoVGV4dEJveFBhdGgmJiB0ZXh0Qm94LCBQYWludElu
Zm8mIHBhCiAgICAgLCBtX3BhaW50VGV4dFJ1bihtX3RleHRCb3guY3JlYXRlVGV4dFJ1bihJbmxp
bmVJdGVyYXRvcjo6Q3JlYXRlVGV4dFJ1bk1vZGU6OlBhaW50aW5nKSkKICAgICAsIG1fcGFpbnRJ
bmZvKHBhaW50SW5mbykKICAgICAsIG1fc2VsZWN0YWJsZVJhbmdlKG1fdGV4dEJveC5zZWxlY3Rh
YmxlUmFuZ2UoKSkKKyAgICAsIG1fcGFpbnRPZmZzZXQocGFpbnRPZmZzZXQpCiAgICAgLCBtX3Bh
aW50UmVjdChjb21wdXRlUGFpbnRSZWN0KHBhaW50T2Zmc2V0KSkKICAgICAsIG1faXNGaXJzdExp
bmUobV90ZXh0Qm94LmlzRmlyc3RMaW5lKCkpCiAgICAgLCBtX2lzQ29tYmluZWRUZXh0KGlzPFJl
bmRlckNvbWJpbmVUZXh0PihtX3JlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJDb21iaW5lVGV4
dD4obV9yZW5kZXJlcikuaXNDb21iaW5lZCgpKQpAQCAtNDYyLDQ1ICs0NjQsODcgQEAgdm9pZCBU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKFRl
eHREZWNvcmF0aW9uUGFpbnQKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENU
TShyb3RhdGlvbihtX3BhaW50UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICBhdXRvIHRleHRSdW4g
PSBtX3BhaW50VGV4dFJ1bi5zdWJSdW4obWFya2VkVGV4dC5zdGFydE9mZnNldCwgbWFya2VkVGV4
dC5lbmRPZmZzZXQgLSBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0KTsKLSAgICBhdXRvJiBzdHlsZVRv
VXNlID0gbV9pc0ZpcnN0TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5bGUoKSA6IG1fcmVu
ZGVyZXIuc3R5bGUoKTsKLSAgICBjb25zdCBhdXRvJiB0ZXh0RGVjb3JhdGlvblN0eWxlcyA9IG1h
cmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXM7Ci0gICAgYXV0byBjb21wdXRlZFRl
eHREZWNvcmF0aW9uVHlwZSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0g
c3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgICAgICB0ZXh0RGVjb3Jh
dGlvbnMuYWRkKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RG
b3JTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlcykpOwotICAgICAgICByZXR1cm4gdGV4dERlY29y
YXRpb25zOwotICAgIH0oKTsKLSAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25H
ZW9tZXRyeSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBtX2RvY3Vt
ZW50LmRldmljZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAgICAgYXV0byB0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5bGVUb1VzZSwgZGV2
aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNldCA9IFsmXSB7Ci0g
ICAgICAgICAgICBpZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMC5mOwot
ICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBh
aW50aW5nKHN0eWxlVG9Vc2UsIG1ha2VJdGVyYXRvcigpKTsKLSAgICAgICAgICAgIGF1dG8gd2F2
eU9mZnNldCA9IHRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUg
PT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigp
IDogMC5mOwotICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5T2Zmc2V0OwotICAg
ICAgICB9OwotICAgICAgICBhdXRvIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNvbXB1
dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFj
dG9yKTsKLSAgICAgICAgYXV0byBvdmVybGluZU9mZnNldCA9IFsmXSB7Ci0gICAgICAgICAgICBp
ZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGlu
ZTo6T3ZlcmxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiAwLmY7Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25l
c3MgLSAodGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSA6IDAu
Zik7Ci0gICAgICAgIH07CisgICAgYXV0byB0ZXh0Qm94ID0gbWFrZUl0ZXJhdG9yKCk7CiAKLSAg
ICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6QmFja2dyb3VuZERlY29yYXRpb25H
ZW9tZXRyeSB7Ci0gICAgICAgICAgICB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChzbmFwcGVkU2Vs
ZWN0aW9uUmVjdCksCi0gICAgICAgICAgICBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2NhdGlvbigp
LAotICAgICAgICAgICAgc25hcHBlZFNlbGVjdGlvblJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAg
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLAotICAgICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0KCks
Ci0gICAgICAgICAgICBvdmVybGluZU9mZnNldCgpLAotICAgICAgICAgICAgY29tcHV0ZWRMaW5l
dGhyb3VnaENlbnRlcihzdHlsZVRvVXNlLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKSwKLSAgICAgICAgICAgIHN0eWxlVG9Vc2UubWV0cmljc09m
UHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIDIuZiwKLSAgICAgICAgICAgIHdhdnlTdHJva2VQYXJh
bWV0ZXJzKHN0eWxlVG9Vc2UuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpCi0gICAgICAgIH07Cisg
ICAgc3RydWN0IERlY29yYXRpbmdCb3ggeworICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyIHsgbnVsbHB0ciB9OworICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxl
cyB0ZXh0RGVjb3JhdGlvblN0eWxlczsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhdGlvbjsKICAg
ICB9OworICAgIFZlY3RvcjxEZWNvcmF0aW5nQm94PiBkZWNvcmF0aW5nQm94TGlzdDsKKyAgICBh
dXRvIGNvbGxlY3REZWNvcmF0aW5nQm94ZXMgPSBbJl0geworICAgICAgICBhdXRvIGFuY2VzdG9y
SW5saW5lQm94ID0gdGV4dEJveC0+cGFyZW50SW5saW5lQm94KCk7CisgICAgICAgIGlmIChhbmNl
c3RvcklubGluZUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAgICAgICAgICAgZGVjb3JhdGlu
Z0JveExpc3QuYXBwZW5kKHsgJm1fcmVuZGVyZXIsIG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29y
YXRpb25TdHlsZXMsIHNuYXBwZWRTZWxlY3Rpb25SZWN0LmxvY2F0aW9uKCkgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBzdHlsZVRvVXNlID0gbV9p
c0ZpcnN0TGluZSA/IGFuY2VzdG9ySW5saW5lQm94LnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUo
KSA6IGFuY2VzdG9ySW5saW5lQm94LnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAgICAgaWYgKHN0
eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpKSB7CisgICAgICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBlbmQoewor
ICAgICAgICAgICAgICAgICZhbmNlc3RvcklubGluZUJveC5yZW5kZXJlcigpLAorICAgICAgICAg
ICAgICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoYW5jZXN0b3JJ
bmxpbmVCb3gucmVuZGVyZXIoKSwgc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
LCBtX2lzRmlyc3RMaW5lKSwKKyAgICAgICAgICAgICAgICB7IHNuYXBwZWRTZWxlY3Rpb25SZWN0
LngoKSwgbV9wYWludE9mZnNldC55KCkgKyBhbmNlc3RvcklubGluZUJveC5sb2dpY2FsVG9wKCkg
fQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFhbmNlc3Rvcklu
bGluZUJveC5pc1Jvb3RJbmxpbmVCb3goKSkgeworICAgICAgICAgICAgYW5jZXN0b3JJbmxpbmVC
b3ggPSBhbmNlc3RvcklubGluZUJveC5wYXJlbnRJbmxpbmVCb3goKTsKKworICAgICAgICAgICAg
YXV0byYgZGVjb3JhdGluZ0JveFJlbmRlcmVyID0gYW5jZXN0b3JJbmxpbmVCb3gucmVuZGVyZXIo
KTsKKyAgICAgICAgICAgIGF1dG8mIHN0eWxlVG9Vc2UgPSBtX2lzRmlyc3RMaW5lID8gZGVjb3Jh
dGluZ0JveFJlbmRlcmVyLmZpcnN0TGluZVN0eWxlKCkgOiBkZWNvcmF0aW5nQm94UmVuZGVyZXIu
c3R5bGUoKTsKKyAgICAgICAgICAgIGF1dG8gaGFzRGVjb3JhdGlvblVuZGVybGluZSA9IHN0eWxl
VG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpV
bmRlcmxpbmUpIHx8IChhbmNlc3RvcklubGluZUJveC5pc1Jvb3RJbmxpbmVCb3goKSAmJiBzdHls
ZVRvVXNlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpKTsgCisgICAgICAgICAgICBpZiAoaGFzRGVjb3JhdGlvblVuZGVybGlu
ZSkgeworICAgICAgICAgICAgICAgIGRlY29yYXRpbmdCb3hMaXN0LmFwcGVuZCh7CisgICAgICAg
ICAgICAgICAgICAgICZkZWNvcmF0aW5nQm94UmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAg
IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoZGVjb3JhdGluZ0JveFJl
bmRlcmVyLCBzdHlsZVRvVXNlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksIG1faXNGaXJzdExp
bmUpLAorICAgICAgICAgICAgICAgICAgICB7IHNuYXBwZWRTZWxlY3Rpb25SZWN0LngoKSwgbV9w
YWludE9mZnNldC55KCkgKyBhbmNlc3RvcklubGluZUJveC5sb2dpY2FsVG9wKCkgfQorICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICBjb2xs
ZWN0RGVjb3JhdGluZ0JveGVzKCk7CisKKworICAgIGZvciAoYXV0byYgZGVjb3JhdGluZ0JveCA6
IG1ha2VSZXZlcnNlZFJhbmdlKGRlY29yYXRpbmdCb3hMaXN0KSkgeworICAgICAgICBhdXRvJiBz
dHlsZVRvVXNlID0gbV9pc0ZpcnN0TGluZSA/IGRlY29yYXRpbmdCb3gucmVuZGVyZXItPmZpcnN0
TGluZVN0eWxlKCkgOiBkZWNvcmF0aW5nQm94LnJlbmRlcmVyLT5zdHlsZSgpOworICAgICAgICBh
dXRvIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlID0gWyZdIHsKKyAgICAgICAgICAgIGF1dG8g
dGV4dERlY29yYXRpb25zID0gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwor
ICAgICAgICAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlv
blN0eWxlcykpOworICAgICAgICAgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uczsKKyAgICAgICAg
fSgpOworICAgICAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSA9
IFsmXSB7CisgICAgICAgICAgICBhdXRvIGRldmljZVNjYWxlRmFjdG9yID0gbV9kb2N1bWVudC5k
ZXZpY2VTY2FsZUZhY3RvcigpOworCisgICAgICAgICAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzID0gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNldCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwLmY7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zm
c2V0Rm9yVGV4dEJveFBhaW50aW5nKHN0eWxlVG9Vc2UsIHRleHRCb3gpOworICAgICAgICAgICAg
ICAgIGF1dG8gd2F2eU9mZnNldCA9IGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMu
dW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8g
d2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkgOiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGJhc2VPZmZzZXQgKyB3YXZ5T2Zmc2V0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1
dG8gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRBdXRvVGV4dERlY29yYXRp
b25UaGlja25lc3Moc3R5bGVUb1VzZSwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICAgICAg
YXV0byBvdmVybGluZU9mZnNldCA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRl
ZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25lc3Mg
LSAoZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9u
U3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9tRGVjb3Jh
dGlvbigpIDogMC5mKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHJldHVybiBUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgeworICAgICAg
ICAgICAgICAgIHRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KHNuYXBwZWRTZWxlY3Rpb25SZWN0KSwK
KyAgICAgICAgICAgICAgICBkZWNvcmF0aW5nQm94LmxvY2F0aW9uLAorICAgICAgICAgICAgICAg
IHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgdGV4dERlY29y
YXRpb25UaGlja25lc3MsCisgICAgICAgICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0KCksCisgICAg
ICAgICAgICAgICAgb3ZlcmxpbmVPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICBjb21wdXRlZExp
bmV0aHJvdWdoQ2VudGVyKHN0eWxlVG9Vc2UsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBhdXRv
VGV4dERlY29yYXRpb25UaGlja25lc3MpLAorICAgICAgICAgICAgICAgIHN0eWxlVG9Vc2UubWV0
cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSArIDIuZiwKKyAgICAgICAgICAgICAgICB3YXZ5
U3Ryb2tlUGFyYW1ldGVycyhzdHlsZVRvVXNlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKQorICAg
ICAgICAgICAgfTsKKyAgICAgICAgfTsKIAotICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50QmFj
a2dyb3VuZERlY29yYXRpb25zKHRleHRSdW4sIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25H
ZW9tZXRyeSgpLCBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSwgdGV4dERlY29yYXRpb25TdHls
ZXMpOworICAgICAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyh0ZXh0UnVuLCBjb21wdXRlZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkoKSwgY29tcHV0
ZWRUZXh0RGVjb3JhdGlvblR5cGUsIGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMp
OworICAgIH0KIAogICAgIGlmIChtX2lzQ29tYmluZWRUZXh0KQogICAgICAgICBtX3BhaW50SW5m
by5jb250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRSZWN0LCBDb3VudGVyY2xvY2t3
aXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCmluZGV4IDAw
M2QzNDgyNjlhYy4uNWZmYmM2YjkwZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuaApAQCAtOTAsNiArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgVGV4
dFJ1biBtX3BhaW50VGV4dFJ1bjsKICAgICBQYWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNv
bnN0IFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UgbV9zZWxlY3RhYmxlUmFuZ2U7CisgICAgY29uc3Qg
TGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsKICAgICBjb25zdCBGbG9hdFJlY3QgbV9wYWludFJl
Y3Q7CiAgICAgY29uc3QgYm9vbCBtX2lzRmlyc3RMaW5lOwogICAgIGNvbnN0IGJvb2wgbV9pc0Nv
bWJpbmVkVGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461554</attachid>
            <date>2022-08-11 22:03:37 -0700</date>
            <delta_ts>2022-08-12 07:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220811220336.patch</filename>
            <type>text/plain</type>
            <size>21107</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5OGNlMmZlOTRkODdjNDE1NWJkYzZkMTU0ZjQ5NjQzZjdlZDhkODAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3Jl
OjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6
OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlv
bnMpOgooV2ViQ29yZTo6Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4
dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJv
eCk6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3Vu
ZERlY29yYXRpb25zKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFp
bnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmNwcDoKKFdlYkNvcmU6OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRS
dW5PZmZzZXRGcm9tQm90dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0
Qm94UGFpbnRpbmcpOgoqIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
OgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE0
MSArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5oICAgICB8ICAxMyArLQogLi4uL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIu
Y3BwICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5jcHAgICB8ICAyMSArKy0KIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5oICAgICB8ICAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNTUg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRC
b3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5j
cHAKaW5kZXggODU0YWJmYWQ1ZjU4Li41MjQ1ZWQ4ZDkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5bGUuaCIKICNp
bmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCkBAIC03MCw2ICs3MSw3IEBAIFRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6VGV4dEJveFBhaW50ZXIoVGV4dEJveFBhdGgmJiB0ZXh0Qm94
LCBQYWludEluZm8mIHBhCiAgICAgLCBtX3BhaW50VGV4dFJ1bihtX3RleHRCb3guY3JlYXRlVGV4
dFJ1bihJbmxpbmVJdGVyYXRvcjo6Q3JlYXRlVGV4dFJ1bk1vZGU6OlBhaW50aW5nKSkKICAgICAs
IG1fcGFpbnRJbmZvKHBhaW50SW5mbykKICAgICAsIG1fc2VsZWN0YWJsZVJhbmdlKG1fdGV4dEJv
eC5zZWxlY3RhYmxlUmFuZ2UoKSkKKyAgICAsIG1fcGFpbnRPZmZzZXQocGFpbnRPZmZzZXQpCiAg
ICAgLCBtX3BhaW50UmVjdChjb21wdXRlUGFpbnRSZWN0KHBhaW50T2Zmc2V0KSkKICAgICAsIG1f
aXNGaXJzdExpbmUobV90ZXh0Qm94LmlzRmlyc3RMaW5lKCkpCiAgICAgLCBtX2lzQ29tYmluZWRU
ZXh0KGlzPFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJD
b21iaW5lVGV4dD4obV9yZW5kZXJlcikuaXNDb21iaW5lZCgpKQpAQCAtMjgyLDE3ICsyODQsMTcg
QEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZEFuZERl
Y29yYXRpb25zKCkKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IG1hcmtlZFRleHQu
ZW5kT2Zmc2V0OwogICAgICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgZW5kT2Zmc2V0KSB7CiAg
ICAgICAgICAgICAgICAgLy8gQXZvaWQgbWVhc3VyaW5nIHRoZSB0ZXh0IHdoZW4gdGhlIGVudGly
ZSBsaW5lIGJveCBpcyBzZWxlY3RlZCBhcyBhbiBvcHRpbWl6YXRpb24uCi0gICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IHNuYXBwZWRTZWxlY3Rpb25SZWN0ID0gbV9wYWludFJlY3Q7CisgICAgICAg
ICAgICAgICAgYXV0byBzbmFwcGVkUGFpbnRSZWN0ID0gbV9wYWludFJlY3Q7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0T2Zmc2V0IHx8IGVuZE9mZnNldCAhPSBtX3BhaW50VGV4dFJ1bi5sZW5n
dGgoKSkgewogICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSB7
IG1fcGFpbnRSZWN0LngoKSwgbV9wYWludFJlY3QueSgpLCBtX3BhaW50UmVjdC53aWR0aCgpLCBt
X3BhaW50UmVjdC5oZWlnaHQoKSB9OwogICAgICAgICAgICAgICAgICAgICBmb250Q2FzY2FkZSgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KG1fcGFpbnRUZXh0UnVuLCBzZWxlY3Rpb25SZWN0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgc25hcHBlZFNl
bGVjdGlvblJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24o
c2VsZWN0aW9uUmVjdCwgbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpLCBtX3BhaW50VGV4
dFJ1bi5sdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRQYWludFJlY3QgPSBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgbV9k
b2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpLCBtX3BhaW50VGV4dFJ1bi5sdHIoKSk7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgVGV4dERlY29yYXRpb25QYWludGVyIGRl
Y29yYXRpb25QYWludGVyID0gY3JlYXRlRGVjb3JhdGlvblBhaW50ZXIobWFya2VkVGV4dCwgdGV4
dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRC
YWNrZ3JvdW5kRGVjb3JhdGlvbnMoZGVjb3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0KTsKKyAgICAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25QYWludGVy
ID0gY3JlYXRlRGVjb3JhdGlvblBhaW50ZXIobWFya2VkVGV4dCwgdGV4dERlY29yYXRpb25TZWxl
Y3Rpb25DbGlwT3V0UmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbnMoZGVjb3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRQYWludFJlY3QpOwog
ICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChtYXJrZWRUZXh0KTsKLSAgICAgICAgICAg
ICAgICBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0aW9uUGFpbnRlciwgbWFya2Vk
VGV4dCwgc25hcHBlZFNlbGVjdGlvblJlY3QpOworICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdy
b3VuZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkUGFp
bnRSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC00NTUs
NTkgKzQ1NywxMDggQEAgc3RhdGljIGlubGluZSBmbG9hdCBjb21wdXRlZExpbmV0aHJvdWdoQ2Vu
dGVyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlLCBmbG8KICAgICByZXR1cm4gY2VudGVy
IC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwogfQogCitzdGF0aWMgaW5saW5lIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMm
IHRleHREZWNvcmF0aW9uU3R5bGVzKQoreworICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0gc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKyAgICB0ZXh0RGVjb3JhdGlvbnMuYWRkKFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZSh0ZXh0
RGVjb3JhdGlvblN0eWxlcykpOworICAgIHJldHVybiB0ZXh0RGVjb3JhdGlvbnM7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94
UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYg
ZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgc25hcHBlZFNlbGVjdGlvblJlY3QpCit2b2lkIFRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6Y29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goRGVjb3JhdGlu
Z0JveExpc3QmIGRlY29yYXRpbmdCb3hMaXN0LCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJv
eEl0ZXJhdG9yJiB0ZXh0Qm94LCBGbG9hdFBvaW50IHRleHRCb3hMb2NhdGlvbiwgY29uc3QgVGV4
dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIG92ZXJyaWRlRGVjb3JhdGlvblN0eWxlKQorewor
ICAgIGF1dG8gYW5jZXN0b3JJbmxpbmVCb3ggPSB0ZXh0Qm94LT5wYXJlbnRJbmxpbmVCb3goKTsK
KyAgICAvLyBGSVhNRTogVmVydGljYWwgd3JpdGluZyBtb2RlIG5lZWRzIHNvbWUgY29vcmRpbmF0
ZSBzcGFjZSB0cmFuZm9ybWF0aW9uIGZvciBwYXJlbnQgaW5saW5lIGJveGVzIGFzIHdlIHJvdGF0
ZSB0aGUgY29udGVudCB3aXRoIG1fcGFpbnRSZWN0IChzZWUgOjpwYWludCkKKyAgICBpZiAoYW5j
ZXN0b3JJbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpIHx8ICF0ZXh0Qm94LT5pc0hvcml6b250
YWwoKSkgeworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBlbmQoeworICAgICAgICAgICAg
YW5jZXN0b3JJbmxpbmVCb3gsCisgICAgICAgICAgICBtX2lzRmlyc3RMaW5lID8gbV9yZW5kZXJl
ci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpLAorICAgICAgICAgICAgb3Zl
cnJpZGVEZWNvcmF0aW9uU3R5bGUsCisgICAgICAgICAgICB0ZXh0Qm94TG9jYXRpb24KKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbnVtIFVzZU92ZXJyaWRlckRl
Y29yYXRpb25TdHlsZSA6IGJvb2wgeyBZZXMsIE5vIH07CisgICAgYXV0byBhcHBlbmRJZklzRGVj
b3JhdGluZ0JveEZvckJhY2tncm91bmQgPSBbJl0gKGF1dG8mIGlubGluZUJveCwgYXV0byB1c2VP
dmVycmlkZXJEZWNvcmF0aW9uU3R5bGUpIHsKKyAgICAgICAgYXV0byYgc3R5bGUgPSBtX2lzRmly
c3RMaW5lID8gaW5saW5lQm94LT5yZW5kZXJlcigpLmZpcnN0TGluZVN0eWxlKCkgOiBpbmxpbmVC
b3gtPnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAgICAgLy8gPGZvbnQ+IGFuZCA8YT4gYXJlIGFs
d2F5cyBjb25zaWRlcmVkIGRlY29yYXRpbmcgYm94ZXMuCisgICAgICAgIGF1dG8qIGVsZW1lbnQg
PSBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuZWxlbWVudCgpOworICAgICAgICBhdXRvIGlzRGVjb3Jh
dGluZ0JveEZvckJhY2tncm91bmQgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbkxpbmUoKS5jb250YWlu
c0FueSh7IFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6
Ok92ZXJsaW5lIH0pCisgICAgICAgICAgICB8fCAoaW5saW5lQm94LT5pc1Jvb3RJbmxpbmVCb3go
KSAmJiBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zQW55KHsgVGV4dERl
Y29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUgfSkp
CisgICAgICAgICAgICB8fCAoZWxlbWVudCAmJiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVt
ZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9udFRhZykpKTsKKworICAg
ICAgICBpZiAoIWlzRGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgZGVjb3JhdGluZ0JveExpc3QuYXBwZW5kKHsKKyAgICAgICAgICAgIGFu
Y2VzdG9ySW5saW5lQm94LAorICAgICAgICAgICAgc3R5bGUsCisgICAgICAgICAgICB1c2VPdmVy
cmlkZXJEZWNvcmF0aW9uU3R5bGUgPT0gVXNlT3ZlcnJpZGVyRGVjb3JhdGlvblN0eWxlOjpZZXMg
PyBvdmVycmlkZURlY29yYXRpb25TdHlsZSA6IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVz
Rm9yUmVuZGVyZXIoYW5jZXN0b3JJbmxpbmVCb3gtPnJlbmRlcmVyKCksIHN0eWxlLnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCksIG1faXNGaXJzdExpbmUpLAorICAgICAgICAgICAgeyB0ZXh0Qm94
TG9jYXRpb24ueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSArIGFuY2VzdG9ySW5saW5lQm94LT5sb2dp
Y2FsVG9wKCkgfQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IEZpZ3VyZSBv
dXQgaWYgdGhlIGRlY29yYXRpb24gc3R5bGVzIGNvbWluZyBmcm9tIHRoZSBzdHlsZWQgbWFya2Vk
IHRleHQgc2hvdWxkIGJlIHVzZWQgb24gdGhlIGNsb3Nlc3QgaW5saW5lIGJveCAoZGlyZWN0IHBh
cmVudCkuCisgICAgYXBwZW5kSWZJc0RlY29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKGFuY2VzdG9y
SW5saW5lQm94LCBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGU6Olllcyk7CisgICAgd2hpbGUg
KCFhbmNlc3RvcklubGluZUJveC0+aXNSb290SW5saW5lQm94KCkpIHsKKyAgICAgICAgYW5jZXN0
b3JJbmxpbmVCb3ggPSBhbmNlc3RvcklubGluZUJveC0+cGFyZW50SW5saW5lQm94KCk7CisgICAg
ICAgIGFwcGVuZElmSXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZChhbmNlc3RvcklubGluZUJv
eCwgVXNlT3ZlcnJpZGVyRGVjb3JhdGlvblN0eWxlOjpObyk7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KK3ZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+
OjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29y
YXRpb25QYWludGVyLCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHRleHRCb3hQYWludFJlY3QpCiB7CiAgICAgaWYgKG1faXNDb21iaW5lZFRleHQp
CiAgICAgICAgIG1fcGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWlu
dFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgYXV0byB0ZXh0UnVuID0gbV9wYWludFRleHRSdW4u
c3ViUnVuKG1hcmtlZFRleHQuc3RhcnRPZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0IC0gbWFy
a2VkVGV4dC5zdGFydE9mZnNldCk7Ci0gICAgYXV0byYgc3R5bGVUb1VzZSA9IG1faXNGaXJzdExp
bmUgPyBtX3JlbmRlcmVyLmZpcnN0TGluZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCk7Ci0g
ICAgY29uc3QgYXV0byYgdGV4dERlY29yYXRpb25TdHlsZXMgPSBtYXJrZWRUZXh0LnN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGVzOwotICAgIGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUg
PSBbJl0gewotICAgICAgICBhdXRvIHRleHREZWNvcmF0aW9ucyA9IHN0eWxlVG9Vc2UudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OnRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29y
YXRpb25TdHlsZXMpKTsKLSAgICAgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uczsKLSAgICB9KCk7
Ci0gICAgYXV0byBjb21wdXRlZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgPSBbJl0gewot
ICAgICAgICBhdXRvIGRldmljZVNjYWxlRmFjdG9yID0gbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZh
Y3RvcigpOwotCi0gICAgICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRl
ZFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFjdG9yKTsK
LSAgICAgICAgYXV0byB1bmRlcmxpbmVPZmZzZXQgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFj
b21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVu
ZGVybGluZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDAuZjsKLSAgICAgICAgICAgIGF1dG8g
YmFzZU9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhzdHlsZVRvVXNl
LCBtYWtlSXRlcmF0b3IoKSk7Ci0gICAgICAgICAgICBhdXRvIHdhdnlPZmZzZXQgPSB0ZXh0RGVj
b3JhdGlvblN0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9u
U3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSA6IDAuZjsKLSAgICAgICAg
ICAgIHJldHVybiBiYXNlT2Zmc2V0ICsgd2F2eU9mZnNldDsKLSAgICAgICAgfTsKLSAgICAgICAg
YXV0byBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZEF1dG9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGF1
dG8gb3ZlcmxpbmVPZmZzZXQgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHRE
ZWNvcmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gMC5mOwotICAgICAgICAgICAgcmV0dXJuIGF1dG9UZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gKHRleHREZWNvcmF0
aW9uU3R5bGVzLm92ZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpXYXZ5ID8gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkgOiAwLmYpOwotICAgICAgICB9Owog
Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0
aW9uR2VvbWV0cnkgewotICAgICAgICAgICAgdGV4dE9yaWdpbkZyb21QYWludFJlY3Qoc25hcHBl
ZFNlbGVjdGlvblJlY3QpLAotICAgICAgICAgICAgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRp
b24oKSwKLSAgICAgICAgICAgIHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksCi0gICAgICAg
ICAgICB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywKLSAgICAgICAgICAgIHVuZGVybGluZU9mZnNl
dCgpLAotICAgICAgICAgICAgb3ZlcmxpbmVPZmZzZXQoKSwKLSAgICAgICAgICAgIGNvbXB1dGVk
TGluZXRocm91Z2hDZW50ZXIoc3R5bGVUb1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyksCi0gICAgICAgICAgICBzdHlsZVRvVXNlLm1ldHJp
Y3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgKyAyLmYsCi0gICAgICAgICAgICB3YXZ5U3Ryb2tl
UGFyYW1ldGVycyhzdHlsZVRvVXNlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKQorICAgIGF1dG8g
dGV4dEJveCA9IG1ha2VJdGVyYXRvcigpOworICAgIGF1dG8gZGVjb3JhdGluZ0JveExpc3QgPSBE
ZWNvcmF0aW5nQm94TGlzdCB7IH07CisgICAgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRC
b3goZGVjb3JhdGluZ0JveExpc3QsIHRleHRCb3gsIHRleHRCb3hQYWludFJlY3QubG9jYXRpb24o
KSwgbWFya2VkVGV4dC5zdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcyk7CisKKyAgICBmb3IgKGF1
dG8mIGRlY29yYXRpbmdCb3ggOiBtYWtlUmV2ZXJzZWRSYW5nZShkZWNvcmF0aW5nQm94TGlzdCkp
IHsKKyAgICAgICAgYXV0byBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSA9IFdlYkNvcmU6OmNv
bXB1dGVkVGV4dERlY29yYXRpb25UeXBlKGRlY29yYXRpbmdCb3guc3R5bGUsIGRlY29yYXRpbmdC
b3gudGV4dERlY29yYXRpb25TdHlsZXMpOworICAgICAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3Vu
ZERlY29yYXRpb25HZW9tZXRyeSA9IFsmXSB7CisgICAgICAgICAgICBhdXRvIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5n
Qm94LnN0eWxlLCBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAg
YXV0byB1bmRlcmxpbmVPZmZzZXQgPSBbJl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0
ZWRUZXh0RGVjb3JhdGlvblR5cGUuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC5mOworICAgICAgICAgICAgICAgIGF1
dG8gYmFzZU9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhkZWNvcmF0
aW5nQm94LmlubGluZUJveCwgZGVjb3JhdGluZ0JveC5zdHlsZSk7CisgICAgICAgICAgICAgICAg
YXV0byB3YXZ5T2Zmc2V0ID0gZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRl
cmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5
T2Zmc2V0RnJvbURlY29yYXRpb24oKSA6IDAuZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFz
ZU9mZnNldCArIHdhdnlPZmZzZXQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYXV0byBh
dXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxlLCBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgICAgICAgICAgYXV0byBvdmVybGluZU9mZnNldCA9IFsmXSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbkxpbmU6Ok92ZXJsaW5lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERl
Y29yYXRpb25UaGlja25lc3MgLSAoZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy5v
dmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdh
dnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIDogMC5mKTsKKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9u
R2VvbWV0cnkgeworICAgICAgICAgICAgICAgIHRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KHRleHRC
b3hQYWludFJlY3QpLAorICAgICAgICAgICAgICAgIGRlY29yYXRpbmdCb3gubG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgdGV4dEJveFBhaW50UmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAg
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLAorICAgICAgICAgICAgICAgIHVuZGVybGluZU9mZnNl
dCgpLAorICAgICAgICAgICAgICAgIG92ZXJsaW5lT2Zmc2V0KCksCisgICAgICAgICAgICAgICAg
Y29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihkZWNvcmF0aW5nQm94LnN0eWxlLCB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcywgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKSwKKyAgICAgICAgICAg
ICAgICBkZWNvcmF0aW5nQm94LnN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkg
KyAyLmYsCisgICAgICAgICAgICAgICAgd2F2eVN0cm9rZVBhcmFtZXRlcnMoZGVjb3JhdGluZ0Jv
eC5zdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSkKKyAgICAgICAgICAgIH07CiAgICAgICAg
IH07Ci0gICAgfTsKIAotICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50QmFja2dyb3VuZERlY29y
YXRpb25zKHRleHRSdW4sIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSgpLCBj
b21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSwgdGV4dERlY29yYXRpb25TdHlsZXMpOworICAgICAg
ICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEJhY2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBj
b21wdXRlZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3Jh
dGlvblR5cGUsIGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMpOworICAgIH0KIAog
ICAgIGlmIChtX2lzQ29tYmluZWRUZXh0KQogICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCku
Y29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0
Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRl
ciYgZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc25hcHBlZFNlbGVjdGlvblJlY3QpCit2b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRp
b25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRlciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFy
a2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0ZXh0Qm94UGFpbnRSZWN0KQogewogICAgIGF1dG8m
IHN0eWxlVG9Vc2UgPSBtX2lzRmlyc3RMaW5lID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgp
IDogbV9yZW5kZXJlci5zdHlsZSgpOwogICAgIGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5
cGUgPSBbJl0gewpAQCAtNTI1LDggKzU3Niw4IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJv
eFBhdGg+OjpwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50CiAg
ICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IG1fZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgYXV0byBs
aW5ldGhyb3VnaENlbnRlciA9IGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoc3R5bGVUb1VzZSwg
dGV4dERlY29yYXRpb25UaGlja25lc3MsIGNvbXB1dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzKHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgZGVjb3JhdGlvblBhaW50
ZXIucGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoeyBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2Nh
dGlvbigpCi0gICAgICAgICwgc25hcHBlZFNlbGVjdGlvblJlY3Qud2lkdGgoKQorICAgIGRlY29y
YXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3VuZERlY29yYXRpb25zKHsgdGV4dEJveFBhaW50UmVj
dC5sb2NhdGlvbigpCisgICAgICAgICwgdGV4dEJveFBhaW50UmVjdC53aWR0aCgpCiAgICAgICAg
ICwgdGV4dERlY29yYXRpb25UaGlja25lc3MKICAgICAgICAgLCBsaW5ldGhyb3VnaENlbnRlcgog
ICAgICAgICAsIHdhdnlTdHJva2VQYXJhbWV0ZXJzKHN0eWxlVG9Vc2UuY29tcHV0ZWRGb250UGl4
ZWxTaXplKCkpIH0sIG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaAppbmRleCAwMDNkMzQ4MjY5YWMu
LmQwMWJjN2UzYTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRC
b3hQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVy
LmgKQEAgLTI1LDkgKzI1LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9ySW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oIgorI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFp
bnRlci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzksNyArNDEsNiBAQCBjbGFzcyBSZW5kZXJDb21iaW5lVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxl
OwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7Ci1jbGFzcyBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgTWFya2Vk
VGV4dDsKIHN0cnVjdCBQYWludEluZm87CkBAIC04MCw2ICs4MSwxNSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29uc3Q7CiAgICAgRmxvYXRQb2lu
dCB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAorICAg
IHN0cnVjdCBEZWNvcmF0aW5nQm94IHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3I6OklubGluZUJv
eEl0ZXJhdG9yIGlubGluZUJveDsKKyAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlOwor
ICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyB0ZXh0RGVjb3JhdGlvblN0eWxl
czsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhdGlvbjsKKyAgICB9OworICAgIHVzaW5nIERlY29y
YXRpbmdCb3hMaXN0ID0gVmVjdG9yPERlY29yYXRpbmdCb3g+OworICAgIHZvaWQgY29sbGVjdERl
Y29yYXRpbmdCb3hlc0ZvclRleHRCb3goRGVjb3JhdGluZ0JveExpc3QmLCBjb25zdCBJbmxpbmVJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiwgRmxvYXRQb2ludCB0ZXh0Qm94TG9jYXRpb24sIGNv
bnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJik7CisKICAgICBjb25zdCBTaGFkb3dE
YXRhKiBkZWJ1Z1RleHRTaGFkb3coKSBjb25zdDsKIAogICAgIGNvbnN0IFRleHRCb3hQYXRoIG1f
dGV4dEJveDsKQEAgLTkwLDYgKzEwMCw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBUZXh0UnVu
IG1fcGFpbnRUZXh0UnVuOwogICAgIFBhaW50SW5mbyYgbV9wYWludEluZm87CiAgICAgY29uc3Qg
VGV4dEJveFNlbGVjdGFibGVSYW5nZSBtX3NlbGVjdGFibGVSYW5nZTsKKyAgICBjb25zdCBMYXlv
dXRQb2ludCBtX3BhaW50T2Zmc2V0OwogICAgIGNvbnN0IEZsb2F0UmVjdCBtX3BhaW50UmVjdDsK
ICAgICBjb25zdCBib29sIG1faXNGaXJzdExpbmU7CiAgICAgY29uc3QgYm9vbCBtX2lzQ29tYmlu
ZWRUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25Q
YWludGVyLmNwcAppbmRleCBjZGM2MWM5YTg0Y2YuLjZiNzQ4MmYyYzY3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTIw
NSw2ICsyMDUsNyBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5k
RGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgIGF1dG8gcGFpbnREZWNv
cmF0aW9uID0gWyZdIChhdXRvIGRlY29yYXRpb24sIGF1dG8gc3R5bGUsIGF1dG8mIGNvbG9yLCBh
dXRvJiByZWN0KSB7CiAgICAgICAgIG1fY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dy
b3VuZERlY29yYXRpb25zICVmICVmICVmICVmIiwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBhdXRvIHN0cm9rZVN0eWxlID0gdGV4dERl
Y29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoc3R5bGUpOwogCiAgICAgICAgIGlmIChzdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGlu
ZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMDAyNzc4Mjc2ZjkwLi4wOGQwOTNjYWI1OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvcklu
bGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94Lmgi
CkBAIC0xMTgsMTggKzExOSwyMiBAQCBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVudCogZW5jbG9z
aW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dAogICAgIHJldHVy
biBudWxscHRyOwogfQogCitzdGF0aWMgZmxvYXQgYm94T2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29uc3QgUmVuZGVy
RWxlbWVudCYgZGVjb3JhdGluZ0lubGluZUJveFJlbmRlcmVyLCBmbG9hdCBib3hMb2dpY2FsVG9w
LCBmbG9hdCBib3hMb2dpY2FsQm90dG9tKQoreworICAgIGlmIChkZWNvcmF0aW5nSW5saW5lQm94
UmVuZGVyZXIuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCisgICAgICAgIHJl
dHVybiBib3hMb2dpY2FsVG9wIC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZVVu
ZGVyKGxpbmVCb3gsIGJveExvZ2ljYWxUb3AsIGRlY29yYXRpbmdJbmxpbmVCb3hSZW5kZXJlcik7
CisgICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihs
aW5lQm94LCBib3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW5nSW5saW5lQm94UmVuZGVyZXIpIC0g
Ym94TG9naWNhbEJvdHRvbTsKK30KKwogc3RhdGljIGZsb2F0IHRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBj
b25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgdGV4dEJveExvZ2ljYWxUb3AsIGZsb2F0
IHRleHRCb3hMb2dpY2FsQm90dG9tKQogewogICAgIGF1dG8qIGRlY29yYXRpbmdCb3hSZW5kZXJl
ckZvclVuZGVybGluZSA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHJlbmRl
cmVyKTsKICAgICBpZiAoIWRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSkKICAgICAg
ICAgcmV0dXJuIDAuZjsKIAotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmlzRmxpcHBlZExpbmVz
V3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRleHRCb3hMb2dpY2FsVG9wIC0gbWluTG9n
aWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gsIHRleHRCb3hMb2dpY2Fs
VG9wLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lKTsKLSAgICByZXR1cm4gbWF4
TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gsIHRleHRCb3hM
b2dpY2FsQm90dG9tLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lKSAtIHRleHRC
b3hMb2dpY2FsQm90dG9tOworICAgIHJldHVybiBib3hPZmZzZXRGcm9tQm90dG9tTW9zdChsaW5l
Qm94LCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lLCB0ZXh0Qm94TG9naWNhbFRv
cCwgdGV4dEJveExvZ2ljYWxCb3R0b20pOwogfQogCi0KIHN0YXRpYyBpbmxpbmUgZmxvYXQgZGVm
YXVsdEdhcChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgY29uc3QgZmxvYXQgdGV4
dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNi5mOwpAQCAtMjk1LDE0ICszMDAsMTQgQEAgR2x5
cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKICAgICByZXR1cm4gY29tcHV0ZWRWaXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25z
KHN0eWxlLCB1bmRlcmxpbmVPZmZzZXQpOwogfQogCi1mbG9hdCB1bmRlcmxpbmVPZmZzZXRGb3JU
ZXh0Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQorZmxvYXQgdW5kZXJsaW5lT2Zmc2V0Rm9y
VGV4dEJveFBhaW50aW5nKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvciYg
aW5saW5lQm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYXV0byB0ZXh0VW5k
ZXJsaW5lUG9zaXRpb25VbmRlciA9IHN0ZDo6b3B0aW9uYWw8VGV4dFVuZGVybGluZVBvc2l0aW9u
VW5kZXI+IHsgfTsKLSAgICBhdXRvIHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPSByZXNvbHZlZFVu
ZGVybGluZVBvc2l0aW9uKHN0eWxlLCB0ZXh0Qm94LT5saW5lQm94KCktPmJhc2VsaW5lVHlwZSgp
KTsKKyAgICBhdXRvIHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPSByZXNvbHZlZFVuZGVybGluZVBv
c2l0aW9uKHN0eWxlLCBpbmxpbmVCb3gtPmxpbmVCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwogCiAg
ICAgaWYgKHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpV
bmRlcikgewotICAgICAgICBhdXRvIHRleHRSdW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJv
dHRvbU1vc3QodGV4dEJveC0+bGluZUJveCgpLCB0ZXh0Qm94LT5yZW5kZXJlcigpLCB0ZXh0Qm94
LT5sb2dpY2FsVG9wKCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7Ci0gICAgICAgIHRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyID0gVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgeyB0ZXh0
Qm94LT5sb2dpY2FsQm90dG9tKCkgLSB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRSdW5PZmZz
ZXQgfTsKKyAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gYm94T2Zmc2V0RnJvbUJvdHRvbU1v
c3QoaW5saW5lQm94LT5saW5lQm94KCksIGlubGluZUJveC0+cmVuZGVyZXIoKSwgaW5saW5lQm94
LT5sb2dpY2FsVG9wKCksIGlubGluZUJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgdGV4
dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7IGlu
bGluZUJveC0+bG9naWNhbEhlaWdodCgpLCB0ZXh0UnVuT2Zmc2V0IH07CiAgICAgfQogCiAgICAg
cmV0dXJuIGNvbXB1dGVkVW5kZXJsaW5lT2Zmc2V0KHsgc3R5bGUsIHVuZGVybGluZVBvc2l0aW9u
VmFsdWUsIGRlZmF1bHRHYXAoc3R5bGUpLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggNzNlMWU4YzVh
MDUyLi4zOWE3NmM1N2ZhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGlu
ZVRleHRCb3hTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hT
dHlsZS5oCkBAIC02NSw2ICs2NSw2IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYpOwogR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVy
Zmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiwgRm9udEJhc2VsaW5lLCBUZXh0
VW5kZXJsaW5lUG9zaXRpb25VbmRlcik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYsIGNvbnN0
IFJlbmRlclRleHQmLCBmbG9hdCB0ZXh0Qm94TG9naWNhbFRvcCwgZmxvYXQgdGV4dEJveExvZ2lj
YWxCb3R0b20pOwogCi1mbG9hdCB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJik7
CitmbG9hdCB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3QgSW5saW5lSXRl
cmF0b3I6OklubGluZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461566</attachid>
            <date>2022-08-12 13:21:33 -0700</date>
            <delta_ts>2022-08-12 14:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220812132132.patch</filename>
            <type>text/plain</type>
            <size>24397</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1YjNiZjg2ODUzZmZjMTM2OTUyNDRiNzU5NGRjZmIwZGMwYjNhY2FlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgooVGhlIGZ1enp5IGNoYW5nZSBpcyBkdWUgdG8gbXVsdGlwbGUgdW5kZXJsaW5lcyBnZXR0aW5n
IHBhaW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggb3RoZXIgb24gc3VicGl4ZWwgcG9zaXRp
b25zIGJldHdlZW4gZ2x5cGhzIHdpdGggZGVzY2VuZGVycyAoY29taW5nIGZyb20gdmVydGljYWxs
eSBvdmVybGFwcGluZyBkZWNvcmF0aW5nIGJveGVzIGUuZy4gPGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmUiPjxmb250PmdnZzwvZm9udD48L2Rpdj4pCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6
Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveCk6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKFdlYkNvcmU6
OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE1MiArKysrKysrKysrKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oICAgICB8ICAx
MyArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgIDIx
ICsrLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgICA4
ICstCiAuLi4vMDAxLWEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg
KwogLi4uLzAwMS1xLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK
IC4uLi8wMDEtcy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA3
IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCA4NTRhYmZhZDVm
NTguLmQwZDFhMGUyNDJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5o
IgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZVRleHRCb3guaCIKQEAgLTcwLDYgKzcxLDcgQEAgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+
OjpUZXh0Qm94UGFpbnRlcihUZXh0Qm94UGF0aCYmIHRleHRCb3gsIFBhaW50SW5mbyYgcGEKICAg
ICAsIG1fcGFpbnRUZXh0UnVuKG1fdGV4dEJveC5jcmVhdGVUZXh0UnVuKElubGluZUl0ZXJhdG9y
OjpDcmVhdGVUZXh0UnVuTW9kZTo6UGFpbnRpbmcpKQogICAgICwgbV9wYWludEluZm8ocGFpbnRJ
bmZvKQogICAgICwgbV9zZWxlY3RhYmxlUmFuZ2UobV90ZXh0Qm94LnNlbGVjdGFibGVSYW5nZSgp
KQorICAgICwgbV9wYWludE9mZnNldChwYWludE9mZnNldCkKICAgICAsIG1fcGFpbnRSZWN0KGNv
bXB1dGVQYWludFJlY3QocGFpbnRPZmZzZXQpKQogICAgICwgbV9pc0ZpcnN0TGluZShtX3RleHRC
b3guaXNGaXJzdExpbmUoKSkKICAgICAsIG1faXNDb21iaW5lZFRleHQoaXM8UmVuZGVyQ29tYmlu
ZVRleHQ+KG1fcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRl
cmVyKS5pc0NvbWJpbmVkKCkpCkBAIC0yODIsMTcgKzI4NCwxNyBAQCB2b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMoKQogICAgICAg
ICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbWFya2VkVGV4dC5lbmRPZmZzZXQ7CiAgICAgICAg
ICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAvLyBB
dm9pZCBtZWFzdXJpbmcgdGhlIHRleHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94IGlzIHNlbGVj
dGVkIGFzIGFuIG9wdGltaXphdGlvbi4KLSAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc25hcHBl
ZFNlbGVjdGlvblJlY3QgPSBtX3BhaW50UmVjdDsKKyAgICAgICAgICAgICAgICBhdXRvIHNuYXBw
ZWRQYWludFJlY3QgPSBtX3BhaW50UmVjdDsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZz
ZXQgfHwgZW5kT2Zmc2V0ICE9IG1fcGFpbnRUZXh0UnVuLmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IHsgbV9wYWludFJlY3QueCgpLCBt
X3BhaW50UmVjdC55KCksIG1fcGFpbnRSZWN0LndpZHRoKCksIG1fcGFpbnRSZWN0LmhlaWdodCgp
IH07CiAgICAgICAgICAgICAgICAgICAgIGZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQobV9wYWludFRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICBzbmFwcGVkU2VsZWN0aW9uUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2Rv
Y3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc25hcHBlZFBhaW50UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNX
aXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2RvY3VtZW50LmRldmljZVNjYWxl
RmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIgZGVjb3JhdGlvblBhaW50ZXIgPSBj
cmVhdGVEZWNvcmF0aW9uUGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlv
bkNsaXBPdXRSZWN0KTsKLSAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyhkZWNvcmF0aW9uUGFpbnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFNlbGVjdGlvblJlY3QpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvblBhaW50ZXIgPSBjcmVhdGVEZWNvcmF0aW9u
UGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0KTsK
KyAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0aW9uUGFp
bnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgICAgICAgICAgICAgcGFp
bnRGb3JlZ3JvdW5kKG1hcmtlZFRleHQpOwotICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3Vu
ZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkU2VsZWN0
aW9uUmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoZGVj
b3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRQYWludFJlY3QpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTQ1NSw1OSArNDU3LDExOSBAQCBzdGF0
aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlVG9Vc2UsIGZsbwogICAgIHJldHVybiBjZW50ZXIgLSB0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyAvIDI7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgdGV4dERlY29yYXRpb25TdHls
ZXMpCit7CisgICAgYXV0byB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpOworICAgIHRleHREZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25QYWludGVy
Ojp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVzKSk7
CisgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uczsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
RGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQoY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJv
eCYgaW5saW5lQm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSkKK3sKKyAgICBpZiAo
YXV0byogZWxlbWVudCA9IGlubGluZUJveC5yZW5kZXJlcigpLmVsZW1lbnQoKTsgZWxlbWVudCAm
JiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6Zm9udFRhZykpKSB7CisgICAgICAgIC8vIDxmb250PiBhbmQgPGE+IGFyZSBh
bHdheXMgY29uc2lkZXJlZCBkZWNvcmF0aW5nIGJveGVzLgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFp
bnNBbnkoeyBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSB9KQorICAgICAgICB8fCAoaW5saW5lQm94LmlzUm9vdElubGluZUJveCgpICYm
IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250YWluc0FueSh7IFRleHRE
ZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lIH0p
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRp
b25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRlciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFy
a2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzbmFwcGVkU2VsZWN0aW9uUmVjdCkKK3ZvaWQgVGV4
dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJv
eChEZWNvcmF0aW5nQm94TGlzdCYgZGVjb3JhdGluZ0JveExpc3QsIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9u
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgb3ZlcnJpZGVEZWNvcmF0aW9u
U3R5bGUpCit7CisgICAgYXV0byBhbmNlc3RvcklubGluZUJveCA9IHRleHRCb3gtPnBhcmVudElu
bGluZUJveCgpOworICAgIC8vIEZJWE1FOiBWZXJ0aWNhbCB3cml0aW5nIG1vZGUgbmVlZHMgc29t
ZSBjb29yZGluYXRlIHNwYWNlIHRyYW5zZm9ybWF0aW9uIGZvciBwYXJlbnQgaW5saW5lIGJveGVz
IGFzIHdlIHJvdGF0ZSB0aGUgY29udGVudCB3aXRoIG1fcGFpbnRSZWN0IChzZWUgOjpwYWludCkK
KyAgICBpZiAoYW5jZXN0b3JJbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpIHx8ICF0ZXh0Qm94
LT5pc0hvcml6b250YWwoKSkgeworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBlbmQoewor
ICAgICAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3gsCisgICAgICAgICAgICBtX2lzRmlyc3RMaW5l
ID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpLAorICAg
ICAgICAgICAgb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUsCisgICAgICAgICAgICB0ZXh0Qm94TG9j
YXRpb24KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbnVtIFVz
ZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZSA6IGJvb2wgeyBZZXMsIE5vIH07CisgICAgYXV0byBh
cHBlbmRJZklzRGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQgPSBbJl0gKGF1dG8mIGlubGluZUJv
eCwgYXV0byB1c2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGUpIHsKKyAgICAgICAgYXV0byYgc3R5
bGUgPSBtX2lzRmlyc3RMaW5lID8gaW5saW5lQm94LT5yZW5kZXJlcigpLmZpcnN0TGluZVN0eWxl
KCkgOiBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKTsKKworICAgICAgICBhdXRvIGNvbXB1
dGVkRGVjb3JhdGlvblN0eWxlID0gWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGlubGluZUJveC0+cmVuZGVyZXIoKSwgc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgbV9pc0ZpcnN0TGluZSk7CisgICAgICAgIH07
CisgICAgICAgIGlmICghaXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZCgqaW5saW5lQm94LCBz
dHlsZSkpIHsKKyAgICAgICAgICAgIC8vIFNvbWUgY2FzZXMgZXZlbiBub24tZGVjb3JhdGlvbiBi
b3hlcyBtYXkgaGF2ZSBzb21lIGRlY29yYXRpb24gcGllY2VzIGNvbWluZyBmcm9tIHRoZSBtYXJr
ZWQgdGV4dCAoZS5nLiBoaWdobGlnaHQpLgorICAgICAgICAgICAgaWYgKHVzZU92ZXJyaWRlckRl
Y29yYXRpb25TdHlsZSA9PSBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGU6Ok5vIHx8IG92ZXJy
aWRlRGVjb3JhdGlvblN0eWxlID09IGNvbXB1dGVkRGVjb3JhdGlvblN0eWxlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVjb3JhdGluZ0JveExpc3Qu
YXBwZW5kKHsKKyAgICAgICAgICAgIGlubGluZUJveCwKKyAgICAgICAgICAgIHN0eWxlLAorICAg
ICAgICAgICAgdXNlT3ZlcnJpZGVyRGVjb3JhdGlvblN0eWxlID09IFVzZU92ZXJyaWRlckRlY29y
YXRpb25TdHlsZTo6WWVzID8gb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUgOiBjb21wdXRlZERlY29y
YXRpb25TdHlsZSgpLAorICAgICAgICAgICAgeyB0ZXh0Qm94TG9jYXRpb24ueCgpLCBtX3BhaW50
T2Zmc2V0LnkoKSArIGlubGluZUJveC0+bG9naWNhbFRvcCgpIH0KKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGlmIHRoZSBkZWNvcmF0aW9uIHN0eWxlcyBj
b21pbmcgZnJvbSB0aGUgc3R5bGVkIG1hcmtlZCB0ZXh0IHNob3VsZCBiZSB1c2VkIG9ubHkgb24g
dGhlIGNsb3Nlc3QgaW5saW5lIGJveCAoZGlyZWN0IHBhcmVudCkuCisgICAgYXBwZW5kSWZJc0Rl
Y29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKGFuY2VzdG9ySW5saW5lQm94LCBVc2VPdmVycmlkZXJE
ZWNvcmF0aW9uU3R5bGU6Olllcyk7CisgICAgd2hpbGUgKCFhbmNlc3RvcklubGluZUJveC0+aXNS
b290SW5saW5lQm94KCkpIHsKKyAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3ggPSBhbmNlc3Rvcklu
bGluZUJveC0+cGFyZW50SW5saW5lQm94KCk7CisgICAgICAgIGFwcGVuZElmSXNEZWNvcmF0aW5n
Qm94Rm9yQmFja2dyb3VuZChhbmNlc3RvcklubGluZUJveCwgVXNlT3ZlcnJpZGVyRGVjb3JhdGlv
blN0eWxlOjpObyk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4K
K3ZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHls
ZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRleHRCb3hQYWludFJl
Y3QpCiB7CiAgICAgaWYgKG1faXNDb21iaW5lZFRleHQpCiAgICAgICAgIG1fcGFpbnRJbmZvLmNv
bnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWludFJlY3QsIENsb2Nrd2lzZSkpOwogCiAg
ICAgYXV0byB0ZXh0UnVuID0gbV9wYWludFRleHRSdW4uc3ViUnVuKG1hcmtlZFRleHQuc3RhcnRP
ZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0IC0gbWFya2VkVGV4dC5zdGFydE9mZnNldCk7Ci0g
ICAgYXV0byYgc3R5bGVUb1VzZSA9IG1faXNGaXJzdExpbmUgPyBtX3JlbmRlcmVyLmZpcnN0TGlu
ZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCk7Ci0gICAgY29uc3QgYXV0byYgdGV4dERlY29y
YXRpb25TdHlsZXMgPSBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzOwotICAg
IGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUgPSBbJl0gewotICAgICAgICBhdXRvIHRl
eHREZWNvcmF0aW9ucyA9IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNv
cmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29yYXRpb25TdHlsZXMpKTsKLSAgICAgICAg
cmV0dXJuIHRleHREZWNvcmF0aW9uczsKLSAgICB9KCk7Ci0gICAgYXV0byBjb21wdXRlZEJhY2tn
cm91bmREZWNvcmF0aW9uR2VvbWV0cnkgPSBbJl0gewotICAgICAgICBhdXRvIGRldmljZVNjYWxl
RmFjdG9yID0gbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpOwotCi0gICAgICAgIGF1dG8g
dGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgYXV0byB1bmRlcmxpbmVP
ZmZzZXQgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlw
ZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDAuZjsKLSAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGluZU9m
ZnNldEZvclRleHRCb3hQYWludGluZyhzdHlsZVRvVXNlLCBtYWtlSXRlcmF0b3IoKSk7Ci0gICAg
ICAgICAgICBhdXRvIHdhdnlPZmZzZXQgPSB0ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUu
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0
RnJvbURlY29yYXRpb24oKSA6IDAuZjsKLSAgICAgICAgICAgIHJldHVybiBiYXNlT2Zmc2V0ICsg
d2F2eU9mZnNldDsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBhdXRvVGV4dERlY29yYXRpb25U
aGlja25lc3MgPSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNl
LCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGF1dG8gb3ZlcmxpbmVPZmZzZXQgPSBbJl0g
ewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMC5m
OwotICAgICAgICAgICAgcmV0dXJuIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIC0gKHRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21E
ZWNvcmF0aW9uKCkgOiAwLmYpOwotICAgICAgICB9OwogCi0gICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgewotICAgICAgICAg
ICAgdGV4dE9yaWdpbkZyb21QYWludFJlY3Qoc25hcHBlZFNlbGVjdGlvblJlY3QpLAotICAgICAg
ICAgICAgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKSwKLSAgICAgICAgICAgIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksCi0gICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcywKLSAgICAgICAgICAgIHVuZGVybGluZU9mZnNldCgpLAotICAgICAgICAgICAgb3Zlcmxp
bmVPZmZzZXQoKSwKLSAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoc3R5bGVU
b1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyksCi0gICAgICAgICAgICBzdHlsZVRvVXNlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50
KCkgKyAyLmYsCi0gICAgICAgICAgICB3YXZ5U3Ryb2tlUGFyYW1ldGVycyhzdHlsZVRvVXNlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKQorICAgIGF1dG8gdGV4dEJveCA9IG1ha2VJdGVyYXRvcigp
OworICAgIGF1dG8gZGVjb3JhdGluZ0JveExpc3QgPSBEZWNvcmF0aW5nQm94TGlzdCB7IH07Cisg
ICAgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goZGVjb3JhdGluZ0JveExpc3QsIHRl
eHRCb3gsIHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKSwgbWFya2VkVGV4dC5zdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcyk7CisKKyAgICBmb3IgKGF1dG8mIGRlY29yYXRpbmdCb3ggOiBtYWtl
UmV2ZXJzZWRSYW5nZShkZWNvcmF0aW5nQm94TGlzdCkpIHsKKyAgICAgICAgYXV0byBjb21wdXRl
ZFRleHREZWNvcmF0aW9uVHlwZSA9IFdlYkNvcmU6OmNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBl
KGRlY29yYXRpbmdCb3guc3R5bGUsIGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMp
OworICAgICAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSA9IFsm
XSB7CisgICAgICAgICAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxlLCBtX2RvY3VtZW50LmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byB1bmRlcmxpbmVPZmZzZXQgPSBb
Jl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMC5mOworICAgICAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGlu
ZU9mZnNldEZvclRleHRCb3hQYWludGluZygqZGVjb3JhdGluZ0JveC5pbmxpbmVCb3gsIGRlY29y
YXRpbmdCb3guc3R5bGUpOworICAgICAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9IGRlY29y
YXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkg
OiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5T2Zmc2V0Owor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gY29tcHV0ZWRBdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MoZGVjb3JhdGluZ0JveC5z
dHlsZSwgbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIGF1dG8g
b3ZlcmxpbmVPZmZzZXQgPSBbJl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0
RGVjb3JhdGlvblR5cGUuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gKGRl
Y29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxl
ID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24o
KSA6IDAuZik7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICByZXR1cm4gVGV4dERlY29y
YXRpb25QYWludGVyOjpCYWNrZ3JvdW5kRGVjb3JhdGlvbkdlb21ldHJ5IHsKKyAgICAgICAgICAg
ICAgICB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdCh0ZXh0Qm94UGFpbnRSZWN0KSwKKyAgICAgICAg
ICAgICAgICBkZWNvcmF0aW5nQm94LmxvY2F0aW9uLAorICAgICAgICAgICAgICAgIHRleHRCb3hQ
YWludFJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cywKKyAgICAgICAgICAgICAgICB1bmRlcmxpbmVPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICBv
dmVybGluZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50
ZXIoZGVjb3JhdGluZ0JveC5zdHlsZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyksCisgICAgICAgICAgICAgICAgZGVjb3JhdGluZ0JveC5zdHls
ZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICsgMi5mLAorICAgICAgICAgICAgICAg
IHdhdnlTdHJva2VQYXJhbWV0ZXJzKGRlY29yYXRpbmdCb3guc3R5bGUuY29tcHV0ZWRGb250UGl4
ZWxTaXplKCkpCisgICAgICAgICAgICB9OwogICAgICAgICB9OwotICAgIH07CiAKLSAgICBkZWNv
cmF0aW9uUGFpbnRlci5wYWludEJhY2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBjb21wdXRl
ZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5
cGUsIHRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICAgICAgZGVjb3JhdGlvblBhaW50ZXIucGFp
bnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnModGV4dFJ1biwgY29tcHV0ZWRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbkdlb21ldHJ5KCksIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLCBkZWNvcmF0aW5nQm94
LnRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICB9CiAKICAgICBpZiAobV9pc0NvbWJpbmVkVGV4
dCkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShyb3RhdGlvbihtX3Bh
aW50UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0
Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91
bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBj
b25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0KQordm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50
Rm9yZWdyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBh
aW50ZXIsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGV4dEJveFBhaW50UmVjdCkKIHsKICAgICBhdXRvJiBzdHlsZVRvVXNlID0gbV9pc0ZpcnN0
TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5bGUoKSA6IG1fcmVuZGVyZXIuc3R5bGUoKTsK
ICAgICBhdXRvIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlID0gWyZdIHsKQEAgLTUyNSw4ICs1
ODcsOCBAQCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5k
RGVjb3JhdGlvbnMoVGV4dERlY29yYXRpb25QYWludAogICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYXV0byB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5bGVUb1Vz
ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gbGluZXRocm91Z2hDZW50ZXIgPSBjb21w
dXRlZExpbmV0aHJvdWdoQ2VudGVyKHN0eWxlVG9Vc2UsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LCBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwotICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKHsgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKQotICAgICAgICAsIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCkKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEZvcmVn
cm91bmREZWNvcmF0aW9ucyh7IHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKQorICAgICAgICAs
IHRleHRCb3hQYWludFJlY3Qud2lkdGgoKQogICAgICAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzCiAgICAgICAgICwgbGluZXRocm91Z2hDZW50ZXIKICAgICAgICAgLCB3YXZ5U3Ryb2tlUGFy
YW1ldGVycyhzdHlsZVRvVXNlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB9LCBtYXJrZWRUZXh0
LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmgKaW5kZXggMDAzZDM0ODI2OWFjLi5kMDFiYzdlM2EyYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCkBAIC0yNSw5ICsyNSwxMSBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlRleHRCb3hTZWxlY3RhYmxlUmFu
Z2UuaCIKKyNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0
UnVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcgKzQxLDYgQEAgY2xhc3MgUmVu
ZGVyQ29tYmluZVRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBj
bGFzcyBTaGFkb3dEYXRhOwotY2xhc3MgVGV4dERlY29yYXRpb25QYWludGVyOwogc3RydWN0IENv
bXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IE1hcmtlZFRleHQ7CiBzdHJ1Y3QgUGFpbnRJbmZv
OwpAQCAtODAsNiArODEsMTUgQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250Q2FzY2FkZSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKKyAgICBzdHJ1Y3QgRGVjb3JhdGluZ0JveCB7
CisgICAgICAgIElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvciBpbmxpbmVCb3g7Cisg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTsKKyAgICAgICAgVGV4dERlY29yYXRpb25Q
YWludGVyOjpTdHlsZXMgdGV4dERlY29yYXRpb25TdHlsZXM7CisgICAgICAgIEZsb2F0UG9pbnQg
bG9jYXRpb247CisgICAgfTsKKyAgICB1c2luZyBEZWNvcmF0aW5nQm94TGlzdCA9IFZlY3RvcjxE
ZWNvcmF0aW5nQm94PjsKKyAgICB2b2lkIGNvbGxlY3REZWNvcmF0aW5nQm94ZXNGb3JUZXh0Qm94
KERlY29yYXRpbmdCb3hMaXN0JiwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciYsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9uLCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyYpOworCiAgICAgY29uc3QgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBUZXh0Qm94UGF0aCBtX3RleHRCb3g7CkBAIC05MCw2ICsxMDAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgVGV4dFJ1biBtX3BhaW50VGV4dFJ1bjsKICAgICBQ
YWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IFRleHRCb3hTZWxlY3RhYmxlUmFuZ2Ug
bV9zZWxlY3RhYmxlUmFuZ2U7CisgICAgY29uc3QgTGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsK
ICAgICBjb25zdCBGbG9hdFJlY3QgbV9wYWludFJlY3Q7CiAgICAgY29uc3QgYm9vbCBtX2lzRmly
c3RMaW5lOwogICAgIGNvbnN0IGJvb2wgbV9pc0NvbWJpbmVkVGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDAwMjc3ODI3NmY5MC4uZTJjMjI1
MDcxYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9v
dElubGluZUJveC5oIgpAQCAtMTE4LDE4ICsxMTksMjIgQEAgc3RhdGljIGNvbnN0IFJlbmRlckVs
ZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRl
eHQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIGZsb2F0IGJveE9mZnNldEZyb21C
b3R0b21Nb3N0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gs
IGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdJbmxpbmVCb3hSZW5kZXJlciwgZmxvYXQg
Ym94TG9naWNhbFRvcCwgZmxvYXQgYm94TG9naWNhbEJvdHRvbSkKK3sKKyAgICBpZiAoZGVjb3Jh
dGluZ0lubGluZUJveFJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgp
KQorICAgICAgICByZXR1cm4gYm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCBib3hMb2dpY2FsVG9wLCBkZWNvcmF0aW5nSW5saW5l
Qm94UmVuZGVyZXIpOworICAgIHJldHVybiBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRp
b25MaW5lVW5kZXIobGluZUJveCwgYm94TG9naWNhbEJvdHRvbSwgZGVjb3JhdGluZ0lubGluZUJv
eFJlbmRlcmVyKSAtIGJveExvZ2ljYWxCb3R0b207Cit9CisKIHN0YXRpYyBmbG9hdCB0ZXh0UnVu
T2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRv
ciYgbGluZUJveCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHRleHRCb3hMb2dp
Y2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkKIHsKICAgICBhdXRvKiBkZWNvcmF0
aW5nQm94UmVuZGVyZXJGb3JVbmRlcmxpbmUgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVj
b3JhdGlvbihyZW5kZXJlcik7CiAgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXJGb3JVbmRl
cmxpbmUpCiAgICAgICAgIHJldHVybiAwLmY7CiAKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0ZXh0Qm94TG9naWNh
bFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCB0
ZXh0Qm94TG9naWNhbFRvcCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSk7Ci0g
ICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5l
Qm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVy
bGluZSkgLSB0ZXh0Qm94TG9naWNhbEJvdHRvbTsKKyAgICByZXR1cm4gYm94T2Zmc2V0RnJvbUJv
dHRvbU1vc3QobGluZUJveCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSwgdGV4
dEJveExvZ2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIH0KIAotCiBzdGF0aWMgaW5s
aW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGNv
bnN0IGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTYuZjsKQEAgLTI5NSwxNCAr
MzAwLDE0IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAotZmxvYXQgdW5kZXJs
aW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKK2Zsb2F0IHVuZGVy
bGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5l
Qm94JiBpbmxpbmVCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIHRl
eHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25hbDxUZXh0VW5kZXJsaW5lUG9z
aXRpb25VbmRlcj4geyB9OwotICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29s
dmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIHRleHRCb3gtPmxpbmVCb3goKS0+YmFzZWxpbmVU
eXBlKCkpOworICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24oc3R5bGUsIGlubGluZUJveC5saW5lQm94KCktPmJhc2VsaW5lVHlwZSgpKTsK
IAogICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZy
b21Cb3R0b21Nb3N0KHRleHRCb3gtPmxpbmVCb3goKSwgdGV4dEJveC0+cmVuZGVyZXIoKSwgdGV4
dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwotICAgICAgICB0
ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsg
dGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0UnVu
T2Zmc2V0IH07CisgICAgICAgIGF1dG8gdGV4dFJ1bk9mZnNldCA9IGJveE9mZnNldEZyb21Cb3R0
b21Nb3N0KGlubGluZUJveC5saW5lQm94KCksIGlubGluZUJveC5yZW5kZXJlcigpLCBpbmxpbmVC
b3gubG9naWNhbFRvcCgpLCBpbmxpbmVCb3gubG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgdGV4
dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7IGlu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCksIHRleHRSdW5PZmZzZXQgfTsKICAgICB9CiAKICAgICBy
ZXR1cm4gY29tcHV0ZWRVbmRlcmxpbmVPZmZzZXQoeyBzdHlsZSwgdW5kZXJsaW5lUG9zaXRpb25W
YWx1ZSwgZGVmYXVsdEdhcChzdHlsZSksIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAppbmRleCA3M2UxZThjNWEw
NTIuLmJmNGE5YjIyMWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5l
VGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmgKQEAgLTI1LDE3ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLWNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7Ci1jbGFzcyBSZW5kZXJFbGVt
ZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCiBp
bmxpbmUgZmxvYXQgd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkKIHsKQEAgLTY1LDYgKzYxLDYg
QEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRl
clN0eWxlJik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmLCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVy
KTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRl
eHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVu
ZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImKTsKK2Zsb2F0IHVuZGVybGluZU9mZnNl
dEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94JiwgY29u
c3QgUmVuZGVyU3R5bGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10
ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLWEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRz
L3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAw
MS1hLmh0bWwKaW5kZXggYzhlZDE5MDNmZDgzLi40ZjEzMjBkMDEyYmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLWEuaHRtbApAQCAtMSw0ICsxLDUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzND
Ly9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNC9sb29zZS5kdGQiPgorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVu
Y2U9NjQ7IHRvdGFsUGl4ZWxzPTE5IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5o
dG1sPgogPHRpdGxlPlRoZSBmb250IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJr
LCAwMDEsIGFsbW9zdCBzdGFuZGFyZHMgbW9kZTwvdGl0bGU+CiA8c3R5bGU+W2lkXSA+ICogeyBj
b2xvcjpmdWNoc2lhIH08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLXEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9m
b250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1xLmh0bWwKaW5kZXggOTAyNWU3
Mjg5OTE4Li45ZGI4YWM3MDUzYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRz
L3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAw
MS1xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0w
L2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbApAQCAtMSwzICsx
LDQgQEAKKzxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTY0OyB0b3Rh
bFBpeGVscz0xOSIgLz4KIDxsaW5rIHJlbD1tYXRjaCBocmVmPTAwMS1yZWYuaHRtbD4KIDx0aXRs
ZT5UaGUgZm9udCBlbGVtZW50IHRleHQgZGVjb3JhdGlvbiBjb2xvciBxdWlyaywgMDAxLCBxdWly
a3MgbW9kZTwvdGl0bGU+CiA8c3R5bGU+W2lkXSA+ICogeyBjb2xvcjpmdWNoc2lhIH08L3N0eWxl
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0w
L2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXMuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJl
cGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNv
cmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwKaW5kZXggYmFjODBlNTNiYWU0Li5iY2NiMTU4YTFjNmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9m
b250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24t
cmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRl
Y29yYXRpb24tY29sb3IvMDAxLXMuaHRtbApAQCAtMSw0ICsxLDUgQEAKIDwhZG9jdHlwZSBodG1s
PgorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9NjQ7IHRvdGFsUGl4
ZWxzPTE5IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRpdGxlPlRo
ZSBmb250IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIHN0YW5kYXJk
cyBtb2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461567</attachid>
            <date>2022-08-12 14:56:51 -0700</date>
            <delta_ts>2022-08-13 06:56:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220812145650.patch</filename>
            <type>text/plain</type>
            <size>24403</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3OWQ3YzZjMjI5MTFmMzdkNjQ1ZGE2OWYwYTIwYTMyMzg5MzU1OGZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgooVGhlIGZ1enp5IGNoYW5nZSBpcyBkdWUgdG8gbXVsdGlwbGUgdW5kZXJsaW5lcyBnZXR0aW5n
IHBhaW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggb3RoZXIgb24gc3VicGl4ZWwgcG9zaXRp
b25zIGJldHdlZW4gZ2x5cGhzIHdpdGggZGVzY2VuZGVycyAoY29taW5nIGZyb20gdmVydGljYWxs
eSBvdmVybGFwcGluZyBkZWNvcmF0aW5nIGJveGVzIGUuZy4gPGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmUiPjxmb250PmdnZzwvZm9udD48L2Rpdj4pCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6
Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveCk6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKFdlYkNvcmU6
OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE1MiArKysrKysrKysrKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oICAgICB8ICAx
MyArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgIDIx
ICsrLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgICA4
ICstCiAuLi4vMDAxLWEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg
KwogLi4uLzAwMS1xLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK
IC4uLi8wMDEtcy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA3
IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCA4NTRhYmZhZDVm
NTguLmQwZDFhMGUyNDJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5o
IgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZVRleHRCb3guaCIKQEAgLTcwLDYgKzcxLDcgQEAgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+
OjpUZXh0Qm94UGFpbnRlcihUZXh0Qm94UGF0aCYmIHRleHRCb3gsIFBhaW50SW5mbyYgcGEKICAg
ICAsIG1fcGFpbnRUZXh0UnVuKG1fdGV4dEJveC5jcmVhdGVUZXh0UnVuKElubGluZUl0ZXJhdG9y
OjpDcmVhdGVUZXh0UnVuTW9kZTo6UGFpbnRpbmcpKQogICAgICwgbV9wYWludEluZm8ocGFpbnRJ
bmZvKQogICAgICwgbV9zZWxlY3RhYmxlUmFuZ2UobV90ZXh0Qm94LnNlbGVjdGFibGVSYW5nZSgp
KQorICAgICwgbV9wYWludE9mZnNldChwYWludE9mZnNldCkKICAgICAsIG1fcGFpbnRSZWN0KGNv
bXB1dGVQYWludFJlY3QocGFpbnRPZmZzZXQpKQogICAgICwgbV9pc0ZpcnN0TGluZShtX3RleHRC
b3guaXNGaXJzdExpbmUoKSkKICAgICAsIG1faXNDb21iaW5lZFRleHQoaXM8UmVuZGVyQ29tYmlu
ZVRleHQ+KG1fcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRl
cmVyKS5pc0NvbWJpbmVkKCkpCkBAIC0yODIsMTcgKzI4NCwxNyBAQCB2b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMoKQogICAgICAg
ICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbWFya2VkVGV4dC5lbmRPZmZzZXQ7CiAgICAgICAg
ICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAvLyBB
dm9pZCBtZWFzdXJpbmcgdGhlIHRleHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94IGlzIHNlbGVj
dGVkIGFzIGFuIG9wdGltaXphdGlvbi4KLSAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc25hcHBl
ZFNlbGVjdGlvblJlY3QgPSBtX3BhaW50UmVjdDsKKyAgICAgICAgICAgICAgICBhdXRvIHNuYXBw
ZWRQYWludFJlY3QgPSBtX3BhaW50UmVjdDsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZz
ZXQgfHwgZW5kT2Zmc2V0ICE9IG1fcGFpbnRUZXh0UnVuLmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IHsgbV9wYWludFJlY3QueCgpLCBt
X3BhaW50UmVjdC55KCksIG1fcGFpbnRSZWN0LndpZHRoKCksIG1fcGFpbnRSZWN0LmhlaWdodCgp
IH07CiAgICAgICAgICAgICAgICAgICAgIGZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQobV9wYWludFRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICBzbmFwcGVkU2VsZWN0aW9uUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2Rv
Y3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc25hcHBlZFBhaW50UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNX
aXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2RvY3VtZW50LmRldmljZVNjYWxl
RmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIgZGVjb3JhdGlvblBhaW50ZXIgPSBj
cmVhdGVEZWNvcmF0aW9uUGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlv
bkNsaXBPdXRSZWN0KTsKLSAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyhkZWNvcmF0aW9uUGFpbnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFNlbGVjdGlvblJlY3QpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvblBhaW50ZXIgPSBjcmVhdGVEZWNvcmF0aW9u
UGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0KTsK
KyAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0aW9uUGFp
bnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgICAgICAgICAgICAgcGFp
bnRGb3JlZ3JvdW5kKG1hcmtlZFRleHQpOwotICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3Vu
ZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkU2VsZWN0
aW9uUmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoZGVj
b3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRQYWludFJlY3QpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTQ1NSw1OSArNDU3LDExOSBAQCBzdGF0
aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlVG9Vc2UsIGZsbwogICAgIHJldHVybiBjZW50ZXIgLSB0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyAvIDI7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgdGV4dERlY29yYXRpb25TdHls
ZXMpCit7CisgICAgYXV0byB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpOworICAgIHRleHREZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25QYWludGVy
Ojp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVzKSk7
CisgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uczsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
RGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQoY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJv
eCYgaW5saW5lQm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSkKK3sKKyAgICBpZiAo
YXV0byogZWxlbWVudCA9IGlubGluZUJveC5yZW5kZXJlcigpLmVsZW1lbnQoKTsgZWxlbWVudCAm
JiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6Zm9udFRhZykpKSB7CisgICAgICAgIC8vIDxmb250PiBhbmQgPGE+IGFyZSBh
bHdheXMgY29uc2lkZXJlZCBkZWNvcmF0aW5nIGJveGVzLgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFp
bnNBbnkoeyBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSB9KQorICAgICAgICB8fCAoaW5saW5lQm94LmlzUm9vdElubGluZUJveCgpICYm
IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250YWluc0FueSh7IFRleHRE
ZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lIH0p
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRp
b25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRlciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFy
a2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzbmFwcGVkU2VsZWN0aW9uUmVjdCkKK3ZvaWQgVGV4
dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJv
eChEZWNvcmF0aW5nQm94TGlzdCYgZGVjb3JhdGluZ0JveExpc3QsIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9u
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgb3ZlcnJpZGVEZWNvcmF0aW9u
U3R5bGUpCit7CisgICAgYXV0byBhbmNlc3RvcklubGluZUJveCA9IHRleHRCb3gtPnBhcmVudElu
bGluZUJveCgpOworICAgIC8vIEZJWE1FOiBWZXJ0aWNhbCB3cml0aW5nIG1vZGUgbmVlZHMgc29t
ZSBjb29yZGluYXRlIHNwYWNlIHRyYW5zZm9ybWF0aW9uIGZvciBwYXJlbnQgaW5saW5lIGJveGVz
IGFzIHdlIHJvdGF0ZSB0aGUgY29udGVudCB3aXRoIG1fcGFpbnRSZWN0IChzZWUgOjpwYWludCkK
KyAgICBpZiAoYW5jZXN0b3JJbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpIHx8ICF0ZXh0Qm94
LT5pc0hvcml6b250YWwoKSkgeworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBlbmQoewor
ICAgICAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3gsCisgICAgICAgICAgICBtX2lzRmlyc3RMaW5l
ID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpLAorICAg
ICAgICAgICAgb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUsCisgICAgICAgICAgICB0ZXh0Qm94TG9j
YXRpb24KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbnVtIFVz
ZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZSA6IGJvb2wgeyBZZXMsIE5vIH07CisgICAgYXV0byBh
cHBlbmRJZklzRGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQgPSBbJl0gKGF1dG8mIGlubGluZUJv
eCwgYXV0byB1c2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGUpIHsKKyAgICAgICAgYXV0byYgc3R5
bGUgPSBtX2lzRmlyc3RMaW5lID8gaW5saW5lQm94LT5yZW5kZXJlcigpLmZpcnN0TGluZVN0eWxl
KCkgOiBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKTsKKworICAgICAgICBhdXRvIGNvbXB1
dGVkRGVjb3JhdGlvblN0eWxlID0gWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGlubGluZUJveC0+cmVuZGVyZXIoKSwgc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgbV9pc0ZpcnN0TGluZSk7CisgICAgICAgIH07
CisgICAgICAgIGlmICghaXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZCgqaW5saW5lQm94LCBz
dHlsZSkpIHsKKyAgICAgICAgICAgIC8vIFNvbWUgY2FzZXMgZXZlbiBub24tZGVjb3JhdGlvbiBi
b3hlcyBtYXkgaGF2ZSBzb21lIGRlY29yYXRpb24gcGllY2VzIGNvbWluZyBmcm9tIHRoZSBtYXJr
ZWQgdGV4dCAoZS5nLiBoaWdobGlnaHQpLgorICAgICAgICAgICAgaWYgKHVzZU92ZXJyaWRlckRl
Y29yYXRpb25TdHlsZSA9PSBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGU6Ok5vIHx8IG92ZXJy
aWRlRGVjb3JhdGlvblN0eWxlID09IGNvbXB1dGVkRGVjb3JhdGlvblN0eWxlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVjb3JhdGluZ0JveExpc3Qu
YXBwZW5kKHsKKyAgICAgICAgICAgIGlubGluZUJveCwKKyAgICAgICAgICAgIHN0eWxlLAorICAg
ICAgICAgICAgdXNlT3ZlcnJpZGVyRGVjb3JhdGlvblN0eWxlID09IFVzZU92ZXJyaWRlckRlY29y
YXRpb25TdHlsZTo6WWVzID8gb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUgOiBjb21wdXRlZERlY29y
YXRpb25TdHlsZSgpLAorICAgICAgICAgICAgeyB0ZXh0Qm94TG9jYXRpb24ueCgpLCBtX3BhaW50
T2Zmc2V0LnkoKSArIGlubGluZUJveC0+bG9naWNhbFRvcCgpIH0KKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGlmIHRoZSBkZWNvcmF0aW9uIHN0eWxlcyBj
b21pbmcgZnJvbSB0aGUgc3R5bGVkIG1hcmtlZCB0ZXh0IHNob3VsZCBiZSB1c2VkIG9ubHkgb24g
dGhlIGNsb3Nlc3QgaW5saW5lIGJveCAoZGlyZWN0IHBhcmVudCkuCisgICAgYXBwZW5kSWZJc0Rl
Y29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKGFuY2VzdG9ySW5saW5lQm94LCBVc2VPdmVycmlkZXJE
ZWNvcmF0aW9uU3R5bGU6Olllcyk7CisgICAgd2hpbGUgKCFhbmNlc3RvcklubGluZUJveC0+aXNS
b290SW5saW5lQm94KCkpIHsKKyAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3ggPSBhbmNlc3Rvcklu
bGluZUJveC0+cGFyZW50SW5saW5lQm94KCk7CisgICAgICAgIGFwcGVuZElmSXNEZWNvcmF0aW5n
Qm94Rm9yQmFja2dyb3VuZChhbmNlc3RvcklubGluZUJveCwgVXNlT3ZlcnJpZGVyRGVjb3JhdGlv
blN0eWxlOjpObyk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4K
K3ZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHls
ZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRleHRCb3hQYWludFJl
Y3QpCiB7CiAgICAgaWYgKG1faXNDb21iaW5lZFRleHQpCiAgICAgICAgIG1fcGFpbnRJbmZvLmNv
bnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWludFJlY3QsIENsb2Nrd2lzZSkpOwogCiAg
ICAgYXV0byB0ZXh0UnVuID0gbV9wYWludFRleHRSdW4uc3ViUnVuKG1hcmtlZFRleHQuc3RhcnRP
ZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0IC0gbWFya2VkVGV4dC5zdGFydE9mZnNldCk7Ci0g
ICAgYXV0byYgc3R5bGVUb1VzZSA9IG1faXNGaXJzdExpbmUgPyBtX3JlbmRlcmVyLmZpcnN0TGlu
ZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCk7Ci0gICAgY29uc3QgYXV0byYgdGV4dERlY29y
YXRpb25TdHlsZXMgPSBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzOwotICAg
IGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUgPSBbJl0gewotICAgICAgICBhdXRvIHRl
eHREZWNvcmF0aW9ucyA9IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNv
cmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29yYXRpb25TdHlsZXMpKTsKLSAgICAgICAg
cmV0dXJuIHRleHREZWNvcmF0aW9uczsKLSAgICB9KCk7Ci0gICAgYXV0byBjb21wdXRlZEJhY2tn
cm91bmREZWNvcmF0aW9uR2VvbWV0cnkgPSBbJl0gewotICAgICAgICBhdXRvIGRldmljZVNjYWxl
RmFjdG9yID0gbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpOwotCi0gICAgICAgIGF1dG8g
dGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgYXV0byB1bmRlcmxpbmVP
ZmZzZXQgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlw
ZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDAuZjsKLSAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGluZU9m
ZnNldEZvclRleHRCb3hQYWludGluZyhzdHlsZVRvVXNlLCBtYWtlSXRlcmF0b3IoKSk7Ci0gICAg
ICAgICAgICBhdXRvIHdhdnlPZmZzZXQgPSB0ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUu
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0
RnJvbURlY29yYXRpb24oKSA6IDAuZjsKLSAgICAgICAgICAgIHJldHVybiBiYXNlT2Zmc2V0ICsg
d2F2eU9mZnNldDsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBhdXRvVGV4dERlY29yYXRpb25U
aGlja25lc3MgPSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNl
LCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGF1dG8gb3ZlcmxpbmVPZmZzZXQgPSBbJl0g
ewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMC5m
OwotICAgICAgICAgICAgcmV0dXJuIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIC0gKHRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21E
ZWNvcmF0aW9uKCkgOiAwLmYpOwotICAgICAgICB9OwogCi0gICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgewotICAgICAgICAg
ICAgdGV4dE9yaWdpbkZyb21QYWludFJlY3Qoc25hcHBlZFNlbGVjdGlvblJlY3QpLAotICAgICAg
ICAgICAgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKSwKLSAgICAgICAgICAgIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksCi0gICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcywKLSAgICAgICAgICAgIHVuZGVybGluZU9mZnNldCgpLAotICAgICAgICAgICAgb3Zlcmxp
bmVPZmZzZXQoKSwKLSAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoc3R5bGVU
b1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyksCi0gICAgICAgICAgICBzdHlsZVRvVXNlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50
KCkgKyAyLmYsCi0gICAgICAgICAgICB3YXZ5U3Ryb2tlUGFyYW1ldGVycyhzdHlsZVRvVXNlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKQorICAgIGF1dG8gdGV4dEJveCA9IG1ha2VJdGVyYXRvcigp
OworICAgIGF1dG8gZGVjb3JhdGluZ0JveExpc3QgPSBEZWNvcmF0aW5nQm94TGlzdCB7IH07Cisg
ICAgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goZGVjb3JhdGluZ0JveExpc3QsIHRl
eHRCb3gsIHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKSwgbWFya2VkVGV4dC5zdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcyk7CisKKyAgICBmb3IgKGF1dG8mIGRlY29yYXRpbmdCb3ggOiBtYWtl
UmV2ZXJzZWRSYW5nZShkZWNvcmF0aW5nQm94TGlzdCkpIHsKKyAgICAgICAgYXV0byBjb21wdXRl
ZFRleHREZWNvcmF0aW9uVHlwZSA9IFdlYkNvcmU6OmNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBl
KGRlY29yYXRpbmdCb3guc3R5bGUsIGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMp
OworICAgICAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSA9IFsm
XSB7CisgICAgICAgICAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxlLCBtX2RvY3VtZW50LmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byB1bmRlcmxpbmVPZmZzZXQgPSBb
Jl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMC5mOworICAgICAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGlu
ZU9mZnNldEZvclRleHRCb3hQYWludGluZygqZGVjb3JhdGluZ0JveC5pbmxpbmVCb3gsIGRlY29y
YXRpbmdCb3guc3R5bGUpOworICAgICAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9IGRlY29y
YXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkg
OiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5T2Zmc2V0Owor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gY29tcHV0ZWRBdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MoZGVjb3JhdGluZ0JveC5z
dHlsZSwgbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIGF1dG8g
b3ZlcmxpbmVPZmZzZXQgPSBbJl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0
RGVjb3JhdGlvblR5cGUuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gKGRl
Y29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxl
ID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24o
KSA6IDAuZik7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICByZXR1cm4gVGV4dERlY29y
YXRpb25QYWludGVyOjpCYWNrZ3JvdW5kRGVjb3JhdGlvbkdlb21ldHJ5IHsKKyAgICAgICAgICAg
ICAgICB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdCh0ZXh0Qm94UGFpbnRSZWN0KSwKKyAgICAgICAg
ICAgICAgICBkZWNvcmF0aW5nQm94LmxvY2F0aW9uLAorICAgICAgICAgICAgICAgIHRleHRCb3hQ
YWludFJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cywKKyAgICAgICAgICAgICAgICB1bmRlcmxpbmVPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICBv
dmVybGluZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50
ZXIoZGVjb3JhdGluZ0JveC5zdHlsZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyksCisgICAgICAgICAgICAgICAgZGVjb3JhdGluZ0JveC5zdHls
ZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICsgMi5mLAorICAgICAgICAgICAgICAg
IHdhdnlTdHJva2VQYXJhbWV0ZXJzKGRlY29yYXRpbmdCb3guc3R5bGUuY29tcHV0ZWRGb250UGl4
ZWxTaXplKCkpCisgICAgICAgICAgICB9OwogICAgICAgICB9OwotICAgIH07CiAKLSAgICBkZWNv
cmF0aW9uUGFpbnRlci5wYWludEJhY2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBjb21wdXRl
ZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5
cGUsIHRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICAgICAgZGVjb3JhdGlvblBhaW50ZXIucGFp
bnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnModGV4dFJ1biwgY29tcHV0ZWRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbkdlb21ldHJ5KCksIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLCBkZWNvcmF0aW5nQm94
LnRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICB9CiAKICAgICBpZiAobV9pc0NvbWJpbmVkVGV4
dCkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShyb3RhdGlvbihtX3Bh
aW50UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0
Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91
bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBj
b25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0KQordm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50
Rm9yZWdyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBh
aW50ZXIsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGV4dEJveFBhaW50UmVjdCkKIHsKICAgICBhdXRvJiBzdHlsZVRvVXNlID0gbV9pc0ZpcnN0
TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5bGUoKSA6IG1fcmVuZGVyZXIuc3R5bGUoKTsK
ICAgICBhdXRvIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlID0gWyZdIHsKQEAgLTUyNSw4ICs1
ODcsOCBAQCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5k
RGVjb3JhdGlvbnMoVGV4dERlY29yYXRpb25QYWludAogICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYXV0byB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5bGVUb1Vz
ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gbGluZXRocm91Z2hDZW50ZXIgPSBjb21w
dXRlZExpbmV0aHJvdWdoQ2VudGVyKHN0eWxlVG9Vc2UsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LCBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwotICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKHsgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKQotICAgICAgICAsIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCkKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEZvcmVn
cm91bmREZWNvcmF0aW9ucyh7IHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKQorICAgICAgICAs
IHRleHRCb3hQYWludFJlY3Qud2lkdGgoKQogICAgICAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzCiAgICAgICAgICwgbGluZXRocm91Z2hDZW50ZXIKICAgICAgICAgLCB3YXZ5U3Ryb2tlUGFy
YW1ldGVycyhzdHlsZVRvVXNlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB9LCBtYXJrZWRUZXh0
LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmgKaW5kZXggMDAzZDM0ODI2OWFjLi5kMDFiYzdlM2EyYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCkBAIC0yNSw5ICsyNSwxMSBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlRleHRCb3hTZWxlY3RhYmxlUmFu
Z2UuaCIKKyNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0
UnVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcgKzQxLDYgQEAgY2xhc3MgUmVu
ZGVyQ29tYmluZVRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBj
bGFzcyBTaGFkb3dEYXRhOwotY2xhc3MgVGV4dERlY29yYXRpb25QYWludGVyOwogc3RydWN0IENv
bXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IE1hcmtlZFRleHQ7CiBzdHJ1Y3QgUGFpbnRJbmZv
OwpAQCAtODAsNiArODEsMTUgQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250Q2FzY2FkZSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKKyAgICBzdHJ1Y3QgRGVjb3JhdGluZ0JveCB7
CisgICAgICAgIElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvciBpbmxpbmVCb3g7Cisg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTsKKyAgICAgICAgVGV4dERlY29yYXRpb25Q
YWludGVyOjpTdHlsZXMgdGV4dERlY29yYXRpb25TdHlsZXM7CisgICAgICAgIEZsb2F0UG9pbnQg
bG9jYXRpb247CisgICAgfTsKKyAgICB1c2luZyBEZWNvcmF0aW5nQm94TGlzdCA9IFZlY3RvcjxE
ZWNvcmF0aW5nQm94PjsKKyAgICB2b2lkIGNvbGxlY3REZWNvcmF0aW5nQm94ZXNGb3JUZXh0Qm94
KERlY29yYXRpbmdCb3hMaXN0JiwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciYsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9uLCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyYpOworCiAgICAgY29uc3QgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBUZXh0Qm94UGF0aCBtX3RleHRCb3g7CkBAIC05MCw2ICsxMDAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgVGV4dFJ1biBtX3BhaW50VGV4dFJ1bjsKICAgICBQ
YWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IFRleHRCb3hTZWxlY3RhYmxlUmFuZ2Ug
bV9zZWxlY3RhYmxlUmFuZ2U7CisgICAgY29uc3QgTGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsK
ICAgICBjb25zdCBGbG9hdFJlY3QgbV9wYWludFJlY3Q7CiAgICAgY29uc3QgYm9vbCBtX2lzRmly
c3RMaW5lOwogICAgIGNvbnN0IGJvb2wgbV9pc0NvbWJpbmVkVGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDAwMjc3ODI3NmY5MC4uZTJjMjI1
MDcxYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9v
dElubGluZUJveC5oIgpAQCAtMTE4LDE4ICsxMTksMjIgQEAgc3RhdGljIGNvbnN0IFJlbmRlckVs
ZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRl
eHQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIGZsb2F0IGJveE9mZnNldEZyb21C
b3R0b21Nb3N0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gs
IGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdJbmxpbmVCb3hSZW5kZXJlciwgZmxvYXQg
Ym94TG9naWNhbFRvcCwgZmxvYXQgYm94TG9naWNhbEJvdHRvbSkKK3sKKyAgICBpZiAoZGVjb3Jh
dGluZ0lubGluZUJveFJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgp
KQorICAgICAgICByZXR1cm4gYm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCBib3hMb2dpY2FsVG9wLCBkZWNvcmF0aW5nSW5saW5l
Qm94UmVuZGVyZXIpOworICAgIHJldHVybiBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRp
b25MaW5lVW5kZXIobGluZUJveCwgYm94TG9naWNhbEJvdHRvbSwgZGVjb3JhdGluZ0lubGluZUJv
eFJlbmRlcmVyKSAtIGJveExvZ2ljYWxCb3R0b207Cit9CisKIHN0YXRpYyBmbG9hdCB0ZXh0UnVu
T2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRv
ciYgbGluZUJveCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHRleHRCb3hMb2dp
Y2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkKIHsKICAgICBhdXRvKiBkZWNvcmF0
aW5nQm94UmVuZGVyZXJGb3JVbmRlcmxpbmUgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVj
b3JhdGlvbihyZW5kZXJlcik7CiAgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXJGb3JVbmRl
cmxpbmUpCiAgICAgICAgIHJldHVybiAwLmY7CiAKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0ZXh0Qm94TG9naWNh
bFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCB0
ZXh0Qm94TG9naWNhbFRvcCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSk7Ci0g
ICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5l
Qm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVy
bGluZSkgLSB0ZXh0Qm94TG9naWNhbEJvdHRvbTsKKyAgICByZXR1cm4gYm94T2Zmc2V0RnJvbUJv
dHRvbU1vc3QobGluZUJveCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSwgdGV4
dEJveExvZ2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIH0KIAotCiBzdGF0aWMgaW5s
aW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGNv
bnN0IGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTYuZjsKQEAgLTI5NSwxNCAr
MzAwLDE0IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAotZmxvYXQgdW5kZXJs
aW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKK2Zsb2F0IHVuZGVy
bGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5l
Qm94JiBpbmxpbmVCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIHRl
eHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25hbDxUZXh0VW5kZXJsaW5lUG9z
aXRpb25VbmRlcj4geyB9OwotICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29s
dmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIHRleHRCb3gtPmxpbmVCb3goKS0+YmFzZWxpbmVU
eXBlKCkpOworICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24oc3R5bGUsIGlubGluZUJveC5saW5lQm94KCktPmJhc2VsaW5lVHlwZSgpKTsK
IAogICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZy
b21Cb3R0b21Nb3N0KHRleHRCb3gtPmxpbmVCb3goKSwgdGV4dEJveC0+cmVuZGVyZXIoKSwgdGV4
dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwotICAgICAgICB0
ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsg
dGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0UnVu
T2Zmc2V0IH07CisgICAgICAgIGF1dG8gdGV4dFJ1bk9mZnNldCA9IGJveE9mZnNldEZyb21Cb3R0
b21Nb3N0KGlubGluZUJveC5saW5lQm94KCksIGlubGluZUJveC5yZW5kZXJlcigpLCBpbmxpbmVC
b3gubG9naWNhbFRvcCgpLCBpbmxpbmVCb3gubG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgdGV4
dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7IGlu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCksIHRleHRSdW5PZmZzZXQgfTsKICAgICB9CiAKICAgICBy
ZXR1cm4gY29tcHV0ZWRVbmRlcmxpbmVPZmZzZXQoeyBzdHlsZSwgdW5kZXJsaW5lUG9zaXRpb25W
YWx1ZSwgZGVmYXVsdEdhcChzdHlsZSksIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAppbmRleCA3M2UxZThjNWEw
NTIuLmJmNGE5YjIyMWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5l
VGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmgKQEAgLTI1LDE3ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLWNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7Ci1jbGFzcyBSZW5kZXJFbGVt
ZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCiBp
bmxpbmUgZmxvYXQgd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkKIHsKQEAgLTY1LDYgKzYxLDYg
QEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRl
clN0eWxlJik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmLCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVy
KTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRl
eHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVu
ZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImKTsKK2Zsb2F0IHVuZGVybGluZU9mZnNl
dEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94JiwgY29u
c3QgUmVuZGVyU3R5bGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10
ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLWEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRz
L3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAw
MS1hLmh0bWwKaW5kZXggYzhlZDE5MDNmZDgzLi5iZjJlZWEzZWE5ZTIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLWEuaHRtbApAQCAtMSw0ICsxLDUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzND
Ly9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNC9sb29zZS5kdGQiPgorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVu
Y2U9NjQ7IHRvdGFsUGl4ZWxzPTYtMTkiIC8+CiA8bGluayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVm
Lmh0bWw+CiA8dGl0bGU+VGhlIGZvbnQgZWxlbWVudCB0ZXh0IGRlY29yYXRpb24gY29sb3IgcXVp
cmssIDAwMSwgYWxtb3N0IHN0YW5kYXJkcyBtb2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7
IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVt
ZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xv
ci8wMDEtcS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0w
L2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbAppbmRleCA5MDI1
ZTcyODk5MTguLjNjODU2ZGUxNDg2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLXEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50
LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcS5odG1sCkBAIC0xLDMg
KzEsNCBAQAorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9NjQ7IHRv
dGFsUGl4ZWxzPTYtMTkiIC8+CiA8bGluayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVmLmh0bWw+CiA8
dGl0bGU+VGhlIGZvbnQgZWxlbWVudCB0ZXh0IGRlY29yYXRpb24gY29sb3IgcXVpcmssIDAwMSwg
cXVpcmtzIG1vZGU8L3RpdGxlPgogPHN0eWxlPltpZF0gPiAqIHsgY29sb3I6ZnVjaHNpYSB9PC9z
dHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRl
bnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25v
bi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQt
ZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5odG1sCmluZGV4IGJhYzgwZTUzYmFlNC4uODY2ZmU5M2Zh
MjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50
LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwKQEAgLTEsNCArMSw1IEBACiA8IWRvY3R5cGUg
aHRtbD4KKzxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTY0OyB0b3Rh
bFBpeGVscz02LTE5IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRp
dGxlPlRoZSBmb250IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIHN0
YW5kYXJkcyBtb2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwv
c3R5bGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461575</attachid>
            <date>2022-08-13 06:56:18 -0700</date>
            <delta_ts>2022-08-13 08:12:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220813065618.patch</filename>
            <type>text/plain</type>
            <size>24403</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3MTkyMzAxN2I0NDJhNzE3ZDNmMTkzMjEwOWJmZWNkZmMxMTIyOWNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgooVGhlIGZ1enp5IGNoYW5nZSBpcyBkdWUgdG8gbXVsdGlwbGUgdW5kZXJsaW5lcyBnZXR0aW5n
IHBhaW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggb3RoZXIgb24gc3VicGl4ZWwgcG9zaXRp
b25zIGJldHdlZW4gZ2x5cGhzIHdpdGggZGVzY2VuZGVycyAoY29taW5nIGZyb20gdmVydGljYWxs
eSBvdmVybGFwcGluZyBkZWNvcmF0aW5nIGJveGVzIGUuZy4gPGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmUiPjxmb250PmdnZzwvZm9udD48L2Rpdj4pCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6
Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveCk6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKFdlYkNvcmU6
OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE1MiArKysrKysrKysrKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oICAgICB8ICAx
MyArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgIDIx
ICsrLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgICA4
ICstCiAuLi4vMDAxLWEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg
KwogLi4uLzAwMS1xLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK
IC4uLi8wMDEtcy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA3
IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCA4NTRhYmZhZDVm
NTguLmQwZDFhMGUyNDJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveC5o
IgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGlu
ZVRleHRCb3guaCIKQEAgLTcwLDYgKzcxLDcgQEAgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+
OjpUZXh0Qm94UGFpbnRlcihUZXh0Qm94UGF0aCYmIHRleHRCb3gsIFBhaW50SW5mbyYgcGEKICAg
ICAsIG1fcGFpbnRUZXh0UnVuKG1fdGV4dEJveC5jcmVhdGVUZXh0UnVuKElubGluZUl0ZXJhdG9y
OjpDcmVhdGVUZXh0UnVuTW9kZTo6UGFpbnRpbmcpKQogICAgICwgbV9wYWludEluZm8ocGFpbnRJ
bmZvKQogICAgICwgbV9zZWxlY3RhYmxlUmFuZ2UobV90ZXh0Qm94LnNlbGVjdGFibGVSYW5nZSgp
KQorICAgICwgbV9wYWludE9mZnNldChwYWludE9mZnNldCkKICAgICAsIG1fcGFpbnRSZWN0KGNv
bXB1dGVQYWludFJlY3QocGFpbnRPZmZzZXQpKQogICAgICwgbV9pc0ZpcnN0TGluZShtX3RleHRC
b3guaXNGaXJzdExpbmUoKSkKICAgICAsIG1faXNDb21iaW5lZFRleHQoaXM8UmVuZGVyQ29tYmlu
ZVRleHQ+KG1fcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihtX3JlbmRl
cmVyKS5pc0NvbWJpbmVkKCkpCkBAIC0yODIsMTcgKzI4NCwxNyBAQCB2b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMoKQogICAgICAg
ICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbWFya2VkVGV4dC5lbmRPZmZzZXQ7CiAgICAgICAg
ICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAvLyBB
dm9pZCBtZWFzdXJpbmcgdGhlIHRleHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94IGlzIHNlbGVj
dGVkIGFzIGFuIG9wdGltaXphdGlvbi4KLSAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc25hcHBl
ZFNlbGVjdGlvblJlY3QgPSBtX3BhaW50UmVjdDsKKyAgICAgICAgICAgICAgICBhdXRvIHNuYXBw
ZWRQYWludFJlY3QgPSBtX3BhaW50UmVjdDsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZmZz
ZXQgfHwgZW5kT2Zmc2V0ICE9IG1fcGFpbnRUZXh0UnVuLmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IHsgbV9wYWludFJlY3QueCgpLCBt
X3BhaW50UmVjdC55KCksIG1fcGFpbnRSZWN0LndpZHRoKCksIG1fcGFpbnRSZWN0LmhlaWdodCgp
IH07CiAgICAgICAgICAgICAgICAgICAgIGZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQobV9wYWludFRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICBzbmFwcGVkU2VsZWN0aW9uUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2Rv
Y3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc25hcHBlZFBhaW50UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNX
aXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCBtX2RvY3VtZW50LmRldmljZVNjYWxl
RmFjdG9yKCksIG1fcGFpbnRUZXh0UnVuLmx0cigpKTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIgZGVjb3JhdGlvblBhaW50ZXIgPSBj
cmVhdGVEZWNvcmF0aW9uUGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlv
bkNsaXBPdXRSZWN0KTsKLSAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyhkZWNvcmF0aW9uUGFpbnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFNlbGVjdGlvblJlY3QpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvblBhaW50ZXIgPSBjcmVhdGVEZWNvcmF0aW9u
UGFpbnRlcihtYXJrZWRUZXh0LCB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0KTsK
KyAgICAgICAgICAgICAgICBwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0aW9uUGFp
bnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgICAgICAgICAgICAgcGFp
bnRGb3JlZ3JvdW5kKG1hcmtlZFRleHQpOwotICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3Vu
ZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkU2VsZWN0
aW9uUmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoZGVj
b3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRQYWludFJlY3QpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTQ1NSw1OSArNDU3LDExOSBAQCBzdGF0
aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlVG9Vc2UsIGZsbwogICAgIHJldHVybiBjZW50ZXIgLSB0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyAvIDI7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgdGV4dERlY29yYXRpb25TdHls
ZXMpCit7CisgICAgYXV0byB0ZXh0RGVjb3JhdGlvbnMgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpOworICAgIHRleHREZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25QYWludGVy
Ojp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVzKSk7
CisgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uczsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
RGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQoY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJv
eCYgaW5saW5lQm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSkKK3sKKyAgICBpZiAo
YXV0byogZWxlbWVudCA9IGlubGluZUJveC5yZW5kZXJlcigpLmVsZW1lbnQoKTsgZWxlbWVudCAm
JiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6Zm9udFRhZykpKSB7CisgICAgICAgIC8vIDxmb250PiBhbmQgPGE+IGFyZSBh
bHdheXMgY29uc2lkZXJlZCBkZWNvcmF0aW5nIGJveGVzLgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFp
bnNBbnkoeyBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSB9KQorICAgICAgICB8fCAoaW5saW5lQm94LmlzUm9vdElubGluZUJveCgpICYm
IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250YWluc0FueSh7IFRleHRE
ZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lIH0p
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lkIFRleHRCb3hQYWlu
dGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRp
b25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRlciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFy
a2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzbmFwcGVkU2VsZWN0aW9uUmVjdCkKK3ZvaWQgVGV4
dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJv
eChEZWNvcmF0aW5nQm94TGlzdCYgZGVjb3JhdGluZ0JveExpc3QsIGNvbnN0IElubGluZUl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9u
LCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgb3ZlcnJpZGVEZWNvcmF0aW9u
U3R5bGUpCit7CisgICAgYXV0byBhbmNlc3RvcklubGluZUJveCA9IHRleHRCb3gtPnBhcmVudElu
bGluZUJveCgpOworICAgIC8vIEZJWE1FOiBWZXJ0aWNhbCB3cml0aW5nIG1vZGUgbmVlZHMgc29t
ZSBjb29yZGluYXRlIHNwYWNlIHRyYW5zZm9ybWF0aW9uIGZvciBwYXJlbnQgaW5saW5lIGJveGVz
IGFzIHdlIHJvdGF0ZSB0aGUgY29udGVudCB3aXRoIG1fcGFpbnRSZWN0IChzZWUgOjpwYWludCkK
KyAgICBpZiAoYW5jZXN0b3JJbmxpbmVCb3gtPmlzUm9vdElubGluZUJveCgpIHx8ICF0ZXh0Qm94
LT5pc0hvcml6b250YWwoKSkgeworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBlbmQoewor
ICAgICAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3gsCisgICAgICAgICAgICBtX2lzRmlyc3RMaW5l
ID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpLAorICAg
ICAgICAgICAgb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUsCisgICAgICAgICAgICB0ZXh0Qm94TG9j
YXRpb24KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbnVtIFVz
ZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZSA6IGJvb2wgeyBZZXMsIE5vIH07CisgICAgYXV0byBh
cHBlbmRJZklzRGVjb3JhdGluZ0JveEZvckJhY2tncm91bmQgPSBbJl0gKGF1dG8mIGlubGluZUJv
eCwgYXV0byB1c2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGUpIHsKKyAgICAgICAgYXV0byYgc3R5
bGUgPSBtX2lzRmlyc3RMaW5lID8gaW5saW5lQm94LT5yZW5kZXJlcigpLmZpcnN0TGluZVN0eWxl
KCkgOiBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKTsKKworICAgICAgICBhdXRvIGNvbXB1
dGVkRGVjb3JhdGlvblN0eWxlID0gWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGlubGluZUJveC0+cmVuZGVyZXIoKSwgc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgbV9pc0ZpcnN0TGluZSk7CisgICAgICAgIH07
CisgICAgICAgIGlmICghaXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZCgqaW5saW5lQm94LCBz
dHlsZSkpIHsKKyAgICAgICAgICAgIC8vIFNvbWUgY2FzZXMgZXZlbiBub24tZGVjb3JhdGlvbiBi
b3hlcyBtYXkgaGF2ZSBzb21lIGRlY29yYXRpb24gcGllY2VzIGNvbWluZyBmcm9tIHRoZSBtYXJr
ZWQgdGV4dCAoZS5nLiBoaWdobGlnaHQpLgorICAgICAgICAgICAgaWYgKHVzZU92ZXJyaWRlckRl
Y29yYXRpb25TdHlsZSA9PSBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGU6Ok5vIHx8IG92ZXJy
aWRlRGVjb3JhdGlvblN0eWxlID09IGNvbXB1dGVkRGVjb3JhdGlvblN0eWxlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVjb3JhdGluZ0JveExpc3Qu
YXBwZW5kKHsKKyAgICAgICAgICAgIGlubGluZUJveCwKKyAgICAgICAgICAgIHN0eWxlLAorICAg
ICAgICAgICAgdXNlT3ZlcnJpZGVyRGVjb3JhdGlvblN0eWxlID09IFVzZU92ZXJyaWRlckRlY29y
YXRpb25TdHlsZTo6WWVzID8gb3ZlcnJpZGVEZWNvcmF0aW9uU3R5bGUgOiBjb21wdXRlZERlY29y
YXRpb25TdHlsZSgpLAorICAgICAgICAgICAgeyB0ZXh0Qm94TG9jYXRpb24ueCgpLCBtX3BhaW50
T2Zmc2V0LnkoKSArIGlubGluZUJveC0+bG9naWNhbFRvcCgpIH0KKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGlmIHRoZSBkZWNvcmF0aW9uIHN0eWxlcyBj
b21pbmcgZnJvbSB0aGUgc3R5bGVkIG1hcmtlZCB0ZXh0IHNob3VsZCBiZSB1c2VkIG9ubHkgb24g
dGhlIGNsb3Nlc3QgaW5saW5lIGJveCAoZGlyZWN0IHBhcmVudCkuCisgICAgYXBwZW5kSWZJc0Rl
Y29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKGFuY2VzdG9ySW5saW5lQm94LCBVc2VPdmVycmlkZXJE
ZWNvcmF0aW9uU3R5bGU6Olllcyk7CisgICAgd2hpbGUgKCFhbmNlc3RvcklubGluZUJveC0+aXNS
b290SW5saW5lQm94KCkpIHsKKyAgICAgICAgYW5jZXN0b3JJbmxpbmVCb3ggPSBhbmNlc3Rvcklu
bGluZUJveC0+cGFyZW50SW5saW5lQm94KCk7CisgICAgICAgIGFwcGVuZElmSXNEZWNvcmF0aW5n
Qm94Rm9yQmFja2dyb3VuZChhbmNlc3RvcklubGluZUJveCwgVXNlT3ZlcnJpZGVyRGVjb3JhdGlv
blN0eWxlOjpObyk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4K
K3ZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHls
ZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRleHRCb3hQYWludFJl
Y3QpCiB7CiAgICAgaWYgKG1faXNDb21iaW5lZFRleHQpCiAgICAgICAgIG1fcGFpbnRJbmZvLmNv
bnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWludFJlY3QsIENsb2Nrd2lzZSkpOwogCiAg
ICAgYXV0byB0ZXh0UnVuID0gbV9wYWludFRleHRSdW4uc3ViUnVuKG1hcmtlZFRleHQuc3RhcnRP
ZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0IC0gbWFya2VkVGV4dC5zdGFydE9mZnNldCk7Ci0g
ICAgYXV0byYgc3R5bGVUb1VzZSA9IG1faXNGaXJzdExpbmUgPyBtX3JlbmRlcmVyLmZpcnN0TGlu
ZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCk7Ci0gICAgY29uc3QgYXV0byYgdGV4dERlY29y
YXRpb25TdHlsZXMgPSBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzOwotICAg
IGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUgPSBbJl0gewotICAgICAgICBhdXRvIHRl
eHREZWNvcmF0aW9ucyA9IHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNv
cmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29yYXRpb25TdHlsZXMpKTsKLSAgICAgICAg
cmV0dXJuIHRleHREZWNvcmF0aW9uczsKLSAgICB9KCk7Ci0gICAgYXV0byBjb21wdXRlZEJhY2tn
cm91bmREZWNvcmF0aW9uR2VvbWV0cnkgPSBbJl0gewotICAgICAgICBhdXRvIGRldmljZVNjYWxl
RmFjdG9yID0gbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpOwotCi0gICAgICAgIGF1dG8g
dGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KHN0eWxlVG9Vc2UsIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgYXV0byB1bmRlcmxpbmVP
ZmZzZXQgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlw
ZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDAuZjsKLSAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGluZU9m
ZnNldEZvclRleHRCb3hQYWludGluZyhzdHlsZVRvVXNlLCBtYWtlSXRlcmF0b3IoKSk7Ci0gICAg
ICAgICAgICBhdXRvIHdhdnlPZmZzZXQgPSB0ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUu
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0
RnJvbURlY29yYXRpb24oKSA6IDAuZjsKLSAgICAgICAgICAgIHJldHVybiBiYXNlT2Zmc2V0ICsg
d2F2eU9mZnNldDsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBhdXRvVGV4dERlY29yYXRpb25U
aGlja25lc3MgPSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNl
LCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGF1dG8gb3ZlcmxpbmVPZmZzZXQgPSBbJl0g
ewotICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMC5m
OwotICAgICAgICAgICAgcmV0dXJuIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIC0gKHRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21E
ZWNvcmF0aW9uKCkgOiAwLmYpOwotICAgICAgICB9OwogCi0gICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgewotICAgICAgICAg
ICAgdGV4dE9yaWdpbkZyb21QYWludFJlY3Qoc25hcHBlZFNlbGVjdGlvblJlY3QpLAotICAgICAg
ICAgICAgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKSwKLSAgICAgICAgICAgIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksCi0gICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcywKLSAgICAgICAgICAgIHVuZGVybGluZU9mZnNldCgpLAotICAgICAgICAgICAgb3Zlcmxp
bmVPZmZzZXQoKSwKLSAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50ZXIoc3R5bGVU
b1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyksCi0gICAgICAgICAgICBzdHlsZVRvVXNlLm1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50
KCkgKyAyLmYsCi0gICAgICAgICAgICB3YXZ5U3Ryb2tlUGFyYW1ldGVycyhzdHlsZVRvVXNlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKQorICAgIGF1dG8gdGV4dEJveCA9IG1ha2VJdGVyYXRvcigp
OworICAgIGF1dG8gZGVjb3JhdGluZ0JveExpc3QgPSBEZWNvcmF0aW5nQm94TGlzdCB7IH07Cisg
ICAgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goZGVjb3JhdGluZ0JveExpc3QsIHRl
eHRCb3gsIHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKSwgbWFya2VkVGV4dC5zdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcyk7CisKKyAgICBmb3IgKGF1dG8mIGRlY29yYXRpbmdCb3ggOiBtYWtl
UmV2ZXJzZWRSYW5nZShkZWNvcmF0aW5nQm94TGlzdCkpIHsKKyAgICAgICAgYXV0byBjb21wdXRl
ZFRleHREZWNvcmF0aW9uVHlwZSA9IFdlYkNvcmU6OmNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBl
KGRlY29yYXRpbmdCb3guc3R5bGUsIGRlY29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMp
OworICAgICAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSA9IFsm
XSB7CisgICAgICAgICAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY29tcHV0ZWRU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxlLCBtX2RvY3VtZW50LmRl
dmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byB1bmRlcmxpbmVPZmZzZXQgPSBb
Jl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMC5mOworICAgICAgICAgICAgICAgIGF1dG8gYmFzZU9mZnNldCA9IHVuZGVybGlu
ZU9mZnNldEZvclRleHRCb3hQYWludGluZygqZGVjb3JhdGluZ0JveC5pbmxpbmVCb3gsIGRlY29y
YXRpbmdCb3guc3R5bGUpOworICAgICAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9IGRlY29y
YXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkg
OiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5T2Zmc2V0Owor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tu
ZXNzID0gY29tcHV0ZWRBdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MoZGVjb3JhdGluZ0JveC5z
dHlsZSwgbV9kb2N1bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIGF1dG8g
b3ZlcmxpbmVPZmZzZXQgPSBbJl0geworICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWRUZXh0
RGVjb3JhdGlvblR5cGUuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwLmY7CisgICAgICAgICAgICAgICAgcmV0dXJuIGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gKGRl
Y29yYXRpbmdCb3gudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxl
ID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24o
KSA6IDAuZik7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICByZXR1cm4gVGV4dERlY29y
YXRpb25QYWludGVyOjpCYWNrZ3JvdW5kRGVjb3JhdGlvbkdlb21ldHJ5IHsKKyAgICAgICAgICAg
ICAgICB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdCh0ZXh0Qm94UGFpbnRSZWN0KSwKKyAgICAgICAg
ICAgICAgICBkZWNvcmF0aW5nQm94LmxvY2F0aW9uLAorICAgICAgICAgICAgICAgIHRleHRCb3hQ
YWludFJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cywKKyAgICAgICAgICAgICAgICB1bmRlcmxpbmVPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICBv
dmVybGluZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIGNvbXB1dGVkTGluZXRocm91Z2hDZW50
ZXIoZGVjb3JhdGluZ0JveC5zdHlsZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyksCisgICAgICAgICAgICAgICAgZGVjb3JhdGluZ0JveC5zdHls
ZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmFzY2VudCgpICsgMi5mLAorICAgICAgICAgICAgICAg
IHdhdnlTdHJva2VQYXJhbWV0ZXJzKGRlY29yYXRpbmdCb3guc3R5bGUuY29tcHV0ZWRGb250UGl4
ZWxTaXplKCkpCisgICAgICAgICAgICB9OwogICAgICAgICB9OwotICAgIH07CiAKLSAgICBkZWNv
cmF0aW9uUGFpbnRlci5wYWludEJhY2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBjb21wdXRl
ZEJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5
cGUsIHRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICAgICAgZGVjb3JhdGlvblBhaW50ZXIucGFp
bnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnModGV4dFJ1biwgY29tcHV0ZWRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbkdlb21ldHJ5KCksIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLCBkZWNvcmF0aW5nQm94
LnRleHREZWNvcmF0aW9uU3R5bGVzKTsKKyAgICB9CiAKICAgICBpZiAobV9pc0NvbWJpbmVkVGV4
dCkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShyb3RhdGlvbihtX3Bh
aW50UmVjdCwgQ291bnRlcmNsb2Nrd2lzZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0
Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91
bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBj
b25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0KQordm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50
Rm9yZWdyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBh
aW50ZXIsIGNvbnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGV4dEJveFBhaW50UmVjdCkKIHsKICAgICBhdXRvJiBzdHlsZVRvVXNlID0gbV9pc0ZpcnN0
TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5bGUoKSA6IG1fcmVuZGVyZXIuc3R5bGUoKTsK
ICAgICBhdXRvIGNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlID0gWyZdIHsKQEAgLTUyNSw4ICs1
ODcsOCBAQCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5k
RGVjb3JhdGlvbnMoVGV4dERlY29yYXRpb25QYWludAogICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYXV0byB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5bGVUb1Vz
ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gbGluZXRocm91Z2hDZW50ZXIgPSBjb21w
dXRlZExpbmV0aHJvdWdoQ2VudGVyKHN0eWxlVG9Vc2UsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LCBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwotICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3VuZERlY29y
YXRpb25zKHsgc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKQotICAgICAgICAsIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0LndpZHRoKCkKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEZvcmVn
cm91bmREZWNvcmF0aW9ucyh7IHRleHRCb3hQYWludFJlY3QubG9jYXRpb24oKQorICAgICAgICAs
IHRleHRCb3hQYWludFJlY3Qud2lkdGgoKQogICAgICAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzCiAgICAgICAgICwgbGluZXRocm91Z2hDZW50ZXIKICAgICAgICAgLCB3YXZ5U3Ryb2tlUGFy
YW1ldGVycyhzdHlsZVRvVXNlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB9LCBtYXJrZWRUZXh0
LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRCb3hQYWludGVyLmgKaW5kZXggMDAzZDM0ODI2OWFjLi5kMDFiYzdlM2EyYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCkBAIC0yNSw5ICsyNSwxMSBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlRleHRCb3hTZWxlY3RhYmxlUmFu
Z2UuaCIKKyNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKICNpbmNsdWRlICJUZXh0
UnVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcgKzQxLDYgQEAgY2xhc3MgUmVu
ZGVyQ29tYmluZVRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBj
bGFzcyBTaGFkb3dEYXRhOwotY2xhc3MgVGV4dERlY29yYXRpb25QYWludGVyOwogc3RydWN0IENv
bXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IE1hcmtlZFRleHQ7CiBzdHJ1Y3QgUGFpbnRJbmZv
OwpAQCAtODAsNiArODEsMTUgQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250Q2FzY2FkZSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbkZyb21QYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKKyAgICBzdHJ1Y3QgRGVjb3JhdGluZ0JveCB7
CisgICAgICAgIElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvciBpbmxpbmVCb3g7Cisg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZTsKKyAgICAgICAgVGV4dERlY29yYXRpb25Q
YWludGVyOjpTdHlsZXMgdGV4dERlY29yYXRpb25TdHlsZXM7CisgICAgICAgIEZsb2F0UG9pbnQg
bG9jYXRpb247CisgICAgfTsKKyAgICB1c2luZyBEZWNvcmF0aW5nQm94TGlzdCA9IFZlY3RvcjxE
ZWNvcmF0aW5nQm94PjsKKyAgICB2b2lkIGNvbGxlY3REZWNvcmF0aW5nQm94ZXNGb3JUZXh0Qm94
KERlY29yYXRpbmdCb3hMaXN0JiwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciYsIEZsb2F0UG9pbnQgdGV4dEJveExvY2F0aW9uLCBjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyYpOworCiAgICAgY29uc3QgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBUZXh0Qm94UGF0aCBtX3RleHRCb3g7CkBAIC05MCw2ICsxMDAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgVGV4dFJ1biBtX3BhaW50VGV4dFJ1bjsKICAgICBQ
YWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IFRleHRCb3hTZWxlY3RhYmxlUmFuZ2Ug
bV9zZWxlY3RhYmxlUmFuZ2U7CisgICAgY29uc3QgTGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsK
ICAgICBjb25zdCBGbG9hdFJlY3QgbV9wYWludFJlY3Q7CiAgICAgY29uc3QgYm9vbCBtX2lzRmly
c3RMaW5lOwogICAgIGNvbnN0IGJvb2wgbV9pc0NvbWJpbmVkVGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDAwMjc3ODI3NmY5MC4uZTJjMjI1
MDcxYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9v
dElubGluZUJveC5oIgpAQCAtMTE4LDE4ICsxMTksMjIgQEAgc3RhdGljIGNvbnN0IFJlbmRlckVs
ZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRl
eHQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIGZsb2F0IGJveE9mZnNldEZyb21C
b3R0b21Nb3N0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gs
IGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdJbmxpbmVCb3hSZW5kZXJlciwgZmxvYXQg
Ym94TG9naWNhbFRvcCwgZmxvYXQgYm94TG9naWNhbEJvdHRvbSkKK3sKKyAgICBpZiAoZGVjb3Jh
dGluZ0lubGluZUJveFJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgp
KQorICAgICAgICByZXR1cm4gYm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCBib3hMb2dpY2FsVG9wLCBkZWNvcmF0aW5nSW5saW5l
Qm94UmVuZGVyZXIpOworICAgIHJldHVybiBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRp
b25MaW5lVW5kZXIobGluZUJveCwgYm94TG9naWNhbEJvdHRvbSwgZGVjb3JhdGluZ0lubGluZUJv
eFJlbmRlcmVyKSAtIGJveExvZ2ljYWxCb3R0b207Cit9CisKIHN0YXRpYyBmbG9hdCB0ZXh0UnVu
T2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRv
ciYgbGluZUJveCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHRleHRCb3hMb2dp
Y2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkKIHsKICAgICBhdXRvKiBkZWNvcmF0
aW5nQm94UmVuZGVyZXJGb3JVbmRlcmxpbmUgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVj
b3JhdGlvbihyZW5kZXJlcik7CiAgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXJGb3JVbmRl
cmxpbmUpCiAgICAgICAgIHJldHVybiAwLmY7CiAKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0ZXh0Qm94TG9naWNh
bFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5lQm94LCB0
ZXh0Qm94TG9naWNhbFRvcCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSk7Ci0g
ICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmVVbmRlcihsaW5l
Qm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVy
bGluZSkgLSB0ZXh0Qm94TG9naWNhbEJvdHRvbTsKKyAgICByZXR1cm4gYm94T2Zmc2V0RnJvbUJv
dHRvbU1vc3QobGluZUJveCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGluZSwgdGV4
dEJveExvZ2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIH0KIAotCiBzdGF0aWMgaW5s
aW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGNv
bnN0IGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTYuZjsKQEAgLTI5NSwxNCAr
MzAwLDE0IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAotZmxvYXQgdW5kZXJs
aW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKK2Zsb2F0IHVuZGVy
bGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5l
Qm94JiBpbmxpbmVCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBhdXRvIHRl
eHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25hbDxUZXh0VW5kZXJsaW5lUG9z
aXRpb25VbmRlcj4geyB9OwotICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29s
dmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIHRleHRCb3gtPmxpbmVCb3goKS0+YmFzZWxpbmVU
eXBlKCkpOworICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24oc3R5bGUsIGlubGluZUJveC5saW5lQm94KCktPmJhc2VsaW5lVHlwZSgpKTsK
IAogICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZy
b21Cb3R0b21Nb3N0KHRleHRCb3gtPmxpbmVCb3goKSwgdGV4dEJveC0+cmVuZGVyZXIoKSwgdGV4
dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwotICAgICAgICB0
ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsg
dGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0UnVu
T2Zmc2V0IH07CisgICAgICAgIGF1dG8gdGV4dFJ1bk9mZnNldCA9IGJveE9mZnNldEZyb21Cb3R0
b21Nb3N0KGlubGluZUJveC5saW5lQm94KCksIGlubGluZUJveC5yZW5kZXJlcigpLCBpbmxpbmVC
b3gubG9naWNhbFRvcCgpLCBpbmxpbmVCb3gubG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgdGV4
dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7IGlu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCksIHRleHRSdW5PZmZzZXQgfTsKICAgICB9CiAKICAgICBy
ZXR1cm4gY29tcHV0ZWRVbmRlcmxpbmVPZmZzZXQoeyBzdHlsZSwgdW5kZXJsaW5lUG9zaXRpb25W
YWx1ZSwgZGVmYXVsdEdhcChzdHlsZSksIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAppbmRleCA3M2UxZThjNWEw
NTIuLmJmNGE5YjIyMWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5l
VGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmgKQEAgLTI1LDE3ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLWNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7Ci1jbGFzcyBSZW5kZXJFbGVt
ZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCiBp
bmxpbmUgZmxvYXQgd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkKIHsKQEAgLTY1LDYgKzYxLDYg
QEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRl
clN0eWxlJik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmLCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVy
KTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRl
eHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVu
ZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImKTsKK2Zsb2F0IHVuZGVybGluZU9mZnNl
dEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94JiwgY29u
c3QgUmVuZGVyU3R5bGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10
ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLWEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRz
L3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAw
MS1hLmh0bWwKaW5kZXggYzhlZDE5MDNmZDgzLi5iZjJlZWEzZWE5ZTIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLWEuaHRtbApAQCAtMSw0ICsxLDUgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzND
Ly9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNC9sb29zZS5kdGQiPgorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVu
Y2U9NjQ7IHRvdGFsUGl4ZWxzPTYtMTkiIC8+CiA8bGluayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVm
Lmh0bWw+CiA8dGl0bGU+VGhlIGZvbnQgZWxlbWVudCB0ZXh0IGRlY29yYXRpb24gY29sb3IgcXVp
cmssIDAwMSwgYWxtb3N0IHN0YW5kYXJkcyBtb2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7
IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVt
ZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xv
ci8wMDEtcS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0w
L2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbAppbmRleCA5MDI1
ZTcyODk5MTguLjNjODU2ZGUxNDg2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVu
dHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3Iv
MDAxLXEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50
LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcS5odG1sCkBAIC0xLDMg
KzEsNCBAQAorPG1ldGEgbmFtZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9NjQ7IHRv
dGFsUGl4ZWxzPTYtMTkiIC8+CiA8bGluayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVmLmh0bWw+CiA8
dGl0bGU+VGhlIGZvbnQgZWxlbWVudCB0ZXh0IGRlY29yYXRpb24gY29sb3IgcXVpcmssIDAwMSwg
cXVpcmtzIG1vZGU8L3RpdGxlPgogPHN0eWxlPltpZF0gPiAqIHsgY29sb3I6ZnVjaHNpYSB9PC9z
dHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRl
bnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25v
bi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQt
ZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5odG1sCmluZGV4IGJhYzgwZTUzYmFlNC4uODY2ZmU5M2Zh
MjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50
LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwKQEAgLTEsNCArMSw1IEBACiA8IWRvY3R5cGUg
aHRtbD4KKzxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTY0OyB0b3Rh
bFBpeGVscz02LTE5IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRp
dGxlPlRoZSBmb250IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIHN0
YW5kYXJkcyBtb2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwv
c3R5bGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461578</attachid>
            <date>2022-08-13 08:12:15 -0700</date>
            <delta_ts>2022-08-13 09:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220813081214.patch</filename>
            <type>text/plain</type>
            <size>25522</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwYjBkNjNkMmYyZTk0MGFjNDYwZDZjOWRhZjYzODMzZGE2MzExMDRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgooVGhlIGZ1enp5IGNoYW5nZSBpcyBkdWUgdG8gbXVsdGlwbGUgdW5kZXJsaW5lcyBnZXR0aW5n
IHBhaW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggb3RoZXIgb24gc3VicGl4ZWwgcG9zaXRp
b25zIGJldHdlZW4gZ2x5cGhzIHdpdGggZGVzY2VuZGVycyAoY29taW5nIGZyb20gdmVydGljYWxs
eSBvdmVybGFwcGluZyBkZWNvcmF0aW5nIGJveGVzIGUuZy4gPGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmUiPjxmb250PmdnZzwvZm9udD48L2Rpdj4pCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6
Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveCk6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKFdlYkNvcmU6
OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE1MiArKysrKysrKysrKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oICAgICB8ICAx
MyArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgIDIx
ICsrLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgICA4
ICstCiAuLi5lY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwgfCAgIDEg
KwogLi4ubnMtb24tZmlyc3QtbGluZS1hbmQtY29udGFpbmluZy1ibG9jay5odG1sIHwgICAxICsK
IC4uLi8wMDEtYS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAu
Li4vMDAxLXEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4u
LzAwMS1zLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDkgZmls
ZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IDg1NGFiZmFkNWY1OC4u
ZDBkMWEwZTI0MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJF
dmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4
dEJveC5oIgpAQCAtNzAsNiArNzEsNyBAQCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRl
eHRCb3hQYWludGVyKFRleHRCb3hQYXRoJiYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYQogICAgICwg
bV9wYWludFRleHRSdW4obV90ZXh0Qm94LmNyZWF0ZVRleHRSdW4oSW5saW5lSXRlcmF0b3I6OkNy
ZWF0ZVRleHRSdW5Nb2RlOjpQYWludGluZykpCiAgICAgLCBtX3BhaW50SW5mbyhwYWludEluZm8p
CiAgICAgLCBtX3NlbGVjdGFibGVSYW5nZShtX3RleHRCb3guc2VsZWN0YWJsZVJhbmdlKCkpCisg
ICAgLCBtX3BhaW50T2Zmc2V0KHBhaW50T2Zmc2V0KQogICAgICwgbV9wYWludFJlY3QoY29tcHV0
ZVBhaW50UmVjdChwYWludE9mZnNldCkpCiAgICAgLCBtX2lzRmlyc3RMaW5lKG1fdGV4dEJveC5p
c0ZpcnN0TGluZSgpKQogICAgICwgbV9pc0NvbWJpbmVkVGV4dChpczxSZW5kZXJDb21iaW5lVGV4
dD4obV9yZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KG1fcmVuZGVyZXIp
LmlzQ29tYmluZWQoKSkKQEAgLTI4MiwxNyArMjg0LDE3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8
VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91bmRBbmREZWNvcmF0aW9ucygpCiAgICAgICAgICAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBtYXJrZWRUZXh0LmVuZE9mZnNldDsKICAgICAgICAgICAg
IGlmIChzdGFydE9mZnNldCA8IGVuZE9mZnNldCkgewogICAgICAgICAgICAgICAgIC8vIEF2b2lk
IG1lYXN1cmluZyB0aGUgdGV4dCB3aGVuIHRoZSBlbnRpcmUgbGluZSBib3ggaXMgc2VsZWN0ZWQg
YXMgYW4gb3B0aW1pemF0aW9uLgotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzbmFwcGVkU2Vs
ZWN0aW9uUmVjdCA9IG1fcGFpbnRSZWN0OworICAgICAgICAgICAgICAgIGF1dG8gc25hcHBlZFBh
aW50UmVjdCA9IG1fcGFpbnRSZWN0OwogICAgICAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCB8
fCBlbmRPZmZzZXQgIT0gbV9wYWludFRleHRSdW4ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0geyBtX3BhaW50UmVjdC54KCksIG1fcGFp
bnRSZWN0LnkoKSwgbV9wYWludFJlY3Qud2lkdGgoKSwgbV9wYWludFJlY3QuaGVpZ2h0KCkgfTsK
ICAgICAgICAgICAgICAgICAgICAgZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChtX3BhaW50VGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHNuYXBwZWRTZWxlY3Rpb25SZWN0ID0gc25hcFJlY3RU
b0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIG1fZG9jdW1l
bnQuZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV9wYWludFRleHRSdW4ubHRyKCkpOworICAgICAgICAg
ICAgICAgICAgICBzbmFwcGVkUGFpbnRSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhX
cml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIG1fZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgbV9wYWludFRleHRSdW4ubHRyKCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIFRleHREZWNvcmF0aW9uUGFpbnRlciBkZWNvcmF0aW9uUGFpbnRlciA9IGNyZWF0
ZURlY29yYXRpb25QYWludGVyKG1hcmtlZFRleHQsIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xp
cE91dFJlY3QpOwotICAgICAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGRl
Y29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkU2VsZWN0aW9uUmVjdCk7CisgICAg
ICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uUGFpbnRlciA9IGNyZWF0ZURlY29yYXRpb25QYWlu
dGVyKG1hcmtlZFRleHQsIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QpOworICAg
ICAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVy
LCBtYXJrZWRUZXh0LCBzbmFwcGVkUGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICBwYWludEZv
cmVncm91bmQobWFya2VkVGV4dCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMoZGVjb3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0KTsKKyAgICAgICAgICAgICAgICBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0
aW9uUGFpbnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDU1LDU5ICs0NTcsMTE5IEBAIHN0YXRpYyBp
bmxpbmUgZmxvYXQgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGVUb1VzZSwgZmxvCiAgICAgcmV0dXJuIGNlbnRlciAtIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIC8gMjsKIH0KIAorc3RhdGljIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiB0ZXh0RGVjb3JhdGlvblN0eWxlcykK
K3sKKyAgICBhdXRvIHRleHREZWNvcmF0aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CisgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29yYXRpb25TdHlsZXMpKTsKKyAg
ICByZXR1cm4gdGV4dERlY29yYXRpb25zOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWNv
cmF0aW5nQm94Rm9yQmFja2dyb3VuZChjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94JiBp
bmxpbmVCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlKQoreworICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gaW5saW5lQm94LnJlbmRlcmVyKCkuZWxlbWVudCgpOyBlbGVtZW50ICYmIChp
czxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmb250VGFnKSkpIHsKKyAgICAgICAgLy8gPGZvbnQ+IGFuZCA8YT4gYXJlIGFsd2F5
cyBjb25zaWRlcmVkIGRlY29yYXRpbmcgYm94ZXMuCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbkxpbmUoKS5jb250YWluc0Fu
eSh7IFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92
ZXJsaW5lIH0pCisgICAgICAgIHx8IChpbmxpbmVCb3guaXNSb290SW5saW5lQm94KCkgJiYgc3R5
bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zQW55KHsgVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUsIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUgfSkpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8
VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBh
aW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRU
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBwZWRTZWxlY3Rpb25SZWN0KQordm9pZCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OmNvbGxlY3REZWNvcmF0aW5nQm94ZXNGb3JUZXh0Qm94KERl
Y29yYXRpbmdCb3hMaXN0JiBkZWNvcmF0aW5nQm94TGlzdCwgY29uc3QgSW5saW5lSXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgRmxvYXRQb2ludCB0ZXh0Qm94TG9jYXRpb24sIGNv
bnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiBvdmVycmlkZURlY29yYXRpb25TdHls
ZSkKK3sKKyAgICBhdXRvIGFuY2VzdG9ySW5saW5lQm94ID0gdGV4dEJveC0+cGFyZW50SW5saW5l
Qm94KCk7CisgICAgLy8gRklYTUU6IFZlcnRpY2FsIHdyaXRpbmcgbW9kZSBuZWVkcyBzb21lIGNv
b3JkaW5hdGUgc3BhY2UgdHJhbnNmb3JtYXRpb24gZm9yIHBhcmVudCBpbmxpbmUgYm94ZXMgYXMg
d2Ugcm90YXRlIHRoZSBjb250ZW50IHdpdGggbV9wYWludFJlY3QgKHNlZSA6OnBhaW50KQorICAg
IGlmIChhbmNlc3RvcklubGluZUJveC0+aXNSb290SW5saW5lQm94KCkgfHwgIXRleHRCb3gtPmlz
SG9yaXpvbnRhbCgpKSB7CisgICAgICAgIGRlY29yYXRpbmdCb3hMaXN0LmFwcGVuZCh7CisgICAg
ICAgICAgICBhbmNlc3RvcklubGluZUJveCwKKyAgICAgICAgICAgIG1faXNGaXJzdExpbmUgPyBt
X3JlbmRlcmVyLmZpcnN0TGluZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCksCisgICAgICAg
ICAgICBvdmVycmlkZURlY29yYXRpb25TdHlsZSwKKyAgICAgICAgICAgIHRleHRCb3hMb2NhdGlv
bgorICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVudW0gVXNlT3Zl
cnJpZGVyRGVjb3JhdGlvblN0eWxlIDogYm9vbCB7IFllcywgTm8gfTsKKyAgICBhdXRvIGFwcGVu
ZElmSXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZCA9IFsmXSAoYXV0byYgaW5saW5lQm94LCBh
dXRvIHVzZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZSkgeworICAgICAgICBhdXRvJiBzdHlsZSA9
IG1faXNGaXJzdExpbmUgPyBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6
IGlubGluZUJveC0+cmVuZGVyZXIoKS5zdHlsZSgpOworCisgICAgICAgIGF1dG8gY29tcHV0ZWRE
ZWNvcmF0aW9uU3R5bGUgPSBbJl0geworICAgICAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoaW5saW5lQm94LT5yZW5kZXJlcigpLCBzdHlsZS50
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCBtX2lzRmlyc3RMaW5lKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgaWYgKCFpc0RlY29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKCppbmxpbmVCb3gsIHN0eWxl
KSkgeworICAgICAgICAgICAgLy8gU29tZSBjYXNlcyBldmVuIG5vbi1kZWNvcmF0aW9uIGJveGVz
IG1heSBoYXZlIHNvbWUgZGVjb3JhdGlvbiBwaWVjZXMgY29taW5nIGZyb20gdGhlIG1hcmtlZCB0
ZXh0IChlLmcuIGhpZ2hsaWdodCkuCisgICAgICAgICAgICBpZiAodXNlT3ZlcnJpZGVyRGVjb3Jh
dGlvblN0eWxlID09IFVzZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZTo6Tm8gfHwgb3ZlcnJpZGVE
ZWNvcmF0aW9uU3R5bGUgPT0gY29tcHV0ZWREZWNvcmF0aW9uU3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBl
bmQoeworICAgICAgICAgICAgaW5saW5lQm94LAorICAgICAgICAgICAgc3R5bGUsCisgICAgICAg
ICAgICB1c2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGUgPT0gVXNlT3ZlcnJpZGVyRGVjb3JhdGlv
blN0eWxlOjpZZXMgPyBvdmVycmlkZURlY29yYXRpb25TdHlsZSA6IGNvbXB1dGVkRGVjb3JhdGlv
blN0eWxlKCksCisgICAgICAgICAgICB7IHRleHRCb3hMb2NhdGlvbi54KCksIG1fcGFpbnRPZmZz
ZXQueSgpICsgaW5saW5lQm94LT5sb2dpY2FsVG9wKCkgfQorICAgICAgICB9KTsKKyAgICB9Owor
CisgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgdGhlIGRlY29yYXRpb24gc3R5bGVzIGNvbWlu
ZyBmcm9tIHRoZSBzdHlsZWQgbWFya2VkIHRleHQgc2hvdWxkIGJlIHVzZWQgb25seSBvbiB0aGUg
Y2xvc2VzdCBpbmxpbmUgYm94IChkaXJlY3QgcGFyZW50KS4KKyAgICBhcHBlbmRJZklzRGVjb3Jh
dGluZ0JveEZvckJhY2tncm91bmQoYW5jZXN0b3JJbmxpbmVCb3gsIFVzZU92ZXJyaWRlckRlY29y
YXRpb25TdHlsZTo6WWVzKTsKKyAgICB3aGlsZSAoIWFuY2VzdG9ySW5saW5lQm94LT5pc1Jvb3RJ
bmxpbmVCb3goKSkgeworICAgICAgICBhbmNlc3RvcklubGluZUJveCA9IGFuY2VzdG9ySW5saW5l
Qm94LT5wYXJlbnRJbmxpbmVCb3goKTsKKyAgICAgICAgYXBwZW5kSWZJc0RlY29yYXRpbmdCb3hG
b3JCYWNrZ3JvdW5kKGFuY2VzdG9ySW5saW5lQm94LCBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5
bGU6Ok5vKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgordm9p
ZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0IFN0eWxlZE1h
cmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGV4dEJveFBhaW50UmVjdCkK
IHsKICAgICBpZiAobV9pc0NvbWJpbmVkVGV4dCkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4
dCgpLmNvbmNhdENUTShyb3RhdGlvbihtX3BhaW50UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICBh
dXRvIHRleHRSdW4gPSBtX3BhaW50VGV4dFJ1bi5zdWJSdW4obWFya2VkVGV4dC5zdGFydE9mZnNl
dCwgbWFya2VkVGV4dC5lbmRPZmZzZXQgLSBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0KTsKLSAgICBh
dXRvJiBzdHlsZVRvVXNlID0gbV9pc0ZpcnN0TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5
bGUoKSA6IG1fcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBjb25zdCBhdXRvJiB0ZXh0RGVjb3JhdGlv
blN0eWxlcyA9IG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXM7Ci0gICAgYXV0
byBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gdGV4dERl
Y29yYXRpb25zID0gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgICAg
ICB0ZXh0RGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRp
b25zSW5FZmZlY3RGb3JTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlcykpOwotICAgICAgICByZXR1
cm4gdGV4dERlY29yYXRpb25zOwotICAgIH0oKTsKLSAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3Vu
ZERlY29yYXRpb25HZW9tZXRyeSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAgICAgYXV0byB0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5
bGVUb1VzZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNl
dCA9IFsmXSB7Ci0gICAgICAgICAgICBpZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMC5mOwotICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zmc2V0
Rm9yVGV4dEJveFBhaW50aW5nKHN0eWxlVG9Vc2UsIG1ha2VJdGVyYXRvcigpKTsKLSAgICAgICAg
ICAgIGF1dG8gd2F2eU9mZnNldCA9IHRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9t
RGVjb3JhdGlvbigpIDogMC5mOwotICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5
T2Zmc2V0OwotICAgICAgICB9OwotICAgICAgICBhdXRvIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyA9IGNvbXB1dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRl
dmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgYXV0byBvdmVybGluZU9mZnNldCA9IFsmXSB7Ci0g
ICAgICAgICAgICBpZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiAwLmY7Ci0g
ICAgICAgICAgICByZXR1cm4gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29y
YXRpb25UaGlja25lc3MgLSAodGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlv
blN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29y
YXRpb24oKSA6IDAuZik7Ci0gICAgICAgIH07CiAKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6QmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSB7Ci0gICAgICAgICAgICB0
ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChzbmFwcGVkU2VsZWN0aW9uUmVjdCksCi0gICAgICAgICAg
ICBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2NhdGlvbigpLAotICAgICAgICAgICAgc25hcHBlZFNl
bGVjdGlvblJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LAotICAgICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0KCksCi0gICAgICAgICAgICBvdmVybGluZU9m
ZnNldCgpLAotICAgICAgICAgICAgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihzdHlsZVRvVXNl
LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKSwK
LSAgICAgICAgICAgIHN0eWxlVG9Vc2UubWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IDIuZiwKLSAgICAgICAgICAgIHdhdnlTdHJva2VQYXJhbWV0ZXJzKHN0eWxlVG9Vc2UuY29tcHV0
ZWRGb250UGl4ZWxTaXplKCkpCisgICAgYXV0byB0ZXh0Qm94ID0gbWFrZUl0ZXJhdG9yKCk7Cisg
ICAgYXV0byBkZWNvcmF0aW5nQm94TGlzdCA9IERlY29yYXRpbmdCb3hMaXN0IHsgfTsKKyAgICBj
b2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveChkZWNvcmF0aW5nQm94TGlzdCwgdGV4dEJv
eCwgdGV4dEJveFBhaW50UmVjdC5sb2NhdGlvbigpLCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzKTsKKworICAgIGZvciAoYXV0byYgZGVjb3JhdGluZ0JveCA6IG1ha2VSZXZl
cnNlZFJhbmdlKGRlY29yYXRpbmdCb3hMaXN0KSkgeworICAgICAgICBhdXRvIGNvbXB1dGVkVGV4
dERlY29yYXRpb25UeXBlID0gV2ViQ29yZTo6Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUoZGVj
b3JhdGluZ0JveC5zdHlsZSwgZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcyk7Cisg
ICAgICAgIGF1dG8gY29tcHV0ZWRCYWNrZ3JvdW5kRGVjb3JhdGlvbkdlb21ldHJ5ID0gWyZdIHsK
KyAgICAgICAgICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKGRlY29yYXRpbmdCb3guc3R5bGUsIG1fZG9jdW1lbnQuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNldCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwLmY7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zm
c2V0Rm9yVGV4dEJveFBhaW50aW5nKCpkZWNvcmF0aW5nQm94LmlubGluZUJveCwgZGVjb3JhdGlu
Z0JveC5zdHlsZSk7CisgICAgICAgICAgICAgICAgYXV0byB3YXZ5T2Zmc2V0ID0gZGVjb3JhdGlu
Z0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSA6IDAu
ZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZU9mZnNldCArIHdhdnlPZmZzZXQ7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgYXV0byBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxl
LCBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byBvdmVy
bGluZU9mZnNldCA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNv
cmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLSAoZGVjb3Jh
dGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIDog
MC5mKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgeworICAgICAgICAgICAgICAg
IHRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KHRleHRCb3hQYWludFJlY3QpLAorICAgICAgICAgICAg
ICAgIGRlY29yYXRpbmdCb3gubG9jYXRpb24sCisgICAgICAgICAgICAgICAgdGV4dEJveFBhaW50
UmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLAor
ICAgICAgICAgICAgICAgIHVuZGVybGluZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIG92ZXJs
aW5lT2Zmc2V0KCksCisgICAgICAgICAgICAgICAgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihk
ZWNvcmF0aW5nQm94LnN0eWxlLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzKSwKKyAgICAgICAgICAgICAgICBkZWNvcmF0aW5nQm94LnN0eWxlLm1l
dHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgKyAyLmYsCisgICAgICAgICAgICAgICAgd2F2
eVN0cm9rZVBhcmFtZXRlcnMoZGVjb3JhdGluZ0JveC5zdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNp
emUoKSkKKyAgICAgICAgICAgIH07CiAgICAgICAgIH07Ci0gICAgfTsKIAotICAgIGRlY29yYXRp
b25QYWludGVyLnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKHRleHRSdW4sIGNvbXB1dGVkQmFj
a2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSgpLCBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSwg
dGV4dERlY29yYXRpb25TdHlsZXMpOworICAgICAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEJh
Y2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBjb21wdXRlZEJhY2tncm91bmREZWNvcmF0aW9u
R2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUsIGRlY29yYXRpbmdCb3gudGV4
dERlY29yYXRpb25TdHlsZXMpOworICAgIH0KIAogICAgIGlmIChtX2lzQ29tYmluZWRUZXh0KQog
ICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRS
ZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQ
YXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZERl
Y29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0
IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc25hcHBlZFNl
bGVjdGlvblJlY3QpCit2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3Jl
Z3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRpb25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRl
ciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0
ZXh0Qm94UGFpbnRSZWN0KQogewogICAgIGF1dG8mIHN0eWxlVG9Vc2UgPSBtX2lzRmlyc3RMaW5l
ID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpOwogICAg
IGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUgPSBbJl0gewpAQCAtNTI1LDggKzU4Nyw4
IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91bmREZWNv
cmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50CiAgICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBhdXRvIHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgYXV0byBsaW5ldGhyb3VnaENlbnRlciA9IGNvbXB1dGVk
TGluZXRocm91Z2hDZW50ZXIoc3R5bGVUb1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGNv
bXB1dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRldmljZVNjYWxl
RmFjdG9yKSk7Ci0gICAgZGVjb3JhdGlvblBhaW50ZXIucGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlv
bnMoeyBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2NhdGlvbigpCi0gICAgICAgICwgc25hcHBlZFNl
bGVjdGlvblJlY3Qud2lkdGgoKQorICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3Vu
ZERlY29yYXRpb25zKHsgdGV4dEJveFBhaW50UmVjdC5sb2NhdGlvbigpCisgICAgICAgICwgdGV4
dEJveFBhaW50UmVjdC53aWR0aCgpCiAgICAgICAgICwgdGV4dERlY29yYXRpb25UaGlja25lc3MK
ICAgICAgICAgLCBsaW5ldGhyb3VnaENlbnRlcgogICAgICAgICAsIHdhdnlTdHJva2VQYXJhbWV0
ZXJzKHN0eWxlVG9Vc2UuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpIH0sIG1hcmtlZFRleHQuc3R5
bGUudGV4dERlY29yYXRpb25TdHlsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuaAppbmRleCAwMDNkMzQ4MjY5YWMuLmQwMWJjN2UzYTJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKQEAgLTI1LDkgKzI1LDExIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9ySW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dEJveFNlbGVjdGFibGVSYW5nZS5o
IgorI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDEsNiBAQCBjbGFzcyBSZW5kZXJD
b21iaW5lVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNz
IFNoYWRvd0RhdGE7Ci1jbGFzcyBUZXh0RGVjb3JhdGlvblBhaW50ZXI7CiBzdHJ1Y3QgQ29tcG9z
aXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgTWFya2VkVGV4dDsKIHN0cnVjdCBQYWludEluZm87CkBA
IC04MCw2ICs4MSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRD
YXNjYWRlKCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChj
b25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAorICAgIHN0cnVjdCBEZWNvcmF0aW5nQm94IHsKKyAg
ICAgICAgSW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yIGlubGluZUJveDsKKyAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlOworICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyB0ZXh0RGVjb3JhdGlvblN0eWxlczsKKyAgICAgICAgRmxvYXRQb2ludCBsb2Nh
dGlvbjsKKyAgICB9OworICAgIHVzaW5nIERlY29yYXRpbmdCb3hMaXN0ID0gVmVjdG9yPERlY29y
YXRpbmdCb3g+OworICAgIHZvaWQgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goRGVj
b3JhdGluZ0JveExpc3QmLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiwg
RmxvYXRQb2ludCB0ZXh0Qm94TG9jYXRpb24sIGNvbnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6
U3R5bGVzJik7CisKICAgICBjb25zdCBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKSBjb25z
dDsKIAogICAgIGNvbnN0IFRleHRCb3hQYXRoIG1fdGV4dEJveDsKQEAgLTkwLDYgKzEwMCw3IEBA
IHByb3RlY3RlZDoKICAgICBjb25zdCBUZXh0UnVuIG1fcGFpbnRUZXh0UnVuOwogICAgIFBhaW50
SW5mbyYgbV9wYWludEluZm87CiAgICAgY29uc3QgVGV4dEJveFNlbGVjdGFibGVSYW5nZSBtX3Nl
bGVjdGFibGVSYW5nZTsKKyAgICBjb25zdCBMYXlvdXRQb2ludCBtX3BhaW50T2Zmc2V0OwogICAg
IGNvbnN0IEZsb2F0UmVjdCBtX3BhaW50UmVjdDsKICAgICBjb25zdCBib29sIG1faXNGaXJzdExp
bmU7CiAgICAgY29uc3QgYm9vbCBtX2lzQ29tYmluZWRUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMDAyNzc4Mjc2ZjkwLi5lMmMyMjUwNzFi
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSFRNTEFu
Y2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5s
aW5lQm94LmgiCkBAIC0xMTgsMTggKzExOSwyMiBAQCBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVu
dCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgZmxvYXQgYm94T2Zmc2V0RnJvbUJvdHRv
bU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29u
c3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0lubGluZUJveFJlbmRlcmVyLCBmbG9hdCBib3hM
b2dpY2FsVG9wLCBmbG9hdCBib3hMb2dpY2FsQm90dG9tKQoreworICAgIGlmIChkZWNvcmF0aW5n
SW5saW5lQm94UmVuZGVyZXIuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCisg
ICAgICAgIHJldHVybiBib3hMb2dpY2FsVG9wIC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0
aW9uTGluZVVuZGVyKGxpbmVCb3gsIGJveExvZ2ljYWxUb3AsIGRlY29yYXRpbmdJbmxpbmVCb3hS
ZW5kZXJlcik7CisgICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxp
bmVVbmRlcihsaW5lQm94LCBib3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW5nSW5saW5lQm94UmVu
ZGVyZXIpIC0gYm94TG9naWNhbEJvdHRvbTsKK30KKwogc3RhdGljIGZsb2F0IHRleHRSdW5PZmZz
ZXRGcm9tQm90dG9tTW9zdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBs
aW5lQm94LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgdGV4dEJveExvZ2ljYWxU
b3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKQogewogICAgIGF1dG8qIGRlY29yYXRpbmdC
b3hSZW5kZXJlckZvclVuZGVybGluZSA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0
aW9uKHJlbmRlcmVyKTsKICAgICBpZiAoIWRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGlu
ZSkKICAgICAgICAgcmV0dXJuIDAuZjsKIAotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRleHRCb3hMb2dpY2FsVG9w
IC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gsIHRleHRC
b3hMb2dpY2FsVG9wLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lKTsKLSAgICBy
ZXR1cm4gbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gs
IHRleHRCb3hMb2dpY2FsQm90dG9tLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5l
KSAtIHRleHRCb3hMb2dpY2FsQm90dG9tOworICAgIHJldHVybiBib3hPZmZzZXRGcm9tQm90dG9t
TW9zdChsaW5lQm94LCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lLCB0ZXh0Qm94
TG9naWNhbFRvcCwgdGV4dEJveExvZ2ljYWxCb3R0b20pOwogfQogCi0KIHN0YXRpYyBpbmxpbmUg
ZmxvYXQgZGVmYXVsdEdhcChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgY29uc3Qg
ZmxvYXQgdGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNi5mOwpAQCAtMjk1LDE0ICszMDAs
MTQgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY29tcHV0ZWRWaXN1YWxPdmVyZmxvd0ZvckRl
Y29yYXRpb25zKHN0eWxlLCB1bmRlcmxpbmVPZmZzZXQpOwogfQogCi1mbG9hdCB1bmRlcmxpbmVP
ZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQorZmxvYXQgdW5kZXJsaW5l
T2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3gm
IGlubGluZUJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gdGV4dFVu
ZGVybGluZVBvc2l0aW9uVW5kZXIgPSBzdGQ6Om9wdGlvbmFsPFRleHRVbmRlcmxpbmVQb3NpdGlv
blVuZGVyPiB7IH07Ci0gICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvblZhbHVlID0gcmVzb2x2ZWRV
bmRlcmxpbmVQb3NpdGlvbihzdHlsZSwgdGV4dEJveC0+bGluZUJveCgpLT5iYXNlbGluZVR5cGUo
KSk7CisgICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvblZhbHVlID0gcmVzb2x2ZWRVbmRlcmxpbmVQ
b3NpdGlvbihzdHlsZSwgaW5saW5lQm94LmxpbmVCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwogCiAg
ICAgaWYgKHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpV
bmRlcikgewotICAgICAgICBhdXRvIHRleHRSdW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJv
dHRvbU1vc3QodGV4dEJveC0+bGluZUJveCgpLCB0ZXh0Qm94LT5yZW5kZXJlcigpLCB0ZXh0Qm94
LT5sb2dpY2FsVG9wKCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7Ci0gICAgICAgIHRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyID0gVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgeyB0ZXh0
Qm94LT5sb2dpY2FsQm90dG9tKCkgLSB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRSdW5PZmZz
ZXQgfTsKKyAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gYm94T2Zmc2V0RnJvbUJvdHRvbU1v
c3QoaW5saW5lQm94LmxpbmVCb3goKSwgaW5saW5lQm94LnJlbmRlcmVyKCksIGlubGluZUJveC5s
b2dpY2FsVG9wKCksIGlubGluZUJveC5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICB0ZXh0VW5k
ZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsgaW5saW5l
Qm94LmxvZ2ljYWxIZWlnaHQoKSwgdGV4dFJ1bk9mZnNldCB9OwogICAgIH0KIAogICAgIHJldHVy
biBjb21wdXRlZFVuZGVybGluZU9mZnNldCh7IHN0eWxlLCB1bmRlcmxpbmVQb3NpdGlvblZhbHVl
LCBkZWZhdWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IDczZTFlOGM1YTA1Mi4u
YmY0YTliMjIxYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
aApAQCAtMjUsMTcgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRm9udENh
c2NhZGUuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9ySW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAotY2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7
CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFRleHRVbmRlcmxpbmVPZmZzZXQ7CiAKIGlubGlu
ZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogewpAQCAtNjUsNiArNjEsNiBAQCBH
bHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5
bGUmKTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJTdHlsZSYsIEZvbnRCYXNlbGluZSwgVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIpOwog
R2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImLCBjb25zdCBSZW5kZXJUZXh0JiwgZmxvYXQgdGV4dEJv
eExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIAotZmxvYXQgdW5kZXJs
aW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgSW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYpOworZmxvYXQgdW5kZXJsaW5lT2Zmc2V0Rm9y
VGV4dEJveFBhaW50aW5nKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3gmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRh
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25k
LW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwKaW5kZXggODYwMTg5ZTc5MmNlLi5mOTBiMjgyMmRjZmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbi1pbi1zZWNv
bmQtb3JkZXItZGVzY2VuZGFudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0
LWRlY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTEsNCArMSw1
IEBACiA8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZm
ZXJlbmNlPTY0OyB0b3RhbFBpeGVscz03IiAvPgogPHN0eWxlPgogLm91dGVyIHsKICAgICB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3RleHQtZGVjb3JhdGlvbnMtb24tZmlyc3QtbGluZS1hbmQtY29udGFpbmluZy1ibG9jay5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9ucy1vbi1maXJzdC1saW5lLWFu
ZC1jb250YWluaW5nLWJsb2NrLmh0bWwKaW5kZXggMDliYTY3N2ZiMjFjLi43NTZkNzU5ODAzMDIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbnMtb24tZmly
c3QtbGluZS1hbmQtY29udGFpbmluZy1ibG9jay5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3RleHQtZGVjb3JhdGlvbnMtb24tZmlyc3QtbGluZS1hbmQtY29udGFpbmluZy1ibG9jay5o
dG1sCkBAIC0xLDQgKzEsNSBAQAogPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBuYW1lPSJmdXp6eSIg
Y29udGVudD0ibWF4RGlmZmVyZW5jZT01OTsgdG90YWxQaXhlbHM9MTAiIC8+CiA8aHRtbD4KIDxo
ZWFkPgogPHN0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNp
bmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLWEuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5k
ZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1l
bnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwKaW5kZXggYzhlZDE5MDNmZDgzLi43
ZjNiMWRlZGMzOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5n
LWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Jl
bmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxl
bWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLWEuaHRtbApAQCAtMSw0ICsxLDUgQEAKIDwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPG1ldGEgbmFtZT0i
ZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9NjEtNjQ7IHRvdGFsUGl4ZWxzPTYtMTkiIC8+
CiA8bGluayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVmLmh0bWw+CiA8dGl0bGU+VGhlIGZvbnQgZWxl
bWVudCB0ZXh0IGRlY29yYXRpb24gY29sb3IgcXVpcmssIDAwMSwgYWxtb3N0IHN0YW5kYXJkcyBt
b2RlPC90aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9u
dC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFj
ZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRp
b24tY29sb3IvMDAxLXEuaHRtbAppbmRleCA5MDI1ZTcyODk5MTguLmNiZTBiN2ExNTRlZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQt
ZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBs
YWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3Jh
dGlvbi1jb2xvci8wMDEtcS5odG1sCkBAIC0xLDMgKzEsNCBAQAorPG1ldGEgbmFtZT0iZnV6enki
IGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9NjEtNjQ7IHRvdGFsUGl4ZWxzPTYtMTkiIC8+CiA8bGlu
ayByZWw9bWF0Y2ggaHJlZj0wMDEtcmVmLmh0bWw+CiA8dGl0bGU+VGhlIGZvbnQgZWxlbWVudCB0
ZXh0IGRlY29yYXRpb24gY29sb3IgcXVpcmssIDAwMSwgcXVpcmtzIG1vZGU8L3RpdGxlPgogPHN0
eWxlPltpZF0gPiAqIHsgY29sb3I6ZnVjaHNpYSB9PC9zdHlsZT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9u
LXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1k
ZWNvcmF0aW9uLWNvbG9yLzAwMS1zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJh
c2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5o
dG1sCmluZGV4IGJhYzgwZTUzYmFlNC4uMmI5YzAyZjgxNjEwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1y
ZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVj
b3JhdGlvbi1jb2xvci8wMDEtcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3Bo
cmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1z
Lmh0bWwKQEAgLTEsNCArMSw1IEBACiA8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIG5hbWU9ImZ1enp5
IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTYxLTY0OyB0b3RhbFBpeGVscz02LTE5IiAvPgogPGxp
bmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRpdGxlPlRoZSBmb250IGVsZW1lbnQg
dGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIHN0YW5kYXJkcyBtb2RlPC90aXRsZT4K
IDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461583</attachid>
            <date>2022-08-13 09:59:17 -0700</date>
            <delta_ts>2022-08-13 22:40:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243766-20220813095916.patch</filename>
            <type>text/plain</type>
            <size>25532</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhNjU4MzlmM2QzZjBkMzdjOTFkYmFkOWFkY2MzMWEzYmQ2ZDAzN2IzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDExIEF1ZyAyMDIyIDIyOjAwOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW1BhaW50aW5n
XSBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGluZyBib3ggYmFzZWQgdGV4dCBib3gKIHBhaW50aW5n
IChob3Jpem9udGFsIG1vZGUgb25seSkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM3NjYKClJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKQ29sbGVjdCBkZWNv
cmF0aW5nIGFuY2VzdG9yIGlubGluZSBib3hlcyB1c2UgdGhlaXIgc3R5bGUvZ2VvbWV0cnkgdG8g
Y2FsbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKCku
CgooVGhlIGZ1enp5IGNoYW5nZSBpcyBkdWUgdG8gbXVsdGlwbGUgdW5kZXJsaW5lcyBnZXR0aW5n
IHBhaW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIGVhY2ggb3RoZXIgb24gc3VicGl4ZWwgcG9zaXRp
b25zIGJldHdlZW4gZ2x5cGhzIHdpdGggZGVzY2VuZGVycyAoY29taW5nIGZyb20gdmVydGljYWxs
eSBvdmVybGFwcGluZyBkZWNvcmF0aW5nIGJveGVzIGUuZy4gPGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmUiPjxmb250PmdnZzwvZm9udD48L2Rpdj4pCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVy
PFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6
Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+Ojpjb2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveCk6CihXZWJDb3JlOjpU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKToK
KFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6
CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKFdlYkNvcmU6
OmJveE9mZnNldEZyb21Cb3R0b21Nb3N0KToKKFdlYkNvcmU6OnRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdCk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8IDE1MiArKysrKysrKysrKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oICAgICB8ICAx
MyArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgIDIx
ICsrLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgICA4
ICstCiAuLi5lY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwgfCAgIDEg
KwogLi4ubnMtb24tZmlyc3QtbGluZS1hbmQtY29udGFpbmluZy1ibG9jay5odG1sIHwgICAxICsK
IC4uLi8wMDEtYS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAu
Li4vMDAxLXEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4u
LzAwMS1zLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDkgZmls
ZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IDg1NGFiZmFkNWY1OC4u
ZDBkMWEwZTI0MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJF
dmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94LmgiCiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4
dEJveC5oIgpAQCAtNzAsNiArNzEsNyBAQCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRl
eHRCb3hQYWludGVyKFRleHRCb3hQYXRoJiYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYQogICAgICwg
bV9wYWludFRleHRSdW4obV90ZXh0Qm94LmNyZWF0ZVRleHRSdW4oSW5saW5lSXRlcmF0b3I6OkNy
ZWF0ZVRleHRSdW5Nb2RlOjpQYWludGluZykpCiAgICAgLCBtX3BhaW50SW5mbyhwYWludEluZm8p
CiAgICAgLCBtX3NlbGVjdGFibGVSYW5nZShtX3RleHRCb3guc2VsZWN0YWJsZVJhbmdlKCkpCisg
ICAgLCBtX3BhaW50T2Zmc2V0KHBhaW50T2Zmc2V0KQogICAgICwgbV9wYWludFJlY3QoY29tcHV0
ZVBhaW50UmVjdChwYWludE9mZnNldCkpCiAgICAgLCBtX2lzRmlyc3RMaW5lKG1fdGV4dEJveC5p
c0ZpcnN0TGluZSgpKQogICAgICwgbV9pc0NvbWJpbmVkVGV4dChpczxSZW5kZXJDb21iaW5lVGV4
dD4obV9yZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KG1fcmVuZGVyZXIp
LmlzQ29tYmluZWQoKSkKQEAgLTI4MiwxNyArMjg0LDE3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8
VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91bmRBbmREZWNvcmF0aW9ucygpCiAgICAgICAgICAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBtYXJrZWRUZXh0LmVuZE9mZnNldDsKICAgICAgICAgICAg
IGlmIChzdGFydE9mZnNldCA8IGVuZE9mZnNldCkgewogICAgICAgICAgICAgICAgIC8vIEF2b2lk
IG1lYXN1cmluZyB0aGUgdGV4dCB3aGVuIHRoZSBlbnRpcmUgbGluZSBib3ggaXMgc2VsZWN0ZWQg
YXMgYW4gb3B0aW1pemF0aW9uLgotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzbmFwcGVkU2Vs
ZWN0aW9uUmVjdCA9IG1fcGFpbnRSZWN0OworICAgICAgICAgICAgICAgIGF1dG8gc25hcHBlZFBh
aW50UmVjdCA9IG1fcGFpbnRSZWN0OwogICAgICAgICAgICAgICAgIGlmIChzdGFydE9mZnNldCB8
fCBlbmRPZmZzZXQgIT0gbV9wYWludFRleHRSdW4ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0geyBtX3BhaW50UmVjdC54KCksIG1fcGFp
bnRSZWN0LnkoKSwgbV9wYWludFJlY3Qud2lkdGgoKSwgbV9wYWludFJlY3QuaGVpZ2h0KCkgfTsK
ICAgICAgICAgICAgICAgICAgICAgZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChtX3BhaW50VGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHNuYXBwZWRTZWxlY3Rpb25SZWN0ID0gc25hcFJlY3RU
b0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIG1fZG9jdW1l
bnQuZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV9wYWludFRleHRSdW4ubHRyKCkpOworICAgICAgICAg
ICAgICAgICAgICBzbmFwcGVkUGFpbnRSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhX
cml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIG1fZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgbV9wYWludFRleHRSdW4ubHRyKCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIFRleHREZWNvcmF0aW9uUGFpbnRlciBkZWNvcmF0aW9uUGFpbnRlciA9IGNyZWF0
ZURlY29yYXRpb25QYWludGVyKG1hcmtlZFRleHQsIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xp
cE91dFJlY3QpOwotICAgICAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGRl
Y29yYXRpb25QYWludGVyLCBtYXJrZWRUZXh0LCBzbmFwcGVkU2VsZWN0aW9uUmVjdCk7CisgICAg
ICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uUGFpbnRlciA9IGNyZWF0ZURlY29yYXRpb25QYWlu
dGVyKG1hcmtlZFRleHQsIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QpOworICAg
ICAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGRlY29yYXRpb25QYWludGVy
LCBtYXJrZWRUZXh0LCBzbmFwcGVkUGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICBwYWludEZv
cmVncm91bmQobWFya2VkVGV4dCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMoZGVjb3JhdGlvblBhaW50ZXIsIG1hcmtlZFRleHQsIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0KTsKKyAgICAgICAgICAgICAgICBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhkZWNvcmF0
aW9uUGFpbnRlciwgbWFya2VkVGV4dCwgc25hcHBlZFBhaW50UmVjdCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDU1LDU5ICs0NTcsMTE5IEBAIHN0YXRpYyBp
bmxpbmUgZmxvYXQgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGVUb1VzZSwgZmxvCiAgICAgcmV0dXJuIGNlbnRlciAtIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIC8gMjsKIH0KIAorc3RhdGljIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiB0ZXh0RGVjb3JhdGlvblN0eWxlcykK
K3sKKyAgICBhdXRvIHRleHREZWNvcmF0aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CisgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUodGV4dERlY29yYXRpb25TdHlsZXMpKTsKKyAg
ICByZXR1cm4gdGV4dERlY29yYXRpb25zOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWNv
cmF0aW5nQm94Rm9yQmFja2dyb3VuZChjb25zdCBJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94JiBp
bmxpbmVCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlKQoreworICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gaW5saW5lQm94LnJlbmRlcmVyKCkuZWxlbWVudCgpOyBlbGVtZW50ICYmIChp
czxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmb250VGFnKSkpIHsKKyAgICAgICAgLy8gPGZvbnQ+IGFuZCA8YT4gYXJlIGFsd2F5
cyBjb25zaWRlcmVkIGRlY29yYXRpbmcgYm94ZXMuCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbkxpbmUoKS5jb250YWluc0Fu
eSh7IFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92
ZXJsaW5lIH0pCisgICAgICAgIHx8IChpbmxpbmVCb3guaXNSb290SW5saW5lQm94KCkgJiYgc3R5
bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zQW55KHsgVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUsIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUgfSkpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8
VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBh
aW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRU
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBwZWRTZWxlY3Rpb25SZWN0KQordm9pZCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OmNvbGxlY3REZWNvcmF0aW5nQm94ZXNGb3JUZXh0Qm94KERl
Y29yYXRpbmdCb3hMaXN0JiBkZWNvcmF0aW5nQm94TGlzdCwgY29uc3QgSW5saW5lSXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgRmxvYXRQb2ludCB0ZXh0Qm94TG9jYXRpb24sIGNv
bnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiBvdmVycmlkZURlY29yYXRpb25TdHls
ZSkKK3sKKyAgICBhdXRvIGFuY2VzdG9ySW5saW5lQm94ID0gdGV4dEJveC0+cGFyZW50SW5saW5l
Qm94KCk7CisgICAgLy8gRklYTUU6IFZlcnRpY2FsIHdyaXRpbmcgbW9kZSBuZWVkcyBzb21lIGNv
b3JkaW5hdGUgc3BhY2UgdHJhbnNmb3JtYXRpb24gZm9yIHBhcmVudCBpbmxpbmUgYm94ZXMgYXMg
d2Ugcm90YXRlIHRoZSBjb250ZW50IHdpdGggbV9wYWludFJlY3QgKHNlZSA6OnBhaW50KQorICAg
IGlmIChhbmNlc3RvcklubGluZUJveC0+aXNSb290SW5saW5lQm94KCkgfHwgIXRleHRCb3gtPmlz
SG9yaXpvbnRhbCgpKSB7CisgICAgICAgIGRlY29yYXRpbmdCb3hMaXN0LmFwcGVuZCh7CisgICAg
ICAgICAgICBhbmNlc3RvcklubGluZUJveCwKKyAgICAgICAgICAgIG1faXNGaXJzdExpbmUgPyBt
X3JlbmRlcmVyLmZpcnN0TGluZVN0eWxlKCkgOiBtX3JlbmRlcmVyLnN0eWxlKCksCisgICAgICAg
ICAgICBvdmVycmlkZURlY29yYXRpb25TdHlsZSwKKyAgICAgICAgICAgIHRleHRCb3hMb2NhdGlv
bgorICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVudW0gVXNlT3Zl
cnJpZGVyRGVjb3JhdGlvblN0eWxlIDogYm9vbCB7IFllcywgTm8gfTsKKyAgICBhdXRvIGFwcGVu
ZElmSXNEZWNvcmF0aW5nQm94Rm9yQmFja2dyb3VuZCA9IFsmXSAoYXV0byYgaW5saW5lQm94LCBh
dXRvIHVzZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZSkgeworICAgICAgICBhdXRvJiBzdHlsZSA9
IG1faXNGaXJzdExpbmUgPyBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6
IGlubGluZUJveC0+cmVuZGVyZXIoKS5zdHlsZSgpOworCisgICAgICAgIGF1dG8gY29tcHV0ZWRE
ZWNvcmF0aW9uU3R5bGUgPSBbJl0geworICAgICAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoaW5saW5lQm94LT5yZW5kZXJlcigpLCBzdHlsZS50
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCBtX2lzRmlyc3RMaW5lKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgaWYgKCFpc0RlY29yYXRpbmdCb3hGb3JCYWNrZ3JvdW5kKCppbmxpbmVCb3gsIHN0eWxl
KSkgeworICAgICAgICAgICAgLy8gU29tZSBjYXNlcyBldmVuIG5vbi1kZWNvcmF0aW9uIGJveGVz
IG1heSBoYXZlIHNvbWUgZGVjb3JhdGlvbiBwaWVjZXMgY29taW5nIGZyb20gdGhlIG1hcmtlZCB0
ZXh0IChlLmcuIGhpZ2hsaWdodCkuCisgICAgICAgICAgICBpZiAodXNlT3ZlcnJpZGVyRGVjb3Jh
dGlvblN0eWxlID09IFVzZU92ZXJyaWRlckRlY29yYXRpb25TdHlsZTo6Tm8gfHwgb3ZlcnJpZGVE
ZWNvcmF0aW9uU3R5bGUgPT0gY29tcHV0ZWREZWNvcmF0aW9uU3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWNvcmF0aW5nQm94TGlzdC5hcHBl
bmQoeworICAgICAgICAgICAgaW5saW5lQm94LAorICAgICAgICAgICAgc3R5bGUsCisgICAgICAg
ICAgICB1c2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5bGUgPT0gVXNlT3ZlcnJpZGVyRGVjb3JhdGlv
blN0eWxlOjpZZXMgPyBvdmVycmlkZURlY29yYXRpb25TdHlsZSA6IGNvbXB1dGVkRGVjb3JhdGlv
blN0eWxlKCksCisgICAgICAgICAgICB7IHRleHRCb3hMb2NhdGlvbi54KCksIG1fcGFpbnRPZmZz
ZXQueSgpICsgaW5saW5lQm94LT5sb2dpY2FsVG9wKCkgfQorICAgICAgICB9KTsKKyAgICB9Owor
CisgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgdGhlIGRlY29yYXRpb24gc3R5bGVzIGNvbWlu
ZyBmcm9tIHRoZSBzdHlsZWQgbWFya2VkIHRleHQgc2hvdWxkIGJlIHVzZWQgb25seSBvbiB0aGUg
Y2xvc2VzdCBpbmxpbmUgYm94IChkaXJlY3QgcGFyZW50KS4KKyAgICBhcHBlbmRJZklzRGVjb3Jh
dGluZ0JveEZvckJhY2tncm91bmQoYW5jZXN0b3JJbmxpbmVCb3gsIFVzZU92ZXJyaWRlckRlY29y
YXRpb25TdHlsZTo6WWVzKTsKKyAgICB3aGlsZSAoIWFuY2VzdG9ySW5saW5lQm94LT5pc1Jvb3RJ
bmxpbmVCb3goKSkgeworICAgICAgICBhbmNlc3RvcklubGluZUJveCA9IGFuY2VzdG9ySW5saW5l
Qm94LT5wYXJlbnRJbmxpbmVCb3goKTsKKyAgICAgICAgYXBwZW5kSWZJc0RlY29yYXRpbmdCb3hG
b3JCYWNrZ3JvdW5kKGFuY2VzdG9ySW5saW5lQm94LCBVc2VPdmVycmlkZXJEZWNvcmF0aW9uU3R5
bGU6Ok5vKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgordm9p
ZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0IFN0eWxlZE1h
cmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGV4dEJveFBhaW50UmVjdCkK
IHsKICAgICBpZiAobV9pc0NvbWJpbmVkVGV4dCkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4
dCgpLmNvbmNhdENUTShyb3RhdGlvbihtX3BhaW50UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICBh
dXRvIHRleHRSdW4gPSBtX3BhaW50VGV4dFJ1bi5zdWJSdW4obWFya2VkVGV4dC5zdGFydE9mZnNl
dCwgbWFya2VkVGV4dC5lbmRPZmZzZXQgLSBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0KTsKLSAgICBh
dXRvJiBzdHlsZVRvVXNlID0gbV9pc0ZpcnN0TGluZSA/IG1fcmVuZGVyZXIuZmlyc3RMaW5lU3R5
bGUoKSA6IG1fcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBjb25zdCBhdXRvJiB0ZXh0RGVjb3JhdGlv
blN0eWxlcyA9IG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXM7Ci0gICAgYXV0
byBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gdGV4dERl
Y29yYXRpb25zID0gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgICAg
ICB0ZXh0RGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRp
b25zSW5FZmZlY3RGb3JTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlcykpOwotICAgICAgICByZXR1
cm4gdGV4dERlY29yYXRpb25zOwotICAgIH0oKTsKLSAgICBhdXRvIGNvbXB1dGVkQmFja2dyb3Vu
ZERlY29yYXRpb25HZW9tZXRyeSA9IFsmXSB7Ci0gICAgICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAgICAgYXV0byB0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNvbXB1dGVkVGV4dERlY29yYXRpb25UaGlja25lc3Moc3R5
bGVUb1VzZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNl
dCA9IFsmXSB7Ci0gICAgICAgICAgICBpZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMC5mOwotICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zmc2V0
Rm9yVGV4dEJveFBhaW50aW5nKHN0eWxlVG9Vc2UsIG1ha2VJdGVyYXRvcigpKTsKLSAgICAgICAg
ICAgIGF1dG8gd2F2eU9mZnNldCA9IHRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9t
RGVjb3JhdGlvbigpIDogMC5mOwotICAgICAgICAgICAgcmV0dXJuIGJhc2VPZmZzZXQgKyB3YXZ5
T2Zmc2V0OwotICAgICAgICB9OwotICAgICAgICBhdXRvIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyA9IGNvbXB1dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRl
dmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgYXV0byBvdmVybGluZU9mZnNldCA9IFsmXSB7Ci0g
ICAgICAgICAgICBpZiAoIWNvbXB1dGVkVGV4dERlY29yYXRpb25UeXBlLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiAwLmY7Ci0g
ICAgICAgICAgICByZXR1cm4gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29y
YXRpb25UaGlja25lc3MgLSAodGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlv
blN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29y
YXRpb24oKSA6IDAuZik7Ci0gICAgICAgIH07CiAKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6QmFja2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSB7Ci0gICAgICAgICAgICB0
ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChzbmFwcGVkU2VsZWN0aW9uUmVjdCksCi0gICAgICAgICAg
ICBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2NhdGlvbigpLAotICAgICAgICAgICAgc25hcHBlZFNl
bGVjdGlvblJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LAotICAgICAgICAgICAgdW5kZXJsaW5lT2Zmc2V0KCksCi0gICAgICAgICAgICBvdmVybGluZU9m
ZnNldCgpLAotICAgICAgICAgICAgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihzdHlsZVRvVXNl
LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKSwK
LSAgICAgICAgICAgIHN0eWxlVG9Vc2UubWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKSAr
IDIuZiwKLSAgICAgICAgICAgIHdhdnlTdHJva2VQYXJhbWV0ZXJzKHN0eWxlVG9Vc2UuY29tcHV0
ZWRGb250UGl4ZWxTaXplKCkpCisgICAgYXV0byB0ZXh0Qm94ID0gbWFrZUl0ZXJhdG9yKCk7Cisg
ICAgYXV0byBkZWNvcmF0aW5nQm94TGlzdCA9IERlY29yYXRpbmdCb3hMaXN0IHsgfTsKKyAgICBj
b2xsZWN0RGVjb3JhdGluZ0JveGVzRm9yVGV4dEJveChkZWNvcmF0aW5nQm94TGlzdCwgdGV4dEJv
eCwgdGV4dEJveFBhaW50UmVjdC5sb2NhdGlvbigpLCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzKTsKKworICAgIGZvciAoYXV0byYgZGVjb3JhdGluZ0JveCA6IG1ha2VSZXZl
cnNlZFJhbmdlKGRlY29yYXRpbmdCb3hMaXN0KSkgeworICAgICAgICBhdXRvIGNvbXB1dGVkVGV4
dERlY29yYXRpb25UeXBlID0gV2ViQ29yZTo6Y29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUoZGVj
b3JhdGluZ0JveC5zdHlsZSwgZGVjb3JhdGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcyk7Cisg
ICAgICAgIGF1dG8gY29tcHV0ZWRCYWNrZ3JvdW5kRGVjb3JhdGlvbkdlb21ldHJ5ID0gWyZdIHsK
KyAgICAgICAgICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjb21wdXRlZFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKGRlY29yYXRpbmdCb3guc3R5bGUsIG1fZG9jdW1lbnQuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZU9mZnNldCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZS5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwLmY7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlT2Zmc2V0ID0gdW5kZXJsaW5lT2Zm
c2V0Rm9yVGV4dEJveFBhaW50aW5nKCpkZWNvcmF0aW5nQm94LmlubGluZUJveCwgZGVjb3JhdGlu
Z0JveC5zdHlsZSk7CisgICAgICAgICAgICAgICAgYXV0byB3YXZ5T2Zmc2V0ID0gZGVjb3JhdGlu
Z0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSA6IDAu
ZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZU9mZnNldCArIHdhdnlPZmZzZXQ7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgYXV0byBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBjb21wdXRlZEF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhkZWNvcmF0aW5nQm94LnN0eWxl
LCBtX2RvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byBvdmVy
bGluZU9mZnNldCA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZFRleHREZWNv
cmF0aW9uVHlwZS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDAuZjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLSAoZGVjb3Jh
dGluZ0JveC50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIDog
MC5mKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OkJhY2tncm91bmREZWNvcmF0aW9uR2VvbWV0cnkgeworICAgICAgICAgICAgICAg
IHRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KHRleHRCb3hQYWludFJlY3QpLAorICAgICAgICAgICAg
ICAgIGRlY29yYXRpbmdCb3gubG9jYXRpb24sCisgICAgICAgICAgICAgICAgdGV4dEJveFBhaW50
UmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLAor
ICAgICAgICAgICAgICAgIHVuZGVybGluZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIG92ZXJs
aW5lT2Zmc2V0KCksCisgICAgICAgICAgICAgICAgY29tcHV0ZWRMaW5ldGhyb3VnaENlbnRlcihk
ZWNvcmF0aW5nQm94LnN0eWxlLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzKSwKKyAgICAgICAgICAgICAgICBkZWNvcmF0aW5nQm94LnN0eWxlLm1l
dHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgKyAyLmYsCisgICAgICAgICAgICAgICAgd2F2
eVN0cm9rZVBhcmFtZXRlcnMoZGVjb3JhdGluZ0JveC5zdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNp
emUoKSkKKyAgICAgICAgICAgIH07CiAgICAgICAgIH07Ci0gICAgfTsKIAotICAgIGRlY29yYXRp
b25QYWludGVyLnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKHRleHRSdW4sIGNvbXB1dGVkQmFj
a2dyb3VuZERlY29yYXRpb25HZW9tZXRyeSgpLCBjb21wdXRlZFRleHREZWNvcmF0aW9uVHlwZSwg
dGV4dERlY29yYXRpb25TdHlsZXMpOworICAgICAgICBkZWNvcmF0aW9uUGFpbnRlci5wYWludEJh
Y2tncm91bmREZWNvcmF0aW9ucyh0ZXh0UnVuLCBjb21wdXRlZEJhY2tncm91bmREZWNvcmF0aW9u
R2VvbWV0cnkoKSwgY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUsIGRlY29yYXRpbmdCb3gudGV4
dERlY29yYXRpb25TdHlsZXMpOworICAgIH0KIAogICAgIGlmIChtX2lzQ29tYmluZWRUZXh0KQog
ICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRS
ZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQ
YXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZERl
Y29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBhaW50ZXIsIGNvbnN0
IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc25hcHBlZFNl
bGVjdGlvblJlY3QpCit2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3Jl
Z3JvdW5kRGVjb3JhdGlvbnMoVGV4dERlY29yYXRpb25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRl
ciwgY29uc3QgU3R5bGVkTWFya2VkVGV4dCYgbWFya2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0
ZXh0Qm94UGFpbnRSZWN0KQogewogICAgIGF1dG8mIHN0eWxlVG9Vc2UgPSBtX2lzRmlyc3RMaW5l
ID8gbV9yZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogbV9yZW5kZXJlci5zdHlsZSgpOwogICAg
IGF1dG8gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblR5cGUgPSBbJl0gewpAQCAtNTI1LDggKzU4Nyw4
IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91bmREZWNv
cmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50CiAgICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBhdXRvIHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY29tcHV0ZWRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhzdHlsZVRvVXNlLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgYXV0byBsaW5ldGhyb3VnaENlbnRlciA9IGNvbXB1dGVk
TGluZXRocm91Z2hDZW50ZXIoc3R5bGVUb1VzZSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGNv
bXB1dGVkQXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzKHN0eWxlVG9Vc2UsIGRldmljZVNjYWxl
RmFjdG9yKSk7Ci0gICAgZGVjb3JhdGlvblBhaW50ZXIucGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlv
bnMoeyBzbmFwcGVkU2VsZWN0aW9uUmVjdC5sb2NhdGlvbigpCi0gICAgICAgICwgc25hcHBlZFNl
bGVjdGlvblJlY3Qud2lkdGgoKQorICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50Rm9yZWdyb3Vu
ZERlY29yYXRpb25zKHsgdGV4dEJveFBhaW50UmVjdC5sb2NhdGlvbigpCisgICAgICAgICwgdGV4
dEJveFBhaW50UmVjdC53aWR0aCgpCiAgICAgICAgICwgdGV4dERlY29yYXRpb25UaGlja25lc3MK
ICAgICAgICAgLCBsaW5ldGhyb3VnaENlbnRlcgogICAgICAgICAsIHdhdnlTdHJva2VQYXJhbWV0
ZXJzKHN0eWxlVG9Vc2UuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpIH0sIG1hcmtlZFRleHQuc3R5
bGUudGV4dERlY29yYXRpb25TdHlsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuaAppbmRleCAwMDNkMzQ4MjY5YWMuLmQwMWJjN2UzYTJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKQEAgLTI1LDkgKzI1LDExIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9ySW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dEJveFNlbGVjdGFibGVSYW5nZS5o
IgorI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDEsNiBAQCBjbGFzcyBSZW5kZXJD
b21iaW5lVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNz
IFNoYWRvd0RhdGE7Ci1jbGFzcyBUZXh0RGVjb3JhdGlvblBhaW50ZXI7CiBzdHJ1Y3QgQ29tcG9z
aXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgTWFya2VkVGV4dDsKIHN0cnVjdCBQYWludEluZm87CkBA
IC04MCw2ICs4MSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnRD
YXNjYWRlKCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChj
b25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAorICAgIHN0cnVjdCBEZWNvcmF0aW5nQm94IHsKKyAg
ICAgICAgSW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yIGlubGluZUJveDsKKyAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlOworICAgICAgICBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyB0ZXh0RGVjb3JhdGlvblN0eWxlczsKKyAgICAgICAgRmxvYXRQb2ludCBsb2Nh
dGlvbjsKKyAgICB9OworICAgIHVzaW5nIERlY29yYXRpbmdCb3hMaXN0ID0gVmVjdG9yPERlY29y
YXRpbmdCb3g+OworICAgIHZvaWQgY29sbGVjdERlY29yYXRpbmdCb3hlc0ZvclRleHRCb3goRGVj
b3JhdGluZ0JveExpc3QmLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiwg
RmxvYXRQb2ludCB0ZXh0Qm94TG9jYXRpb24sIGNvbnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6
U3R5bGVzJik7CisKICAgICBjb25zdCBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKSBjb25z
dDsKIAogICAgIGNvbnN0IFRleHRCb3hQYXRoIG1fdGV4dEJveDsKQEAgLTkwLDYgKzEwMCw3IEBA
IHByb3RlY3RlZDoKICAgICBjb25zdCBUZXh0UnVuIG1fcGFpbnRUZXh0UnVuOwogICAgIFBhaW50
SW5mbyYgbV9wYWludEluZm87CiAgICAgY29uc3QgVGV4dEJveFNlbGVjdGFibGVSYW5nZSBtX3Nl
bGVjdGFibGVSYW5nZTsKKyAgICBjb25zdCBMYXlvdXRQb2ludCBtX3BhaW50T2Zmc2V0OwogICAg
IGNvbnN0IEZsb2F0UmVjdCBtX3BhaW50UmVjdDsKICAgICBjb25zdCBib29sIG1faXNGaXJzdExp
bmU7CiAgICAgY29uc3QgYm9vbCBtX2lzQ29tYmluZWRUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMDAyNzc4Mjc2ZjkwLi5lMmMyMjUwNzFi
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSFRNTEFu
Y2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvcklubGluZUJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5s
aW5lQm94LmgiCkBAIC0xMTgsMTggKzExOSwyMiBAQCBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVu
dCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgZmxvYXQgYm94T2Zmc2V0RnJvbUJvdHRv
bU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29u
c3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0lubGluZUJveFJlbmRlcmVyLCBmbG9hdCBib3hM
b2dpY2FsVG9wLCBmbG9hdCBib3hMb2dpY2FsQm90dG9tKQoreworICAgIGlmIChkZWNvcmF0aW5n
SW5saW5lQm94UmVuZGVyZXIuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCisg
ICAgICAgIHJldHVybiBib3hMb2dpY2FsVG9wIC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0
aW9uTGluZVVuZGVyKGxpbmVCb3gsIGJveExvZ2ljYWxUb3AsIGRlY29yYXRpbmdJbmxpbmVCb3hS
ZW5kZXJlcik7CisgICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxp
bmVVbmRlcihsaW5lQm94LCBib3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW5nSW5saW5lQm94UmVu
ZGVyZXIpIC0gYm94TG9naWNhbEJvdHRvbTsKK30KKwogc3RhdGljIGZsb2F0IHRleHRSdW5PZmZz
ZXRGcm9tQm90dG9tTW9zdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBs
aW5lQm94LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgdGV4dEJveExvZ2ljYWxU
b3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKQogewogICAgIGF1dG8qIGRlY29yYXRpbmdC
b3hSZW5kZXJlckZvclVuZGVybGluZSA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0
aW9uKHJlbmRlcmVyKTsKICAgICBpZiAoIWRlY29yYXRpbmdCb3hSZW5kZXJlckZvclVuZGVybGlu
ZSkKICAgICAgICAgcmV0dXJuIDAuZjsKIAotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRleHRCb3hMb2dpY2FsVG9w
IC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gsIHRleHRC
b3hMb2dpY2FsVG9wLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lKTsKLSAgICBy
ZXR1cm4gbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZVVuZGVyKGxpbmVCb3gs
IHRleHRCb3hMb2dpY2FsQm90dG9tLCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5l
KSAtIHRleHRCb3hMb2dpY2FsQm90dG9tOworICAgIHJldHVybiBib3hPZmZzZXRGcm9tQm90dG9t
TW9zdChsaW5lQm94LCAqZGVjb3JhdGluZ0JveFJlbmRlcmVyRm9yVW5kZXJsaW5lLCB0ZXh0Qm94
TG9naWNhbFRvcCwgdGV4dEJveExvZ2ljYWxCb3R0b20pOwogfQogCi0KIHN0YXRpYyBpbmxpbmUg
ZmxvYXQgZGVmYXVsdEdhcChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgY29uc3Qg
ZmxvYXQgdGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNi5mOwpAQCAtMjk1LDE0ICszMDAs
MTQgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY29tcHV0ZWRWaXN1YWxPdmVyZmxvd0ZvckRl
Y29yYXRpb25zKHN0eWxlLCB1bmRlcmxpbmVPZmZzZXQpOwogfQogCi1mbG9hdCB1bmRlcmxpbmVP
ZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQorZmxvYXQgdW5kZXJsaW5l
T2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3gm
IGlubGluZUJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGF1dG8gdGV4dFVu
ZGVybGluZVBvc2l0aW9uVW5kZXIgPSBzdGQ6Om9wdGlvbmFsPFRleHRVbmRlcmxpbmVQb3NpdGlv
blVuZGVyPiB7IH07Ci0gICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvblZhbHVlID0gcmVzb2x2ZWRV
bmRlcmxpbmVQb3NpdGlvbihzdHlsZSwgdGV4dEJveC0+bGluZUJveCgpLT5iYXNlbGluZVR5cGUo
KSk7CisgICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvblZhbHVlID0gcmVzb2x2ZWRVbmRlcmxpbmVQ
b3NpdGlvbihzdHlsZSwgaW5saW5lQm94LmxpbmVCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwogCiAg
ICAgaWYgKHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpV
bmRlcikgewotICAgICAgICBhdXRvIHRleHRSdW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJv
dHRvbU1vc3QodGV4dEJveC0+bGluZUJveCgpLCB0ZXh0Qm94LT5yZW5kZXJlcigpLCB0ZXh0Qm94
LT5sb2dpY2FsVG9wKCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7Ci0gICAgICAgIHRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyID0gVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgeyB0ZXh0
Qm94LT5sb2dpY2FsQm90dG9tKCkgLSB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRSdW5PZmZz
ZXQgfTsKKyAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gYm94T2Zmc2V0RnJvbUJvdHRvbU1v
c3QoaW5saW5lQm94LmxpbmVCb3goKSwgaW5saW5lQm94LnJlbmRlcmVyKCksIGlubGluZUJveC5s
b2dpY2FsVG9wKCksIGlubGluZUJveC5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICB0ZXh0VW5k
ZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsgaW5saW5l
Qm94LmxvZ2ljYWxIZWlnaHQoKSwgdGV4dFJ1bk9mZnNldCB9OwogICAgIH0KIAogICAgIHJldHVy
biBjb21wdXRlZFVuZGVybGluZU9mZnNldCh7IHN0eWxlLCB1bmRlcmxpbmVQb3NpdGlvblZhbHVl
LCBkZWZhdWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IDczZTFlOGM1YTA1Mi4u
YmY0YTliMjIxYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
aApAQCAtMjUsMTcgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRm9udENh
c2NhZGUuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9ySW5saW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAotY2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7
CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFRleHRVbmRlcmxpbmVPZmZzZXQ7CiAKIGlubGlu
ZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogewpAQCAtNjUsNiArNjEsNiBAQCBH
bHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5
bGUmKTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJTdHlsZSYsIEZvbnRCYXNlbGluZSwgVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIpOwog
R2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImLCBjb25zdCBSZW5kZXJUZXh0JiwgZmxvYXQgdGV4dEJv
eExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIAotZmxvYXQgdW5kZXJs
aW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgSW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYpOworZmxvYXQgdW5kZXJsaW5lT2Zmc2V0Rm9y
VGV4dEJveFBhaW50aW5nKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3gmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRh
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25k
LW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwKaW5kZXggODYwMTg5ZTc5MmNlLi43MTViNzFjY2RmMTgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbi1pbi1zZWNv
bmQtb3JkZXItZGVzY2VuZGFudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0
LWRlY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTEsNCArMSw1
IEBACiA8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZm
ZXJlbmNlPTU4LTY0OyB0b3RhbFBpeGVscz0zLTciIC8+CiA8c3R5bGU+CiAub3V0ZXIgewogICAg
IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdGV4dC1kZWNvcmF0aW9ucy1vbi1maXJzdC1saW5lLWFuZC1jb250YWluaW5nLWJsb2Nr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb25zLW9uLWZpcnN0LWxp
bmUtYW5kLWNvbnRhaW5pbmctYmxvY2suaHRtbAppbmRleCAwOWJhNjc3ZmIyMWMuLjIxNzg3YTQ4
MmMyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9ucy1v
bi1maXJzdC1saW5lLWFuZC1jb250YWluaW5nLWJsb2NrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9ucy1vbi1maXJzdC1saW5lLWFuZC1jb250YWluaW5nLWJs
b2NrLmh0bWwKQEAgLTEsNCArMSw1IEBACiA8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIG5hbWU9ImZ1
enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTU5LTY0OyB0b3RhbFBpeGVscz01LTEwIiAvPgog
PGh0bWw+CiA8aGVhZD4KIDxzdHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1l
bnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9y
LzAwMS1hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAv
Zm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtYS5odG1sCmluZGV4IGM4ZWQx
OTAzZmQ4My4uN2YzYjFkZWRjMzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50
cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8w
MDEtYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQt
MC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1hLmh0bWwKQEAgLTEsNCAr
MSw1IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFu
c2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxt
ZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTYxLTY0OyB0b3RhbFBpeGVs
cz02LTE5IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRpdGxlPlRo
ZSBmb250IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIGFsbW9zdCBz
dGFuZGFyZHMgbW9kZTwvdGl0bGU+CiA8c3R5bGU+W2lkXSA+ICogeyBjb2xvcjpmdWNoc2lhIH08
L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29u
dGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcv
bm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMC9mb250LWVsZW1lbnQtdGV4
dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1xLmh0bWwKaW5kZXggOTAyNWU3Mjg5OTE4Li5jYmUwYjdh
MTU0ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRl
bnQtMC9mb250LWVsZW1lbnQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yLzAwMS1xLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10
ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXEuaHRtbApAQCAtMSwzICsxLDQgQEAKKzxtZXRhIG5h
bWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTYxLTY0OyB0b3RhbFBpeGVscz02LTE5
IiAvPgogPGxpbmsgcmVsPW1hdGNoIGhyZWY9MDAxLXJlZi5odG1sPgogPHRpdGxlPlRoZSBmb250
IGVsZW1lbnQgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIHF1aXJrLCAwMDEsIHF1aXJrcyBtb2RlPC90
aXRsZT4KIDxzdHlsZT5baWRdID4gKiB7IGNvbG9yOmZ1Y2hzaWEgfTwvc3R5bGU+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVu
ZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVt
ZW50LXRleHQtZGVjb3JhdGlvbi1jb2xvci8wMDEtcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxl
bWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVudC10ZXh0LWRlY29yYXRpb24tY29s
b3IvMDAxLXMuaHRtbAppbmRleCBiYWM4MGU1M2JhZTQuLjJiOWMwMmY4MTYxMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRl
cmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvcGhyYXNpbmctY29udGVudC0wL2ZvbnQtZWxlbWVu
dC10ZXh0LWRlY29yYXRpb24tY29sb3IvMDAxLXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1l
bGVtZW50cy9waHJhc2luZy1jb250ZW50LTAvZm9udC1lbGVtZW50LXRleHQtZGVjb3JhdGlvbi1j
b2xvci8wMDEtcy5odG1sCkBAIC0xLDQgKzEsNSBAQAogPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBu
YW1lPSJmdXp6eSIgY29udGVudD0ibWF4RGlmZmVyZW5jZT02MS02NDsgdG90YWxQaXhlbHM9Ni0x
OSIgLz4KIDxsaW5rIHJlbD1tYXRjaCBocmVmPTAwMS1yZWYuaHRtbD4KIDx0aXRsZT5UaGUgZm9u
dCBlbGVtZW50IHRleHQgZGVjb3JhdGlvbiBjb2xvciBxdWlyaywgMDAxLCBzdGFuZGFyZHMgbW9k
ZTwvdGl0bGU+CiA8c3R5bGU+W2lkXSA+ICogeyBjb2xvcjpmdWNoc2lhIH08L3N0eWxlPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>