<?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>227979</bug_id>
          
          <creation_ts>2021-07-14 23:14:51 -0700</creation_ts>
          <short_desc>The fast text codepath does not handle run initial advances</short_desc>
          <delta_ts>2021-08-19 21:53:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>206208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777135</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-14 23:14:51 -0700</bug_when>
    <thetext>The fast text codepath does not handle run initial advances</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777136</commentid>
    <comment_count>1</comment_count>
      <attachid>433562</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-14 23:15:22 -0700</bug_when>
    <thetext>Created attachment 433562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777137</commentid>
    <comment_count>2</comment_count>
      <attachid>433562</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-14 23:15:43 -0700</bug_when>
    <thetext>Comment on attachment 433562
Patch

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

&gt; Source/WebCore/platform/graphics/ComplexTextController.cpp:725
&gt; +                // FIXME: The initial advance needs to be added to the visually previous glyph&apos;s advance, not the current glyph&apos;s advance.

This might actually be false 🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777139</commentid>
    <comment_count>3</comment_count>
      <attachid>433564</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-14 23:29:40 -0700</bug_when>
    <thetext>Created attachment 433564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778098</commentid>
    <comment_count>4</comment_count>
      <attachid>433562</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-19 22:20:13 -0700</bug_when>
    <thetext>Comment on attachment 433562
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ComplexTextController.cpp:725
&gt;&gt; +                // FIXME: The initial advance needs to be added to the visually previous glyph&apos;s advance, not the current glyph&apos;s advance.
&gt; 
&gt; This might actually be false 🤔

It isn&apos;t false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778101</commentid>
    <comment_count>5</comment_count>
      <attachid>433851</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-19 23:34:24 -0700</bug_when>
    <thetext>Created attachment 433851
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778653</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-21 23:15:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80942757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779387</commentid>
    <comment_count>7</comment_count>
      <attachid>434184</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-25 16:58:42 -0700</bug_when>
    <thetext>Created attachment 434184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779389</commentid>
    <comment_count>8</comment_count>
      <attachid>434185</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-25 17:08:37 -0700</bug_when>
    <thetext>Created attachment 434185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779392</commentid>
    <comment_count>9</comment_count>
      <attachid>434188</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-25 18:49:23 -0700</bug_when>
    <thetext>Created attachment 434188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785689</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 21:53:29 -0700</bug_when>
    <thetext>Committed r281294 (240718@main): &lt;https://commits.webkit.org/240718@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434188.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433562</attachid>
            <date>2021-07-14 23:15:22 -0700</date>
            <delta_ts>2021-07-14 23:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227979-20210714231521.patch</filename>
            <type>text/plain</type>
            <size>17676</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjUzOWE4YzFlZTA3
ZmJlYWQ2YzA2N2NkNDllNGYyODA3ZjE5My4uODA1OTBjNDg1ZDQ4MDM3OGFmMTNiYmQ1NWI4ZjM5
NmJkMWVjNDlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA3LTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YXBwbHlUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRo
Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRU
cmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZExheW91dFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5SW5pdGlhbEFkdmFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y29tbWl0Q3VycmVudEZvbnRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjphcHBseVRy
YW5zZm9ybXMgY29uc3QpOgorCiAyMDIxLTA3LTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBBcHBsZSBpbnRlcm5hbCBpT1MgU2lt
dWxhdG9yIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA0NDkzMmRlZmNkOTg2M2U2MGYy
MGNhOWQxNzYyYTc5NjUzMGIxZmI4Li4zYWQzYTMxMzA4ZGE0ZTg1MjczOTk5YmVjYjFlNDUyZDdh
ZTI0YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcyMiw2ICs3MjIsNyBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhlIGluaXRpYWwgYWR2YW5jZSBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgdmlzdWFsbHkgcHJl
dmlvdXMgZ2x5cGgncyBhZHZhbmNlLCBub3QgdGhlIGN1cnJlbnQgZ2x5cGgncyBhZHZhbmNlLgog
ICAgICAgICAgICAgICAgIGFkdmFuY2UuZXhwYW5kKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZh
bmNlKCkud2lkdGgoKSwgY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9yaWdpbnMgPSBjb21wbGV4VGV4dFJ1bi5nbHlw
aE9yaWdpbnMoKSkKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZS5leHBhbmQoLW9yaWdpbnNb
MF0ueCgpLCAtb3JpZ2luc1swXS55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcAppbmRleCAxN2EzN2FmOGJiZmQ4NzlkNWE4NDQzOGNlNGUzOTkzYzQ3Zjc5MTNm
Li4xYWQ1YjRkNmQyNzc2MGMzZDZjNWZjMDhlZGFmMGRjOGRhNGM5Mjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNTQyLDcgKzU0Miw3IEBAIFJlZlB0
cjxGb250PiBGb250OjpjcmVhdGVTY2FsZWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBmbG9hCiB9CiAKICNpZiAhVVNFKENPUkVfVEVYVCkKLXZvaWQgRm9udDo6
YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sLCBi
b29sLCBjb25zdCBBdG9tU3RyaW5nJiwgU3RyaW5nVmlldywgVGV4dERpcmVjdGlvbikgY29uc3QK
K0dseXBoQnVmZmVyQWR2YW5jZSBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1
bnNpZ25lZCwgdW5zaWduZWQsIGJvb2wsIGJvb2wsIGNvbnN0IEF0b21TdHJpbmcmLCBTdHJpbmdW
aWV3LCBUZXh0RGlyZWN0aW9uKSBjb25zdAogewogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNDdhN2UxMmY5YmM2ODkyMGNhNzE0ZTkyNDc5ZTU5
ZWYzZWVlOGQzMi4uMGRlZThhNTBlNTMzMzkxYjNmNzhhZjgyOGUyMjk2NTVhYWEzMTkxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjA2LDcgKzIwNiw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZShjb25zdCBVQ2hhciosIHNpemVfdCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseVRyYW5z
Zm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25l
ZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVz
U2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHRE
aXJlY3Rpb24pIGNvbnN0OworICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhcHBseVRyYW5zZm9ybXMo
R2x5cGhCdWZmZXImLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBiZWdp
bm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGlu
ZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rp
b24pIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBudWxsb3B0IGlmIG5vbmUgb2YgdGhlIGdseXBo
cyBhcmUgT1QtU1ZHIGdseXBocy4KICAgICBzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4gZmluZE9U
U1ZHR2x5cGhzKGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
aW5kZXggYWM1NGU2ODEzOTkyODRlZDhiZjhhMTFjNzZhYjExZmRmY2ZkMTNmZS4uNzY3YTI1MWQx
ZmM4YzU4OWY0YzkxY2E5OGI2MWYzMGEzOWM2ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIGZs
b2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBUZXh0
RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAgICAgIGdseXBoQnVmZmVyLmFkZChnbHlwaCwgZm9u
dCwgZ2x5cGhXaWR0aCwgaSk7CiAgICAgfQogCi0gICAgZm9udC5hcHBseVRyYW5zZm9ybXMoZ2x5
cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5pbmcoKSwgcmVxdWlyZXNTaGFwaW5nKCksIGZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIHRleHQsIHRleHREaXJlY3Rpb24pOworICAg
IGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwg
MCwgMCwgZW5hYmxlS2VybmluZygpLCByZXF1aXJlc1NoYXBpbmcoKSwgZm9udERlc2NyaXB0aW9u
KCkuY29tcHV0ZWRMb2NhbGUoKSwgdGV4dCwgdGV4dERpcmVjdGlvbik7CiAgICAgLy8gVGhpcyBp
cyBuZWVkZWQgb25seSB0byBtYXRjaCB0aGUgcmVzdWx0IG9mIHRoZSBzbG93IHBhdGguCiAgICAg
Ly8gU2FtZSBnbHlwaCB3aWR0aHMgYnV0IGRpZmZlcmVudCBmbG9hdGluZyBwb2ludCBhcml0aG1l
dGljIGNhbiBwcm9kdWNlIGRpZmZlcmVudCBydW4gd2lkdGguCiAgICAgZmxvYXQgcnVuV2lkdGhE
aWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgPSAtcnVuV2lkdGg7CkBAIC0zMjcsNiArMzI3
LDE1IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0
ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAgICAgIHJ1bldpZHRoRGlmZmVyZW5j
ZVdpdGhUcmFuc2Zvcm1BcHBsaWVkICs9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKSk7CiAgICAgcnVuV2lkdGggKz0gcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9y
bUFwcGxpZWQ7CiAKKyAgICBpZiAoZ2x5cGhCdWZmZXIuc2l6ZSgpKSB7CisgICAgICAgIC8vIFNl
ZSB0aGUgQVNDSUktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmguCisgICAg
ICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgcmVmZXJzIHRvIHRoZSB2aXN1YWxseSBpbml0aWFs
IGFkdmFuY2UsIGJ1dCB0aGUgR2x5cGhCdWZmZXIgaXMgaW4gbG9naWNhbCBvcmRlci4KKyAgICAg
ICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQorICAgICAgICAgICAg
cnVuV2lkdGggKz0gV2ViQ29yZTo6d2lkdGgoaW5pdGlhbEFkdmFuY2UpIC0geChnbHlwaEJ1ZmZl
ci5vcmlnaW5BdCgwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ1bldpZHRoICs9IFdl
YkNvcmU6OndpZHRoKGluaXRpYWxBZHZhbmNlKSAtIHgoZ2x5cGhCdWZmZXIub3JpZ2luQXQoZ2x5
cGhCdWZmZXIuc2l6ZSgpIC0gMSkpOworICAgIH0KKwogICAgIGlmIChjYWNoZUVudHJ5KQogICAg
ICAgICAqY2FjaGVFbnRyeSA9IHJ1bldpZHRoOwogICAgIHJldHVybiBydW5XaWR0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5k
ZXggZTE2MWQwMTc0MmY3MzJjODE0ZDVhMmViMGY5YjAyY2EwYjg0MzNjMC4uOGJiOWUwOWZlOGYz
YTMwY2VlNjg1ZmZiNWZhZDQ4NjcyY2Q4YTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTkwLDEzICs5MCwxMyBAQCBp
bmxpbmUgYXV0byBXaWR0aEl0ZXJhdG9yOjpzaG91bGRBcHBseUZvbnRUcmFuc2Zvcm1zKGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZgogICAgIHJldHVybiBUcmFuc2Zvcm1zVHlwZTo6Tm90Rm9y
Y2VkOwogfQogCi1pbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3Jt
cyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNp
Z25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgZm9yY2Us
IENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKQoraW5s
aW5lIGF1dG8gV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hh
cmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVh
dGVkQXNTcGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKSAtPiBBcHBseUZvbnRUcmFuc2Zv
cm1zUmVzdWx0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChjdXJyZW50Q2hhcmFjdGVySW5kZXgsIHNo
b3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJy
ZW50Q2hhcmFjdGVySW5kZXgpICE9IFdpZHRoSXRlcmF0b3I6OlRyYW5zZm9ybXNUeXBlOjpOb25l
KTsKIAogICAgIGF1dG8gZ2x5cGhCdWZmZXJTaXplID0gZ2x5cGhCdWZmZXIuc2l6ZSgpOwogICAg
IGlmICghZm9yY2UgJiYgZ2x5cGhCdWZmZXJTaXplIDw9IGxhc3RHbHlwaENvdW50ICsgMSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IDAsIG1ha2VHbHlwaEJ1ZmZlckFkdmFu
Y2UoKSB9OwogCiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVy
LmFkdmFuY2VzKDApOwogICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKQEAgLTEwNSw3ICsxMDUs
NyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogCiAgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50
IDw9IGdseXBoQnVmZmVyU2l6ZSk7CiAKLSAgICBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1
ZmZlciwgbGFzdEdseXBoQ291bnQsIG1fY3VycmVudENoYXJhY3RlckluZGV4LCBtX2VuYWJsZUtl
cm5pbmcsIG1fcmVxdWlyZXNTaGFwaW5nLCBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0
ZWRMb2NhbGUoKSwgbV9ydW4udGV4dCgpLCBtX3J1bi5kaXJlY3Rpb24oKSk7CisgICAgYXV0byBp
bml0aWFsQWR2YW5jZSA9IGZvbnQuYXBwbHlUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5
cGhDb3VudCwgbV9jdXJyZW50Q2hhcmFjdGVySW5kZXgsIG1fZW5hYmxlS2VybmluZywgbV9yZXF1
aXJlc1NoYXBpbmcsIG1fZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpLCBt
X3J1bi50ZXh0KCksIG1fcnVuLmRpcmVjdGlvbigpKTsKICAgICBnbHlwaEJ1ZmZlclNpemUgPSBn
bHlwaEJ1ZmZlci5zaXplKCk7CiAgICAgYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcygw
KTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkK
ICAgICAgICAgYWZ0ZXJXaWR0aCArPSB3aWR0aChhZHZhbmNlc1tpXSk7CiAKLSAgICByZXR1cm4g
YWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoOworICAgIHJldHVybiB7IGFmdGVyV2lkdGggLSBiZWZv
cmVXaWR0aCwgaW5pdGlhbEFkdmFuY2UgfTsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8
Ym9vbCwgYm9vbD4gZXhwYW5zaW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXRB
c1NwYWNlLCBib29sIGx0ciwgYm9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGZvcmJpZExlZnRF
eHBhbnNpb24sIGJvb2wgZm9yYmlkUmlnaHRFeHBhbnNpb24sIGJvb2wgZm9yY2VMZWZ0RXhwYW5z
aW9uLCBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24pCkBAIC0xNjUsMTEgKzE2NSw1NSBAQCBzdGF0
aWMgaW5saW5lIHN0ZDo6cGFpcjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlk
ZW9ncmFwaCwgYm9vbCB0cmVhdAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihleHBhbmRMZWZ0
LCBleHBhbmRSaWdodCk7CiB9CiAKK3N0YXRpYyBmbG9hdCBhZGRMYXlvdXRXaWR0aChHbHlwaEJ1
ZmZlckFkdmFuY2UmIHZpc3VhbGx5UHJldmlvdXNBZHZhbmNlLCBHbHlwaEJ1ZmZlck9yaWdpbiYg
dmlzdWFsbHlGaXJzdE9yaWdpbiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBpbml0aWFsQWR2
YW5jZSkKK3sKKyAgICBhdXRvIHdpZHRoQWRqdXN0bWVudCA9IHdpZHRoKGluaXRpYWxBZHZhbmNl
KSAtIHgodmlzdWFsbHlGaXJzdE9yaWdpbik7CisgICAgYXV0byBoZWlnaHRBZGp1c3RtZW50ID0g
aGVpZ2h0KGluaXRpYWxBZHZhbmNlKSAtIHkodmlzdWFsbHlGaXJzdE9yaWdpbik7CisgICAgc2V0
V2lkdGgodmlzdWFsbHlQcmV2aW91c0FkdmFuY2UsIHdpZHRoKHZpc3VhbGx5UHJldmlvdXNBZHZh
bmNlKSArIHdpZHRoQWRqdXN0bWVudCk7CisgICAgc2V0SGVpZ2h0KHZpc3VhbGx5UHJldmlvdXNB
ZHZhbmNlLCBoZWlnaHQodmlzdWFsbHlQcmV2aW91c0FkdmFuY2UpICsgaGVpZ2h0QWRqdXN0bWVu
dCk7CisgICAgcmV0dXJuIHdpZHRoQWRqdXN0bWVudDsKK30KKwordm9pZCBXaWR0aEl0ZXJhdG9y
OjphcHBseUluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgc3RkOjpvcHRp
b25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IGluaXRpYWxBZHZhbmNlLCB1bnNpZ25lZCBsYXN0R2x5
cGhDb3VudCkKK3sKKyAgICBBU1NFUlQoZ2x5cGhCdWZmZXIuc2l6ZSgpID49IGxhc3RHbHlwaENv
dW50KTsKKworICAgIGlmIChnbHlwaEJ1ZmZlci5zaXplKCkgPD0gbGFzdEdseXBoQ291bnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChsYXN0R2x5cGhDb3VudCB8fCAoIXdpZHRoKG1f
bGVmdG92ZXJJbml0aWFsQWR2YW5jZSkgJiYgIWhlaWdodChtX2xlZnRvdmVySW5pdGlhbEFkdmFu
Y2UpKSk7CisKKyAgICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRM
ICYmIGxhc3RHbHlwaENvdW50KSB7CisgICAgICAgIGF1dG8mIHZpc3VhbGx5UHJldmlvdXNBZHZh
bmNlID0gKmdseXBoQnVmZmVyLmFkdmFuY2VzKGxhc3RHbHlwaENvdW50KTsKKyAgICAgICAgYXV0
byYgdmlzdWFsbHlGaXJzdE9yaWdpbiA9ICpnbHlwaEJ1ZmZlci5vcmlnaW5zKGxhc3RHbHlwaENv
dW50IC0gMSk7CisgICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSBhZGRMYXlvdXRXaWR0aCh2aXN1
YWxseVByZXZpb3VzQWR2YW5jZSwgdmlzdWFsbHlGaXJzdE9yaWdpbiwgbV9sZWZ0b3ZlckluaXRp
YWxBZHZhbmNlKTsKKyAgICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBo
QnVmZmVyQWR2YW5jZSgpOworICAgIH0KKworICAgIGlmIChpbml0aWFsQWR2YW5jZSkgeworICAg
ICAgICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQorICAgICAg
ICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2UudmFsdWUoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGFzdEdseXBoQ291bnQpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiB2aXN1YWxseVByZXZpb3VzQWR2YW5jZSA9ICpnbHlwaEJ1ZmZlci5h
ZHZhbmNlcyhsYXN0R2x5cGhDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIGF1dG8mIHZpc3Vh
bGx5Rmlyc3RPcmlnaW4gPSAqZ2x5cGhCdWZmZXIub3JpZ2lucyhsYXN0R2x5cGhDb3VudCk7Cisg
ICAgICAgICAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IGFkZExheW91dFdpZHRoKHZpc3VhbGx5
UHJldmlvdXNBZHZhbmNlLCB2aXN1YWxseUZpcnN0T3JpZ2luLCBpbml0aWFsQWR2YW5jZS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLmV4
cGFuZEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAgICAgICB9Cisg
ICAgfQorfQorCiB2b2lkIFdpZHRoSXRlcmF0b3I6OmNvbW1pdEN1cnJlbnRGb250UmFuZ2UoR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQg
Y3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBjb25zdCBGb250JiBwcmlt
YXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdl
LCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2U7CiAg
ICAgYXV0byB0cmFuc2Zvcm1zVHlwZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhC
dWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOwotICAgIGlmICh0
cmFuc2Zvcm1zVHlwZSAhPSBUcmFuc2Zvcm1zVHlwZTo6Tm9uZSkKLSAgICAgICAgbV9ydW5XaWR0
aFNvRmFyICs9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50
LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBlID09IFRyYW5zZm9y
bXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CisgICAgaWYgKHRyYW5z
Zm9ybXNUeXBlICE9IFRyYW5zZm9ybXNUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gYXBwbHlG
b250VHJhbnNmb3Jtc1Jlc3VsdCA9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxh
c3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBl
ID09IFRyYW5zZm9ybXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7Cisg
ICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSBhcHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0LmFkZGl0
aW9uYWxBZHZhbmNlOworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGFwcGx5Rm9udFRyYW5zZm9y
bXNSZXN1bHQuaW5pdGlhbEFkdmFuY2U7CisgICAgfQorICAgIGFwcGx5SW5pdGlhbEFkdmFuY2Uo
Z2x5cGhCdWZmZXIsIGluaXRpYWxBZHZhbmNlLCBsYXN0R2x5cGhDb3VudCk7CiAgICAgbV9jdXJy
ZW50Q2hhcmFjdGVySW5kZXggPSBjdXJyZW50Q2hhcmFjdGVySW5kZXg7CiAKICAgICBpZiAod2lk
dGhPZkN1cnJlbnRGb250UmFuZ2UgJiYgbV9mYWxsYmFja0ZvbnRzICYmICZmb250ICE9ICZwcmlt
YXJ5Rm9udCkgewpAQCAtNDU2LDcgKzUwMCw5IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlF
eHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiB2
b2lkIFdpZHRoSXRlcmF0b3I6OmZpbmFsaXplKEdseXBoQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
QVNTRVJUKG1fcnVuLnJ0bCgpIHx8ICFtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKLSAg
ICAvLyBJbiBMVFIgdGhpcyBkb2VzIG5vdGhpbmcuIEluIFJUTCwgdGhpcyBhZGRzIGxlZnQgd2lk
dGggYnkgbW92aW5nIHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIC8vIEluIExUUiB0
aGVzZSBkb2VzIG5vdGhpbmcuIEluIFJUTCwgdGhlc2UgYWRkIGxlZnQgd2lkdGggYnkgbW92aW5n
IHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIGJ1ZmZlci5leHBhbmRJbml0aWFsQWR2
YW5jZShtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOworICAgIG1fcnVuV2lkdGhTb0ZhciArPSB3
aWR0aChtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOwogICAgIGJ1ZmZlci5leHBhbmRJbml0aWFs
QWR2YW5jZShtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKICAgICBtX3J1bldpZHRoU29G
YXIgKz0gbV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aDsKICAgICBtX2xlZnRvdmVySnVzdGlm
aWNhdGlvbldpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuaAppbmRleCBmNjA2ZmEyMzI0OWE2YzExYWZmOWYwMzljYjI2OTY1OTdl
NmVmZmVhLi4yNDA1OGIxY2U1ZTQ0OWEwMDJmZGY0ODdlODdhNjkxOWU5MDdhOGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBAIC02
Myw4ICs2MywxMyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBUcmFuc2Zvcm1zVHlwZSB7
IE5vbmUsIEZvcmNlZCwgTm90Rm9yY2VkIH07CiAgICAgVHJhbnNmb3Jtc1R5cGUgc2hvdWxkQXBw
bHlGb250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENv
dW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpIGNvbnN0OwotICAgIGZsb2F0IGFw
cGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwg
dW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiwgYm9vbCBmb3JjZSwg
Q2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJik7CisgICAgc3RydWN0IEFwcGx5Rm9udFRyYW5zZm9y
bXNSZXN1bHQgeworICAgICAgICBmbG9hdCBhZGRpdGlvbmFsQWR2YW5jZTsKKyAgICAgICAgR2x5
cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlOworICAgIH07CisgICAgQXBwbHlGb250VHJh
bnNmb3Jtc1Jlc3VsdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
bGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9u
dCYsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwogICAgIHZvaWQgY29t
bWl0Q3VycmVudEZvbnRSYW5nZShHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50
LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmLCBjb25zdCBGb250
JiBwcmltYXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9u
dFJhbmdlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmKTsKKyAgICB2b2lkIGFwcGx5SW5pdGlh
bEFkdmFuY2UoR2x5cGhCdWZmZXImLCBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4g
aW5pdGlhbEFkdmFuY2UsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50KTsKIAogICAgIGJvb2wgaGFz
RXh0cmFTcGFjaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hh
cGluZyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVk
IGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyRGVzdGluYXRpb25JbmRl
eCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCk7CkBAIC04Miw2ICs4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxjb25zdCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7IG51bGxwdHIgfTsKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OworICAgIEds
eXBoQnVmZmVyQWR2YW5jZSBtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UgeyBtYWtlR2x5cGhCdWZm
ZXJBZHZhbmNlKCkgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCB7IDAg
fTsKICAgICBmbG9hdCBtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoIHsgMCB9OwogICAgIGZs
b2F0IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IDI5YTA3
Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkuLjEwN2FkZjYxNmE2MDUxNjQxZDYz
NWQyOWEyY2M5OWRlODBmNDkzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtNTg0LDExICs1
ODQsMTAgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBj
b25zdAogCiAjZW5kaWYKIAotdm9pZCBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBiZWdp
bm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGlu
ZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rp
b24gdGV4dERpcmVjdGlvbikgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5jZSBGb250OjphcHBseVRy
YW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlw
aEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5n
LCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdW
aWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbikgY29uc3QKIHsKICAgICBVTlVT
RURfUEFSQU0ocmVxdWlyZXNTaGFwaW5nKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgR2x5
cGhCdWZmZXIgaW5pdGlhbCBhZHZhbmNlLgogI2lmIFVTRShDVEZPTlRTSEFQRUdMWVBIUykKICAg
ICBhdXRvIGhhbmRsZXIgPSBeKENGUmFuZ2UgcmFuZ2UsIENHR2x5cGgqKiBuZXdHbHlwaHNQb2lu
dGVyLCBDR1NpemUqKiBuZXdBZHZhbmNlc1BvaW50ZXIsIENHUG9pbnQqKiBuZXdPZmZzZXRzUG9p
bnRlciwgQ0ZJbmRleCoqIG5ld0luZGljZXNQb2ludGVyKQogICAgIHsKQEAgLTYxNiwxOCArNjE1
LDIzIEBAIHZvaWQgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRlCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXg7ICsraSkKICAgICAg
ICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5kZXgpW2ldIC09
IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCi0gICAgQ1RGb250U2hhcGVHbHlwaHMoCisgICAgYXV0
byBudW1iZXJPZklucHV0R2x5cGhzID0gZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5
cGhJbmRleDsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBDVEZvbnRTaGFwZUdseXBocygK
ICAgICAgICAgbV9wbGF0Zm9ybURhdGEuY3RGb250KCksCiAgICAgICAgIGdseXBoQnVmZmVyLmds
eXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxDR1Np
emUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksCi0gICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Q0dQb2ludCo+KGdseXBoQnVmZmVyLm9yaWdpbnMoYmVnaW5uaW5n
R2x5cGhJbmRleCkpLAorICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlw
aEluZGV4KSwKKyAgICAgICAgZ2x5cGhCdWZmZXIub3JpZ2lucyhiZWdpbm5pbmdHbHlwaEluZGV4
KSwKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5k
ZXgpLAogICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPih1cGNvbnZlcnRl
ZENoYXJhY3RlcnMuZ2V0KCkpLAotICAgICAgICBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5p
bmdHbHlwaEluZGV4LAorICAgICAgICBudW1iZXJPZklucHV0R2x5cGhzLAogICAgICAgICBvcHRp
b25zLAogICAgICAgICBsb2NhbGVTdHJpbmcuZ2V0KCksCiAgICAgICAgIGhhbmRsZXIpOwogCisg
ICAgQVNTRVJUKG51bWJlck9mSW5wdXRHbHlwaHMgfHwgZ2x5cGhCdWZmZXIuc2l6ZSgpID09IGJl
Z2lubmluZ0dseXBoSW5kZXgpOworICAgIEFTU0VSVChudW1iZXJPZklucHV0R2x5cGhzIHx8ICgh
aW5pdGlhbEFkdmFuY2Uud2lkdGggJiYgIWluaXRpYWxBZHZhbmNlLmhlaWdodCkpOworCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0ds
eXBoSW5kZXg7ICsraSkKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lu
bmluZ0dseXBoSW5kZXgpW2ldICs9IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCkBAIC02NTIsMTEg
KzY1NiwxNSBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZQogCiAgICAgQ1RGb250VHJhbnNmb3Jt
T3B0aW9ucyBvcHRpb25zID0gKGVuYWJsZUtlcm5pbmcgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlQ
b3NpdGlvbmluZyA6IDApIHwga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZzsKICAgICBDVEZv
bnRUcmFuc2Zvcm1HbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBoQnVmZmVyLmds
eXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwgcmVpbnRlcnByZXRfY2FzdDxDR1NpemUqPihnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksIGdseXBoQnVmZmVyLnNpemUo
KSAtIGJlZ2lubmluZ0dseXBoSW5kZXgsIG9wdGlvbnMpOworCisgICAgYXV0byBpbml0aWFsQWR2
YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKICNlbmRpZgogCiAgICAgLy8gU2VlIHRo
ZSBjb21tZW50IGFib3ZlIGluIHRoaXMgZnVuY3Rpb24gd2hlcmUgdGhlIG90aGVyIGNhbGwgdG8g
cmV2ZXJzZSgpIGlzLgogICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJU
TCkKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZShiZWdpbm5pbmdHbHlwaEluZGV4LCBnbHlw
aEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KTsKKworICAgIHJldHVybiBpbml0
aWFsQWR2YW5jZTsKIH0KIAogc3RhdGljIGludCBleHRyYWN0TnVtYmVyKENGTnVtYmVyUmVmIG51
bWJlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433564</attachid>
            <date>2021-07-14 23:29:40 -0700</date>
            <delta_ts>2021-07-19 23:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227979-20210714232939.patch</filename>
            <type>text/plain</type>
            <size>19437</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhNjUzOWE4YzFlZTA3
