<?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>216293</bug_id>
          
          <creation_ts>2020-09-08 16:52:59 -0700</creation_ts>
          <short_desc>Small cleanup in RenderTheme</short_desc>
          <delta_ts>2020-09-10 18:52:16 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686808</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-08 16:52:59 -0700</bug_when>
    <thetext>Small cleanup in RenderTheme</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686820</commentid>
    <comment_count>1</comment_count>
      <attachid>408287</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-08 17:10:07 -0700</bug_when>
    <thetext>Created attachment 408287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686832</commentid>
    <comment_count>2</comment_count>
      <attachid>408287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-08 17:23:20 -0700</bug_when>
    <thetext>Comment on attachment 408287
Patch

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

&gt; Source/WebCore/rendering/RenderTheme.cpp:1286
&gt; +#define NumSystemFonts 10

This can be constexpr; does not need to be &quot;define&quot;:

    constexpr auto numSystemFonts = 10;

&gt; Source/WebCore/rendering/RenderTheme.cpp:1288
&gt; +        FontCascadeDescription&amp; caption()            { return (*this)[0]; }

Seems to me you could just use an array here and use indices in the code below and don’t need the named getters.

&gt; Source/WebCore/rendering/RenderTheme.cpp:1298
&gt; +        static_assert(NumSystemFonts == 10);

This seems pointless given the number is defined just above.

&gt; Source/WebCore/rendering/RenderThemeCocoa.mm:209
&gt; +            for (auto&amp; description : (*this)) {
&gt; +                if (description.isAbsoluteSize())
&gt; +                    return false;
&gt; +            }
&gt; +            return true;

