<?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>234050</bug_id>
          
          <creation_ts>2021-12-08 18:19:34 -0800</creation_ts>
          <short_desc>Move SystemFontDatabaseCoreText to FontCache</short_desc>
          <delta_ts>2022-07-24 15:39:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local 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>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>mattwoodrow</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821906</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-08 18:19:34 -0800</bug_when>
    <thetext>Move SystemFontDatabaseCoreText to FontCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821908</commentid>
    <comment_count>1</comment_count>
      <attachid>446470</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-08 18:20:48 -0800</bug_when>
    <thetext>Created attachment 446470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823023</commentid>
    <comment_count>2</comment_count>
      <attachid>446470</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-10 15:14:12 -0800</bug_when>
    <thetext>Comment on attachment 446470
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.h:226
&gt; +    SystemFontDatabaseCoreText m_systemFontDatabaseCoreText;

Is this going to compile on the non-Apple ports?

&gt; Source/WebCore/platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:257
&gt; +        result.fontName = AtomString(&quot;system-ui&quot;, AtomString::ConstructFromLiteral);

Don&apos;t we have a suffix that does this? Like &quot;system-ui&quot;_as or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823035</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-10 15:28:06 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #2)
&gt; &gt; Source/WebCore/platform/graphics/FontCache.h:226
&gt; &gt; +    SystemFontDatabaseCoreText m_systemFontDatabaseCoreText;
&gt; 
&gt; Is this going to compile on the non-Apple ports?

It&apos;s in an existing #ifdef, just outside the patch context limit.

&gt; &gt; Source/WebCore/platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:257
&gt; &gt; +        result.fontName = AtomString(&quot;system-ui&quot;, AtomString::ConstructFromLiteral);
&gt; 
&gt; Don&apos;t we have a suffix that does this? Like &quot;system-ui&quot;_as or something?

We do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824625</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-15 18:21:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/86552964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885840</commentid>
    <comment_count>5</comment_count>
      <attachid>461125</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-21 15:18:23 -0700</bug_when>
    <thetext>Created attachment 461125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886421</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-24 15:39:09 -0700</bug_when>
    <thetext>Committed 252770@main (c7d95cf25d9d): &lt;https://commits.webkit.org/252770@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461125.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446470</attachid>
            <date>2021-12-08 18:20:48 -0800</date>
            <delta_ts>2021-12-10 15:14:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234050-20211209132046.patch</filename>
            <type>text/plain</type>
            <size>14979</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU2MDNmNjliN2QzMTNj