ZmJlYWQ2YzA2N2NkNDllNGYyODA3ZjE5My4uODA1OTBjNDg1ZDQ4MDM3OGFmMTNiYmQ1NWI4ZjM5
NmJkMWVjNDlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA3LTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YXBwbHlUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRo
Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRU
cmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZExheW91dFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5SW5pdGlhbEFkdmFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y29tbWl0Q3VycmVudEZvbnRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjphcHBseVRy
YW5zZm9ybXMgY29uc3QpOgorCiAyMDIxLTA3LTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBBcHBsZSBpbnRlcm5hbCBpT1MgU2lt
dWxhdG9yIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA0NDkzMmRlZmNkOTg2M2U2MGYy
MGNhOWQxNzYyYTc5NjUzMGIxZmI4Li41NzJkNWVkNzVhNzg1NGIzN2YyNTMxOTMyYjE2NmJjYTky
MmQ0ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcyMiw2ICs3MjIsOCBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhlIGluaXRpYWwgYWR2YW5jZSBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgdmlzdWFsbHkgcHJl
dmlvdXMgZ2x5cGgncyBhZHZhbmNlLCBub3QgdGhlIGN1cnJlbnQgZ2x5cGgncyBhZHZhbmNlLgor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGFjdHVhbGx5IHRydWU/Pz8KICAgICAg
ICAgICAgICAgICBhZHZhbmNlLmV4cGFuZChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgp
LndpZHRoKCksIGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOwogICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBvcmlnaW5zID0gY29tcGxleFRleHRSdW4uZ2x5cGhPcmln
aW5zKCkpCiAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2UuZXhwYW5kKC1vcmlnaW5zWzBdLngo
KSwgLW9yaWdpbnNbMF0ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKaW5kZXggMTdhMzdhZjhiYmZkODc5ZDVhODQ0MzhjZTRlMzk5M2M0N2Y3OTEzZi4uMWFk
NWI0ZDZkMjc3NjBjM2Q2YzVmYzA4ZWRhZjBkYzhkYTRjOTI3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCBSZWZQdHI8Rm9u
dD4gRm9udDo6Y3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgZmxvYQogfQogCiAjaWYgIVVTRShDT1JFX1RFWFQpCi12b2lkIEZvbnQ6OmFwcGx5
VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCwgYm9vbCwg
Y29uc3QgQXRvbVN0cmluZyYsIFN0cmluZ1ZpZXcsIFRleHREaXJlY3Rpb24pIGNvbnN0CitHbHlw
aEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBib29sLCBib29sLCBjb25zdCBBdG9tU3RyaW5nJiwgU3RyaW5nVmlldywg
VGV4dERpcmVjdGlvbikgY29uc3QKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCmluZGV4IDQ3YTdlMTJmOWJjNjg5MjBjYTcxNGU5MjQ3OWU1OWVmM2Vl
ZThkMzIuLjBkZWU4YTUwZTUzMzM5MWIzZjc4YWY4MjhlMjI5NjU1YWFhMzE5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVu
Y2UoY29uc3QgVUNoYXIqLCBzaXplX3QpIGNvbnN0OwotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1z
KEdseXBoQnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRleCwgdW5zaWduZWQgYmVn
aW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBp
bmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0
aW9uKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYXBwbHlUcmFuc2Zvcm1zKEdseXBo
QnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5uaW5n
U3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcsIGNv
bnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uKSBj
b25zdDsKIAogICAgIC8vIFJldHVybnMgbnVsbG9wdCBpZiBub25lIG9mIHRoZSBnbHlwaHMgYXJl
IE9ULVNWRyBnbHlwaHMuCiAgICAgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IGZpbmRPVFNWR0ds
eXBocyhjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5zaWduZWQgY291bnQpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGFjNTRlNjgxMzk5Mjg0ZWQ4YmY4YTExYzc2YWIxMWZkZmNmZDEzZmUuLjI3NjBiODRmOWMwMDU2
MTBjNDlhNmZhOWM1ODMwNGYwNDg4Y2QwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw2ICsyNTQsOCBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkCiAgICAgICAgIHNpbXBsZUl0ZXJhdG9yLmFkdmFuY2UocnVuLmxlbmd0
aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgICAgIHRvdGFsV2lkdGggPSBzaW1wbGVJdGVyYXRvci5y
dW5XaWR0aFNvRmFyKCk7CiAgICAgICAgIHNpbXBsZUl0ZXJhdG9yLmZpbmFsaXplKGdseXBoQnVm
ZmVyKTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmFsaXppbmcgdGhlIFdpZHRoSXRlcmF0b3IgY2Fu
IGFmZmVjdCB0aGUgdG90YWwgd2lkdGguCisgICAgICAgIC8vIFdlIG1pZ2h0IG5lZWQgdG8gYWRq
dXN0IHRoZSB2YXJpb3VzIHdpZHRocyB3ZSd2ZSBtZWFzdXJlZCB0byBhY2NvdW50IGZvciB0aGF0
LgogICAgIH0KIAogICAgIGlmIChvdXRXaWR0aEJlZm9yZVJhbmdlKQpAQCAtMzE5LDcgKzMyMSw3
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAgICAgIGdseXBoQnVmZmVyLmFkZChnbHlw
aCwgZm9udCwgZ2x5cGhXaWR0aCwgaSk7CiAgICAgfQogCi0gICAgZm9udC5hcHBseVRyYW5zZm9y
bXMoZ2x5cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5pbmcoKSwgcmVxdWlyZXNTaGFwaW5nKCks
IGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIHRleHQsIHRleHREaXJlY3Rpb24p
OworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1
ZmZlciwgMCwgMCwgZW5hYmxlS2VybmluZygpLCByZXF1aXJlc1NoYXBpbmcoKSwgZm9udERlc2Ny
aXB0aW9uKCkuY29tcHV0ZWRMb2NhbGUoKSwgdGV4dCwgdGV4dERpcmVjdGlvbik7CiAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgb25seSB0byBtYXRjaCB0aGUgcmVzdWx0IG9mIHRoZSBzbG93IHBhdGgu
CiAgICAgLy8gU2FtZSBnbHlwaCB3aWR0aHMgYnV0IGRpZmZlcmVudCBmbG9hdGluZyBwb2ludCBh
cml0aG1ldGljIGNhbiBwcm9kdWNlIGRpZmZlcmVudCBydW4gd2lkdGguCiAgICAgZmxvYXQgcnVu
V2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgPSAtcnVuV2lkdGg7CkBAIC0zMjcs
NiArMzI5LDE1IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5n
VmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAgICAgIHJ1bldpZHRoRGlm
ZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVkICs9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdChpKSk7CiAgICAgcnVuV2lkdGggKz0gcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRy
YW5zZm9ybUFwcGxpZWQ7CiAKKyAgICBpZiAoZ2x5cGhCdWZmZXIuc2l6ZSgpKSB7CisgICAgICAg
IC8vIFNlZSB0aGUgQVNDSUktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmgu
CisgICAgICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgcmVmZXJzIHRvIHRoZSB2aXN1YWxseSBp
bml0aWFsIGFkdmFuY2UsIGJ1dCB0aGUgR2x5cGhCdWZmZXIgaXMgaW4gbG9naWNhbCBvcmRlci4K
KyAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQorICAgICAg
ICAgICAgcnVuV2lkdGggKz0gV2ViQ29yZTo6d2lkdGgoaW5pdGlhbEFkdmFuY2UpIC0geChnbHlw
aEJ1ZmZlci5vcmlnaW5BdCgwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ1bldpZHRo
ICs9IFdlYkNvcmU6OndpZHRoKGluaXRpYWxBZHZhbmNlKSAtIHgoZ2x5cGhCdWZmZXIub3JpZ2lu
QXQoZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gMSkpOworICAgIH0KKwogICAgIGlmIChjYWNoZUVudHJ5
KQogICAgICAgICAqY2FjaGVFbnRyeSA9IHJ1bldpZHRoOwogICAgIHJldHVybiBydW5XaWR0aDsK
QEAgLTEzMjYsNiArMTMzNyw3IEBAIGlubGluZSBib29sIHNob3VsZERyYXdJZkxvYWRpbmcoY29u
c3QgRm9udCYgZm9udCwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkCiAgICAgcmV0dXJu
ICFmb250LmlzSW50ZXJzdGl0aWFsKCkgfHwgZm9udC52aXNpYmlsaXR5KCkgPT0gRm9udDo6Vmlz
aWJpbGl0eTo6VmlzaWJsZSB8fCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPT0gRm9udENhc2Nh
ZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbjo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeTsK
IH0KIAorLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoZSBHbHlwaEJ1ZmZlcidzIGluaXRpYWwg
YWR2YW5jZSBoYXMgYWxyZWFkeSBiZWVuIGluY29ycG9yYXRlZCBpbnRvIHRoZSBzdGFydCBwb2lu
dC4KIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQs
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGdseXBoQnVmZmVyLmlzRmxhdHRlbmVkKCkpOwpAQCAtMTM4Nyw2ICsx
Mzk5LDkgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYKICAgICBHbHlwaCBtYXJrR2x5cGggPSBt
YXJrR2x5cGhEYXRhLnZhbHVlKCkuZ2x5cGg7CiAgICAgR2x5cGggc3BhY2VHbHlwaCA9IG1hcmtG
b250RGF0YS0+c3BhY2VHbHlwaCgpOwogCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gdGFr
ZSB0aGUgaW5pdGlhbCBhZHZhbmNlIGludG8gYWNjb3VudC4KKyAgICAvLyBUaGUgcHJvYmxlbSBt
aWdodCBhY3R1YWxseSBiZSBoYXJkZXIgZm9yIGNvbXBsZXggdGV4dCwgdGhvdWdoLgorICAgIC8v
IFB1dHRpbmcgYSBtYXJrIG92ZXIgZXZlcnkgZ2x5cGggcHJvYmFibHkgaXNuJ3QgZ3JlYXQgaW4g
Y29tcGxleCBzY3JpcHRzLgogICAgIGZsb2F0IG1pZGRsZU9mTGFzdEdseXBoID0gb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgMCk7CiAgICAgRmxvYXRQb2ludCBzdGFy
dFBvaW50KHBvaW50LngoKSArIG1pZGRsZU9mTGFzdEdseXBoIC0gb2Zmc2V0VG9NaWRkbGVPZkds
eXBoKCptYXJrRm9udERhdGEsIG1hcmtHbHlwaCksIHBvaW50LnkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggZTE2
MWQwMTc0MmY3MzJjODE0ZDVhMmViMGY5YjAyY2EwYjg0MzNjMC4uOGJiOWUwOWZlOGYzYTMwY2Vl
Njg1ZmZiNWZhZDQ4NjcyY2Q4YTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTkwLDEzICs5MCwxMyBAQCBpbmxpbmUg
YXV0byBXaWR0aEl0ZXJhdG9yOjpzaG91bGRBcHBseUZvbnRUcmFuc2Zvcm1zKGNvbnN0IEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZgogICAgIHJldHVybiBUcmFuc2Zvcm1zVHlwZTo6Tm90Rm9yY2VkOwog
fQogCi1pbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBj
dXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgZm9yY2UsIENoYXJh
Y3RlcnNUcmVhdGVkQXNTcGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKQoraW5saW5lIGF1
dG8gV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVy
SW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNT
cGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKSAtPiBBcHBseUZvbnRUcmFuc2Zvcm1zUmVz
dWx0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChjdXJyZW50Q2hhcmFjdGVySW5kZXgsIHNob3VsZEFw
cGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hh
cmFjdGVySW5kZXgpICE9IFdpZHRoSXRlcmF0b3I6OlRyYW5zZm9ybXNUeXBlOjpOb25lKTsKIAog
ICAgIGF1dG8gZ2x5cGhCdWZmZXJTaXplID0gZ2x5cGhCdWZmZXIuc2l6ZSgpOwogICAgIGlmICgh
Zm9yY2UgJiYgZ2x5cGhCdWZmZXJTaXplIDw9IGxhc3RHbHlwaENvdW50ICsgMSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IDAsIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKSB9
OwogCiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFu
Y2VzKDApOwogICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKQEAgLTEwNSw3ICsxMDUsNyBAQCBp
bmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogCiAgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50IDw9IGds
eXBoQnVmZmVyU2l6ZSk7CiAKLSAgICBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwg
bGFzdEdseXBoQ291bnQsIG1fY3VycmVudENoYXJhY3RlckluZGV4LCBtX2VuYWJsZUtlcm5pbmcs
IG1fcmVxdWlyZXNTaGFwaW5nLCBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRMb2Nh
bGUoKSwgbV9ydW4udGV4dCgpLCBtX3J1bi5kaXJlY3Rpb24oKSk7CisgICAgYXV0byBpbml0aWFs
QWR2YW5jZSA9IGZvbnQuYXBwbHlUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5cGhDb3Vu
dCwgbV9jdXJyZW50Q2hhcmFjdGVySW5kZXgsIG1fZW5hYmxlS2VybmluZywgbV9yZXF1aXJlc1No
YXBpbmcsIG1fZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpLCBtX3J1bi50
ZXh0KCksIG1fcnVuLmRpcmVjdGlvbigpKTsKICAgICBnbHlwaEJ1ZmZlclNpemUgPSBnbHlwaEJ1
ZmZlci5zaXplKCk7CiAgICAgYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcygwKTsKIApA
QCAtMTMzLDcgKzEzMyw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRU
cmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKICAgICAg
ICAgYWZ0ZXJXaWR0aCArPSB3aWR0aChhZHZhbmNlc1tpXSk7CiAKLSAgICByZXR1cm4gYWZ0ZXJX
aWR0aCAtIGJlZm9yZVdpZHRoOworICAgIHJldHVybiB7IGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0
aCwgaW5pdGlhbEFkdmFuY2UgfTsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwg
Ym9vbD4gZXhwYW5zaW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXRBc1NwYWNl
LCBib29sIGx0ciwgYm9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGZvcmJpZExlZnRFeHBhbnNp
b24sIGJvb2wgZm9yYmlkUmlnaHRFeHBhbnNpb24sIGJvb2wgZm9yY2VMZWZ0RXhwYW5zaW9uLCBi
b29sIGZvcmNlUmlnaHRFeHBhbnNpb24pCkBAIC0xNjUsMTEgKzE2NSw1NSBAQCBzdGF0aWMgaW5s
aW5lIHN0ZDo6cGFpcjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFw
aCwgYm9vbCB0cmVhdAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihleHBhbmRMZWZ0LCBleHBh
bmRSaWdodCk7CiB9CiAKK3N0YXRpYyBmbG9hdCBhZGRMYXlvdXRXaWR0aChHbHlwaEJ1ZmZlckFk
dmFuY2UmIHZpc3VhbGx5UHJldmlvdXNBZHZhbmNlLCBHbHlwaEJ1ZmZlck9yaWdpbiYgdmlzdWFs
bHlGaXJzdE9yaWdpbiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBpbml0aWFsQWR2YW5jZSkK
K3sKKyAgICBhdXRvIHdpZHRoQWRqdXN0bWVudCA9IHdpZHRoKGluaXRpYWxBZHZhbmNlKSAtIHgo
dmlzdWFsbHlGaXJzdE9yaWdpbik7CisgICAgYXV0byBoZWlnaHRBZGp1c3RtZW50ID0gaGVpZ2h0
KGluaXRpYWxBZHZhbmNlKSAtIHkodmlzdWFsbHlGaXJzdE9yaWdpbik7CisgICAgc2V0V2lkdGgo
dmlzdWFsbHlQcmV2aW91c0FkdmFuY2UsIHdpZHRoKHZpc3VhbGx5UHJldmlvdXNBZHZhbmNlKSAr
IHdpZHRoQWRqdXN0bWVudCk7CisgICAgc2V0SGVpZ2h0KHZpc3VhbGx5UHJldmlvdXNBZHZhbmNl
LCBoZWlnaHQodmlzdWFsbHlQcmV2aW91c0FkdmFuY2UpICsgaGVpZ2h0QWRqdXN0bWVudCk7Cisg
ICAgcmV0dXJuIHdpZHRoQWRqdXN0bWVudDsKK30KKwordm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgc3RkOjpvcHRpb25hbDxH
bHlwaEJ1ZmZlckFkdmFuY2U+IGluaXRpYWxBZHZhbmNlLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3Vu
dCkKK3sKKyAgICBBU1NFUlQoZ2x5cGhCdWZmZXIuc2l6ZSgpID49IGxhc3RHbHlwaENvdW50KTsK
KworICAgIGlmIChnbHlwaEJ1ZmZlci5zaXplKCkgPD0gbGFzdEdseXBoQ291bnQpCisgICAgICAg
IHJldHVybjsKKworICAgIEFTU0VSVChsYXN0R2x5cGhDb3VudCB8fCAoIXdpZHRoKG1fbGVmdG92
ZXJJbml0aWFsQWR2YW5jZSkgJiYgIWhlaWdodChtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpKSk7
CisKKyAgICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMICYmIGxh
c3RHbHlwaENvdW50KSB7CisgICAgICAgIGF1dG8mIHZpc3VhbGx5UHJldmlvdXNBZHZhbmNlID0g
KmdseXBoQnVmZmVyLmFkdmFuY2VzKGxhc3RHbHlwaENvdW50KTsKKyAgICAgICAgYXV0byYgdmlz
dWFsbHlGaXJzdE9yaWdpbiA9ICpnbHlwaEJ1ZmZlci5vcmlnaW5zKGxhc3RHbHlwaENvdW50IC0g
MSk7CisgICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSBhZGRMYXlvdXRXaWR0aCh2aXN1YWxseVBy
ZXZpb3VzQWR2YW5jZSwgdmlzdWFsbHlGaXJzdE9yaWdpbiwgbV9sZWZ0b3ZlckluaXRpYWxBZHZh
bmNlKTsKKyAgICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVy
QWR2YW5jZSgpOworICAgIH0KKworICAgIGlmIChpbml0aWFsQWR2YW5jZSkgeworICAgICAgICBp
ZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQorICAgICAgICAgICAg
bV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2UudmFsdWUoKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGFzdEdseXBoQ291bnQpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiB2aXN1YWxseVByZXZpb3VzQWR2YW5jZSA9ICpnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhsYXN0R2x5cGhDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIGF1dG8mIHZpc3VhbGx5Rmly
c3RPcmlnaW4gPSAqZ2x5cGhCdWZmZXIub3JpZ2lucyhsYXN0R2x5cGhDb3VudCk7CisgICAgICAg
ICAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IGFkZExheW91dFdpZHRoKHZpc3VhbGx5UHJldmlv
dXNBZHZhbmNlLCB2aXN1YWxseUZpcnN0T3JpZ2luLCBpbml0aWFsQWR2YW5jZS52YWx1ZSgpKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLmV4cGFuZElu
aXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAgICAgICB9CisgICAgfQor
fQorCiB2b2lkIFdpZHRoSXRlcmF0b3I6OmNvbW1pdEN1cnJlbnRGb250UmFuZ2UoR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVu
dENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBjb25zdCBGb250JiBwcmltYXJ5Rm9u
dCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlLCBDaGFy
YWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2U7CiAgICAgYXV0
byB0cmFuc2Zvcm1zVHlwZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIs
IGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOwotICAgIGlmICh0cmFuc2Zv
cm1zVHlwZSAhPSBUcmFuc2Zvcm1zVHlwZTo6Tm9uZSkKLSAgICAgICAgbV9ydW5XaWR0aFNvRmFy
ICs9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJy
ZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBlID09IFRyYW5zZm9ybXNUeXBl
OjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CisgICAgaWYgKHRyYW5zZm9ybXNU
eXBlICE9IFRyYW5zZm9ybXNUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gYXBwbHlGb250VHJh
bnNmb3Jtc1Jlc3VsdCA9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlw
aENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBlID09IFRy
YW5zZm9ybXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CisgICAgICAg
IG1fcnVuV2lkdGhTb0ZhciArPSBhcHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0LmFkZGl0aW9uYWxB
ZHZhbmNlOworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1
bHQuaW5pdGlhbEFkdmFuY2U7CisgICAgfQorICAgIGFwcGx5SW5pdGlhbEFkdmFuY2UoZ2x5cGhC
dWZmZXIsIGluaXRpYWxBZHZhbmNlLCBsYXN0R2x5cGhDb3VudCk7CiAgICAgbV9jdXJyZW50Q2hh
cmFjdGVySW5kZXggPSBjdXJyZW50Q2hhcmFjdGVySW5kZXg7CiAKICAgICBpZiAod2lkdGhPZkN1
cnJlbnRGb250UmFuZ2UgJiYgbV9mYWxsYmFja0ZvbnRzICYmICZmb250ICE9ICZwcmltYXJ5Rm9u
dCkgewpAQCAtNDU2LDcgKzUwMCw5IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNw
YWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiB2b2lkIFdp
ZHRoSXRlcmF0b3I6OmZpbmFsaXplKEdseXBoQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
KG1fcnVuLnJ0bCgpIHx8ICFtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKLSAgICAvLyBJ
biBMVFIgdGhpcyBkb2VzIG5vdGhpbmcuIEluIFJUTCwgdGhpcyBhZGRzIGxlZnQgd2lkdGggYnkg
bW92aW5nIHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIC8vIEluIExUUiB0aGVzZSBk
b2VzIG5vdGhpbmcuIEluIFJUTCwgdGhlc2UgYWRkIGxlZnQgd2lkdGggYnkgbW92aW5nIHRoZSB3
aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIGJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5jZSht
X2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOworICAgIG1fcnVuV2lkdGhTb0ZhciArPSB3aWR0aCht
X2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOwogICAgIGJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5j
ZShtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKICAgICBtX3J1bldpZHRoU29GYXIgKz0g
bV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aDsKICAgICBtX2xlZnRvdmVySnVzdGlmaWNhdGlv
bldpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuaAppbmRleCBmNjA2ZmEyMzI0OWE2YzExYWZmOWYwMzljYjI2OTY1OTdlNmVmZmVh
Li4yNDA1OGIxY2U1ZTQ0OWEwMDJmZGY0ODdlODdhNjkxOWU5MDdhOGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBAIC02Myw4ICs2
MywxMyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBUcmFuc2Zvcm1zVHlwZSB7IE5vbmUs
IEZvcmNlZCwgTm90Rm9yY2VkIH07CiAgICAgVHJhbnNmb3Jtc1R5cGUgc2hvdWxkQXBwbHlGb250
VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1
bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpIGNvbnN0OwotICAgIGZsb2F0IGFwcGx5Rm9u
dFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWdu
ZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiwgYm9vbCBmb3JjZSwgQ2hhcmFj
dGVyc1RyZWF0ZWRBc1NwYWNlJik7CisgICAgc3RydWN0IEFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1
bHQgeworICAgICAgICBmbG9hdCBhZGRpdGlvbmFsQWR2YW5jZTsKKyAgICAgICAgR2x5cGhCdWZm
ZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlOworICAgIH07CisgICAgQXBwbHlGb250VHJhbnNmb3Jt
c1Jlc3VsdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgbGFzdEds
eXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9udCYsIGJv
b2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwogICAgIHZvaWQgY29tbWl0Q3Vy
cmVudEZvbnRSYW5nZShHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNp
Z25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmLCBjb25zdCBGb250JiBwcmlt
YXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdl
LCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmKTsKKyAgICB2b2lkIGFwcGx5SW5pdGlhbEFkdmFu
Y2UoR2x5cGhCdWZmZXImLCBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlh
bEFkdmFuY2UsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50KTsKIAogICAgIGJvb2wgaGFzRXh0cmFT
cGFjaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGdseXBo
QnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyRGVzdGluYXRpb25JbmRleCwgZmxv
YXQgc3RhcnRpbmdSdW5XaWR0aCk7CkBAIC04Miw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aFNldDxjb25zdCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7IG51bGxwdHIgfTsKIAogICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OworICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UgeyBtYWtlR2x5cGhCdWZmZXJBZHZh
bmNlKCkgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCB7IDAgfTsKICAg
ICBmbG9hdCBtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoIHsgMCB9OwogICAgIGZsb2F0IG1f
cnVuV2lkdGhTb0ZhciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IDI5YTA3Yzc2YWYw
YWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkuLjEwN2FkZjYxNmE2MDUxNjQxZDYzNWQyOWEy
Y2M5OWRlODBmNDkzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtNTg0LDExICs1ODQsMTAg
QEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAog
CiAjZW5kaWYKIAotdm9pZCBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdT
dHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGluZywgY29u
c3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbikgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5jZSBGb250OjphcHBseVRyYW5zZm9y
bXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4
LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29s
IHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRl
eHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbikgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0ocmVxdWlyZXNTaGFwaW5nKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgR2x5cGhCdWZm
ZXIgaW5pdGlhbCBhZHZhbmNlLgogI2lmIFVTRShDVEZPTlRTSEFQRUdMWVBIUykKICAgICBhdXRv
IGhhbmRsZXIgPSBeKENGUmFuZ2UgcmFuZ2UsIENHR2x5cGgqKiBuZXdHbHlwaHNQb2ludGVyLCBD
R1NpemUqKiBuZXdBZHZhbmNlc1BvaW50ZXIsIENHUG9pbnQqKiBuZXdPZmZzZXRzUG9pbnRlciwg
Q0ZJbmRleCoqIG5ld0luZGljZXNQb2ludGVyKQogICAgIHsKQEAgLTYxNiwxOCArNjE1LDIzIEBA
IHZvaWQgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5z
aWduZWQgYmVnaW5uaW5nR2x5cGhJbmRlCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGds
eXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXg7ICsraSkKICAgICAgICAgZ2x5
cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5kZXgpW2ldIC09IGJlZ2lu
bmluZ1N0cmluZ0luZGV4OwogCi0gICAgQ1RGb250U2hhcGVHbHlwaHMoCisgICAgYXV0byBudW1i
ZXJPZklucHV0R2x5cGhzID0gZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRl
eDsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBDVEZvbnRTaGFwZUdseXBocygKICAgICAg
ICAgbV9wbGF0Zm9ybURhdGEuY3RGb250KCksCiAgICAgICAgIGdseXBoQnVmZmVyLmdseXBocyhi
ZWdpbm5pbmdHbHlwaEluZGV4KSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxDR1NpemUqPihn
bHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksCi0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0dQb2ludCo+KGdseXBoQnVmZmVyLm9yaWdpbnMoYmVnaW5uaW5nR2x5cGhJ
bmRleCkpLAorICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4
KSwKKyAgICAgICAgZ2x5cGhCdWZmZXIub3JpZ2lucyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKICAg
ICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5kZXgpLAog
ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPih1cGNvbnZlcnRlZENoYXJh
Y3RlcnMuZ2V0KCkpLAotICAgICAgICBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlw
aEluZGV4LAorICAgICAgICBudW1iZXJPZklucHV0R2x5cGhzLAogICAgICAgICBvcHRpb25zLAog
ICAgICAgICBsb2NhbGVTdHJpbmcuZ2V0KCksCiAgICAgICAgIGhhbmRsZXIpOwogCisgICAgQVNT
RVJUKG51bWJlck9mSW5wdXRHbHlwaHMgfHwgZ2x5cGhCdWZmZXIuc2l6ZSgpID09IGJlZ2lubmlu
Z0dseXBoSW5kZXgpOworICAgIEFTU0VSVChudW1iZXJPZklucHV0R2x5cGhzIHx8ICghaW5pdGlh
bEFkdmFuY2Uud2lkdGggJiYgIWluaXRpYWxBZHZhbmNlLmhlaWdodCkpOworCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5k
ZXg7ICsraSkKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0ds
eXBoSW5kZXgpW2ldICs9IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCkBAIC02NTIsMTEgKzY1Niwx
NSBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZQogCiAgICAgQ1RGb250VHJhbnNmb3JtT3B0aW9u
cyBvcHRpb25zID0gKGVuYWJsZUtlcm5pbmcgPyBrQ1RGb250VHJhbnNmb3JtQXBwbHlQb3NpdGlv
bmluZyA6IDApIHwga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZzsKICAgICBDVEZvbnRUcmFu
c2Zvcm1HbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBoQnVmZmVyLmdseXBocyhi
ZWdpbm5pbmdHbHlwaEluZGV4KSwgcmVpbnRlcnByZXRfY2FzdDxDR1NpemUqPihnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksIGdseXBoQnVmZmVyLnNpemUoKSAtIGJl
Z2lubmluZ0dseXBoSW5kZXgsIG9wdGlvbnMpOworCisgICAgYXV0byBpbml0aWFsQWR2YW5jZSA9
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKICNlbmRpZgogCiAgICAgLy8gU2VlIHRoZSBjb21t
ZW50IGFib3ZlIGluIHRoaXMgZnVuY3Rpb24gd2hlcmUgdGhlIG90aGVyIGNhbGwgdG8gcmV2ZXJz
ZSgpIGlzLgogICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkKICAg
ICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZShiZWdpbm5pbmdHbHlwaEluZGV4LCBnbHlwaEJ1ZmZl
ci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KTsKKworICAgIHJldHVybiBpbml0aWFsQWR2
YW5jZTsKIH0KIAogc3RhdGljIGludCBleHRyYWN0TnVtYmVyKENGTnVtYmVyUmVmIG51bWJlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433851</attachid>
            <date>2021-07-19 23:34:24 -0700</date>
            <delta_ts>2021-07-25 16:58:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-227979-20210719233423.patch</filename>
            <type>text/plain</type>
            <size>29091</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIwN2NhNmNmZDcxMTc0