Could write this with std::all_of or none_of:

    return std:: all_of(std::begin(descriptions), std::end(descriptions), [] (auto&amp; description) (
        return !description.isAbsoluteSize();
    });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686885</commentid>
    <comment_count>3</comment_count>
      <attachid>408304</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-08 20:07:29 -0700</bug_when>
    <thetext>Created attachment 408304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687604</commentid>
    <comment_count>4</comment_count>
      <attachid>408304</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-10 16:59:31 -0700</bug_when>
    <thetext>Comment on attachment 408304
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/FontDescriptionCocoa.cpp:82
&gt; +    auto atomStringComparison = [](const AtomString&amp; lhs, const AtomString&amp; rhs) {

I think this name doesn’t say the thing it should, which is that this is the most-efficient comparison, comparison by pointer, with the drawback that it sorts things in pseudo-random, non-useful order. I think I would call this compareAsPointer; no need to state the types of the arguments. But maybe you have a different idea about the name. The name atomStringComparison would be a fine name for comparing the string by code point, or code unit, or case folded ASCII, or whatever, and none of those  are what want to use here.

&gt; Source/WebCore/platform/graphics/cocoa/FontDescriptionCocoa.cpp:85
&gt; +    static auto strings { makeNeverDestroyed([&amp;atomStringComparison] {

Not 100% sure about the { } vs. = for the initialization, what is inside the lambda and what is outside, and other such things. I would have been tempted to write &quot;const&quot;, but I suppose that’s not needed.

&gt; Source/WebCore/platform/graphics/cocoa/FontDescriptionCocoa.cpp:91
&gt; +    auto result = std::binary_search(strings.get().begin(), strings.get().end(), string, atomStringComparison);
&gt; +    if (result)

No need for a local variable &quot;result&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687625</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-10 18:51:46 -0700</bug_when>
    <thetext>Committed r266904: &lt;https://trac.webkit.org/changeset/266904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687626</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-10 18:52:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68679053&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408287</attachid>
            <date>2020-09-08 17:10:07 -0700</date>
            <delta_ts>2020-09-08 20:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216293-20200908171006.patch</filename>
            <type>text/plain</type>
            <size>19045</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVkNmRjYTU1NzZlYzll
ZjdiNzQ0OGIxMjVkOTYxMzI1MjUzZWQ2NS4uMzJjZDc1MThlZmU0ZGY0ZjA0ZDlkMDk2ZGFjMzdi
MTc4Y2ZiOGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA5LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU21hbGwgY2xl
YW51cCBpbiBSZW5kZXJUaGVtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGZhY3QgdGhhdCBlYWNoIG9mIHRoZXNlIGZvbnRzIGlzIGEgc2VwYXJh
dGUgZGVjbGFyYXRpb24gbWFrZXMgaXQgZXJyb3ItcHJvbmUgdG8gd3JpdGUgY29kZSB0aGF0Cisg
ICAgICAgIGlzIHN1cHBvc2VkIHRvIG9wZXJhdGUgb24gZWFjaCBpdGVtLiBGb3IgZXhhbXBsZSwg
UmVuZGVyVGhlbWVDb2NvYTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKCkKKyAgICAgICAg
d2FzIHRyeWluZyB0byBjYWxsIHNldElzQWJzb2x1dGVTaXplKGZhbHNlKSBvbiBlYWNoIG9uZSwg
YnV0IGZvcmdvdCB0byBpbmNsdWRlIHRpdGxlWzAtNF1Gb250LgorCisgICAgICAgIEl0IHR1cm5z
IG91dCB0aGF0IHRoaXMgc3BlY2lmaWMgZXhhbXBsZSBpc24ndCBhY3R1YWxseSBuZWNlc3Nhcnkg
LSB0aGUgc2l6ZSBpcyBhbHdheXMgYWJzb2x1dGUgZm9yCisgICAgICAgIHRoZXNlIGZvbnRzLiBC
dXQgdGhlIGdlbmVyYWwgcG9pbnQgc3RhbmRzIC0gYSBidW5jaCBvZiBpbmRlcGVuZGVudCB2YXJp
YWJsZXMgaXNuJ3QgYSBncmVhdCBkZXNpZ24KKyAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24uCisK
KyAgICAgICAgQWxzbyBzb21lIGRyaXZlLWJ5IGNsZWFudXBzOiBVc2luZyAiYXV0byIgaW4gbW9y
ZSBwbGFjZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1DcmVhdGVTY2FsZWRGb250
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpm
b250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
biBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzV2VpZ2h0T2ZTeXN0ZW1Gb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnRE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEFjdGlvbkZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6YXR0YWNobWVudFRpdGxlRm9udCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6bGF5T3V0VGl0
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91dDo6bGF5T3V0U3VidGl0bGUp
OgorCiAyMDIwLTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNb3Rpb25NYXJrIC0gTXVsdGlwbHldIFdlYiBwcm9jZXNzIHNwZW5kcyB+MSUg
b2YgdG90YWwgc2FtcGxlcyBpbiBQcm9wZXJ0eUNhc2NhZGU6OnJlc29sdmVEaXJlY3Rpb25BbmRX
cml0aW5nTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCmluZGV4IGZjOGJjMGQzNDQxYTYxZmNjMDllOGQ0YTY1ZjQwZTU0ODll
OTQ5ZDUuLjUxY2ZkNDI5YTNhYjM3MDEzN2IzZDcwNTMzOWI5MTZiY2VkNDk5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0K
QEAgLTUzOCw3ICs1MzgsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6cGxhdGZvcm1DcmVhdGVTY2Fs
ZWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNjYWxlRgogewogICAgIGZsb2F0
IHNpemUgPSBtX3BsYXRmb3JtRGF0YS5zaXplKCkgKiBzY2FsZUZhY3RvcjsKICAgICBDVEZvbnRT
eW1ib2xpY1RyYWl0cyBmb250VHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMobV9wbGF0
Zm9ybURhdGEuZm9udCgpKTsKLSAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihtX3BsYXRmb3Jt
RGF0YS5mb250KCkpKTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRD
b3B5Rm9udERlc2NyaXB0b3IobV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7CiAgICAgUmV0YWluUHRy
PENURm9udFJlZj4gc2NhbGVkRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNj
cmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiAKICAgICByZXR1
cm4gY3JlYXRlRGVyaXZhdGl2ZUZvbnQoc2NhbGVkRm9udC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9y
bURhdGEub3JpZW50YXRpb24oKSwgZm9udFRyYWl0cywgbV9wbGF0Zm9ybURhdGEuc3ludGhldGlj
Qm9sZCgpLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNPYmxpcXVlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IGI5MGQ5YzM0MzdjM2ExZjUxMjUxNTkzZTc3NGQxYWE5MTJk
ODk2MzkuLmEyMmU4MjI2OWRiZDRjMDMzNWU1ZWZiMzNmNzkzNTMyMWRlZDIyNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRm9udFBsYXRmb3JtRGF0
YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYKICAgICBpbnQgc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpOwogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZvbnREZXNjcmlwdGlvbi5v
cmllbnRhdGlvbigpOwogICAgIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50ID0gZm9udERl
c2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOwotICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQg
PSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2RpZmllZEZvbnREZXNj
cmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihD
VEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQo
KSwgc2l6ZSwgbnVsbHB0cikpOwogICAgIGZvbnQgPSBwcmVwYXJlUGxhdGZvcm1Gb250KGZvbnQu
Z2V0KCksIGZvbnREZXNjcmlwdGlvbiwgJmZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJp
bGl0aWVzKTsKICAgICBBU1NFUlQoZm9udCk7CiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEo
Zm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50
LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA1OTg4OTQxYWE2ZDUyNTg1YjljZmY1NGM5MmZl
ODFmYTQxZDlkNzBlLi5mOTA4M2Y0OGZhYTI2ZWZjNGNlZmJlYzBiZmM4NmYyOGIyNTUwYzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEyODMsNDEgKzEy
ODMsNDYgQEAgYXV0byBSZW5kZXJUaGVtZTo6Y29sb3JDYWNoZShPcHRpb25TZXQ8U3R5bGVDb2xv
cjo6T3B0aW9ucz4gb3B0aW9ucykgY29uc3QgLT4gQ28KIAogRm9udENhc2NhZGVEZXNjcmlwdGlv
biYgUmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5
c3RlbUZvbnRJRCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2Nh
ZGVEZXNjcmlwdGlvbj4gY2FwdGlvbjsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENh
c2NhZGVEZXNjcmlwdGlvbj4gaWNvbjsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENh
c2NhZGVEZXNjcmlwdGlvbj4gbWVudTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENh
c2NhZGVEZXNjcmlwdGlvbj4gbWVzc2FnZUJveDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc21hbGxDYXB0aW9uOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzdGF0dXNCYXI7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHdlYmtpdE1pbmlDb250cm9sOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB3ZWJraXRT
bWFsbENvbnRyb2w7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24+IHdlYmtpdENvbnRyb2w7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IGRlZmF1bHREZXNjcmlwdGlvbjsKKyNkZWZpbmUgTnVtU3lzdGVtRm9u
dHMgMTAKKyAgICBzdHJ1Y3QgRm9udERlc2NyaXB0aW9ucyA6IHByaXZhdGUgc3RkOjphcnJheTxG
b250Q2FzY2FkZURlc2NyaXB0aW9uLCBOdW1TeXN0ZW1Gb250cz4geworICAgICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uJiBjYXB0aW9uKCkgICAgICAgICAgICB7IHJldHVybiAoKnRoaXMpWzBd
OyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGljb24oKSAgICAgICAgICAgICAg
IHsgcmV0dXJuICgqdGhpcylbMV07IH0KKyAgICAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYg
bWVudSgpICAgICAgICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsyXTsgfQorICAgICAgICBGb250
Q2FzY2FkZURlc2NyaXB0aW9uJiBtZXNzYWdlQm94KCkgICAgICAgICB7IHJldHVybiAoKnRoaXMp
WzNdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHNtYWxsQ2FwdGlvbigpICAg
ICAgIHsgcmV0dXJuICgqdGhpcylbNF07IH0KKyAgICAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlv
biYgc3RhdHVzQmFyKCkgICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVs1XTsgfQorICAgICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uJiB3ZWJraXRNaW5pQ29udHJvbCgpICB7IHJldHVybiAoKnRo
aXMpWzZdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHdlYmtpdFNtYWxsQ29u
dHJvbCgpIHsgcmV0dXJuICgqdGhpcylbN107IH0KKyAgICAgICAgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiYgd2Via2l0Q29udHJvbCgpICAgICAgeyByZXR1cm4gKCp0aGlzKVs4XTsgfQorICAgICAg
ICBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZWZhdWx0RGVzY3JpcHRpb24oKSB7IHJldHVybiAo
KnRoaXMpWzldOyB9CisgICAgICAgIHN0YXRpY19hc3NlcnQoTnVtU3lzdGVtRm9udHMgPT0gMTAp
OworICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbnM+IGZv
bnRzRGVzY3JpcHRpb25zOwogCiAgICAgc3dpdGNoIChzeXN0ZW1Gb250SUQpIHsKICAgICBjYXNl
IENTU1ZhbHVlQ2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIGNhcHRpb247CisgICAgICAgIHJldHVy
biBmb250c0Rlc2NyaXB0aW9ucy5nZXQoKS5jYXB0aW9uKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUlj
b246Ci0gICAgICAgIHJldHVybiBpY29uOworICAgICAgICByZXR1cm4gZm9udHNEZXNjcmlwdGlv
bnMuZ2V0KCkuaWNvbigpOwogICAgIGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICByZXR1cm4g
bWVudTsKKyAgICAgICAgcmV0dXJuIGZvbnRzRGVzY3JpcHRpb25zLmdldCgpLm1lbnUoKTsKICAg
ICBjYXNlIENTU1ZhbHVlTWVzc2FnZUJveDoKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2VCb3g7Cisg
ICAgICAgIHJldHVybiBmb250c0Rlc2NyaXB0aW9ucy5nZXQoKS5tZXNzYWdlQm94KCk7CiAgICAg
Y2FzZSBDU1NWYWx1ZVNtYWxsQ2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIHNtYWxsQ2FwdGlvbjsK
KyAgICAgICAgcmV0dXJuIGZvbnRzRGVzY3JpcHRpb25zLmdldCgpLnNtYWxsQ2FwdGlvbigpOwog
ICAgIGNhc2UgQ1NTVmFsdWVTdGF0dXNCYXI6Ci0gICAgICAgIHJldHVybiBzdGF0dXNCYXI7Cisg
ICAgICAgIHJldHVybiBmb250c0Rlc2NyaXB0aW9ucy5nZXQoKS5zdGF0dXNCYXIoKTsKICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0TWluaUNvbnRyb2w6Ci0gICAgICAgIHJldHVybiB3ZWJraXRNaW5p
Q29udHJvbDsKKyAgICAgICAgcmV0dXJuIGZvbnRzRGVzY3JpcHRpb25zLmdldCgpLndlYmtpdE1p
bmlDb250cm9sKCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbDoKLSAgICAg
ICAgcmV0dXJuIHdlYmtpdFNtYWxsQ29udHJvbDsKKyAgICAgICAgcmV0dXJuIGZvbnRzRGVzY3Jp
cHRpb25zLmdldCgpLndlYmtpdFNtYWxsQ29udHJvbCgpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJr
aXRDb250cm9sOgotICAgICAgICByZXR1cm4gd2Via2l0Q29udHJvbDsKKyAgICAgICAgcmV0dXJu
IGZvbnRzRGVzY3JpcHRpb25zLmdldCgpLndlYmtpdENvbnRyb2woKTsKICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKLSAgICAgICAgcmV0dXJuIGRlZmF1bHREZXNjcmlwdGlvbjsKKyAgICAgICAgcmV0
dXJuIGZvbnRzRGVzY3JpcHRpb25zLmdldCgpLmRlZmF1bHREZXNjcmlwdGlvbigpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZGVm
YXVsdERlc2NyaXB0aW9uOworICAgICAgICByZXR1cm4gZm9udHNEZXNjcmlwdGlvbnMuZ2V0KCku
ZGVmYXVsdERlc2NyaXB0aW9uKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IDljMjJmOGYyZDBhOGVkZmQxYWUwYTg2MmZm
MzYyNWQzNmZhODZmYmUuLjM3ZWZmZmEzYjAwZGYzNjYzMjIxMzQzMzA4MjRlYWU1N2FjZjJmMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0x
NzgsODEgKzE3OCw3NyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDb2NvYTo6bWVkaWFDb250cm9sc0Zv
cm1hdHRlZFN0cmluZ0ZvckR1cmF0aW9uKGNvbnN0IGRvdWJsZSBkdQogCiBGb250Q2FzY2FkZURl
c2NyaXB0aW9uJiBSZW5kZXJUaGVtZUNvY29hOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24o
Q1NTVmFsdWVJRCB2YWx1ZUlEKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxG
b250Q2FzY2FkZURlc2NyaXB0aW9uPiBzeXN0ZW1Gb250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBoZWFkbGluZUZvbnQ7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGJvZHlGb250OwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzdWJoZWFkbGluZUZvbnQ7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGZvb3Ru
b3RlRm9udDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlv
bj4gY2FwdGlvbjFGb250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURl
c2NyaXB0aW9uPiBjYXB0aW9uMkZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24+IHNob3J0SGVhZGxpbmVGb250OwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEJvZHlGb250OwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydFN1YmhlYWRsaW5l
Rm9udDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4g
c2hvcnRGb290bm90ZUZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24+IHNob3J0Q2FwdGlvbjFGb250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMEZvbnQ7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMUZvbnQ7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMkZvbnQ7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxl
M0ZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IHRpdGxlNEZvbnQ7Ci0KLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgdXNlclRleHRTaXplID0gY29u
dGVudFNpemVDYXRlZ29yeSgpOwotCi0gICAgaWYgKHVzZXJUZXh0U2l6ZSAhPSBjb250ZW50U2l6
ZUNhdGVnb3J5KCkpIHsKLSAgICAgICAgdXNlclRleHRTaXplID0gY29udGVudFNpemVDYXRlZ29y
eSgpOworI2RlZmluZSBOdW1TeXN0ZW1Gb250cyAxNworICAgIHN0cnVjdCBGb250RGVzY3JpcHRp
b25zIDogcHJpdmF0ZSBzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24sIE51bVN5c3Rl
bUZvbnRzPiB7CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGhlYWRsaW5lKCkgICAg
ICAgICB7IHJldHVybiAoKnRoaXMpWyAwXTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBib2R5KCkgICAgICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsgMV07IH0KKyAgICAgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgc3ViaGVhZGxpbmUoKSAgICAgIHsgcmV0dXJuICgqdGhp
cylbIDJdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvb3Rub3RlKCkgICAg
ICAgICB7IHJldHVybiAoKnRoaXMpWyAzXTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBjYXB0aW9uMSgpICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsgNF07IH0KKyAgICAgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgY2FwdGlvbjIoKSAgICAgICAgIHsgcmV0dXJuICgqdGhp
cylbIDVdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHNob3J0SGVhZGxpbmUo
KSAgICB7IHJldHVybiAoKnRoaXMpWyA2XTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBzaG9ydEJvZHkoKSAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsgN107IH0KKyAgICAgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgc2hvcnRTdWJoZWFkbGluZSgpIHsgcmV0dXJuICgqdGhp
cylbIDhdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHNob3J0Rm9vdG5vdGUo
KSAgICB7IHJldHVybiAoKnRoaXMpWyA5XTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBzaG9ydENhcHRpb24xKCkgICAgeyByZXR1cm4gKCp0aGlzKVsxMF07IH0KKyAgICAgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgdGFsbEJvZHkoKSAgICAgICAgIHsgcmV0dXJuICgqdGhp
cylbMTFdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHRpdGxlMCgpICAgICAg
ICAgICB7IHJldHVybiAoKnRoaXMpWzEyXTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiB0aXRsZTEoKSAgICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsxM107IH0KKyAgICAgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgdGl0bGUyKCkgICAgICAgICAgIHsgcmV0dXJuICgqdGhp
cylbMTRdOyB9CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHRpdGxlMygpICAgICAg
ICAgICB7IHJldHVybiAoKnRoaXMpWzE1XTsgfQorICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiB0aXRsZTQoKSAgICAgICAgICAgeyByZXR1cm4gKCp0aGlzKVsxNl07IH0KKyAgICAgICAg
c3RhdGljX2Fzc2VydChOdW1TeXN0ZW1Gb250cyA9PSAxNyk7CisKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICBib29sIGFsbEFyZU5vbkFic29sdXRlU2l6ZSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgZGVzY3JpcHRpb24gOiAoKnRoaXMpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGb250RGVzY3JpcHRpb25zPiBmb250RGVzY3JpcHRpb25zOwogCi0gICAgICAgIGhlYWRsaW5l
Rm9udC5nZXQoKS5zZXRJc0Fic29sdXRlU2l6ZShmYWxzZSk7Ci0gICAgICAgIGJvZHlGb250Lmdl
dCgpLnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgc3ViaGVhZGxpbmVGb250Lmdl
dCgpLnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgZm9vdG5vdGVGb250LmdldCgp
LnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgY2FwdGlvbjFGb250LmdldCgpLnNl
dElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgY2FwdGlvbjJGb250LmdldCgpLnNldElz
QWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgc2hvcnRIZWFkbGluZUZvbnQuZ2V0KCkuc2V0
SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAgICAgICBzaG9ydEJvZHlGb250LmdldCgpLnNldElz
QWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgc2hvcnRTdWJoZWFkbGluZUZvbnQuZ2V0KCku
c2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAgICAgICBzaG9ydEZvb3Rub3RlRm9udC5nZXQo
KS5zZXRJc0Fic29sdXRlU2l6ZShmYWxzZSk7Ci0gICAgICAgIHNob3J0Q2FwdGlvbjFGb250Lmdl
dCgpLnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICAgICAgdGFsbEJvZHlGb250LmdldCgp
LnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAgICB9CisgICAgQVNTRVJUKGZvbnREZXNjcmlw
dGlvbnMuZ2V0KCkuYWxsQXJlTm9uQWJzb2x1dGVTaXplKCkpOwogCiAgICAgc3dpdGNoICh2YWx1
ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtSGVhZGxpbmU6Ci0gICAgICAgIHJl
dHVybiBoZWFkbGluZUZvbnQ7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgp
LmhlYWRsaW5lKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQm9keToKLSAgICAgICAg
cmV0dXJuIGJvZHlGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKS5i
b2R5KCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUwOgotICAgICAgICByZXR1
cm4gdGl0bGUwRm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkudGl0
bGUwKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUxOgotICAgICAgICByZXR1
cm4gdGl0bGUxRm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkudGl0
bGUxKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUyOgotICAgICAgICByZXR1
cm4gdGl0bGUyRm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkudGl0
bGUyKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgotICAgICAgICByZXR1
cm4gdGl0bGUzRm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkudGl0
bGUzKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgotICAgICAgICByZXR1
cm4gdGl0bGU0Rm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkudGl0
bGU0KCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU3ViaGVhZGxpbmU6Ci0gICAgICAg
IHJldHVybiBzdWJoZWFkbGluZUZvbnQ7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25z
LmdldCgpLnN1YmhlYWRsaW5lKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRm9vdG5v
dGU6Ci0gICAgICAgIHJldHVybiBmb290bm90ZUZvbnQ7CisgICAgICAgIHJldHVybiBmb250RGVz
Y3JpcHRpb25zLmdldCgpLmZvb3Rub3RlKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
Q2FwdGlvbjE6Ci0gICAgICAgIHJldHVybiBjYXB0aW9uMUZvbnQ7CisgICAgICAgIHJldHVybiBm
b250RGVzY3JpcHRpb25zLmdldCgpLmNhcHRpb24xKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxl
U3lzdGVtQ2FwdGlvbjI6Ci0gICAgICAgIHJldHVybiBjYXB0aW9uMkZvbnQ7Ci0gICAgICAgIC8v
IFNob3J0IHZlcnNpb24uCisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpLmNh
cHRpb24yKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRIZWFkbGluZToKLSAg
ICAgICAgcmV0dXJuIHNob3J0SGVhZGxpbmVGb250OworICAgICAgICByZXR1cm4gZm9udERlc2Ny
aXB0aW9ucy5nZXQoKS5zaG9ydEhlYWRsaW5lKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lz
dGVtU2hvcnRCb2R5OgotICAgICAgICByZXR1cm4gc2hvcnRCb2R5Rm9udDsKKyAgICAgICAgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkuc2hvcnRCb2R5KCk7CiAgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtU2hvcnRTdWJoZWFkbGluZToKLSAgICAgICAgcmV0dXJuIHNob3J0U3ViaGVh
ZGxpbmVGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKS5zaG9ydFN1
YmhlYWRsaW5lKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRGb290bm90ZToK
LSAgICAgICAgcmV0dXJuIHNob3J0Rm9vdG5vdGVGb250OworICAgICAgICByZXR1cm4gZm9udERl
c2NyaXB0aW9ucy5nZXQoKS5zaG9ydEZvb3Rub3RlKCk7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxl
U3lzdGVtU2hvcnRDYXB0aW9uMToKLSAgICAgICAgcmV0dXJuIHNob3J0Q2FwdGlvbjFGb250Owot
ICAgICAgICAvLyBUYWxsIHZlcnNpb24uCisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25z
LmdldCgpLnNob3J0Q2FwdGlvbjEoKTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UYWxs
Qm9keToKLSAgICAgICAgcmV0dXJuIHRhbGxCb2R5Rm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnRE
ZXNjcmlwdGlvbnMuZ2V0KCkudGFsbEJvZHkoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gUmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbih2YWx1ZUlEKTsKICAg
ICB9CkBAIC0yNjUsNyArMjYxLDcgQEAgc3RhdGljIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUg
Y3NzV2VpZ2h0T2ZTeXN0ZW1Gb250KENURm9udFJlZiBmb250KQogICAgIGZsb2F0IHJlc3VsdCA9
IDA7CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShyZXN1bHRSZWYsIGtDRk51bWJlckZsb2F0VHlwZSwg
JnJlc3VsdCk7CiAgICAgLy8gVGhlc2UgbnVtYmVycyB3ZXJlIGV4cGVyaW1lbnRhbGx5IGdhdGhl
cmVkIGZyb20gd2VpZ2h0cyBvZiB0aGUgc3lzdGVtIGZvbnQuCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBmbG9hdCB3ZWlnaHRUaHJlc2hvbGRzW10gPSB7IC0wLjYsIC0wLjM2NSwgLTAuMTE1
LCAwLjEzMCwgMC4yMzUsIDAuMzUwLCAwLjUsIDAuNyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
ZmxvYXQgd2VpZ2h0VGhyZXNob2xkc1tdID0geyAtMC42LCAtMC4zNjUsIC0wLjExNSwgMC4xMzAs
IDAuMjM1LCAwLjM1MCwgMC41LCAwLjcgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSCh3ZWlnaHRUaHJlc2hvbGRzKTsgKytpKSB7CiAgICAgICAgIGlmIChy
ZXN1bHQgPCB3ZWlnaHRUaHJlc2hvbGRzW2ldKQogICAgICAgICAgICAgcmV0dXJuIEZvbnRTZWxl
Y3Rpb25WYWx1ZSgoc3RhdGljX2Nhc3Q8aW50PihpKSArIDEpICogMTAwKTsKQEAgLTQwOSw3ICs0
MDUsNyBAQCB2b2lkIFJlbmRlclRoZW1lQ29jb2E6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbihDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbgogICAgICAgICBzdHlsZSA9IHRleHRTdHls
ZTsKIAogICAgIEFTU0VSVChmb250RGVzY3JpcHRvcik7Ci0gICAgUmV0YWluUHRyPENURm9udFJl
Zj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNj
cmlwdG9yLmdldCgpLCAwLCBudWxscHRyKSk7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZv
bnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0KCksIDAsIG51bGxw
dHIpKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShzdHlsZSk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoQ1RGb250R2V0U2l6ZShmb250LmdldCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNmYwZjQ4N2M0NzNmNTI0Yzlj
YjgyOTJiYzgzOTI3NGU1MTYwYzYyNi4uZmE3OTgyYTFkMjQ5MzkyZjVhMjIxMzcwNjg3NjFiYzI1
ZDYwYWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpA
QCAtMTM5OSw3ICsxMzk5LDcgQEAgY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50V3JhcHBpbmdUZXh0
TWF4aW11bUxpbmVDb3VudCA9IDI7CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRh
Y2htZW50QWN0aW9uRm9udCgpCiB7Ci0gICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
IGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRT
dHlsZShrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEZvb3Rub3RlLCBSZW5kZXJUaGVtZUlPUzo6c2lu
Z2xldG9uKCkuY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CisgICAgYXV0byBmb250RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUoa0NUVUlG
b250VGV4dFN0eWxlU2hvcnRGb290bm90ZSwgUmVuZGVyVGhlbWVJT1M6OnNpbmdsZXRvbigpLmNv
bnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9y
UmVmPiBlbXBoYXNpemVkRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JD
cmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCksCiAgICAgICAgIChD
RkRpY3Rpb25hcnlSZWYpQHsKICAgICAgICAgICAgIChpZClrQ1RGb250RGVzY3JpcHRvclRleHRT
dHlsZUF0dHJpYnV0ZTogKGlkKWtDVEZvbnREZXNjcmlwdG9yVGV4dFN0eWxlRW1waGFzaXplZApA
QCAtMTQxNCw3ICsxNDE0LDcgQEAgc3RhdGljIFVJQ29sb3IgKmF0dGFjaG1lbnRBY3Rpb25Db2xv
cihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogCiBzdGF0aWMgUmV0YWluUHRy
PENURm9udFJlZj4gYXR0YWNobWVudFRpdGxlRm9udCgpCiB7Ci0gICAgUmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+IGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZShrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydENhcHRpb24xLCBSZW5k
ZXJUaGVtZUlPUzo6c2luZ2xldG9uKCkuY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CisgICAg
YXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhU
ZXh0U3R5bGUoa0NUVUlGb250VGV4dFN0eWxlU2hvcnRDYXB0aW9uMSwgUmVuZGVyVGhlbWVJT1M6
OnNpbmdsZXRvbigpLmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgIHJldHVybiBhZG9w
dENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwg
MCwgbnVsbHB0cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggN2I0Y2UyMjgwODk3ZTJkZjFiOWRjNDQxYjZmNzYwYzUyNTRmOWU4Mi4uNjNh
MWM4OWU4OGYwOTc4ZTFiZjE5YzFmODZjNDI1YTQwOTU0ZGNiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjU3MSw3ICsyNTcxLDcgQEAgdm9pZCBB
dHRhY2htZW50TGF5b3V0OjphZGRUaXRsZUxpbmUoQ1RMaW5lUmVmIGxpbmUsIENHRmxvYXQmIHlP
ZmZzZXQsIFZlY3RvcjxDR1AKIHZvaWQgQXR0YWNobWVudExheW91dDo6bGF5T3V0VGl0bGUoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIHsKICAgICBDRlN0cmluZ1JlZiBsYW5n
dWFnZSA9IDA7IC8vIEJ5IG5vdCBzcGVjaWZ5aW5nIGEgbGFuZ3VhZ2Ugd2UgdXNlIHRoZSBzeXN0
ZW0gbGFuZ3VhZ2UuCi0gICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RG
b250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3RlbSwgYXR0YWNobWVu
dFRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZv
bnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250U3lzdGVtLCBhdHRhY2htZW50
VGl0bGVGb250U2l6ZSwgbGFuZ3VhZ2UpKTsKICAgICBiYXNlbGluZSA9IENHUm91bmQoYXR0YWNo
bWVudEljb25CYWNrZ3JvdW5kU2l6ZSArIGF0dGFjaG1lbnRJY29uVG9UaXRsZU1hcmdpbiArIENU
Rm9udEdldEFzY2VudChmb250LmdldCgpKSk7CiAKICAgICBTdHJpbmcgdGl0bGUgPSBhdHRhY2ht
ZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpOwpAQCAt
MjYzNiw3ICsyNjM2LDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRTdWJ0aXRsZShj
b25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogCiAgICAgQ29sb3Igc3VidGl0bGVD
b2xvciA9IGF0dGFjaG1lbnQuc3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihhdHRh
Y2htZW50U3VidGl0bGVUZXh0Q29sb3IpOwogICAgIENGU3RyaW5nUmVmIGxhbmd1YWdlID0gMDsg
Ly8gQnkgbm90IHNwZWNpZnlpbmcgYSBsYW5ndWFnZSB3ZSB1c2UgdGhlIHN5c3RlbSBsYW5ndWFn
ZS4KLSAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVV
SUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250U3lzdGVtLCBhdHRhY2htZW50U3VidGl0bGVG
b250U2l6ZSwgbGFuZ3VhZ2UpKTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVVJRm9udEZvckxhbmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIGF0dGFjaG1lbnRTdWJ0aXRs
ZUZvbnRTaXplLCBsYW5ndWFnZSkpOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMg
PSBAewogICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9udEF0dHJpYnV0ZU5hbWU6IChfX2JyaWRn
ZSBpZClmb250LmdldCgpLAogICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKHN1YnRpdGxl
Q29sb3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408304</attachid>
            <date>2020-09-08 20:07:29 -0700</date>
            <delta_ts>2020-09-10 16:59:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216293-20200908200728.patch</filename>
            <type>text/plain</type>
            <size>16820</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ1NjZiYjE1OWQ0N2Qy
ZWQzMGNkOWI1YjNhMWQ1MTgxMmQ3M2ZhOS4uYTc5ODY0ODM2NzQ5MjdlMmIxOTU5OGE2MGZhNjEy
ZTliYTA0OTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTA5LTA4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU21hbGwgY2xl
YW51cCBpbiBSZW5kZXJUaGVtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU2VlIHRoZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMzMzIgZm9yIGJhY2tncm91bmQuCisgICAgICAgIE1vcmUgY29t
bWVudHMgYmVsb3cuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8g
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1DcmVhdGVTY2FsZWRG
b250IGNvbnN0KTogVXNlIGF1dG8gaW5zdGVhZCBvZiBSZXRhaW5QdHIuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bWF0Y2hTeXN0ZW1Gb250VXNlKTogVXNlIHN0ZDo6YmluYXJ5X3NlYXJjaCBpbnN0
ZWFkIG9mIHN0ZDo6ZmluZCwKKyAgICAgICAgYmVjYXVzZSBpdCdzIGZhc3RlciBhbmQgd2UgZXhw
ZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHZlcnkgb2Z0ZW4uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6IFVzZSBh
dXRvIGluc3RlYWQgb2YgUmV0YWluUHRyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERl
c2NyaXB0aW9uIGNvbnN0KTogTW92ZSB0aGUgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGludG8g
YW4gYXJyYXkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRp
b24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1dlaWdodE9mU3lzdGVtRm9u
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjp1cGRhdGVDYWNoZWRTeXN0
ZW1Gb250RGVzY3JpcHRpb24gY29uc3QpOiBVc2UgYXV0bworICAgICAgICBpbnN0ZWFkIG9mIFJl
dGFpblB0ci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjphdHRhY2htZW50VGl0bGVGb250KTogRGl0dG8uCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudExheW91
dDo6bGF5T3V0VGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRMYXlv
dXQ6OmxheU91dFN1YnRpdGxlKTogRGl0dG8uCisKIDIwMjAtMDktMDggIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIG5vbi1zdGFuZGFyZCBuYW1lIC8gdW5p
dHMgYXR0cmlidXRlcyBmcm9tIEF1ZGlvUGFyYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCBmYmUzODQ0N2ZjYTg0N2M1
ZmM1MGNkMmNjYTJiNDViN2FiNTA1ODY5Li5lODliZTFkNGYzOTUyMzI1MzMwNTY0NTBmN2JjODJh
NDkzMjEzYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tCkBAIC01NTYsNyArNTU2LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6
OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
Y2FsZUYKIHsKICAgICBmbG9hdCBzaXplID0gbV9wbGF0Zm9ybURhdGEuc2l6ZSgpICogc2NhbGVG
YWN0b3I7CiAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgZm9udFRyYWl0cyA9IENURm9udEdldFN5
bWJvbGljVHJhaXRzKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSk7Ci0gICAgUmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+IGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERl
c2NyaXB0b3IobV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7CisgICAgYXV0byBmb250RGVzY3JpcHRv
ciA9IGFkb3B0Q0YoQ1RGb250Q29weUZvbnREZXNjcmlwdG9yKG1fcGxhdGZvcm1EYXRhLmZvbnQo
KSkpOwogICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHNjYWxlZEZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVs
bHB0cikpOwogCiAgICAgcmV0dXJuIGNyZWF0ZURlcml2YXRpdmVGb250KHNjYWxlZEZvbnQuZ2V0
KCksIHNpemUsIG1fcGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCksIGZvbnRUcmFpdHMsIG1fcGxh
dGZvcm1EYXRhLnN5bnRoZXRpY0JvbGQoKSwgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljT2JsaXF1
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCBkNjA0ZWM4M2EwODAzNjU5
MjkwNzVjNWU0MzU3N2RhM2IyMTllYTQ1Li5hNzZkMDFhZjQwMDlkZGZkZTQ0OWNhOWRiZGExMzNi
ZDY0YjZmYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCkBAIC03OCw5ICs3OCwx
NyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN5c3RlbUZvbnRLaW5kPiBtYXRjaFN5c3RlbUZv
bnRVc2UoY29uc3QgQXRvbVN0cmluZyYgc3RyaQogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVU
aXRsZTAsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlNCwKICAgICB9OwotICAgIAot
ICAgIHN0YXRpYyBhdXRvIHN0cmluZ3MgeyBtYWtlTmV2ZXJEZXN0cm95ZWQoY29udmVydEFycmF5
PEF0b21TdHJpbmc+KHN0eWxlcykpIH07Ci0gICAgaWYgKHN0ZDo6ZmluZChzdHJpbmdzLmdldCgp
LmJlZ2luKCksIHN0cmluZ3MuZ2V0KCkuZW5kKCksIHN0cmluZykgIT0gc3RyaW5ncy5nZXQoKS5l
bmQoKSkKKworICAgIGF1dG8gYXRvbVN0cmluZ0NvbXBhcmlzb24gPSBbXShjb25zdCBBdG9tU3Ry
aW5nJiBsaHMsIGNvbnN0IEF0b21TdHJpbmcmIHJocykgeworICAgICAgICByZXR1cm4gbGhzLmlt
cGwoKSA8IHJocy5pbXBsKCk7CisgICAgfTsKKyAgICBzdGF0aWMgYXV0byBzdHJpbmdzIHsgbWFr
ZU5ldmVyRGVzdHJveWVkKFsmYXRvbVN0cmluZ0NvbXBhcmlzb25dIHsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBjb252ZXJ0QXJyYXk8QXRvbVN0cmluZz4oc3R5bGVzKTsKKyAgICAgICAgc3RkOjpz
b3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGF0b21TdHJpbmdDb21wYXJpc29uKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KCkpIH07CisgICAgYXV0byByZXN1bHQgPSBz
dGQ6OmJpbmFyeV9zZWFyY2goc3RyaW5ncy5nZXQoKS5iZWdpbigpLCBzdHJpbmdzLmdldCgpLmVu
ZCgpLCBzdHJpbmcsIGF0b21TdHJpbmdDb21wYXJpc29uKTsKKyAgICBpZiAocmVzdWx0KQogICAg
ICAgICByZXR1cm4gU3lzdGVtRm9udEtpbmQ6OlRleHRTdHlsZTsKIAogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYjkwZDljMzQzN2Mz
YTFmNTEyNTE1OTNlNzc0ZDFhYTkxMmQ4OTYzOS4uYTIyZTgyMjY5ZGJkNGMwMzM1ZTVlZmIzM2Y3
OTM1MzIxZGVkMjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIGludCBzaXplID0gZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCk7CiAgICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0
aW9uID0gZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCk7CiAgICAgRm9udFdpZHRoVmFyaWFu
dCB3aWR0aFZhcmlhbnQgPSBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCk7Ci0gICAgUmV0
YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNj
cmlwdG9yKG1vZGlmaWVkRm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsKKyAg
ICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiAgICAgZm9udCA9IHBy
ZXBhcmVQbGF0Zm9ybUZvbnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCAmZm9udEZhY2VG
ZWF0dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMpOwogICAgIEFTU0VSVChmb250KTsKICAgICBy
ZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9y
aWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDU5ODg5
NDFhYTZkNTI1ODViOWNmZjU0YzkyZmU4MWZhNDFkOWQ3MGUuLjFjY2UxNWIzZTg3YjAwODZhYjJm
MTViNmI0NmE4ZTg2ZjM0NDdlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcApAQCAtMTI4Myw0MSArMTI4MywzMiBAQCBhdXRvIFJlbmRlclRoZW1lOjpjb2xvckNh
Y2hlKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zKSBjb25zdCAtPiBDbwog
CiBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERl
c2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVtRm9udElEKSBjb25zdAogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjYXB0aW9uOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBpY29uOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBtZW51OwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBtZXNzYWdlQm94OwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzbWFsbENhcHRp
b247Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHN0
YXR1c0JhcjsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlv
bj4gd2Via2l0TWluaUNvbnRyb2w7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IHdlYmtpdFNtYWxsQ29udHJvbDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gd2Via2l0Q29udHJvbDsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gZGVmYXVsdERlc2NyaXB0aW9u
OworICAgIHN0YXRpYyBhdXRvIGZvbnREZXNjcmlwdGlvbnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8
c3RkOjphcnJheTxGb250Q2FzY2FkZURlc2NyaXB0aW9uLCAxMD4+KHsgfSk7CiAKICAgICBzd2l0
Y2ggKHN5c3RlbUZvbnRJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9uOgotICAgICAgICBy
ZXR1cm4gY2FwdGlvbjsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbMF07
CiAgICAgY2FzZSBDU1NWYWx1ZUljb246Ci0gICAgICAgIHJldHVybiBpY29uOworICAgICAgICBy
ZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKVsxXTsKICAgICBjYXNlIENTU1ZhbHVlTWVudToK
LSAgICAgICAgcmV0dXJuIG1lbnU7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdl
dCgpWzJdOwogICAgIGNhc2UgQ1NTVmFsdWVNZXNzYWdlQm94OgotICAgICAgICByZXR1cm4gbWVz
c2FnZUJveDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbM107CiAgICAg
Y2FzZSBDU1NWYWx1ZVNtYWxsQ2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIHNtYWxsQ2FwdGlvbjsK
KyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbNF07CiAgICAgY2FzZSBDU1NW
YWx1ZVN0YXR1c0JhcjoKLSAgICAgICAgcmV0dXJuIHN0YXR1c0JhcjsKKyAgICAgICAgcmV0dXJu
IGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbNV07CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbmlD
b250cm9sOgotICAgICAgICByZXR1cm4gd2Via2l0TWluaUNvbnRyb2w7CisgICAgICAgIHJldHVy
biBmb250RGVzY3JpcHRpb25zLmdldCgpWzZdOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFs
bENvbnRyb2w6Ci0gICAgICAgIHJldHVybiB3ZWJraXRTbWFsbENvbnRyb2w7CisgICAgICAgIHJl
dHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpWzddOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRD
b250cm9sOgotICAgICAgICByZXR1cm4gd2Via2l0Q29udHJvbDsKKyAgICAgICAgcmV0dXJuIGZv
bnREZXNjcmlwdGlvbnMuZ2V0KClbOF07CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAg
IHJldHVybiBkZWZhdWx0RGVzY3JpcHRpb247CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRp
b25zLmdldCgpWzldOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gZGVmYXVsdERlc2NyaXB0aW9uOworICAgICAgICByZXR1cm4gZm9u
dERlc2NyaXB0aW9ucy5nZXQoKVs5XTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggOWMyMmY4ZjJkMGE4ZWRmZDFhZTBhODYy
ZmYzNjI1ZDM2ZmE4NmZiZS4uNDMxNmQ1ODhjNDBlNDM3MTY0MDE5YjU4MGUyNmYwYjg5ZGM3NDRh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJI
VE1MSW5wdXRFbGVtZW50LmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0IDxhbGdv
cml0aG0+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CiAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xNzgsODEgKzE3OSw0NyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDb2NvYTo6
bWVkaWFDb250cm9sc0Zvcm1hdHRlZFN0cmluZ0ZvckR1cmF0aW9uKGNvbnN0IGRvdWJsZSBkdQog
CiBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5kZXJUaGVtZUNvY29hOjpjYWNoZWRTeXN0ZW1G
b250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2YWx1ZUlEKSBjb25zdAogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzeXN0ZW1Gb250OwotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBoZWFkbGluZUZvbnQ7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGJvZHlG
b250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBz
dWJoZWFkbGluZUZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24+IGZvb3Rub3RlRm9udDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENh
c2NhZGVEZXNjcmlwdGlvbj4gY2FwdGlvbjFGb250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjYXB0aW9uMkZvbnQ7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHNob3J0SGVhZGxpbmVGb250OwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEJvZHlG
b250OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBz
aG9ydFN1YmhlYWRsaW5lRm9udDsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2Nh
ZGVEZXNjcmlwdGlvbj4gc2hvcnRGb290bm90ZUZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHNob3J0Q2FwdGlvbjFGb250OwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMEZv
bnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRp
dGxlMUZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24+IHRpdGxlMkZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24+IHRpdGxlM0ZvbnQ7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IHRpdGxlNEZvbnQ7CisgICAgc3RhdGljIGF1dG8gZm9udERlc2NyaXB0
aW9ucyA9IG1ha2VOZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24sIDE3Pj4oeyB9KTsKIAotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiB1c2VyVGV4dFNpemUgPSBj
b250ZW50U2l6ZUNhdGVnb3J5KCk7Ci0KLSAgICBpZiAodXNlclRleHRTaXplICE9IGNvbnRlbnRT
aXplQ2F0ZWdvcnkoKSkgewotICAgICAgICB1c2VyVGV4dFNpemUgPSBjb250ZW50U2l6ZUNhdGVn
b3J5KCk7Ci0KLSAgICAgICAgaGVhZGxpbmVGb250LmdldCgpLnNldElzQWJzb2x1dGVTaXplKGZh
bHNlKTsKLSAgICAgICAgYm9keUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwot
ICAgICAgICBzdWJoZWFkbGluZUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwot
ICAgICAgICBmb290bm90ZUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAg
ICAgICBjYXB0aW9uMUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAgICAg
ICBjYXB0aW9uMkZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAgICAgICBz
aG9ydEhlYWRsaW5lRm9udC5nZXQoKS5zZXRJc0Fic29sdXRlU2l6ZShmYWxzZSk7Ci0gICAgICAg
IHNob3J0Qm9keUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAgICAgICBz
aG9ydFN1YmhlYWRsaW5lRm9udC5nZXQoKS5zZXRJc0Fic29sdXRlU2l6ZShmYWxzZSk7Ci0gICAg
ICAgIHNob3J0Rm9vdG5vdGVGb250LmdldCgpLnNldElzQWJzb2x1dGVTaXplKGZhbHNlKTsKLSAg
ICAgICAgc2hvcnRDYXB0aW9uMUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwot
ICAgICAgICB0YWxsQm9keUZvbnQuZ2V0KCkuc2V0SXNBYnNvbHV0ZVNpemUoZmFsc2UpOwotICAg
IH0KKyAgICBBU1NFUlQoc3RkOjphbGxfb2Yoc3RkOjpiZWdpbihmb250RGVzY3JpcHRpb25zLmdl
dCgpKSwgc3RkOjplbmQoZm9udERlc2NyaXB0aW9ucy5nZXQoKSksIFtdKGF1dG8mIGRlc2NyaXB0
aW9uKSB7CisgICAgICAgIHJldHVybiAhZGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKTsKKyAg
ICB9KSk7CiAKICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1IZWFkbGluZToKLSAgICAgICAgcmV0dXJuIGhlYWRsaW5lRm9udDsKKyAgICAgICAgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbMF07CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lz
dGVtQm9keToKLSAgICAgICAgcmV0dXJuIGJvZHlGb250OworICAgICAgICByZXR1cm4gZm9udERl
c2NyaXB0aW9ucy5nZXQoKVsxXTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6
Ci0gICAgICAgIHJldHVybiB0aXRsZTBGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0
aW9ucy5nZXQoKVsyXTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTE6Ci0gICAg
ICAgIHJldHVybiB0aXRsZTFGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5n
ZXQoKVszXTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTI6Ci0gICAgICAgIHJl
dHVybiB0aXRsZTJGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKVs0
XTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6Ci0gICAgICAgIHJldHVybiB0
aXRsZTNGb250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKVs1XTsKICAg
ICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTQ6Ci0gICAgICAgIHJldHVybiB0aXRsZTRG
b250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKVs2XTsKICAgICBjYXNl
IENTU1ZhbHVlQXBwbGVTeXN0ZW1TdWJoZWFkbGluZToKLSAgICAgICAgcmV0dXJuIHN1YmhlYWRs
aW5lRm9udDsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbN107CiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRm9vdG5vdGU6Ci0gICAgICAgIHJldHVybiBmb290bm90
ZUZvbnQ7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpWzhdOwogICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNhcHRpb24xOgotICAgICAgICByZXR1cm4gY2FwdGlvbjFG
b250OworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9ucy5nZXQoKVs5XTsKICAgICBjYXNl
IENTU1ZhbHVlQXBwbGVTeXN0ZW1DYXB0aW9uMjoKLSAgICAgICAgcmV0dXJuIGNhcHRpb24yRm9u
dDsKLSAgICAgICAgLy8gU2hvcnQgdmVyc2lvbi4KKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlw
dGlvbnMuZ2V0KClbMTBdOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0SGVhZGxp
bmU6Ci0gICAgICAgIHJldHVybiBzaG9ydEhlYWRsaW5lRm9udDsKKyAgICAgICAgcmV0dXJuIGZv
bnREZXNjcmlwdGlvbnMuZ2V0KClbMTFdOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNo
b3J0Qm9keToKLSAgICAgICAgcmV0dXJuIHNob3J0Qm9keUZvbnQ7CisgICAgICAgIHJldHVybiBm
b250RGVzY3JpcHRpb25zLmdldCgpWzEyXTsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1T
aG9ydFN1YmhlYWRsaW5lOgotICAgICAgICByZXR1cm4gc2hvcnRTdWJoZWFkbGluZUZvbnQ7Cisg
ICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpWzEzXTsKICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1TaG9ydEZvb3Rub3RlOgotICAgICAgICByZXR1cm4gc2hvcnRGb290bm90
ZUZvbnQ7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpWzE0XTsKICAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydENhcHRpb24xOgotICAgICAgICByZXR1cm4gc2hv
cnRDYXB0aW9uMUZvbnQ7Ci0gICAgICAgIC8vIFRhbGwgdmVyc2lvbi4KKyAgICAgICAgcmV0dXJu
IGZvbnREZXNjcmlwdGlvbnMuZ2V0KClbMTVdOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bVRhbGxCb2R5OgotICAgICAgICByZXR1cm4gdGFsbEJvZHlGb250OworICAgICAgICByZXR1cm4g
Zm9udERlc2NyaXB0aW9ucy5nZXQoKVsxNl07CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IFJlbmRlclRoZW1lOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24odmFsdWVJRCk7CiAgICAg
fQpAQCAtMjY1LDcgKzIzMiw3IEBAIHN0YXRpYyBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIGNz
c1dlaWdodE9mU3lzdGVtRm9udChDVEZvbnRSZWYgZm9udCkKICAgICBmbG9hdCByZXN1bHQgPSAw
OwogICAgIENGTnVtYmVyR2V0VmFsdWUocmVzdWx0UmVmLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZy
ZXN1bHQpOwogICAgIC8vIFRoZXNlIG51bWJlcnMgd2VyZSBleHBlcmltZW50YWxseSBnYXRoZXJl
ZCBmcm9tIHdlaWdodHMgb2YgdGhlIHN5c3RlbSBmb250LgotICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgZmxvYXQgd2VpZ2h0VGhyZXNob2xkc1tdID0geyAtMC42LCAtMC4zNjUsIC0wLjExNSwg
MC4xMzAsIDAuMjM1LCAwLjM1MCwgMC41LCAwLjcgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0IHdlaWdodFRocmVzaG9sZHNbXSA9IHsgLTAuNiwgLTAuMzY1LCAtMC4xMTUsIDAuMTMwLCAw
LjIzNSwgMC4zNTAsIDAuNSwgMC43IH07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgod2VpZ2h0VGhyZXNob2xkcyk7ICsraSkgewogICAgICAgICBpZiAocmVz
dWx0IDwgd2VpZ2h0VGhyZXNob2xkc1tpXSkKICAgICAgICAgICAgIHJldHVybiBGb250U2VsZWN0
aW9uVmFsdWUoKHN0YXRpY19jYXN0PGludD4oaSkgKyAxKSAqIDEwMCk7CkBAIC00MDksNyArMzc2
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNvY29hOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24oQ1NTVmFsdWVJRCB2YWx1ZUlELCBGb24KICAgICAgICAgc3R5bGUgPSB0ZXh0U3R5bGU7
CiAKICAgICBBU1NFUlQoZm9udERlc2NyaXB0b3IpOwotICAgIFJldGFpblB0cjxDVEZvbnRSZWY+
IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3Jp
cHRvci5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGF1dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250
Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCAwLCBudWxscHRy
KSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOwogICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoc3R5bGUpOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRTcGVjaWZpZWRTaXplKENURm9udEdldFNpemUoZm9udC5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGNmMjQ3OWRkOWFlMzAxN2QxMmUw
NWE1ZTdlZTViMTMwYTMzNjc2NjUuLjFjOThkOWRlNWEwMzQxZjNjMWM5ZWJiYTg1OGQ5ZTBjMjA4
YjQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTE0MTksNyArMTQxOSw3IEBAIHN0YXRpYyBVSUNvbG9yICphdHRhY2htZW50QWN0aW9uQ29sb3Io
Y29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIAogc3RhdGljIFJldGFpblB0cjxD
VEZvbnRSZWY+IGF0dGFjaG1lbnRUaXRsZUZvbnQoKQogewotICAgIFJldGFpblB0cjxDVEZvbnRE
ZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZVdpdGhUZXh0U3R5bGUoa0NUVUlGb250VGV4dFN0eWxlU2hvcnRDYXB0aW9uMSwgUmVuZGVy
VGhlbWVJT1M6OnNpbmdsZXRvbigpLmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOworICAgIGF1
dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKGtDVFVJRm9udFRleHRTdHlsZVNob3J0Q2FwdGlvbjEsIFJlbmRlclRoZW1lSU9TOjpz
aW5nbGV0b24oKS5jb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICByZXR1cm4gYWRvcHRD
RihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0KCksIDAs
IG51bGxwdHIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCmluZGV4IGQzZjQ5NzE4YmNkYjdkZTIwNTBiMWZkYWE2YWMyMDQyYzdmOTE5ZDMuLjBhOGEx
MTAyYWYyNDAxMjhlY2YyMzM1OTA0NGQyYjA0NDFkNTg2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI1NTksNyArMjU1OSw3IEBAIHZvaWQgQXR0
YWNobWVudExheW91dDo6YWRkVGl0bGVMaW5lKENUTGluZVJlZiBsaW5lLCBDR0Zsb2F0JiB5T2Zm
c2V0LCBWZWN0b3I8Q0dQCiB2b2lkIEF0dGFjaG1lbnRMYXlvdXQ6OmxheU91dFRpdGxlKGNvbnN0
IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7CiAgICAgQ0ZTdHJpbmdSZWYgbGFuZ3Vh
Z2UgPSAwOyAvLyBCeSBub3Qgc3BlY2lmeWluZyBhIGxhbmd1YWdlIHdlIHVzZSB0aGUgc3lzdGVt
IGxhbmd1YWdlLgotICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVVJRm9udEZvckxhbmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIGF0dGFjaG1lbnRU
aXRsZUZvbnRTaXplLCBsYW5ndWFnZSkpOworICAgIGF1dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250
Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3RlbSwgYXR0YWNobWVudFRp
dGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CiAgICAgYmFzZWxpbmUgPSBDR1JvdW5kKGF0dGFjaG1l
bnRJY29uQmFja2dyb3VuZFNpemUgKyBhdHRhY2htZW50SWNvblRvVGl0bGVNYXJnaW4gKyBDVEZv
bnRHZXRBc2NlbnQoZm9udC5nZXQoKSkpOwogCiAgICAgU3RyaW5nIHRpdGxlID0gYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKTsKQEAgLTI2
MjQsNyArMjYyNCw3IEBAIHZvaWQgQXR0YWNobWVudExheW91dDo6bGF5T3V0U3VidGl0bGUoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIAogICAgIENvbG9yIHN1YnRpdGxlQ29s
b3IgPSBhdHRhY2htZW50LnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoYXR0YWNo
bWVudFN1YnRpdGxlVGV4dENvbG9yKTsKICAgICBDRlN0cmluZ1JlZiBsYW5ndWFnZSA9IDA7IC8v
IEJ5IG5vdCBzcGVjaWZ5aW5nIGEgbGFuZ3VhZ2Ugd2UgdXNlIHRoZSBzeXN0ZW0gbGFuZ3VhZ2Uu
Ci0gICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlG
b250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9u
dFNpemUsIGxhbmd1YWdlKSk7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVV
SUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250U3lzdGVtLCBhdHRhY2htZW50U3VidGl0bGVG
b250U2l6ZSwgbGFuZ3VhZ2UpKTsKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0g
QHsKICAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2Ug
aWQpZm9udC5nZXQoKSwKICAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihzdWJ0aXRsZUNv
bG9yKQo=
</data>
<flag name="review"
          id="423685"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>