Y2Q5MTg3Y2JhODliM2FjZDYyMWYzMjM5ZS4uMDdkNjI1NGIzZjA2NzNlYzNiNWZhZWVmMDgzNjY5
MzAwMGI2ZTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTEyLTAyICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dCB0byBGb250Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IG1haW50
YWlucyBhIGNhY2hlIG9mIENURm9udERlc2NyaXB0b3JzIGZvcgorICAgICAgICBzeXN0ZW0gZm9u
dHMgYW5kIGEgbWFwIG9mIGxvY2FsZXMgdG8gZm9udCBmYW1pbHkgbmFtZXMgZm9yIGVhY2ggb2Yg
dGhlCisgICAgICAgIENTUyBnZW5lcmljcy4gV29ya2VyIHRocmVhZHMgaW50ZXJhY3Qgd2l0aCBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dAorICAgICAgICB3aXRob3V0IHN5bmNocm9uaXphdGlv
bi4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0byBsaXZlIG9mZiB0aGUKKyAgICAgICAgRm9udENhY2hl
LCBvZiB3aGljaCB3ZSBhbHJlYWR5IGhhdmUgb25lIGluc3RhbmNlIHBlciB0aHJlYWQuCisKKyAg
ICAgICAgKEFzaWRlIGZyb20gbV90ZXh0U3R5bGVzLCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dCBkb2Vzbid0IHN0b3JlIGFueQorICAgICAgICBkYXRhIHRoYXQgaXMgb25seSB1c2FibGUgZnJv
bSBhIHNpbmdsZSB0aHJlYWQsIHNvIG9uZSBhbHRlcm5hdGl2ZQorICAgICAgICB3b3VsZCBiZSB0
byB1c2UgbG9ja2luZyB0byBwcm90ZWN0IGFjY2VzcyB0byBpdCwgYW5kIGhhdmUgbV90ZXh0U3R5
bGVzCisgICAgICAgIGxpdmUgZWxzZXdoZXJlLiBUaGUgbWVtb3J5IHNhdmVkIGJ5IGRvaW5nIHRo
aXMgZG9lc24ndCBzZWVtIHdvcnRoIGl0LikKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRm9udENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRXaXRoRmFtaWx5U3BlY2lhbENh
c2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNv
Y29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlDb3Vu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZl
Y3RpdmVGYW1pbHlBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246
OnBsYXRmb3JtUmVzb2x2ZUdlbmVyaWNGYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50VGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250UGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2lu
Z2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaDoKKwog
MjAyMS0xMi0wMiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dCdzIGZvbnRNYXAgdG8gRm9u
dENhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNjkzZmRmOGIzMTY2ZmU5MTUwZDdiMWJiMGExMjZjNTZmYjVmN2QwYS4uYzQ1
ZDRjNmU4ZDlhYjM1ZDgxOTFhMGU4NWU3ZmU5NGY2MDhiZTFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTM4NCw3ICs1Mzg0
LDcgQEAKIAkJRTREQUNFNkExRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREQUNF
NjkxRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oICovOyB9OwogCQlF
NERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REVBQTE2MTdBOTNEQzMwMDBF
MDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lU
aWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5oICov
OyB9OwotCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICov
OyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RThCNEY1
MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU4QjRGMjIxNkI4QjYwMDBCODgz
NEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBMZWdh
Y3lMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEExQUM3ODIyRkFGRDUwMDAxN0I3NUIgLyogTGVnYWN5TGluZUxheW91dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RjBCRTMxMjU3
MTJGNkUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8q
IENhcmV0UmVjdENvbXB1dGF0aW9uLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IGIzZWIyODJiZWQyMmM5MzJjOGYzZjhl
YjQ5ZTNlZDFlOGY3NzNmNjUuLmRmNjQ5MDQ1MGQ4YTJlNzE5YzdmOGRjYjVlYzAxZDJmZjk5MzFi
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29h
Lm1tCkBAIC00Nyw3ICs0Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiB7Ci0gICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCBjbGVhciB0aGlz
IG9uIGFsbCB3b3JrZXJzLgorICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJy
ZW50VGhyZWFkKCkuY2xlYXIoKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGNsZWFyIHRoaXMgb24g
YWxsIHdvcmtlcnMuCiAgICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkKCkuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAxY2Y1MGY3NTgzZmE5ODhhNDNiZTg3NWM3NjBlMTAx
ZGY5YjQ0NzA4Li4zYmNhODM4NDZlMzM2YTgyZjAzMjBhZmZkMzJjMzg3MGZhZjE1Y2E4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtNTcsNiAr
NTcsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZUNvcmVUZXh0LmgiCiAjaW5jbHVkZSAiRm9udERh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hl
LmgiCisjaW5jbHVkZSAiU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCIKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2OCw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAg
U3lzdGVtRmFsbGJhY2tDYWNoZSYgc3lzdGVtRmFsbGJhY2tDYWNoZSgpIHsgcmV0dXJuIG1fc3lz
dGVtRmFsbGJhY2tDYWNoZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSYgZm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dENhY2hlKCkgeyByZXR1cm4gbV9mb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGU7
IH0KKyAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCYgc3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQoKSB7IHJldHVybiBtX3N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OyB9CiAjZW5kaWYK
IAogICAgIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJp
bmcmIGZhbWlseSk7CkBAIC0yMjEsNiArMjIzLDcgQEAgcHJpdmF0ZToKICAgICBGYWxsYmFja0Zv
bnRTZXQgbV9mYWxsYmFja0ZvbnRzOwogCiAgICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dENhY2hlIG1fZm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOworICAgIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IG1fc3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ7CiAK
ICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IG1fc2VlbkZhbWlsaWVzRm9yUHJld2FybWluZzsKICAg
ICBMaXN0SGFzaFNldDxTdHJpbmc+IG1fZm9udE5hbWVzUmVxdWlyaW5nU3lzdGVtRmFsbGJhY2tG
b3JQcmV3YXJtaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDRkODgyMzNmODkxNTJi
MGUyYjU0NmU3ZTdhYmFmNWVlZGE1NGYzYjYuLjVmNmJhNjhiOGJkYzJjMzZmNmVlM2FiYjc5Yjc0
YjQ3MjIyNzcxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTExMzcsMTQgKzExMzcs
MTIgQEAgc3RhdGljIEZvbnRMb29rdXAgcGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWlseShGb250
RGF0YWJhc2UmIGZvbnREYXRhYmFzZSwgY29uc3QKIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUlu
dmFsaWRhdGUoKQogewogICAgIG1fZm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hl
LmNsZWFyKCk7CisgICAgbV9zeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jbGVhcigpOwogfQog
CiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCkKIHsKICAgICBlbnN1cmVPbk1haW5U
aHJlYWQoW10gewotICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC4KLSAgICAgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7Ci0KICAgICAgICAgRm9udENhY2hlOjppbnZhbGlkYXRl
QWxsRm9udENhY2hlcygpOwogICAgIH0pOwogfQpAQCAtMTE2OSw3ICsxMTY3LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRv
bVN0cmluZyYgZmFtaWx5LAogICAgIH0KIAogICAgIGlmIChzeXN0ZW1EZXNpZ24pIHsKLSAgICAg
ICAgYXV0byBjYXNjYWRlTGlzdCA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0
b24oKS5jYXNjYWRlTGlzdChmb250RGVzY3JpcHRpb24sIGZhbWlseSwgKnN5c3RlbURlc2lnbiwg
YWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5jYXNjYWRlTGlzdChm
b250RGVzY3JpcHRpb24sIGZhbWlseSwgKnN5c3RlbURlc2lnbiwgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpOwogICAgICAgICBpZiAoY2FzY2FkZUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9u
dHMoY2FzY2FkZUxpc3RbMF0uZ2V0KCksIHNpemUsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRE
ZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCAxZjY1OTkyNzIwNzI0NWQ1M2ViMGVh
NjgzMWJlMzBjZjY2Mjc3MWE4Li44M2JkYWZjZTY0M2RhYjBiYzFiOTM5MmFiZmYxNjMzODJkOGI4
ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBWZWN0b3I8UmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgY3NzRmFtaWx5LCBTeXN0ZW1Gb250
S2luZCBzeXN0ZW1Gb250S2luZCwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMpCiB7Ci0gICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3NzRmFtaWx5LCBzeXN0ZW1Gb250
S2luZCwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAgIHJldHVybiBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLmNhc2NhZGVMaXN0KGRlc2NyaXB0aW9u
LCBjc3NGYW1pbHksIHN5c3RlbUZvbnRLaW5kLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiB9
CiAKIHVuc2lnbmVkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNvdW50
KCkgY29uc3QKQEAgLTQxLDcgKzQxLDcgQEAgdW5zaWduZWQgRm9udENhc2NhZGVEZXNjcmlwdGlv
bjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdAogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewogICAg
ICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChpKTsKLSAgICAgICAgaWYgKGF1
dG8gdXNlID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1hdGNoU3lz
dGVtRm9udFVzZShjc3NGYW1pbHkpKQorICAgICAgICBpZiAoYXV0byB1c2UgPSBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLm1hdGNoU3lzdGVtRm9udFVzZShj
c3NGYW1pbHkpKQogICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgq
dGhpcywgY3NzRmFtaWx5LCAqdXNlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5z
aXplKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsrcmVzdWx0OwpAQCAtNTksNyArNTks
NyBAQCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZl
Y3RpdmVGYW1pbHlBdCh1bnNpZ25lZCBpbmRleAogICAgIC8vIFRoZXNlIHR3byBiZWhhdmlvcnMg
c2hvdWxkIGJlIHVuaWZpZWQsIHdoaWNoIHdvdWxkIGhvcGVmdWxseSBhbGxvdyB1cyB0byBkZWxl
dGUgdGhpcyBkdXBsaWNhdGUgY29kZS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFt
aWx5Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNzc0ZhbWlseSA9IGZhbWls
eUF0KGkpOwotICAgICAgICBpZiAoYXV0byB1c2UgPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dDo6c2luZ2xldG9uKCkubWF0Y2hTeXN0ZW1Gb250VXNlKGNzc0ZhbWlseSkpIHsKKyAgICAgICAg
aWYgKGF1dG8gdXNlID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJl
YWQoKS5tYXRjaFN5c3RlbUZvbnRVc2UoY3NzRmFtaWx5KSkgewogICAgICAgICAgICAgYXV0byBj
YXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCAqdXNl
LCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKICAgICAgICAgICAgIGlmIChpbmRl
eCA8IGNhc2NhZGVMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZhbWls
eVNwZWNpZmljYXRpb24oY2FzY2FkZUxpc3RbaW5kZXhdLmdldCgpKTsKQEAgLTgyLDE1ICs4Miwx
NSBAQCBBdG9tU3RyaW5nIEZvbnREZXNjcmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0Zh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQsIGNvbgogCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgc3lz
dGVtIGZvbnQgZGF0YWJhc2UgdG8gaGFuZGxlIHN0YW5kYXJkRmFtaWx5CiAgICAgaWYgKGZhbWls
eU5hbWUgPT0gc2VyaWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6c2luZ2xldG9uKCkuc2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKKyAgICAg
ICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50VGhyZWFkKCku
c2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBzYW5z
U2VyaWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
c2luZ2xldG9uKCkuc2Fuc1NlcmlmRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CisgICAgICAgIHJl
dHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLnNhbnNT
ZXJpZkZhbWlseShsb2NhbGUuc3RyaW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGN1cnNp
dmVGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2lu
Z2xldG9uKCkuY3Vyc2l2ZUZhbWlseShsb2NhbGUuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5jdXJzaXZlRmFt
aWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gZmFudGFzeUZhbWls
eSkKLSAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24o
KS5mYW50YXN5RmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLmZhbnRhc3lGYW1pbHkobG9j
YWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBtb25vc3BhY2VGYW1pbHkpCi0g
ICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkubW9u
b3NwYWNlRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLm1vbm9zcGFjZUZhbWlseShsb2Nh
bGUuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKaW5kZXggMjg0ZWQzY2E5MzJlODhlYmQ3MDE2ZjM1
MjhjNjQyMWM5OTc0MTgwNC4uM2U3MmRmYmE2YmU5ZTU1MTI1MWM2NjE5MWMwOWRlY2U5ZDk3Nzky
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcApAQCAtMzQsMTUg
KzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKQorU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQmIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50
VGhyZWFkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ+IGRhdGFiYXNlID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKTsKLSAgICBy
ZXR1cm4gZGF0YWJhc2UuZ2V0KCk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLnN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0KCk7CiB9CiAKLVN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpCi17Ci19CitTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKSA9IGRlZmF1
bHQ7CiAKIFJldGFpblB0cjxDVEZvbnRSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpj
cmVhdGVTeXN0ZW1VSUZvbnQoY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBDRlN0cmluZ1JlZiBsb2NhbGUpCiB7CkBAIC0yNTcsMjMgKzI1NCwxOSBAQCBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0OjpzeQogCiAgICAgc3dpdGNoIChzeXN0ZW1Gb250S2luZCkgewogICAgIGNhc2Ug
U3lzdGVtRm9udEtpbmQ6OlN5c3RlbVVJOiB7Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3lzdGVtVUkgPSBBdG9tU3RyaW5nKCJzeXN0
ZW0tdWkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3Vs
dC5mb250TmFtZSA9IHN5c3RlbVVJLmdldCgpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBB
dG9tU3RyaW5nKCJzeXN0ZW0tdWkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN5c3RlbUZvbnRLaW5kOjpVSVNlcmlm
OiB7Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gc3lzdGVtVUlTZXJpZiA9IEF0b21TdHJpbmcoInVpLXNlcmlmIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1V
SVNlcmlmLmdldCgpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBBdG9tU3RyaW5nKCJ1aS1z
ZXJpZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgU3lzdGVtRm9udEtpbmQ6OlVJTW9ub3NwYWNlOiB7Ci0gICAgICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3lzdGVt
VUlNb25vc3BhY2UgPSBBdG9tU3RyaW5nKCJ1aS1tb25vc3BhY2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJlc3VsdC5mb250TmFtZSA9IHN5c3RlbVVJTW9u
b3NwYWNlLmdldCgpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBBdG9tU3RyaW5nKCJ1aS1t
b25vc3BhY2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIFN5c3RlbUZvbnRLaW5kOjpVSVJvdW5kZWQ6IHsKLSAgICAg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzeXN0
ZW1VSVJvdW5kZWQgPSBBdG9tU3RyaW5nKCJ1aS1yb3VuZGVkIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1VSVJvdW5k
ZWQuZ2V0KCk7CisgICAgICAgIHJlc3VsdC5mb250TmFtZSA9IEF0b21TdHJpbmcoInVpLXJvdW5k
ZWQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIFN5c3RlbUZvbnRLaW5kOjpUZXh0U3R5bGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQuaAppbmRleCBhNmI4MzgwOWU3MzkwMmFlMjIwNmNkMmU5ZGU3
NjIyNzA1YjRlZmViLi43ZjgwM2FiMzMwMjU4YTkxZGM0ZDQzNmY3OWQ0MzFiOWVkOWE5MWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgKQEAgLTkwLDcgKzkwLDggQEAg
cHVibGljOgogICAgICAgICBib29sIGl0YWxpYyB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIHN0
YXRpYyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCYgc2luZ2xldG9uKCk7CisgICAgU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQoKTsKKyAgICBzdGF0aWMgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQmIGZvckN1cnJlbnRUaHJlYWQoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3lzdGVtRm9u
dEtpbmQ+IG1hdGNoU3lzdGVtRm9udFVzZShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpOwogICAg
IFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IGNhc2NhZGVMaXN0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGNzc0ZhbWlseSwgU3lzdGVtRm9u
dEtpbmQsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKQEAgLTEwNCw4ICsxMDUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiBwcml2YXRlOgotICAgIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0KCk7Ci0KICAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
PiBjYXNjYWRlTGlzdChjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmLCBTeXN0ZW1Gb250S2lu
ZCk7CiAKICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBjcmVhdGVTeXN0ZW1VSUZvbnQoY29uc3Qg
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiwgQ0ZTdHJpbmdSZWYgbG9jYWxlKTsK
</data>
<flag name="review"
          id="471878"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461125</attachid>
            <date>2022-07-21 15:18:23 -0700</date>
            <delta_ts>2022-07-24 15:39:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234050-20220722101821.patch</filename>
            <type>text/plain</type>
            <size>14067</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSAyZDg0YzRlZWRlY2IwYjYyNzQwNWJkMTQ4NmFjYjVkM2Y2ZGQ1YmVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAyNSBOb3YgMjAyMSAxMToyMToxNSArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1v
dmUgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQgdG8gRm9udENhY2hlCiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDUwCgpSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KClN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IG1haW50YWlucyBhIGNhY2hlIG9m
IENURm9udERlc2NyaXB0b3JzIGZvcgpzeXN0ZW0gZm9udHMgYW5kIGEgbWFwIG9mIGxvY2FsZXMg
dG8gZm9udCBmYW1pbHkgbmFtZXMgZm9yIGVhY2ggb2YgdGhlCkNTUyBnZW5lcmljcy4gV29ya2Vy
IHRocmVhZHMgaW50ZXJhY3Qgd2l0aCBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dAp3aXRob3V0
IHN5bmNocm9uaXphdGlvbi4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0byBsaXZlIG9mZiB0aGUKRm9u
dENhY2hlLCBvZiB3aGljaCB3ZSBhbHJlYWR5IGhhdmUgb25lIGluc3RhbmNlIHBlciB0aHJlYWQu
CgooQXNpZGUgZnJvbSBtX3RleHRTdHlsZXMsIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0IGRv
ZXNuJ3Qgc3RvcmUgYW55CmRhdGEgdGhhdCBpcyBvbmx5IHVzYWJsZSBmcm9tIGEgc2luZ2xlIHRo
cmVhZCwgc28gb25lIGFsdGVybmF0aXZlCndvdWxkIGJlIHRvIHVzZSBsb2NraW5nIHRvIHByb3Rl
Y3QgYWNjZXNzIHRvIGl0LCBhbmQgaGF2ZSBtX3RleHRTdHlsZXMKbGl2ZSBlbHNld2hlcmUuIFRo
ZSBtZW1vcnkgc2F2ZWQgYnkgZG9pbmcgdGhpcyBkb2Vzbid0IHNlZW0gd29ydGggaXQuKQoKKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogcGFnZS9jb2NvYS9NZW1vcnlSZWxl
YXNlQ29jb2EubW06CihXZWJDb3JlOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgoqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgooV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwOgooV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgooV2ViQ29y
ZTo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CihXZWJDb3JlOjpmb250V2l0aEZhbWlseVNwZWNpYWxD
YXNlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6
CihXZWJDb3JlOjpzeXN0ZW1Gb250Q2FzY2FkZUxpc3QpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5Q291bnQgY29uc3QpOgooV2ViQ29yZTo6Rm9udENh
c2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQgY29uc3QpOgooV2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5KToKKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHA6CihXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCk6CihXZWJDb3JlOjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOgooV2ViQ29y
ZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbik6IERlbGV0ZWQuCihXZWJD
b3JlOjpTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQpOiBEZWxldGVkLgoqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0Lmg6Ci0tLQogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oICB8ICAzICsrKwogLi4uL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCAg
ICAgIHwgIDMgKystCiAuLi4vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3Bw
ICAgfCAxNiArKysrKystLS0tLS0KIC4uLi9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5jcHAgICAgICB8IDI1ICsrKysrKystLS0tLS0tLS0tLS0KIC4uLi9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oICAgICAgICB8ICA2ICsrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDI1
IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NzBlMDM0OWRiODguLjVhMzlm
N2YwZmU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTUwMyw3ICs1NTAzLDcgQEAKIAkJRTREQUNFNkExRDEyRTEwQjAwNzU5
ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTREQUNFNjkxRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVu
ZGluZ1Jlc291cmNlcy5oICovOyB9OwogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5
bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0REVBQTE2MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTM5QUZC
MTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQg
LyogTGVnYWN5VGlsZUxheWVyUG9vbC5oICovOyB9OwotCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgz
NEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovOyB9OworCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgz
NEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTk0
RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEExQUM3ODIyRkFGRDUwMDAxN0I3NUIg
LyogTGVnYWN5TGluZUxheW91dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0RUQzRUNDMjc2OEE1MUQwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRF
RDNFQ0EyNzY4QTUxQzAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggKi87IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDA0NjM4MWYw
YTMzMi4uM2ZkNTM1ZGNiNjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZUNvcmVU
ZXh0LmgiCiAjaW5jbHVkZSAiRm9udERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmgiCisjaW5jbHVkZSAiU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE3OSw2
ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUmIHN5c3RlbUZh
bGxiYWNrRm9udENhY2hlKCkgeyByZXR1cm4gbV9zeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZTsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRD
YWNoZSYgZm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCkgeyByZXR1cm4gbV9m
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGU7IH0KKyAgICBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dCYgc3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQoKSB7IHJldHVybiBtX3N5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OyB9CiAjZW5kaWYKIAogICAgIGJvb2wgdXNlQmFja3Ns
YXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSk7CkBAIC0yMzYs
NiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3ByZXdhcm1RdWV1
ZTsKIAogICAgIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSBtX2ZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZTsKKyAgICBTeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dCBtX3N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OwogCiAgICAgZnJpZW5kIGNsYXNzIENv
bXBsZXhUZXh0Q29udHJvbGxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4
IGJmOGQyYjFlMzk4YS4uODUzYTFkZWRkM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBA
IC0xMjA3LDYgKzEyMDcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkK
IHsKICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC4KICAgICBtX2ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5j
bGVhcigpOworICAgIG1fc3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY2xlYXIoKTsKIAogICAg
IHBsYXRmb3JtU2hvdWxkRW5oYW5jZVRleHRMZWdpYmlsaXR5KCkgPSBfQVhTRW5oYW5jZVRleHRM
ZWdpYmlsaXR5RW5hYmxlZCgpOwogfQpAQCAtMTIzMSw3ICsxMjMyLDcgQEAgc3RhdGljIFJldGFp
blB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmlu
ZyYgZmFtaWx5LAogICAgIH0KIAogICAgIGlmIChzeXN0ZW1EZXNpZ24pIHsKLSAgICAgICAgYXV0
byBjYXNjYWRlTGlzdCA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5j
YXNjYWRlTGlzdChmb250RGVzY3JpcHRpb24sIGZhbWlseSwgKnN5c3RlbURlc2lnbiwgYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMpOworICAgICAgICBhdXRvIGNhc2NhZGVMaXN0ID0gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5jYXNjYWRlTGlzdChmb250RGVz
Y3JpcHRpb24sIGZhbWlseSwgKnN5c3RlbURlc2lnbiwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMp
OwogICAgICAgICBpZiAoY2FzY2FkZUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoY2Fz
Y2FkZUxpc3RbMF0uZ2V0KCksIHNpemUsIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlw
dGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCAwOTkyNDYxMzZlYmYuLjQwZWNmMjNkOTY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERl
c2NyaXB0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPj4gc3lzdGVtRm9udENhc2NhZGVMaXN0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIGNzc0ZhbWlseSwgU3lzdGVtRm9udEtpbmQg
c3lzdGVtRm9udEtpbmQsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKQogewotICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xl
dG9uKCkuY2FzY2FkZUxpc3QoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgc3lzdGVtRm9udEtpbmQs
IGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5jYXNjYWRlTGlzdChkZXNjcmlwdGlvbiwgY3Nz
RmFtaWx5LCBzeXN0ZW1Gb250S2luZCwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogfQogCiB1
bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlDb3VudCgpIGNv
bnN0CkBAIC00MSw3ICs0MSw3IEBAIHVuc2lnbmVkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVm
ZmVjdGl2ZUZhbWlseUNvdW50KCkgY29uc3QKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKICAgICAgICAg
Y29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7Ci0gICAgICAgIGlmIChhdXRvIHVz
ZSA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5tYXRjaFN5c3RlbUZv
bnRVc2UoY3NzRmFtaWx5KSkKKyAgICAgICAgaWYgKGF1dG8gdXNlID0gU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5tYXRjaFN5c3RlbUZvbnRVc2UoY3NzRmFt
aWx5KSkKICAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMs
IGNzc0ZhbWlseSwgKnVzZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkuc2l6ZSgp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICArK3Jlc3VsdDsKQEAgLTU5LDcgKzU5LDcgQEAg
Rm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZl
RmFtaWx5QXQodW5zaWduZWQgaW5kZXgKICAgICAvLyBUaGVzZSB0d28gYmVoYXZpb3JzIHNob3Vs
ZCBiZSB1bmlmaWVkLCB3aGljaCB3b3VsZCBob3BlZnVsbHkgYWxsb3cgdXMgdG8gZGVsZXRlIHRo
aXMgZHVwbGljYXRlIGNvZGUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNv
dW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiBjc3NGYW1pbHkgPSBmYW1pbHlBdChp
KTsKLSAgICAgICAgaWYgKGF1dG8gdXNlID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNp
bmdsZXRvbigpLm1hdGNoU3lzdGVtRm9udFVzZShjc3NGYW1pbHkpKSB7CisgICAgICAgIGlmIChh
dXRvIHVzZSA9IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50VGhyZWFkKCku
bWF0Y2hTeXN0ZW1Gb250VXNlKGNzc0ZhbWlseSkpIHsKICAgICAgICAgICAgIGF1dG8gY2FzY2Fk
ZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgKnVzZSwgc2hv
dWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBj
YXNjYWRlTGlzdC5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7CkBAIC04MiwxNSArODIsMTUgQEAg
QXRvbVN0cmluZyBGb250RGVzY3JpcHRpb246OnBsYXRmb3JtUmVzb2x2ZUdlbmVyaWNGYW1pbHko
VVNjcmlwdENvZGUgc2NyaXB0LCBjb24KIAogICAgIC8vIEZJWE1FOiBVc2UgdGhlIHN5c3RlbSBm
b250IGRhdGFiYXNlIHRvIGhhbmRsZSBzdGFuZGFyZEZhbWlseQogICAgIGlmIChmYW1pbHlOYW1l
ID09IHNlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gQXRvbVN0cmluZyB7IFN5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5zZXJpZkZhbWlseShsb2NhbGUuc3RyaW5nKCkp
IH07CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nIHsgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OmZvckN1cnJlbnRUaHJlYWQoKS5zZXJpZkZhbWlseShsb2NhbGUuc3RyaW5nKCkpIH07CiAg
ICAgaWYgKGZhbWlseU5hbWUgPT0gc2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gQXRv
bVN0cmluZyB7IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5zYW5zU2Vy
aWZGYW1pbHkobG9jYWxlLnN0cmluZygpKSB9OworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyB7
IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50VGhyZWFkKCkuc2Fuc1Nlcmlm
RmFtaWx5KGxvY2FsZS5zdHJpbmcoKSkgfTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBjdXJzaXZl
RmFtaWx5KQotICAgICAgICByZXR1cm4gQXRvbVN0cmluZyB7IFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpzaW5nbGV0b24oKS5jdXJzaXZlRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSkgfTsKKyAg
ICAgICAgcmV0dXJuIEF0b21TdHJpbmcgeyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Zm9y
Q3VycmVudFRocmVhZCgpLmN1cnNpdmVGYW1pbHkobG9jYWxlLnN0cmluZygpKSB9OwogICAgIGlm
IChmYW1pbHlOYW1lID09IGZhbnRhc3lGYW1pbHkpCi0gICAgICAgIHJldHVybiBBdG9tU3RyaW5n
IHsgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmZhbnRhc3lGYW1pbHko
bG9jYWxlLnN0cmluZygpKSB9OworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyB7IFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50VGhyZWFkKCkuZmFudGFzeUZhbWlseShsb2Nh
bGUuc3RyaW5nKCkpIH07CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQot
ICAgICAgICByZXR1cm4gQXRvbVN0cmluZyB7IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKS5tb25vc3BhY2VGYW1pbHkobG9jYWxlLnN0cmluZygpKSB9OworICAgICAgICBy
ZXR1cm4gQXRvbVN0cmluZyB7IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpmb3JDdXJyZW50
VGhyZWFkKCkubW9ub3NwYWNlRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSkgfTsKIAogICAgIHJldHVy
biBudWxsQXRvbSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3Bw
CmluZGV4IDQ5MTgwN2NhMWM4Zi4uMjAzMmFlMTNkMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuY3BwCkBAIC0zNCwyMCArMzQsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCYgU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OnNpbmdsZXRvbigpCitTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCYgU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OmZvckN1cnJlbnRUaHJlYWQoKQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dD4gZGF0YWJhc2UgPSBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpOwotICAgIHJldHVybiBkYXRhYmFzZS5nZXQoKTsKKyAg
ICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQoKTsKIH0KIAogU3lzdGVtRm9udERhdGFiYXNlJiBTeXN0ZW1Gb250RGF0YWJhc2U6
OnNpbmdsZXRvbigpCiB7Ci0gICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKTsKKyAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmZvckN1
cnJlbnRUaHJlYWQoKTsKIH0KIAotU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OlN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0KCkKLXsKLX0KK1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dCgpID0gZGVmYXVsdDsKIAogUmV0YWluUHRyPENURm9u
dFJlZj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNyZWF0ZVN5c3RlbVVJRm9udChjb25z
dCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENGU3RyaW5nUmVmIGxvY2FsZSkK
IHsKQEAgLTEzMiw3ICsxMjksNyBAQCBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2FzY2FkZUxpc3QoYwogCiB2b2lkIFN5
c3RlbUZvbnREYXRhYmFzZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2xlYXIoKTsKKyAgICBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6Zm9yQ3VycmVudFRocmVhZCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNsZWFyKCkKQEAgLTI2NCwyMyArMjYxLDE5IEBAIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQ6OnN5CiAKICAgICBzd2l0Y2ggKHN5c3RlbUZvbnRLaW5kKSB7CiAg
ICAgY2FzZSBTeXN0ZW1Gb250S2luZDo6U3lzdGVtVUk6IHsKLSAgICAgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzeXN0ZW1VSSB7ICJzeXN0ZW0t
dWkiX3MgfTsKLSAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gc3lzdGVtVUkuZ2V0KCk7CisgICAg
ICAgIHJlc3VsdC5mb250TmFtZSA9IEF0b21TdHJpbmcoInN5c3RlbS11aSJfcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN5c3RlbUZvbnRLaW5kOjpVSVNlcmlmOiB7Ci0gICAg
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc3lz
dGVtVUlTZXJpZiB7ICJ1aS1zZXJpZiJfcyB9OwotICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBz
eXN0ZW1VSVNlcmlmLmdldCgpOworICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBBdG9tU3RyaW5n
KCJ1aS1zZXJpZiJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN5c3RlbUZv
bnRLaW5kOjpVSU1vbm9zcGFjZTogewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN5c3RlbVVJTW9ub3NwYWNlIHsgInVpLW1vbm9zcGFj
ZSJfcyB9OwotICAgICAgICByZXN1bHQuZm9udE5hbWUgPSBzeXN0ZW1VSU1vbm9zcGFjZS5nZXQo
KTsKKyAgICAgICAgcmVzdWx0LmZvbnROYW1lID0gQXRvbVN0cmluZygidWktbW9ub3NwYWNlIl9z
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3lzdGVtRm9udEtpbmQ6OlVJUm91
bmRlZDogewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHN5c3RlbVVJUm91bmRlZCB7ICJ1aS1yb3VuZGVkIl9zIH07Ci0gICAgICAgIHJl
c3VsdC5mb250TmFtZSA9IHN5c3RlbVVJUm91bmRlZC5nZXQoKTsKKyAgICAgICAgcmVzdWx0LmZv
bnROYW1lID0gQXRvbVN0cmluZygidWktcm91bmRlZCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIFN5c3RlbUZvbnRLaW5kOjpUZXh0U3R5bGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3Jl
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuaAppbmRleCAxY2NhNzBmNDYyM2UuLjY5ODIwY2Y1MTI2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oCkBAIC04Nyw3ICs4Nyw4IEBAIHB1
YmxpYzoKICAgICAgICAgYm9vbCBpdGFsaWMgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0
aWMgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQmIHNpbmdsZXRvbigpOworICAgIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0KCk7CisgICAgc3RhdGljIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0JiBmb3JDdXJyZW50VGhyZWFkKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN5c3RlbUZvbnRL
aW5kPiBtYXRjaFN5c3RlbUZvbnRVc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KTsKICAgICBW
ZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBjYXNjYWRlTGlzdChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnRL
aW5kLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CkBAIC0xMDIsMTQgKzEwMywxMSBAQCBwdWJs
aWM6CiAgICAgZmxvYXQgc3lzdGVtRm9udFNob3J0aGFuZFNpemUoRm9udFNob3J0aGFuZCk7CiAg
ICAgRm9udFNlbGVjdGlvblZhbHVlIHN5c3RlbUZvbnRTaG9ydGhhbmRXZWlnaHQoRm9udFNob3J0
aGFuZCk7CiAKLXByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFN5c3RlbUZvbnREYXRhYmFzZTsKIAotICAgIFN5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0KCk7Ci0KICAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
PiBjYXNjYWRlTGlzdChjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmLCBTeXN0ZW1Gb250S2lu
ZCk7CiAKICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBjcmVhdGVTeXN0ZW1VSUZvbnQoY29uc3Qg
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiwgQ0ZTdHJpbmdSZWYgbG9jYWxlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>