ZWJhNzFkNTg1MTk5MzRmMDcxOGFiMDZmMC4uNWFlNmRkMzNmZGNhZDU3MDcyZWQyODJjMDIyMDBi
Njg5MTA1N2Y3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA3LTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0
R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YXBwbHlUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRo
Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRU
cmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZExheW91dFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5SW5pdGlhbEFkdmFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y29tbWl0Q3VycmVudEZvbnRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjphcHBseVRy
YW5zZm9ybXMgY29uc3QpOgorCiAyMDIxLTA3LTE5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBJREJUcmFuc2FjdGlvbi5jb21taXQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKaW5kZXggNDQ5MzJkZWZjZDk4NjNlNjBmMjBjYTlkMTc2MmE3OTY1MzBi
MWZiOC4uMGQxYzUzYjA0ZGRkYzgwYWNhNjRkMWU1ZmQ1ZjNlMzNiYWVlYTQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCkBAIC02MDQsMjEgKzYwNCw4IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9s
bGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBH
CiAgICAgICAgICAgICBpZiAoZ2x5cGhCdWZmZXIgJiYgIW1fY2hhcmFjdGVySW5DdXJyZW50R2x5
cGgpIHsKICAgICAgICAgICAgICAgICBhdXRvIGN1cnJlbnRHbHlwaE9yaWdpbiA9IGdseXBoT3Jp
Z2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyKTsKICAgICAgICAgICAgICAg
ICBHbHlwaEJ1ZmZlckFkdmFuY2UgcGFpbnRBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5j
ZShhZGp1c3RlZEJhc2VBZHZhbmNlKTsKLSAgICAgICAgICAgICAgICBpZiAoIWdseXBoSW5kZXhJ
bnRvQ3VycmVudFJ1bikgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgbGF5b3V0
IGFkdmFuY2Ugb2YgZXZlcnkgcnVuIGluY2x1ZGVzIHRoZSAiaW5pdGlhbCBsYXlvdXQgYWR2YW5j
ZS4iIEhvd2V2ZXIsIGhlcmUsIHdlIG5lZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQg
YWR2YW5jZXMsIHNvIHN1YnRyYWN0IGl0IG91dCBiZWZvcmUgdHJhbnNmb3JtaW5nIHRoZSBsYXlv
dXQgYWR2YW5jZSBpbnRvIGEgcGFpbnQgYWR2YW5jZS4KLSAgICAgICAgICAgICAgICAgICAgc2V0
V2lkdGgocGFpbnRBZHZhbmNlLCB3aWR0aChwYWludEFkdmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVu
LmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi54KCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgaGVpZ2h0KHBhaW50QWR2
YW5jZSkgLSAoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSAtIGN1cnJl
bnRHbHlwaE9yaWdpbi55KCkpKTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
c2V0V2lkdGgocGFpbnRBZHZhbmNlLCB3aWR0aChwYWludEFkdmFuY2UpICsgZ2x5cGhPcmlnaW4o
Z2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkgLSBjdXJyZW50R2x5
cGhPcmlnaW4ueCgpKTsKICAgICAgICAgICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCBo
ZWlnaHQocGFpbnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRl
eHRDb250cm9sbGVyICsgMSkueSgpIC0gY3VycmVudEdseXBoT3JpZ2luLnkoKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGdseXBoSW5kZXhJbnRvQ3VycmVudFJ1biA9PSBnbHlwaENvdW50IC0gMSAm
JiBjdXJyZW50UnVuSW5kZXggKyAxIDwgcnVuQ291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gT3VyIHBhaW50IGFkdmFuY2UgcG9pbnRzIHRvIHRoZSBlbmQgb2YgdGhlIHJ1bi4gSG93ZXZl
ciwgdGhlIG5leHQgcnVuIG1heSBoYXZlIGFuCi0gICAgICAgICAgICAgICAgICAgIC8vIGluaXRp
YWwgYWR2YW5jZSwgYW5kIG91ciBwYWludCBhZHZhbmNlIG5lZWRzIHRvIHBvaW50IHRvIHRoZSBs
b2NhdGlvbiBvZiB0aGUgbmV4dAotICAgICAgICAgICAgICAgICAgICAvLyBnbHlwaC4gU28sIHdl
IG5lZWQgdG8gYWRkIGluIHRoZSBuZXh0IHJ1bidzIGluaXRpYWwgYWR2YW5jZS4KLSAgICAgICAg
ICAgICAgICAgICAgc2V0V2lkdGgocGFpbnRBZHZhbmNlLCB3aWR0aChwYWludEFkdmFuY2UpIC0g
Z2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkg
KyBtX2NvbXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2Uo
KS53aWR0aCgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwg
aGVpZ2h0KHBhaW50QWR2YW5jZSkgLSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhU
ZXh0Q29udHJvbGxlciArIDEpLnkoKSArIG1fY29tcGxleFRleHRSdW5zW2N1cnJlbnRSdW5JbmRl
eCArIDFdLT5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgLWhlaWdodChwYWludEFkdmFu
Y2UpKTsgLy8gSW5jcmVhc2luZyB5IHBvaW50cyBkb3duCiAgICAgICAgICAgICAgICAgZ2x5cGhC
dWZmZXItPmFkZChtX2FkanVzdGVkR2x5cGhzW2dseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250
cm9sbGVyXSwgY29tcGxleFRleHRSdW4uZm9udCgpLCBwYWludEFkdmFuY2UsIGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQobV9nbHlwaEluQ3VycmVudFJ1bikpOwogICAgICAgICAgICAgfQpAQCAtNjg1
LDYgKzY3Miw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRB
ZHZhbmNlcygpCiAgICAgZm9yIChzaXplX3QgcnVuSW5kZXggPSAwOyBydW5JbmRleCA8IHJ1bkNv
dW50OyArK3J1bkluZGV4KSB7CiAgICAgICAgIENvbXBsZXhUZXh0UnVuJiBjb21wbGV4VGV4dFJ1
biA9ICptX2NvbXBsZXhUZXh0UnVuc1tydW5JbmRleF07CiAgICAgICAgIHVuc2lnbmVkIGdseXBo
Q291bnQgPSBjb21wbGV4VGV4dFJ1bi5nbHlwaENvdW50KCk7CisgICAgICAgIEFTU0VSVChnbHlw
aENvdW50KTsKICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IGNvbXBsZXhUZXh0UnVuLmZvbnQo
KTsKIAogICAgICAgICBpZiAoIWNvbXBsZXhUZXh0UnVuLmlzTFRSKCkpCkBAIC03MjIsOSArNzEw
LDkgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2Vz
KCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFpKSB7Ci0gICAgICAgICAgICAg
ICAgYWR2YW5jZS5leHBhbmQoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
LCBjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byogb3JpZ2lucyA9IGNvbXBsZXhUZXh0UnVuLmdseXBoT3JpZ2lucygpKQot
ICAgICAgICAgICAgICAgICAgICBhZHZhbmNlLmV4cGFuZCgtb3JpZ2luc1swXS54KCksIC1vcmln
aW5zWzBdLnkoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2FkanVzdGVkQmFzZUFkdmFuY2Vz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9hZGp1c3RlZEJhc2VBZHZhbmNlcy5s
YXN0KCkgKz0gY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKTsKKyAgICAgICAgICAgICAg
ICBtX3RvdGFsQWR2YW5jZSArPSBjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBhZHZhbmNlLmV4cGFuZChmb250LnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IGExZDZlMzZhZGM0Njg1MTMzYTUw
MTRiZGZkZmVjMjIwOTc0YjQ1ZjcuLjJlNGUxNmI3YjUyZjFjZjFjNTI3OThiMjFjMzc5MjY4MTU0
MDEyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkBAIC0xMDUsMzMgKzEwNSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0QXQodW5zaWduZWQgaSkgY29uc3QgeyBBU1NFUlQoIW1f
aXNNb25vdG9uaWMpOyByZXR1cm4gbV9nbHlwaEVuZE9mZnNldHNbaV07IH0KICAgICAgICAgY29u
c3QgQ0dHbHlwaCogZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpOyB9CiAK
LSAgICAgICAgLyoKLSAgICAgICAgICogVGhpcyBpcyB0aGUgZm9ybWF0IG9mIHRoZSBpbmZvcm1h
dGlvbiBDb3JlVGV4dCBnaXZlcyB1cyBhYm91dCBlYWNoIHJ1bjoKLSAgICAgICAgICoKLSAgICAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0+WCAoUGFp
bnQgZ2x5cGggcG9zaXRpb24pICAgWCAoUGFpbnQgZ2x5cGggcG9zaXRpb24pICAgWCAoUGFpbnQg
Z2x5cGggcG9zaXRpb24pCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgNyAgICAgICAgICAgICAg
ICAgICAgICAgICAgNwotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLwotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAoSW5pdGlhbCBhZHZhbmNl
KSAvICAgICAvIChHbHlwaCBvcmlnaW4pICAgICAgICAgICAvIChHbHlwaCBvcmlnaW4pICAgICAg
ICAgICAvIChHbHlwaCBvcmlnaW4pCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLSAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLwotICAgICAgICAgKiAgICAgICAgICAgICAgICAgLyAgICAgICAgICAg
ICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLwotICAgICAgICAgKiAgICAgICAgICAgICAgICBYICAgICAgICAgICAgICAgICAg
ICAgICBYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1YCi0gICAgICAgICAqICh0ZXh0IHBvc2l0aW9u
IF4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZSBhZHZhbmNlKSAgICAgICAgICAg
ICAoYmFzZSBhZHZhbmNlKSAgICAgICAgICAgICAoYmFzZSBhZHZhbmNlKQotICAgICAgICAgKgot
ICAgICAgICAgKgotICAgICAgICAgKgotICAgICAgICAgKgotICAgICAgICAgKgotICAgICAgICAg
KiBBbmQgaGVyZSBpcyB0aGUgb3V0cHV0IHdlIHRyYW5zZm9ybSB0aGlzIGludG8gKGZvciBlYWNo
IHJ1bik6Ci0gICAgICAgICAqCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0tLS0tPlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlgtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPlgKLSAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvICAgICAgICAgICAgKFBhaW50IGFkdmFuY2UpICAgICAgICAgICAgKFBhaW50
IGFkdmFuY2UpICAgICAgIFwKLSAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgIChJbml0aWFs
IGFkdmFuY2UpIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwgKFBhaW50IGFkdmFuY2UpCi0gICAgICAgICAqICAgICAgICAg
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tCi0g
ICAgICAgICAqICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgKiAgICAgICAgICAgICAgICBYLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1YLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1YCi0gICAgICAgICAqICh0ZXh0IHBv
c2l0aW9uIF4pICAgICAgICAgICAgICAgIChsYXlvdXQgYWR2YW5jZSkgICAgICAgICAgICAgICAg
ICAgICAgIChsYXlvdXQgYWR2YW5jZSkgICAgICAgICAgIChsYXlvdXQgYWR2YW5jZSkKLSAgICAg
ICAgICovCiAgICAgICAgIHZvaWQgZ3Jvd0luaXRpYWxBZHZhbmNlSG9yaXpvbnRhbGx5KGZsb2F0
IGRlbHRhKSB7IG1faW5pdGlhbEFkdmFuY2UuZXhwYW5kKGRlbHRhLCAwKTsgfQogICAgICAgICBG
bG9hdFNpemUgaW5pdGlhbEFkdmFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxBZHZhbmNl
OyB9CiAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSogYmFzZUFkdmFuY2VzKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlQWR2YW5jZXMuZGF0YSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCmluZGV4IDE3YTM3YWY4YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNjNDdmNzkx
M2YuLjFhZDViNGQ2ZDI3NzYwYzNkNmM1ZmMwOGVkYWYwZGM4ZGE0YzkyNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgUmVm
UHRyPEZvbnQ+IEZvbnQ6OmNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIGZsb2EKIH0KIAogI2lmICFVU0UoQ09SRV9URVhUKQotdm9pZCBGb250
OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGJvb2ws
IGJvb2wsIGNvbnN0IEF0b21TdHJpbmcmLCBTdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uKSBjb25z
dAorR2x5cGhCdWZmZXJBZHZhbmNlIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYs
IHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCwgYm9vbCwgY29uc3QgQXRvbVN0cmluZyYsIFN0cmlu
Z1ZpZXcsIFRleHREaXJlY3Rpb24pIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA0N2E3ZTEyZjliYzY4OTIwY2E3MTRlOTI0Nzll
NTllZjNlZWU4ZDMyLi4wZGVlOGE1MGU1MzMzOTFiM2Y3OGFmODI4ZTIyOTY1NWFhYTMxOTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yMDYsNyArMjA2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIGNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3Rl
clNlcXVlbmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KSBjb25zdDsKLSAgICB2b2lkIGFwcGx5VHJh
bnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZXgsIHVuc2ln
bmVkIGJlZ2lubmluZ1N0cmluZ0luZGV4LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgcmVxdWly
ZXNTaGFwaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIFN0cmluZ1ZpZXcgdGV4dCwgVGV4
dERpcmVjdGlvbikgY29uc3Q7CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFwcGx5VHJhbnNmb3Jt
cyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZXgsIHVuc2lnbmVkIGJl
Z2lubmluZ1N0cmluZ0luZGV4LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgcmVxdWlyZXNTaGFw
aW5nLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIFN0cmluZ1ZpZXcgdGV4dCwgVGV4dERpcmVj
dGlvbikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIG51bGxvcHQgaWYgbm9uZSBvZiB0aGUgZ2x5
cGhzIGFyZSBPVC1TVkcgZ2x5cGhzLgogICAgIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBmaW5k
T1RTVkdHbHlwaHMoY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIHVuc2lnbmVkIGNvdW50KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cAppbmRleCBhYzU0ZTY4MTM5OTI4NGVkOGJmOGExMWM3NmFiMTFmZGZjZmQxM2ZlLi40M2IyMGY0
OTBhMzVjOTE5ZjgxNzUyNTQ1YzBmMDY3YmJlYWI1NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNiArMjU0LDggQEAg
ZmxvYXQgRm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2UoY29uc3QgVGV4dFJ1biYgcnVuLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZAogICAgICAgICBzaW1wbGVJdGVyYXRvci5hZHZhbmNlKHJ1
bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOwogICAgICAgICB0b3RhbFdpZHRoID0gc2ltcGxlSXRl
cmF0b3IucnVuV2lkdGhTb0ZhcigpOwogICAgICAgICBzaW1wbGVJdGVyYXRvci5maW5hbGl6ZShn
bHlwaEJ1ZmZlcik7CisgICAgICAgIC8vIEZJWE1FOiBGaW5hbGl6aW5nIHRoZSBXaWR0aEl0ZXJh
dG9yIGNhbiBhZmZlY3QgdGhlIHRvdGFsIHdpZHRoLgorICAgICAgICAvLyBXZSBtaWdodCBuZWVk
IHRvIGFkanVzdCB0aGUgdmFyaW91cyB3aWR0aHMgd2UndmUgbWVhc3VyZWQgdG8gYWNjb3VudCBm
b3IgdGhhdC4KICAgICB9CiAKICAgICBpZiAob3V0V2lkdGhCZWZvcmVSYW5nZSkKQEAgLTMxOSw3
ICszMjEsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1Zp
ZXcgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogICAgICAgICBnbHlwaEJ1ZmZlci5h
ZGQoZ2x5cGgsIGZvbnQsIGdseXBoV2lkdGgsIGkpOwogICAgIH0KIAotICAgIGZvbnQuYXBwbHlU
cmFuc2Zvcm1zKGdseXBoQnVmZmVyLCAwLCAwLCBlbmFibGVLZXJuaW5nKCksIHJlcXVpcmVzU2hh
cGluZygpLCBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpLCB0ZXh0LCB0ZXh0RGly
ZWN0aW9uKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gZm9udC5hcHBseVRyYW5zZm9ybXMo
Z2x5cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5pbmcoKSwgcmVxdWlyZXNTaGFwaW5nKCksIGZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIHRleHQsIHRleHREaXJlY3Rpb24pOwog
ICAgIC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgdG8gbWF0Y2ggdGhlIHJlc3VsdCBvZiB0aGUgc2xv
dyBwYXRoLgogICAgIC8vIFNhbWUgZ2x5cGggd2lkdGhzIGJ1dCBkaWZmZXJlbnQgZmxvYXRpbmcg
cG9pbnQgYXJpdGhtZXRpYyBjYW4gcHJvZHVjZSBkaWZmZXJlbnQgcnVuIHdpZHRoLgogICAgIGZs
b2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVkID0gLXJ1bldpZHRoOwpA
QCAtMzI3LDYgKzMyOSw4IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQo
U3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAgICAgIHJ1bldp
ZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVkICs9IFdlYkNvcmU6OndpZHRoKGdseXBo
QnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgcnVuV2lkdGggKz0gcnVuV2lkdGhEaWZmZXJlbmNl
V2l0aFRyYW5zZm9ybUFwcGxpZWQ7CiAKKyAgICBydW5XaWR0aCArPSBXZWJDb3JlOjp3aWR0aChp
bml0aWFsQWR2YW5jZSk7CisKICAgICBpZiAoY2FjaGVFbnRyeSkKICAgICAgICAgKmNhY2hlRW50
cnkgPSBydW5XaWR0aDsKICAgICByZXR1cm4gcnVuV2lkdGg7CkBAIC0xMjcwLDExICsxMjc0LDcg
QEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnMKICAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBiZWZv
cmVXaWR0aDsKICAgICB9CiAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UoaW5p
dGlhbEFkdmFuY2UpOwotICAgIGlmICghZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgaXMgc3VwcG9zZWQgdG8gcG9pbnQgZGlyZWN0bHkgdG8g
dGhlIGZpcnN0IGdseXBoJ3MgcGFpbnQgcG9zaXRpb24uCi0gICAgICAgIC8vIFNlZSB0aGUgYXNj
aWktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmguCi0gICAgICAgIGdseXBo
QnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoeChnbHlw
aEJ1ZmZlci5vcmlnaW5BdCgwKSksIHkoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkpKSk7Ci0gICAg
fQorICAgIC8vIEZJWE1FOiBJcyB0aGlzIHJpZ2h0PwogCiAgICAgLy8gVGhlIGdseXBoIGJ1ZmZl
ciBpcyBjdXJyZW50bHkgaW4gbG9naWNhbCBvcmRlciwKICAgICAvLyBidXQgd2UgbmVlZCB0byBy
ZXR1cm4gdGhlIHJlc3VsdHMgaW4gdmlzdWFsIG9yZGVyLgpAQCAtMTMyNiw2ICsxMzI2LDcgQEAg
aW5saW5lIGJvb2wgc2hvdWxkRHJhd0lmTG9hZGluZyhjb25zdCBGb250JiBmb250LCBGb250Q2Fz
Y2FkZTo6Q3VzdG9tRm9udE5vdFJlYWQKICAgICByZXR1cm4gIWZvbnQuaXNJbnRlcnN0aXRpYWwo
KSB8fCBmb250LnZpc2liaWxpdHkoKSA9PSBGb250OjpWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IGN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9PSBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5OwogfQogCisvLyBUaGlzIGZ1bmN0aW9u
IGFzc3VtZXMgdGhlIEdseXBoQnVmZmVyJ3MgaW5pdGlhbCBhZHZhbmNlIGhhcyBhbHJlYWR5IGJl
ZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIHN0YXJ0IHBvaW50Lgogdm9pZCBGb250Q2FzY2FkZTo6
ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCBGbG9hdFBvaW50JiBwb2ludCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoZ2x5cGhC
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CkBAIC0xMzg3LDYgKzEzODgsOSBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEds
eXBoQnVmZmVyJgogICAgIEdseXBoIG1hcmtHbHlwaCA9IG1hcmtHbHlwaERhdGEudmFsdWUoKS5n
bHlwaDsKICAgICBHbHlwaCBzcGFjZUdseXBoID0gbWFya0ZvbnREYXRhLT5zcGFjZUdseXBoKCk7
CiAKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byB0YWtlIHRoZSBpbml0aWFsIGFkdmFuY2Ug
aW50byBhY2NvdW50LgorICAgIC8vIFRoZSBwcm9ibGVtIG1pZ2h0IGFjdHVhbGx5IGJlIGhhcmRl
ciBmb3IgY29tcGxleCB0ZXh0LCB0aG91Z2guCisgICAgLy8gUHV0dGluZyBhIG1hcmsgb3ZlciBl
dmVyeSBnbHlwaCBwcm9iYWJseSBpc24ndCBncmVhdCBpbiBjb21wbGV4IHNjcmlwdHMuCiAgICAg
ZmxvYXQgbWlkZGxlT2ZMYXN0R2x5cGggPSBvZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGds
eXBoQnVmZmVyLCAwKTsKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQocG9pbnQueCgpICsgbWlk
ZGxlT2ZMYXN0R2x5cGggLSBvZmZzZXRUb01pZGRsZU9mR2x5cGgoKm1hcmtGb250RGF0YSwgbWFy
a0dseXBoKSwgcG9pbnQueSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKaW5kZXggYWZkOGJhMjRmYzFjZGU3Y2RhOTZjNzJlNWQ2YjM5MGFj
YmY1NjIzYS4uY2RkYzFjNGQ3ZDhkMjMzNGFkNzAzYTIyYzk3ZjU5NGUwN2VlMzk4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0xNjUs
MTkgKzE2NSw0NSBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLnNocmluayh0
cnVuY2F0aW9uUG9pbnQpOwogICAgIH0KIAotICAgIC8vIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0
KCkgcmV0dXJucyBhIEdseXBoQnVmZmVyIHdoaWNoIGluY2x1ZGVzIGxheW91dCBpbmZvcm1hdGlv
biB0aGF0IGlzIHNwbGl0Ci0gICAgLy8gaW50byAiYWR2YW5jZXMiIGFuZCAib3JpZ2lucyIuIFNl
ZSB0aGUgQVNDSUktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmgKLSAgICAv
LyBJbiBvcmRlciB0byBnZXQgcGFpbnQgYWR2YW5jZXMsIHdlIG5lZWQgdG8gcnVuIHRoaXMgImZs
YXR0ZW4iIG9wZXJhdGlvbi4KLSAgICAvLyBUaGlzIG1lcmdlcyB0aGUgbGF5b3V0IGFkdmFuY2Vz
IGFuZCBvcmlnaW5zIHRvZ2V0aGVyLAotICAgIC8vIGxlYXZlcyB0aGUgcGFpbnQgYWR2YW5jZXMg
aW4gdGhlICJtX2FkdmFuY2VzIiBmaWVsZCwKLSAgICAvLyBhbmQgemVyb3Mtb3V0IHRoZSBvcmln
aW5zIGluIHRoZSAibV9vcmlnaW5zIiBmaWVsZC4KKyAgICAvKgorICAgICAqIFRoaXMgaXMgdGhl
IHVuZmxhdHRlbmVkIGZvcm1hdDoKKyAgICAgKgorICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFggKFBhaW50IGdseXBoIHBvc2l0aW9uKSAgIFggKFBh
aW50IGdseXBoIHBvc2l0aW9uKSAgIFggKFBhaW50IGdseXBoIHBvc2l0aW9uKQorICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyAgICAgICAgICAgICAg
ICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgNworICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAg
ICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAoT3JpZ2luKSAgICAgICAgICAgICAgICAgLyAo
T3JpZ2luKSAgICAgICAgICAgICAgICAgLyAoT3JpZ2luKQorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAg
ICAgICAgICAgICAgICAvCisgICAgICogICAgICAgICAgICAgICAgWC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WAorICAgICAqICh0ZXh0IHBvc2l0aW9uIF4p
ICAoSW5pdGlhbCBhZHZhbmNlKSAgICAgICAgICAgIChBZHZhbmNlKSAgICAgICAgICAgICAgICAg
IChBZHZhbmNlKSAgICAgICAgICAgICAgICAgICAoQWR2YW5jZSkKKyAgICAgKgorICAgICAqCisg
ICAgICoKKyAgICAgKgorICAgICAqCisgICAgICogQW5kIHRoaXMgaXMgd2hhdCB3ZSB0cmFuc2Zv
cm0gaXQgaW50bzoKKyAgICAgKgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0tLS0tPlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlgtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPlgKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8gICAgICAgICAgICAgICAoQWR2YW5jZSkgICAgICAgICAgICAgICAgICAgKEFkdmFuY2Up
ICAgICAgICAgXAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAqICAgICAgICAgICAgICAgICAgIChJbml0aWFsIGFkdmFuY2UpIC8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwgICAoQWR2YW5jZSkKKyAgICAgKiAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLQorICAgICAqICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAqICAg
ICAgICAgICAgICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVgKKyAgICAgKiAodGV4dCBwb3NpdGlvbiBeKQorICAgICAqLwogICAgIHZvaWQgZmxhdHRl
bigpCiAgICAgeworICAgICAgICBBU1NFUlQoc2l6ZSgpIHx8ICghd2lkdGgobV9pbml0aWFsQWR2
YW5jZSkgJiYgIWhlaWdodChtX2luaXRpYWxBZHZhbmNlKSkpOworICAgICAgICBpZiAoc2l6ZSgp
KSB7CisgICAgICAgICAgICBtX2luaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5j
ZSgKKyAgICAgICAgICAgICAgICB3aWR0aChtX2luaXRpYWxBZHZhbmNlKSArIHgobV9vcmlnaW5z
WzBdKSwKKyAgICAgICAgICAgICAgICBoZWlnaHQobV9pbml0aWFsQWR2YW5jZSkgKyB5KG1fb3Jp
Z2luc1swXSkpOworICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplKCk7ICsraSkgewogICAgICAgICAgICAgbV9hZHZhbmNlc1tpXSA9IG1ha2VHbHlwaEJ1ZmZl
ckFkdmFuY2UoCiAgICAgICAgICAgICAgICAgLXgobV9vcmlnaW5zW2ldKSArIHdpZHRoKG1fYWR2
YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geChtX29yaWdpbnNbaSArIDFdKSA6IDApLAot
ICAgICAgICAgICAgICAgIC15KG1fb3JpZ2luc1tpXSkgKyBoZWlnaHQobV9hZHZhbmNlc1tpXSkg
KyAoaSArIDEgPCBzaXplKCkgPyB5KG1fb3JpZ2luc1tpICsgMV0pIDogMCkKLSAgICAgICAgICAg
ICk7CisgICAgICAgICAgICAgICAgLXkobV9vcmlnaW5zW2ldKSArIGhlaWdodChtX2FkdmFuY2Vz
W2ldKSArIChpICsgMSA8IHNpemUoKSA/IHkobV9vcmlnaW5zW2kgKyAxXSkgOiAwKSk7CiAgICAg
ICAgICAgICBtX29yaWdpbnNbaV0gPSBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTE4NSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZsYXR0ZW5l
ZCgpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX29yaWdpbnNbaV0gIT0gbWFrZUdseXBoQnVmZmVy
T3JpZ2luKCkpCisgICAgICAgICAgICBpZiAoeChtX29yaWdpbnNbaV0pIHx8IHkobV9vcmlnaW5z
W2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwCmluZGV4IDIyMGIwZWIxMjlmMmMwZjM4OGFjMzhmYzFkODA0NGRiMTY3
NzNhODQuLjM5NzlhMjUzMjYyYTNjNWE1NDY3MWExMzNkODM5YzNhNTgwN2JmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBA
IC05MCwxMyArOTAsMTMgQEAgaW5saW5lIGF1dG8gV2lkdGhJdGVyYXRvcjo6c2hvdWxkQXBwbHlG
b250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWYKICAgICByZXR1cm4gVHJh
bnNmb3Jtc1R5cGU6Ok5vdEZvcmNlZDsKIH0KIAotaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6
OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBs
YXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250
JiBmb250LCBib29sIGZvcmNlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZSkKK2lubGluZSBhdXRvIFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5z
Zm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwg
dW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBib29sIGZv
cmNlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkg
LT4gQXBwbHlGb250VHJhbnNmb3Jtc1Jlc3VsdAogewogICAgIEFTU0VSVF9VTlVTRUQoY3VycmVu
dENoYXJhY3RlckluZGV4LCBzaG91bGRBcHBseUZvbnRUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBs
YXN0R2x5cGhDb3VudCwgY3VycmVudENoYXJhY3RlckluZGV4KSAhPSBXaWR0aEl0ZXJhdG9yOjpU
cmFuc2Zvcm1zVHlwZTo6Tm9uZSk7CiAKICAgICBhdXRvIGdseXBoQnVmZmVyU2l6ZSA9IGdseXBo
QnVmZmVyLnNpemUoKTsKICAgICBpZiAoIWZvcmNlICYmIGdseXBoQnVmZmVyU2l6ZSA8PSBsYXN0
R2x5cGhDb3VudCArIDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyAwLCBt
YWtlR2x5cGhCdWZmZXJBZHZhbmNlKCkgfTsKIAogICAgIEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcygwKTsKICAgICBmbG9hdCBiZWZvcmVXaWR0aCA9
IDA7CkBAIC0xMDUsNyArMTA1LDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5
Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KIAogICAgIEFT
U0VSVChsYXN0R2x5cGhDb3VudCA8PSBnbHlwaEJ1ZmZlclNpemUpOwogCi0gICAgZm9udC5hcHBs
eVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBtX2N1cnJlbnRDaGFyYWN0
ZXJJbmRleCwgbV9lbmFibGVLZXJuaW5nLCBtX3JlcXVpcmVzU2hhcGluZywgbV9mb250LmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIG1fcnVuLnRleHQoKSwgbV9ydW4uZGlyZWN0
aW9uKCkpOworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250LmFwcGx5VHJhbnNmb3Jtcyhn
bHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIG1fY3VycmVudENoYXJhY3RlckluZGV4LCBtX2Vu
YWJsZUtlcm5pbmcsIG1fcmVxdWlyZXNTaGFwaW5nLCBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCku
Y29tcHV0ZWRMb2NhbGUoKSwgbV9ydW4udGV4dCgpLCBtX3J1bi5kaXJlY3Rpb24oKSk7CiAgICAg
Z2x5cGhCdWZmZXJTaXplID0gZ2x5cGhCdWZmZXIuc2l6ZSgpOwogICAgIGFkdmFuY2VzID0gZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoMCk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBpbmxpbmUgZmxvYXQg
V2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIHVuc2lnbgogICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5
cGhCdWZmZXJTaXplOyArK2kpCiAgICAgICAgIGFmdGVyV2lkdGggKz0gd2lkdGgoYWR2YW5jZXNb
aV0pOwogCi0gICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aDsKKyAgICByZXR1cm4g
eyBhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGgsIGluaXRpYWxBZHZhbmNlIH07CiB9CiAKIHN0YXRp
YyBpbmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRl
b2dyYXBoLCBib29sIHRyZWF0QXNTcGFjZSwgYm9vbCBsdHIsIGJvb2wgaXNBZnRlckV4cGFuc2lv
biwgYm9vbCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBi
b29sIGZvcmNlTGVmdEV4cGFuc2lvbiwgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKQpAQCAtMTY1
LDExICsxNjUsNTIgQEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4gZXhwYW5z
aW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXQKICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoZXhwYW5kTGVmdCwgZXhwYW5kUmlnaHQpOwogfQogCitzdGF0aWMgdm9pZCBleHBh
bmRXaXRoSW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlVG9FeHBhbmQs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgaW5pdGlhbEFkdmFuY2UpCit7CisgICAgc2V0V2lk
dGgoYWR2YW5jZVRvRXhwYW5kLCB3aWR0aChhZHZhbmNlVG9FeHBhbmQpICsgd2lkdGgoaW5pdGlh
bEFkdmFuY2UpKTsKKyAgICBzZXRIZWlnaHQoYWR2YW5jZVRvRXhwYW5kLCBoZWlnaHQoYWR2YW5j
ZVRvRXhwYW5kKSArIGhlaWdodChpbml0aWFsQWR2YW5jZSkpOworfQorCit2b2lkIFdpZHRoSXRl
cmF0b3I6OmFwcGx5SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBzdGQ6
Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2UsIHVuc2lnbmVkIGxh
c3RHbHlwaENvdW50KQoreworICAgIEFTU0VSVChnbHlwaEJ1ZmZlci5zaXplKCkgPj0gbGFzdEds
eXBoQ291bnQpOworCisgICAgaWYgKGdseXBoQnVmZmVyLnNpemUoKSA8PSBsYXN0R2x5cGhDb3Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50IHx8ICghd2lk
dGgobV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlKSAmJiAhaGVpZ2h0KG1fbGVmdG92ZXJJbml0aWFs
QWR2YW5jZSkpKTsKKworICAgIGlmIChtX3J1bi5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpSVEwgJiYgbGFzdEdseXBoQ291bnQpIHsKKyAgICAgICAgYXV0byYgdmlzdWFsbHlMYXN0QWR2
YW5jZSA9ICpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhsYXN0R2x5cGhDb3VudCk7CisgICAgICAgIGV4
cGFuZFdpdGhJbml0aWFsQWR2YW5jZSh2aXN1YWxseUxhc3RBZHZhbmNlLCBtX2xlZnRvdmVySW5p
dGlhbEFkdmFuY2UpOworICAgICAgICBtX3J1bldpZHRoU29GYXIgKz0gd2lkdGgobV9sZWZ0b3Zl
ckluaXRpYWxBZHZhbmNlKTsKKyAgICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gbWFr
ZUdseXBoQnVmZmVyQWR2YW5jZSgpOworICAgIH0KKworICAgIGlmIChpbml0aWFsQWR2YW5jZSkg
eworICAgICAgICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQor
ICAgICAgICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2UudmFs
dWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGFzdEdseXBoQ291bnQpIHsK
KyAgICAgICAgICAgICAgICBhdXRvJiB2aXN1YWxseVByZXZpb3VzQWR2YW5jZSA9ICpnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhsYXN0R2x5cGhDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIGV4cGFu
ZFdpdGhJbml0aWFsQWR2YW5jZSh2aXN1YWxseVByZXZpb3VzQWR2YW5jZSwgaW5pdGlhbEFkdmFu
Y2UudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoKGlu
aXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UoaW5pdGlhbEFkdmFuY2UudmFsdWUo
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgV2lkdGhJdGVyYXRvcjo6Y29tbWl0Q3Vy
cmVudEZvbnRSYW5nZShHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlw
aENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEZvbnQmIHByaW1hcnlGb250LCBVQ2hhcjMyIGNoYXJhY3RlciwgZmxvYXQgd2lkdGhP
ZkN1cnJlbnRGb250UmFuZ2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYgY2hhcmFjdGVyc1Ry
ZWF0ZWRBc1NwYWNlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBp
bml0aWFsQWR2YW5jZTsKICAgICBhdXRvIHRyYW5zZm9ybXNUeXBlID0gc2hvdWxkQXBwbHlGb250
VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJ
bmRleCk7Ci0gICAgaWYgKHRyYW5zZm9ybXNUeXBlICE9IFRyYW5zZm9ybXNUeXBlOjpOb25lKQot
ICAgICAgICBtX3J1bldpZHRoU29GYXIgKz0gYXBwbHlGb250VHJhbnNmb3JtcyhnbHlwaEJ1ZmZl
ciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgZm9udCwgdHJhbnNmb3Jt
c1R5cGUgPT0gVHJhbnNmb3Jtc1R5cGU6OkZvcmNlZCwgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNl
KTsKKyAgICBpZiAodHJhbnNmb3Jtc1R5cGUgIT0gVHJhbnNmb3Jtc1R5cGU6Ok5vbmUpIHsKKyAg
ICAgICAgYXV0byBhcHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0ID0gYXBwbHlGb250VHJhbnNmb3Jt
cyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgZm9u
dCwgdHJhbnNmb3Jtc1R5cGUgPT0gVHJhbnNmb3Jtc1R5cGU6OkZvcmNlZCwgY2hhcmFjdGVyc1Ry
ZWF0ZWRBc1NwYWNlKTsKKyAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IGFwcGx5Rm9udFRyYW5z
Zm9ybXNSZXN1bHQuYWRkaXRpb25hbEFkdmFuY2U7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0g
YXBwbHlGb250VHJhbnNmb3Jtc1Jlc3VsdC5pbml0aWFsQWR2YW5jZTsKKyAgICB9CisgICAgYXBw
bHlJbml0aWFsQWR2YW5jZShnbHlwaEJ1ZmZlciwgaW5pdGlhbEFkdmFuY2UsIGxhc3RHbHlwaENv
dW50KTsKICAgICBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCA9IGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eDsKIAogICAgIGlmICh3aWR0aE9mQ3VycmVudEZvbnRSYW5nZSAmJiBtX2ZhbGxiYWNrRm9udHMg
JiYgJmZvbnQgIT0gJnByaW1hcnlGb250KSB7CkBAIC00NTksNyArNTAwLDkgQEAgdm9pZCBXaWR0
aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIHVuc2kKIHZvaWQgV2lkdGhJdGVyYXRvcjo6ZmluYWxpemUoR2x5cGhCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9ydW4ucnRsKCkgfHwgIW1fbGVmdG92ZXJKdXN0aWZp
Y2F0aW9uV2lkdGgpOwotICAgIC8vIEluIExUUiB0aGlzIGRvZXMgbm90aGluZy4gSW4gUlRMLCB0
aGlzIGFkZHMgbGVmdCB3aWR0aCBieSBtb3ZpbmcgdGhlIHdob2xlIHJ1biB0byB0aGUgcmlnaHQu
CisgICAgLy8gSW4gTFRSIHRoZXNlIGRvIG5vdGhpbmcuIEluIFJUTCwgdGhlc2UgYWRkIGxlZnQg
d2lkdGggYnkgbW92aW5nIHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIGJ1ZmZlci5l
eHBhbmRJbml0aWFsQWR2YW5jZShtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOworICAgIG1fcnVu
V2lkdGhTb0ZhciArPSB3aWR0aChtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOwogICAgIGJ1ZmZl
ci5leHBhbmRJbml0aWFsQWR2YW5jZShtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKICAg
ICBtX3J1bldpZHRoU29GYXIgKz0gbV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aDsKICAgICBt
X2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAppbmRleCBmNjA2ZmEyMzI0OWE2YzExYWZm
OWYwMzljYjI2OTY1OTdlNmVmZmVhLi4yNDA1OGIxY2U1ZTQ0OWEwMDJmZGY0ODdlODdhNjkxOWU5
MDdhOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5oCkBAIC02Myw4ICs2MywxMyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBU
cmFuc2Zvcm1zVHlwZSB7IE5vbmUsIEZvcmNlZCwgTm90Rm9yY2VkIH07CiAgICAgVHJhbnNmb3Jt
c1R5cGUgc2hvdWxkQXBwbHlGb250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2ln
bmVkIGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpIGNvbnN0
OwotICAgIGZsb2F0IGFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBs
YXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250
JiwgYm9vbCBmb3JjZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJik7CisgICAgc3RydWN0IEFw
cGx5Rm9udFRyYW5zZm9ybXNSZXN1bHQgeworICAgICAgICBmbG9hdCBhZGRpdGlvbmFsQWR2YW5j
ZTsKKyAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlOworICAgIH07Cisg
ICAgQXBwbHlGb250VHJhbnNmb3Jtc1Jlc3VsdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVm
ZmVyJiwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJ
bmRleCwgY29uc3QgRm9udCYsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYp
OwogICAgIHZvaWQgY29tbWl0Q3VycmVudEZvbnRSYW5nZShHbHlwaEJ1ZmZlciYsIHVuc2lnbmVk
IGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZv
bnQmLCBjb25zdCBGb250JiBwcmltYXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdp
ZHRoT2ZDdXJyZW50Rm9udFJhbmdlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmKTsKKyAgICB2
b2lkIGFwcGx5SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXImLCBzdGQ6Om9wdGlvbmFsPEdseXBo
QnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2UsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50KTsK
IAogICAgIGJvb2wgaGFzRXh0cmFTcGFjaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUV4dHJh
U3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0
SW5kZXgsIHVuc2lnbmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVy
RGVzdGluYXRpb25JbmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCk7CkBAIC04Miw2ICs4Nyw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxjb25zdCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7
IG51bGxwdHIgfTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3Rl
ckluZGV4OworICAgIEdseXBoQnVmZmVyQWR2YW5jZSBtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2Ug
eyBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKCkgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFy
YWN0ZXJJbmRleCB7IDAgfTsKICAgICBmbG9hdCBtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRo
IHsgMCB9OwogICAgIGZsb2F0IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQu
Y3BwCmluZGV4IDI5YTA3Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkuLjEwN2Fk
ZjYxNmE2MDUxNjQxZDYzNWQyOWEyY2M5OWRlODBmNDkzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNw
cApAQCAtNTg0LDExICs1ODQsMTAgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogCiAjZW5kaWYKIAotdm9pZCBGb250OjphcHBseVRyYW5zZm9y
bXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4
LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29s
IHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRl
eHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbikgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5j
ZSBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25l
ZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9v
bCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbikgY29u
c3QKIHsKICAgICBVTlVTRURfUEFSQU0ocmVxdWlyZXNTaGFwaW5nKTsKIAotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgR2x5cGhCdWZmZXIgaW5pdGlhbCBhZHZhbmNlLgogI2lmIFVTRShDVEZPTlRT
SEFQRUdMWVBIUykKICAgICBhdXRvIGhhbmRsZXIgPSBeKENGUmFuZ2UgcmFuZ2UsIENHR2x5cGgq
KiBuZXdHbHlwaHNQb2ludGVyLCBDR1NpemUqKiBuZXdBZHZhbmNlc1BvaW50ZXIsIENHUG9pbnQq
KiBuZXdPZmZzZXRzUG9pbnRlciwgQ0ZJbmRleCoqIG5ld0luZGljZXNQb2ludGVyKQogICAgIHsK
QEAgLTYxNiwxOCArNjE1LDIzIEBAIHZvaWQgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRlCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5k
ZXg7ICsraSkKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0ds
eXBoSW5kZXgpW2ldIC09IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCi0gICAgQ1RGb250U2hhcGVH
bHlwaHMoCisgICAgYXV0byBudW1iZXJPZklucHV0R2x5cGhzID0gZ2x5cGhCdWZmZXIuc2l6ZSgp
IC0gYmVnaW5uaW5nR2x5cGhJbmRleDsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBDVEZv
bnRTaGFwZUdseXBocygKICAgICAgICAgbV9wbGF0Zm9ybURhdGEuY3RGb250KCksCiAgICAgICAg
IGdseXBoQnVmZmVyLmdseXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaElu
ZGV4KSksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dQb2ludCo+KGdseXBoQnVmZmVyLm9y
aWdpbnMoYmVnaW5uaW5nR2x5cGhJbmRleCkpLAorICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKKyAgICAgICAgZ2x5cGhCdWZmZXIub3JpZ2lucyhiZWdp
bm5pbmdHbHlwaEluZGV4KSwKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJl
Z2lubmluZ0dseXBoSW5kZXgpLAogICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNo
YXIqPih1cGNvbnZlcnRlZENoYXJhY3RlcnMuZ2V0KCkpLAotICAgICAgICBnbHlwaEJ1ZmZlci5z
aXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4LAorICAgICAgICBudW1iZXJPZklucHV0R2x5cGhz
LAogICAgICAgICBvcHRpb25zLAogICAgICAgICBsb2NhbGVTdHJpbmcuZ2V0KCksCiAgICAgICAg
IGhhbmRsZXIpOwogCisgICAgQVNTRVJUKG51bWJlck9mSW5wdXRHbHlwaHMgfHwgZ2x5cGhCdWZm
ZXIuc2l6ZSgpID09IGJlZ2lubmluZ0dseXBoSW5kZXgpOworICAgIEFTU0VSVChudW1iZXJPZklu
cHV0R2x5cGhzIHx8ICghaW5pdGlhbEFkdmFuY2Uud2lkdGggJiYgIWluaXRpYWxBZHZhbmNlLmhl
aWdodCkpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUo
KSAtIGJlZ2lubmluZ0dseXBoSW5kZXg7ICsraSkKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0
c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5kZXgpW2ldICs9IGJlZ2lubmluZ1N0cmluZ0luZGV4
OwogCkBAIC02NTIsMTEgKzY1NiwxNSBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZQogCiAgICAg
Q1RGb250VHJhbnNmb3JtT3B0aW9ucyBvcHRpb25zID0gKGVuYWJsZUtlcm5pbmcgPyBrQ1RGb250
VHJhbnNmb3JtQXBwbHlQb3NpdGlvbmluZyA6IDApIHwga0NURm9udFRyYW5zZm9ybUFwcGx5U2hh
cGluZzsKICAgICBDVEZvbnRUcmFuc2Zvcm1HbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCks
IGdseXBoQnVmZmVyLmdseXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwgcmVpbnRlcnByZXRfY2Fz
dDxDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksIGds
eXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXgsIG9wdGlvbnMpOworCisgICAg
YXV0byBpbml0aWFsQWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKICNlbmRpZgog
CiAgICAgLy8gU2VlIHRoZSBjb21tZW50IGFib3ZlIGluIHRoaXMgZnVuY3Rpb24gd2hlcmUgdGhl
IG90aGVyIGNhbGwgdG8gcmV2ZXJzZSgpIGlzLgogICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZShiZWdpbm5pbmdH
bHlwaEluZGV4LCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KTsKKwor
ICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAogc3RhdGljIGludCBleHRyYWN0TnVtYmVy
KENGTnVtYmVyUmVmIG51bWJlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434184</attachid>
            <date>2021-07-25 16:58:42 -0700</date>
            <delta_ts>2021-07-25 17:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227979-20210725165841.patch</filename>
            <type>text/plain</type>
            <size>25969</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5YWQzYzA2YzU0YmNk
