<?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>221765</bug_id>
          
          <creation_ts>2021-02-11 11:35:12 -0800</creation_ts>
          <short_desc>drawGlyphs() should take a Glyph* and an Advance* instead of a GlyphBuffer</short_desc>
          <delta_ts>2021-02-12 13:49:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>changseok</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728196</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 11:35:12 -0800</bug_when>
    <thetext>drawGlyphs() should take a Glyph* and an Advance* instead of a GlyphBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728199</commentid>
    <comment_count>1</comment_count>
      <attachid>420015</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 11:39:10 -0800</bug_when>
    <thetext>Created attachment 420015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728204</commentid>
    <comment_count>2</comment_count>
      <attachid>420018</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 11:49:11 -0800</bug_when>
    <thetext>Created attachment 420018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728241</commentid>
    <comment_count>3</comment_count>
      <attachid>420030</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 12:39:25 -0800</bug_when>
    <thetext>Created attachment 420030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728276</commentid>
    <comment_count>4</comment_count>
      <attachid>420037</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 13:45:07 -0800</bug_when>
    <thetext>Created attachment 420037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728280</commentid>
    <comment_count>5</comment_count>
      <attachid>420039</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 13:47:16 -0800</bug_when>
    <thetext>Created attachment 420039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728306</commentid>
    <comment_count>6</comment_count>
      <attachid>420045</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 14:27:04 -0800</bug_when>
    <thetext>Created attachment 420045
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728315</commentid>
    <comment_count>7</comment_count>
      <attachid>420048</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 14:59:01 -0800</bug_when>
    <thetext>Created attachment 420048
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728359</commentid>
    <comment_count>8</comment_count>
      <attachid>420066</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 16:47:22 -0800</bug_when>
    <thetext>Created attachment 420066
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728441</commentid>
    <comment_count>9</comment_count>
      <attachid>420089</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 20:46:25 -0800</bug_when>
    <thetext>Created attachment 420089
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728447</commentid>
    <comment_count>10</comment_count>
      <attachid>420091</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 21:10:14 -0800</bug_when>
    <thetext>Created attachment 420091
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728453</commentid>
    <comment_count>11</comment_count>
      <attachid>420094</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 21:30:45 -0800</bug_when>
    <thetext>Created attachment 420094
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728464</commentid>
    <comment_count>12</comment_count>
      <attachid>420098</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-11 21:58:43 -0800</bug_when>
    <thetext>Created attachment 420098
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728467</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-11 22:53:22 -0800</bug_when>
    <thetext>Committed r272772: &lt;https://commits.webkit.org/r272772&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420098.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728468</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-11 22:54:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74265730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728584</commentid>
    <comment_count>15</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-02-12 09:17:20 -0800</bug_when>
    <thetext>(In reply to EWS from comment #13)
&gt; Committed r272772: &lt;https://commits.webkit.org/r272772&gt;
This seems to have broken windows build.
r272772 failed in https://build.webkit.org/#/builders/67/builds/190
r272771 passed in https://build.webkit.org/#/builders/67/builds/189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728596</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 09:29:25 -0800</bug_when>
    <thetext>&gt; Source\WebCore\platform/graphics/Font.cpp(34,10): fatal error C1083: Cannot open include file: &apos;pal/spi/cf/CoreTextSPI.h&apos;: No such file or directory

🤔 It&apos;s surprising that this doesn&apos;t work on Windows...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728605</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 09:34:40 -0800</bug_when>
    <thetext>Committed 234019@main: &lt;https://commits.webkit.org/234019@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728695</commentid>
    <comment_count>18</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-02-12 11:32:15 -0800</bug_when>
    <thetext>Still failing, e.g.: https://build.webkit.org/#/builders/56/builds/87</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728732</commentid>
    <comment_count>19</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 12:34:14 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728733</commentid>
    <comment_count>20</comment_count>
      <attachid>420166</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 12:34:16 -0800</bug_when>
    <thetext>Created attachment 420166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728764</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-12 13:49:22 -0800</bug_when>
    <thetext>Committed r272807: &lt;https://commits.webkit.org/r272807&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420166.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420015</attachid>
            <date>2021-02-11 11:39:10 -0800</date>
            <delta_ts>2021-02-11 11:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210211113909.patch</filename>
            <type>text/plain</type>
            <size>29007</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU4ODgyZjkwZGU3YmI4
NDQ0OGJlNGU3ZWI5MDE2Zjk3ZjA0YjE0MC4uZWQ4MDZjMTJlY2VmYTZiYzdmZTQzNjgwM2NlZDE2
Y2QwY2E0ZGU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2luZyBpdCB0YWtlIGEgR2x5cGhCdWZmZXIgaXMgbWlzbGVhZGluZyBiZWNhdXNlIGl0IG9u
bHkgdXNlcyB0aGUgZ2x5cGggYXJyYXkgYW5kIHRoZSBhZHZhbmNlIGFycmF5CisgICAgICAgIGZy
b20gaW5zaWRlIHRoZSBHbHlwaEJ1ZmZlci4gQSBHbHlwaEJ1ZmZlciBhbHNvIGhvbGRzIGEgYnVu
Y2ggb2YgZXh0cmEgZGF0YSBsaWtlIGdseXBoIG9yaWdpbnMgYW5kIGFuCisgICAgICAgIGluaXRp
YWwgYWR2YW5jZS4gR2x5cGhCdWZmZXJzIGludGVybmFsbHkgaGF2ZSBhIGZsYXR0ZW4oKSBmdW5j
dGlvbiB3aGljaCBpbmNvcnBvcmF0ZSB0aGUgb3JpZ2lucyBpbnRvCisgICAgICAgIHRoZSBhZHZh
bmNlcywgYW5kIHRoaXMgZmxhdHRlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYmVmb3JlIGNhbGxpbmcgZHJhd0dseXBocygpLiBPdXIKKyAgICAgICAgY29kZSBBU1NFUlQo
KXMgdGhpcywgYW5kIGFmdGVyIHRoZSBhc3NlcnRpb24sIHdlIHNob3VsZG4ndCBuZWVkIHRoZSBl
bnRpcmUgR2x5cGhCdWZmZXIgYW55IG1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENh
c2NhZGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpn
ZW5lcmF0ZUdseXBoQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE9wZXJhdG9yOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQp
OgorCiAyMDIxLTAyLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IGEzNDk2YTYyY2U5MzQ4YWZjMzNjZjlhMTI5MjUwOWE0NTlmMjM3Mjcu
LjdhYWFkMDA1OGVhZWJiZjc4ZmE1Y2M0NzJhODNkZmY0ZWNjMDU5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zMCw5ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZv
bnQuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVk
ZSA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNo
ZWRGb250LmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCmluZGV4IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQu
LjMxMzcwY2ZiZmEzNDhkYzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhC
dWZmZXImIGcKIAogICAgICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAg
ICAgICAgICAgaWYgKHNob3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24pKQotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERh
dGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9p
bnQsIG1fZm9udERlc2NyaXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9t
KSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwg
c3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAg
ICAgICAgbGFzdEZyb20gPSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0
Rm9udERhdGE7CkBAIC0xNDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwog
ICAgIH0KIAogICAgIGlmIChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwg
Z2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwg
bV9mb250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3
R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZm
ZXIuYWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwg
bV9mb250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRY
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKaW5kZXggNjBhZjZmMzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2Ri
MGM0M2U3YzgwNDQwNWEyNDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0x
MTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24geyBEb05vdFBhaW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkg
fTsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lk
IGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udFNtb290aGluZ01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250U21vb3RoaW5nTW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBX
VEY6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlv
bnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwg
Y29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3
YTA2YzkwZTAwZjBiMzRkOTljOTE3ODIzMjgwNGZiNTU2NTYuLmZhYmNkZjY3ODM5OGVhNmJkNDJj
MTNjNzQ2YjcwNmFmNzkyZDNlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRo
ZSBDRyBwb3J0cyB1c2UgdGhlIENHIHR5cGVzIGRpcmVjdGx5LCBzbyBhbiBhcnJheSBvZiB0aGVz
ZSB0eXBlcyBjYW4gYmUgZmVkIGRpcmVjdGx5IGludG8gQ1RGb250U2hhcGVHbHlwaHMoKS4KKy8v
IFdoZW4geW91IHdyaXRlIGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0eXBlcywgdXNl
IHRoZSBmdW5jdGlvbnMgYmVsb3chCiAjaWYgVVNFKENHKQogdXNpbmcgR2x5cGhCdWZmZXJHbHlw
aCA9IENHR2x5cGg7CiB1c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBDR1NpemU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApp
bmRleCBhODBjNjRhNDYxMDlhZTYxOTU3NGJlZDgyNWM0YTNkNzBjM2ZhMzY4Li43ZDhhMTYxYTIy
MzlmNTAyZTc2MGFhYjQ4NDNmMDlmMWVjYjBmY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjc3LDE4ICs2NzcsMTcgQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwK
ICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3Ro
aW5nTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCiB7Ci0gICAgQVNTRVJUKGJ1
ZmZlci5pc0ZsYXR0ZW5lZCgpKTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd0dseXBo
cyhmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2Rl
KTsKKyAgICAgICAgbV9pbXBsLT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51
bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0aGlzLCBmb250LCBidWZmZXIsIGZy
b20sIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBw
b2ludCwgZm9udFNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDg0NjhkY2M3YTc1Mzgy
MDNlOTNhYTFjNTY2NTc1OGEwMzdlOTIyMS4uYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRk
YzkxMTEwZTI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00
MTgsNyArNDE4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgZHJhd1RleHQo
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwot
ICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSk7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
QXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZHJhd0JpZGlU
ZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4ZjA0Y2QyZjQ1ODYy
NWVjYTQ0ZmQzMzQyZmQzNDU4Y2QyNGRkYzU2Li40MDUyNmE1Nzk2ZWRlMGYwNTgwZGM2ODM4MmUw
ODAwMjgzOGQyMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
LCBGb250U21vb3RoaW5nTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwg
Rm9udFNtb290aGluZ01vZGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2Fz
Y2FkZUNvcmVUZXh0LmNwcAppbmRleCA4ZjFmYmYyOTk0ZTNmZWEyOTVlZmE5ZmZhNmJjOTFiMzJi
MDNiMzI0Li42MmNlNDM1NjFiZGU3MzNjMWE4NzUxMzI0YjNjM2M1NGIwMmY2ODU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2Fk
ZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA2LTIwMjAsIDIwMTYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
LTIwMjEsIDIwMTYgQXBwbGUgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xODMsNyArMTgz
LDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNn
Q29udGV4dCwgZG9TdWJwaXhlbFF1YW50aXphdGlvbik7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IHNtb290aGluZ01vZGUpCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBz
bW9vdGhpbmdNb2RlKQogewogICAgIGNvbnN0IGF1dG8mIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxh
dGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQpAQCAtMjYwLDIzICsy
NjAsMjMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgZmxvYXQgc2hhZG93VGV4
dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hh
ZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhl
IFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KICAgICAgICAgZmxv
YXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29u
dGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKLSAgICAgICAgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNn
Q29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICAg
ICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCi0gICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFk
dmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFk
b3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAg
ICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRo
ZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFk
dmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKICAgICBp
ZiAodXNlTGV0dGVycHJlc3NFZmZlY3QpCi0gICAgICAgIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMpOworICAgICAgICBzaG93
TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhwb2ludCwgZm9udCwgY29udGV4dCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7Ci0gICAg
ICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhz
LCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhwb2ludCwgZm9u
dCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwog
ICAgIH0KIAogICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQotICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwg
cG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGds
eXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAg
ICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGlj
Qm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2Vz
LCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKICAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlci5oCmluZGV4IDFmMWRiMGNlZTBiOGYzY2RjMTg4NTM3YWI4ZDNiYjY5YWM3MTYxMzMuLmE4
MWY2M2Y0NTk2ZTAzN2U2NWZiNmFkMGViZTM0NDkzYTg5Mjg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIH07CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKFJlY29yZGVy
JiwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOwogCiAjaWYgVVNFKENP
UkVfVEVYVCkKICAgICB2b2lkIHJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwg
Q0dHU3RhdGVSZWYsIENHUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3Jl
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggNTYwNDM5MjNl
OGE0ZWFmOTJkNTViYWE1NzQwNDUwMzcwNTQ5YjQ4My4uMWVjYTUwM2I1ZTQwOGVmZjVjNzVhYTQ5
MjZmYmZjYmYyOWFmZWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjIsMTYgKzM2MiwxNyBA
QCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0ltYWdlKENHUmVuZGVyaW5nU3Rh
dGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogICAgIG1fb3duZXIudHJhbnNsYXRlKDAsIC0ocmVj
dC5zaXplLmhlaWdodCArIDIgKiByZWN0Lm9yaWdpbi55KSk7CiB9CiAKLXZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQor
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFk
dmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBo
c0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3Ry
dWN0KSB7Ci0gICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9u
dChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZy
b20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgICAgICBtX293
bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKwogICAgIHByZXBhcmVJbnRl
cm5hbENvbnRleHQoZm9udCwgc21vb3RoaW5nTW9kZSk7Ci0gICAgRm9udENhc2NhZGU6OmRyYXdH
bHlwaHMobV9pbnRlcm5hbENvbnRleHQsIGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlw
aHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKG1faW50ZXJuYWxDb250ZXh0LCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjlj
OGNmNDJlYzFhZTJkMTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThkYTg1MDExNWI3ZmE3Njdk
YWNlODkzZTM0MmZlYTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4MCwxNyArMzgwLDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91
bmRzKGZvbnQpOwogfQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVH
bHlwaEJ1ZmZlcihjb25zdCBGb250JiBmb250KSBjb25zdAotewotICAgIEdseXBoQnVmZmVyIHJl
c3VsdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQot
ICAgICAgICByZXN1bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlw
aEJ1ZmZlcjo6bm9PZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRHJhd0ds
eXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBj
b25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVy
KGZvbnQpLCAwLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9k
ZSk7CisgICAgY29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZh
bmNlcy5kYXRhKCksIG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdN
b2RlKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZv
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYy
ODFkNDFlMjEyMDVhN2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3NjAxNmFiMjMzZTkxYTdk
OGNhNmU1YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTU2LDggKzk1Niw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQm
KTsKIAotICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNv
bnN0OwotCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7
CiAgICAgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlwaHM7CiAgICAgVmVjdG9y
PEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2
NjUxNzI0YjNhM2EuLjg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4NDhlNTEzMGIwODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYyLDkgKzE2Miw5IEBA
IHZvaWQgUmVjb3JkZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKICAgICBhcHBl
bmQ8U2V0TWl0ZXJMaW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBo
cywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5
cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7Cisg
ICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2Vz
LCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIFJlY29y
ZGVyOjphcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9y
LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVj
ZTAzYy4uY2Q4MWYyMTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhiMDk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lk
IGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9u
dFNtb290aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRo
Q2FjaGVkRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5kZXggYzc1ZjE4MzMyZWZiYzliOTM1Yjk5
ZDRmYzcyZTk1NTRmNDI5NDM1NC4uMWQyODc3NjY2MjFlYzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3
ZTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3Bl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJh
dG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTI0LDkgKzUyNCw5IEBAIExheW91dFJlY3QgTWF0aE9wZXJhdG9yOjpwYWludEds
eXBoKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBp
bmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVy
OwotICAgIGJ1ZmZlci5hZGQoZGF0YS5nbHlwaCwgKmRhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9y
R2x5cGgoZGF0YSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwg
YnVmZmVyLCAwLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9u
KCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5n
IGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/Cisg
ICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JH
bHlwaChkYXRhKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCAm
ZGF0YS5nbHlwaCwgJmFkdmFuY2UsIDEsIG9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250
RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogCiAgICAgcmV0dXJuIGdseXBoUGFpbnRS
ZWN0OwogfQpAQCAtNzI4LDEyICs3MjgsMTIgQEAgdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXQKICAg
ICBpZiAobV9zdHJldGNoVHlwZSA9PSBTdHJldGNoVHlwZTo6U2l6ZVZhcmlhbnQpCiAgICAgICAg
IGdseXBoRGF0YS5nbHlwaCA9IG1fdmFyaWFudEdseXBoOwogCi0gICAgR2x5cGhCdWZmZXIgYnVm
ZmVyOwotICAgIGJ1ZmZlci5hZGQoZ2x5cGhEYXRhLmdseXBoLCAqZ2x5cGhEYXRhLmZvbnQsIGFk
dmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9y
VG9wTGVmdCA9IHBhaW50T2Zmc2V0OwogICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kcyA9IGJvdW5k
c0ZvckdseXBoKGdseXBoRGF0YSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4geyBv
cGVyYXRvclRvcExlZnQueCgpLCBMYXlvdXRVbml0KG9wZXJhdG9yVG9wTGVmdC55KCkgLSBnbHlw
aEJvdW5kcy55KCkpIH07Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpnbHlw
aERhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2Nh
ZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJ
ZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNv
bXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZh
bmNlKGFkdmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQsICZnbHlwaERhdGEuZ2x5cGgsICZhZHZh
bmNlLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRp
b24oKS5mb250U21vb3RoaW5nKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGQ1M2Q2YzRiYjJm
MmFjYTAwMDM2OGMwNTdiMzA1ZWI0OTg3YzM0N2QuLjdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4
OTY2Zjc1NzlhMzM4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNCBGcsOpZMOpcmljIFdhbmcgKGZyZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MDYsMTAgKzYwNiwxMCBAQCB2b2lkIFJl
bmRlck1hdGhNTFRva2VuOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
aW5mby5jb250ZXh0KCkpOwogICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7
CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChtYXRoVmFyaWFudEds
eXBoLmdseXBoLCAqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBtYXRoVmFyaWFudEdseXBoLmZvbnQt
PndpZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOwogICAgIExheW91dFVuaXQg
Z2x5cGhBc2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGgu
Zm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSk7Ci0gICAg
aW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBidWZmZXIs
IDAsIDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBo
QXNjZW50KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9v
dGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBn
bHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2
YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0
aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5k
cmF3R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQsICZtYXRoVmFyaWFudEdseXBoLmdseXBo
LCAmYWR2YW5jZSwgMSwgcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9s
dSwgZ2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCku
Zm9udFNtb290aGluZygpKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnRDaGls
ZHJlbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBQYWludEluZm8mIHBhaW50SW5mb0ZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420018</attachid>
            <date>2021-02-11 11:49:11 -0800</date>
            <delta_ts>2021-02-11 13:17:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210211114910.patch</filename>
            <type>text/plain</type>
            <size>29044</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMjljZDUzMzllNjIwMTY1MjkxYzBmN2VlNTc3ZDli
NWMxN2FkNzIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2luZyBpdCB0YWtlIGEgR2x5cGhCdWZmZXIgaXMgbWlzbGVhZGluZyBiZWNhdXNlIGl0IG9u
bHkgdXNlcyB0aGUgZ2x5cGggYXJyYXkgYW5kIHRoZSBhZHZhbmNlIGFycmF5CisgICAgICAgIGZy
b20gaW5zaWRlIHRoZSBHbHlwaEJ1ZmZlci4gQSBHbHlwaEJ1ZmZlciBhbHNvIGhvbGRzIGEgYnVu
Y2ggb2YgZXh0cmEgZGF0YSBsaWtlIGdseXBoIG9yaWdpbnMgYW5kIGFuCisgICAgICAgIGluaXRp
YWwgYWR2YW5jZS4gR2x5cGhCdWZmZXJzIGludGVybmFsbHkgaGF2ZSBhIGZsYXR0ZW4oKSBmdW5j
dGlvbiB3aGljaCBpbmNvcnBvcmF0ZSB0aGUgb3JpZ2lucyBpbnRvCisgICAgICAgIHRoZSBhZHZh
bmNlcywgYW5kIHRoaXMgZmxhdHRlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYmVmb3JlIGNhbGxpbmcgZHJhd0dseXBocygpLiBPdXIKKyAgICAgICAgY29kZSBBU1NFUlQo
KXMgdGhpcywgYW5kIGFmdGVyIHRoZSBhc3NlcnRpb24sIHdlIHNob3VsZG4ndCBuZWVkIHRoZSBl
bnRpcmUgR2x5cGhCdWZmZXIgYW55IG1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENh
c2NhZGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpn
ZW5lcmF0ZUdseXBoQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE9wZXJhdG9yOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQp
OgorCiAyMDIxLTAyLTExICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXVtGQ1JdIFJhbmdlIGlucHV0cyBoYXZlIGFuIGluY29ycmVjdCBSVEwgYXBw
ZWFyYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCBh
OTdiMWQ5YTBmODFlZGIwMTZiNWI5ZTNhMTg0ZjIxNWNlYWRhMTgxLi44ZjdiY2FlOTU3YzVjN2Uz
MDI1NTY1NjJjYzU4ZTIyNGIxNTE4NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsOSArMzAs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250LmgiCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBVU0UoQ09SRV9URVhUKQogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29y
ZVRleHRTUEkuaD4KICNlbmRpZgorCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUg
IkNoYXJhY3RlclByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBkMzIy
NGEzMGE5M2NmYTRjZWIyYWQ3ZThhZjI3MzBlODViN2Q1ZDM0Li4zMTM3MGNmYmZhMzQ4ZGMzMTI1
ODA0YTY0MDRjZmRlMDc1ZDAyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTE0NjgsNyArMTQ2OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAKICAgICAgICAg
aWYgKCZuZXh0Rm9udERhdGEgIT0gZm9udERhdGEpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRE
cmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSkKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFz
dEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlv
bi5mb250U21vb3RoaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygq
Zm9udERhdGEsIGdseXBoQnVmZmVyLmdseXBocyhsYXN0RnJvbSksIGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGxhc3RGcm9tKSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERl
c2NyaXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CiAKICAgICAgICAgICAgIGxhc3RGcm9tID0gbmV4
dEdseXBoOwogICAgICAgICAgICAgZm9udERhdGEgPSAmbmV4dEZvbnREYXRhOwpAQCAtMTQ4MSw3
ICsxNDgxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICB9CiAKICAgICBpZiAoc2hv
dWxkRHJhd0lmTG9hZGluZygqZm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikpCi0g
ICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0RnJv
bSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2NyaXB0aW9uLmZv
bnRTbW9vdGhpbmcoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGds
eXBoQnVmZmVyLmdseXBocyhsYXN0RnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGxhc3RGcm9t
KSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2NyaXB0aW9uLmZv
bnRTbW9vdGhpbmcoKSk7CiAgICAgcG9pbnQuc2V0WChuZXh0WCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDYwYWY2ZjM1YWU0
ZWI3MWE0MDBjZjEzNmFjODA2MzZkN2Y2MDljMDAuLjJkZDNkYjBjNDNlN2M4MDQ0MDVhMjQ0YWFl
NzFkMTVkY2FmMmViN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTE2LDcgKzExNiw3IEBAIHB1Ymxp
YzoKIAogICAgIGVudW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5LCBVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07CiAgICAgV0VCQ09SRV9FWFBP
UlQgRmxvYXRTaXplIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0
byA9IFdURjo6bnVsbG9wdCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElm
Rm9udE5vdFJlYWR5KSBjb25zdDsKLSAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2Rl
KTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUp
OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25l
ZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsK
IAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGlu
ZUV4dGVudHMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaAppbmRleCBmNGY2N2EwNmM5MGUwMGYwYjM0ZDk5Yzkx
NzgyMzI4MDRmYjU1NjU2Li5mYWJjZGY2NzgzOThlYTZiZDQyYzEzYzc0NmI3MDZhZjc5MmQzZWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ck1lbWJlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1
ZmZlck1lbWJlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOCBUb3JjaCBNb2JpbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDEsNiAr
NDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGUgQ0cgcG9ydHMgdXNlIHRoZSBD
RyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMgY2FuIGJlIGZlZCBk
aXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisvLyBXaGVuIHlvdSB3cml0ZSBjb2Rl
IHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgdHlwZXMsIHVzZSB0aGUgZnVuY3Rpb25zIGJlbG93
IQogI2lmIFVTRShDRykKIHVzaW5nIEdseXBoQnVmZmVyR2x5cGggPSBDR0dseXBoOwogdXNpbmcg
R2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYTgwYzY0YTQ2MTA5YWU2
MTk1NzRiZWQ4MjVjNGEzZDcwYzNmYTM2OC4uN2Q4YTE2MWEyMjM5ZjUwMmU3NjBhYWI0ODQzZjA5
ZjFlY2IwZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3Nywx
OCArNjc3LDE3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJh
d1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGJ1
ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IGZvbnRTbW9vdGhpbmdNb2RlKQogewotICAgIEFTU0VSVChidWZmZXIuaXNGbGF0dGVuZWQoKSk7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdHbHlwaHMoZm9udCwgYnVmZmVyLCBmcm9t
LCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgICAgIG1faW1wbC0+
ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250
U21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50
LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMs
IGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdN
b2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1
bnNpZ25lZD4gdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDA4NDY4ZGNjN2E3NTM4MjAzZTkzYWExYzU2NjU3NThhMDM3
ZTkyMjEuLmJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0ZGM5MTExMGUyNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNo
IE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDE4LDcgKzQxOCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZv
aWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRv
ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVh
ZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGYwNGNkMmY0NTg2MjVlY2E0NGZkMzM0MmZkMzQ1OGNk
MjRkZGM1Ni4uNDA1MjZhNTc5NmVkZTBmMDU4MGRjNjgzODJlMDgwMDI4MzhkMjA1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlGaWxs
UGF0dGVybigpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKaW5k
ZXggYjMyZjczZTcyNGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlkYTcxOC4uNTE1ZTFhZGMyZDNi
MjBkODUxMjZmOGRlYmU2NjU3YzZkZjc5YzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3Jl
VGV4dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNi0yMDIwLCAyMDE2IEFw
cGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNi0yMDIxLCAyMDE2IEFwcGxlIElu
Yy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2b2lkIHNl
dENHRm9udFJlbmRlcmluZ01vZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIENHQ29u
dGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3VicGl4ZWxR
dWFudGl6YXRpb24pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGds
eXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAg
ICBjb25zdCBhdXRvJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIGlm
ICghcGxhdGZvcm1EYXRhLnNpemUoKSkKQEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQgRm9udENh
c2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBm
b250LCBjb25zdCBHCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgc2hh
ZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRy
YW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5
ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9p
bnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
QnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBo
cywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2lu
dChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0aWNCb2xk
T2Zmc2V0KQotICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNo
YWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0Nv
bnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJv
bSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFk
dmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFk
b3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnByZXNzRWZm
ZWN0KQotICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhwb2ludCwg
Zm9udCwgY29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNX
aXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocyk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBzaG93R2x5cGhzV2l0aEFk
dmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwg
Z2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAg
ICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBpZiAoc3lu
dGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBv
aW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZvbnQsIGNn
Q29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhm
cm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50Lnko
KSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0
cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQuc2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAxZjFkYjBj
ZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdlNjVmYjZh
ZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAg
IGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbik7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAgdm9pZCBy
ZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBDR1JlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFhNTc0MDQ1
MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVlM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzYyLDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBn
c3RhdGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQgKyAyICog
cmVjdC5vcmlnaW4ueSkpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
IGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBz
bW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAgICBtX293
bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIu
Z2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFy
dFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhz
SXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3Rh
cnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBB
U1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uOjpEZWNvbnN0cnVjdCk7CisKICAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZvbnQsIHNt
b290aGluZ01vZGUpOwotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJuYWxDb250
ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9v
dGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29udGV4
dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhp
bmdNb2RlKTsKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMxYWUyZDEzMzkzNzVk
OWY1NjMwZTc2ZDc0My4uY2Q1ZGU4ZGE4NTAxMTViN2ZhNzY3ZGFjZTg5M2UzNDJmZWEzZjg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zODAsMTcgKzM4MCw5IEBAIERy
YXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCogZ2x5cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250KTsKIH0KIAotaW5s
aW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9u
dCYgZm9udCkgY29uc3QKLXsKLSAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFkZCht
X2dseXBoc1tpXSwgZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zmc2V0KTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsKLSAgICBjb250ZXh0
LmRyYXdHbHlwaHMoZm9udCwgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihmb250KSwgMCwgbV9nbHlwaHMu
c2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAgIGNvbnRleHQuZHJh
d0dseXBocyhmb250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBo
cy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgRHJh
d0dseXBoczo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIxMjA1YTdmZjNhNmE2
MzY3ZS4uYzE2NmYzZGY2YWE4ZTJkNzYwMTZhYjIzM2U5MWE3ZDhjYTZlNWI4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1Niw4ICs5NTYsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgY29tcHV0ZUJvdW5kcyhjb25zdCBGb250Jik7CiAKLSAgICBHbHlwaEJ1ZmZl
ciBnZW5lcmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmKSBjb25zdDsKLQogICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBtX2ZvbnRJZGVudGlmaWVyOwogICAgIFZlY3RvcjxHbHlwaEJ1
ZmZlckdseXBoLCAxMjg+IG1fZ2x5cGhzOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2Us
IDEyOD4gbV9hZHZhbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIzYTNhLi44NTM1YWU4
MDRlNTMxN2JhOWZjMDk3OWRiYWE0ODQ4ZTUxMzBiMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFJlY29yZGVyOjpzZXRN
aXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgYXBwZW5kPFNldE1pdGVyTGltaXQ+KG1p
dGVyTGltaXQpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX2Ry
YXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzKGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fZHJhd0dseXBoc1JlY29y
ZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBv
aW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dyYXBo
c0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IDY0Zjc4YWNiNmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLmNkODFmMjE4NmUxNDZj
MDE3YTE4NTg1YmIzOGQ2MjFiM2I4YjA5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5RmlsbFBh
dHRlcm4oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9N
YXRoT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3Bl
cmF0b3IuY3BwCmluZGV4IGM3NWYxODMzMmVmYmM5YjkzNWI5OWQ0ZmM3MmU5NTU0ZjQyOTQzNTQu
LjFkMjg3NzY2NjIxZWMzZGVlNDQ5YjgwNGUzNjM4NWE2M2JiN2U5ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyNCw5ICs1MjQs
OSBAQCBMYXlvdXRSZWN0IE1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuY2xpcChj
bGlwQm91bmRzKTsKIAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGRh
dGEuZ2x5cGgsICpkYXRhLmZvbnQsIGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpKTsKLSAgICBp
bmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2lu
LCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7
CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5
IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1h
a2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSkpOworICAgIGlu
Zm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgJmRhdGEuZ2x5cGgsICZhZHZhbmNl
LCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNt
b290aGluZygpKTsKIAogICAgIHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0KQEAgLTcyOCwxMiAr
NzI4LDEyIEBAIHZvaWQgTWF0aE9wZXJhdG9yOjpwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0CiAgICAgaWYgKG1fc3RyZXRjaFR5cGUg
PT0gU3RyZXRjaFR5cGU6OlNpemVWYXJpYW50KQogICAgICAgICBnbHlwaERhdGEuZ2x5cGggPSBt
X3ZhcmlhbnRHbHlwaDsKIAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRk
KGdseXBoRGF0YS5nbHlwaCwgKmdseXBoRGF0YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChn
bHlwaERhdGEpKTsKICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBwYWludE9mZnNl
dDsKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChnbHlwaERhdGEp
OwogICAgIExheW91dFBvaW50IG9wZXJhdG9yT3JpZ2luIHsgb3BlcmF0b3JUb3BMZWZ0LngoKSwg
TGF5b3V0VW5pdChvcGVyYXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMueSgpKSB9OwotICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQsIGJ1ZmZlciwg
MCwgMSwgb3BlcmF0b3JPcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9u
KCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5n
IGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/Cisg
ICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JH
bHlwaChnbHlwaERhdGEpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmds
eXBoRGF0YS5mb250LCAmZ2x5cGhEYXRhLmdseXBoLCAmYWR2YW5jZSwgMSwgb3BlcmF0b3JPcmln
aW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygp
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmNwcAppbmRleCBkNTNkNmM0YmIyZjJhY2EwMDAzNjhjMDU3YjMwNWVi
NDk4N2MzNDdkLi43ZWZhZTRkMGZiOWI3NzVlNjk3OGY1MDIyODk2NmY3NTc5YTMzODE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRnLDqWTD
qXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjA2LDEwICs2MDYsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAg
ICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwogCi0gICAgR2x5cGhCdWZmZXIg
YnVmZmVyOwotICAgIGJ1ZmZlci5hZGQobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCwgKm1hdGhWYXJp
YW50R2x5cGguZm9udCwgbWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhW
YXJpYW50R2x5cGguZ2x5cGgpKTsKICAgICBMYXlvdXRVbml0IGdseXBoQXNjZW50ID0gc3RhdGlj
X2Nhc3Q8aW50Pihscm91bmRmKC1tYXRoVmFyaWFudEdseXBoLmZvbnQtPmJvdW5kc0ZvckdseXBo
KG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLnkoKSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdH
bHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9udCwgYnVmZmVyLCAwLCAxLCBwYWludE9mZnNldCAr
IGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9u
dENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJ
WE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVk
IHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZm
ZXJBZHZhbmNlKG1hdGhWYXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRoVmFyaWFu
dEdseXBoLmdseXBoKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlh
bnRHbHlwaC5mb250LCAmbWF0aFZhcmlhbnRHbHlwaC5nbHlwaCwgJmFkdmFuY2UsIDEsIHBhaW50
T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBoQXNjZW50KSwgc3R5
bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiB9
CiAKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWludElu
Zm9Gb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCg==
</data>
<flag name="commit-queue"
          id="438427"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420030</attachid>
            <date>2021-02-11 12:39:25 -0800</date>
            <delta_ts>2021-02-11 13:45:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210211123924.patch</filename>
            <type>text/plain</type>
            <size>32419</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uZTA0MTJkNzk2NGM0NmVlOTdkYTQ3MTQxMjhhMTA0
YTQyNmZiYzE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2luZyBpdCB0YWtlIGEgR2x5cGhCdWZmZXIgaXMgbWlzbGVhZGluZyBiZWNhdXNlIGl0IG9u
bHkgdXNlcyB0aGUgZ2x5cGggYXJyYXkgYW5kIHRoZSBhZHZhbmNlIGFycmF5CisgICAgICAgIGZy
b20gaW5zaWRlIHRoZSBHbHlwaEJ1ZmZlci4gQSBHbHlwaEJ1ZmZlciBhbHNvIGhvbGRzIGEgYnVu
Y2ggb2YgZXh0cmEgZGF0YSBsaWtlIGdseXBoIG9yaWdpbnMgYW5kIGFuCisgICAgICAgIGluaXRp
YWwgYWR2YW5jZS4gR2x5cGhCdWZmZXJzIGludGVybmFsbHkgaGF2ZSBhIGZsYXR0ZW4oKSBmdW5j
dGlvbiB3aGljaCBpbmNvcnBvcmF0ZSB0aGUgb3JpZ2lucyBpbnRvCisgICAgICAgIHRoZSBhZHZh
bmNlcywgYW5kIHRoaXMgZmxhdHRlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYmVmb3JlIGNhbGxpbmcgZHJhd0dseXBocygpLiBPdXIKKyAgICAgICAgY29kZSBBU1NFUlQo
KXMgdGhpcywgYW5kIGFmdGVyIHRoZSBhc3NlcnRpb24sIHdlIHNob3VsZG4ndCBuZWVkIHRoZSBl
bnRpcmUgR2x5cGhCdWZmZXIgYW55IG1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENh
c2NhZGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
R2x5cGhzOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE9wZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9r
ZW46OnBhaW50KToKKwogMjAyMS0wMi0xMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJl
Y3QgUlRMIGFwcGVhcmFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKaW5kZXggYTk3YjFkOWEwZjgxZWRiMDE2YjViOWUzYTE4NGYyMTVjZWFkYTE4MS4uOGY3YmNh
ZTk1N2M1YzdlMzAyNTU2NTYyY2M1OGUyMjRiMTUxODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTMwLDkgKzMwLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxwYWwv
c3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAjZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIK
ICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
aW5kZXggZDMyMjRhMzBhOTNjZmE0Y2ViMmFkN2U4YWYyNzMwZTg1YjdkNWQzNC4uMzEzNzBjZmJm
YTM0OGRjMzEyNTgwNGE2NDA0Y2ZkZTA3NWQwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwog
CiAgICAgICAgIGlmICgmbmV4dEZvbnREYXRhICE9IGZvbnREYXRhKSB7CiAgICAgICAgICAgICBp
ZiAoc2hvdWxkRHJhd0lmTG9hZGluZygqZm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
bikpCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhC
dWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250
RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhsYXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50
LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkpOwogCiAgICAgICAgICAgICBsYXN0
RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0gJm5leHRGb250RGF0YTsK
QEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgfQogCiAg
ICAgaWYgKHNob3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24pKQotICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZl
ciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNj
cmlwdGlvbi5mb250U21vb3RoaW5nKCkpOworICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZv
bnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhsYXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNj
cmlwdGlvbi5mb250U21vb3RoaW5nKCkpOwogICAgIHBvaW50LnNldFgobmV4dFgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2
MGFmNmYzNWFlNGViNzFhNDAwY2YxMzZhYzgwNjM2ZDdmNjA5YzAwLi4yZGQzZGIwYzQzZTdjODA0
NDA1YTI0NGFhZTcxZDE1ZGNhZjJlYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTExNiw3ICsxMTYs
NyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBU
ZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1
bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9v
dGhpbmdNb2RlKTsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50
JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0
KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9h
dFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKaW5kZXggZjRmNjdhMDZjOTBlMDBm
MGIzNGQ5OWM5MTc4MjMyODA0ZmI1NTY1Ni4uZmFiY2RmNjc4Mzk4ZWE2YmQ0MmMxM2M3NDZiNzA2
YWY3OTJkM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXJNZW1iZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlIENHIHBvcnRz
IHVzZSB0aGUgQ0cgdHlwZXMgZGlyZWN0bHksIHNvIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzIGNh
biBiZSBmZWQgZGlyZWN0bHkgaW50byBDVEZvbnRTaGFwZUdseXBocygpLgorLy8gV2hlbiB5b3Ug
d3JpdGUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZXNlIHR5cGVzLCB1c2UgdGhlIGZ1bmN0
aW9ucyBiZWxvdyEKICNpZiBVU0UoQ0cpCiB1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gQ0dHbHlw
aDsKIHVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IENHU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE4MGM2
NGE0NjEwOWFlNjE5NTc0YmVkODI1YzRhM2Q3MGMzZmEzNjguLjdkOGExNjFhMjIzOWY1MDJlNzYw
YWFiNDg0M2YwOWYxZWNiMGZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02NzcsMTggKzY3NywxNyBAQCBGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4
dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJldHVy
biBmb250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKIHsKLSAgICBBU1NFUlQoYnVmZmVyLmlzRmxh
dHRlbmVkKCkpOwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3R2x5cGhzKGZvbnQsIGJ1
ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgICAg
ICBtX2ltcGwtPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBw
b2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5
cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKCp0aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250
U21vb3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODQ2OGRjYzdhNzUzODIwM2U5M2FhMWM1
NjY1NzU4YTAzN2U5MjIxLi5iYjMyYmYzNTk3NDI0YjdlOWFhMGRiY2MxMDk3NGRjOTExMTBlMjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxOCw3ICs0MTgs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250
Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJv
bSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2Rl
KTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVu
c2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNj
YWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElm
Rm9udE5vdFJlYWR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDhmMDRjZDJmNDU4NjI1ZWNhNDRmZDMz
NDJmZDM0NThjZDI0ZGRjNTYuLjQwNTI2YTU3OTZlZGUwZjA1ODBkYzY4MzgyZTA4MDAyODM4ZDIw
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRl
eHQuY3BwCmluZGV4IGIzMmY3M2U3MjRjZjhkZmVjOTVlYjBiM2FhZWFkNmUwNzA5ZGE3MTguLjUx
NWUxYWRjMmQzYjIwZDg1MTI2ZjhkZWJlNjY1N2M2ZGY3OWMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRD
YXNjYWRlQ29yZVRleHQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAy
MCwgMjAxNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAyMSwgMjAx
NiBBcHBsZSBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0
aWMgdm9pZCBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICBDR0NvbnRleHRTZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBk
b1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCiB7CiAgICAgY29uc3QgYXV0byYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEo
KTsKICAgICBpZiAoIXBsYXRmb3JtRGF0YS5zaXplKCkpCkBAIC0yNjAsMjMgKzI2MCwyMyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50
LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBp
Z25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGlu
YXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dU
ZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwotICAgICAgICBzaG93R2x5cGhzV2l0aEFk
dmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250
ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20p
LCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBn
bHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAgICBpZiAoc3lu
dGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwg
Zm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICAgICAgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9m
ZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxD
b2xvcik7CiAgICAgfQogCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmICh1c2VMZXR0
ZXJwcmVzc0VmZmVjdCkKLSAgICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5j
ZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CisgICAgICAgIHNob3dMZXR0ZXJwcmVz
c2VkR2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaHMsIGFkdmFu
Y2VzLCBudW1HbHlwaHMpOwogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhwb2ludCwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRy
aXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRl
eHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgfQogCiAg
ICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCi0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkp
LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlw
aHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBwb2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgdGV4dE1hdHJpeCk7CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQogICAgICAgICBjb250
ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKaW5k
ZXggMWYxZGIwY2VlMGI4ZjNjZGMxODg1MzdhYjhkM2JiNjlhYzcxNjEzMy4uYTgxZjYzZjQ1OTZl
MDM3ZTY1ZmI2YWQwZWJlMzQ0OTNhODkyODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29y
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImLCBEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICB2b2lk
IGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CiAKICNpZiBVU0UoQ09SRV9URVhUKQog
ICAgIHZvaWQgcmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJl
ZiwgQ0dSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCA1NjA0MzkyM2U4YTRlYWY5MmQ1
NWJhYTU3NDA0NTAzNzA1NDliNDgzLi4xZWNhNTAzYjVlNDA4ZWZmNWM3NWFhNDkyNmZiZmNiZjI5
YWZlZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2MiwxNiArMzYyLDE3IEBAIHZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dH
U3RhdGVSZWYgZ3N0YXRlCiAgICAgbV9vd25lci50cmFuc2xhdGUoMCwgLShyZWN0LnNpemUuaGVp
Z2h0ICsgMiAqIHJlY3Qub3JpZ2luLnkpKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290
aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKLSAg
ICAgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGds
eXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUds
eXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5k
RHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgQVNTRVJUKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworCiAgICAgcHJlcGFyZUludGVybmFsQ29udGV4
dChmb250LCBzbW9vdGhpbmdNb2RlKTsKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2lu
dGVybmFsQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQ
b2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMobV9pbnRl
cm5hbENvbnRleHQsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgc21vb3RoaW5nTW9kZSk7CiAgICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVySGFyZkJ1enouY3BwCmluZGV4IDM3ZDUzMWQwODg1YTdmNzJjZDUxNzU1NDRiNzI4MDRk
NWExNGIxNGIuLmY4MTM4MDlhMjBjMmI4OTJmYjFmM2Y0OGNmMDdlOTY3MTgwOTliZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdH
bHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgog
ewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGlu
Z01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQog
ewotICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJh
d0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlw
aHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHAKaW5kZXggYTEwN2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4
NjZkOTY5NS4uZTViYjdjYzhlNjFlNGYwYWJlYmJjN2RiMzRjMWM3MzA4NTdlN2QxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJX
aW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQxLDkgKzQxLDkgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3Jk
ZXIoUmVjb3JkZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIHsKIH0KIAotdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290
aGluZ01vZGUpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293
bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIu
Z2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFy
dFBvaW50LCBtX3Ntb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0
ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0
UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMx
YWUyZDEzMzkzNzVkOWY1NjMwZTc2ZDc0My4uY2Q1ZGU4ZGE4NTAxMTViN2ZhNzY3ZGFjZTg5M2Uz
NDJmZWEzZjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zODAsMTcg
KzM4MCw5IEBAIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250
KTsKIH0KIAotaW5saW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZm
ZXIoY29uc3QgRm9udCYgZm9udCkgY29uc3QKLXsKLSAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAg
cmVzdWx0LmFkZChtX2dseXBoc1tpXSwgZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6
Om5vT2Zmc2V0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIERyYXdHbHlwaHM6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsK
LSAgICBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihmb250KSwg
MCwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0
YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9
CiAKIHZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIx
MjA1YTdmZjNhNmE2MzY3ZS4uYzE2NmYzZGY2YWE4ZTJkNzYwMTZhYjIzM2U5MWE3ZDhjYTZlNWI4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1Niw4ICs5NTYsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUJvdW5kcyhjb25zdCBGb250Jik7CiAKLSAg
ICBHbHlwaEJ1ZmZlciBnZW5lcmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmKSBjb25zdDsKLQog
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2ZvbnRJZGVudGlmaWVyOwogICAgIFZl
Y3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+IG1fZ2x5cGhzOwogICAgIFZlY3RvcjxHbHlwaEJ1
ZmZlckFkdmFuY2UsIDEyOD4gbV9hZHZhbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAppbmRleCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIz
YTNhLi44NTM1YWU4MDRlNTMxN2JhOWZjMDk3OWRiYWE0ODQ4ZTUxMzBiMDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFJl
Y29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgYXBwZW5kPFNldE1p
dGVyTGltaXQ+KG1pdGVyTGltaXQpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBG
b250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKLSAgICBtX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzKGZvbnQsIGdseXBoQnVmZmVy
LCBmcm9tLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fZHJh
d0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBw
ZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCmluZGV4IDY0Zjc4YWNiNmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLmNk
ODFmMjE4NmUxNDZjMDE3YTE4NTg1YmIzOGQ2MjFiM2I4YjA5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFwcGx5RmlsbFBhdHRlcm4oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZv
bnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9NYXRoT3BlcmF0b3IuY3BwCmluZGV4IGM3NWYxODMzMmVmYmM5YjkzNWI5OWQ0ZmM3MmU5
NTU0ZjQyOTQzNTQuLjFkMjg3NzY2NjIxZWMzZGVlNDQ5YjgwNGUzNjM4NWE2M2JiN2U5ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUyNCw5ICs1MjQsOSBAQCBMYXlvdXRSZWN0IE1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywgYwogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgaW5mby5jb250
ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBi
dWZmZXIuYWRkKGRhdGEuZ2x5cGgsICpkYXRhLmZvbnQsIGFkdmFuY2VXaWR0aEZvckdseXBoKGRh
dGEpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpkYXRhLmZvbnQsIGJ1ZmZlciwg
MCwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
bW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmds
ZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8g
YWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0
YSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgJmRhdGEuZ2x5
cGgsICZhZHZhbmNlLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0
aW9uKCkuZm9udFNtb290aGluZygpKTsKIAogICAgIHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0K
QEAgLTcyOCwxMiArNzI4LDEyIEBAIHZvaWQgTWF0aE9wZXJhdG9yOjpwYWludChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0CiAgICAgaWYgKG1f
c3RyZXRjaFR5cGUgPT0gU3RyZXRjaFR5cGU6OlNpemVWYXJpYW50KQogICAgICAgICBnbHlwaERh
dGEuZ2x5cGggPSBtX3ZhcmlhbnRHbHlwaDsKIAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAg
ICBidWZmZXIuYWRkKGdseXBoRGF0YS5nbHlwaCwgKmdseXBoRGF0YS5mb250LCBhZHZhbmNlV2lk
dGhGb3JHbHlwaChnbHlwaERhdGEpKTsKICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQg
PSBwYWludE9mZnNldDsKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlw
aChnbHlwaERhdGEpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9yT3JpZ2luIHsgb3BlcmF0b3JU
b3BMZWZ0LngoKSwgTGF5b3V0VW5pdChvcGVyYXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMu
eSgpKSB9OwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZv
bnQsIGJ1ZmZlciwgMCwgMSwgb3BlcmF0b3JPcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9u
dERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUg
anVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFu
IGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZh
bmNlV2lkdGhGb3JHbHlwaChnbHlwaERhdGEpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdHbHlwaHMoKmdseXBoRGF0YS5mb250LCAmZ2x5cGhEYXRhLmdseXBoLCAmYWR2YW5jZSwgMSwg
b3BlcmF0b3JPcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCBkNTNkNmM0YmIyZjJhY2EwMDAz
NjhjMDU3YjMwNWViNDk4N2MzNDdkLi43ZWZhZTRkMGZiOWI3NzVlNjk3OGY1MDIyODk2NmY3NTc5
YTMzODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgRnLDqWTDqXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjA2LDEwICs2MDYsMTAgQEAgdm9pZCBSZW5kZXJNYXRo
TUxUb2tlbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29u
dGV4dCgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwogCi0gICAg
R2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZlci5hZGQobWF0aFZhcmlhbnRHbHlwaC5nbHlw
aCwgKm1hdGhWYXJpYW50R2x5cGguZm9udCwgbWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZv
ckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsKICAgICBMYXlvdXRVbml0IGdseXBoQXNj
ZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKC1tYXRoVmFyaWFudEdseXBoLmZvbnQtPmJv
dW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLnkoKSkpOwotICAgIGluZm8uY29u
dGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9udCwgYnVmZmVyLCAwLCAxLCBw
YWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCks
IHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkp
OworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdo
eSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBt
YWtlR2x5cGhCdWZmZXJBZHZhbmNlKG1hdGhWYXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlw
aChtYXRoVmFyaWFudEdseXBoLmdseXBoKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBo
cygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCAmbWF0aFZhcmlhbnRHbHlwaC5nbHlwaCwgJmFkdmFu
Y2UsIDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBo
QXNjZW50KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9v
dGhpbmcoKSk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50Q2hpbGRyZW4oUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJ
bmZvJiBwYWludEluZm9Gb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420037</attachid>
            <date>2021-02-11 13:45:07 -0800</date>
            <delta_ts>2021-02-11 13:47:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210211134506.patch</filename>
            <type>text/plain</type>
            <size>38776</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTljYWMxOTA5MWZmZGE3M2FmMzNiOWFlOGMxYTQx
NTA1ZDE1ZjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2luZyBpdCB0YWtlIGEgR2x5cGhCdWZmZXIgaXMgbWlzbGVhZGluZyBiZWNhdXNlIGl0IG9u
bHkgdXNlcyB0aGUgZ2x5cGggYXJyYXkgYW5kIHRoZSBhZHZhbmNlIGFycmF5CisgICAgICAgIGZy
b20gaW5zaWRlIHRoZSBHbHlwaEJ1ZmZlci4gQSBHbHlwaEJ1ZmZlciBhbHNvIGhvbGRzIGEgYnVu
Y2ggb2YgZXh0cmEgZGF0YSBsaWtlIGdseXBoIG9yaWdpbnMgYW5kIGFuCisgICAgICAgIGluaXRp
YWwgYWR2YW5jZS4gR2x5cGhCdWZmZXJzIGludGVybmFsbHkgaGF2ZSBhIGZsYXR0ZW4oKSBmdW5j
dGlvbiB3aGljaCBpbmNvcnBvcmF0ZSB0aGUgb3JpZ2lucyBpbnRvCisgICAgICAgIHRoZSBhZHZh
bmNlcywgYW5kIHRoaXMgZmxhdHRlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYmVmb3JlIGNhbGxpbmcgZHJhd0dseXBocygpLiBPdXIKKyAgICAgICAgY29kZSBBU1NFUlQo
KXMgdGhpcywgYW5kIGFmdGVyIHRoZSBhc3NlcnRpb24sIHdlIHNob3VsZG4ndCBuZWVkIHRoZSBl
bnRpcmUgR2x5cGhCdWZmZXIgYW55IG1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE9wZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46
OnBhaW50KToKKwogMjAyMS0wMi0xMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU11bRkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJlY3Qg
UlRMIGFwcGVhcmFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
aW5kZXggYTk3YjFkOWEwZjgxZWRiMDE2YjViOWUzYTE4NGYyMTVjZWFkYTE4MS4uOGY3YmNhZTk1
N2M1YzdlMzAyNTU2NTYyY2M1OGUyMjRiMTUxODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMw
LDkgKzMwLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxwYWwvc3Bp
L2NmL0NvcmVUZXh0U1BJLmg+CiAjZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNp
bmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5k
ZXggZDMyMjRhMzBhOTNjZmE0Y2ViMmFkN2U4YWYyNzMwZTg1YjdkNWQzNC4uMzEzNzBjZmJmYTM0
OGRjMzEyNTgwNGE2NDA0Y2ZkZTA3NWQwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogCiAg
ICAgICAgIGlmICgmbmV4dEZvbnREYXRhICE9IGZvbnREYXRhKSB7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkRHJhd0lmTG9hZGluZygqZm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZm
ZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVz
Y3JpcHRpb24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdH
bHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhsYXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBt
X2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkpOwogCiAgICAgICAgICAgICBsYXN0RnJv
bSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0gJm5leHRGb250RGF0YTsKQEAg
LTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgfQogCiAgICAg
aWYgKHNob3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24pKQotICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwg
bGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlw
dGlvbi5mb250U21vb3RoaW5nKCkpOworICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnRE
YXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhs
YXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlw
dGlvbi5mb250U21vb3RoaW5nKCkpOwogICAgIHBvaW50LnNldFgobmV4dFgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2MGFm
NmYzNWFlNGViNzFhNDAwY2YxMzZhYzgwNjM2ZDdmNjA5YzAwLi4yZGQzZGIwYzQzZTdjODA0NDA1
YTI0NGFhZTcxZDE1ZGNhZjJlYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTExNiw3ICsxMTYsNyBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFp
bnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBXVEY6Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3Ro
aW5nTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
dW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkg
Y29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJl
Y3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKaW5kZXggZjRmNjdhMDZjOTBlMDBmMGIz
NGQ5OWM5MTc4MjMyODA0ZmI1NTY1Ni4uZmFiY2RmNjc4Mzk4ZWE2YmQ0MmMxM2M3NDZiNzA2YWY3
OTJkM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXJNZW1iZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXJNZW1iZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlIENHIHBvcnRzIHVz
ZSB0aGUgQ0cgdHlwZXMgZGlyZWN0bHksIHNvIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzIGNhbiBi
ZSBmZWQgZGlyZWN0bHkgaW50byBDVEZvbnRTaGFwZUdseXBocygpLgorLy8gV2hlbiB5b3Ugd3Jp
dGUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZXNlIHR5cGVzLCB1c2UgdGhlIGZ1bmN0aW9u
cyBiZWxvdyEKICNpZiBVU0UoQ0cpCiB1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gQ0dHbHlwaDsK
IHVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IENHU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE4MGM2NGE0
NjEwOWFlNjE5NTc0YmVkODI1YzRhM2Q3MGMzZmEzNjguLjdkOGExNjFhMjIzOWY1MDJlNzYwYWFi
NDg0M2YwOWYxZWNiMGZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02NzcsMTggKzY3NywxNyBAQCBGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJldHVybiBm
b250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyJiBidWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2Vz
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKIHsKLSAgICBBU1NFUlQoYnVmZmVyLmlzRmxhdHRl
bmVkKCkpOwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3R2x5cGhzKGZvbnQsIGJ1ZmZl
ciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgICAgICBt
X2ltcGwtPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2lu
dCwgZm9udFNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRm9u
dENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KCp0aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21v
b3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9t
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODQ2OGRjYzdhNzUzODIwM2U5M2FhMWM1NjY1
NzU4YTAzN2U5MjIxLi5iYjMyYmYzNTk3NDI0YjdlOWFhMGRiY2MxMDk3NGRjOTExMTBlMjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxOCw3ICs0MTgsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9
IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsK
KyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRl
OjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDhmMDRjZDJmNDU4NjI1ZWNhNDRmZDMzNDJm
ZDM0NThjZDI0ZGRjNTYuLjQwNTI2YTU3OTZlZGUwZjA1ODBkYzY4MzgyZTA4MDAyODM4ZDIwNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5RmlsbFBhdHRlcm4oKSA9IDA7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5n
TW9kZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcAppbmRleCBkNjEwODgxMDI2ZWM5YTUwNTEzY2ZmZmM4MjMyYzU1MjU1MWU5NjFkLi4x
Y2M0Y2IyM2M4MDkwZWYyMTE4YjE5ZmUzMTFiMjE2NmM3OWIwYjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBD
YWlybzo6Y2xlYXJSZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3Ro
aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIGlmICghZm9u
dC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCwxMyArMjQw
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgYXV0byB4T2Zmc2V0ID0gcG9pbnQu
eCgpOwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsKICAgICB7
Ci0gICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSk7Ci0g
ICAgICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7Ci0KKyAg
ICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAgICAgYXV0
byB5T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0RhdGFbaV0s
IHhPZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5cGhzW2ld
LCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ld
LndpZHRoKCk7CiAgICAgICAgICAgICB5T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLmhlaWdodCgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDY5YmQzNTBl
MmJkMDVkYTMwMTA1NjA1NGVjMjk0OGI5NDMxNTRiNjYuLmQ5MDc0MDAyN2Y3Mzk1MmQwOWUyOWJl
NDk2NDkzMjM1MGQ4NDEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3Bw
CmluZGV4IGIzMmY3M2U3MjRjZjhkZmVjOTVlYjBiM2FhZWFkNmUwNzA5ZGE3MTguLjUxNWUxYWRj
MmQzYjIwZDg1MTI2ZjhkZWJlNjY1N2M2ZGY3OWMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRl
Q29yZVRleHQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAyMCwgMjAx
NiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAyMSwgMjAxNiBBcHBs
ZSBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBD
R0NvbnRleHRTZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBkb1N1YnBp
eGVsUXVhbnRpemF0aW9uKTsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
K3ZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7
CiAgICAgY29uc3QgYXV0byYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAg
ICBpZiAoIXBsYXRmb3JtRGF0YS5zaXplKCkpCkBAIC0yNjAsMjMgKzI2MCwyMyBAQCB2b2lkIEZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgRwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSAr
IHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmlu
ZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZs
aXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9
IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwotICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0
UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMs
IGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAgICBpZiAoc3ludGhldGlj
Qm9sZE9mZnNldCkKLSAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2lu
dChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwg
Y2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwg
c2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7
CiAgICAgfQogCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmICh1c2VMZXR0ZXJwcmVz
c0VmZmVjdCkKLSAgICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMocG9p
bnQsIGZvbnQsIGNvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CisgICAgICAgIHNob3dMZXR0ZXJwcmVzc2VkR2x5
cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMpOwogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhwb2ludCwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwor
ICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgfQogCiAgICAgaWYg
KHN5bnRoZXRpY0JvbGRPZmZzZXQpCi0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRo
QWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2lu
dC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4
dE1hdHJpeCk7CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQogICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMWYx
ZGIwY2VlMGI4ZjNjZGMxODg1MzdhYjhkM2JiNjlhYzcxNjEzMy4uYTgxZjYzZjQ1OTZlMDM3ZTY1
ZmI2YWQwZWJlMzQ0OTNhODkyODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfTsK
ICAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImLCBEcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24pOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CiAKICNpZiBVU0UoQ09SRV9URVhUKQogICAgIHZv
aWQgcmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCA1NjA0MzkyM2U4YTRlYWY5MmQ1NWJhYTU3
NDA0NTAzNzA1NDliNDgzLi4xZWNhNTAzYjVlNDA4ZWZmNWM3NWFhNDkyNmZiZmNiZjI5YWZlZTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2MiwxNiArMzYyLDE3IEBAIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVS
ZWYgZ3N0YXRlCiAgICAgbV9vd25lci50cmFuc2xhdGUoMCwgLShyZWN0LnNpemUuaGVpZ2h0ICsg
MiAqIHJlY3Qub3JpZ2luLnkpKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24g
PT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKLSAgICAgICAg
bV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVm
ZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dy
YXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgQVNTRVJUKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworCiAgICAgcHJlcGFyZUludGVybmFsQ29udGV4dChmb250
LCBzbW9vdGhpbmdNb2RlKTsKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFs
Q29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwg
c21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMobV9pbnRlcm5hbENv
bnRleHQsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CiAgICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
SGFyZkJ1enouY3BwCmluZGV4IDM3ZDUzMWQwODg1YTdmNzJjZDUxNzU1NDRiNzI4MDRkNWExNGIx
NGIuLmY4MTM4MDlhMjBjMmI4OTJmYjFmM2Y0OGNmMDdlOTY3MTgwOTliZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJI
YXJmQnV6ei5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNS
ZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQog
Ci12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAg
IG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1
ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBo
c0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0
YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlcldpbi5jcHAKaW5kZXggYTEwN2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4NjZkOTY5
NS4uZTViYjdjYzhlNjFlNGYwYWJlYmJjN2RiMzRjMWM3MzA4NTdlN2QxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQxLDkgKzQxLDkgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoUmVj
b3JkZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIHsKIH0KIAotdm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQ
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFw
cGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhz
KGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBtX3Ntb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRo
Q2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQs
IG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMxYWUyZDEz
MzkzNzVkOWY1NjMwZTc2ZDc0My4uY2Q1ZGU4ZGE4NTAxMTViN2ZhNzY3ZGFjZTg5M2UzNDJmZWEz
Zjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zODAsMTcgKzM4MCw5
IEBAIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250KTsKIH0K
IAotaW5saW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoY29u
c3QgRm9udCYgZm9udCkgY29uc3QKLXsKLSAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0
LmFkZChtX2dseXBoc1tpXSwgZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zm
c2V0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsKLSAgICBj
b250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihmb250KSwgMCwgbV9n
bHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAgIGNvbnRl
eHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIHZv
aWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIxMjA1YTdm
ZjNhNmE2MzY3ZS4uYzE2NmYzZGY2YWE4ZTJkNzYwMTZhYjIzM2U5MWE3ZDhjYTZlNWI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1Niw4ICs5NTYsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUJvdW5kcyhjb25zdCBGb250Jik7CiAKLSAgICBHbHlw
aEJ1ZmZlciBnZW5lcmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmKSBjb25zdDsKLQogICAgIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2ZvbnRJZGVudGlmaWVyOwogICAgIFZlY3RvcjxH
bHlwaEJ1ZmZlckdseXBoLCAxMjg+IG1fZ2x5cGhzOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFk
dmFuY2UsIDEyOD4gbV9hZHZhbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIzYTNhLi44
NTM1YWU4MDRlNTMxN2JhOWZjMDk3OWRiYWE0ODQ4ZTUxMzBiMDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFJlY29yZGVy
OjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgYXBwZW5kPFNldE1pdGVyTGlt
aXQ+KG1pdGVyTGltaXQpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAg
ICBtX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzKGZvbnQsIGdseXBoQnVmZmVyLCBmcm9t
LCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fZHJhd0dseXBo
c1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBz
dGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJh
d0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGlu
Z01vZGUgc21vb3RoaW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CmluZGV4IDY0Zjc4YWNiNmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLmNkODFmMjE4
NmUxNDZjMDE3YTE4NTg1YmIzOGQ2MjFiM2I4YjA5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5
RmlsbFBhdHRlcm4oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAxOWRmYzlmNGRkOGJmNGM0ZTQ5NjM0MWNhZjdm
MjNjMDk0NDQ4YjliLi45MzFlNzQ4ZWVmOTlhYzU0YzYyZDkxYzM5OTNjN2U5Y2MzOTU4NjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcApAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxDbGVhclJlY3Q+KHJlY3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZykKK3ZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IGZvbnRTbW9vdGhpbmcpCiB7CiAgICAgc3RydWN0IERyYXdHbHlwaHMgZmluYWwgOiBQYWludGlu
Z09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxDYWlybzo6RmlsbFNvdXJjZSwgQ2Fpcm86OlN0cm9r
ZVNvdXJjZSwgQ2Fpcm86OlNoYWRvd1N0YXRlLCBGbG9hdFBvaW50LCBSZWZQdHI8Y2Fpcm9fc2Nh
bGVkX2ZvbnRfdD4sIGZsb2F0LCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4sIGZsb2F0LCBUZXh0RHJh
d2luZ01vZGVGbGFncywgZmxvYXQsIEZsb2F0U2l6ZSwgQ29sb3IsIEZvbnRTbW9vdGhpbmdNb2Rl
PiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdHbHlwaHMoKSA9IGRlZmF1bHQ7CkBAIC01MTYsMTMg
KzUxNiwxMCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseQogICAgIGF1dG8geE9mZnNldCA9IHBv
aW50LngoKTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4gZ2x5cGhzKG51bUdseXBocyk7CiAg
ICAgewotICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBnbHlwaEJ1ZmZlci5zaXpl
KCkpOwotICAgICAgICBhdXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20p
OwotICAgICAgICBhdXRvKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pOwot
CisgICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IG51bUdseXBocyk7CiAgICAgICAg
IGF1dG8geU9mZnNldCA9IHBvaW50LnkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1HbHlwaHM7ICsraSkgewotICAgICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNEYXRh
W2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CisgICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBo
c1tpXSwgeE9mZnNldCwgeU9mZnNldCB9OwogICAgICAgICAgICAgeE9mZnNldCArPSBhZHZhbmNl
c1tpXS53aWR0aCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGQ5YjE5ZjJlYmYwNGIwMTlm
ZGJjYWZmYTc1MWI3NDY2ODcxMGU2ZjEuLjhmZmYxODRlYjIyYTBhMzY1MjA1YTA0M2VhNTZkNTJh
ZDljYjYyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cm9r
ZUVsbGlwc2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGVhclJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVm
ZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2Vi
Q29yZTo6Rm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhj
b25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCmluZGV4
IGM3NWYxODMzMmVmYmM5YjkzNWI5OWQ0ZmM3MmU5NTU0ZjQyOTQzNTQuLjFkMjg3NzY2NjIxZWMz
ZGVlNDQ5YjgwNGUzNjM4NWE2M2JiN2U5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyNCw5ICs1MjQsOSBAQCBMYXlvdXRSZWN0
IE1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50
SW5mbyYgaW5mbywgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihp
bmZvLmNvbnRleHQoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAot
ICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsICpkYXRh
LmZvbnQsIGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5k
cmF3R2x5cGhzKCpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6
IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8g
Y29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFk
dmFuY2UoYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSkpOworICAgIGluZm8uY29udGV4dCgpLmRy
YXdHbHlwaHMoKmRhdGEuZm9udCwgJmRhdGEuZ2x5cGgsICZhZHZhbmNlLCAxLCBvcmlnaW4sIHN0
eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKIAog
ICAgIHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0KQEAgLTcyOCwxMiArNzI4LDEyIEBAIHZvaWQg
TWF0aE9wZXJhdG9yOjpwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0CiAgICAgaWYgKG1fc3RyZXRjaFR5cGUgPT0gU3RyZXRjaFR5cGU6
OlNpemVWYXJpYW50KQogICAgICAgICBnbHlwaERhdGEuZ2x5cGggPSBtX3ZhcmlhbnRHbHlwaDsK
IAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGdseXBoRGF0YS5nbHlw
aCwgKmdseXBoRGF0YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChnbHlwaERhdGEpKTsKICAg
ICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBwYWludE9mZnNldDsKICAgICBGbG9hdFJl
Y3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChnbHlwaERhdGEpOwogICAgIExheW91dFBv
aW50IG9wZXJhdG9yT3JpZ2luIHsgb3BlcmF0b3JUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdChvcGVy
YXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMueSgpKSB9OwotICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3BlcmF0b3JP
cmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGlu
ZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBo
LCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNl
ID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlwaChnbHlwaERhdGEp
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmdseXBoRGF0YS5mb250LCAm
Z2x5cGhEYXRhLmdseXBoLCAmYWR2YW5jZSwgMSwgb3BlcmF0b3JPcmlnaW4sIHN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcAppbmRleCBkNTNkNmM0YmIyZjJhY2EwMDAzNjhjMDU3YjMwNWViNDk4N2MzNDdkLi43ZWZh
ZTRkMGZiOWI3NzVlNjk3OGY1MDIyODk2NmY3NTc5YTMzODE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRnLDqWTDqXJpYyBXYW5nIChmcmVk
LndhbmdAZnJlZS5mcikuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjA2
LDEwICs2MDYsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQoUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0
ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1
ZmZlci5hZGQobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCwgKm1hdGhWYXJpYW50R2x5cGguZm9udCwg
bWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5
cGgpKTsKICAgICBMYXlvdXRVbml0IGdseXBoQXNjZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihscm91
bmRmKC1tYXRoVmFyaWFudEdseXBoLmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5
cGguZ2x5cGgpLnkoKSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJp
YW50R2x5cGguZm9udCwgYnVmZmVyLCAwLCAxLCBwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBM
YXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250
RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBq
dXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4g
YWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKG1hdGhW
YXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKSk7
CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCAm
bWF0aFZhcmlhbnRHbHlwaC5nbHlwaCwgJmFkdmFuY2UsIDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRp
b24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBoQXNjZW50KSwgc3R5bGUoKS5mb250Q2FzY2Fk
ZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiB9CiAKIHZvaWQgUmVuZGVy
TWF0aE1MVG9rZW46OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWludEluZm9Gb3JDaGlsZCwgYm9v
bCB1c2VQcmludFJlY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420039</attachid>
            <date>2021-02-11 13:47:16 -0800</date>
            <delta_ts>2021-02-12 12:34:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210211134715.patch</filename>
            <type>text/plain</type>
            <size>38764</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTljYWMxOTA5MWZmZGE3M2FmMzNiOWFlOGMxYTQx
NTA1ZDE1ZjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2luZyBpdCB0YWtlIGEgR2x5cGhCdWZmZXIgaXMgbWlzbGVhZGluZyBiZWNhdXNlIGl0IG9u
bHkgdXNlcyB0aGUgZ2x5cGggYXJyYXkgYW5kIHRoZSBhZHZhbmNlIGFycmF5CisgICAgICAgIGZy
b20gaW5zaWRlIHRoZSBHbHlwaEJ1ZmZlci4gQSBHbHlwaEJ1ZmZlciBhbHNvIGhvbGRzIGEgYnVu
Y2ggb2YgZXh0cmEgZGF0YSBsaWtlIGdseXBoIG9yaWdpbnMgYW5kIGFuCisgICAgICAgIGluaXRp
YWwgYWR2YW5jZS4gR2x5cGhCdWZmZXJzIGludGVybmFsbHkgaGF2ZSBhIGZsYXR0ZW4oKSBmdW5j
dGlvbiB3aGljaCBpbmNvcnBvcmF0ZSB0aGUgb3JpZ2lucyBpbnRvCisgICAgICAgIHRoZSBhZHZh
bmNlcywgYW5kIHRoaXMgZmxhdHRlbigpIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYmVmb3JlIGNhbGxpbmcgZHJhd0dseXBocygpLiBPdXIKKyAgICAgICAgY29kZSBBU1NFUlQo
KXMgdGhpcywgYW5kIGFmdGVyIHRoZSBhc3NlcnRpb24sIHdlIHNob3VsZG4ndCBuZWVkIHRoZSBl
bnRpcmUgR2x5cGhCdWZmZXIgYW55IG1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE9wZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46
OnBhaW50KToKKwogMjAyMS0wMi0xMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU11bRkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJlY3Qg
UlRMIGFwcGVhcmFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
aW5kZXggYTk3YjFkOWEwZjgxZWRiMDE2YjViOWUzYTE4NGYyMTVjZWFkYTE4MS4uOGY3YmNhZTk1
N2M1YzdlMzAyNTU2NTYyY2M1OGUyMjRiMTUxODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMw
LDkgKzMwLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxwYWwvc3Bp
L2NmL0NvcmVUZXh0U1BJLmg+CiAjZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNp
bmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5k
ZXggZDMyMjRhMzBhOTNjZmE0Y2ViMmFkN2U4YWYyNzMwZTg1YjdkNWQzNC4uMzEzNzBjZmJmYTM0
OGRjMzEyNTgwNGE2NDA0Y2ZkZTA3NWQwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogCiAg
ICAgICAgIGlmICgmbmV4dEZvbnREYXRhICE9IGZvbnREYXRhKSB7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkRHJhd0lmTG9hZGluZygqZm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZm
ZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVz
Y3JpcHRpb24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdH
bHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhsYXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBt
X2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkpOwogCiAgICAgICAgICAgICBsYXN0RnJv
bSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0gJm5leHRGb250RGF0YTsKQEAg
LTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgfQogCiAgICAg
aWYgKHNob3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24pKQotICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwg
bGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlw
dGlvbi5mb250U21vb3RoaW5nKCkpOworICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnRE
YXRhLCBnbHlwaEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhs
YXN0RnJvbSksIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlw
dGlvbi5mb250U21vb3RoaW5nKCkpOwogICAgIHBvaW50LnNldFgobmV4dFgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2MGFm
NmYzNWFlNGViNzFhNDAwY2YxMzZhYzgwNjM2ZDdmNjA5YzAwLi4yZGQzZGIwYzQzZTdjODA0NDA1
YTI0NGFhZTcxZDE1ZGNhZjJlYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTExNiw3ICsxMTYsNyBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFp
bnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBXVEY6Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3Ro
aW5nTW9kZSk7CisgICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
dW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkg
Y29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJl
Y3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKaW5kZXggZjRmNjdhMDZjOTBlMDBmMGIz
NGQ5OWM5MTc4MjMyODA0ZmI1NTY1Ni4uZmFiY2RmNjc4Mzk4ZWE2YmQ0MmMxM2M3NDZiNzA2YWY3
OTJkM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXJNZW1iZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXJNZW1iZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlIENHIHBvcnRzIHVz
ZSB0aGUgQ0cgdHlwZXMgZGlyZWN0bHksIHNvIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzIGNhbiBi
ZSBmZWQgZGlyZWN0bHkgaW50byBDVEZvbnRTaGFwZUdseXBocygpLgorLy8gV2hlbiB5b3Ugd3Jp
dGUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZXNlIHR5cGVzLCB1c2UgdGhlIGZ1bmN0aW9u
cyBiZWxvdyEKICNpZiBVU0UoQ0cpCiB1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gQ0dHbHlwaDsK
IHVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IENHU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE4MGM2NGE0
NjEwOWFlNjE5NTc0YmVkODI1YzRhM2Q3MGMzZmEzNjguLjdkOGExNjFhMjIzOWY1MDJlNzYwYWFi
NDg0M2YwOWYxZWNiMGZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02NzcsMTggKzY3NywxNyBAQCBGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJldHVybiBm
b250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyJiBidWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2Vz
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKIHsKLSAgICBBU1NFUlQoYnVmZmVyLmlzRmxhdHRl
bmVkKCkpOwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3R2x5cGhzKGZvbnQsIGJ1ZmZl
ciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgICAgICBt
X2ltcGwtPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2lu
dCwgZm9udFNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRm9u
dENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KCp0aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21v
b3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9t
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODQ2OGRjYzdhNzUzODIwM2U5M2FhMWM1NjY1
NzU4YTAzN2U5MjIxLi5iYjMyYmYzNTk3NDI0YjdlOWFhMGRiY2MxMDk3NGRjOTExMTBlMjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxOCw3ICs0MTgsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9
IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsK
KyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRl
OjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDhmMDRjZDJmNDU4NjI1ZWNhNDRmZDMzNDJm
ZDM0NThjZDI0ZGRjNTYuLjQwNTI2YTU3OTZlZGUwZjA1ODBkYzY4MzgyZTA4MDAyODM4ZDIwNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5RmlsbFBhdHRlcm4oKSA9IDA7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5n
TW9kZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcAppbmRleCBkNjEwODgxMDI2ZWM5YTUwNTEzY2ZmZmM4MjMyYzU1MjU1MWU5NjFkLi4x
Y2M0Y2IyM2M4MDkwZWYyMTE4YjE5ZmUzMTFiMjE2NmM3OWIwYjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBD
YWlybzo6Y2xlYXJSZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3Ro
aW5nKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIGlmICghZm9u
dC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCwxMyArMjQw
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgYXV0byB4T2Zmc2V0ID0gcG9pbnQu
eCgpOwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsKICAgICB7
Ci0gICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSk7Ci0g
ICAgICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7Ci0KKyAg
ICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAgICAgYXV0
byB5T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0RhdGFbaV0s
IHhPZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5cGhzW2ld
LCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ld
LndpZHRoKCk7CiAgICAgICAgICAgICB5T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLmhlaWdodCgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDY5YmQzNTBl
MmJkMDVkYTMwMTA1NjA1NGVjMjk0OGI5NDMxNTRiNjYuLmQ5MDc0MDAyN2Y3Mzk1MmQwOWUyOWJl
NDk2NDkzMjM1MGQ4NDEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3Bw
CmluZGV4IGIzMmY3M2U3MjRjZjhkZmVjOTVlYjBiM2FhZWFkNmUwNzA5ZGE3MTguLmFmZTM3M2I4
NDE4ZjMwMzg5YTQ1YzhmMmMyMzgyODZhZTM5NDBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRl
Q29yZVRleHQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAyMCwgMjAx
NiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR0ZvbnRS
ZW5kZXJpbmdNb2RlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBDR0NvbnRleHRTZXRT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBkb1N1YnBpeGVsUXVhbnRpemF0
aW9uKTsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgY29uc3Qg
YXV0byYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAgICBpZiAoIXBsYXRm
b3JtRGF0YS5zaXplKCkpCkBAIC0yNjAsMjMgKzI2MCwyMyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29u
c3QgRwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNl
dC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1z
LCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBk
b3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgPyAtMSA6IDEpOwotICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQo
c2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRN
YXRyaXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93
VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkK
LSAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0
WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkp
LCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJp
eCk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAgICAgfQogCiAj
aWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKLSAg
ICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNv
bnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJv
bSksIG51bUdseXBocyk7CisgICAgICAgIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFu
Y2VzKHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwog
ICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhw
b2ludCwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVm
ZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICBzaG93
R2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5j
ZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgfQogCiAgICAgaWYgKHN5bnRoZXRpY0Jv
bGRPZmZzZXQpCi0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2lu
dC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAK
ICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQogICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMWYxZGIwY2VlMGI4ZjNj
ZGMxODg1MzdhYjhkM2JiNjlhYzcxNjEzMy4uYTgxZjYzZjQ1OTZlMDM3ZTY1ZmI2YWQwZWJlMzQ0
OTNhODkyODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBleHBsaWNp
dCBEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24p
OwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250
U21vb3RoaW5nTW9kZSk7CiAKICNpZiBVU0UoQ09SRV9URVhUKQogICAgIHZvaWQgcmVjb3JkQmVn
aW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcAppbmRleCA1NjA0MzkyM2U4YTRlYWY5MmQ1NWJhYTU3NDA0NTAzNzA1NDli
NDgzLi4xZWNhNTAzYjVlNDA4ZWZmNWM3NWFhNDkyNmZiZmNiZjI5YWZlZTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
Q29yZVRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2MiwxNiArMzYyLDE3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpy
ZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAg
ICAgbV9vd25lci50cmFuc2xhdGUoMCwgLShyZWN0LnNpemUuaGVpZ2h0ICsgMiAqIHJlY3Qub3Jp
Z2luLnkpKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKIHsKICAgICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKLSAgICAgICAgbV9vd25lci5hcHBl
bmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwg
c21vb3RoaW5nTW9kZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRo
Q2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQs
IHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKG1f
ZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVj
b25zdHJ1Y3QpOworCiAgICAgcHJlcGFyZUludGVybmFsQ29udGV4dChmb250LCBzbW9vdGhpbmdN
b2RlKTsKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29udGV4dCwgZm9u
dCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9k
ZSk7CisgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMobV9pbnRlcm5hbENvbnRleHQsIGZvbnQs
IGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7
CiAgICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVySGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3Bw
CmluZGV4IDM3ZDUzMWQwODg1YTdmNzJjZDUxNzU1NDRiNzI4MDRkNWExNGIxNGIuLmY4MTM4MDlh
MjBjMmI4OTJmYjFmM2Y0OGNmMDdlOTY3MTgwOTliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNv
cmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBv
aW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIuYXBw
ZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMo
ZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQs
IHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2Fj
aGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNt
b290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAK
aW5kZXggYTEwN2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4NjZkOTY5NS4uZTViYjdjYzhl
NjFlNGYwYWJlYmJjN2RiMzRjMWM3MzA4NTdlN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDkgKzQxLDkg
QEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImIG93bmVy
LCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIHsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMs
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZERyYXdHcmFw
aHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGlu
Z01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5n
TW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMxYWUyZDEzMzkzNzVkOWY1NjMw
ZTc2ZDc0My4uY2Q1ZGU4ZGE4NTAxMTViN2ZhNzY3ZGFjZTg5M2UzNDJmZWEzZjg1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zODAsMTcgKzM4MCw5IEBAIERyYXdHbHlw
aHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250KTsKIH0KIAotaW5saW5lIEds
eXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYgZm9u
dCkgY29uc3QKLXsKLSAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFkZChtX2dseXBo
c1tpXSwgZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zmc2V0KTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdH
bHlwaHMoZm9udCwgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihmb250KSwgMCwgbV9nbHlwaHMuc2l6ZSgp
LCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAgIGNvbnRleHQuZHJhd0dseXBo
cyhmb250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXpl
KCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgRHJhd0dseXBo
czo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIxMjA1YTdmZjNhNmE2MzY3ZS4u
YzE2NmYzZGY2YWE4ZTJkNzYwMTZhYjIzM2U5MWE3ZDhjYTZlNWI4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTk1Niw4ICs5NTYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgY29tcHV0ZUJvdW5kcyhjb25zdCBGb250Jik7CiAKLSAgICBHbHlwaEJ1ZmZlciBnZW5l
cmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmKSBjb25zdDsKLQogICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBtX2ZvbnRJZGVudGlmaWVyOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckds
eXBoLCAxMjg+IG1fZ2x5cGhzOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4g
bV9hZHZhbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRl
eCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIzYTNhLi44NTM1YWU4MDRlNTMx
N2JhOWZjMDk3OWRiYWE0ODQ4ZTUxMzBiMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFJlY29yZGVyOjpzZXRNaXRlckxp
bWl0KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgYXBwZW5kPFNldE1pdGVyTGltaXQ+KG1pdGVyTGlt
aXQpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBz
bW9vdGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQ
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX2RyYXdHbHlw
aHNSZWNvcmRlci5kcmF3R2x5cGhzKGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRy
YXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dyYXBoc0l0ZW1X
aXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBn
bHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50
LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3Ro
aW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDY0Zjc4
YWNiNmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLmNkODFmMjE4NmUxNDZjMDE3YTE4
NTg1YmIzOGQ2MjFiM2I4YjA5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4o
KSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2Rl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcAppbmRleCAxOWRmYzlmNGRkOGJmNGM0ZTQ5NjM0MWNhZjdmMjNjMDk0NDQ4Yjli
Li45MzFlNzQ4ZWVmOTlhYzU0YzYyZDkxYzM5OTNjN2U5Y2MzOTU4NjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAt
NDkzLDcgKzQ5Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+
KHJlY3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNt
b290aGluZ01vZGUgZm9udFNtb290aGluZykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlw
aHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhp
bmcpCiB7CiAgICAgc3RydWN0IERyYXdHbHlwaHMgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwg
T3BlcmF0aW9uRGF0YTxDYWlybzo6RmlsbFNvdXJjZSwgQ2Fpcm86OlN0cm9rZVNvdXJjZSwgQ2Fp
cm86OlNoYWRvd1N0YXRlLCBGbG9hdFBvaW50LCBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4s
IGZsb2F0LCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4sIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFn
cywgZmxvYXQsIEZsb2F0U2l6ZSwgQ29sb3IsIEZvbnRTbW9vdGhpbmdNb2RlPiB7CiAgICAgICAg
IHZpcnR1YWwgfkRyYXdHbHlwaHMoKSA9IGRlZmF1bHQ7CkBAIC01MTYsMTMgKzUxNiwxMCBAQCB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGdseQogICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKICAg
ICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4gZ2x5cGhzKG51bUdseXBocyk7CiAgICAgewotICAgICAg
ICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBnbHlwaEJ1ZmZlci5zaXplKCkpOwotICAgICAg
ICBhdXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pOwotICAgICAgICBh
dXRvKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pOwotCisgICAgICAgIEFT
U0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IG51bUdseXBocyk7CiAgICAgICAgIGF1dG8geU9mZnNl
dCA9IHBvaW50LnkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7
ICsraSkgewotICAgICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNEYXRhW2ldLCB4T2Zmc2V0
LCB5T2Zmc2V0IH07CisgICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc1tpXSwgeE9mZnNl
dCwgeU9mZnNldCB9OwogICAgICAgICAgICAgeE9mZnNldCArPSBhZHZhbmNlc1tpXS53aWR0aCgp
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGQ5YjE5ZjJlYmYwNGIwMTlmZGJjYWZmYTc1MWI3
NDY2ODcxMGU2ZjEuLjhmZmYxODRlYjIyYTBhMzY1MjA1YTA0M2VhNTZkNTJhZDljYjYyNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6Rm9udFNt
b290aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBXZWJDb3Jl
OjpGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNv
cmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCmluZGV4IGM3NWYxODMzMmVm
YmM5YjkzNWI5OWQ0ZmM3MmU5NTU0ZjQyOTQzNTQuLjFkMjg3NzY2NjIxZWMzZGVlNDQ5YjgwNGUz
NjM4NWE2M2JiN2U5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvTWF0aE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L01hdGhPcGVyYXRvci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTUyNCw5ICs1MjQsOSBAQCBMYXlvdXRSZWN0IE1hdGhPcGVyYXRv
cjo6cGFpbnRHbHlwaChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywg
YwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQo
KSk7CiAgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAotICAgIEdseXBoQnVm
ZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsICpkYXRhLmZvbnQsIGFkdmFu
Y2VXaWR0aEZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpk
YXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRE
ZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1
c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBh
ZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWR2YW5j
ZVdpZHRoRm9yR2x5cGgoZGF0YSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRh
dGEuZm9udCwgJmRhdGEuZ2x5cGgsICZhZHZhbmNlLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNj
YWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKIAogICAgIHJldHVybiBn
bHlwaFBhaW50UmVjdDsKIH0KQEAgLTcyOCwxMiArNzI4LDEyIEBAIHZvaWQgTWF0aE9wZXJhdG9y
OjpwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0CiAgICAgaWYgKG1fc3RyZXRjaFR5cGUgPT0gU3RyZXRjaFR5cGU6OlNpemVWYXJpYW50
KQogICAgICAgICBnbHlwaERhdGEuZ2x5cGggPSBtX3ZhcmlhbnRHbHlwaDsKIAotICAgIEdseXBo
QnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGdseXBoRGF0YS5nbHlwaCwgKmdseXBoRGF0
YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChnbHlwaERhdGEpKTsKICAgICBMYXlvdXRQb2lu
dCBvcGVyYXRvclRvcExlZnQgPSBwYWludE9mZnNldDsKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3Vu
ZHMgPSBib3VuZHNGb3JHbHlwaChnbHlwaERhdGEpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9y
T3JpZ2luIHsgb3BlcmF0b3JUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdChvcGVyYXRvclRvcExlZnQu
eSgpIC0gZ2x5cGhCb3VuZHMueSgpKSB9OwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ds
eXBocygqZ2x5cGhEYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3BlcmF0b3JPcmlnaW4sIHN0eWxl
LmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICAv
LyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2Ug
bmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBo
QnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlwaChnbHlwaERhdGEpKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmdseXBoRGF0YS5mb250LCAmZ2x5cGhEYXRhLmds
eXBoLCAmYWR2YW5jZSwgMSwgb3BlcmF0b3JPcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9u
dERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCBk
NTNkNmM0YmIyZjJhY2EwMDAzNjhjMDU3YjMwNWViNDk4N2MzNDdkLi43ZWZhZTRkMGZiOWI3NzVl
Njk3OGY1MDIyODk2NmY3NTc5YTMzODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgRnLDqWTDqXJpYyBXYW5nIChmcmVkLndhbmdAZnJlZS5m
cikuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMu
TC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjA2LDEwICs2MDYsMTAg
QEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVy
dHlDb2xvcikpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZlci5hZGQobWF0
aFZhcmlhbnRHbHlwaC5nbHlwaCwgKm1hdGhWYXJpYW50R2x5cGguZm9udCwgbWF0aFZhcmlhbnRH
bHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsKICAgICBM
YXlvdXRVbml0IGdseXBoQXNjZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKC1tYXRoVmFy
aWFudEdseXBoLmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLnko
KSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9u
dCwgYnVmZmVyLCAwLCAxLCBwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgw
X2x1LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24o
KS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcg
YSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAg
ICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKG1hdGhWYXJpYW50R2x5cGgu
Zm9udC0+d2lkdGhGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKSk7CisgICAgaW5mby5j
b250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCAmbWF0aFZhcmlhbnRH
bHlwaC5nbHlwaCwgJmFkdmFuY2UsIDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91
dFBvaW50KDBfbHUsIGdseXBoQXNjZW50KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNj
cmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46
OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWludEluZm9Gb3JDaGlsZCwgYm9vbCB1c2VQcmludFJl
Y3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420045</attachid>
            <date>2021-02-11 14:27:04 -0800</date>
            <delta_ts>2021-02-11 15:16:00 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211142703.patch</filename>
            <type>text/plain</type>
            <size>38906</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTVkOWEyMGUyOWZiMDdiZTQ4MWYzOTU2M2VhNmU0
NjQ0OTE0MmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpw
YWludCk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJU
TCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmlu
ZGV4IGE5N2IxZDlhMGY4MWVkYjAxNmI1YjllM2ExODRmMjE1Y2VhZGExODEuLjhmN2JjYWU5NTdj
NWM3ZTMwMjU1NjU2MmNjNThlMjI0YjE1MTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw5
ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQuLjMxMzcwY2ZiZmEzNDhk
YzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKIAogICAg
ICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVy
LCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2Ny
aXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5
cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9m
b250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0Rm9udERhdGE7CkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIH0KIAogICAgIGlm
IChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0
YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRYKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjBhZjZm
MzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2RiMGM0M2U3YzgwNDQwNWEy
NDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3YTA2YzkwZTAwZjBiMzRk
OTljOTE3ODIzMjgwNGZiNTU2NTYuLmZhYmNkZjY3ODM5OGVhNmJkNDJjMTNjNzQ2YjcwNmFmNzky
ZDNlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00
MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZSBDRyBwb3J0cyB1c2Ug
dGhlIENHIHR5cGVzIGRpcmVjdGx5LCBzbyBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcyBjYW4gYmUg
ZmVkIGRpcmVjdGx5IGludG8gQ1RGb250U2hhcGVHbHlwaHMoKS4KKy8vIFdoZW4geW91IHdyaXRl
IGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0eXBlcywgdXNlIHRoZSBmdW5jdGlvbnMg
YmVsb3chCiAjaWYgVVNFKENHKQogdXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IENHR2x5cGg7CiB1
c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBDR1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhODBjNjRhNDYx
MDlhZTYxOTU3NGJlZDgyNWM0YTNkNzBjM2ZhMzY4Li43ZDhhMTYxYTIyMzlmNTAyZTc2MGFhYjQ4
NDNmMDlmMWVjYjBmY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
Njc3LDE4ICs2NzcsMTcgQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICByZXR1cm4gZm9u
dC5kcmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ciYgYnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGlu
Z01vZGUgZm9udFNtb290aGluZ01vZGUpCiB7Ci0gICAgQVNTRVJUKGJ1ZmZlci5pc0ZsYXR0ZW5l
ZCgpKTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBidWZmZXIs
IGZyb20sIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9p
bXBsLT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQs
IGZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKCp0aGlzLCBmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygq
dGhpcywgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290
aGluZ01vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3Mo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlv
bmFsPHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDg0NjhkY2M3YTc1MzgyMDNlOTNhYTFjNTY2NTc1
OGEwMzdlOTIyMS4uYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkg
VG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MTgsNyArNDE4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAw
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7Cisg
ICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3Mo
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6
Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnRO
b3RSZWFkeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4ZjA0Y2QyZjQ1ODYyNWVjYTQ0ZmQzMzQyZmQz
NDU4Y2QyNGRkYzU2Li40MDUyNmE1Nzk2ZWRlMGYwNTgwZGM2ODM4MmUwODAwMjgzOGQyMDUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBs
eUZpbGxQYXR0ZXJuKCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5n
TW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAKaW5kZXggZDYxMDg4MTAyNmVjOWE1MDUxM2NmZmZjODIzMmM1NTI1NTFlOTYxZC4uMWNj
NGNiMjNjODA5MGVmMjExOGIxOWZlMzExYjIxNjZjNzliMGIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgQ2Fp
cm86OmNsZWFyUmVjdChtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGlu
ZykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZykKIHsKICAgICBpZiAoIWZvbnQu
cGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsMTMgKzI0MCwx
MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIGF1dG8geE9mZnNldCA9IHBvaW50Lngo
KTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4gZ2x5cGhzKG51bUdseXBocyk7CiAgICAgewot
ICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBnbHlwaEJ1ZmZlci5zaXplKCkpOwot
ICAgICAgICBhdXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pOwotICAg
ICAgICBhdXRvKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pOwotCisgICAg
ICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IG51bUdseXBocyk7CiAgICAgICAgIGF1dG8g
eU9mZnNldCA9IHBvaW50LnkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1H
bHlwaHM7ICsraSkgewotICAgICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNEYXRhW2ldLCB4
T2Zmc2V0LCB5T2Zmc2V0IH07CisgICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc1tpXSwg
eE9mZnNldCwgeU9mZnNldCB9OwogICAgICAgICAgICAgeE9mZnNldCArPSBhZHZhbmNlc1tpXS53
aWR0aCgpOwogICAgICAgICAgICAgeU9mZnNldCArPSBhZHZhbmNlc1tpXS5oZWlnaHQoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCA2OWJkMzUwZTJi
ZDA1ZGEzMDEwNTYwNTRlYzI5NDhiOTQzMTU0YjY2Li5kOTA3NDAwMjdmNzM5NTJkMDllMjliZTQ5
NjQ5MzIzNTBkODQxMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhp
bmdNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcApp
bmRleCBiMzJmNzNlNzI0Y2Y4ZGZlYzk1ZWIwYjNhYWVhZDZlMDcwOWRhNzE4Li5hZmUzNzNiODQx
OGYzMDM4OWE0NWM4ZjJjMjM4Mjg2YWUzOTQwYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNv
cmVUZXh0LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LTIwMjAsIDIwMTYg
QXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dGb250UmVu
ZGVyaW5nTW9kZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgQ0dDb250ZXh0U2V0U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgZG9TdWJwaXhlbFF1YW50aXphdGlv
bik7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGNvbnN0IGF1
dG8mIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9y
bURhdGEuc2l6ZSgpKQpAQCAtMjYwLDIzICsyNjAsMjMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEcKICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQu
d2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3Jtcywg
dGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93
biBpcyBuZWdhdGl2ZS4KICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBz
aGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
ID8gLTEgOiAxKTsKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNo
YWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5
cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0
cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1Rl
eHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVt
R2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCi0g
ICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgg
KyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5
cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwg
Zm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgp
OwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogI2lm
IEVOQUJMRShMRVRURVJQUkVTUykKICAgICBpZiAodXNlTGV0dGVycHJlc3NFZmZlY3QpCi0gICAg
ICAgIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjb250
ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20p
LCBudW1HbHlwaHMpOworICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNl
cyhwb2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKICAg
ICBlbHNlCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9p
bnQsIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhwb2ludCwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2Vz
LCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogICAgIH0KIAogICAgIGlmIChzeW50aGV0aWNCb2xk
T2Zmc2V0KQotICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQu
eCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0
UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwg
Y2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOwogCiAg
ICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhz
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDFmMWRiMGNlZTBiOGYzY2Rj
MTg4NTM3YWI4ZDNiYjY5YWM3MTYxMzMuLmE4MWY2M2Y0NTk2ZTAzN2U2NWZiNmFkMGViZTM0NDkz
YTg5Mjg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgZXhwbGljaXQg
RHJhd0dseXBoc1JlY29yZGVyKFJlY29yZGVyJiwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKTsK
IAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNt
b290aGluZ01vZGUpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkKICAgICB2b2lkIHJlY29yZEJlZ2lu
TGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIENHUmVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKaW5kZXggNTYwNDM5MjNlOGE0ZWFmOTJkNTViYWE1NzQwNDUwMzcwNTQ5YjQ4
My4uMWVjYTUwM2I1ZTQwOGVmZjVjNzVhYTQ5MjZmYmZjYmYyOWFmZWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNjIsMTYgKzM2MiwxNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVj
b3JkRHJhd0ltYWdlKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogICAg
IG1fb3duZXIudHJhbnNsYXRlKDAsIC0ocmVjdC5zaXplLmhlaWdodCArIDIgKiByZWN0Lm9yaWdp
bi55KSk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7Ci0gICAgICAgIG1fb3duZXIuYXBwZW5k
RHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNt
b290aGluZ01vZGUpOworICAgICAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENh
Y2hlZEZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChtX2Ry
YXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29u
c3RydWN0KTsKKwogICAgIHByZXBhcmVJbnRlcm5hbENvbnRleHQoZm9udCwgc21vb3RoaW5nTW9k
ZSk7Ci0gICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMobV9pbnRlcm5hbENvbnRleHQsIGZvbnQs
IGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUp
OworICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJuYWxDb250ZXh0LCBmb250LCBn
bHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwog
ICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApp
bmRleCAzN2Q1MzFkMDg4NWE3ZjcyY2Q1MTc1NTQ0YjcyODA0ZDVhMTRiMTRiLi5mODEzODA5YTIw
YzJiODkyZmIxZjNmNDhjZjA3ZTk2NzE4MDk5YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDkgKzQxLDkgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3Jk
ZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIHsKIH0KIAotdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUp
Cit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVu
ZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZy
b20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hl
ZEZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9v
dGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmlu
ZGV4IGExMDdmZjgyY2FiY2EwODJiNjhiZTRlNmRkOGM4OGY3ODY2ZDk2OTUuLmU1YmI3Y2M4ZTYx
ZTRmMGFiZWJiYzdkYjM0YzFjNzMwODU3ZTdkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBA
IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwg
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVy
OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhz
SXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdN
b2RlKTsKKyAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGluZ01v
ZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IDIxM2RiOWM4Y2Y0MmVjMWFlMmQxMzM5Mzc1ZDlmNTYzMGU3
NmQ3NDMuLmNkNWRlOGRhODUwMTE1YjdmYTc2N2RhY2U4OTNlMzQyZmVhM2Y4NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgwLDE3ICszODAsOSBAQCBEcmF3R2x5cGhz
OjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgRwogICAgIGNvbXB1dGVCb3VuZHMoZm9udCk7CiB9CiAKLWlubGluZSBHbHlw
aEJ1ZmZlciBEcmF3R2x5cGhzOjpnZW5lcmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmIGZvbnQp
IGNvbnN0Ci17Ci0gICAgR2x5cGhCdWZmZXIgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9nbHlwaHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlc3VsdC5hZGQobV9nbHlwaHNb
aV0sIGZvbnQsIG1fYWR2YW5jZXNbaV0sIEdseXBoQnVmZmVyOjpub09mZnNldCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBEcmF3R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3R2x5
cGhzKGZvbnQsIGdlbmVyYXRlR2x5cGhCdWZmZXIoZm9udCksIDAsIG1fZ2x5cGhzLnNpemUoKSwg
YW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBjb250ZXh0LmRyYXdHbHlwaHMo
Zm9udCwgbV9nbHlwaHMuZGF0YSgpLCBtX2FkdmFuY2VzLmRhdGEoKSwgbV9nbHlwaHMuc2l6ZSgp
LCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOwogfQogCiB2b2lkIERyYXdHbHlwaHM6
OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCmluZGV4IDRjZmJkODliMDQ2NTk1ZjI4MWQ0MWUyMTIwNWE3ZmYzYTZhNjM2N2UuLmMx
NjZmM2RmNmFhOGUyZDc2MDE2YWIyMzNlOTFhN2Q4Y2E2ZTViOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05NTYsOCArOTU2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYpOwogCi0gICAgR2x5cGhCdWZmZXIgZ2VuZXJh
dGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JikgY29uc3Q7Ci0KICAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9mb250SWRlbnRpZmllcjsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlw
aCwgMTI4PiBtX2dseXBoczsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+IG1f
YWR2YW5jZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NGNkYzNiMGFlY2M5NGRjYjE2NjZmMDk5Mjk0MTY2NTE3MjRiM2EzYS4uODUzNWFlODA0ZTUzMTdi
YTlmYzA5NzlkYmFhNDg0OGU1MTMwYjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCBSZWNvcmRlcjo6c2V0TWl0ZXJMaW1p
dChmbG9hdCBtaXRlckxpbWl0KQogICAgIGFwcGVuZDxTZXRNaXRlckxpbWl0PihtaXRlckxpbWl0
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21v
b3RoaW5nTW9kZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
IGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgbV9kcmF3R2x5cGhz
UmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBz
dGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBtX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3
R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0
aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA2NGY3OGFj
YjZjNDk2Mzk4NTI2NmQyYzQzNTcxZWI2OTQ0NWNlMDNjLi5jZDgxZjIxODZlMTQ2YzAxN2ExODU4
NWJiMzhkNjIxYjNiOGIwOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBhcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
Y291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKaW5kZXggMTlkZmM5ZjRkZDhiZjRjNGU0OTYzNDFjYWY3ZjIzYzA5NDQ0OGI5Yi4u
OTMxZTc0OGVlZjk5YWM1NGM2MmQ5MWMzOTkzYzdlOWNjMzk1ODY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTQ5
Myw3ICs0OTMsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xlYXJSZWN0Pihy
ZWN0KSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5n
KQogewogICAgIHN0cnVjdCBEcmF3R2x5cGhzIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9w
ZXJhdGlvbkRhdGE8Q2Fpcm86OkZpbGxTb3VyY2UsIENhaXJvOjpTdHJva2VTb3VyY2UsIENhaXJv
OjpTaGFkb3dTdGF0ZSwgRmxvYXRQb2ludCwgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+LCBm
bG9hdCwgVmVjdG9yPGNhaXJvX2dseXBoX3Q+LCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3Ms
IGZsb2F0LCBGbG9hdFNpemUsIENvbG9yLCBGb250U21vb3RoaW5nTW9kZT4gewogICAgICAgICB2
aXJ0dWFsIH5EcmF3R2x5cGhzKCkgPSBkZWZhdWx0OwpAQCAtNTE2LDEzICs1MTYsMTAgQEAgdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHkKICAgICBhdXRvIHhPZmZzZXQgPSBwb2ludC54KCk7CiAgICAg
VmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1HbHlwaHMpOwogICAgIHsKLSAgICAgICAg
QVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
YXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKTsKLSAgICAgICAgYXV0
byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKTsKLQorICAgICAgICBBU1NF
UlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMpOwogICAgICAgICBhdXRvIHlPZmZzZXQg
PSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyAr
K2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5cGhzRGF0YVtpXSwgeE9mZnNldCwg
eU9mZnNldCB9OworICAgICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNbaV0sIHhPZmZzZXQs
IHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQgKz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkOWIxOWYyZWJmMDRiMDE5ZmRiY2FmZmE3NTFiNzQ2
Njg3MTBlNmYxLi42NGIyZDc4MmEwMTQ3MTMyMGVkMjE5NWE0ZTZhMTRmYTRjNTdlODNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR2x5cGhCdWZm
ZXJNZW1iZXJzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUg
Ik5pY29zaWFQYWludGluZ09wZXJhdGlvbi5oIgogCkBAIC02Miw3ICs2Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBX
ZWJDb3JlOjpHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
TWF0aE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9w
ZXJhdG9yLmNwcAppbmRleCBjNzVmMTgzMzJlZmJjOWI5MzViOTlkNGZjNzJlOTU1NGY0Mjk0MzU0
Li4xZDI4Nzc2NjYyMWVjM2RlZTQ0OWI4MDRlMzYzODVhNjNiYjdlOWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MjQsOSArNTI0
LDkgQEAgTGF5b3V0UmVjdCBNYXRoT3BlcmF0b3I6OnBhaW50R2x5cGgoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBQYWludEluZm8mIGluZm8sIGMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIGluZm8uY29udGV4dCgpLmNsaXAo
Y2xpcEJvdW5kcyk7CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChk
YXRhLmdseXBoLCAqZGF0YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChkYXRhKSk7Ci0gICAg
aW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdp
biwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkp
OworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdo
eSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBt
YWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpkYXRhLmZvbnQsICZkYXRhLmdseXBoLCAmYWR2YW5j
ZSwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
bW9vdGhpbmcoKSk7CiAKICAgICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7CiB9CkBAIC03MjgsMTIg
KzcyOCwxMiBAQCB2b2lkIE1hdGhPcGVyYXRvcjo6cGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dAogICAgIGlmIChtX3N0cmV0Y2hUeXBl
ID09IFN0cmV0Y2hUeXBlOjpTaXplVmFyaWFudCkKICAgICAgICAgZ2x5cGhEYXRhLmdseXBoID0g
bV92YXJpYW50R2x5cGg7CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFk
ZChnbHlwaERhdGEuZ2x5cGgsICpnbHlwaERhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgo
Z2x5cGhEYXRhKSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gcGFpbnRPZmZz
ZXQ7CiAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgoZ2x5cGhEYXRh
KTsKICAgICBMYXlvdXRQb2ludCBvcGVyYXRvck9yaWdpbiB7IG9wZXJhdG9yVG9wTGVmdC54KCks
IExheW91dFVuaXQob3BlcmF0b3JUb3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnkoKSkgfTsKLSAg
ICBwYWludEluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmdseXBoRGF0YS5mb250LCBidWZmZXIs
IDAsIDEsIG9wZXJhdG9yT3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2lu
ZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPwor
ICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWR2YW5jZVdpZHRoRm9y
R2x5cGgoZ2x5cGhEYXRhKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpn
bHlwaERhdGEuZm9udCwgJmdseXBoRGF0YS5nbHlwaCwgJmFkdmFuY2UsIDEsIG9wZXJhdG9yT3Jp
Z2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmco
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZDUzZDZjNGJiMmYyYWNhMDAwMzY4YzA1N2IzMDVl
YjQ5ODdjMzQ3ZC4uN2VmYWU0ZDBmYjliNzc1ZTY5NzhmNTAyMjg5NjZmNzU3OWEzMzgxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IEZyw6lk
w6lyaWMgV2FuZyAoZnJlZC53YW5nQGZyZWUuZnIpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTYwNiwxMCArNjA2LDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBh
aW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAg
ICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpKTsKIAotICAgIEdseXBoQnVmZmVy
IGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgsICptYXRoVmFy
aWFudEdseXBoLmZvbnQsIG1hdGhWYXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRo
VmFyaWFudEdseXBoLmdseXBoKSk7CiAgICAgTGF5b3V0VW5pdCBnbHlwaEFzY2VudCA9IHN0YXRp
Y19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlw
aChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5kcmF3
R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQsIGJ1ZmZlciwgMCwgMSwgcGFpbnRPZmZzZXQg
KyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZv
bnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBG
SVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVl
ZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVm
ZmVyQWR2YW5jZShtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlh
bnRHbHlwaC5nbHlwaCkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJp
YW50R2x5cGguZm9udCwgJm1hdGhWYXJpYW50R2x5cGguZ2x5cGgsICZhZHZhbmNlLCAxLCBwYWlu
dE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwog
fQogCiB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgcGFpbnRJ
bmZvRm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQo=
</data>
<flag name="commit-queue"
          id="438452"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420048</attachid>
            <date>2021-02-11 14:59:01 -0800</date>
            <delta_ts>2021-02-11 16:47:42 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211145900.patch</filename>
            <type>text/plain</type>
            <size>38892</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTVkOWEyMGUyOWZiMDdiZTQ4MWYzOTU2M2VhNmU0
NjQ0OTE0MmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpw
YWludCk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJU
TCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmlu
ZGV4IGE5N2IxZDlhMGY4MWVkYjAxNmI1YjllM2ExODRmMjE1Y2VhZGExODEuLjhmN2JjYWU5NTdj
NWM3ZTMwMjU1NjU2MmNjNThlMjI0YjE1MTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw5
ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQuLjMxMzcwY2ZiZmEzNDhk
YzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKIAogICAg
ICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVy
LCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2Ny
aXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5
cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9m
b250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0Rm9udERhdGE7CkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIH0KIAogICAgIGlm
IChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0
YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRYKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjBhZjZm
MzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2RiMGM0M2U3YzgwNDQwNWEy
NDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3YTA2YzkwZTAwZjBiMzRk
OTljOTE3ODIzMjgwNGZiNTU2NTYuLjk3MjNkMWNmMjU4NDEyODAyZWNmYTE4OWQ3MzRlZGIyZWY5
MzNmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OSw2ICsyOSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBU
aGUgQ0cgcG9ydHMgdXNlIHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhl
c2UgdHlwZXMgY2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisv
LyBXaGVuIHlvdSB3cml0ZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgdHlwZXMsIHVz
ZSB0aGUgZnVuY3Rpb25zIGJlbG93IQogI2lmIFVTRShDRykKIHVzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSBDR0dseXBoOwogdXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYTgwYzY0YTQ2MTA5YWU2MTk1NzRiZWQ4MjVjNGEzZDcwYzNmYTM2OC4uN2Q4YTE2MWEy
MjM5ZjUwMmU3NjBhYWI0ODQzZjA5ZjFlY2IwZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY3NywxOCArNjc3LDE3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
CiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290
aGluZ01vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewotICAgIEFTU0VSVChi
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdHbHlw
aHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9k
ZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgYnVmZmVyLCBm
cm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4NDY4ZGNjN2E3NTM4
MjAzZTkzYWExYzU2NjU3NThhMDM3ZTkyMjEuLmJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0
ZGM5MTExMGUyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNt
b290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGYwNGNkMmY0NTg2
MjVlY2E0NGZkMzM0MmZkMzQ1OGNkMjRkZGM1Ni4uNDA1MjZhNTc5NmVkZTBmMDU4MGRjNjgzODJl
MDgwMDI4MzhkMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGQ2MTA4ODEwMjZlYzlhNTA1MTNjZmZmYzgyMzJj
NTUyNTUxZTk2MWQuLjFjYzRjYjIzYzgwOTBlZjIxMThiMTlmZTMxMWIyMTY2Yzc5YjBiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIENhaXJvOjpjbGVhclJlY3QobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCiB7
CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQwLDEzICsyNDAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBhdXRvIHhP
ZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1H
bHlwaHMpOwogICAgIHsKLSAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgYXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKTsKLSAgICAgICAgYXV0byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhmcm9tKTsKLQorICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMp
OwogICAgICAgICBhdXRvIHlPZmZzZXQgPSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsg
Z2x5cGhzRGF0YVtpXSwgeE9mZnNldCwgeU9mZnNldCB9OworICAgICAgICAgICAgZ2x5cGhzW2ld
ID0geyBnbHlwaHNbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQg
Kz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gYWR2YW5jZXNb
aV0uaGVpZ2h0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
aW5kZXggNjliZDM1MGUyYmQwNWRhMzAxMDU2MDU0ZWMyOTQ4Yjk0MzE1NGI2Ni4uZDkwNzQwMDI3
ZjczOTUyZDA5ZTI5YmU0OTY0OTMyMzUwZDg0MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2Nh
ZGVDb3JlVGV4dC5jcHAKaW5kZXggYjMyZjczZTcyNGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlk
YTcxOC4uYWZlMzczYjg0MThmMzAzODlhNDVjOGYyYzIzODI4NmFlMzk0MGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNi0yMDIwLCAyMDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2
b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3Vi
cGl4ZWxRdWFudGl6YXRpb24pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKICAgICBjb25zdCBhdXRvJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwog
ICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUoKSkKQEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9y
aW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUg
ZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZ
ID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0
aWNCb2xkT2Zmc2V0KQotICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBv
aW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9y
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnBy
ZXNzRWZmZWN0KQotICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhw
b2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRH
bHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocyk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBp
ZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBv
aW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQu
c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAx
ZjFkYjBjZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdl
NjVmYjZhZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbik7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAg
dm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBD
R1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFh
NTc0MDQ1MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYyLDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQg
KyAyICogcmVjdC5vcmlnaW4ueSkpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAg
ICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3
R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29u
c3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisKICAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZv
bnQsIHNtb290aGluZ01vZGUpOwotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJu
YWxDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFs
Q29udGV4dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJIYXJmQnV6ei5jcHAKaW5kZXggMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0
YjE0Yi4uZjgxMzgwOWEyMGMyYjg5MmZiMWYzZjQ4Y2YwN2U5NjcxODA5OWJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9
CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0g
ICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBo
QnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3Jh
cGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcAppbmRleCBhMTA3ZmY4MmNhYmNhMDgyYjY4YmU0ZTZkZDhjODhmNzg2NmQ5
Njk1Li5lNWJiN2NjOGU2MWU0ZjBhYmViYmM3ZGIzNGMxYzczMDg1N2U3ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihS
ZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIu
YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9p
bnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdp
dGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjljOGNmNDJlYzFhZTJk
MTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThkYTg1MDExNWI3ZmE3NjdkYWNlODkzZTM0MmZl
YTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4MCwxNyArMzgw
LDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRzKGZvbnQpOwog
fQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihj
b25zdCBGb250JiBmb250KSBjb25zdAotewotICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1
bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9P
ZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRHJhd0dseXBoczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAogewotICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgY29u
dGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCks
IG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVh
N2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3NjAxNmFiMjMzZTkxYTdkOGNhNmU1YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTU2LDggKzk1Niw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIEds
eXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwotCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7CiAgICAgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVy
QWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2Eu
Ljg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4NDhlNTEzMGIwODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgUmVjb3Jk
ZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKICAgICBhcHBlbmQ8U2V0TWl0ZXJM
aW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZy
b20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9kcmF3R2x5
cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uY2Q4MWYy
MTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhiMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBw
bHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE5ZGZjOWY0ZGQ4YmY0YzRlNDk2MzQxY2Fm
N2YyM2MwOTQ0NDhiOWIuLjkzMWU3NDhlZWY5OWFjNTRjNjJkOTFjMzk5M2M3ZTljYzM5NTg2NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQordm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBhaW50
aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENhaXJvOjpGaWxsU291cmNlLCBDYWlybzo6U3Ry
b2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUsIEZsb2F0UG9pbnQsIFJlZlB0cjxjYWlyb19z
Y2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3RvcjxjYWlyb19nbHlwaF90PiwgZmxvYXQsIFRleHRE
cmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRTaXplLCBDb2xvciwgRm9udFNtb290aGluZ01v
ZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0dseXBocygpID0gZGVmYXVsdDsKQEAgLTUxNiwx
MyArNTE2LDEwIEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5CiAgICAgYXV0byB4T2Zmc2V0ID0g
cG9pbnQueCgpOwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSk7Ci0gICAgICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7
Ci0KKyAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAg
ICAgYXV0byB5T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0Rh
dGFbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5
cGhzW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFu
Y2VzW2ldLndpZHRoKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZDliMTlmMmViZjA0YjAx
OWZkYmNhZmZhNzUxYjc0NjY4NzEwZTZmMS4uOGZmZjE4NGViMjJhMGEzNjUyMDVhMDQzZWE1NmQ1
MmFkOWNiNjI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Ry
b2tlRWxsaXBzZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsZWFyUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZHJhd0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhC
dWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBX
ZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhz
KGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiwgV2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5k
ZXggYzc1ZjE4MzMyZWZiYzliOTM1Yjk5ZDRmYzcyZTk1NTRmNDI5NDM1NC4uMWQyODc3NjY2MjFl
YzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3ZTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTI0LDkgKzUyNCw5IEBAIExheW91dFJl
Y3QgTWF0aE9wZXJhdG9yOjpwYWludEdseXBoKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFp
bnRJbmZvJiBpbmZvLCBjCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwog
Ci0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZlci5hZGQoZGF0YS5nbHlwaCwgKmRh
dGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSkpOwotICAgIGluZm8uY29udGV4dCgp
LmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhN
RTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0
byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVy
QWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlwaChkYXRhKSk7CisgICAgaW5mby5jb250ZXh0KCku
ZHJhd0dseXBocygqZGF0YS5mb250LCAmZGF0YS5nbHlwaCwgJmFkdmFuY2UsIDEsIG9yaWdpbiwg
c3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwog
CiAgICAgcmV0dXJuIGdseXBoUGFpbnRSZWN0OwogfQpAQCAtNzI4LDEyICs3MjgsMTIgQEAgdm9p
ZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAobV9zdHJldGNoVHlwZSA9PSBTdHJldGNoVHlw
ZTo6U2l6ZVZhcmlhbnQpCiAgICAgICAgIGdseXBoRGF0YS5nbHlwaCA9IG1fdmFyaWFudEdseXBo
OwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZlci5hZGQoZ2x5cGhEYXRhLmds
eXBoLCAqZ2x5cGhEYXRhLmZvbnQsIGFkdmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOwog
ICAgIExheW91dFBvaW50IG9wZXJhdG9yVG9wTGVmdCA9IHBhaW50T2Zmc2V0OwogICAgIEZsb2F0
UmVjdCBnbHlwaEJvdW5kcyA9IGJvdW5kc0ZvckdseXBoKGdseXBoRGF0YSk7CiAgICAgTGF5b3V0
UG9pbnQgb3BlcmF0b3JPcmlnaW4geyBvcGVyYXRvclRvcExlZnQueCgpLCBMYXlvdXRVbml0KG9w
ZXJhdG9yVG9wTGVmdC55KCkgLSBnbHlwaEJvdW5kcy55KCkpIH07Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3R2x5cGhzKCpnbHlwaERhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRv
ck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3Ro
aW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5
cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFu
Y2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0
YSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQs
ICZnbHlwaERhdGEuZ2x5cGgsICZhZHZhbmNlLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9u
dENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9r
ZW4uY3BwCmluZGV4IGQ1M2Q2YzRiYjJmMmFjYTAwMDM2OGMwNTdiMzA1ZWI0OTg3YzM0N2QuLjdl
ZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1NzlhMzM4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBGcsOpZMOpcmljIFdhbmcgKGZy
ZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MDYsMTAgKzYwNiwxMCBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjpwYWludChQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIGluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAg
YnVmZmVyLmFkZChtYXRoVmFyaWFudEdseXBoLmdseXBoLCAqbWF0aFZhcmlhbnRHbHlwaC5mb250
LCBtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5n
bHlwaCkpOwogICAgIExheW91dFVuaXQgZ2x5cGhBc2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGxy
b3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRH
bHlwaC5nbHlwaCkueSgpKSk7Ci0gICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZh
cmlhbnRHbHlwaC5mb250LCBidWZmZXIsIDAsIDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSAr
IExheW91dFBvaW50KDBfbHUsIGdseXBoQXNjZW50KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZv
bnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3Jl
IGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBh
biBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UobWF0
aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgp
KTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQs
ICZtYXRoVmFyaWFudEdseXBoLmdseXBoLCAmYWR2YW5jZSwgMSwgcGFpbnRPZmZzZXQgKyBsb2Nh
dGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNj
YWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKIH0KIAogdm9pZCBSZW5k
ZXJNYXRoTUxUb2tlbjo6cGFpbnRDaGlsZHJlbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIHBhaW50SW5mb0ZvckNoaWxkLCBi
b29sIHVzZVByaW50UmVjdCkK
</data>
<flag name="commit-queue"
          id="438454"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420066</attachid>
            <date>2021-02-11 16:47:22 -0800</date>
            <delta_ts>2021-02-11 20:47:01 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211164721.patch</filename>
            <type>text/plain</type>
            <size>39036</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTVkOWEyMGUyOWZiMDdiZTQ4MWYzOTU2M2VhNmU0
NjQ0OTE0MmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpw
YWludCk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJU
TCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmlu
ZGV4IGE5N2IxZDlhMGY4MWVkYjAxNmI1YjllM2ExODRmMjE1Y2VhZGExODEuLjhmN2JjYWU5NTdj
NWM3ZTMwMjU1NjU2MmNjNThlMjI0YjE1MTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw5
ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQuLjMxMzcwY2ZiZmEzNDhk
YzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKIAogICAg
ICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVy
LCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2Ny
aXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5
cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9m
b250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0Rm9udERhdGE7CkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIH0KIAogICAgIGlm
IChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0
YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRYKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjBhZjZm
MzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2RiMGM0M2U3YzgwNDQwNWEy
NDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3YTA2YzkwZTAwZjBiMzRk
OTljOTE3ODIzMjgwNGZiNTU2NTYuLjk3MjNkMWNmMjU4NDEyODAyZWNmYTE4OWQ3MzRlZGIyZWY5
MzNmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OSw2ICsyOSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBU
aGUgQ0cgcG9ydHMgdXNlIHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhl
c2UgdHlwZXMgY2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisv
LyBXaGVuIHlvdSB3cml0ZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgdHlwZXMsIHVz
ZSB0aGUgZnVuY3Rpb25zIGJlbG93IQogI2lmIFVTRShDRykKIHVzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSBDR0dseXBoOwogdXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYTgwYzY0YTQ2MTA5YWU2MTk1NzRiZWQ4MjVjNGEzZDcwYzNmYTM2OC4uN2Q4YTE2MWEy
MjM5ZjUwMmU3NjBhYWI0ODQzZjA5ZjFlY2IwZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY3NywxOCArNjc3LDE3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
CiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290
aGluZ01vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewotICAgIEFTU0VSVChi
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdHbHlw
aHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9k
ZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgYnVmZmVyLCBm
cm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4NDY4ZGNjN2E3NTM4
MjAzZTkzYWExYzU2NjU3NThhMDM3ZTkyMjEuLmJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0
ZGM5MTExMGUyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNt
b290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGYwNGNkMmY0NTg2
MjVlY2E0NGZkMzM0MmZkMzQ1OGNkMjRkZGM1Ni4uNDA1MjZhNTc5NmVkZTBmMDU4MGRjNjgzODJl
MDgwMDI4MzhkMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGQ2MTA4ODEwMjZlYzlhNTA1MTNjZmZmYzgyMzJj
NTUyNTUxZTk2MWQuLjFjYzRjYjIzYzgwOTBlZjIxMThiMTlmZTMxMWIyMTY2Yzc5YjBiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIENhaXJvOjpjbGVhclJlY3QobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCiB7
CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQwLDEzICsyNDAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBhdXRvIHhP
ZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1H
bHlwaHMpOwogICAgIHsKLSAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgYXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKTsKLSAgICAgICAgYXV0byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhmcm9tKTsKLQorICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMp
OwogICAgICAgICBhdXRvIHlPZmZzZXQgPSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsg
Z2x5cGhzRGF0YVtpXSwgeE9mZnNldCwgeU9mZnNldCB9OworICAgICAgICAgICAgZ2x5cGhzW2ld
ID0geyBnbHlwaHNbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQg
Kz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gYWR2YW5jZXNb
aV0uaGVpZ2h0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
aW5kZXggNjliZDM1MGUyYmQwNWRhMzAxMDU2MDU0ZWMyOTQ4Yjk0MzE1NGI2Ni4uZDkwNzQwMDI3
ZjczOTUyZDA5ZTI5YmU0OTY0OTMyMzUwZDg0MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2Nh
ZGVDb3JlVGV4dC5jcHAKaW5kZXggYjMyZjczZTcyNGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlk
YTcxOC4uYWZlMzczYjg0MThmMzAzODlhNDVjOGYyYzIzODI4NmFlMzk0MGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNi0yMDIwLCAyMDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2
b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3Vi
cGl4ZWxRdWFudGl6YXRpb24pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKICAgICBjb25zdCBhdXRvJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwog
ICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUoKSkKQEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9y
aW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUg
ZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZ
ID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0
aWNCb2xkT2Zmc2V0KQotICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBv
aW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9y
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnBy
ZXNzRWZmZWN0KQotICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhw
b2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRH
bHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocyk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBp
ZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBv
aW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQu
c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAx
ZjFkYjBjZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdl
NjVmYjZhZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbik7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAg
dm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBD
R1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFh
NTc0MDQ1MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYyLDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQg
KyAyICogcmVjdC5vcmlnaW4ueSkpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAg
ICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3
R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29u
c3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisKICAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZv
bnQsIHNtb290aGluZ01vZGUpOwotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJu
YWxDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFs
Q29udGV4dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJIYXJmQnV6ei5jcHAKaW5kZXggMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0
YjE0Yi4uZjgxMzgwOWEyMGMyYjg5MmZiMWYzZjQ4Y2YwN2U5NjcxODA5OWJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9
CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0g
ICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBo
QnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3Jh
cGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcAppbmRleCBhMTA3ZmY4MmNhYmNhMDgyYjY4YmU0ZTZkZDhjODhmNzg2NmQ5
Njk1Li5lNWJiN2NjOGU2MWU0ZjBhYmViYmM3ZGIzNGMxYzczMDg1N2U3ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihS
ZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIu
YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9p
bnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdp
dGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjljOGNmNDJlYzFhZTJk
MTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThkYTg1MDExNWI3ZmE3NjdkYWNlODkzZTM0MmZl
YTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4MCwxNyArMzgw
LDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRzKGZvbnQpOwog
fQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihj
b25zdCBGb250JiBmb250KSBjb25zdAotewotICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1
bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9P
ZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRHJhd0dseXBoczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAogewotICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgY29u
dGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCks
IG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVh
N2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3NjAxNmFiMjMzZTkxYTdkOGNhNmU1YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTU2LDggKzk1Niw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIEds
eXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwotCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7CiAgICAgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVy
QWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2Eu
Ljg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4NDhlNTEzMGIwODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgUmVjb3Jk
ZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKICAgICBhcHBlbmQ8U2V0TWl0ZXJM
aW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZy
b20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9kcmF3R2x5
cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uY2Q4MWYy
MTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhiMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBw
bHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE5ZGZjOWY0ZGQ4YmY0YzRlNDk2MzQxY2Fm
N2YyM2MwOTQ0NDhiOWIuLjkzMWU3NDhlZWY5OWFjNTRjNjJkOTFjMzk5M2M3ZTljYzM5NTg2NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQordm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBhaW50
aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENhaXJvOjpGaWxsU291cmNlLCBDYWlybzo6U3Ry
b2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUsIEZsb2F0UG9pbnQsIFJlZlB0cjxjYWlyb19z
Y2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3RvcjxjYWlyb19nbHlwaF90PiwgZmxvYXQsIFRleHRE
cmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRTaXplLCBDb2xvciwgRm9udFNtb290aGluZ01v
ZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0dseXBocygpID0gZGVmYXVsdDsKQEAgLTUxNiwx
MyArNTE2LDEwIEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5CiAgICAgYXV0byB4T2Zmc2V0ID0g
cG9pbnQueCgpOwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSk7Ci0gICAgICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7
Ci0KKyAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAg
ICAgYXV0byB5T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0Rh
dGFbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5
cGhzW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFu
Y2VzW2ldLndpZHRoKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZDliMTlmMmViZjA0YjAx
OWZkYmNhZmZhNzUxYjc0NjY4NzEwZTZmMS4uNjRiMmQ3ODJhMDE0NzEzMjBlZDIxOTVhNGU2YTE0
ZmE0YzU3ZTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkdseXBoQnVmZmVyTWVtYmVycy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dElt
cGwuaCIKICNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCIKIApAQCAtNjIsNyAr
NjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBXZWJDb3Jl
OjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6Rm9udFNtb290
aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpO
YXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5kZXggYzc1ZjE4MzMyZWZiYzliOTM1Yjk5ZDRm
YzcyZTk1NTRmNDI5NDM1NC4uMWQyODc3NjY2MjFlYzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3ZTll
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9y
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTI0LDkgKzUyNCw5IEBAIExheW91dFJlY3QgTWF0aE9wZXJhdG9yOjpwYWludEdseXBo
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjCiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZv
LmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwot
ICAgIGJ1ZmZlci5hZGQoZGF0YS5nbHlwaCwgKmRhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5
cGgoZGF0YSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgYnVm
ZmVyLCAwLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCku
Zm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEg
c2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAg
YXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlw
aChkYXRhKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCAmZGF0
YS5nbHlwaCwgJmFkdmFuY2UsIDEsIG9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVz
Y3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogCiAgICAgcmV0dXJuIGdseXBoUGFpbnRSZWN0
OwogfQpAQCAtNzI4LDEyICs3MjgsMTIgQEAgdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXQKICAgICBp
ZiAobV9zdHJldGNoVHlwZSA9PSBTdHJldGNoVHlwZTo6U2l6ZVZhcmlhbnQpCiAgICAgICAgIGds
eXBoRGF0YS5nbHlwaCA9IG1fdmFyaWFudEdseXBoOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVy
OwotICAgIGJ1ZmZlci5hZGQoZ2x5cGhEYXRhLmdseXBoLCAqZ2x5cGhEYXRhLmZvbnQsIGFkdmFu
Y2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9yVG9w
TGVmdCA9IHBhaW50T2Zmc2V0OwogICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kcyA9IGJvdW5kc0Zv
ckdseXBoKGdseXBoRGF0YSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4geyBvcGVy
YXRvclRvcExlZnQueCgpLCBMYXlvdXRVbml0KG9wZXJhdG9yVG9wTGVmdC55KCkgLSBnbHlwaEJv
dW5kcy55KCkpIH07Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpnbHlwaERh
dGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUo
KS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3
ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1
dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNl
KGFkdmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQsICZnbHlwaERhdGEuZ2x5cGgsICZhZHZhbmNl
LCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24o
KS5mb250U21vb3RoaW5nKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGQ1M2Q2YzRiYjJmMmFj
YTAwMDM2OGMwNTdiMzA1ZWI0OTg3YzM0N2QuLjdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2
Zjc1NzlhMzM4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNCBGcsOpZMOpcmljIFdhbmcgKGZyZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MDYsMTAgKzYwNiwxMCBAQCB2b2lkIFJlbmRl
ck1hdGhNTFRva2VuOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5m
by5jb250ZXh0KCkpOwogICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAK
LSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChtYXRoVmFyaWFudEdseXBo
LmdseXBoLCAqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBtYXRoVmFyaWFudEdseXBoLmZvbnQtPndp
ZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOwogICAgIExheW91dFVuaXQgZ2x5
cGhBc2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9u
dC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSk7Ci0gICAgaW5m
by5jb250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBidWZmZXIsIDAs
IDEsIHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBoQXNj
ZW50KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhp
bmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlw
aCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5j
ZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZv
ckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3
R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQsICZtYXRoVmFyaWFudEdseXBoLmdseXBoLCAm
YWR2YW5jZSwgMSwgcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwg
Z2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnRDaGlsZHJl
bihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQ
YWludEluZm8mIHBhaW50SW5mb0ZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkK
</data>
<flag name="commit-queue"
          id="438468"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420089</attachid>
            <date>2021-02-11 20:46:25 -0800</date>
            <delta_ts>2021-02-11 21:09:58 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211204624.patch</filename>
            <type>text/plain</type>
            <size>38910</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTVkOWEyMGUyOWZiMDdiZTQ4MWYzOTU2M2VhNmU0
NjQ0OTE0MmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpw
YWludCk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJU
TCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmlu
ZGV4IGE5N2IxZDlhMGY4MWVkYjAxNmI1YjllM2ExODRmMjE1Y2VhZGExODEuLjhmN2JjYWU5NTdj
NWM3ZTMwMjU1NjU2MmNjNThlMjI0YjE1MTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw5
ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQuLjMxMzcwY2ZiZmEzNDhk
YzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKIAogICAg
ICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVy
LCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2Ny
aXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5
cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9m
b250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0Rm9udERhdGE7CkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIH0KIAogICAgIGlm
IChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0
YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRYKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjBhZjZm
MzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2RiMGM0M2U3YzgwNDQwNWEy
NDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3YTA2YzkwZTAwZjBiMzRk
OTljOTE3ODIzMjgwNGZiNTU2NTYuLjk3MjNkMWNmMjU4NDEyODAyZWNmYTE4OWQ3MzRlZGIyZWY5
MzNmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OSw2ICsyOSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBU
aGUgQ0cgcG9ydHMgdXNlIHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhl
c2UgdHlwZXMgY2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisv
LyBXaGVuIHlvdSB3cml0ZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgdHlwZXMsIHVz
ZSB0aGUgZnVuY3Rpb25zIGJlbG93IQogI2lmIFVTRShDRykKIHVzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSBDR0dseXBoOwogdXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYTgwYzY0YTQ2MTA5YWU2MTk1NzRiZWQ4MjVjNGEzZDcwYzNmYTM2OC4uN2Q4YTE2MWEy
MjM5ZjUwMmU3NjBhYWI0ODQzZjA5ZjFlY2IwZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY3NywxOCArNjc3LDE3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
CiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290
aGluZ01vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewotICAgIEFTU0VSVChi
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdHbHlw
aHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9k
ZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgYnVmZmVyLCBm
cm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4NDY4ZGNjN2E3NTM4
MjAzZTkzYWExYzU2NjU3NThhMDM3ZTkyMjEuLmJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0
ZGM5MTExMGUyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNt
b290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGYwNGNkMmY0NTg2
MjVlY2E0NGZkMzM0MmZkMzQ1OGNkMjRkZGM1Ni4uNDA1MjZhNTc5NmVkZTBmMDU4MGRjNjgzODJl
MDgwMDI4MzhkMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGQ2MTA4ODEwMjZlYzlhNTA1MTNjZmZmYzgyMzJj
NTUyNTUxZTk2MWQuLjFjYzRjYjIzYzgwOTBlZjIxMThiMTlmZTMxMWIyMTY2Yzc5YjBiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIENhaXJvOjpjbGVhclJlY3QobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCiB7
CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQwLDEzICsyNDAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBhdXRvIHhP
ZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1H
bHlwaHMpOwogICAgIHsKLSAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgYXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKTsKLSAgICAgICAgYXV0byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhmcm9tKTsKLQorICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMp
OwogICAgICAgICBhdXRvIHlPZmZzZXQgPSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsg
Z2x5cGhzRGF0YVtpXSwgeE9mZnNldCwgeU9mZnNldCB9OworICAgICAgICAgICAgZ2x5cGhzW2ld
ID0geyBnbHlwaHNbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQg
Kz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gYWR2YW5jZXNb
aV0uaGVpZ2h0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
aW5kZXggNjliZDM1MGUyYmQwNWRhMzAxMDU2MDU0ZWMyOTQ4Yjk0MzE1NGI2Ni4uZDkwNzQwMDI3
ZjczOTUyZDA5ZTI5YmU0OTY0OTMyMzUwZDg0MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2Nh
ZGVDb3JlVGV4dC5jcHAKaW5kZXggYjMyZjczZTcyNGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlk
YTcxOC4uYWZlMzczYjg0MThmMzAzODlhNDVjOGYyYzIzODI4NmFlMzk0MGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNi0yMDIwLCAyMDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2
b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3Vi
cGl4ZWxRdWFudGl6YXRpb24pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKICAgICBjb25zdCBhdXRvJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwog
ICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUoKSkKQEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9y
aW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUg
ZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZ
ID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0
aWNCb2xkT2Zmc2V0KQotICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBv
aW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9y
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnBy
ZXNzRWZmZWN0KQotICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhw
b2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRH
bHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocyk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBp
ZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBv
aW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQu
c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAx
ZjFkYjBjZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdl
NjVmYjZhZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbik7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAg
dm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBD
R1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFh
NTc0MDQ1MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYyLDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQg
KyAyICogcmVjdC5vcmlnaW4ueSkpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAg
ICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3
R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29u
c3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisKICAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZv
bnQsIHNtb290aGluZ01vZGUpOwotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJu
YWxDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFs
Q29udGV4dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJIYXJmQnV6ei5jcHAKaW5kZXggMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0
YjE0Yi4uZjgxMzgwOWEyMGMyYjg5MmZiMWYzZjQ4Y2YwN2U5NjcxODA5OWJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9
CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0g
ICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBo
QnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3Jh
cGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcAppbmRleCBhMTA3ZmY4MmNhYmNhMDgyYjY4YmU0ZTZkZDhjODhmNzg2NmQ5
Njk1Li5lNWJiN2NjOGU2MWU0ZjBhYmViYmM3ZGIzNGMxYzczMDg1N2U3ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihS
ZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIu
YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9p
bnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdp
dGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjljOGNmNDJlYzFhZTJk
MTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThkYTg1MDExNWI3ZmE3NjdkYWNlODkzZTM0MmZl
YTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4MCwxNyArMzgw
LDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRzKGZvbnQpOwog
fQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihj
b25zdCBGb250JiBmb250KSBjb25zdAotewotICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1
bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9P
ZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRHJhd0dseXBoczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAogewotICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgY29u
dGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCks
IG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVh
N2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3NjAxNmFiMjMzZTkxYTdkOGNhNmU1YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTU2LDggKzk1Niw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIEds
eXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwotCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7CiAgICAgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVy
QWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2Eu
Ljg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4NDhlNTEzMGIwODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgUmVjb3Jk
ZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKICAgICBhcHBlbmQ8U2V0TWl0ZXJM
aW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZy
b20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9kcmF3R2x5
cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uY2Q4MWYy
MTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhiMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBw
bHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE5ZGZjOWY0ZGQ4YmY0YzRlNDk2MzQxY2Fm
N2YyM2MwOTQ0NDhiOWIuLjkzMWU3NDhlZWY5OWFjNTRjNjJkOTFjMzk5M2M3ZTljYzM5NTg2NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQordm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBhaW50
aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENhaXJvOjpGaWxsU291cmNlLCBDYWlybzo6U3Ry
b2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUsIEZsb2F0UG9pbnQsIFJlZlB0cjxjYWlyb19z
Y2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3RvcjxjYWlyb19nbHlwaF90PiwgZmxvYXQsIFRleHRE
cmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRTaXplLCBDb2xvciwgRm9udFNtb290aGluZ01v
ZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0dseXBocygpID0gZGVmYXVsdDsKQEAgLTUxNiwx
MyArNTE2LDEwIEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5CiAgICAgYXV0byB4T2Zmc2V0ID0g
cG9pbnQueCgpOwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSk7Ci0gICAgICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7
Ci0KKyAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAg
ICAgYXV0byB5T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0Rh
dGFbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5
cGhzW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFu
Y2VzW2ldLndpZHRoKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZDliMTlmMmViZjA0YjAx
OWZkYmNhZmZhNzUxYjc0NjY4NzEwZTZmMS4uNDUyYjA3MmE3NmY1OTdkNzMyNzk1ZjQzY2UyOTA4
NGVlZmRjYjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Ry
b2tlRWxsaXBzZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsZWFyUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZHJhd0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhC
dWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBX
ZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhz
KGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhPcGVyYXRvci5jcHAKaW5kZXggYzc1ZjE4MzMyZWZiYzliOTM1Yjk5ZDRmYzcyZTk1NTRmNDI5
NDM1NC4uMWQyODc3NjY2MjFlYzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3ZTllMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTI0LDkg
KzUyNCw5IEBAIExheW91dFJlY3QgTWF0aE9wZXJhdG9yOjpwYWludEdseXBoKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5j
bGlwKGNsaXBCb3VuZHMpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZlci5h
ZGQoZGF0YS5nbHlwaCwgKmRhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSkpOwot
ICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBv
cmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGlu
ZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBo
LCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNl
ID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlwaChkYXRhKSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCAmZGF0YS5nbHlwaCwgJmFk
dmFuY2UsIDEsIG9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5m
b250U21vb3RoaW5nKCkpOwogCiAgICAgcmV0dXJuIGdseXBoUGFpbnRSZWN0OwogfQpAQCAtNzI4
LDEyICs3MjgsMTIgQEAgdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAobV9zdHJldGNo
VHlwZSA9PSBTdHJldGNoVHlwZTo6U2l6ZVZhcmlhbnQpCiAgICAgICAgIGdseXBoRGF0YS5nbHlw
aCA9IG1fdmFyaWFudEdseXBoOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1ZmZl
ci5hZGQoZ2x5cGhEYXRhLmdseXBoLCAqZ2x5cGhEYXRhLmZvbnQsIGFkdmFuY2VXaWR0aEZvckds
eXBoKGdseXBoRGF0YSkpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9yVG9wTGVmdCA9IHBhaW50
T2Zmc2V0OwogICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kcyA9IGJvdW5kc0ZvckdseXBoKGdseXBo
RGF0YSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4geyBvcGVyYXRvclRvcExlZnQu
eCgpLCBMYXlvdXRVbml0KG9wZXJhdG9yVG9wTGVmdC55KCkgLSBnbHlwaEJvdW5kcy55KCkpIH07
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpnbHlwaERhdGEuZm9udCwgYnVm
ZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRy
YXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5j
ZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2VXaWR0
aEZvckdseXBoKGdseXBoRGF0YSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0dseXBo
cygqZ2x5cGhEYXRhLmZvbnQsICZnbHlwaERhdGEuZ2x5cGgsICZhZHZhbmNlLCAxLCBvcGVyYXRv
ck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3Ro
aW5nKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGQ1M2Q2YzRiYjJmMmFjYTAwMDM2OGMwNTdi
MzA1ZWI0OTg3YzM0N2QuLjdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1NzlhMzM4MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBG
csOpZMOpcmljIFdhbmcgKGZyZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02MDYsMTAgKzYwNiwxMCBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2Vu
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkp
OwogICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAKLSAgICBHbHlwaEJ1
ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChtYXRoVmFyaWFudEdseXBoLmdseXBoLCAqbWF0
aFZhcmlhbnRHbHlwaC5mb250LCBtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgo
bWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOwogICAgIExheW91dFVuaXQgZ2x5cGhBc2NlbnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9y
R2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSk7Ci0gICAgaW5mby5jb250ZXh0KCku
ZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBidWZmZXIsIDAsIDEsIHBhaW50T2Zm
c2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBoQXNjZW50KSwgc3R5bGUo
KS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAg
Ly8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdl
IG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlw
aEJ1ZmZlckFkdmFuY2UobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhW
YXJpYW50R2x5cGguZ2x5cGgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCptYXRo
VmFyaWFudEdseXBoLmZvbnQsICZtYXRoVmFyaWFudEdseXBoLmdseXBoLCAmYWR2YW5jZSwgMSwg
cGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5cGhBc2NlbnQp
LCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygp
KTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnRDaGlsZHJlbihQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIHBh
aW50SW5mb0ZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkK
</data>
<flag name="commit-queue"
          id="438490"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420091</attachid>
            <date>2021-02-11 21:10:14 -0800</date>
            <delta_ts>2021-02-11 21:30:54 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211211013.patch</filename>
            <type>text/plain</type>
            <size>39563</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uMTVkOWEyMGUyOWZiMDdiZTQ4MWYzOTU2M2VhNmU0
NjQ0OTE0MmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFpbnRHbHlwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpw
YWludCk6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJU
TCBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmlu
ZGV4IGE5N2IxZDlhMGY4MWVkYjAxNmI1YjllM2ExODRmMjE1Y2VhZGExODEuLjhmN2JjYWU5NTdj
NWM3ZTMwMjU1NjU2MmNjNThlMjI0YjE1MTg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw5
ICszMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgogI2VuZGlmCisKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQuLjMxMzcwY2ZiZmEzNDhk
YzMxMjU4MDRhNjQwNGNmZGUwNzVkMDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKIAogICAg
ICAgICBpZiAoJm5leHRGb250RGF0YSAhPSBmb250RGF0YSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZERyYXdJZkxvYWRpbmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0dseXBocygqZm9udERhdGEsIGdseXBoQnVmZmVy
LCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQsIG1fZm9udERlc2Ny
aXB0aW9uLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3R2x5
cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMobGFzdEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9m
b250RGVzY3JpcHRpb24uZm9udFNtb290aGluZygpKTsKIAogICAgICAgICAgICAgbGFzdEZyb20g
PSBuZXh0R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9ICZuZXh0Rm9udERhdGE7CkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIH0KIAogICAgIGlm
IChzaG91bGREcmF3SWZMb2FkaW5nKCpmb250RGF0YSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSkKLSAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKKyAgICAgICAgY29udGV4dC5kcmF3R2x5cGhzKCpmb250RGF0
YSwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGxhc3RGcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEZyb20pLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRp
b24uZm9udFNtb290aGluZygpKTsKICAgICBwb2ludC5zZXRYKG5leHRYKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggNjBhZjZm
MzVhZTRlYjcxYTQwMGNmMTM2YWM4MDYzNmQ3ZjYwOWMwMC4uMmRkM2RiMGM0M2U3YzgwNDQwNWEy
NDRhYWU3MWQxNWRjYWYyZWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOworICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCmluZGV4IGY0ZjY3YTA2YzkwZTAwZjBiMzRk
OTljOTE3ODIzMjgwNGZiNTU2NTYuLjk3MjNkMWNmMjU4NDEyODAyZWNmYTE4OWQ3MzRlZGIyZWY5
MzNmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyTWVtYmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoQnVmZmVyTWVtYmVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OSw2ICsyOSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBU
aGUgQ0cgcG9ydHMgdXNlIHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhl
c2UgdHlwZXMgY2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisv
LyBXaGVuIHlvdSB3cml0ZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgdHlwZXMsIHVz
ZSB0aGUgZnVuY3Rpb25zIGJlbG93IQogI2lmIFVTRShDRykKIHVzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSBDR0dseXBoOwogdXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYTgwYzY0YTQ2MTA5YWU2MTk1NzRiZWQ4MjVjNGEzZDcwYzNmYTM2OC4uN2Q4YTE2MWEy
MjM5ZjUwMmU3NjBhYWI0ODQzZjA5ZjFlY2IwZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY3NywxOCArNjc3LDE3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
CiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290
aGluZ01vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewotICAgIEFTU0VSVChi
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdHbHlw
aHMoZm9udCwgYnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9k
ZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgYnVmZmVyLCBm
cm9tLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4NDY4ZGNjN2E3NTM4
MjAzZTkzYWExYzU2NjU3NThhMDM3ZTkyMjEuLmJiMzJiZjM1OTc0MjRiN2U5YWEwZGJjYzEwOTc0
ZGM5MTExMGUyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNt
b290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGYwNGNkMmY0NTg2
MjVlY2E0NGZkMzM0MmZkMzQ1OGNkMjRkZGM1Ni4uNDA1MjZhNTc5NmVkZTBmMDU4MGRjNjgzODJl
MDgwMDI4MzhkMjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGQ2MTA4ODEwMjZlYzlhNTA1MTNjZmZmYzgyMzJj
NTUyNTUxZTk2MWQuLjFjYzRjYjIzYzgwOTBlZjIxMThiMTlmZTMxMWIyMTY2Yzc5YjBiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIENhaXJvOjpjbGVhclJlY3QobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCiB7
CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQwLDEzICsyNDAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBhdXRvIHhP
ZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1H
bHlwaHMpOwogICAgIHsKLSAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgYXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKTsKLSAgICAgICAgYXV0byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhmcm9tKTsKLQorICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMp
OwogICAgICAgICBhdXRvIHlPZmZzZXQgPSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsg
Z2x5cGhzRGF0YVtpXSwgeE9mZnNldCwgeU9mZnNldCB9OworICAgICAgICAgICAgZ2x5cGhzW2ld
ID0geyBnbHlwaHNbaV0sIHhPZmZzZXQsIHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQg
Kz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gYWR2YW5jZXNb
aV0uaGVpZ2h0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
aW5kZXggNjliZDM1MGUyYmQwNWRhMzAxMDU2MDU0ZWMyOTQ4Yjk0MzE1NGI2Ni4uZDkwNzQwMDI3
ZjczOTUyZDA5ZTI5YmU0OTY0OTMyMzUwZDg0MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2Nh
ZGVDb3JlVGV4dC5jcHAKaW5kZXggYjMyZjczZTcyNGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlk
YTcxOC4uYWZlMzczYjg0MThmMzAzODlhNDVjOGYyYzIzODI4NmFlMzk0MGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNi0yMDIwLCAyMDE2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2
b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3Vi
cGl4ZWxRdWFudGl6YXRpb24pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKICAgICBjb25zdCBhdXRvJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwog
ICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUoKSkKQEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9y
aW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUg
ZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZ
ID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxv
YXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0
aWNCb2xkT2Zmc2V0KQotICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBv
aW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250
LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0
LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9y
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnBy
ZXNzRWZmZWN0KQotICAgICAgICBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhw
b2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRH
bHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocyk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBzaG93R2x5cGhz
V2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBp
ZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZv
bnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBv
aW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQu
c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAx
ZjFkYjBjZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdl
NjVmYjZhZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbik7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAg
dm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBD
R1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFh
NTc0MDQ1MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYyLDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQg
KyAyICogcmVjdC5vcmlnaW4ueSkpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAg
ICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3
R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29u
c3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisKICAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZv
bnQsIHNtb290aGluZ01vZGUpOwotICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJu
YWxDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFs
Q29udGV4dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJIYXJmQnV6ei5jcHAKaW5kZXggMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0
YjE0Yi4uZjgxMzgwOWEyMGMyYjg5MmZiMWYzZjQ4Y2YwN2U5NjcxODA5OWJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9
CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0g
ICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBo
QnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3Jh
cGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcAppbmRleCBhMTA3ZmY4MmNhYmNhMDgyYjY4YmU0ZTZkZDhjODhmNzg2NmQ5
Njk1Li5lNWJiN2NjOGU2MWU0ZjBhYmViYmM3ZGIzNGMxYzczMDg1N2U3ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihS
ZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIu
YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9p
bnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdp
dGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjljOGNmNDJlYzFhZTJk
MTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThkYTg1MDExNWI3ZmE3NjdkYWNlODkzZTM0MmZl
YTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4MCwxNyArMzgw
LDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRzKGZvbnQpOwog
fQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihj
b25zdCBGb250JiBmb250KSBjb25zdAotewotICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1
bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9P
ZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgRHJhd0dseXBoczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAogewotICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgY29u
dGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCks
IG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAog
dm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVh
N2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3NjAxNmFiMjMzZTkxYTdkOGNhNmU1YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTU2LDggKzk1Niw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIEds
eXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwotCiAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZm9udElkZW50aWZpZXI7CiAgICAgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVy
QWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2Eu
Ljg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4NDhlNTEzMGIwODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgUmVjb3Jk
ZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKICAgICBhcHBlbmQ8U2V0TWl0ZXJM
aW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZy
b20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9kcmF3R2x5
cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uY2Q4MWYy
MTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhiMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBw
bHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE5ZGZjOWY0ZGQ4YmY0YzRlNDk2MzQxY2Fm
N2YyM2MwOTQ0NDhiOWIuLmJjYTAwMDExY2JhMGMzNjc2ODEyMzI3ZmUxYzc5ZDM2NzlhYjJjMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQordm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBhaW50
aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENhaXJvOjpGaWxsU291cmNlLCBDYWlybzo6U3Ry
b2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUsIEZsb2F0UG9pbnQsIFJlZlB0cjxjYWlyb19z
Y2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3RvcjxjYWlyb19nbHlwaF90PiwgZmxvYXQsIFRleHRE
cmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRTaXplLCBDb2xvciwgRm9udFNtb290aGluZ01v
ZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0dseXBocygpID0gZGVmYXVsdDsKQEAgLTUxNCwx
NSArNTE0LDEyIEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKLSAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4g
Z2x5cGhzKG51bUdseXBocyk7CisgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGNhaXJvR2x5cGhz
KG51bUdseXBocyk7CiAgICAgewotICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBn
bHlwaEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBhdXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZm
ZXIuZ2x5cGhzKGZyb20pOwotICAgICAgICBhdXRvKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pOwotCisgICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IG51bUds
eXBocyk7CiAgICAgICAgIGF1dG8geU9mZnNldCA9IHBvaW50LnkoKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewotICAgICAgICAgICAgZ2x5cGhzW2ld
ID0geyBnbHlwaHNEYXRhW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CisgICAgICAgICAgICBjYWly
b0dseXBoc1tpXSA9IHsgZ2x5cGhzW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAg
ICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLndpZHRoKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01
MzEsNyArNTI4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHkKICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3R2x5cGhzPihDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJv
a2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2lu
dCwKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+KGZvbnQucGxhdGZvcm1EYXRh
KCkuc2NhbGVkRm9udCgpKSwKLSAgICAgICAgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIFdU
Rk1vdmUoZ2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAorICAgICAgICBm
b250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWlyb0dseXBocyksIHhPZmZzZXQs
IHN0YXRlLnRleHREcmF3aW5nTW9kZSwKICAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBz
dGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLCBmb250U21vb3RoaW5nKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAppbmRleCBkOWIxOWYyZWJmMDRiMDE5ZmRiY2FmZmE3NTFiNzQ2Njg3MTBlNmYxLi40NTJi
MDcyYTc2ZjU5N2Q3MzI3OTVmNDNjZTI5MDg0ZWVmZGNiOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Miw3ICs2Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZv
bnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdl
YkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJD
b3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcAppbmRleCBjNzVmMTgzMzJl
ZmJjOWI5MzViOTlkNGZjNzJlOTU1NGY0Mjk0MzU0Li4xZDI4Nzc2NjYyMWVjM2RlZTQ0OWI4MDRl
MzYzODVhNjNiYjdlOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL01hdGhPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9NYXRoT3BlcmF0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01MjQsOSArNTI0LDkgQEAgTGF5b3V0UmVjdCBNYXRoT3BlcmF0
b3I6OnBhaW50R2x5cGgoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBQYWludEluZm8mIGluZm8s
IGMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0
KCkpOwogICAgIGluZm8uY29udGV4dCgpLmNsaXAoY2xpcEJvdW5kcyk7CiAKLSAgICBHbHlwaEJ1
ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChkYXRhLmdseXBoLCAqZGF0YS5mb250LCBhZHZh
bmNlV2lkdGhGb3JHbHlwaChkYXRhKSk7Ci0gICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygq
ZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250
RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBq
dXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4g
YWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFu
Y2VXaWR0aEZvckdseXBoKGRhdGEpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpk
YXRhLmZvbnQsICZkYXRhLmdseXBoLCAmYWR2YW5jZSwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiAKICAgICByZXR1cm4g
Z2x5cGhQYWludFJlY3Q7CiB9CkBAIC03MjgsMTIgKzcyOCwxMiBAQCB2b2lkIE1hdGhPcGVyYXRv
cjo6cGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dAogICAgIGlmIChtX3N0cmV0Y2hUeXBlID09IFN0cmV0Y2hUeXBlOjpTaXplVmFyaWFu
dCkKICAgICAgICAgZ2x5cGhEYXRhLmdseXBoID0gbV92YXJpYW50R2x5cGg7CiAKLSAgICBHbHlw
aEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChnbHlwaERhdGEuZ2x5cGgsICpnbHlwaERh
dGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoZ2x5cGhEYXRhKSk7CiAgICAgTGF5b3V0UG9p
bnQgb3BlcmF0b3JUb3BMZWZ0ID0gcGFpbnRPZmZzZXQ7CiAgICAgRmxvYXRSZWN0IGdseXBoQm91
bmRzID0gYm91bmRzRm9yR2x5cGgoZ2x5cGhEYXRhKTsKICAgICBMYXlvdXRQb2ludCBvcGVyYXRv
ck9yaWdpbiB7IG9wZXJhdG9yVG9wTGVmdC54KCksIExheW91dFVuaXQob3BlcmF0b3JUb3BMZWZ0
LnkoKSAtIGdseXBoQm91bmRzLnkoKSkgfTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdH
bHlwaHMoKmdseXBoRGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9wZXJhdG9yT3JpZ2luLCBzdHls
ZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAg
Ly8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdl
IG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlw
aEJ1ZmZlckFkdmFuY2UoYWR2YW5jZVdpZHRoRm9yR2x5cGgoZ2x5cGhEYXRhKSk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpnbHlwaERhdGEuZm9udCwgJmdseXBoRGF0YS5n
bHlwaCwgJmFkdmFuY2UsIDEsIG9wZXJhdG9yT3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXgg
ZDUzZDZjNGJiMmYyYWNhMDAwMzY4YzA1N2IzMDVlYjQ5ODdjMzQ3ZC4uN2VmYWU0ZDBmYjliNzc1
ZTY5NzhmNTAyMjg5NjZmNzU3OWEzMzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE0IEZyw6lkw6lyaWMgV2FuZyAoZnJlZC53YW5nQGZyZWUu
ZnIpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBT
LkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwNiwxMCArNjA2LDEw
IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3Bl
cnR5Q29sb3IpKTsKIAotICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKG1h
dGhWYXJpYW50R2x5cGguZ2x5cGgsICptYXRoVmFyaWFudEdseXBoLmZvbnQsIG1hdGhWYXJpYW50
R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKSk7CiAgICAg
TGF5b3V0VW5pdCBnbHlwaEFzY2VudCA9IHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZh
cmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55
KCkpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZv
bnQsIGJ1ZmZlciwgMCwgMSwgcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQo
MF9sdSwgZ2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9u
KCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5n
IGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/Cisg
ICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShtYXRoVmFyaWFudEdseXBo
LmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOworICAgIGluZm8u
Y29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9udCwgJm1hdGhWYXJpYW50
R2x5cGguZ2x5cGgsICZhZHZhbmNlLCAxLCBwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlv
dXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVz
Y3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTFRva2Vu
OjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgcGFpbnRJbmZvRm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRS
ZWN0KQo=
</data>
<flag name="commit-queue"
          id="438493"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420094</attachid>
            <date>2021-02-11 21:30:45 -0800</date>
            <delta_ts>2021-02-11 21:58:53 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211213044.patch</filename>
            <type>text/plain</type>
            <size>41769</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uODdhMjUwYTdlMzBmNzk4OGQxNzU4YzcyM2I2ZWRk
Mjk1OWY5ZTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVySGFyZkJ1enouY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
OjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBo
czo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE9w
ZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KToKKwogMjAyMS0wMi0x
MSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11b
RkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJlY3QgUlRMIGFwcGVhcmFuY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggYTk3YjFkOWEwZjgxZWRi
MDE2YjViOWUzYTE4NGYyMTVjZWFkYTE4MS4uOGY3YmNhZTk1N2M1YzdlMzAyNTU2NTYyY2M1OGUy
MjRiMTUxODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisj
aWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAj
ZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZDMyMjRhMzBhOTNjZmE0Y2Vi
MmFkN2U4YWYyNzMwZTg1YjdkNWQzNC4uMzEzNzBjZmJmYTM0OGRjMzEyNTgwNGE2NDA0Y2ZkZTA3
NWQwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDY4LDcgKzE0
NjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogCiAgICAgICAgIGlmICgmbmV4dEZvbnRE
YXRhICE9IGZvbnREYXRhKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkRHJhd0lmTG9hZGluZygq
Zm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRpb24uZm9udFNtb290aGlu
ZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlw
aEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhsYXN0RnJvbSks
IG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250
U21vb3RoaW5nKCkpOwogCiAgICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAg
ICAgICAgIGZvbnREYXRhID0gJm5leHRGb250RGF0YTsKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgfQogCiAgICAgaWYgKHNob3VsZERyYXdJZkxvYWRp
bmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQotICAgICAgICBjb250ZXh0
LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAt
IGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkp
OworICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlw
aHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhsYXN0RnJvbSksIG5leHRHbHlwaCAt
IGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkp
OwogICAgIHBvaW50LnNldFgobmV4dFgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2MGFmNmYzNWFlNGViNzFhNDAwY2YxMzZh
YzgwNjM2ZDdmNjA5YzAwLi4yZGQzZGIwYzQzZTdjODA0NDA1YTI0NGFhZTcxZDE1ZGNhZjJlYjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNl
RmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxv
cHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkg
Y29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBEYXNoQXJy
YXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyTWVtYmVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXJNZW1iZXJzLmgKaW5kZXggZjRmNjdhMDZjOTBlMDBmMGIzNGQ5OWM5MTc4MjMyODA0ZmI1NTY1
Ni4uOTcyM2QxY2YyNTg0MTI4MDJlY2ZhMTg5ZDczNGVkYjJlZjkzM2Y0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9y
Y2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzI5LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCiAjaW5jbHVkZSAiR2x5cGguaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2
ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZSBDRyBwb3J0cyB1c2UgdGhl
IENHIHR5cGVzIGRpcmVjdGx5LCBzbyBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcyBjYW4gYmUgZmVk
IGRpcmVjdGx5IGludG8gQ1RGb250U2hhcGVHbHlwaHMoKS4KKy8vIFdoZW4geW91IHdyaXRlIGNv
ZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0eXBlcywgdXNlIHRoZSBmdW5jdGlvbnMgYmVs
b3chCiAjaWYgVVNFKENHKQogdXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IENHR2x5cGg7CiB1c2lu
ZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBDR1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhODBjNjRhNDYxMDlh
ZTYxOTU3NGJlZDgyNWM0YTNkNzBjM2ZhMzY4Li43ZDhhMTYxYTIyMzlmNTAyZTc2MGFhYjQ4NDNm
MDlmMWVjYjBmY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjc3
LDE4ICs2NzcsMTcgQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICByZXR1cm4gZm9udC5k
cmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZ01vZGUpCiB7Ci0gICAgQVNTRVJUKGJ1ZmZlci5pc0ZsYXR0ZW5lZCgp
KTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBidWZmZXIsIGZy
b20sIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9pbXBs
LT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZv
bnRTbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKCp0aGlzLCBmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9p
bnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhp
cywgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGlu
Z01vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFs
PHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDg0NjhkY2M3YTc1MzgyMDNlOTNhYTFjNTY2NTc1OGEw
MzdlOTIyMS4uYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MTgsNyArNDE4LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAg
dm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4g
dG8gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4ZjA0Y2QyZjQ1ODYyNWVjYTQ0ZmQzMzQyZmQzNDU4
Y2QyNGRkYzU2Li40MDUyNmE1Nzk2ZWRlMGYwNTgwZGM2ODM4MmUwODAwMjgzOGQyMDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseUZp
bGxQYXR0ZXJuKCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMTg1NmY5ZTk4YjUxZmM2YWEzMTQ2
NTVkOTJjNzJkMDA1NWUwMjdlZS4uNzdiNWYzZDE0MmNmZTY2NDUyZjY0ZTQ3ODM0ZWJlNGU5MGRh
Y2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC00OCwyMiArNDgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAg
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQordm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywKKyAgICBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LAorICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdN
b2RlKQogewogICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKLSAgICBWZWN0b3I8Y2Fpcm9f
Z2x5cGhfdD4gZ2x5cGhzKG51bUdseXBocyk7CisgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGNh
aXJvR2x5cGhzKG51bUdseXBocyk7CiAgICAgewogICAgICAgICBBU1NFUlQoZnJvbSArIG51bUds
eXBocyA8PSBnbHlwaEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBhdXRvKiBnbHlwaHNEYXRhID0g
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pOwotICAgICAgICBhdXRvKiBhZHZhbmNlcyA9IGdseXBo
QnVmZmVyLmFkdmFuY2VzKGZyb20pOwogCiAgICAgICAgIGF1dG8geU9mZnNldCA9IHBvaW50Lnko
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewotICAg
ICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNEYXRhW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07
CisgICAgICAgICAgICBjYWlyb0dseXBoc1tpXSA9IHsgZ2x5cGhzW2ldLCB4T2Zmc2V0LCB5T2Zm
c2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLndpZHRoKCk7CiAgICAg
ICAgICAgICB5T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLmhlaWdodCgpOwogICAgICAgICB9CkBAIC03
NSw3ICs3NCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgQVNTRVJUKGNvbnRleHQu
aGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgp
OwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDYWly
bzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAotICAgICAg
ICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGlj
Qm9sZE9mZnNldCwgZ2x5cGhzLCB4T2Zmc2V0LAorICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUo
c3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlw
aHMsIHhPZmZzZXQsCiAgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLAogICAgICAg
ICBmb250U21vb3RoaW5nTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAppbmRleCBkNjEwODgxMDI2ZWM5YTUwNTEzY2ZmZmM4MjMyYzU1MjU1MWU5NjFkLi4xY2M0
Y2IyM2M4MDkwZWYyMTE4YjE5ZmUzMTFiMjE2NmM3OWIwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDYWly
bzo6Y2xlYXJSZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5n
KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIGlmICghZm9udC5w
bGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCwxMyArMjQwLDEw
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgYXV0byB4T2Zmc2V0ID0gcG9pbnQueCgp
OwogICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNpemUoKSk7Ci0g
ICAgICAgIGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSk7Ci0gICAg
ICAgIGF1dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7Ci0KKyAgICAg
ICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAgICAgYXV0byB5
T2Zmc2V0ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUds
eXBoczsgKytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0RhdGFbaV0sIHhP
ZmZzZXQsIHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5cGhzW2ldLCB4
T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLndp
ZHRoKCk7CiAgICAgICAgICAgICB5T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLmhlaWdodCgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDY5YmQzNTBlMmJk
MDVkYTMwMTA1NjA1NGVjMjk0OGI5NDMxNTRiNjYuLmQ5MDc0MDAyN2Y3Mzk1MmQwOWUyOWJlNDk2
NDkzMjM1MGQ4NDEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCmlu
ZGV4IGIzMmY3M2U3MjRjZjhkZmVjOTVlYjBiM2FhZWFkNmUwNzA5ZGE3MTguLmFmZTM3M2I4NDE4
ZjMwMzg5YTQ1YzhmMmMyMzgyODZhZTM5NDBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29y
ZVRleHQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAyMCwgMjAxNiBB
cHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBzZXRDR0ZvbnRSZW5k
ZXJpbmdNb2RlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBDR0NvbnRleHRTZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBkb1N1YnBpeGVsUXVhbnRpemF0aW9u
KTsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNo
b3JQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgY29uc3QgYXV0
byYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAgICBpZiAoIXBsYXRmb3Jt
RGF0YS5zaXplKCkpCkBAIC0yNjAsMjMgKzI2MCwyMyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
RwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53
aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0
aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3du
IGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNo
YWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkg
PyAtMSA6IDEpOwotICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hh
ZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRy
aXgpOworICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4
dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHRleHRNYXRyaXgpOwogICAgICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAg
ICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCAr
IHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlw
aEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlw
aHMsIHRleHRNYXRyaXgpOworICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9h
dFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBm
b250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7
CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAgICAgfQogCiAjaWYg
RU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKLSAgICAg
ICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRl
eHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSks
IG51bUdseXBocyk7CisgICAgICAgIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2Vz
KHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwogICAg
IGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhwb2lu
dCwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVy
LmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHRleHRNYXRyaXgpOworICAgICAgICBzaG93R2x5
cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAgICAgfQogCiAgICAgaWYgKHN5bnRoZXRpY0JvbGRP
ZmZzZXQpCi0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54
KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGds
eXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUds
eXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQ
b2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBj
Z0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1hdHJpeCk7CiAKICAg
ICBpZiAoaGFzU2ltcGxlU2hhZG93KQogICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggMWYxZGIwY2VlMGI4ZjNjZGMx
ODg1MzdhYjhkM2JiNjlhYzcxNjEzMy4uYTgxZjYzZjQ1OTZlMDM3ZTY1ZmI2YWQwZWJlMzQ0OTNh
ODkyODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBleHBsaWNpdCBE
cmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pOwog
Ci0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21v
b3RoaW5nTW9kZSk7CiAKICNpZiBVU0UoQ09SRV9URVhUKQogICAgIHZvaWQgcmVjb3JkQmVnaW5M
YXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcAppbmRleCA1NjA0MzkyM2U4YTRlYWY5MmQ1NWJhYTU3NDA0NTAzNzA1NDliNDgz
Li4xZWNhNTAzYjVlNDA4ZWZmNWM3NWFhNDkyNmZiZmNiZjI5YWZlZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM2MiwxNiArMzYyLDE3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNv
cmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAgICAg
bV9vd25lci50cmFuc2xhdGUoMCwgLShyZWN0LnNpemUuaGVpZ2h0ICsgMiAqIHJlY3Qub3JpZ2lu
LnkpKTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKIHsKICAgICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKLSAgICAgICAgbV9vd25lci5hcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9t
KSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2Fj
aGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNt
b290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKG1fZHJh
d0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25z
dHJ1Y3QpOworCiAgICAgcHJlcGFyZUludGVybmFsQ29udGV4dChmb250LCBzbW9vdGhpbmdNb2Rl
KTsKLSAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29udGV4dCwgZm9udCwg
Z2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7
CisgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMobV9pbnRlcm5hbENvbnRleHQsIGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAg
ICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVySGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCmlu
ZGV4IDM3ZDUzMWQwODg1YTdmNzJjZDUxNzU1NDRiNzI4MDRkNWExNGIxNGIuLmY4MTM4MDlhMjBj
MmI4OTJmYjFmM2Y0OGNmMDdlOTY3MTgwOTliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
OSArNDEsOSBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRl
ciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogewogfQogCi12b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
K3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBh
ZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50
LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIuYXBwZW5k
RHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNt
b290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVk
Rm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290
aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5k
ZXggYTEwN2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4NjZkOTY5NS4uZTViYjdjYzhlNjFl
NGYwYWJlYmJjN2RiMzRjMWM3MzA4NTdlN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29y
ZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDkgKzQxLDkgQEAg
RHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImIG93bmVyLCBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIHsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290
aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJ
dGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGluZ01v
ZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250
LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9k
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMxYWUyZDEzMzkzNzVkOWY1NjMwZTc2
ZDc0My4uY2Q1ZGU4ZGE4NTAxMTViN2ZhNzY3ZGFjZTg5M2UzNDJmZWEzZjg1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zODAsMTcgKzM4MCw5IEBAIERyYXdHbHlwaHM6
OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250KTsKIH0KIAotaW5saW5lIEdseXBo
QnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYgZm9udCkg
Y29uc3QKLXsKLSAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFkZChtX2dseXBoc1tp
XSwgZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zmc2V0KTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiB2b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdHbHlw
aHMoZm9udCwgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihmb250KSwgMCwgbV9nbHlwaHMuc2l6ZSgpLCBh
bmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAgIGNvbnRleHQuZHJhd0dseXBocyhm
b250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCks
IGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgRHJhd0dseXBoczo6
Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIxMjA1YTdmZjNhNmE2MzY3ZS4uYzE2
NmYzZGY2YWE4ZTJkNzYwMTZhYjIzM2U5MWE3ZDhjYTZlNWI4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk1Niw4ICs5NTYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgY29tcHV0ZUJvdW5kcyhjb25zdCBGb250Jik7CiAKLSAgICBHbHlwaEJ1ZmZlciBnZW5lcmF0
ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQmKSBjb25zdDsKLQogICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBtX2ZvbnRJZGVudGlmaWVyOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBo
LCAxMjg+IG1fZ2x5cGhzOwogICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4gbV9h
ZHZhbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA0
Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIzYTNhLi44NTM1YWU4MDRlNTMxN2Jh
OWZjMDk3OWRiYWE0ODQ4ZTUxMzBiMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFJlY29yZGVyOjpzZXRNaXRlckxpbWl0
KGZsb2F0IG1pdGVyTGltaXQpCiAgICAgYXBwZW5kPFNldE1pdGVyTGltaXQ+KG1pdGVyTGltaXQp
OwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9v
dGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX2RyYXdHbHlwaHNS
ZWNvcmRlci5kcmF3R2x5cGhzKGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHN0
YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdH
bHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9v
dGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRo
Q2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlw
aHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBj
b25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDY0Zjc4YWNi
NmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLmNkODFmMjE4NmUxNDZjMDE3YTE4NTg1
YmIzOGQ2MjFiM2I4YjA5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcAppbmRleCAxOWRmYzlmNGRkOGJmNGM0ZTQ5NjM0MWNhZjdmMjNjMDk0NDQ4YjliLi5i
Y2EwMDAxMWNiYTBjMzY3NjgxMjMyN2ZlMWM3OWQzNjc5YWIyYzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNDkz
LDcgKzQ5Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+KHJl
Y3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290
aGluZ01vZGUgZm9udFNtb290aGluZykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcp
CiB7CiAgICAgc3RydWN0IERyYXdHbHlwaHMgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxDYWlybzo6RmlsbFNvdXJjZSwgQ2Fpcm86OlN0cm9rZVNvdXJjZSwgQ2Fpcm86
OlNoYWRvd1N0YXRlLCBGbG9hdFBvaW50LCBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4sIGZs
b2F0LCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4sIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywg
ZmxvYXQsIEZsb2F0U2l6ZSwgQ29sb3IsIEZvbnRTbW9vdGhpbmdNb2RlPiB7CiAgICAgICAgIHZp
cnR1YWwgfkRyYXdHbHlwaHMoKSA9IGRlZmF1bHQ7CkBAIC01MTQsMTUgKzUxNCwxMiBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXImIGdseQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHhPZmZzZXQg
PSBwb2ludC54KCk7Ci0gICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGdseXBocyhudW1HbHlwaHMp
OworICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBjYWlyb0dseXBocyhudW1HbHlwaHMpOwogICAg
IHsKLSAgICAgICAgQVNTRVJUKGZyb20gKyBudW1HbHlwaHMgPD0gZ2x5cGhCdWZmZXIuc2l6ZSgp
KTsKLSAgICAgICAgYXV0byogZ2x5cGhzRGF0YSA9IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKTsK
LSAgICAgICAgYXV0byogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKTsKLQor
ICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBudW1HbHlwaHMpOwogICAgICAgICBh
dXRvIHlPZmZzZXQgPSBwb2ludC55KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGdseXBoc1tpXSA9IHsgZ2x5cGhzRGF0YVtp
XSwgeE9mZnNldCwgeU9mZnNldCB9OworICAgICAgICAgICAgY2Fpcm9HbHlwaHNbaV0gPSB7IGds
eXBoc1tpXSwgeE9mZnNldCwgeU9mZnNldCB9OwogICAgICAgICAgICAgeE9mZnNldCArPSBhZHZh
bmNlc1tpXS53aWR0aCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTMxLDcgKzUyOCw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5CiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0dseXBo
cz4oQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwK
ICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0
cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSks
Ci0gICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGdseXBocyksIHhP
ZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSwKKyAgICAgICAgZm9udC5zeW50aGV0aWNCb2xk
T2Zmc2V0KCksIFdURk1vdmUoY2Fpcm9HbHlwaHMpLCB4T2Zmc2V0LCBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGUsCiAgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0
LCBzdGF0ZS5zaGFkb3dDb2xvciwgZm9udFNtb290aGluZykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZDliMTlm
MmViZjA0YjAxOWZkYmNhZmZhNzUxYjc0NjY4NzEwZTZmMS4uNDUyYjA3MmE3NmY1OTdkNzMyNzk1
ZjQzY2UyOTA4NGVlZmRjYjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29y
ZTo6R2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZl
ckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6Rm9udFNtb290aGlu
Z01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRp
dmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5kZXggYzc1ZjE4MzMyZWZiYzliOTM1Yjk5ZDRmYzcy
ZTk1NTRmNDI5NDM1NC4uMWQyODc3NjY2MjFlYzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3ZTllMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTI0LDkgKzUyNCw5IEBAIExheW91dFJlY3QgTWF0aE9wZXJhdG9yOjpwYWludEdseXBoKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmNv
bnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAg
IGJ1ZmZlci5hZGQoZGF0YS5nbHlwaCwgKmRhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgo
ZGF0YSkpOwotICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmRhdGEuZm9udCwgYnVmZmVy
LCAwLCAxLCBvcmlnaW4sIHN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKKyAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2lu
Z2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0
byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZHZhbmNlV2lkdGhGb3JHbHlwaChk
YXRhKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCAmZGF0YS5n
bHlwaCwgJmFkdmFuY2UsIDEsIG9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogCiAgICAgcmV0dXJuIGdseXBoUGFpbnRSZWN0Owog
fQpAQCAtNzI4LDEyICs3MjgsMTIgQEAgdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAo
bV9zdHJldGNoVHlwZSA9PSBTdHJldGNoVHlwZTo6U2l6ZVZhcmlhbnQpCiAgICAgICAgIGdseXBo
RGF0YS5nbHlwaCA9IG1fdmFyaWFudEdseXBoOwogCi0gICAgR2x5cGhCdWZmZXIgYnVmZmVyOwot
ICAgIGJ1ZmZlci5hZGQoZ2x5cGhEYXRhLmdseXBoLCAqZ2x5cGhEYXRhLmZvbnQsIGFkdmFuY2VX
aWR0aEZvckdseXBoKGdseXBoRGF0YSkpOwogICAgIExheW91dFBvaW50IG9wZXJhdG9yVG9wTGVm
dCA9IHBhaW50T2Zmc2V0OwogICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kcyA9IGJvdW5kc0Zvckds
eXBoKGdseXBoRGF0YSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4geyBvcGVyYXRv
clRvcExlZnQueCgpLCBMYXlvdXRVbml0KG9wZXJhdG9yVG9wTGVmdC55KCkgLSBnbHlwaEJvdW5k
cy55KCkpIH07Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpnbHlwaERhdGEu
Zm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5m
b250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdy
ZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdoeSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUg
YW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFk
dmFuY2VXaWR0aEZvckdseXBoKGdseXBoRGF0YSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0dseXBocygqZ2x5cGhEYXRhLmZvbnQsICZnbHlwaERhdGEuZ2x5cGgsICZhZHZhbmNlLCAx
LCBvcGVyYXRvck9yaWdpbiwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5m
b250U21vb3RoaW5nKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGQ1M2Q2YzRiYjJmMmFjYTAw
MDM2OGMwNTdiMzA1ZWI0OTg3YzM0N2QuLjdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1
NzlhMzM4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNCBGcsOpZMOpcmljIFdhbmcgKGZyZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MDYsMTAgKzYwNiwxMCBAQCB2b2lkIFJlbmRlck1h
dGhNTFRva2VuOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOwogICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAKLSAg
ICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChtYXRoVmFyaWFudEdseXBoLmds
eXBoLCAqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRo
Rm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOwogICAgIExheW91dFVuaXQgZ2x5cGhB
c2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+
Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSk7Ci0gICAgaW5mby5j
b250ZXh0KCkuZHJhd0dseXBocygqbWF0aFZhcmlhbnRHbHlwaC5mb250LCBidWZmZXIsIDAsIDEs
IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIExheW91dFBvaW50KDBfbHUsIGdseXBoQXNjZW50
KSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmco
KSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwg
d2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPworICAgIGF1dG8gYWR2YW5jZSA9
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckds
eXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5
cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQsICZtYXRoVmFyaWFudEdseXBoLmdseXBoLCAmYWR2
YW5jZSwgMSwgcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5
cGhBc2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNt
b290aGluZygpKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnRDaGlsZHJlbihQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWlu
dEluZm8mIHBhaW50SW5mb0ZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkK
</data>
<flag name="commit-queue"
          id="438497"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420098</attachid>
            <date>2021-02-11 21:58:43 -0800</date>
            <delta_ts>2021-02-12 12:34:11 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-221765-20210211215842.patch</filename>
            <type>text/plain</type>
            <size>42269</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uODdhMjUwYTdlMzBmNzk4OGQxNzU4YzcyM2I2ZWRk
Mjk1OWY5ZTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgZHJhd0dseXBo
cygpIHNob3VsZCB0YWtlIGEgR2x5cGgqIGFuZCBhbiBBZHZhbmNlKiBpbnN0ZWFkIG9mIGEgR2x5
cGhCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBN
YWtpbmcgaXQgdGFrZSBhIEdseXBoQnVmZmVyIGlzIG1pc2xlYWRpbmcgYmVjYXVzZSBpdCBvbmx5
IHVzZXMgdGhlIGdseXBoIGFycmF5IGFuZCB0aGUgYWR2YW5jZSBhcnJheQorICAgICAgICBmcm9t
IGluc2lkZSB0aGUgR2x5cGhCdWZmZXIuIEEgR2x5cGhCdWZmZXIgYWxzbyBob2xkcyBhIGJ1bmNo
IG9mIGV4dHJhIGRhdGEgbGlrZSBnbHlwaCBvcmlnaW5zIGFuZCBhbgorICAgICAgICBpbml0aWFs
IGFkdmFuY2UuIEdseXBoQnVmZmVycyBpbnRlcm5hbGx5IGhhdmUgYSBmbGF0dGVuKCkgZnVuY3Rp
b24gd2hpY2ggaW5jb3Jwb3JhdGUgdGhlIG9yaWdpbnMgaW50bworICAgICAgICB0aGUgYWR2YW5j
ZXMsIGFuZCB0aGlzIGZsYXR0ZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIGJlZW4gY2FsbGVk
IGJlZm9yZSBjYWxsaW5nIGRyYXdHbHlwaHMoKS4gT3VyCisgICAgICAgIGNvZGUgQVNTRVJUKClz
IHRoaXMsIGFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uLCB3ZSBzaG91bGRuJ3QgbmVlZCB0aGUgZW50
aXJlIEdseXBoQnVmZmVyIGFueSBtb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBocyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVySGFyZkJ1enouY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
OjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBo
czo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE9w
ZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KToKKwogMjAyMS0wMi0x
MSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11b
RkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJlY3QgUlRMIGFwcGVhcmFuY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggYTk3YjFkOWEwZjgxZWRi
MDE2YjViOWUzYTE4NGYyMTVjZWFkYTE4MS4uOGY3YmNhZTk1N2M1YzdlMzAyNTU2NTYyY2M1OGUy
MjRiMTUxODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDkgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisj
aWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAj
ZW5kaWYKKwogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZDMyMjRhMzBhOTNjZmE0Y2Vi
MmFkN2U4YWYyNzMwZTg1YjdkNWQzNC4uMzEzNzBjZmJmYTM0OGRjMzEyNTgwNGE2NDA0Y2ZkZTA3
NWQwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDY4LDcgKzE0
NjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogCiAgICAgICAgIGlmICgmbmV4dEZvbnRE
YXRhICE9IGZvbnREYXRhKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkRHJhd0lmTG9hZGluZygq
Zm9udERhdGEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC5kcmF3R2x5cGhzKCpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCwgbV9mb250RGVzY3JpcHRpb24uZm9udFNtb290aGlu
ZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlw
aEJ1ZmZlci5nbHlwaHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhsYXN0RnJvbSks
IG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250
U21vb3RoaW5nKCkpOwogCiAgICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAg
ICAgICAgIGZvbnREYXRhID0gJm5leHRGb250RGF0YTsKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgfQogCiAgICAgaWYgKHNob3VsZERyYXdJZkxvYWRp
bmcoKmZvbnREYXRhLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pKQotICAgICAgICBjb250ZXh0
LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAt
IGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkp
OworICAgICAgICBjb250ZXh0LmRyYXdHbHlwaHMoKmZvbnREYXRhLCBnbHlwaEJ1ZmZlci5nbHlw
aHMobGFzdEZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhsYXN0RnJvbSksIG5leHRHbHlwaCAt
IGxhc3RGcm9tLCBzdGFydFBvaW50LCBtX2ZvbnREZXNjcmlwdGlvbi5mb250U21vb3RoaW5nKCkp
OwogICAgIHBvaW50LnNldFgobmV4dFgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2MGFmNmYzNWFlNGViNzFhNDAwY2YxMzZh
YzgwNjM2ZDdmNjA5YzAwLi4yZGQzZGIwYzQzZTdjODA0NDA1YTI0NGFhZTcxZDE1ZGNhZjJlYjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNl
RmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxv
cHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkg
Y29uc3Q7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBEYXNoQXJy
YXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyTWVtYmVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXJNZW1iZXJzLmgKaW5kZXggZjRmNjdhMDZjOTBlMDBmMGIzNGQ5OWM5MTc4MjMyODA0ZmI1NTY1
Ni4uOTcyM2QxY2YyNTg0MTI4MDJlY2ZhMTg5ZDczNGVkYjJlZjkzM2Y0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9y
Y2ggTW9iaWxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzI5LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCiAjaW5jbHVkZSAiR2x5cGguaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2
ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZSBDRyBwb3J0cyB1c2UgdGhl
IENHIHR5cGVzIGRpcmVjdGx5LCBzbyBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcyBjYW4gYmUgZmVk
IGRpcmVjdGx5IGludG8gQ1RGb250U2hhcGVHbHlwaHMoKS4KKy8vIFdoZW4geW91IHdyaXRlIGNv
ZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSB0eXBlcywgdXNlIHRoZSBmdW5jdGlvbnMgYmVs
b3chCiAjaWYgVVNFKENHKQogdXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IENHR2x5cGg7CiB1c2lu
ZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBDR1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhODBjNjRhNDYxMDlh
ZTYxOTU3NGJlZDgyNWM0YTNkNzBjM2ZhMzY4Li43ZDhhMTYxYTIyMzlmNTAyZTc2MGFhYjQ4NDNm
MDlmMWVjYjBmY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjc3
LDE4ICs2NzcsMTcgQEAgRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICByZXR1cm4gZm9udC5k
cmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYg
YnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZ01vZGUpCiB7Ci0gICAgQVNTRVJUKGJ1ZmZlci5pc0ZsYXR0ZW5lZCgp
KTsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBidWZmZXIsIGZy
b20sIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9pbXBs
LT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZv
bnRTbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKCp0aGlzLCBmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9p
bnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhp
cywgZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGlu
Z01vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFs
PHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDg0NjhkY2M3YTc1MzgyMDNlOTNhYTFjNTY2NTc1OGEw
MzdlOTIyMS4uYmIzMmJmMzU5NzQyNGI3ZTlhYTBkYmNjMTA5NzRkYzkxMTEwZTI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MTgsNyArNDE4LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAg
dm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiwgRm9udFNtb290aGluZ01vZGUpOwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4g
dG8gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4ZjA0Y2QyZjQ1ODYyNWVjYTQ0ZmQzMzQyZmQzNDU4
Y2QyNGRkYzU2Li40MDUyNmE1Nzk2ZWRlMGYwNTgwZGM2ODM4MmUwODAwMjgzOGQyMDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseUZp
bGxQYXR0ZXJuKCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMTg1NmY5ZTk4YjUxZmM2YWEzMTQ2
NTVkOTJjNzJkMDA1NWUwMjdlZS4uMDdjZDFmMjMwZWVlOTRmNjUxMTVhOGQ0OGIzNTcxNWYwMzNm
YTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC00OCwyMiArNDgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAg
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQordm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywKKyAgICBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LAorICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAgIGlm
ICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8geE9mZnNldCA9IHBvaW50LngoKTsKLSAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4gZ2x5cGhz
KG51bUdseXBocyk7CisgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGNhaXJvR2x5cGhzKG51bUds
eXBocyk7CiAgICAgewogICAgICAgICBBU1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBnbHlwaEJ1
ZmZlci5zaXplKCkpOwotICAgICAgICBhdXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZmZXIuZ2x5
cGhzKGZyb20pOwotICAgICAgICBhdXRvKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pOwogCiAgICAgICAgIGF1dG8geU9mZnNldCA9IHBvaW50LnkoKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewotICAgICAgICAgICAgZ2x5cGhz
W2ldID0geyBnbHlwaHNEYXRhW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CisgICAgICAgICAgICBj
YWlyb0dseXBoc1tpXSA9IHsgZ2x5cGhzW2ldLCB4T2Zmc2V0LCB5T2Zmc2V0IH07CiAgICAgICAg
ICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLndpZHRoKCk7CiAgICAgICAgICAgICB5T2Zmc2V0
ICs9IGFkdmFuY2VzW2ldLmhlaWdodCgpOwogICAgICAgICB9CkBAIC03NSw3ICs3NCw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBHCiAgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwogICAgIENhaXJvOjpk
cmF3R2x5cGhzKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDYWlybzo6RmlsbFNvdXJjZShz
dGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAotICAgICAgICBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5
cGhzLCB4T2Zmc2V0LAorICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwg
c2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCiAg
ICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0
ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0NvbG9yLAogICAgICAgICBmb250U21vb3RoaW5n
TW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBkNjEw
ODgxMDI2ZWM5YTUwNTEzY2ZmZmM4MjMyYzU1MjU1MWU5NjFkLi4wMWMyYzQxMjUwNWFkNTMwNDFm
ZGI4ZWQ2YmJjNWY1OTA4YmJkY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAKQEAgLTIzMiwyMSArMjMyLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIENhaXJvOjpjbGVhclJlY3Qo
bV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcpCiB7CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgp
LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB4T2Zmc2V0ID0gcG9pbnQueCgp
OwotICAgIFZlY3RvcjxjYWlyb19nbHlwaF90PiBnbHlwaHMobnVtR2x5cGhzKTsKKyAgICBWZWN0
b3I8Y2Fpcm9fZ2x5cGhfdD4gY2Fpcm9HbHlwaHMobnVtR2x5cGhzKTsKICAgICB7Ci0gICAgICAg
IEFTU0VSVChmcm9tICsgbnVtR2x5cGhzIDw9IGdseXBoQnVmZmVyLnNpemUoKSk7Ci0gICAgICAg
IGF1dG8qIGdseXBoc0RhdGEgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSk7Ci0gICAgICAgIGF1
dG8qIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7Ci0KKyAgICAgICAgQVNT
RVJUKGZyb20gKyBudW1HbHlwaHMgPD0gbnVtR2x5cGhzKTsKICAgICAgICAgYXV0byB5T2Zmc2V0
ID0gcG9pbnQueSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUdseXBoczsg
KytpKSB7Ci0gICAgICAgICAgICBnbHlwaHNbaV0gPSB7IGdseXBoc0RhdGFbaV0sIHhPZmZzZXQs
IHlPZmZzZXQgfTsKKyAgICAgICAgICAgIGNhaXJvR2x5cGhzW2ldID0geyBnbHlwaHNbaV0sIHhP
ZmZzZXQsIHlPZmZzZXQgfTsKICAgICAgICAgICAgIHhPZmZzZXQgKz0gYWR2YW5jZXNbaV0ud2lk
dGgoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gYWR2YW5jZXNbaV0uaGVpZ2h0KCk7CiAgICAg
ICAgIH0KQEAgLTI2MCw3ICsyNTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogCiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3
R2x5cGhzKG1fcGxhdGZvcm1Db250ZXh0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJv
OjpTdHJva2VTb3VyY2Uoc3RhdGUpLAotICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
LCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCB4T2Zmc2V0
LAorICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwg
c3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCiAgICAgICAgIHN0YXRl
LnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZz
ZXQsIHN0YXRlLnNoYWRvd0NvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggNjliZDM1MGUyYmQwNWRhMzAxMDU2MDU0
ZWMyOTQ4Yjk0MzE1NGI2Ni4uZDkwNzQwMDI3ZjczOTUyZDA5ZTI5YmU0OTY0OTMyMzUwZDg0MTIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKaW5kZXggYjMyZjczZTcy
NGNmOGRmZWM5NWViMGIzYWFlYWQ2ZTA3MDlkYTcxOC4uYWZlMzczYjg0MThmMzAzODlhNDVjOGYy
YzIzODI4NmFlMzk0MGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENhc2NhZGVDb3JlVGV4dC5jcHAKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNi0yMDIwLCAyMDE2IEFwcGxlIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyhjZ0NvbnRleHQsIGRvU3VicGl4ZWxRdWFudGl6YXRpb24pOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250
U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBjb25zdCBhdXRvJiBwbGF0Zm9ybURh
dGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLnNpemUoKSkK
QEAgLTI2MCwyMyArMjYwLDIzIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGZs
b2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAg
ICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4n
dCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUu
CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0Lmhl
aWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7Ci0g
ICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hh
ZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAg
IHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4
dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgdGV4dE1h
dHJpeCk7CiAgICAgICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQotICAgICAgICAgICAgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9s
ZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBo
cyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgdGV4dE1hdHJp
eCk7CisgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93
VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKICAgICAgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKICAgICB9CiAKICNpZiBFTkFCTEUoTEVUVEVS
UFJFU1MpCiAgICAgaWYgKHVzZUxldHRlcnByZXNzRWZmZWN0KQotICAgICAgICBzaG93TGV0dGVy
cHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhwb2ludCwgZm9udCwgY29udGV4dCwgZ2x5cGhCdWZm
ZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsK
KyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQs
IGNvbnRleHQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7CiAgICAgZWxzZQogI2VuZGlm
CiAgICAgewotICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0Nv
bnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJv
bSksIG51bUdseXBocywgdGV4dE1hdHJpeCk7CisgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMocG9pbnQsIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0
ZXh0TWF0cml4KTsKICAgICB9CiAKICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKLSAgICAg
ICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRp
Y0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5
cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCB0ZXh0TWF0
cml4KTsKKyAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50Lngo
KSArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHBvaW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCB0ZXh0TWF0cml4KTsKIAogICAgIGlmIChoYXNTaW1w
bGVTaGFkb3cpCiAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAxZjFkYjBjZWUwYjhmM2NkYzE4ODUzN2FiOGQzYmI2
OWFjNzE2MTMzLi5hODFmNjNmNDU5NmUwMzdlNjVmYjZhZDBlYmUzNDQ5M2E4OTI4ODNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNv
cmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbik7CiAKLSAgICB2b2lkIGRy
YXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNt
b290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsK
IAogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAgdm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVy
aW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBDR1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBo
c1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmlu
ZGV4IDU2MDQzOTIzZThhNGVhZjkyZDU1YmFhNTc0MDQ1MDM3MDU0OWI0ODMuLjFlY2E1MDNiNWU0
MDhlZmY1Yzc1YWE0OTI2ZmJmY2JmMjlhZmVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYy
LDE2ICszNjIsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShD
R1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUKICAgICBtX293bmVyLnRyYW5z
bGF0ZSgwLCAtKHJlY3Quc2l6ZS5oZWlnaHQgKyAyICogcmVjdC5vcmlnaW4ueSkpOwogfQogCi12
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21v
b3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZm
ZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlm
IChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246
OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVt
V2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsK
KyAgICAgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQs
IGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25z
dHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisKICAg
ICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGZvbnQsIHNtb290aGluZ01vZGUpOwotICAgIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKG1faW50ZXJuYWxDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwg
ZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29udGV4dCwgZm9udCwgZ2x5cGhzLCBhZHZhbmNl
cywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICBjb25jbHVkZUlu
dGVybmFsQ29udGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJm
QnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggMzdkNTMxZDA4
ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0YjE0Yi4uZjgxMzgwOWEyMGMyYjg5MmZiMWYzZjQ4
Y2YwN2U5NjcxODA5OWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIERy
YXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJh
d0dseXBoc0RlY29uc3RydWN0aW9uCiB7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQordm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRl
bVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZm
ZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7
CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAppbmRleCBhMTA3ZmY4MmNh
YmNhMDgyYjY4YmU0ZTZkZDhjODhmNzg2NmQ5Njk1Li5lNWJiN2NjOGU2MWU0ZjBhYmViYmM3ZGIz
NGMxYzczMDg1N2U3ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsOSArNDEsOSBAQCBEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNv
bnN0cnVjdGlvbgogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhj
b25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwg
Rm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVy
OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9v
dGhpbmdNb2RlKQogewotICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVk
Rm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9v
d25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAppbmRleCAyMTNkYjljOGNmNDJlYzFhZTJkMTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5jZDVkZThk
YTg1MDExNWI3ZmE3NjdkYWNlODkzZTM0MmZlYTNmODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4MCwxNyArMzgwLDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhj
b25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcK
ICAgICBjb21wdXRlQm91bmRzKGZvbnQpOwogfQogCi1pbmxpbmUgR2x5cGhCdWZmZXIgRHJhd0ds
eXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JiBmb250KSBjb25zdAotewotICAg
IEdseXBoQnVmZmVyIHJlc3VsdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhz
LnNpemUoKTsgKytpKQotICAgICAgICByZXN1bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2Fk
dmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9PZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KIHZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGb250JiBmb250KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5l
cmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCks
IG1fc21vb3RoaW5nTW9kZSk7CisgICAgY29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhz
LmRhdGEoKSwgbV9hZHZhbmNlcy5kYXRhKCksIG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQo
KSwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogdm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRz
KGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0
Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVhN2ZmM2E2YTYzNjdlLi5jMTY2ZjNkZjZhYThlMmQ3
NjAxNmFiMjMzZTkxYTdkOGNhNmU1YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTU2LDggKzk1Niw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91
bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIo
Y29uc3QgRm9udCYpIGNvbnN0OwotCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1f
Zm9udElkZW50aWZpZXI7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4gbV9nbHlw
aHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiBtX2FkdmFuY2VzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRk
Y2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2EuLjg1MzVhZTgwNGU1MzE3YmE5ZmMwOTc5ZGJhYTQ4
NDhlNTEzMGIwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTYyLDkgKzE2Miw5IEBAIHZvaWQgUmVjb3JkZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJM
aW1pdCkKICAgICBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4obWl0ZXJMaW1pdCk7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2
b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdH
bHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CisgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250LCBn
bHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwog
fQogCiB2b2lkIFJlY29yZGVyOjphcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9p
bnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUyNjZk
MmM0MzU3MWViNjk0NDVjZTAzYy4uY2Q4MWYyMTg2ZTE0NmMwMTdhMTg1ODViYjM4ZDYyMWIzYjhi
MDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVy
JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXBwZW5kRHJh
d0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4
IDE5ZGZjOWY0ZGQ4YmY0YzRlNDk2MzQxY2FmN2YyM2MwOTQ0NDhiOWIuLmJjYTAwMDExY2JhMGMz
Njc2ODEyMzI3ZmUxYzc5ZDM2NzlhYjJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC00OTMsNyArNDkzLDcgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250
U21vb3RoaW5nKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1
Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENh
aXJvOjpGaWxsU291cmNlLCBDYWlybzo6U3Ryb2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUs
IEZsb2F0UG9pbnQsIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3Rvcjxj
YWlyb19nbHlwaF90PiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRT
aXplLCBDb2xvciwgRm9udFNtb290aGluZ01vZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0ds
eXBocygpID0gZGVmYXVsdDsKQEAgLTUxNCwxNSArNTE0LDEyIEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ciYgZ2x5CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsK
LSAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4gZ2x5cGhzKG51bUdseXBocyk7CisgICAgVmVjdG9y
PGNhaXJvX2dseXBoX3Q+IGNhaXJvR2x5cGhzKG51bUdseXBocyk7CiAgICAgewotICAgICAgICBB
U1NFUlQoZnJvbSArIG51bUdseXBocyA8PSBnbHlwaEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBh
dXRvKiBnbHlwaHNEYXRhID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pOwotICAgICAgICBhdXRv
KiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pOwotCisgICAgICAgIEFTU0VS
VChmcm9tICsgbnVtR2x5cGhzIDw9IG51bUdseXBocyk7CiAgICAgICAgIGF1dG8geU9mZnNldCA9
IHBvaW50LnkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsr
aSkgewotICAgICAgICAgICAgZ2x5cGhzW2ldID0geyBnbHlwaHNEYXRhW2ldLCB4T2Zmc2V0LCB5
T2Zmc2V0IH07CisgICAgICAgICAgICBjYWlyb0dseXBoc1tpXSA9IHsgZ2x5cGhzW2ldLCB4T2Zm
c2V0LCB5T2Zmc2V0IH07CiAgICAgICAgICAgICB4T2Zmc2V0ICs9IGFkdmFuY2VzW2ldLndpZHRo
KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MzEsNyArNTI4LDcgQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyJiBnbHkKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3R2x5cGhzPihDYWlybzo6Rmls
bFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxl
ZF9mb250X3Q+KGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKSwKLSAgICAgICAgZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIFdURk1vdmUoZ2x5cGhzKSwgeE9mZnNldCwgc3RhdGUu
dGV4dERyYXdpbmdNb2RlLAorICAgICAgICBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RG
TW92ZShjYWlyb0dseXBocyksIHhPZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSwKICAgICAg
ICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRv
d0NvbG9yLCBmb250U21vb3RoaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkOWIxOWYyZWJmMDRiMDE5ZmRi
Y2FmZmE3NTFiNzQ2Njg3MTBlNmYxLi40NTJiMDcyYTc2ZjU5N2Q3MzI3OTVmNDNjZTI5MDg0ZWVm
ZGNiOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJva2VF
bGxpcHNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xl
YXJSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZl
ciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNv
cmU6OkZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25z
dCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
TWF0aE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9w
ZXJhdG9yLmNwcAppbmRleCBjNzVmMTgzMzJlZmJjOWI5MzViOTlkNGZjNzJlOTU1NGY0Mjk0MzU0
Li4xZDI4Nzc2NjYyMWVjM2RlZTQ0OWI4MDRlMzYzODVhNjNiYjdlOWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MjQsOSArNTI0
LDkgQEAgTGF5b3V0UmVjdCBNYXRoT3BlcmF0b3I6OnBhaW50R2x5cGgoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBQYWludEluZm8mIGluZm8sIGMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIGluZm8uY29udGV4dCgpLmNsaXAo
Y2xpcEJvdW5kcyk7CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFkZChk
YXRhLmdseXBoLCAqZGF0YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChkYXRhKSk7Ci0gICAg
aW5mby5jb250ZXh0KCkuZHJhd0dseXBocygqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdp
biwgc3R5bGUuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkp
OworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBqdXN0IGRyYXdpbmcgYSBzaW5nbGUgZ2x5cGgsIHdo
eSBkbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYWR2YW5jZT8KKyAgICBhdXRvIGFkdmFuY2UgPSBt
YWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpkYXRhLmZvbnQsICZkYXRhLmdseXBoLCAmYWR2YW5j
ZSwgMSwgb3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRT
bW9vdGhpbmcoKSk7CiAKICAgICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7CiB9CkBAIC03MjgsMTIg
KzcyOCwxMiBAQCB2b2lkIE1hdGhPcGVyYXRvcjo6cGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dAogICAgIGlmIChtX3N0cmV0Y2hUeXBl
ID09IFN0cmV0Y2hUeXBlOjpTaXplVmFyaWFudCkKICAgICAgICAgZ2x5cGhEYXRhLmdseXBoID0g
bV92YXJpYW50R2x5cGg7CiAKLSAgICBHbHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgYnVmZmVyLmFk
ZChnbHlwaERhdGEuZ2x5cGgsICpnbHlwaERhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgo
Z2x5cGhEYXRhKSk7CiAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gcGFpbnRPZmZz
ZXQ7CiAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgoZ2x5cGhEYXRh
KTsKICAgICBMYXlvdXRQb2ludCBvcGVyYXRvck9yaWdpbiB7IG9wZXJhdG9yVG9wTGVmdC54KCks
IExheW91dFVuaXQob3BlcmF0b3JUb3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnkoKSkgfTsKLSAg
ICBwYWludEluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKmdseXBoRGF0YS5mb250LCBidWZmZXIs
IDAsIDEsIG9wZXJhdG9yT3JpZ2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1c3QgZHJhd2lu
ZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBhZHZhbmNlPwor
ICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWR2YW5jZVdpZHRoRm9y
R2x5cGgoZ2x5cGhEYXRhKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhzKCpn
bHlwaERhdGEuZm9udCwgJmdseXBoRGF0YS5nbHlwaCwgJmFkdmFuY2UsIDEsIG9wZXJhdG9yT3Jp
Z2luLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmco
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZDUzZDZjNGJiMmYyYWNhMDAwMzY4YzA1N2IzMDVl
YjQ5ODdjMzQ3ZC4uN2VmYWU0ZDBmYjliNzc1ZTY5NzhmNTAyMjg5NjZmNzU3OWEzMzgxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IEZyw6lk
w6lyaWMgV2FuZyAoZnJlZC53YW5nQGZyZWUuZnIpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTYwNiwxMCArNjA2LDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBh
aW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAg
ICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpKTsKIAotICAgIEdseXBoQnVmZmVy
IGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgsICptYXRoVmFy
aWFudEdseXBoLmZvbnQsIG1hdGhWYXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRo
VmFyaWFudEdseXBoLmdseXBoKSk7CiAgICAgTGF5b3V0VW5pdCBnbHlwaEFzY2VudCA9IHN0YXRp
Y19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlw
aChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5kcmF3
R2x5cGhzKCptYXRoVmFyaWFudEdseXBoLmZvbnQsIGJ1ZmZlciwgMCwgMSwgcGFpbnRPZmZzZXQg
KyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5cGhBc2NlbnQpLCBzdHlsZSgpLmZv
bnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICAvLyBG
SVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVl
ZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/CisgICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVm
ZmVyQWR2YW5jZShtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlh
bnRHbHlwaC5nbHlwaCkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJp
YW50R2x5cGguZm9udCwgJm1hdGhWYXJpYW50R2x5cGguZ2x5cGgsICZhZHZhbmNlLCAxLCBwYWlu
dE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0
eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwog
fQogCiB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgcGFpbnRJ
bmZvRm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420166</attachid>
            <date>2021-02-12 12:34:16 -0800</date>
            <delta_ts>2021-02-12 13:49:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221765-20210212123415.patch</filename>
            <type>text/plain</type>
            <size>3536</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxY2Q3MWY0MTk0ZmVl
ZDM0NjQwMTZkZDFkOTMwMTY5MDBlNGIxNi4uYzAzNzYyMjVjYTM2MjQwMWY1ZjQ4YzE3OThiMDcw
NDNlNTU1ZDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IFdpbmRv
d3MgYnVpbGQgYWdhaW4gYWZ0ZXIgcjI3Mjc3MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzY1CisKKyAgICAgICAgVW5yZXZpZXdlZC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKwogMjAyMS0wMi0xMiAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyNzI3NzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggOGFlOTI0Y2NjMzYyNDlkNWFkM2M3OTQzNjZh
MzYyZWNmNGYzZWI2Yi4uNTNhYzdlMjAwMThhMWI4YTk1MGRjNzQ5MjY4NWQyNzVmOGFiYjE2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dp
bi5jcHAKQEAgLTEyNSw4ICsxMjUsOCBAQCBzdGF0aWMgQ0dQYXRoUmVmIGNyZWF0ZVBhdGhGb3JH
bHlwaChIREMgaGRjLCBHbHlwaCBnbHlwaCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAgIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsCisgICAgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGJv
b2wgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IFdlYkNvcmVTaG91bGRVc2VGb250U21vb3RoaW5n
KCk7CkBAIC0xOTIsMTkgKzE5MiwxOSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LAogICAgICAg
ICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3Qg
YXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgog
ICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWln
aHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDog
MSk7CiAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHNoYWRvd1Rl
eHRYLCBzaGFkb3dUZXh0WSk7Ci0gICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0
IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKKyAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocyk7CiAgICAgICAgIGlmIChmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQo
KSkgewogICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9p
bnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQo
KSwgcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIENHQ29u
dGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMo
ZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZy
b20pKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2
YW5jZXMoY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwogICAgICAgICB9
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKICAgICB9
CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7Ci0gICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOworICAgIENHQ29udGV4dFNob3dH
bHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMp
OwogICAgIGlmIChmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewogICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyBmb250LnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSwgcG9pbnQueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhB
ZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8
Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwor
ICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKICAgICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>