OWRmM2M0OGFmMTgzYTFjODliYTY4ZTdjMS4uYjVlOGJlM2Q4NjYyNWJkN2NmMDg1NzhhMmZkOGYz
YTU3OGQ0MmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA3LTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIG5l
eHQgc3RlcCB0byBkZWxldGUgdGhlIGNvbXBsZXggdGV4dCBjb2RlcGF0aCBmcm9tIENvY29hIHBv
cnRzLgorCisgICAgICAgIFdpbGwgYmUgdGVzdGVkIHdoZW4gd2UgZGVsZXRlIHRoZSBjb21wbGV4
IHRleHQgY29kZXBhdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmFwcGx5VHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4
dFJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmZsYXR0ZW4pOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXI6OmlzRmxhdHRlbmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRo
SXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6ZXhwYW5k
V2l0aEluaXRpYWxBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFw
cGx5SW5pdGlhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y29t
bWl0Q3VycmVudEZvbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjphcHBseVRyYW5zZm9ybXMgY29uc3QpOgorCiAyMDIxLTA3
LTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUg
UGF5XSBEbyBub3QgYWRkIGNvdXBvbiBjb2RlIGBBcHBsZVBheUVycm9yQ29kZWAgdmFsdWVzIGZv
ciBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKaW5kZXggYTFk
NmUzNmFkYzQ2ODUxMzNhNTAxNGJkZmRmZWMyMjA5NzRiNDVmNy4uMmU0ZTE2YjdiNTJmMWNmMWM1
Mjc5OGIyMWMzNzkyNjgxNTQwMTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTEwNSwzMyArMTA1
LDYgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBlbmRPZmZzZXRBdCh1bnNpZ25lZCBpKSBj
b25zdCB7IEFTU0VSVCghbV9pc01vbm90b25pYyk7IHJldHVybiBtX2dseXBoRW5kT2Zmc2V0c1tp
XTsgfQogICAgICAgICBjb25zdCBDR0dseXBoKiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2ds
eXBocy5kYXRhKCk7IH0KIAotICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIGlzIHRoZSBmb3Jt
YXQgb2YgdGhlIGluZm9ybWF0aW9uIENvcmVUZXh0IGdpdmVzIHVzIGFib3V0IGVhY2ggcnVuOgot
ICAgICAgICAgKgotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtLS0tLT5YIChQYWludCBnbHlwaCBwb3NpdGlvbikgICBYIChQYWludCBnbHlwaCBwb3Np
dGlvbikgICBYIChQYWludCBnbHlwaCBwb3NpdGlvbikKLSAgICAgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAg
ICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3Ci0gICAgICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAg
IChJbml0aWFsIGFkdmFuY2UpIC8gICAgIC8gKEdseXBoIG9yaWdpbikgICAgICAgICAgIC8gKEds
eXBoIG9yaWdpbikgICAgICAgICAgIC8gKEdseXBoIG9yaWdpbikKLSAgICAgICAgICogICAgICAg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAvICAgICAgICAgICAgICAgICAgICAg
ICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAg
ICAgICAvICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAgICAgIFgg
ICAgICAgICAgICAgICAgICAgICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgKLSAgICAgICAg
ICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlIGFk
dmFuY2UpICAgICAgICAgICAgIChiYXNlIGFkdmFuY2UpICAgICAgICAgICAgIChiYXNlIGFkdmFu
Y2UpCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAg
ICAgICAqCi0gICAgICAgICAqIEFuZCBoZXJlIGlzIHRoZSBvdXRwdXQgd2UgdHJhbnNmb3JtIHRo
aXMgaW50byAoZm9yIGVhY2ggcnVuKToKLSAgICAgICAgICoKLSAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WAotICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAoUGFpbnQgYWR2YW5jZSkg
ICAgICAgICAgICAoUGFpbnQgYWR2YW5jZSkgICAgICAgXAotICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgKEluaXRpYWwgYWR2YW5jZSkgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAoUGFpbnQgYWR2YW5jZSkKLSAg
ICAgICAgICogICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICogICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICAg
ICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgKLSAg
ICAgICAgICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgKGxheW91dCBhZHZhbmNl
KSAgICAgICAgICAgICAgICAgICAgICAgKGxheW91dCBhZHZhbmNlKSAgICAgICAgICAgKGxheW91
dCBhZHZhbmNlKQotICAgICAgICAgKi8KICAgICAgICAgdm9pZCBncm93SW5pdGlhbEFkdmFuY2VI
b3Jpem9udGFsbHkoZmxvYXQgZGVsdGEpIHsgbV9pbml0aWFsQWR2YW5jZS5leHBhbmQoZGVsdGEs
IDApOyB9CiAgICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5pdGlhbEFkdmFuY2U7IH0KICAgICAgICAgY29uc3QgRmxvYXRTaXplKiBiYXNlQWR2YW5j
ZXMoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VBZHZhbmNlcy5kYXRhKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdhMzdhZjhiYmZkODc5ZDVhODQ0
MzhjZTRlMzk5M2M0N2Y3OTEzZi4uMWFkNWI0ZDZkMjc3NjBjM2Q2YzVmYzA4ZWRhZjBkYzhkYTRj
OTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTU0
Miw3ICs1NDIsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6Y3JlYXRlU2NhbGVkRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYQogfQogCiAjaWYgIVVTRShDT1JF
X1RFWFQpCi12b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgYm9vbCwgYm9vbCwgY29uc3QgQXRvbVN0cmluZyYsIFN0cmluZ1ZpZXcsIFRl
eHREaXJlY3Rpb24pIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFuc2Zv
cm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sLCBib29sLCBjb25zdCBB
dG9tU3RyaW5nJiwgU3RyaW5nVmlldywgVGV4dERpcmVjdGlvbikgY29uc3QKIHsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDQ3YTdlMTJmOWJj
Njg5MjBjYTcxNGU5MjQ3OWU1OWVmM2VlZThkMzIuLjBkZWU4YTUwZTUzMzM5MWIzZjc4YWY4Mjhl
MjI5NjU1YWFhMzE5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
QEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuUmVuZGVy
Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpIGNvbnN0Owot
ICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5n
R2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2Vy
bmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3Ry
aW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJ
bmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywg
Ym9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmll
dyB0ZXh0LCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgbnVsbG9wdCBp
ZiBub25lIG9mIHRoZSBnbHlwaHMgYXJlIE9ULVNWRyBnbHlwaHMuCiAgICAgc3RkOjpvcHRpb25h
bDxCaXRWZWN0b3I+IGZpbmRPVFNWR0dseXBocyhjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5z
aWduZWQgY291bnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGFjNTRlNjgxMzk5Mjg0ZWQ4YmY4YTExYzc2YWIxMWZk
ZmNmZDEzZmUuLjQzYjIwZjQ5MGEzNWM5MTlmODE3NTI1NDVjMGYwNjdiYmVhYjU0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAg
LTI1NCw2ICsyNTQsOCBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25z
dCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgICAgIHNpbXBsZUl0
ZXJhdG9yLmFkdmFuY2UocnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgICAgIHRvdGFs
V2lkdGggPSBzaW1wbGVJdGVyYXRvci5ydW5XaWR0aFNvRmFyKCk7CiAgICAgICAgIHNpbXBsZUl0
ZXJhdG9yLmZpbmFsaXplKGdseXBoQnVmZmVyKTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmFsaXpp
bmcgdGhlIFdpZHRoSXRlcmF0b3IgY2FuIGFmZmVjdCB0aGUgdG90YWwgd2lkdGguCisgICAgICAg
IC8vIFdlIG1pZ2h0IG5lZWQgdG8gYWRqdXN0IHRoZSB2YXJpb3VzIHdpZHRocyB3ZSd2ZSBtZWFz
dXJlZCB0byBhY2NvdW50IGZvciB0aGF0LgogICAgIH0KIAogICAgIGlmIChvdXRXaWR0aEJlZm9y
ZVJhbmdlKQpAQCAtMzE5LDcgKzMyMSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAg
ICAgIGdseXBoQnVmZmVyLmFkZChnbHlwaCwgZm9udCwgZ2x5cGhXaWR0aCwgaSk7CiAgICAgfQog
Ci0gICAgZm9udC5hcHBseVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5p
bmcoKSwgcmVxdWlyZXNTaGFwaW5nKCksIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxl
KCksIHRleHQsIHRleHREaXJlY3Rpb24pOworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250
LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgMCwgMCwgZW5hYmxlS2VybmluZygpLCByZXF1
aXJlc1NoYXBpbmcoKSwgZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRMb2NhbGUoKSwgdGV4dCwg
dGV4dERpcmVjdGlvbik7CiAgICAgLy8gVGhpcyBpcyBuZWVkZWQgb25seSB0byBtYXRjaCB0aGUg
cmVzdWx0IG9mIHRoZSBzbG93IHBhdGguCiAgICAgLy8gU2FtZSBnbHlwaCB3aWR0aHMgYnV0IGRp
ZmZlcmVudCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGNhbiBwcm9kdWNlIGRpZmZlcmVudCBy
dW4gd2lkdGguCiAgICAgZmxvYXQgcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxp
ZWQgPSAtcnVuV2lkdGg7CkBAIC0zMjcsNiArMzI5LDggQEAgZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGkKICAgICAgICAgcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgKz0gV2Vi
Q29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICBydW5XaWR0aCArPSBy
dW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZDsKIAorICAgIHJ1bldpZHRoICs9
IFdlYkNvcmU6OndpZHRoKGluaXRpYWxBZHZhbmNlKTsKKwogICAgIGlmIChjYWNoZUVudHJ5KQog
ICAgICAgICAqY2FjaGVFbnRyeSA9IHJ1bldpZHRoOwogICAgIHJldHVybiBydW5XaWR0aDsKQEAg
LTEyNzAsMTEgKzEyNzQsNyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxl
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVucwogICAgICAgICBpbml0
aWFsQWR2YW5jZSA9IGJlZm9yZVdpZHRoOwogICAgIH0KICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJ
bml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7Ci0gICAgaWYgKCFnbHlwaEJ1ZmZlci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgLy8gVGhlIGluaXRpYWwgYWR2YW5jZSBpcyBzdXBwb3NlZCB0byBw
b2ludCBkaXJlY3RseSB0byB0aGUgZmlyc3QgZ2x5cGgncyBwYWludCBwb3NpdGlvbi4KLSAgICAg
ICAgLy8gU2VlIHRoZSBhc2NpaS1hcnQgZGlhZ3JhbSBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIu
aC4KLSAgICAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UobWFrZUdseXBoQnVm
ZmVyQWR2YW5jZSh4KGdseXBoQnVmZmVyLm9yaWdpbkF0KDApKSwgeShnbHlwaEJ1ZmZlci5vcmln
aW5BdCgwKSkpKTsKLSAgICB9CisgICAgLy8gRklYTUU6IElzIHRoaXMgcmlnaHQ/CiAKICAgICAv
LyBUaGUgZ2x5cGggYnVmZmVyIGlzIGN1cnJlbnRseSBpbiBsb2dpY2FsIG9yZGVyLAogICAgIC8v
IGJ1dCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgcmVzdWx0cyBpbiB2aXN1YWwgb3JkZXIuCkBAIC0x
MzI2LDYgKzEzMjYsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGREcmF3SWZMb2FkaW5nKGNvbnN0IEZv
bnQmIGZvbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZAogICAgIHJldHVybiAhZm9u
dC5pc0ludGVyc3RpdGlhbCgpIHx8IGZvbnQudmlzaWJpbGl0eSgpID09IEZvbnQ6OlZpc2liaWxp
dHk6OlZpc2libGUgfHwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IEZvbnRDYXNjYWRlOjpD
dXN0b21Gb250Tm90UmVhZHlBY3Rpb246OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHk7CiB9CiAK
Ky8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgR2x5cGhCdWZmZXIncyBpbml0aWFsIGFkdmFu
Y2UgaGFzIGFscmVhZHkgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGUgc3RhcnQgcG9pbnQuCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZsb2F0UG9pbnQmIHBvaW50LCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewog
ICAgIEFTU0VSVChnbHlwaEJ1ZmZlci5pc0ZsYXR0ZW5lZCgpKTsKQEAgLTEzODcsNiArMTM4OCw5
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAgICAgR2x5cGggbWFya0dseXBoID0gbWFya0ds
eXBoRGF0YS52YWx1ZSgpLmdseXBoOwogICAgIEdseXBoIHNwYWNlR2x5cGggPSBtYXJrRm9udERh
dGEtPnNwYWNlR2x5cGgoKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHRha2UgdGhl
IGluaXRpYWwgYWR2YW5jZSBpbnRvIGFjY291bnQuCisgICAgLy8gVGhlIHByb2JsZW0gbWlnaHQg
YWN0dWFsbHkgYmUgaGFyZGVyIGZvciBjb21wbGV4IHRleHQsIHRob3VnaC4KKyAgICAvLyBQdXR0
aW5nIGEgbWFyayBvdmVyIGV2ZXJ5IGdseXBoIHByb2JhYmx5IGlzbid0IGdyZWF0IGluIGNvbXBs
ZXggc2NyaXB0cy4KICAgICBmbG9hdCBtaWRkbGVPZkxhc3RHbHlwaCA9IG9mZnNldFRvTWlkZGxl
T2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIsIDApOwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2lu
dChwb2ludC54KCkgKyBtaWRkbGVPZkxhc3RHbHlwaCAtIG9mZnNldFRvTWlkZGxlT2ZHbHlwaCgq
bWFya0ZvbnREYXRhLCBtYXJrR2x5cGgpLCBwb2ludC55KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBhZmQ4YmEyNGZjMWNkZTdj
ZGE5NmM3MmU1ZDZiMzkwYWNiZjU2MjNhLi40N2M1MWNlMTQ4MjczMmY1ZjIxZDg5ZmYxNTQ5OGU5
YThhYjYxMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
QnVmZmVyLmgKQEAgLTE2NSwxOSArMTY1LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgbV9vZmZzZXRz
SW5TdHJpbmcuc2hyaW5rKHRydW5jYXRpb25Qb2ludCk7CiAgICAgfQogCi0gICAgLy8gRm9udENh
c2NhZGU6OmxheW91dFRleHQoKSByZXR1cm5zIGEgR2x5cGhCdWZmZXIgd2hpY2ggaW5jbHVkZXMg
bGF5b3V0IGluZm9ybWF0aW9uIHRoYXQgaXMgc3BsaXQKLSAgICAvLyBpbnRvICJhZHZhbmNlcyIg
YW5kICJvcmlnaW5zIi4gU2VlIHRoZSBBU0NJSS1hcnQgZGlhZ3JhbSBpbiBDb21wbGV4VGV4dENv
bnRyb2xsZXIuaAotICAgIC8vIEluIG9yZGVyIHRvIGdldCBwYWludCBhZHZhbmNlcywgd2UgbmVl
ZCB0byBydW4gdGhpcyAiZmxhdHRlbiIgb3BlcmF0aW9uLgotICAgIC8vIFRoaXMgbWVyZ2VzIHRo
ZSBsYXlvdXQgYWR2YW5jZXMgYW5kIG9yaWdpbnMgdG9nZXRoZXIsCi0gICAgLy8gbGVhdmVzIHRo
ZSBwYWludCBhZHZhbmNlcyBpbiB0aGUgIm1fYWR2YW5jZXMiIGZpZWxkLAotICAgIC8vIGFuZCB6
ZXJvcy1vdXQgdGhlIG9yaWdpbnMgaW4gdGhlICJtX29yaWdpbnMiIGZpZWxkLgorICAgIC8qCisg
ICAgICogVGhpcyBpcyB0aGUgdW5mbGF0dGVuZWQgZm9ybWF0OgorICAgICAqCisgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCAoUGFpbnQgZ2x5cGgg
cG9zaXRpb24pICAgWCAoUGFpbnQgZ2x5cGggcG9zaXRpb24pICAgWCAoUGFpbnQgZ2x5cGggcG9z
aXRpb24pCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAg
ICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIChPcmlnaW4pICAg
ICAgICAgICAgICAgICAvIChPcmlnaW4pICAgICAgICAgICAgICAgICAvIChPcmlnaW4pCisgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAg
ICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAg
ICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgKiAgICAgICAgICAgICAgICBY
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5YCisgICAgICog
KHRleHQgcG9zaXRpb24gXikgIChJbml0aWFsIGFkdmFuY2UpICAgICAgICAgICAgKEFkdmFuY2Up
ICAgICAgICAgICAgICAgICAgKEFkdmFuY2UpICAgICAgICAgICAgICAgICAgIChBZHZhbmNlKQor
ICAgICAqCisgICAgICoKKyAgICAgKgorICAgICAqCisgICAgICoKKyAgICAgKiBBbmQgdGhpcyBp
cyB3aGF0IHdlIHRyYW5zZm9ybSBpdCBpbnRvOgorICAgICAqCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WAorICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgIChBZHZhbmNlKSAgICAgICAgICAg
ICAgICAgICAoQWR2YW5jZSkgICAgICAgICBcCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICogICAgICAgICAgICAgICAgICAgKEluaXRp
YWwgYWR2YW5jZSkgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXCAgIChBZHZhbmNlKQorICAgICAqICAgICAgICAgICAgICAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tCisgICAgICog
ICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICogICAgICAgICAgICAgICAgWCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWAorICAgICAqICh0ZXh0IHBvc2l0aW9uIF4pCisgICAgICoK
KyAgICAgKiBUaGlzIGlzIGFuIG9wZXJhdGlvbiB0aGF0IGRpc2NhcmRzIGFsbCBsYXlvdXQgaW5m
b3JtYXRpb24sIGFuZCBwcmVzZXJ2ZXMgb25seSBwYWludCBpbmZvcm1hdGlvbi4KKyAgICAgKi8K
ICAgICB2b2lkIGZsYXR0ZW4oKQogICAgIHsKKyAgICAgICAgQVNTRVJUKHNpemUoKSB8fCAoIXdp
ZHRoKG1faW5pdGlhbEFkdmFuY2UpICYmICFoZWlnaHQobV9pbml0aWFsQWR2YW5jZSkpKTsKKyAg
ICAgICAgaWYgKHNpemUoKSkgeworICAgICAgICAgICAgbV9pbml0aWFsQWR2YW5jZSA9IG1ha2VH
bHlwaEJ1ZmZlckFkdmFuY2UoCisgICAgICAgICAgICAgICAgd2lkdGgobV9pbml0aWFsQWR2YW5j
ZSkgKyB4KG1fb3JpZ2luc1swXSksCisgICAgICAgICAgICAgICAgaGVpZ2h0KG1faW5pdGlhbEFk
dmFuY2UpICsgeShtX29yaWdpbnNbMF0pKTsKKyAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIG1fYWR2YW5jZXNbaV0g
PSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKAogICAgICAgICAgICAgICAgIC14KG1fb3JpZ2luc1tp
XSkgKyB3aWR0aChtX2FkdmFuY2VzW2ldKSArIChpICsgMSA8IHNpemUoKSA/IHgobV9vcmlnaW5z
W2kgKyAxXSkgOiAwKSwKLSAgICAgICAgICAgICAgICAteShtX29yaWdpbnNbaV0pICsgaGVpZ2h0
KG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geShtX29yaWdpbnNbaSArIDFdKSA6
IDApCi0gICAgICAgICAgICApOworICAgICAgICAgICAgICAgIC15KG1fb3JpZ2luc1tpXSkgKyBo
ZWlnaHQobV9hZHZhbmNlc1tpXSkgKyAoaSArIDEgPCBzaXplKCkgPyB5KG1fb3JpZ2luc1tpICsg
MV0pIDogMCkpOwogICAgICAgICAgICAgbV9vcmlnaW5zW2ldID0gbWFrZUdseXBoQnVmZmVyT3Jp
Z2luKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODUsNyArMjEzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNGbGF0dGVuZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV9vcmlnaW5zW2ldICE9
IG1ha2VHbHlwaEJ1ZmZlck9yaWdpbigpKQorICAgICAgICAgICAgaWYgKHgobV9vcmlnaW5zW2ld
KSB8fCB5KG1fb3JpZ2luc1tpXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBiN2NjMGZiNTI1ZjY4NTI3Yzkx
Y2UxYWJkNjNlMjQ0NzQ0ZWYzN2JiLi5lNTNlMWY2ODg1OWY5MjZiNDZjNjQwODY3YWVmMDUyYmNl
MzYzNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcApAQCAtOTAsMTMgKzkwLDEzIEBAIGlubGluZSBhdXRvIFdpZHRoSXRlcmF0
b3I6OnNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVm
CiAgICAgcmV0dXJuIFRyYW5zZm9ybXNUeXBlOjpOb3RGb3JjZWQ7CiB9CiAKLWlubGluZSBmbG9h
dCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJ
bmRleCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCBmb3JjZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1Nw
YWNlJiBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UpCitpbmxpbmUgYXV0byBXaWR0aEl0ZXJhdG9y
OjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQg
bGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9u
dCYgZm9udCwgYm9vbCBmb3JjZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJiBjaGFyYWN0ZXJz
VHJlYXRlZEFzU3BhY2UpIC0+IEFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1bHQKIHsKICAgICBBU1NF
UlRfVU5VU0VEKGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgc2hvdWxkQXBwbHlGb250VHJhbnNmb3Jt
cyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCkgIT0g
V2lkdGhJdGVyYXRvcjo6VHJhbnNmb3Jtc1R5cGU6Ok5vbmUpOwogCiAgICAgYXV0byBnbHlwaEJ1
ZmZlclNpemUgPSBnbHlwaEJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKCFmb3JjZSAmJiBnbHlwaEJ1
ZmZlclNpemUgPD0gbGFzdEdseXBoQ291bnQgKyAxKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIHsgMCwgbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpIH07CiAKICAgICBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoMCk7CiAgICAgZmxv
YXQgYmVmb3JlV2lkdGggPSAwOwpAQCAtMTA1LDcgKzEwNSw3IEBAIGlubGluZSBmbG9hdCBXaWR0
aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
dW5zaWduCiAKICAgICBBU1NFUlQobGFzdEdseXBoQ291bnQgPD0gZ2x5cGhCdWZmZXJTaXplKTsK
IAotICAgIGZvbnQuYXBwbHlUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwg
bV9jdXJyZW50Q2hhcmFjdGVySW5kZXgsIG1fZW5hYmxlS2VybmluZywgbV9yZXF1aXJlc1NoYXBp
bmcsIG1fZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpLCBtX3J1bi50ZXh0
KCksIG1fcnVuLmRpcmVjdGlvbigpKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gZm9udC5h
cHBseVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBtX2N1cnJlbnRDaGFy
YWN0ZXJJbmRleCwgbV9lbmFibGVLZXJuaW5nLCBtX3JlcXVpcmVzU2hhcGluZywgbV9mb250LmZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIG1fcnVuLnRleHQoKSwgbV9ydW4uZGly
ZWN0aW9uKCkpOwogCiAjaWYgVVNFKENURk9OVFNIQVBFR0xZUEhTX1dPUktBUk9VTkQpCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzgwNzk4MTEzPjogSWYgYSBjaGFyYWN0ZXIgaXMgbm90IGluIEJN
UCwgYW5kIHdlIGRvbid0IGhhdmUgYSBnbHlwaCBmb3IgaXQsCkBAIC0xNTQsNyArMTU0LDcgQEAg
aW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhD
b3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQogICAgICAgICBhZnRlcldpZHRoICs9IHdp
ZHRoKGFkdmFuY2VzW2ldKTsKIAotICAgIHJldHVybiBhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGg7
CisgICAgcmV0dXJuIHsgYWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoLCBpbml0aWFsQWR2YW5jZSB9
OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxib29sLCBib29sPiBleHBhbnNpb25Mb2Nh
dGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVhdEFzU3BhY2UsIGJvb2wgbHRyLCBib29sIGlz
QWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lvbiwgYm9vbCBmb3JiaWRSaWdo
dEV4cGFuc2lvbiwgYm9vbCBmb3JjZUxlZnRFeHBhbnNpb24sIGJvb2wgZm9yY2VSaWdodEV4cGFu
c2lvbikKQEAgLTE4NiwxMSArMTg2LDUyIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJvb2ws
IGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dyYXBoLCBib29sIHRyZWF0CiAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGV4cGFuZExlZnQsIGV4cGFuZFJpZ2h0KTsKIH0KIAorc3Rh
dGljIHZvaWQgZXhwYW5kV2l0aEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2
YW5jZVRvRXhwYW5kLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGluaXRpYWxBZHZhbmNlKQor
eworICAgIHNldFdpZHRoKGFkdmFuY2VUb0V4cGFuZCwgd2lkdGgoYWR2YW5jZVRvRXhwYW5kKSAr
IHdpZHRoKGluaXRpYWxBZHZhbmNlKSk7CisgICAgc2V0SGVpZ2h0KGFkdmFuY2VUb0V4cGFuZCwg
aGVpZ2h0KGFkdmFuY2VUb0V4cGFuZCkgKyBoZWlnaHQoaW5pdGlhbEFkdmFuY2UpKTsKK30KKwor
dm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgc3RkOjpvcHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IGluaXRpYWxBZHZhbmNl
LCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCkKK3sKKyAgICBBU1NFUlQoZ2x5cGhCdWZmZXIuc2l6
ZSgpID49IGxhc3RHbHlwaENvdW50KTsKKworICAgIGlmIChnbHlwaEJ1ZmZlci5zaXplKCkgPD0g
bGFzdEdseXBoQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChsYXN0R2x5cGhD
b3VudCB8fCAoIXdpZHRoKG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSkgJiYgIWhlaWdodChtX2xl
ZnRvdmVySW5pdGlhbEFkdmFuY2UpKSk7CisKKyAgICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6UlRMICYmIGxhc3RHbHlwaENvdW50KSB7CisgICAgICAgIGF1dG8mIHZp
c3VhbGx5TGFzdEFkdmFuY2UgPSAqZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFzdEdseXBoQ291bnQp
OworICAgICAgICBleHBhbmRXaXRoSW5pdGlhbEFkdmFuY2UodmlzdWFsbHlMYXN0QWR2YW5jZSwg
bV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlKTsKKyAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdp
ZHRoKG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSk7CisgICAgICAgIG1fbGVmdG92ZXJJbml0aWFs
QWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKKyAgICB9CisKKyAgICBpZiAoaW5p
dGlhbEFkdmFuY2UpIHsKKyAgICAgICAgaWYgKG1fcnVuLmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OlJUTCkKKyAgICAgICAgICAgIG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSA9IGluaXRp
YWxBZHZhbmNlLnZhbHVlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGxhc3RH
bHlwaENvdW50KSB7CisgICAgICAgICAgICAgICAgYXV0byYgdmlzdWFsbHlQcmV2aW91c0FkdmFu
Y2UgPSAqZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFzdEdseXBoQ291bnQgLSAxKTsKKyAgICAgICAg
ICAgICAgICBleHBhbmRXaXRoSW5pdGlhbEFkdmFuY2UodmlzdWFsbHlQcmV2aW91c0FkdmFuY2Us
IGluaXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIG1fcnVuV2lkdGhTb0Zh
ciArPSB3aWR0aChpbml0aWFsQWR2YW5jZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKGluaXRpYWxB
ZHZhbmNlLnZhbHVlKCkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIFdpZHRoSXRlcmF0
b3I6OmNvbW1pdEN1cnJlbnRGb250UmFuZ2UoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNp
Z25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBGb250JiBwcmltYXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIs
IGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2Um
IGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoQnVm
ZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2U7CiAgICAgYXV0byB0cmFuc2Zvcm1zVHlwZSA9IHNo
b3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJy
ZW50Q2hhcmFjdGVySW5kZXgpOwotICAgIGlmICh0cmFuc2Zvcm1zVHlwZSAhPSBUcmFuc2Zvcm1z
VHlwZTo6Tm9uZSkKLSAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IGFwcGx5Rm9udFRyYW5zZm9y
bXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZv
bnQsIHRyYW5zZm9ybXNUeXBlID09IFRyYW5zZm9ybXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZSk7CisgICAgaWYgKHRyYW5zZm9ybXNUeXBlICE9IFRyYW5zZm9ybXNUeXBl
OjpOb25lKSB7CisgICAgICAgIGF1dG8gYXBwbHlGb250VHJhbnNmb3Jtc1Jlc3VsdCA9IGFwcGx5
Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFj
dGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBlID09IFRyYW5zZm9ybXNUeXBlOjpGb3JjZWQs
IGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CisgICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSBh
cHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0LmFkZGl0aW9uYWxBZHZhbmNlOworICAgICAgICBpbml0
aWFsQWR2YW5jZSA9IGFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1bHQuaW5pdGlhbEFkdmFuY2U7Cisg
ICAgfQorICAgIGFwcGx5SW5pdGlhbEFkdmFuY2UoZ2x5cGhCdWZmZXIsIGluaXRpYWxBZHZhbmNl
LCBsYXN0R2x5cGhDb3VudCk7CiAgICAgbV9jdXJyZW50Q2hhcmFjdGVySW5kZXggPSBjdXJyZW50
Q2hhcmFjdGVySW5kZXg7CiAKICAgICBpZiAod2lkdGhPZkN1cnJlbnRGb250UmFuZ2UgJiYgbV9m
YWxsYmFja0ZvbnRzICYmICZmb250ICE9ICZwcmltYXJ5Rm9udCkgewpAQCAtNDc5LDcgKzUyMCw5
IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiB2b2lkIFdpZHRoSXRlcmF0b3I6OmZpbmFsaXpl
KEdseXBoQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcnVuLnJ0bCgpIHx8ICFtX2xl
ZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKLSAgICAvLyBJbiBMVFIgdGhpcyBkb2VzIG5vdGhp
bmcuIEluIFJUTCwgdGhpcyBhZGRzIGxlZnQgd2lkdGggYnkgbW92aW5nIHRoZSB3aG9sZSBydW4g
dG8gdGhlIHJpZ2h0LgorICAgIC8vIEluIExUUiB0aGVzZSBkbyBub3RoaW5nLiBJbiBSVEwsIHRo
ZXNlIGFkZCBsZWZ0IHdpZHRoIGJ5IG1vdmluZyB0aGUgd2hvbGUgcnVuIHRvIHRoZSByaWdodC4K
KyAgICBidWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UobV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNl
KTsKKyAgICBtX3J1bldpZHRoU29GYXIgKz0gd2lkdGgobV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNl
KTsKICAgICBidWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UobV9sZWZ0b3Zlckp1c3RpZmljYXRp
b25XaWR0aCk7CiAgICAgbV9ydW5XaWR0aFNvRmFyICs9IG1fbGVmdG92ZXJKdXN0aWZpY2F0aW9u
V2lkdGg7CiAgICAgbV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKaW5kZXggZjYwNmZh
MjMyNDlhNmMxMWFmZjlmMDM5Y2IyNjk2NTk3ZTZlZmZlYS4uMjQwNThiMWNlNWU0NDlhMDAyZmRm
NDg3ZTg3YTY5MTllOTA3YThlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dpZHRoSXRlcmF0b3IuaApAQCAtNjMsOCArNjMsMTMgQEAgcHJpdmF0ZToKIAogICAg
IGVudW0gY2xhc3MgVHJhbnNmb3Jtc1R5cGUgeyBOb25lLCBGb3JjZWQsIE5vdEZvcmNlZCB9Owog
ICAgIFRyYW5zZm9ybXNUeXBlIHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoY29uc3QgR2x5cGhC
dWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3Rl
ckluZGV4KSBjb25zdDsKLSAgICBmbG9hdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVy
JiwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eCwgY29uc3QgRm9udCYsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwor
ICAgIHN0cnVjdCBBcHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0IHsKKyAgICAgICAgZmxvYXQgYWRk
aXRpb25hbEFkdmFuY2U7CisgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2YW5j
ZTsKKyAgICB9OworICAgIEFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1bHQgYXBwbHlGb250VHJhbnNm
b3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJy
ZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmLCBib29sIGZvcmNlLCBDaGFyYWN0ZXJzVHJl
YXRlZEFzU3BhY2UmKTsKICAgICB2b2lkIGNvbW1pdEN1cnJlbnRGb250UmFuZ2UoR2x5cGhCdWZm
ZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3Rlcklu
ZGV4LCBjb25zdCBGb250JiwgY29uc3QgRm9udCYgcHJpbWFyeUZvbnQsIFVDaGFyMzIgY2hhcmFj
dGVyLCBmbG9hdCB3aWR0aE9mQ3VycmVudEZvbnRSYW5nZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1Nw
YWNlJik7CisgICAgdm9pZCBhcHBseUluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyJiwgc3RkOjpv
cHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IGluaXRpYWxBZHZhbmNlLCB1bnNpZ25lZCBsYXN0
R2x5cGhDb3VudCk7CiAKICAgICBib29sIGhhc0V4dHJhU3BhY2luZygpIGNvbnN0OwogICAgIHZv
aWQgYXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBj
aGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBnbHlwaEJ1ZmZlclN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNoYXJhY3RlckRlc3RpbmF0aW9uSW5kZXgsIGZsb2F0IHN0YXJ0aW5nUnVuV2lkdGgpOwpA
QCAtODIsNiArODcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2Zh
bGxiYWNrRm9udHMgeyBudWxscHRyIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
X2xhc3RDaGFyYWN0ZXJJbmRleDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgbV9sZWZ0b3Zlcklu
aXRpYWxBZHZhbmNlIHsgbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpIH07CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50Q2hhcmFjdGVySW5kZXggeyAwIH07CiAgICAgZmxvYXQgbV9sZWZ0b3Zlckp1c3Rp
ZmljYXRpb25XaWR0aCB7IDAgfTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udENvcmVUZXh0LmNwcAppbmRleCAyOWEwN2M3NmFmMGFkYTE0Mjc2YTAxNTViMzc3MTcxYzRi
M2IzOTg5Li4xMDdhZGY2MTZhNjA1MTY0MWQ2MzVkMjlhMmNjOTlkZTgwZjQ5Mzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDb3JlVGV4dC5jcHAKQEAgLTU4NCwxMSArNTg0LDEwIEBAIGZsb2F0IEZvbnQ6OnBsYXRmb3Jt
V2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogI2VuZGlmCiAKLXZvaWQgRm9udDo6
YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgYmVnaW5u
aW5nR2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxl
S2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwg
U3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24pIGNvbnN0CitHbHlw
aEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3Ry
aW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVpcmVzU2hhcGluZyk7CiAK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IEdseXBoQnVmZmVyIGluaXRpYWwgYWR2YW5jZS4KICNp
ZiBVU0UoQ1RGT05UU0hBUEVHTFlQSFMpCiAgICAgYXV0byBoYW5kbGVyID0gXihDRlJhbmdlIHJh
bmdlLCBDR0dseXBoKiogbmV3R2x5cGhzUG9pbnRlciwgQ0dTaXplKiogbmV3QWR2YW5jZXNQb2lu
dGVyLCBDR1BvaW50KiogbmV3T2Zmc2V0c1BvaW50ZXIsIENGSW5kZXgqKiBuZXdJbmRpY2VzUG9p
bnRlcikKICAgICB7CkBAIC02MTYsMTggKzYxNSwyMyBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNm
b3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5k
ZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdp
bm5pbmdHbHlwaEluZGV4OyArK2kpCiAgICAgICAgIGdseXBoQnVmZmVyLm9mZnNldHNJblN0cmlu
ZyhiZWdpbm5pbmdHbHlwaEluZGV4KVtpXSAtPSBiZWdpbm5pbmdTdHJpbmdJbmRleDsKIAotICAg
IENURm9udFNoYXBlR2x5cGhzKAorICAgIGF1dG8gbnVtYmVyT2ZJbnB1dEdseXBocyA9IGdseXBo
QnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXg7CisKKyAgICBhdXRvIGluaXRpYWxB
ZHZhbmNlID0gQ1RGb250U2hhcGVHbHlwaHMoCiAgICAgICAgIG1fcGxhdGZvcm1EYXRhLmN0Rm9u
dCgpLAogICAgICAgICBnbHlwaEJ1ZmZlci5nbHlwaHMoYmVnaW5uaW5nR2x5cGhJbmRleCksCi0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoYmVn
aW5uaW5nR2x5cGhJbmRleCkpLAotICAgICAgICByZWludGVycHJldF9jYXN0PENHUG9pbnQqPihn
bHlwaEJ1ZmZlci5vcmlnaW5zKGJlZ2lubmluZ0dseXBoSW5kZXgpKSwKKyAgICAgICAgZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nR2x5cGhJbmRleCksCisgICAgICAgIGdseXBoQnVmZmVy
Lm9yaWdpbnMoYmVnaW5uaW5nR2x5cGhJbmRleCksCiAgICAgICAgIGdseXBoQnVmZmVyLm9mZnNl
dHNJblN0cmluZyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4odXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLmdldCgpKSwKLSAgICAgICAg
Z2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRleCwKKyAgICAgICAgbnVtYmVy
T2ZJbnB1dEdseXBocywKICAgICAgICAgb3B0aW9ucywKICAgICAgICAgbG9jYWxlU3RyaW5nLmdl
dCgpLAogICAgICAgICBoYW5kbGVyKTsKIAorICAgIEFTU0VSVChudW1iZXJPZklucHV0R2x5cGhz
IHx8IGdseXBoQnVmZmVyLnNpemUoKSA9PSBiZWdpbm5pbmdHbHlwaEluZGV4KTsKKyAgICBBU1NF
UlQobnVtYmVyT2ZJbnB1dEdseXBocyB8fCAoIWluaXRpYWxBZHZhbmNlLndpZHRoICYmICFpbml0
aWFsQWR2YW5jZS5oZWlnaHQpKTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlw
aEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4OyArK2kpCiAgICAgICAgIGdseXBo
QnVmZmVyLm9mZnNldHNJblN0cmluZyhiZWdpbm5pbmdHbHlwaEluZGV4KVtpXSArPSBiZWdpbm5p
bmdTdHJpbmdJbmRleDsKIApAQCAtNjUyLDExICs2NTYsMTUgQEAgdm9pZCBGb250OjphcHBseVRy
YW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlw
aEluZGUKIAogICAgIENURm9udFRyYW5zZm9ybU9wdGlvbnMgb3B0aW9ucyA9IChlbmFibGVLZXJu
aW5nID8ga0NURm9udFRyYW5zZm9ybUFwcGx5UG9zaXRpb25pbmcgOiAwKSB8IGtDVEZvbnRUcmFu
c2Zvcm1BcHBseVNoYXBpbmc7CiAgICAgQ1RGb250VHJhbnNmb3JtR2x5cGhzKG1fcGxhdGZvcm1E
YXRhLmN0Rm9udCgpLCBnbHlwaEJ1ZmZlci5nbHlwaHMoYmVnaW5uaW5nR2x5cGhJbmRleCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nR2x5
cGhJbmRleCkpLCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4LCBvcHRp
b25zKTsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNl
KCk7CiAjZW5kaWYKIAogICAgIC8vIFNlZSB0aGUgY29tbWVudCBhYm92ZSBpbiB0aGlzIGZ1bmN0
aW9uIHdoZXJlIHRoZSBvdGhlciBjYWxsIHRvIHJldmVyc2UoKSBpcy4KICAgICBpZiAodGV4dERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVy
c2UoYmVnaW5uaW5nR2x5cGhJbmRleCwgZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5
cGhJbmRleCk7CisKKyAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKIHN0YXRpYyBpbnQg
ZXh0cmFjdE51bWJlcihDRk51bWJlclJlZiBudW1iZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434185</attachid>
            <date>2021-07-25 17:08:37 -0700</date>
            <delta_ts>2021-07-25 18:49:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227979-20210725170836.patch</filename>
            <type>text/plain</type>
            <size>25939</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5YWQzYzA2YzU0YmNk
OWRmM2M0OGFmMTgzYTFjODliYTY4ZTdjMS4uYjVlOGJlM2Q4NjYyNWJkN2NmMDg1NzhhMmZkOGYz
YTU3OGQ0MmY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA3LTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIG5l
eHQgc3RlcCB0byBkZWxldGUgdGhlIGNvbXBsZXggdGV4dCBjb2RlcGF0aCBmcm9tIENvY29hIHBv
cnRzLgorCisgICAgICAgIFdpbGwgYmUgdGVzdGVkIHdoZW4gd2UgZGVsZXRlIHRoZSBjb21wbGV4
IHRleHQgY29kZXBhdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmFwcGx5VHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4
dFJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmZsYXR0ZW4pOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXI6OmlzRmxhdHRlbmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRo
SXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6ZXhwYW5k
V2l0aEluaXRpYWxBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFw
cGx5SW5pdGlhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y29t
bWl0Q3VycmVudEZvbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjphcHBseVRyYW5zZm9ybXMgY29uc3QpOgorCiAyMDIxLTA3
LTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUg
UGF5XSBEbyBub3QgYWRkIGNvdXBvbiBjb2RlIGBBcHBsZVBheUVycm9yQ29kZWAgdmFsdWVzIGZv
ciBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKaW5kZXggYTFk
NmUzNmFkYzQ2ODUxMzNhNTAxNGJkZmRmZWMyMjA5NzRiNDVmNy4uMmU0ZTE2YjdiNTJmMWNmMWM1
Mjc5OGIyMWMzNzkyNjgxNTQwMTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTEwNSwzMyArMTA1
LDYgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBlbmRPZmZzZXRBdCh1bnNpZ25lZCBpKSBj
b25zdCB7IEFTU0VSVCghbV9pc01vbm90b25pYyk7IHJldHVybiBtX2dseXBoRW5kT2Zmc2V0c1tp
XTsgfQogICAgICAgICBjb25zdCBDR0dseXBoKiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2ds
eXBocy5kYXRhKCk7IH0KIAotICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIGlzIHRoZSBmb3Jt
YXQgb2YgdGhlIGluZm9ybWF0aW9uIENvcmVUZXh0IGdpdmVzIHVzIGFib3V0IGVhY2ggcnVuOgot
ICAgICAgICAgKgotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtLS0tLT5YIChQYWludCBnbHlwaCBwb3NpdGlvbikgICBYIChQYWludCBnbHlwaCBwb3Np
dGlvbikgICBYIChQYWludCBnbHlwaCBwb3NpdGlvbikKLSAgICAgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAg
ICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3Ci0gICAgICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAg
IChJbml0aWFsIGFkdmFuY2UpIC8gICAgIC8gKEdseXBoIG9yaWdpbikgICAgICAgICAgIC8gKEds
eXBoIG9yaWdpbikgICAgICAgICAgIC8gKEdseXBoIG9yaWdpbikKLSAgICAgICAgICogICAgICAg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAvICAgICAgICAgICAgICAgICAgICAg
ICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAg
ICAgICAvICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAv
ICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAgICAgICAgIFgg
ICAgICAgICAgICAgICAgICAgICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgKLSAgICAgICAg
ICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlIGFk
dmFuY2UpICAgICAgICAgICAgIChiYXNlIGFkdmFuY2UpICAgICAgICAgICAgIChiYXNlIGFkdmFu
Y2UpCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAg
ICAgICAqCi0gICAgICAgICAqIEFuZCBoZXJlIGlzIHRoZSBvdXRwdXQgd2UgdHJhbnNmb3JtIHRo
aXMgaW50byAoZm9yIGVhY2ggcnVuKToKLSAgICAgICAgICoKLSAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WAotICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAoUGFpbnQgYWR2YW5jZSkg
ICAgICAgICAgICAoUGFpbnQgYWR2YW5jZSkgICAgICAgXAotICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgKEluaXRpYWwgYWR2YW5jZSkgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAoUGFpbnQgYWR2YW5jZSkKLSAg
ICAgICAgICogICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICogICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICAg
ICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgKLSAg
ICAgICAgICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgKGxheW91dCBhZHZhbmNl
KSAgICAgICAgICAgICAgICAgICAgICAgKGxheW91dCBhZHZhbmNlKSAgICAgICAgICAgKGxheW91
dCBhZHZhbmNlKQotICAgICAgICAgKi8KICAgICAgICAgdm9pZCBncm93SW5pdGlhbEFkdmFuY2VI
b3Jpem9udGFsbHkoZmxvYXQgZGVsdGEpIHsgbV9pbml0aWFsQWR2YW5jZS5leHBhbmQoZGVsdGEs
IDApOyB9CiAgICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5pdGlhbEFkdmFuY2U7IH0KICAgICAgICAgY29uc3QgRmxvYXRTaXplKiBiYXNlQWR2YW5j
ZXMoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VBZHZhbmNlcy5kYXRhKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdhMzdhZjhiYmZkODc5ZDVhODQ0
MzhjZTRlMzk5M2M0N2Y3OTEzZi4uMWFkNWI0ZDZkMjc3NjBjM2Q2YzVmYzA4ZWRhZjBkYzhkYTRj
OTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTU0
Miw3ICs1NDIsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6Y3JlYXRlU2NhbGVkRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYQogfQogCiAjaWYgIVVTRShDT1JF
X1RFWFQpCi12b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgYm9vbCwgYm9vbCwgY29uc3QgQXRvbVN0cmluZyYsIFN0cmluZ1ZpZXcsIFRl
eHREaXJlY3Rpb24pIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFuc2Zv
cm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sLCBib29sLCBjb25zdCBB
dG9tU3RyaW5nJiwgU3RyaW5nVmlldywgVGV4dERpcmVjdGlvbikgY29uc3QKIHsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDQ3YTdlMTJmOWJj
Njg5MjBjYTcxNGU5MjQ3OWU1OWVmM2VlZThkMzIuLjBkZWU4YTUwZTUzMzM5MWIzZjc4YWY4Mjhl
MjI5NjU1YWFhMzE5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
QEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuUmVuZGVy
Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpIGNvbnN0Owot
ICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5n
R2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2Vy
bmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3Ry
aW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgYXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJ
bmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywg
Ym9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmll
dyB0ZXh0LCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgbnVsbG9wdCBp
ZiBub25lIG9mIHRoZSBnbHlwaHMgYXJlIE9ULVNWRyBnbHlwaHMuCiAgICAgc3RkOjpvcHRpb25h
bDxCaXRWZWN0b3I+IGZpbmRPVFNWR0dseXBocyhjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5z
aWduZWQgY291bnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGFjNTRlNjgxMzk5Mjg0ZWQ4YmY4YTExYzc2YWIxMWZk
ZmNmZDEzZmUuLjA1MGUyODdkOTlkY2ViYWE1NGYzM2JmZWFmOWI2YzhkOWZiY2RkYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAg
LTI1NCw2ICsyNTQsOCBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25z
dCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgICAgIHNpbXBsZUl0
ZXJhdG9yLmFkdmFuY2UocnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgICAgIHRvdGFs
V2lkdGggPSBzaW1wbGVJdGVyYXRvci5ydW5XaWR0aFNvRmFyKCk7CiAgICAgICAgIHNpbXBsZUl0
ZXJhdG9yLmZpbmFsaXplKGdseXBoQnVmZmVyKTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmFsaXpp
bmcgdGhlIFdpZHRoSXRlcmF0b3IgY2FuIGFmZmVjdCB0aGUgdG90YWwgd2lkdGguCisgICAgICAg
IC8vIFdlIG1pZ2h0IG5lZWQgdG8gYWRqdXN0IHRoZSB2YXJpb3VzIHdpZHRocyB3ZSd2ZSBtZWFz
dXJlZCB0byBhY2NvdW50IGZvciB0aGF0LgogICAgIH0KIAogICAgIGlmIChvdXRXaWR0aEJlZm9y
ZVJhbmdlKQpAQCAtMzE5LDcgKzMyMSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAg
ICAgIGdseXBoQnVmZmVyLmFkZChnbHlwaCwgZm9udCwgZ2x5cGhXaWR0aCwgaSk7CiAgICAgfQog
Ci0gICAgZm9udC5hcHBseVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5p
bmcoKSwgcmVxdWlyZXNTaGFwaW5nKCksIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxl
KCksIHRleHQsIHRleHREaXJlY3Rpb24pOworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250
LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgMCwgMCwgZW5hYmxlS2VybmluZygpLCByZXF1
aXJlc1NoYXBpbmcoKSwgZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRMb2NhbGUoKSwgdGV4dCwg
dGV4dERpcmVjdGlvbik7CiAgICAgLy8gVGhpcyBpcyBuZWVkZWQgb25seSB0byBtYXRjaCB0aGUg
cmVzdWx0IG9mIHRoZSBzbG93IHBhdGguCiAgICAgLy8gU2FtZSBnbHlwaCB3aWR0aHMgYnV0IGRp
ZmZlcmVudCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGNhbiBwcm9kdWNlIGRpZmZlcmVudCBy
dW4gd2lkdGguCiAgICAgZmxvYXQgcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxp
ZWQgPSAtcnVuV2lkdGg7CkBAIC0zMjcsNiArMzI5LDggQEAgZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGkKICAgICAgICAgcnVuV2lkdGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgKz0gV2Vi
Q29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICBydW5XaWR0aCArPSBy
dW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZDsKIAorICAgIHJ1bldpZHRoICs9
IFdlYkNvcmU6OndpZHRoKGluaXRpYWxBZHZhbmNlKTsKKwogICAgIGlmIChjYWNoZUVudHJ5KQog
ICAgICAgICAqY2FjaGVFbnRyeSA9IHJ1bldpZHRoOwogICAgIHJldHVybiBydW5XaWR0aDsKQEAg
LTEyNzAsMTEgKzEyNzQsNiBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxl
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVucwogICAgICAgICBpbml0
aWFsQWR2YW5jZSA9IGJlZm9yZVdpZHRoOwogICAgIH0KICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJ
bml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7Ci0gICAgaWYgKCFnbHlwaEJ1ZmZlci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgLy8gVGhlIGluaXRpYWwgYWR2YW5jZSBpcyBzdXBwb3NlZCB0byBw
b2ludCBkaXJlY3RseSB0byB0aGUgZmlyc3QgZ2x5cGgncyBwYWludCBwb3NpdGlvbi4KLSAgICAg
ICAgLy8gU2VlIHRoZSBhc2NpaS1hcnQgZGlhZ3JhbSBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIu
aC4KLSAgICAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UobWFrZUdseXBoQnVm
ZmVyQWR2YW5jZSh4KGdseXBoQnVmZmVyLm9yaWdpbkF0KDApKSwgeShnbHlwaEJ1ZmZlci5vcmln
aW5BdCgwKSkpKTsKLSAgICB9CiAKICAgICAvLyBUaGUgZ2x5cGggYnVmZmVyIGlzIGN1cnJlbnRs
eSBpbiBsb2dpY2FsIG9yZGVyLAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgcmVz
dWx0cyBpbiB2aXN1YWwgb3JkZXIuCkBAIC0xMzI2LDYgKzEzMjUsNyBAQCBpbmxpbmUgYm9vbCBz
aG91bGREcmF3SWZMb2FkaW5nKGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21G
b250Tm90UmVhZAogICAgIHJldHVybiAhZm9udC5pc0ludGVyc3RpdGlhbCgpIHx8IGZvbnQudmlz
aWJpbGl0eSgpID09IEZvbnQ6OlZpc2liaWxpdHk6OlZpc2libGUgfHwgY3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID09IEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb246OlVzZUZh
bGxiYWNrSWZGb250Tm90UmVhZHk7CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUg
R2x5cGhCdWZmZXIncyBpbml0aWFsIGFkdmFuY2UgaGFzIGFscmVhZHkgYmVlbiBpbmNvcnBvcmF0
ZWQgaW50byB0aGUgc3RhcnQgcG9pbnQuCiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIEZsb2F0UG9pbnQmIHBvaW50LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChnbHlwaEJ1ZmZlci5pc0ZsYXR0
ZW5lZCgpKTsKQEAgLTEzODcsNiArMTM4Nyw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAg
ICAgR2x5cGggbWFya0dseXBoID0gbWFya0dseXBoRGF0YS52YWx1ZSgpLmdseXBoOwogICAgIEds
eXBoIHNwYWNlR2x5cGggPSBtYXJrRm9udERhdGEtPnNwYWNlR2x5cGgoKTsKIAorICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIHRvIHRha2UgdGhlIGluaXRpYWwgYWR2YW5jZSBpbnRvIGFjY291bnQu
CisgICAgLy8gVGhlIHByb2JsZW0gbWlnaHQgYWN0dWFsbHkgYmUgaGFyZGVyIGZvciBjb21wbGV4
IHRleHQsIHRob3VnaC4KKyAgICAvLyBQdXR0aW5nIGEgbWFyayBvdmVyIGV2ZXJ5IGdseXBoIHBy
b2JhYmx5IGlzbid0IGdyZWF0IGluIGNvbXBsZXggc2NyaXB0cy4KICAgICBmbG9hdCBtaWRkbGVP
Zkxhc3RHbHlwaCA9IG9mZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIsIDAp
OwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCkgKyBtaWRkbGVPZkxhc3RHbHlw
aCAtIG9mZnNldFRvTWlkZGxlT2ZHbHlwaCgqbWFya0ZvbnREYXRhLCBtYXJrR2x5cGgpLCBwb2lu
dC55KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaAppbmRleCBhZmQ4YmEyNGZjMWNkZTdjZGE5NmM3MmU1ZDZiMzkwYWNiZjU2MjNhLi40N2M1
MWNlMTQ4MjczMmY1ZjIxZDg5ZmYxNTQ5OGU5YThhYjYxMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTE2NSwxOSArMTY1LDQ3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuc2hyaW5rKHRydW5jYXRpb25Qb2lu
dCk7CiAgICAgfQogCi0gICAgLy8gRm9udENhc2NhZGU6OmxheW91dFRleHQoKSByZXR1cm5zIGEg
R2x5cGhCdWZmZXIgd2hpY2ggaW5jbHVkZXMgbGF5b3V0IGluZm9ybWF0aW9uIHRoYXQgaXMgc3Bs
aXQKLSAgICAvLyBpbnRvICJhZHZhbmNlcyIgYW5kICJvcmlnaW5zIi4gU2VlIHRoZSBBU0NJSS1h
cnQgZGlhZ3JhbSBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaAotICAgIC8vIEluIG9yZGVyIHRv
IGdldCBwYWludCBhZHZhbmNlcywgd2UgbmVlZCB0byBydW4gdGhpcyAiZmxhdHRlbiIgb3BlcmF0
aW9uLgotICAgIC8vIFRoaXMgbWVyZ2VzIHRoZSBsYXlvdXQgYWR2YW5jZXMgYW5kIG9yaWdpbnMg
dG9nZXRoZXIsCi0gICAgLy8gbGVhdmVzIHRoZSBwYWludCBhZHZhbmNlcyBpbiB0aGUgIm1fYWR2
YW5jZXMiIGZpZWxkLAotICAgIC8vIGFuZCB6ZXJvcy1vdXQgdGhlIG9yaWdpbnMgaW4gdGhlICJt
X29yaWdpbnMiIGZpZWxkLgorICAgIC8qCisgICAgICogVGhpcyBpcyB0aGUgdW5mbGF0dGVuZWQg
Zm9ybWF0OgorICAgICAqCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWCAoUGFpbnQgZ2x5cGggcG9zaXRpb24pICAgWCAoUGFpbnQgZ2x5cGggcG9z
aXRpb24pICAgWCAoUGFpbnQgZ2x5cGggcG9zaXRpb24pCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3
ICAgICAgICAgICAgICAgICAgICAgICAgICA3CisgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAg
ICAgICAgICAgICAgICAgICAgIC8KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvIChPcmlnaW4pICAgICAgICAgICAgICAgICAvIChPcmlnaW4pICAgICAg
ICAgICAgICAgICAvIChPcmlnaW4pCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAg
ICAgICAgICAgICAvCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAg
IC8KKyAgICAgKiAgICAgICAgICAgICAgICBYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5YLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT5YCisgICAgICogKHRleHQgcG9zaXRpb24gXikgIChJbml0aWFsIGFk
dmFuY2UpICAgICAgICAgICAgKEFkdmFuY2UpICAgICAgICAgICAgICAgICAgKEFkdmFuY2UpICAg
ICAgICAgICAgICAgICAgIChBZHZhbmNlKQorICAgICAqCisgICAgICoKKyAgICAgKgorICAgICAq
CisgICAgICoKKyAgICAgKiBBbmQgdGhpcyBpcyB3aGF0IHdlIHRyYW5zZm9ybSBpdCBpbnRvOgor
ICAgICAqCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0t
LS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+
WAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAg
ICAgICAgIChBZHZhbmNlKSAgICAgICAgICAgICAgICAgICAoQWR2YW5jZSkgICAgICAgICBcCisg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICogICAgICAgICAgICAgICAgICAgKEluaXRpYWwgYWR2YW5jZSkgLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgIChBZHZh
bmNlKQorICAgICAqICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tCisgICAgICogICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICogICAgICAgICAgICAgICAg
WCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorICAgICAq
ICh0ZXh0IHBvc2l0aW9uIF4pCisgICAgICoKKyAgICAgKiBUaGlzIGlzIGFuIG9wZXJhdGlvbiB0
aGF0IGRpc2NhcmRzIGFsbCBsYXlvdXQgaW5mb3JtYXRpb24sIGFuZCBwcmVzZXJ2ZXMgb25seSBw
YWludCBpbmZvcm1hdGlvbi4KKyAgICAgKi8KICAgICB2b2lkIGZsYXR0ZW4oKQogICAgIHsKKyAg
ICAgICAgQVNTRVJUKHNpemUoKSB8fCAoIXdpZHRoKG1faW5pdGlhbEFkdmFuY2UpICYmICFoZWln
aHQobV9pbml0aWFsQWR2YW5jZSkpKTsKKyAgICAgICAgaWYgKHNpemUoKSkgeworICAgICAgICAg
ICAgbV9pbml0aWFsQWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoCisgICAgICAgICAg
ICAgICAgd2lkdGgobV9pbml0aWFsQWR2YW5jZSkgKyB4KG1fb3JpZ2luc1swXSksCisgICAgICAg
ICAgICAgICAgaGVpZ2h0KG1faW5pdGlhbEFkdmFuY2UpICsgeShtX29yaWdpbnNbMF0pKTsKKyAg
ICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIG1fYWR2YW5jZXNbaV0gPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKAogICAg
ICAgICAgICAgICAgIC14KG1fb3JpZ2luc1tpXSkgKyB3aWR0aChtX2FkdmFuY2VzW2ldKSArIChp
ICsgMSA8IHNpemUoKSA/IHgobV9vcmlnaW5zW2kgKyAxXSkgOiAwKSwKLSAgICAgICAgICAgICAg
ICAteShtX29yaWdpbnNbaV0pICsgaGVpZ2h0KG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6
ZSgpID8geShtX29yaWdpbnNbaSArIDFdKSA6IDApCi0gICAgICAgICAgICApOworICAgICAgICAg
ICAgICAgIC15KG1fb3JpZ2luc1tpXSkgKyBoZWlnaHQobV9hZHZhbmNlc1tpXSkgKyAoaSArIDEg
PCBzaXplKCkgPyB5KG1fb3JpZ2luc1tpICsgMV0pIDogMCkpOwogICAgICAgICAgICAgbV9vcmln
aW5zW2ldID0gbWFrZUdseXBoQnVmZmVyT3JpZ2luKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
ODUsNyArMjEzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNGbGF0dGVuZWQoKSBjb25zdAogICAg
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9vcmlnaW5zW2ldICE9IG1ha2VHbHlwaEJ1ZmZlck9yaWdpbigpKQorICAg
ICAgICAgICAgaWYgKHgobV9vcmlnaW5zW2ldKSB8fCB5KG1fb3JpZ2luc1tpXSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cAppbmRleCBiN2NjMGZiNTI1ZjY4NTI3YzkxY2UxYWJkNjNlMjQ0NzQ0ZWYzN2JiLi5lNTNlMWY2
ODg1OWY5MjZiNDZjNjQwODY3YWVmMDUyYmNlMzYzNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtOTAsMTMgKzkwLDEz
IEBAIGlubGluZSBhdXRvIFdpZHRoSXRlcmF0b3I6OnNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMo
Y29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmCiAgICAgcmV0dXJuIFRyYW5zZm9ybXNUeXBlOjpO
b3RGb3JjZWQ7CiB9CiAKLWlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFu
c2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQs
IHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCBm
b3JjZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJiBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2Up
CitpbmxpbmUgYXV0byBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJl
bnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCBmb3JjZSwgQ2hhcmFjdGVy
c1RyZWF0ZWRBc1NwYWNlJiBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UpIC0+IEFwcGx5Rm9udFRy
YW5zZm9ybXNSZXN1bHQKIHsKICAgICBBU1NFUlRfVU5VU0VEKGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eCwgc2hvdWxkQXBwbHlGb250VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQs
IGN1cnJlbnRDaGFyYWN0ZXJJbmRleCkgIT0gV2lkdGhJdGVyYXRvcjo6VHJhbnNmb3Jtc1R5cGU6
Ok5vbmUpOwogCiAgICAgYXV0byBnbHlwaEJ1ZmZlclNpemUgPSBnbHlwaEJ1ZmZlci5zaXplKCk7
CiAgICAgaWYgKCFmb3JjZSAmJiBnbHlwaEJ1ZmZlclNpemUgPD0gbGFzdEdseXBoQ291bnQgKyAx
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgMCwgbWFrZUdseXBoQnVmZmVy
QWR2YW5jZSgpIH07CiAKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzID0gZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoMCk7CiAgICAgZmxvYXQgYmVmb3JlV2lkdGggPSAwOwpAQCAtMTA1LDcg
KzEwNSw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1z
KEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAKICAgICBBU1NFUlQobGFzdEdseXBo
Q291bnQgPD0gZ2x5cGhCdWZmZXJTaXplKTsKIAotICAgIGZvbnQuYXBwbHlUcmFuc2Zvcm1zKGds
eXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwgbV9jdXJyZW50Q2hhcmFjdGVySW5kZXgsIG1fZW5h
YmxlS2VybmluZywgbV9yZXF1aXJlc1NoYXBpbmcsIG1fZm9udC5mb250RGVzY3JpcHRpb24oKS5j
b21wdXRlZExvY2FsZSgpLCBtX3J1bi50ZXh0KCksIG1fcnVuLmRpcmVjdGlvbigpKTsKKyAgICBh
dXRvIGluaXRpYWxBZHZhbmNlID0gZm9udC5hcHBseVRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxh
c3RHbHlwaENvdW50LCBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCwgbV9lbmFibGVLZXJuaW5nLCBt
X3JlcXVpcmVzU2hhcGluZywgbV9mb250LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxl
KCksIG1fcnVuLnRleHQoKSwgbV9ydW4uZGlyZWN0aW9uKCkpOwogCiAjaWYgVVNFKENURk9OVFNI
QVBFR0xZUEhTX1dPUktBUk9VTkQpCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzgwNzk4MTEzPjog
SWYgYSBjaGFyYWN0ZXIgaXMgbm90IGluIEJNUCwgYW5kIHdlIGRvbid0IGhhdmUgYSBnbHlwaCBm
b3IgaXQsCkBAIC0xNTQsNyArMTU0LDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFw
cGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytp
KQogICAgICAgICBhZnRlcldpZHRoICs9IHdpZHRoKGFkdmFuY2VzW2ldKTsKIAotICAgIHJldHVy
biBhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGg7CisgICAgcmV0dXJuIHsgYWZ0ZXJXaWR0aCAtIGJl
Zm9yZVdpZHRoLCBpbml0aWFsQWR2YW5jZSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFp
cjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVh
dEFzU3BhY2UsIGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVm
dEV4cGFuc2lvbiwgYm9vbCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgYm9vbCBmb3JjZUxlZnRFeHBh
bnNpb24sIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbikKQEAgLTE4NiwxMSArMTg2LDUyIEBAIHN0
YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wg
aWRlb2dyYXBoLCBib29sIHRyZWF0CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGV4cGFuZExl
ZnQsIGV4cGFuZFJpZ2h0KTsKIH0KIAorc3RhdGljIHZvaWQgZXhwYW5kV2l0aEluaXRpYWxBZHZh
bmNlKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZVRvRXhwYW5kLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UmIGluaXRpYWxBZHZhbmNlKQoreworICAgIHNldFdpZHRoKGFkdmFuY2VUb0V4cGFu
ZCwgd2lkdGgoYWR2YW5jZVRvRXhwYW5kKSArIHdpZHRoKGluaXRpYWxBZHZhbmNlKSk7CisgICAg
c2V0SGVpZ2h0KGFkdmFuY2VUb0V4cGFuZCwgaGVpZ2h0KGFkdmFuY2VUb0V4cGFuZCkgKyBoZWln
aHQoaW5pdGlhbEFkdmFuY2UpKTsKK30KKwordm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUluaXRp
YWxBZHZhbmNlKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgc3RkOjpvcHRpb25hbDxHbHlwaEJ1
ZmZlckFkdmFuY2U+IGluaXRpYWxBZHZhbmNlLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCkKK3sK
KyAgICBBU1NFUlQoZ2x5cGhCdWZmZXIuc2l6ZSgpID49IGxhc3RHbHlwaENvdW50KTsKKworICAg
IGlmIChnbHlwaEJ1ZmZlci5zaXplKCkgPD0gbGFzdEdseXBoQ291bnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChsYXN0R2x5cGhDb3VudCB8fCAoIXdpZHRoKG1fbGVmdG92ZXJJbml0
aWFsQWR2YW5jZSkgJiYgIWhlaWdodChtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpKSk7CisKKyAg
ICBpZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMICYmIGxhc3RHbHlw
aENvdW50KSB7CisgICAgICAgIGF1dG8mIHZpc3VhbGx5TGFzdEFkdmFuY2UgPSAqZ2x5cGhCdWZm
ZXIuYWR2YW5jZXMobGFzdEdseXBoQ291bnQpOworICAgICAgICBleHBhbmRXaXRoSW5pdGlhbEFk
dmFuY2UodmlzdWFsbHlMYXN0QWR2YW5jZSwgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlKTsKKyAg
ICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoKG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSk7
CisgICAgICAgIG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFu
Y2UoKTsKKyAgICB9CisKKyAgICBpZiAoaW5pdGlhbEFkdmFuY2UpIHsKKyAgICAgICAgaWYgKG1f
cnVuLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKKyAgICAgICAgICAgIG1fbGVm
dG92ZXJJbml0aWFsQWR2YW5jZSA9IGluaXRpYWxBZHZhbmNlLnZhbHVlKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKGxhc3RHbHlwaENvdW50KSB7CisgICAgICAgICAgICAgICAg
YXV0byYgdmlzdWFsbHlQcmV2aW91c0FkdmFuY2UgPSAqZ2x5cGhCdWZmZXIuYWR2YW5jZXMobGFz
dEdseXBoQ291bnQgLSAxKTsKKyAgICAgICAgICAgICAgICBleHBhbmRXaXRoSW5pdGlhbEFkdmFu
Y2UodmlzdWFsbHlQcmV2aW91c0FkdmFuY2UsIGluaXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSB3aWR0aChpbml0aWFsQWR2YW5jZS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLmV4
cGFuZEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlLnZhbHVlKCkpOworICAgICAgICB9Cisg
ICAgfQorfQorCiB2b2lkIFdpZHRoSXRlcmF0b3I6OmNvbW1pdEN1cnJlbnRGb250UmFuZ2UoR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQg
Y3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBjb25zdCBGb250JiBwcmlt
YXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdl
LCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2U7CiAg
ICAgYXV0byB0cmFuc2Zvcm1zVHlwZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhC
dWZmZXIsIGxhc3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOwotICAgIGlmICh0
cmFuc2Zvcm1zVHlwZSAhPSBUcmFuc2Zvcm1zVHlwZTo6Tm9uZSkKLSAgICAgICAgbV9ydW5XaWR0
aFNvRmFyICs9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50
LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBlID09IFRyYW5zZm9y
bXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CisgICAgaWYgKHRyYW5z
Zm9ybXNUeXBlICE9IFRyYW5zZm9ybXNUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gYXBwbHlG
b250VHJhbnNmb3Jtc1Jlc3VsdCA9IGFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxh
c3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGZvbnQsIHRyYW5zZm9ybXNUeXBl
ID09IFRyYW5zZm9ybXNUeXBlOjpGb3JjZWQsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7Cisg
ICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSBhcHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0LmFkZGl0
aW9uYWxBZHZhbmNlOworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGFwcGx5Rm9udFRyYW5zZm9y
bXNSZXN1bHQuaW5pdGlhbEFkdmFuY2U7CisgICAgfQorICAgIGFwcGx5SW5pdGlhbEFkdmFuY2Uo
Z2x5cGhCdWZmZXIsIGluaXRpYWxBZHZhbmNlLCBsYXN0R2x5cGhDb3VudCk7CiAgICAgbV9jdXJy
ZW50Q2hhcmFjdGVySW5kZXggPSBjdXJyZW50Q2hhcmFjdGVySW5kZXg7CiAKICAgICBpZiAod2lk
dGhPZkN1cnJlbnRGb250UmFuZ2UgJiYgbV9mYWxsYmFja0ZvbnRzICYmICZmb250ICE9ICZwcmlt
YXJ5Rm9udCkgewpAQCAtNDc5LDcgKzUyMCw5IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlF
eHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiB2
b2lkIFdpZHRoSXRlcmF0b3I6OmZpbmFsaXplKEdseXBoQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
QVNTRVJUKG1fcnVuLnJ0bCgpIHx8ICFtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKLSAg
ICAvLyBJbiBMVFIgdGhpcyBkb2VzIG5vdGhpbmcuIEluIFJUTCwgdGhpcyBhZGRzIGxlZnQgd2lk
dGggYnkgbW92aW5nIHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIC8vIEluIExUUiB0
aGVzZSBkbyBub3RoaW5nLiBJbiBSVEwsIHRoZXNlIGFkZCBsZWZ0IHdpZHRoIGJ5IG1vdmluZyB0
aGUgd2hvbGUgcnVuIHRvIHRoZSByaWdodC4KKyAgICBidWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFu
Y2UobV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlKTsKKyAgICBtX3J1bldpZHRoU29GYXIgKz0gd2lk
dGgobV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlKTsKICAgICBidWZmZXIuZXhwYW5kSW5pdGlhbEFk
dmFuY2UobV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aCk7CiAgICAgbV9ydW5XaWR0aFNvRmFy
ICs9IG1fbGVmdG92ZXJKdXN0aWZpY2F0aW9uV2lkdGg7CiAgICAgbV9sZWZ0b3Zlckp1c3RpZmlj
YXRpb25XaWR0aCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmgKaW5kZXggZjYwNmZhMjMyNDlhNmMxMWFmZjlmMDM5Y2IyNjk2NTk3ZTZl
ZmZlYS4uMjQwNThiMWNlNWU0NDlhMDAyZmRmNDg3ZTg3YTY5MTllOTA3YThlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaApAQCAtNjMs
OCArNjMsMTMgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgVHJhbnNmb3Jtc1R5cGUgeyBO
b25lLCBGb3JjZWQsIE5vdEZvcmNlZCB9OwogICAgIFRyYW5zZm9ybXNUeXBlIHNob3VsZEFwcGx5
Rm9udFRyYW5zZm9ybXMoY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3Vu
dCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4KSBjb25zdDsKLSAgICBmbG9hdCBhcHBs
eUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQgbGFzdEdseXBoQ291bnQsIHVu
c2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3QgRm9udCYsIGJvb2wgZm9yY2UsIENo
YXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOworICAgIHN0cnVjdCBBcHBseUZvbnRUcmFuc2Zvcm1z
UmVzdWx0IHsKKyAgICAgICAgZmxvYXQgYWRkaXRpb25hbEFkdmFuY2U7CisgICAgICAgIEdseXBo
QnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2YW5jZTsKKyAgICB9OworICAgIEFwcGx5Rm9udFRyYW5z
Zm9ybXNSZXN1bHQgYXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxh
c3RHbHlwaENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQm
LCBib29sIGZvcmNlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmKTsKICAgICB2b2lkIGNvbW1p
dEN1cnJlbnRGb250UmFuZ2UoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwg
dW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiwgY29uc3QgRm9udCYg
cHJpbWFyeUZvbnQsIFVDaGFyMzIgY2hhcmFjdGVyLCBmbG9hdCB3aWR0aE9mQ3VycmVudEZvbnRS
YW5nZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJik7CisgICAgdm9pZCBhcHBseUluaXRpYWxB
ZHZhbmNlKEdseXBoQnVmZmVyJiwgc3RkOjpvcHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IGlu
aXRpYWxBZHZhbmNlLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCk7CiAKICAgICBib29sIGhhc0V4
dHJhU3BhY2luZygpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBp
bmcoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBn
bHlwaEJ1ZmZlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNoYXJhY3RlckRlc3RpbmF0aW9uSW5kZXgs
IGZsb2F0IHN0YXJ0aW5nUnVuV2lkdGgpOwpAQCAtODIsNiArODcsNyBAQCBwcml2YXRlOgogICAg
IEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2ZhbGxiYWNrRm9udHMgeyBudWxscHRyIH07CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKKyAgICBHbHlw
aEJ1ZmZlckFkdmFuY2UgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlIHsgbWFrZUdseXBoQnVmZmVy
QWR2YW5jZSgpIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVySW5kZXggeyAwIH07
CiAgICAgZmxvYXQgbV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aCB7IDAgfTsKICAgICBmbG9h
dCBtX3J1bldpZHRoU29GYXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcAppbmRleCAyOWEwN2M3
NmFmMGFkYTE0Mjc2YTAxNTViMzc3MTcxYzRiM2IzOTg5Li4xMDdhZGY2MTZhNjA1MTY0MWQ2MzVk
MjlhMmNjOTlkZTgwZjQ5Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKQEAgLTU4NCwxMSArNTg0
LDEwIEBAIGZsb2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29u
c3QKIAogI2VuZGlmCiAKLXZvaWQgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRleCwgdW5zaWduZWQgYmVnaW5u
aW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywgYm9vbCByZXF1aXJlc1NoYXBpbmcs
IGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9u
IHRleHREaXJlY3Rpb24pIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFu
c2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJ
bmRleCwgdW5zaWduZWQgYmVnaW5uaW5nU3RyaW5nSW5kZXgsIGJvb2wgZW5hYmxlS2VybmluZywg
Ym9vbCByZXF1aXJlc1NoYXBpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgU3RyaW5nVmll
dyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgVU5VU0VE
X1BBUkFNKHJlcXVpcmVzU2hhcGluZyk7CiAKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IEdseXBo
QnVmZmVyIGluaXRpYWwgYWR2YW5jZS4KICNpZiBVU0UoQ1RGT05UU0hBUEVHTFlQSFMpCiAgICAg
YXV0byBoYW5kbGVyID0gXihDRlJhbmdlIHJhbmdlLCBDR0dseXBoKiogbmV3R2x5cGhzUG9pbnRl
ciwgQ0dTaXplKiogbmV3QWR2YW5jZXNQb2ludGVyLCBDR1BvaW50KiogbmV3T2Zmc2V0c1BvaW50
ZXIsIENGSW5kZXgqKiBuZXdJbmRpY2VzUG9pbnRlcikKICAgICB7CkBAIC02MTYsMTggKzYxNSwy
MyBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4OyArK2kpCiAgICAgICAg
IGdseXBoQnVmZmVyLm9mZnNldHNJblN0cmluZyhiZWdpbm5pbmdHbHlwaEluZGV4KVtpXSAtPSBi
ZWdpbm5pbmdTdHJpbmdJbmRleDsKIAotICAgIENURm9udFNoYXBlR2x5cGhzKAorICAgIGF1dG8g
bnVtYmVyT2ZJbnB1dEdseXBocyA9IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBo
SW5kZXg7CisKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gQ1RGb250U2hhcGVHbHlwaHMoCiAg
ICAgICAgIG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLAogICAgICAgICBnbHlwaEJ1ZmZlci5nbHlw
aHMoYmVnaW5uaW5nR2x5cGhJbmRleCksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dTaXpl
Kj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nR2x5cGhJbmRleCkpLAotICAgICAgICBy
ZWludGVycHJldF9jYXN0PENHUG9pbnQqPihnbHlwaEJ1ZmZlci5vcmlnaW5zKGJlZ2lubmluZ0ds
eXBoSW5kZXgpKSwKKyAgICAgICAgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nR2x5cGhJ
bmRleCksCisgICAgICAgIGdseXBoQnVmZmVyLm9yaWdpbnMoYmVnaW5uaW5nR2x5cGhJbmRleCks
CiAgICAgICAgIGdseXBoQnVmZmVyLm9mZnNldHNJblN0cmluZyhiZWdpbm5pbmdHbHlwaEluZGV4
KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzLmdldCgpKSwKLSAgICAgICAgZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5n
R2x5cGhJbmRleCwKKyAgICAgICAgbnVtYmVyT2ZJbnB1dEdseXBocywKICAgICAgICAgb3B0aW9u
cywKICAgICAgICAgbG9jYWxlU3RyaW5nLmdldCgpLAogICAgICAgICBoYW5kbGVyKTsKIAorICAg
IEFTU0VSVChudW1iZXJPZklucHV0R2x5cGhzIHx8IGdseXBoQnVmZmVyLnNpemUoKSA9PSBiZWdp
bm5pbmdHbHlwaEluZGV4KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dEdseXBocyB8fCAoIWlu
aXRpYWxBZHZhbmNlLndpZHRoICYmICFpbml0aWFsQWR2YW5jZS5oZWlnaHQpKTsKKwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlw
aEluZGV4OyArK2kpCiAgICAgICAgIGdseXBoQnVmZmVyLm9mZnNldHNJblN0cmluZyhiZWdpbm5p
bmdHbHlwaEluZGV4KVtpXSArPSBiZWdpbm5pbmdTdHJpbmdJbmRleDsKIApAQCAtNjUyLDExICs2
NTYsMTUgQEAgdm9pZCBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGUKIAogICAgIENURm9udFRyYW5zZm9ybU9w
dGlvbnMgb3B0aW9ucyA9IChlbmFibGVLZXJuaW5nID8ga0NURm9udFRyYW5zZm9ybUFwcGx5UG9z
aXRpb25pbmcgOiAwKSB8IGtDVEZvbnRUcmFuc2Zvcm1BcHBseVNoYXBpbmc7CiAgICAgQ1RGb250
VHJhbnNmb3JtR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBnbHlwaEJ1ZmZlci5nbHlw
aHMoYmVnaW5uaW5nR2x5cGhJbmRleCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dTaXplKj4oZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nR2x5cGhJbmRleCkpLCBnbHlwaEJ1ZmZlci5zaXplKCkg
LSBiZWdpbm5pbmdHbHlwaEluZGV4LCBvcHRpb25zKTsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFu
Y2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKCk7CiAjZW5kaWYKIAogICAgIC8vIFNlZSB0aGUg
Y29tbWVudCBhYm92ZSBpbiB0aGlzIGZ1bmN0aW9uIHdoZXJlIHRoZSBvdGhlciBjYWxsIHRvIHJl
dmVyc2UoKSBpcy4KICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwp
CiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoYmVnaW5uaW5nR2x5cGhJbmRleCwgZ2x5cGhC
dWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRleCk7CisKKyAgICByZXR1cm4gaW5pdGlh
bEFkdmFuY2U7CiB9CiAKIHN0YXRpYyBpbnQgZXh0cmFjdE51bWJlcihDRk51bWJlclJlZiBudW1i
ZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434188</attachid>
            <date>2021-07-25 18:49:23 -0700</date>
            <delta_ts>2021-08-19 21:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227979-20210725184922.patch</filename>
            <type>text/plain</type>
            <size>28110</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5YWQzYzA2YzU0YmNk
OWRmM2M0OGFmMTgzYTFjODliYTY4ZTdjMS4uNDJiNDgxMDM0NzIxNjcxNGEwNDdiOWZkMmJiZmU3
NGQxNDQ3NjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA3LTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGZhc3Qg
dGV4dCBjb2RlcGF0aCBkb2VzIG5vdCBoYW5kbGUgcnVuIGluaXRpYWwgYWR2YW5jZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIG5l
eHQgc3RlcCB0byBkZWxldGUgdGhlIGNvbXBsZXggdGV4dCBjb2RlcGF0aCBmcm9tIENvY29hIHBv
cnRzLgorCisgICAgICAgIFRoZSBpbml0aWFsIGFkdmFuY2UgY29udHJpYnV0ZXMgdG8gdGhlIGxh
eW91dCB3aWR0aCBvZiB0ZXh0LiBJdHMgcHVycG9zZSBpcyB0byBtb3ZlCisgICAgICAgIGFsbCB0
aGUgdmlzdWFsbHkgc3VjY2Vzc2l2ZSBnbHlwaHMgdG8gdGhlIHJpZ2h0LiBGb3IgdGhlIGxlZnRt
b3N0IHJ1biwgV2lkdGhJdGVyYXRvcgorICAgICAgICBzYXZlcyB0aGlzIGluaXRpYWwgYWR2YW5j
ZSB0byB0aGUgR2x5cGhCdWZmZXIsIGJlY2F1c2Uga25vd2luZyBpdCBpcyBuZWNlc3NhcnkgdG8K
KyAgICAgICAgY29tcHV0ZSB0aGUgcGFpbnQgbG9jYXRpb24gb2YgZ2x5cGhzIChpbnNpZGUgR2x5
cGhCdWZmZXI6OmZsYXR0ZW4oKSkuIEZvciBhbGwgb3RoZXIKKyAgICAgICAgcnVucyBvdGhlciB0
aGFuIHRoZSBsZWZ0bW9zdCBydW4sIHRob3NlIHJ1bnMnIGluaXRpYWwgYWR2YW5jZSBpcyBhZGRl
ZCB0byB0aGUgYWR2YW5jZQorICAgICAgICB3aWR0aCBvZiB3aGljaGV2ZXIgZ2x5cGggZW5kcyB1
cCBiZWluZyBqdXN0IHRvIHRoZSBsZWZ0IG9mIHRoZSBydW4uIEluIExUUiwgdGhpcyBpcworICAg
ICAgICB0aGUgbGFzdCBnbHlwaCBvZiB0aGUgbGFzdCAobG9naWNhbCkgcnVuLCB3aGVyZWFzIGlu
IFJUTCB0aGlzIGlzIHRoZSBmaXJzdCBnbHlwaCBvZgorICAgICAgICB0aGUgbmV4dCAobG9naWNh
bCkgcnVuLgorCisgICAgICAgIEJlY2F1c2UgdGhpcyBpcyBqdXN0IGFkZGluZyBpbmZyYXN0cnVj
dHVyZSwgaXQgZG9lc24ndCBhZGQgYW55IHRlc3RzIHlldC4gVGhpcyB3aWxsIGJlCisgICAgICAg
IHRlc3RlZCB3aGVuIHdlIGRlbGV0ZSB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmg6IEJlY2F1c2Ug
d2UncmUgZ29pbmcgdG8gc3RvcCB1c2luZworICAgICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIs
IHdlIHNob3VsZCBtb3ZlIHRoaXMgKHByZXN1bWFibHkgaGVscGZ1bCkgY29tbWVudCBzb21ld2hl
cmUKKyAgICAgICAgd2hlcmUgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIHRoZSBDb2NvYSBwb3J0
cy4gVGhpcyB3b3VsZCBiZSBHbHlwaEJ1ZmZlcjo6ZmxhdHRlbigpLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YXBwbHlUcmFu
c2Zvcm1zIGNvbnN0KTogUmV0dXJuIHRoZSBpbml0aWFsIGFkdmFuY2UuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhP
ZlRleHRSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhG
b3JTaW1wbGVUZXh0IGNvbnN0KTogTWFrZSBzdXJlIHRoYXQgdGhlIGluaXRpYWwgYWR2YW5jZQor
ICAgICAgICBjb250cmlidXRlcyB0byBsYXlvdXQgd2lkdGguCisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dCBjb25zdCk6IFRoZSBpbml0aWFsIGFkdmFuY2Ug
aXMgYWN0dWFsbHkgTk9UCisgICAgICAgIHN1cHBvc2VkIHRvIHBvaW50IGRpcmVjdGx5IHRvIHRo
ZSBmaXJzdCBnbHlwaCdzIHBhaW50IHBvc2l0aW9uLiBTZWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE4MC4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpm
bGF0dGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjppc0ZsYXR0ZW5lZCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKTogUmV0dXJu
IHRoZSBpbml0aWFsIGFkdmFuY2UuCisgICAgICAgIChXZWJDb3JlOjpleHBhbmRXaXRoSW5pdGlh
bEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlJbml0aWFs
QWR2YW5jZSk6IFRoaXMgaW1wbGVtZW50cyB0aGUgbG9naWMgYWJvdmUsIHdoZXJlCisgICAgICAg
IHRoZSBpbml0aWFsIGFkdmFuY2Ugb2Ygbm9uLWxlZnRtb3N0IHJ1bnMgZ2V0IGFkZGVkIHRvIHRo
ZSB2aXN1YWxseSBwcmV2aW91cyBnbHlwaCdzCisgICAgICAgIGFkdmFuY2UuIEZvciBMVFIsIHdl
IGNhbiBqdXN0IGFkZCBpdCBkaXJlY3RseSB0byB0aGUgcHJldmlvdXNseS1yZWNvcmRlZCBnbHlw
aCBhZHZhbmNlLgorICAgICAgICBIb3dldmVyLCBmb3IgUlRMLCB3ZSBoYXZlIHRvIHNhdmUgdGhl
IGluaXRpYWwgYWR2YW5jZSB0byBhIHZhcmlhYmxlLCB3aGljaCBpcyBuYW1lZAorICAgICAgICBt
X2xlZnRvdmVySW5pdGlhbEFkdmFuY2UsIGFuZCBhcHBseSBpdCB3aGVuIHdlIGVuY291bnRlciB0
aGUgbmV4dCBydW4uIFRoaXMgaXMgYmVjYXVzZQorICAgICAgICBXaWR0aEl0ZXJhdG9yIGVuY291
bnRlcnMgcnVuIGluIGxvZ2ljYWwgb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJh
dG9yOjpjb21taXRDdXJyZW50Rm9udFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRl
cmF0b3I6OmZpbmFsaXplKTogRm9yIFJUTCwgaWYgdGhlIGxhc3QgcnVuIGhhcyBhbiBpbml0aWFs
IGFkdmFuY2UsCisgICAgICAgIHdlIG5lZWQgdG8gc2F2ZSBpdCB0byB0aGUgR2x5cGhCdWZmZXIn
cyBpbml0aWFsIGFkdmFuY2UgZmllbGQuIFdlIGtub3cgaWYgdGhlIGxhc3QgcnVuCisgICAgICAg
IGhhcyBhbiBpbml0aWFsIGFkdmFuY2UgYmVjYXVzZSB0aGVyZSB3aWxsIHN0aWxsIGJlIGRhdGEg
aW4gbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlCisgICAgICAgIGxlZnQgb3Zlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmFwcGx5VHJhbnNmb3JtcyBjb25zdCk6IFJldHVybiB0aGUgaW5pdGlhbCBhZHZhbmNlLgor
CiAyMDIxLTA3LTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXBwbGUgUGF5XSBEbyBub3QgYWRkIGNvdXBvbiBjb2RlIGBBcHBsZVBheUVycm9yQ29kZWAg
dmFsdWVzIGZvciBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgK
aW5kZXggYTFkNmUzNmFkYzQ2ODUxMzNhNTAxNGJkZmRmZWMyMjA5NzRiNDVmNy4uMmU0ZTE2Yjdi
NTJmMWNmMWM1Mjc5OGIyMWMzNzkyNjgxNTQwMTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTEw
NSwzMyArMTA1LDYgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBlbmRPZmZzZXRBdCh1bnNp
Z25lZCBpKSBjb25zdCB7IEFTU0VSVCghbV9pc01vbm90b25pYyk7IHJldHVybiBtX2dseXBoRW5k
T2Zmc2V0c1tpXTsgfQogICAgICAgICBjb25zdCBDR0dseXBoKiBnbHlwaHMoKSBjb25zdCB7IHJl
dHVybiBtX2dseXBocy5kYXRhKCk7IH0KIAotICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIGlz
IHRoZSBmb3JtYXQgb2YgdGhlIGluZm9ybWF0aW9uIENvcmVUZXh0IGdpdmVzIHVzIGFib3V0IGVh
Y2ggcnVuOgotICAgICAgICAgKgotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtLS0tLT5YIChQYWludCBnbHlwaCBwb3NpdGlvbikgICBYIChQYWludCBn
bHlwaCBwb3NpdGlvbikgICBYIChQYWludCBnbHlwaCBwb3NpdGlvbikKLSAgICAgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICA3ICAgICAgICAgICAgICAg
ICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAgICA3Ci0gICAgICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAvICAgICAgICAgICAgICAgICAg
ICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAg
ICAgICAgICAgIChJbml0aWFsIGFkdmFuY2UpIC8gICAgIC8gKEdseXBoIG9yaWdpbikgICAgICAg
ICAgIC8gKEdseXBoIG9yaWdpbikgICAgICAgICAgIC8gKEdseXBoIG9yaWdpbikKLSAgICAgICAg
ICogICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAvICAgICAgICAgICAg
ICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAg
ICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAg
ICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCi0gICAgICAgICAqICAgICAgICAg
ICAgICAgIFggICAgICAgICAgICAgICAgICAgICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgK
LSAgICAgICAgICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChiYXNlIGFkdmFuY2UpICAgICAgICAgICAgIChiYXNlIGFkdmFuY2UpICAgICAgICAgICAgIChi
YXNlIGFkdmFuY2UpCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAg
ICAqCi0gICAgICAgICAqCi0gICAgICAgICAqIEFuZCBoZXJlIGlzIHRoZSBvdXRwdXQgd2UgdHJh
bnNmb3JtIHRoaXMgaW50byAoZm9yIGVhY2ggcnVuKToKLSAgICAgICAgICoKLSAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0+WC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WAotICAgICAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAoUGFpbnQg
YWR2YW5jZSkgICAgICAgICAgICAoUGFpbnQgYWR2YW5jZSkgICAgICAgXAotICAgICAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgKEluaXRpYWwgYWR2YW5jZSkgLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAoUGFpbnQgYWR2
YW5jZSkKLSAgICAgICAgICogICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICogICAgICAgICAgICAgICAgIC8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAg
ICAgICAgICAgICAgIFgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVgtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVgKLSAgICAgICAgICogKHRleHQgcG9zaXRpb24gXikgICAgICAgICAgICAgICAgKGxheW91
dCBhZHZhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgKGxheW91dCBhZHZhbmNlKSAgICAgICAg
ICAgKGxheW91dCBhZHZhbmNlKQotICAgICAgICAgKi8KICAgICAgICAgdm9pZCBncm93SW5pdGlh
bEFkdmFuY2VIb3Jpem9udGFsbHkoZmxvYXQgZGVsdGEpIHsgbV9pbml0aWFsQWR2YW5jZS5leHBh
bmQoZGVsdGEsIDApOyB9CiAgICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7IH0KICAgICAgICAgY29uc3QgRmxvYXRTaXplKiBi
YXNlQWR2YW5jZXMoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VBZHZhbmNlcy5kYXRhKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdhMzdhZjhiYmZk
ODc5ZDVhODQ0MzhjZTRlMzk5M2M0N2Y3OTEzZi4uNWM5NzNjMGYyMDY0M2FhODRkNDI0MGM2ZjQ0
MDJmYjY5MDIyN2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKQEAgLTU0Miw4ICs1NDIsOSBAQCBSZWZQdHI8Rm9udD4gRm9udDo6Y3JlYXRlU2NhbGVkRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYQogfQogCiAjaWYg
IVVTRShDT1JFX1RFWFQpCi12b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYs
IHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCwgYm9vbCwgY29uc3QgQXRvbVN0cmluZyYsIFN0cmlu
Z1ZpZXcsIFRleHREaXJlY3Rpb24pIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBw
bHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sLCBib29s
LCBjb25zdCBBdG9tU3RyaW5nJiwgU3RyaW5nVmlldywgVGV4dERpcmVjdGlvbikgY29uc3QKIHsK
KyAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA0N2E3ZTEyZjliYzY4OTIwY2E3
MTRlOTI0NzllNTllZjNlZWU4ZDMyLi4wZGVlOGE1MGU1MzMzOTFiM2Y3OGFmODI4ZTIyOTY1NWFh
YTMxOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yMDYs
NyArMjA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIGNhblJlbmRlckNvbWJpbmlu
Z0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KSBjb25zdDsKLSAgICB2b2lk
IGFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5k
ZXgsIHVuc2lnbmVkIGJlZ2lubmluZ1N0cmluZ0luZGV4LCBib29sIGVuYWJsZUtlcm5pbmcsIGJv
b2wgcmVxdWlyZXNTaGFwaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIFN0cmluZ1ZpZXcg
dGV4dCwgVGV4dERpcmVjdGlvbikgY29uc3Q7CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFwcGx5
VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZXgsIHVu
c2lnbmVkIGJlZ2lubmluZ1N0cmluZ0luZGV4LCBib29sIGVuYWJsZUtlcm5pbmcsIGJvb2wgcmVx
dWlyZXNTaGFwaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIFN0cmluZ1ZpZXcgdGV4dCwg
VGV4dERpcmVjdGlvbikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIG51bGxvcHQgaWYgbm9uZSBv
ZiB0aGUgZ2x5cGhzIGFyZSBPVC1TVkcgZ2x5cGhzLgogICAgIHN0ZDo6b3B0aW9uYWw8Qml0VmVj
dG9yPiBmaW5kT1RTVkdHbHlwaHMoY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIHVuc2lnbmVkIGNv
dW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcAppbmRleCBhYzU0ZTY4MTM5OTI4NGVkOGJmOGExMWM3NmFiMTFmZGZjZmQxM2Zl
Li4wNTBlMjg3ZDk5ZGNlYmFhNTRmMzNiZmVhZjliNmM4ZDlmYmNkZGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNiAr
MjU0LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2UoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZAogICAgICAgICBzaW1wbGVJdGVyYXRvci5h
ZHZhbmNlKHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOwogICAgICAgICB0b3RhbFdpZHRoID0g
c2ltcGxlSXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOwogICAgICAgICBzaW1wbGVJdGVyYXRvci5m
aW5hbGl6ZShnbHlwaEJ1ZmZlcik7CisgICAgICAgIC8vIEZJWE1FOiBGaW5hbGl6aW5nIHRoZSBX
aWR0aEl0ZXJhdG9yIGNhbiBhZmZlY3QgdGhlIHRvdGFsIHdpZHRoLgorICAgICAgICAvLyBXZSBt
aWdodCBuZWVkIHRvIGFkanVzdCB0aGUgdmFyaW91cyB3aWR0aHMgd2UndmUgbWVhc3VyZWQgdG8g
YWNjb3VudCBmb3IgdGhhdC4KICAgICB9CiAKICAgICBpZiAob3V0V2lkdGhCZWZvcmVSYW5nZSkK
QEAgLTMxOSw3ICszMjEsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
KFN0cmluZ1ZpZXcgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogICAgICAgICBnbHlw
aEJ1ZmZlci5hZGQoZ2x5cGgsIGZvbnQsIGdseXBoV2lkdGgsIGkpOwogICAgIH0KIAotICAgIGZv
bnQuYXBwbHlUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCAwLCAwLCBlbmFibGVLZXJuaW5nKCksIHJl
cXVpcmVzU2hhcGluZygpLCBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpLCB0ZXh0
LCB0ZXh0RGlyZWN0aW9uKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gZm9udC5hcHBseVRy
YW5zZm9ybXMoZ2x5cGhCdWZmZXIsIDAsIDAsIGVuYWJsZUtlcm5pbmcoKSwgcmVxdWlyZXNTaGFw
aW5nKCksIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkTG9jYWxlKCksIHRleHQsIHRleHREaXJl
Y3Rpb24pOwogICAgIC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgdG8gbWF0Y2ggdGhlIHJlc3VsdCBv
ZiB0aGUgc2xvdyBwYXRoLgogICAgIC8vIFNhbWUgZ2x5cGggd2lkdGhzIGJ1dCBkaWZmZXJlbnQg
ZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBjYW4gcHJvZHVjZSBkaWZmZXJlbnQgcnVuIHdpZHRo
LgogICAgIGZsb2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVkID0gLXJ1
bldpZHRoOwpAQCAtMzI3LDYgKzMyOSw4IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3RpCiAgICAg
ICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVkICs9IFdlYkNvcmU6Ondp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgcnVuV2lkdGggKz0gcnVuV2lkdGhE
aWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQ7CiAKKyAgICBydW5XaWR0aCArPSBXZWJDb3Jl
Ojp3aWR0aChpbml0aWFsQWR2YW5jZSk7CisKICAgICBpZiAoY2FjaGVFbnRyeSkKICAgICAgICAg
KmNhY2hlRW50cnkgPSBydW5XaWR0aDsKICAgICByZXR1cm4gcnVuV2lkdGg7CkBAIC0xMjcwLDEx
ICsxMjc0LDYgQEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnMKICAgICAgICAgaW5pdGlhbEFkdmFu
Y2UgPSBiZWZvcmVXaWR0aDsKICAgICB9CiAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFk
dmFuY2UoaW5pdGlhbEFkdmFuY2UpOwotICAgIGlmICghZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgaXMgc3VwcG9zZWQgdG8gcG9pbnQgZGly
ZWN0bHkgdG8gdGhlIGZpcnN0IGdseXBoJ3MgcGFpbnQgcG9zaXRpb24uCi0gICAgICAgIC8vIFNl
ZSB0aGUgYXNjaWktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmguCi0gICAg
ICAgIGdseXBoQnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKG1ha2VHbHlwaEJ1ZmZlckFkdmFu
Y2UoeChnbHlwaEJ1ZmZlci5vcmlnaW5BdCgwKSksIHkoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkp
KSk7Ci0gICAgfQogCiAgICAgLy8gVGhlIGdseXBoIGJ1ZmZlciBpcyBjdXJyZW50bHkgaW4gbG9n
aWNhbCBvcmRlciwKICAgICAvLyBidXQgd2UgbmVlZCB0byByZXR1cm4gdGhlIHJlc3VsdHMgaW4g
dmlzdWFsIG9yZGVyLgpAQCAtMTMyNiw2ICsxMzI1LDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkRHJh
d0lmTG9hZGluZyhjb25zdCBGb250JiBmb250LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWQKICAgICByZXR1cm4gIWZvbnQuaXNJbnRlcnN0aXRpYWwoKSB8fCBmb250LnZpc2liaWxpdHko
KSA9PSBGb250OjpWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IGN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
biA9PSBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uOjpVc2VGYWxsYmFja0lm
Rm9udE5vdFJlYWR5OwogfQogCisvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIEdseXBoQnVm
ZmVyJ3MgaW5pdGlhbCBhZHZhbmNlIGhhcyBhbHJlYWR5IGJlZW4gaW5jb3Jwb3JhdGVkIGludG8g
dGhlIHN0YXJ0IHBvaW50Lgogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBGbG9h
dFBvaW50JiBwb2ludCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoZ2x5cGhCdWZmZXIuaXNGbGF0dGVuZWQoKSk7
CkBAIC0xMzg3LDYgKzEzODcsOSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJgogICAgIEdseXBo
IG1hcmtHbHlwaCA9IG1hcmtHbHlwaERhdGEudmFsdWUoKS5nbHlwaDsKICAgICBHbHlwaCBzcGFj
ZUdseXBoID0gbWFya0ZvbnREYXRhLT5zcGFjZUdseXBoKCk7CiAKKyAgICAvLyBGSVhNRTogVGhp
cyBuZWVkcyB0byB0YWtlIHRoZSBpbml0aWFsIGFkdmFuY2UgaW50byBhY2NvdW50LgorICAgIC8v
IFRoZSBwcm9ibGVtIG1pZ2h0IGFjdHVhbGx5IGJlIGhhcmRlciBmb3IgY29tcGxleCB0ZXh0LCB0
aG91Z2guCisgICAgLy8gUHV0dGluZyBhIG1hcmsgb3ZlciBldmVyeSBnbHlwaCBwcm9iYWJseSBp
c24ndCBncmVhdCBpbiBjb21wbGV4IHNjcmlwdHMuCiAgICAgZmxvYXQgbWlkZGxlT2ZMYXN0R2x5
cGggPSBvZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGdseXBoQnVmZmVyLCAwKTsKICAgICBG
bG9hdFBvaW50IHN0YXJ0UG9pbnQocG9pbnQueCgpICsgbWlkZGxlT2ZMYXN0R2x5cGggLSBvZmZz
ZXRUb01pZGRsZU9mR2x5cGgoKm1hcmtGb250RGF0YSwgbWFya0dseXBoKSwgcG9pbnQueSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5k
ZXggYWZkOGJhMjRmYzFjZGU3Y2RhOTZjNzJlNWQ2YjM5MGFjYmY1NjIzYS4uZGUwMzY1ODNmZTU2
MWU1OTNjN2I2NjRlMDc1MGMwZTgwYWI1MzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0xNjUsMzEgKzE2NSw2MSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLnNocmluayh0cnVuY2F0aW9uUG9pbnQpOwogICAg
IH0KIAotICAgIC8vIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KCkgcmV0dXJucyBhIEdseXBoQnVm
ZmVyIHdoaWNoIGluY2x1ZGVzIGxheW91dCBpbmZvcm1hdGlvbiB0aGF0IGlzIHNwbGl0Ci0gICAg
Ly8gaW50byAiYWR2YW5jZXMiIGFuZCAib3JpZ2lucyIuIFNlZSB0aGUgQVNDSUktYXJ0IGRpYWdy
YW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmgKLSAgICAvLyBJbiBvcmRlciB0byBnZXQgcGFp
bnQgYWR2YW5jZXMsIHdlIG5lZWQgdG8gcnVuIHRoaXMgImZsYXR0ZW4iIG9wZXJhdGlvbi4KLSAg
ICAvLyBUaGlzIG1lcmdlcyB0aGUgbGF5b3V0IGFkdmFuY2VzIGFuZCBvcmlnaW5zIHRvZ2V0aGVy
LAotICAgIC8vIGxlYXZlcyB0aGUgcGFpbnQgYWR2YW5jZXMgaW4gdGhlICJtX2FkdmFuY2VzIiBm
aWVsZCwKLSAgICAvLyBhbmQgemVyb3Mtb3V0IHRoZSBvcmlnaW5zIGluIHRoZSAibV9vcmlnaW5z
IiBmaWVsZC4KKyAgICAvKgorICAgICAqIFRoaXMgaXMgdGhlIHVuZmxhdHRlbmVkIGZvcm1hdDoK
KyAgICAgKgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFggKFBhaW50IGdseXBoIHBvc2l0aW9uKSAgIFggKFBhaW50IGdseXBoIHBvc2l0aW9uKSAg
IFggKFBhaW50IGdseXBoIHBvc2l0aW9uKQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNyAgICAgICAgICAgICAgICAgICAgICAgICAgNyAgICAgICAg
ICAgICAgICAgICAgICAgICAgNworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAg
ICAgICAgICAgICAvCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyAoT3JpZ2luKSAgICAgICAgICAgICAgICAgLyAoT3JpZ2luKSAgICAgICAgICAgICAg
ICAgLyAoT3JpZ2luKQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAg
ICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAg
ICogICAgICAgICAgICAgICAgWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+WC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0+WAorICAgICAqICh0ZXh0IHBvc2l0aW9uIF4pICAoSW5pdGlhbCBhZHZhbmNlKSAg
ICAgICAgICAgIChBZHZhbmNlKSAgICAgICAgICAgICAgICAgIChBZHZhbmNlKSAgICAgICAgICAg
ICAgICAgICAoQWR2YW5jZSkKKyAgICAgKgorICAgICAqCisgICAgICoKKyAgICAgKgorICAgICAq
CisgICAgICogQW5kIHRoaXMgaXMgd2hhdCB3ZSB0cmFuc2Zvcm0gaXQgaW50bzoKKyAgICAgKgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tPlgtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlgKKyAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAo
QWR2YW5jZSkgICAgICAgICAgICAgICAgICAgKEFkdmFuY2UpICAgICAgICAgXAorICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAqICAgICAg
ICAgICAgICAgICAgIChJbml0aWFsIGFkdmFuY2UpIC8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgICAoQWR2YW5jZSkKKyAg
ICAgKiAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLQorICAgICAqICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAqICAgICAgICAgICAgICAgIFggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKKyAgICAgKiAodGV4dCBw
b3NpdGlvbiBeKQorICAgICAqCisgICAgICogVGhpcyBpcyBhbiBvcGVyYXRpb24gdGhhdCBkaXNj
YXJkcyBhbGwgbGF5b3V0IGluZm9ybWF0aW9uLCBhbmQgcHJlc2VydmVzIG9ubHkgcGFpbnQgaW5m
b3JtYXRpb24uCisgICAgICovCiAgICAgdm9pZCBmbGF0dGVuKCkKICAgICB7CisgICAgICAgIEFT
U0VSVChzaXplKCkgfHwgKCF3aWR0aChtX2luaXRpYWxBZHZhbmNlKSAmJiAhaGVpZ2h0KG1faW5p
dGlhbEFkdmFuY2UpKSk7CisgICAgICAgIGlmIChzaXplKCkpIHsKKyAgICAgICAgICAgIG1faW5p
dGlhbEFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKAorICAgICAgICAgICAgICAgIHdp
ZHRoKG1faW5pdGlhbEFkdmFuY2UpICsgeChtX29yaWdpbnNbMF0pLAorICAgICAgICAgICAgICAg
IGhlaWdodChtX2luaXRpYWxBZHZhbmNlKSArIHkobV9vcmlnaW5zWzBdKSk7CisgICAgICAgIH0K
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBtX2FkdmFuY2VzW2ldID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgKICAgICAgICAgICAg
ICAgICAteChtX29yaWdpbnNbaV0pICsgd2lkdGgobV9hZHZhbmNlc1tpXSkgKyAoaSArIDEgPCBz
aXplKCkgPyB4KG1fb3JpZ2luc1tpICsgMV0pIDogMCksCi0gICAgICAgICAgICAgICAgLXkobV9v
cmlnaW5zW2ldKSArIGhlaWdodChtX2FkdmFuY2VzW2ldKSArIChpICsgMSA8IHNpemUoKSA/IHko
bV9vcmlnaW5zW2kgKyAxXSkgOiAwKQotICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAt
eShtX29yaWdpbnNbaV0pICsgaGVpZ2h0KG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgp
ID8geShtX29yaWdpbnNbaSArIDFdKSA6IDApKTsKICAgICAgICAgICAgIG1fb3JpZ2luc1tpXSA9
IG1ha2VHbHlwaEJ1ZmZlck9yaWdpbigpOwogICAgICAgICB9CiAgICAgfQogCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBib29sIGlzRmxhdHRlbmVkKCkgY29uc3QKICAgICB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG1f
b3JpZ2luc1tpXSAhPSBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oKSkKKyAgICAgICAgICAgIGlmICh4
KG1fb3JpZ2luc1tpXSkgfHwgeShtX29yaWdpbnNbaV0pKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjZW5kaWYK
IAogcHJpdmF0ZToKICAgICB2b2lkIHN3YXAodW5zaWduZWQgaW5kZXgxLCB1bnNpZ25lZCBpbmRl
eDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0
b3IuY3BwCmluZGV4IGI3Y2MwZmI1MjVmNjg1MjdjOTFjZTFhYmQ2M2UyNDQ3NDRlZjM3YmIuLmU1
M2UxZjY4ODU5ZjkyNmI0NmM2NDA4NjdhZWYwNTJiY2UzNjM1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC05MCwxMyAr
OTAsMTMgQEAgaW5saW5lIGF1dG8gV2lkdGhJdGVyYXRvcjo6c2hvdWxkQXBwbHlGb250VHJhbnNm
b3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWYKICAgICByZXR1cm4gVHJhbnNmb3Jtc1R5
cGU6Ok5vdEZvcmNlZDsKIH0KIAotaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhD
b3VudCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBi
b29sIGZvcmNlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNT
cGFjZSkKK2lubGluZSBhdXRvIFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3VudCwgdW5zaWduZWQg
Y3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiBmb250LCBib29sIGZvcmNlLCBDaGFy
YWN0ZXJzVHJlYXRlZEFzU3BhY2UmIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSkgLT4gQXBwbHlG
b250VHJhbnNmb3Jtc1Jlc3VsdAogewogICAgIEFTU0VSVF9VTlVTRUQoY3VycmVudENoYXJhY3Rl
ckluZGV4LCBzaG91bGRBcHBseUZvbnRUcmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5cGhD
b3VudCwgY3VycmVudENoYXJhY3RlckluZGV4KSAhPSBXaWR0aEl0ZXJhdG9yOjpUcmFuc2Zvcm1z
VHlwZTo6Tm9uZSk7CiAKICAgICBhdXRvIGdseXBoQnVmZmVyU2l6ZSA9IGdseXBoQnVmZmVyLnNp
emUoKTsKICAgICBpZiAoIWZvcmNlICYmIGdseXBoQnVmZmVyU2l6ZSA8PSBsYXN0R2x5cGhDb3Vu
dCArIDEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyAwLCBtYWtlR2x5cGhC
dWZmZXJBZHZhbmNlKCkgfTsKIAogICAgIEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMgPSBn
bHlwaEJ1ZmZlci5hZHZhbmNlcygwKTsKICAgICBmbG9hdCBiZWZvcmVXaWR0aCA9IDA7CkBAIC0x
MDUsNyArMTA1LDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5z
Zm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KIAogICAgIEFTU0VSVChsYXN0
R2x5cGhDb3VudCA8PSBnbHlwaEJ1ZmZlclNpemUpOwogCi0gICAgZm9udC5hcHBseVRyYW5zZm9y
bXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCwg
bV9lbmFibGVLZXJuaW5nLCBtX3JlcXVpcmVzU2hhcGluZywgbV9mb250LmZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkTG9jYWxlKCksIG1fcnVuLnRleHQoKSwgbV9ydW4uZGlyZWN0aW9uKCkpOwor
ICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZl
ciwgbGFzdEdseXBoQ291bnQsIG1fY3VycmVudENoYXJhY3RlckluZGV4LCBtX2VuYWJsZUtlcm5p
bmcsIG1fcmVxdWlyZXNTaGFwaW5nLCBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRM
b2NhbGUoKSwgbV9ydW4udGV4dCgpLCBtX3J1bi5kaXJlY3Rpb24oKSk7CiAKICNpZiBVU0UoQ1RG
T05UU0hBUEVHTFlQSFNfV09SS0FST1VORCkKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vODA3OTgx
MTM+OiBJZiBhIGNoYXJhY3RlciBpcyBub3QgaW4gQk1QLCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIGds
eXBoIGZvciBpdCwKQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRv
cjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXpl
OyArK2kpCiAgICAgICAgIGFmdGVyV2lkdGggKz0gd2lkdGgoYWR2YW5jZXNbaV0pOwogCi0gICAg
cmV0dXJuIGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aDsKKyAgICByZXR1cm4geyBhZnRlcldpZHRo
IC0gYmVmb3JlV2lkdGgsIGluaXRpYWxBZHZhbmNlIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3Rk
OjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dyYXBoLCBib29s
IHRyZWF0QXNTcGFjZSwgYm9vbCBsdHIsIGJvb2wgaXNBZnRlckV4cGFuc2lvbiwgYm9vbCBmb3Ji
aWRMZWZ0RXhwYW5zaW9uLCBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBib29sIGZvcmNlTGVm
dEV4cGFuc2lvbiwgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKQpAQCAtMTg2LDExICsxODYsNTIg
QEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4gZXhwYW5zaW9uTG9jYXRpb24o
Ym9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXQKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZXhw
YW5kTGVmdCwgZXhwYW5kUmlnaHQpOwogfQogCitzdGF0aWMgdm9pZCBleHBhbmRXaXRoSW5pdGlh
bEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlVG9FeHBhbmQsIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSYgaW5pdGlhbEFkdmFuY2UpCit7CisgICAgc2V0V2lkdGgoYWR2YW5jZVRv
RXhwYW5kLCB3aWR0aChhZHZhbmNlVG9FeHBhbmQpICsgd2lkdGgoaW5pdGlhbEFkdmFuY2UpKTsK
KyAgICBzZXRIZWlnaHQoYWR2YW5jZVRvRXhwYW5kLCBoZWlnaHQoYWR2YW5jZVRvRXhwYW5kKSAr
IGhlaWdodChpbml0aWFsQWR2YW5jZSkpOworfQorCit2b2lkIFdpZHRoSXRlcmF0b3I6OmFwcGx5
SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBzdGQ6Om9wdGlvbmFsPEds
eXBoQnVmZmVyQWR2YW5jZT4gaW5pdGlhbEFkdmFuY2UsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50
KQoreworICAgIEFTU0VSVChnbHlwaEJ1ZmZlci5zaXplKCkgPj0gbGFzdEdseXBoQ291bnQpOwor
CisgICAgaWYgKGdseXBoQnVmZmVyLnNpemUoKSA8PSBsYXN0R2x5cGhDb3VudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50IHx8ICghd2lkdGgobV9sZWZ0b3Zl
ckluaXRpYWxBZHZhbmNlKSAmJiAhaGVpZ2h0KG1fbGVmdG92ZXJJbml0aWFsQWR2YW5jZSkpKTsK
KworICAgIGlmIChtX3J1bi5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgbGFz
dEdseXBoQ291bnQpIHsKKyAgICAgICAgYXV0byYgdmlzdWFsbHlMYXN0QWR2YW5jZSA9ICpnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhsYXN0R2x5cGhDb3VudCk7CisgICAgICAgIGV4cGFuZFdpdGhJbml0
aWFsQWR2YW5jZSh2aXN1YWxseUxhc3RBZHZhbmNlLCBtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2Up
OworICAgICAgICBtX3J1bldpZHRoU29GYXIgKz0gd2lkdGgobV9sZWZ0b3ZlckluaXRpYWxBZHZh
bmNlKTsKKyAgICAgICAgbV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVy
QWR2YW5jZSgpOworICAgIH0KKworICAgIGlmIChpbml0aWFsQWR2YW5jZSkgeworICAgICAgICBp
ZiAobV9ydW4uZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQorICAgICAgICAgICAg
bV9sZWZ0b3ZlckluaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2UudmFsdWUoKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGFzdEdseXBoQ291bnQpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiB2aXN1YWxseVByZXZpb3VzQWR2YW5jZSA9ICpnbHlwaEJ1ZmZlci5hZHZhbmNl
cyhsYXN0R2x5cGhDb3VudCAtIDEpOworICAgICAgICAgICAgICAgIGV4cGFuZFdpdGhJbml0aWFs
QWR2YW5jZSh2aXN1YWxseVByZXZpb3VzQWR2YW5jZSwgaW5pdGlhbEFkdmFuY2UudmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoKGluaXRpYWxBZHZhbmNl
LnZhbHVlKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZ2x5cGhCdWZm
ZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UoaW5pdGlhbEFkdmFuY2UudmFsdWUoKSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKIHZvaWQgV2lkdGhJdGVyYXRvcjo6Y29tbWl0Q3VycmVudEZvbnRSYW5n
ZShHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50LCB1bnNp
Z25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEZvbnQm
IHByaW1hcnlGb250LCBVQ2hhcjMyIGNoYXJhY3RlciwgZmxvYXQgd2lkdGhPZkN1cnJlbnRGb250
UmFuZ2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNl
KQogeworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBpbml0aWFsQWR2YW5j
ZTsKICAgICBhdXRvIHRyYW5zZm9ybXNUeXBlID0gc2hvdWxkQXBwbHlGb250VHJhbnNmb3Jtcyhn
bHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCk7Ci0gICAg
aWYgKHRyYW5zZm9ybXNUeXBlICE9IFRyYW5zZm9ybXNUeXBlOjpOb25lKQotICAgICAgICBtX3J1
bldpZHRoU29GYXIgKz0gYXBwbHlGb250VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBo
Q291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgZm9udCwgdHJhbnNmb3Jtc1R5cGUgPT0gVHJh
bnNmb3Jtc1R5cGU6OkZvcmNlZCwgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKTsKKyAgICBpZiAo
dHJhbnNmb3Jtc1R5cGUgIT0gVHJhbnNmb3Jtc1R5cGU6Ok5vbmUpIHsKKyAgICAgICAgYXV0byBh
cHBseUZvbnRUcmFuc2Zvcm1zUmVzdWx0ID0gYXBwbHlGb250VHJhbnNmb3JtcyhnbHlwaEJ1ZmZl
ciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgZm9udCwgdHJhbnNmb3Jt
c1R5cGUgPT0gVHJhbnNmb3Jtc1R5cGU6OkZvcmNlZCwgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNl
KTsKKyAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IGFwcGx5Rm9udFRyYW5zZm9ybXNSZXN1bHQu
YWRkaXRpb25hbEFkdmFuY2U7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gYXBwbHlGb250VHJh
bnNmb3Jtc1Jlc3VsdC5pbml0aWFsQWR2YW5jZTsKKyAgICB9CisgICAgYXBwbHlJbml0aWFsQWR2
YW5jZShnbHlwaEJ1ZmZlciwgaW5pdGlhbEFkdmFuY2UsIGxhc3RHbHlwaENvdW50KTsKICAgICBt
X2N1cnJlbnRDaGFyYWN0ZXJJbmRleCA9IGN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKIAogICAgIGlm
ICh3aWR0aE9mQ3VycmVudEZvbnRSYW5nZSAmJiBtX2ZhbGxiYWNrRm9udHMgJiYgJmZvbnQgIT0g
JnByaW1hcnlGb250KSB7CkBAIC00NzksNyArNTIwLDkgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjph
cHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVu
c2kKIHZvaWQgV2lkdGhJdGVyYXRvcjo6ZmluYWxpemUoR2x5cGhCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlQobV9ydW4ucnRsKCkgfHwgIW1fbGVmdG92ZXJKdXN0aWZpY2F0aW9uV2lkdGgp
OwotICAgIC8vIEluIExUUiB0aGlzIGRvZXMgbm90aGluZy4gSW4gUlRMLCB0aGlzIGFkZHMgbGVm
dCB3aWR0aCBieSBtb3ZpbmcgdGhlIHdob2xlIHJ1biB0byB0aGUgcmlnaHQuCisgICAgLy8gSW4g
TFRSIHRoZXNlIGRvIG5vdGhpbmcuIEluIFJUTCwgdGhlc2UgYWRkIGxlZnQgd2lkdGggYnkgbW92
aW5nIHRoZSB3aG9sZSBydW4gdG8gdGhlIHJpZ2h0LgorICAgIGJ1ZmZlci5leHBhbmRJbml0aWFs
QWR2YW5jZShtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOworICAgIG1fcnVuV2lkdGhTb0ZhciAr
PSB3aWR0aChtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UpOwogICAgIGJ1ZmZlci5leHBhbmRJbml0
aWFsQWR2YW5jZShtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoKTsKICAgICBtX3J1bldpZHRo
U29GYXIgKz0gbV9sZWZ0b3Zlckp1c3RpZmljYXRpb25XaWR0aDsKICAgICBtX2xlZnRvdmVySnVz
dGlmaWNhdGlvbldpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuaAppbmRleCBmNjA2ZmEyMzI0OWE2YzExYWZmOWYwMzljYjI2OTY1
OTdlNmVmZmVhLi4yNDA1OGIxY2U1ZTQ0OWEwMDJmZGY0ODdlODdhNjkxOWU5MDdhOGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBA
IC02Myw4ICs2MywxMyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBUcmFuc2Zvcm1zVHlw
ZSB7IE5vbmUsIEZvcmNlZCwgTm90Rm9yY2VkIH07CiAgICAgVHJhbnNmb3Jtc1R5cGUgc2hvdWxk
QXBwbHlGb250VHJhbnNmb3Jtcyhjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlw
aENvdW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpIGNvbnN0OwotICAgIGZsb2F0
IGFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBsYXN0R2x5cGhDb3Vu
dCwgdW5zaWduZWQgY3VycmVudENoYXJhY3RlckluZGV4LCBjb25zdCBGb250JiwgYm9vbCBmb3Jj
ZSwgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlJik7CisgICAgc3RydWN0IEFwcGx5Rm9udFRyYW5z
Zm9ybXNSZXN1bHQgeworICAgICAgICBmbG9hdCBhZGRpdGlvbmFsQWR2YW5jZTsKKyAgICAgICAg
R2x5cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlOworICAgIH07CisgICAgQXBwbHlGb250
VHJhbnNmb3Jtc1Jlc3VsdCBhcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWdu
ZWQgbGFzdEdseXBoQ291bnQsIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwgY29uc3Qg
Rm9udCYsIGJvb2wgZm9yY2UsIENoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSYpOwogICAgIHZvaWQg
Y29tbWl0Q3VycmVudEZvbnRSYW5nZShHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGxhc3RHbHlwaENv
dW50LCB1bnNpZ25lZCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsIGNvbnN0IEZvbnQmLCBjb25zdCBG
b250JiBwcmltYXJ5Rm9udCwgVUNoYXIzMiBjaGFyYWN0ZXIsIGZsb2F0IHdpZHRoT2ZDdXJyZW50
Rm9udFJhbmdlLCBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UmKTsKKyAgICB2b2lkIGFwcGx5SW5p
dGlhbEFkdmFuY2UoR2x5cGhCdWZmZXImLCBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5j
ZT4gaW5pdGlhbEFkdmFuY2UsIHVuc2lnbmVkIGxhc3RHbHlwaENvdW50KTsKIAogICAgIGJvb2wg
aGFzRXh0cmFTcGFjaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUV4dHJhU3BhY2luZ0FmdGVy
U2hhcGluZyhHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyRGVzdGluYXRpb25J
bmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCk7CkBAIC04Miw2ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxjb25zdCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7IG51bGxwdHIgfTsK
IAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OworICAg
IEdseXBoQnVmZmVyQWR2YW5jZSBtX2xlZnRvdmVySW5pdGlhbEFkdmFuY2UgeyBtYWtlR2x5cGhC
dWZmZXJBZHZhbmNlKCkgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleCB7
IDAgfTsKICAgICBmbG9hdCBtX2xlZnRvdmVySnVzdGlmaWNhdGlvbldpZHRoIHsgMCB9OwogICAg
IGZsb2F0IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IDI5
YTA3Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkuLjEwN2FkZjYxNmE2MDUxNjQx
ZDYzNWQyOWEyY2M5OWRlODBmNDkzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtNTg0LDEx
ICs1ODQsMTAgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBo
KSBjb25zdAogCiAjZW5kaWYKIAotdm9pZCBGb250OjphcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBi
ZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hh
cGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbikgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5jZSBGb250OjphcHBs
eVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdH
bHlwaEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJu
aW5nLCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJp
bmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbikgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0ocmVxdWlyZXNTaGFwaW5nKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
R2x5cGhCdWZmZXIgaW5pdGlhbCBhZHZhbmNlLgogI2lmIFVTRShDVEZPTlRTSEFQRUdMWVBIUykK
ICAgICBhdXRvIGhhbmRsZXIgPSBeKENGUmFuZ2UgcmFuZ2UsIENHR2x5cGgqKiBuZXdHbHlwaHNQ
b2ludGVyLCBDR1NpemUqKiBuZXdBZHZhbmNlc1BvaW50ZXIsIENHUG9pbnQqKiBuZXdPZmZzZXRz
UG9pbnRlciwgQ0ZJbmRleCoqIG5ld0luZGljZXNQb2ludGVyKQogICAgIHsKQEAgLTYxNiwxOCAr
NjE1LDIzIEBAIHZvaWQgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgYmVnaW5uaW5nR2x5cGhJbmRlCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXg7ICsraSkKICAg
ICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBoSW5kZXgpW2ld
IC09IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCi0gICAgQ1RGb250U2hhcGVHbHlwaHMoCisgICAg
YXV0byBudW1iZXJPZklucHV0R2x5cGhzID0gZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5n
R2x5cGhJbmRleDsKKworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBDVEZvbnRTaGFwZUdseXBo
cygKICAgICAgICAgbV9wbGF0Zm9ybURhdGEuY3RGb250KCksCiAgICAgICAgIGdseXBoQnVmZmVy
LmdseXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksCi0gICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dQb2ludCo+KGdseXBoQnVmZmVyLm9yaWdpbnMoYmVnaW5u
aW5nR2x5cGhJbmRleCkpLAorICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdH
bHlwaEluZGV4KSwKKyAgICAgICAgZ2x5cGhCdWZmZXIub3JpZ2lucyhiZWdpbm5pbmdHbHlwaElu
ZGV4KSwKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJlZ2lubmluZ0dseXBo
SW5kZXgpLAogICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPih1cGNvbnZl
cnRlZENoYXJhY3RlcnMuZ2V0KCkpLAotICAgICAgICBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdp
bm5pbmdHbHlwaEluZGV4LAorICAgICAgICBudW1iZXJPZklucHV0R2x5cGhzLAogICAgICAgICBv
cHRpb25zLAogICAgICAgICBsb2NhbGVTdHJpbmcuZ2V0KCksCiAgICAgICAgIGhhbmRsZXIpOwog
CisgICAgQVNTRVJUKG51bWJlck9mSW5wdXRHbHlwaHMgfHwgZ2x5cGhCdWZmZXIuc2l6ZSgpID09
IGJlZ2lubmluZ0dseXBoSW5kZXgpOworICAgIEFTU0VSVChudW1iZXJPZklucHV0R2x5cGhzIHx8
ICghaW5pdGlhbEFkdmFuY2Uud2lkdGggJiYgIWluaXRpYWxBZHZhbmNlLmhlaWdodCkpOworCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmlu
Z0dseXBoSW5kZXg7ICsraSkKICAgICAgICAgZ2x5cGhCdWZmZXIub2Zmc2V0c0luU3RyaW5nKGJl
Z2lubmluZ0dseXBoSW5kZXgpW2ldICs9IGJlZ2lubmluZ1N0cmluZ0luZGV4OwogCkBAIC02NTIs
MTEgKzY1NiwxNSBAQCB2b2lkIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIHVuc2lnbmVkIGJlZ2lubmluZ0dseXBoSW5kZQogCiAgICAgQ1RGb250VHJhbnNm
b3JtT3B0aW9ucyBvcHRpb25zID0gKGVuYWJsZUtlcm5pbmcgPyBrQ1RGb250VHJhbnNmb3JtQXBw
bHlQb3NpdGlvbmluZyA6IDApIHwga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZzsKICAgICBD
VEZvbnRUcmFuc2Zvcm1HbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBoQnVmZmVy
LmdseXBocyhiZWdpbm5pbmdHbHlwaEluZGV4KSwgcmVpbnRlcnByZXRfY2FzdDxDR1NpemUqPihn
bHlwaEJ1ZmZlci5hZHZhbmNlcyhiZWdpbm5pbmdHbHlwaEluZGV4KSksIGdseXBoQnVmZmVyLnNp
emUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXgsIG9wdGlvbnMpOworCisgICAgYXV0byBpbml0aWFs
QWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKICNlbmRpZgogCiAgICAgLy8gU2Vl
IHRoZSBjb21tZW50IGFib3ZlIGluIHRoaXMgZnVuY3Rpb24gd2hlcmUgdGhlIG90aGVyIGNhbGwg
dG8gcmV2ZXJzZSgpIGlzLgogICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OlJUTCkKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZShiZWdpbm5pbmdHbHlwaEluZGV4LCBn
bHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KTsKKworICAgIHJldHVybiBp
bml0aWFsQWR2YW5jZTsKIH0KIAogc3RhdGljIGludCBleHRyYWN0TnVtYmVyKENGTnVtYmVyUmVm
IG51bWJlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>