<?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>116818</bug_id>
          
          <creation_ts>2013-05-27 03:36:58 -0700</creation_ts>
          <short_desc>Tighten FontGlyphs interfaces to take FontDescription instead of Font</short_desc>
          <delta_ts>2013-05-27 04:05:47 -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>Text</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>893945</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-27 03:36:58 -0700</bug_when>
    <thetext>Tighten typing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893950</commentid>
    <comment_count>1</comment_count>
      <attachid>202963</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-27 03:47:47 -0700</bug_when>
    <thetext>Created attachment 202963
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893951</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-27 03:48:59 -0700</bug_when>
    <thetext>Attachment 202963 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/platform/graphics/Font.h&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.h&apos;, u&apos;Source/WebCore/platform/graphics/FontFallbackList.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontFallbackList.h&apos;, u&apos;Source/WebCore/platform/graphics/blackberry/FontCacheBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/qt/FontCacheQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCacheWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wince/FontCacheWinCE.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FontFallbackList.h:74:  The parameter name &quot;font&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893953</commentid>
    <comment_count>3</comment_count>
      <attachid>202963</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-27 03:55:50 -0700</bug_when>
    <thetext>Comment on attachment 202963
patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This gives better understanding of what the actual inputs are.

I like this change a lot.

&gt; Source/WebCore/platform/graphics/FontFallbackList.h:107
&gt; -    mutable unsigned m_pitch : 3; // Pitch
&gt; +    mutable unsigned m_pitch : 3;

I think the &quot;Pitch&quot; here is to signify that the type of m_pitch is actually Pitch (the enum.)
Still pretty redundant, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893956</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-27 04:05:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/150747</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202963</attachid>
            <date>2013-05-27 03:47:47 -0700</date>
            <delta_ts>2013-05-27 03:55:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>fontdescription-tighten.patch</filename>
            <type>text/plain</type>
            <size>22058</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDc0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTA1LTI3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIEZvbnRHbHlwaHMg
aW50ZXJmYWNlcyB0byB0YWtlIEZvbnREZXNjcmlwdGlvbiBpbnN0ZWFkIG9mIEZvbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjgxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZ2l2ZXMgYmV0
dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGUgYWN0dWFsIGlucHV0cyBhcmUuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwcmltYXJ5Rm9udCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Ojpmb250RGF0YUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmlzRml4ZWRQaXRj
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoRm9udENhY2hlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRHbHlwaHM6OmRldGVybWluZVBpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6
OnJlYWxpemVGb250RGF0YUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmdseXBo
RGF0YUFuZFBhZ2VGb3JDaGFyYWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGYWxsYmFja0xpc3QuaDoKKyAgICAgICAgKEZvbnRHbHlwaHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEdseXBoczo6cHJpbWFyeUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRH
bHlwaHM6OmlzRml4ZWRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRHbHlwaHM6OnByaW1hcnlTaW1wbGVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OnNpbWlsYXJGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgCisgICAgICAgICAgICBEcm9wIGdl
dCogbmFtaW5nIGFuZCBtYWtlIHRoaXMgTWFjIG9ubHkgYXMgbm8gb3RoZXIgcGxhdGZvcm0gaGFz
IGl0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAx
My0wNS0yNyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
ZW5ndGhlbiB0eXBpbmcgb2YgZGV0YWNoaW5nIGFuIEVsZW1lbnQgZnJvbSBEb2N1bWVudCdzIDph
Y3RpdmUgY2hhaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTUwNzI3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNzUs
NyArMTI3NSw3IEBAIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWwxMXBlcnNpc3RlbmNlRXYKIF9f
Wk5LN1dlYkNvcmUxMENyZWRlbnRpYWw0dXNlckV2CiBfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFs
N2lzRW1wdHlFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDhwYXNzd29yZEV2Ci1fX1pOSzdX
ZWJDb3JlMTBGb250R2x5cGhzMTdyZWFsaXplRm9udERhdGFBdEVQS05TXzRGb250RWoKK19fWk5L
N1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0RVJLTlNfMTVGb250RGVzY3Jp
cHRpb25FagogX19aTks3V2ViQ29yZTEwUGx1Z2luRGF0YTE2c3VwcG9ydHNNaW1lVHlwZUVSS04z
V1RGNlN0cmluZ0VOUzBfMThBbGxvd2VkUGx1Z2luVHlwZXNFCiBfX1pOSzdXZWJDb3JlMTBSZW5k
ZXJUZXh0MTZsaW5lc0JvdW5kaW5nQm94RXYKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclRleHQ5Zmly
c3RSdW5YRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHJl
dmlzaW9uIDE1MDczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDE5ICszMjEsMTkgQEAgaW5saW5lIEZvbnQ6On5Gb250
KCkKIGlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udDo6cHJpbWFyeUZvbnQoKSBjb25z
dAogewogICAgIEFTU0VSVChtX2dseXBocyk7Ci0gICAgcmV0dXJuIG1fZ2x5cGhzLT5wcmltYXJ5
U2ltcGxlRm9udERhdGEodGhpcyk7CisgICAgcmV0dXJuIG1fZ2x5cGhzLT5wcmltYXJ5U2ltcGxl
Rm9udERhdGEobV9mb250RGVzY3JpcHRpb24pOwogfQogCiBpbmxpbmUgY29uc3QgRm9udERhdGEq
IEZvbnQ6OmZvbnREYXRhQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1f
Z2x5cGhzKTsKLSAgICByZXR1cm4gbV9nbHlwaHMtPnJlYWxpemVGb250RGF0YUF0KHRoaXMsIGlu
ZGV4KTsKKyAgICByZXR1cm4gbV9nbHlwaHMtPnJlYWxpemVGb250RGF0YUF0KG1fZm9udERlc2Ny
aXB0aW9uLCBpbmRleCk7CiB9CiAKIGlubGluZSBib29sIEZvbnQ6OmlzRml4ZWRQaXRjaCgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1fZ2x5cGhzKTsKLSAgICByZXR1cm4gbV9nbHlwaHMtPmlzRml4
ZWRQaXRjaCh0aGlzKTsKKyAgICByZXR1cm4gbV9nbHlwaHMtPmlzRml4ZWRQaXRjaChtX2ZvbnRE
ZXNjcmlwdGlvbik7CiB9CiAKIGlubGluZSBGb250U2VsZWN0b3IqIEZvbnQ6OmZvbnRTZWxlY3Rv
cigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHAJKHJldmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw0MiArNDc3LDQ0
IEBAIHNpemVfdCBGb250Q2FjaGU6OmluYWN0aXZlRm9udERhdGFDb3VudCgKICAgICByZXR1cm4g
MDsKIH0KIAotUGFzc1JlZlB0cjxGb250RGF0YT4gRm9udENhY2hlOjpnZXRGb250RGF0YShjb25z
dCBGb250JiBmb250LCBpbnQmIGZhbWlseUluZGV4LCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3Rv
cikKK1Bhc3NSZWZQdHI8Rm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgaW50JiBmYW1pbHlJbmRleCwgRm9udFNlbGVjdG9y
KiBmb250U2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGZhbWlseUluZGV4ICE9IGNBbGxGYW1pbGll
c1NjYW5uZWQpOwogICAgIFJlZlB0cjxGb250RGF0YT4gcmVzdWx0OwogCiAgICAgYm9vbCBpc0Zp
cnN0ID0gIWZhbWlseUluZGV4OwotICAgIGludCBmYW1pbHlDb3VudCA9IGZvbnQuZmFtaWx5Q291
bnQoKTsKKyAgICBpbnQgZmFtaWx5Q291bnQgPSBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOwog
ICAgIGZvciAoO2ZhbWlseUluZGV4IDwgZmFtaWx5Q291bnQgJiYgIXJlc3VsdDsgKytmYW1pbHlJ
bmRleCkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGZvbnQuZmFtaWx5
QXQoZmFtaWx5SW5kZXgpOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGRl
c2NyaXB0aW9uLmZhbWlseUF0KGZhbWlseUluZGV4KTsKICAgICAgICAgaWYgKGZhbWlseS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGZvbnRTZWxlY3RvcikK
LSAgICAgICAgICAgIHJlc3VsdCA9IGZvbnRTZWxlY3Rvci0+Z2V0Rm9udERhdGEoZm9udC5mb250
RGVzY3JpcHRpb24oKSwgZmFtaWx5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZvbnRTZWxlY3Rv
ci0+Z2V0Rm9udERhdGEoZGVzY3JpcHRpb24sIGZhbWlseSk7CiAgICAgICAgIGlmICghcmVzdWx0
KQotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0Q2FjaGVkRm9udERhdGEoZm9udC5mb250RGVzY3Jp
cHRpb24oKSwgZmFtaWx5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldENhY2hlZEZvbnREYXRh
KGRlc2NyaXB0aW9uLCBmYW1pbHkpOwogICAgIH0KICAgICBpZiAoZmFtaWx5SW5kZXggPT0gZmFt
aWx5Q291bnQpCiAgICAgICAgIGZhbWlseUluZGV4ID0gY0FsbEZhbWlsaWVzU2Nhbm5lZDsKIAor
I2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAvLyBXZSBkaWRu
J3QgZmluZCBhIGZvbnQuIFRyeSB0byBmaW5kIGEgc2ltaWxhciBmb250IHVzaW5nIG91ciBvd24g
c3BlY2lmaWMga25vd2xlZGdlIGFib3V0IG91ciBwbGF0Zm9ybS4KICAgICAgICAgLy8gRm9yIGV4
YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55IGZhbWlsaWVzIGNvbnRhaW5pbmcgdGhl
IHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRvIHRoZQogICAgICAgICAvLyBHZWV6YSBQ
cm8gZm9udC4KLSAgICAgICAgcmVzdWx0ID0gZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoZm9u
dCk7CisgICAgICAgIHJlc3VsdCA9IHNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9u
KTsKICAgICB9CisjZW5kaWYKIAogICAgIGlmICghcmVzdWx0ICYmIGlzRmlyc3QpIHsKICAgICAg
ICAgLy8gSWYgaXQncyB0aGUgcHJpbWFyeSBmb250IHRoYXQgd2UgY291bGRuJ3QgZmluZCwgd2Ug
dHJ5IHRoZSBmb2xsb3dpbmcuIEluIGFsbCBvdGhlciBjYXNlcywgd2Ugd2lsbAogICAgICAgICAv
LyBqdXN0IHVzZSBwZXItY2hhcmFjdGVyIHN5c3RlbSBmYWxsYmFjay4KICAgICAgICAgaWYgKGZv
bnRTZWxlY3RvcikgewogICAgICAgICAgICAgLy8gVHJ5IHRoZSB1c2VyJ3MgcHJlZmVycmVkIHN0
YW5kYXJkIGZvbnQuCi0gICAgICAgICAgICBpZiAoUmVmUHRyPEZvbnREYXRhPiBkYXRhID0gZm9u
dFNlbGVjdG9yLT5nZXRGb250RGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBzdGFuZGFyZEZh
bWlseSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyPEZvbnREYXRhPiBkYXRhID0gZm9udFNlbGVj
dG9yLT5nZXRGb250RGF0YShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1pbHkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgICAgICAvLyBTdGls
bCBubyByZXN1bHQuICBIYW5kIGJhY2sgb3VyIGxhc3QgcmVzb3J0IGZhbGxiYWNrIGZvbnQuCi0g
ICAgICAgIHJlc3VsdCA9IGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udC5mb250RGVzY3Jp
cHRpb24oKSk7CisgICAgICAgIHJlc3VsdCA9IGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVz
Y3JpcHRpb24pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCShyZXZpc2lv
biAxNTA3MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFNo
b3VsZFJldGFpbiB7IFJldGFpbiwgRG9Ob3RSZXRhaW4gfTsKIAotICAgIFBhc3NSZWZQdHI8Rm9u
dERhdGE+IGdldEZvbnREYXRhKGNvbnN0IEZvbnQmLCBpbnQmIGZhbWlseUluZGV4LCBGb250U2Vs
ZWN0b3IqKTsKKyAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBnZXRGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBpbnQmIGZhbWlseUluZGV4LCBGb250U2VsZWN0b3IqKTsKICAgICB2b2lk
IHJlbGVhc2VGb250RGF0YShjb25zdCBTaW1wbGVGb250RGF0YSopOwogCiAgICAgLy8gVGhpcyBt
ZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgpAQCAtMTQxLDggKzE0MSwxMCBA
QCBwcml2YXRlOgogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGdldENhY2hlZEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIGJv
b2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1lID0gZmFsc2UpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9k
cyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0Zm9ybS4KLSAgICBQYXNzUmVmUHRyPFNpbXBs
ZUZvbnREYXRhPiBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250Jik7CiAgICAg
UGFzc093blB0cjxGb250UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gc2ltaWxhckZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJik7CisjZW5kaWYKIAogICAgIFBhc3NSZWZQ
dHI8U2ltcGxlRm9udERhdGE+IGdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEqLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcAkocmV2aXNpb24g
MTUwNzMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNr
TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDkgKzg5LDkgQEAgdm9pZCBGb250R2x5cGhz
OjpyZWxlYXNlRm9udERhdGEoKQogICAgIH0KIH0KIAotdm9pZCBGb250R2x5cGhzOjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KSBjb25zdAordm9pZCBGb250R2x5cGhzOjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25zdAogewotICAg
IGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSA9IHByaW1hcnlGb250RGF0YShmb250KTsKKyAgICBj
b25zdCBGb250RGF0YSogZm9udERhdGEgPSBwcmltYXJ5Rm9udERhdGEoZGVzY3JpcHRpb24pOwog
ICAgIGlmICghZm9udERhdGEtPmlzU2VnbWVudGVkKCkpCiAgICAgICAgIG1fcGl0Y2ggPSBzdGF0
aWNfY2FzdDxjb25zdCBTaW1wbGVGb250RGF0YSo+KGZvbnREYXRhKS0+cGl0Y2goKTsKICAgICBl
bHNlIHsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEZvbnRHbHlwaHM6OmRldGVybWluZVBpdGNo
KGNvbnN0IEZvCiAgICAgfQogfQogCi1jb25zdCBGb250RGF0YSogRm9udEdseXBoczo6cmVhbGl6
ZUZvbnREYXRhQXQoY29uc3QgRm9udCogZm9udCwgdW5zaWduZWQgcmVhbGl6ZWRGb250SW5kZXgp
IGNvbnN0Citjb25zdCBGb250RGF0YSogRm9udEdseXBoczo6cmVhbGl6ZUZvbnREYXRhQXQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgcmVhbGl6ZWRGb250SW5k
ZXgpIGNvbnN0CiB7CiAgICAgaWYgKHJlYWxpemVkRm9udEluZGV4IDwgbV9yZWFsaXplZEZvbnRE
YXRhLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG1fcmVhbGl6ZWRGb250RGF0YVtyZWFsaXplZEZv
bnRJbmRleF0uZ2V0KCk7IC8vIFRoaXMgZmFsbGJhY2sgZm9udCBpcyBhbHJlYWR5IGluIG91ciBs
aXN0LgpAQCAtMTIwLDcgKzEyMCw3IEBAIGNvbnN0IEZvbnREYXRhKiBGb250R2x5cGhzOjpyZWFs
aXplRm9udEQKICAgICAvLyBpbiB8bV9mYW1pbHlJbmRleHwsIHNvIHRoYXQgd2UgbmV2ZXIgc2Nh
biB0aGUgc2FtZSBzcG90IGluIHRoZSBsaXN0IHR3aWNlLiAgZ2V0Rm9udERhdGEgd2lsbCBhZGp1
c3Qgb3VyCiAgICAgLy8gfG1fZmFtaWx5SW5kZXh8IGFzIGl0IHNjYW5zIGZvciB0aGUgcmlnaHQg
Zm9udCB0byBtYWtlLgogICAgIEFTU0VSVChmb250Q2FjaGUoKS0+Z2VuZXJhdGlvbigpID09IG1f
Z2VuZXJhdGlvbik7Ci0gICAgUmVmUHRyPEZvbnREYXRhPiByZXN1bHQgPSBmb250Q2FjaGUoKS0+
Z2V0Rm9udERhdGEoKmZvbnQsIG1fZmFtaWx5SW5kZXgsIG1fZm9udFNlbGVjdG9yLmdldCgpKTsK
KyAgICBSZWZQdHI8Rm9udERhdGE+IHJlc3VsdCA9IGZvbnRDYWNoZSgpLT5nZXRGb250RGF0YShk
ZXNjcmlwdGlvbiwgbV9mYW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOwogICAgIGlm
IChyZXN1bHQpIHsKICAgICAgICAgbV9yZWFsaXplZEZvbnREYXRhLmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICBpZiAocmVzdWx0LT5pc0xvYWRpbmcoKSkKQEAgLTI1MSw5ICsyNTEsOSBAQCBzdGQ6
OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5CiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
ID0gZm9udC5mb250RGVzY3JpcHRpb24oKTsKKyAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uID0gZm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICBpZiAodmFyaWFudCA9PSBB
dXRvVmFyaWFudCkgewotICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYm
ICFwcmltYXJ5U2ltcGxlRm9udERhdGEoJmZvbnQpLT5pc1NWR0ZvbnQoKSkgeworICAgICAgICBp
ZiAoZGVzY3JpcHRpb24uc21hbGxDYXBzKCkgJiYgIXByaW1hcnlTaW1wbGVGb250RGF0YShkZXNj
cmlwdGlvbiktPmlzU1ZHRm9udCgpKSB7CiAgICAgICAgICAgICBVQ2hhcjMyIHVwcGVyQyA9IFdU
Rjo6VW5pY29kZTo6dG9VcHBlcihjKTsKICAgICAgICAgICAgIGlmICh1cHBlckMgIT0gYykgewog
ICAgICAgICAgICAgICAgIGMgPSB1cHBlckM7CkBAIC0yNzEsNyArMjcxLDcgQEAgc3RkOjpwYWly
PEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gRm9udEdseQogCiAgICAgR2x5cGhQYWdlVHJlZU5vZGUq
IG5vZGUgPSBwYWdlTnVtYmVyID8gbV9wYWdlcy5nZXQocGFnZU51bWJlcikgOiBtX3BhZ2VaZXJv
OwogICAgIGlmICghbm9kZSkgewotICAgICAgICBub2RlID0gR2x5cGhQYWdlVHJlZU5vZGU6Omdl
dFJvb3RDaGlsZChyZWFsaXplRm9udERhdGFBdCgmZm9udCwgMCksIHBhZ2VOdW1iZXIpOworICAg
ICAgICBub2RlID0gR2x5cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZChyZWFsaXplRm9udERh
dGFBdChkZXNjcmlwdGlvbiwgMCksIHBhZ2VOdW1iZXIpOwogICAgICAgICBpZiAocGFnZU51bWJl
cikKICAgICAgICAgICAgIG1fcGFnZXMuc2V0KHBhZ2VOdW1iZXIsIG5vZGUpOwogICAgICAgICBl
bHNlCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RkOjpwYWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4g
Rm9udEdseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbHlwaERhdGFBbmRQYWdlRm9yTm9uQ0pLQ2hhcmFjdGVyV2l0aEds
eXBoT3JpZW50YXRpb24oYywgZm9udERlc2NyaXB0aW9uLm5vbkNKS0dseXBoT3JpZW50YXRpb24o
KSwgZGF0YSwgcGFnZSwgcGFnZU51bWJlcik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2x5cGhEYXRhQW5kUGFnZUZvck5vbkNKS0NoYXJhY3RlcldpdGhHbHlwaE9yaWVudGF0aW9u
KGMsIGRlc2NyaXB0aW9uLm5vbkNKS0dseXBoT3JpZW50YXRpb24oKSwgZGF0YSwgcGFnZSwgcGFn
ZU51bWJlcik7CiAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGRh
dGEsIHBhZ2UpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMwNiw3ICszMDYsNyBAQCBzdGQ6OnBh
aXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0Q2hpbGQo
cmVhbGl6ZUZvbnREYXRhQXQoJmZvbnQsIG5vZGUtPmxldmVsKCkpLCBwYWdlTnVtYmVyKTsKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5nZXRDaGlsZChyZWFsaXplRm9udERhdGFBdChkZXNjcmlw
dGlvbiwgbm9kZS0+bGV2ZWwoKSksIHBhZ2VOdW1iZXIpOwogICAgICAgICAgICAgaWYgKHBhZ2VO
dW1iZXIpCiAgICAgICAgICAgICAgICAgbV9wYWdlcy5zZXQocGFnZU51bWJlciwgbm9kZSk7CiAg
ICAgICAgICAgICBlbHNlCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RkOjpwYWlyPEdseXBoRGF0YSwg
R2x5cGhQYWdlKj4gRm9udEdseQogICAgICAgICAgICAgICAgIGlmIChkYXRhLmZvbnREYXRhKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB2YXJpYW50Rm9udERhdGEgZnVuY3Rpb24gc2hv
dWxkIG5vdCBub3JtYWxseSByZXR1cm4gMC4KICAgICAgICAgICAgICAgICAgICAgLy8gQnV0IGlm
IGl0IGRvZXMsIHdlIHdpbGwganVzdCByZW5kZXIgdGhlIGNhcGl0YWwgbGV0dGVyIGJpZy4KLSAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiB2YXJpYW50Rm9udERhdGEg
PSBkYXRhLmZvbnREYXRhLT52YXJpYW50Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCB2YXJpYW50
KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiB2YXJpYW50Rm9u
dERhdGEgPSBkYXRhLmZvbnREYXRhLT52YXJpYW50Rm9udERhdGEoZGVzY3JpcHRpb24sIHZhcmlh
bnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhbnRGb250RGF0YSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihkYXRhLCBwYWdlKTsKIApAQCAt
MzQyLDcgKzM0Miw3IEBAIHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IEZvbnRHbHkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG5vZGUgPSBub2RlLT5nZXRDaGlsZChyZWFsaXplRm9udERhdGFBdCgmZm9udCwgbm9kZS0+bGV2
ZWwoKSksIHBhZ2VOdW1iZXIpOworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldENoaWxkKHJl
YWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCBub2RlLT5sZXZlbCgpKSwgcGFnZU51bWJlcik7
CiAgICAgICAgICAgICBpZiAocGFnZU51bWJlcikKICAgICAgICAgICAgICAgICBtX3BhZ2VzLnNl
dChwYWdlTnVtYmVyLCBub2RlKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTM3MSw3ICszNzEsNyBA
QCBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5CiAgICAgICAgIGlmIChj
aGFyYWN0ZXJGb250RGF0YS0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bCAmJiAhY2hhcmFjdGVyRm9udERhdGEtPmhhc1ZlcnRpY2FsR2x5cGhzKCkgJiYgRm9udDo6aXND
SktJZGVvZ3JhcGhPclN5bWJvbChjKSkKICAgICAgICAgICAgIHZhcmlhbnQgPSBCcm9rZW5JZGVv
Z3JhcGhWYXJpYW50OwogICAgICAgICBpZiAodmFyaWFudCAhPSBOb3JtYWxWYXJpYW50KQotICAg
ICAgICAgICAgY2hhcmFjdGVyRm9udERhdGEgPSBjaGFyYWN0ZXJGb250RGF0YS0+dmFyaWFudEZv
bnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdmFyaWFudCk7CisgICAgICAgICAgICBjaGFyYWN0ZXJG
b250RGF0YSA9IGNoYXJhY3RlckZvbnREYXRhLT52YXJpYW50Rm9udERhdGEoZGVzY3JpcHRpb24s
IHZhcmlhbnQpOwogICAgIH0KICAgICBpZiAoY2hhcmFjdGVyRm9udERhdGEpIHsKICAgICAgICAg
Ly8gR290IHRoZSBmYWxsYmFjayBnbHlwaCBhbmQgZm9udC4KQEAgLTM5MSw3ICszOTEsNyBAQCBz
dGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5CiAgICAgICAgICAgICBwYWdl
LT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7
CiAgICAgICAgICAgICBkYXRhLmZvbnREYXRhLT5zZXRNYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoc3Rk
OjptYXgoZGF0YS5mb250RGF0YS0+bWF4R2x5cGhQYWdlVHJlZUxldmVsKCksIG5vZGUtPmxldmVs
KCkpKTsKICAgICAgICAgICAgIGlmICghRm9udDo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjKSAm
JiBkYXRhLmZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpICE9IEhvcml6b250
YWwgJiYgIWRhdGEuZm9udERhdGEtPmlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2soKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ2x5cGhEYXRhQW5kUGFnZUZvck5vbkNKS0NoYXJhY3RlcldpdGhH
bHlwaE9yaWVudGF0aW9uKGMsIGZvbnREZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9u
KCksIGRhdGEsIGZhbGxiYWNrUGFnZSwgcGFnZU51bWJlcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdseXBoRGF0YUFuZFBhZ2VGb3JOb25DSktDaGFyYWN0ZXJXaXRoR2x5cGhPcmllbnRhdGlv
bihjLCBkZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9uKCksIGRhdGEsIGZhbGxiYWNr
UGFnZSwgcGFnZU51bWJlcik7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoZGF0YSwgcGFnZSk7CkBAIC0zOTksNyArMzk5LDcgQEAgc3RkOjpwYWlyPEds
eXBoRGF0YSwgR2x5cGhQYWdlKj4gRm9udEdseQogCiAgICAgLy8gRXZlbiBzeXN0ZW0gZmFsbGJh
Y2sgY2FuIGZhaWw7IHVzZSB0aGUgbWlzc2luZyBnbHlwaCBpbiB0aGF0IGNhc2UuCiAgICAgLy8g
RklYTUU6IEl0IHdvdWxkIGJlIG5pY2VyIHRvIHVzZSB0aGUgbWlzc2luZyBnbHlwaCBmcm9tIHRo
ZSBsYXN0IHJlc29ydCBmb250IGluc3RlYWQuCi0gICAgR2x5cGhEYXRhIGRhdGEgPSBwcmltYXJ5
U2ltcGxlRm9udERhdGEoJmZvbnQpLT5taXNzaW5nR2x5cGhEYXRhKCk7CisgICAgR2x5cGhEYXRh
IGRhdGEgPSBwcmltYXJ5U2ltcGxlRm9udERhdGEoZGVzY3JpcHRpb24pLT5taXNzaW5nR2x5cGhE
YXRhKCk7CiAgICAgaWYgKHZhcmlhbnQgPT0gTm9ybWFsVmFyaWFudCkgewogI2lmIE9TKFdJTkNF
KQogICAgICAgICAvLyBTZWUgY29tbWVudCBhYm91dCBXSU5DRSBHREkgaGFuZGxpbmcgbmVhciBz
ZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIgYWJvdmUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCShyZXZpc2lvbiAxNTA3
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgfkZvbnRH
bHlwaHMoKSB7IHJlbGVhc2VGb250RGF0YSgpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlKFBhc3NS
ZWZQdHI8Rm9udFNlbGVjdG9yPik7CiAKLSAgICBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBh
Z2UqPiBnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmLCBVQ2hhcjMyLCBi
b29sIG1pcnJvciwgRm9udERhdGFWYXJpYW50KSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8R2x5cGhE
YXRhLCBHbHlwaFBhZ2UqPiBnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQm
IGZvbnQsIFVDaGFyMzIsIGJvb2wgbWlycm9yLCBGb250RGF0YVZhcmlhbnQpIGNvbnN0OwogICAg
IAotICAgIGJvb2wgaXNGaXhlZFBpdGNoKGNvbnN0IEZvbnQqIGYpIGNvbnN0IHsgaWYgKG1fcGl0
Y2ggPT0gVW5rbm93blBpdGNoKSBkZXRlcm1pbmVQaXRjaChmKTsgcmV0dXJuIG1fcGl0Y2ggPT0g
Rml4ZWRQaXRjaDsgfTsKLSAgICB2b2lkIGRldGVybWluZVBpdGNoKGNvbnN0IEZvbnQqKSBjb25z
dDsKKyAgICBib29sIGlzRml4ZWRQaXRjaChjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsK
KyAgICB2b2lkIGRldGVybWluZVBpdGNoKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0Owog
CiAgICAgYm9vbCBsb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdD
dXN0b21Gb250czsgfQogCkBAIC04NSw5ICs4NSw5IEBAIHB1YmxpYzoKIAogICAgIFdpZHRoQ2Fj
aGUmIHdpZHRoQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoQ2FjaGU7IH0KIAotICAgIGNv
bnN0IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxlRm9udERhdGEoY29uc3QgRm9udCopIGNv
bnN0OwotICAgIGNvbnN0IEZvbnREYXRhKiBwcmltYXJ5Rm9udERhdGEoY29uc3QgRm9udCogZikg
Y29uc3QgeyByZXR1cm4gcmVhbGl6ZUZvbnREYXRhQXQoZiwgMCk7IH0KLSAgICBjb25zdCBGb250
RGF0YSogcmVhbGl6ZUZvbnREYXRhQXQoY29uc3QgRm9udCosIHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKKyAgICBjb25zdCBTaW1wbGVGb250RGF0YSogcHJpbWFyeVNpbXBsZUZvbnREYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OworICAgIGNvbnN0IEZvbnREYXRhKiBwcmltYXJ5Rm9u
dERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikgY29uc3QgeyByZXR1cm4g
cmVhbGl6ZUZvbnREYXRhQXQoZGVzY3JpcHRpb24sIDApOyB9CisgICAgY29uc3QgRm9udERhdGEq
IHJlYWxpemVGb250RGF0YUF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGb250R2x5cGhzKCk7CkBAIC0xMDQsMTUgKzEwNCwy
MiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZm9udFNlbGVjdG9yVmVyc2lvbjsKICAgICBt
dXRhYmxlIGludCBtX2ZhbWlseUluZGV4OwogICAgIHVuc2lnbmVkIHNob3J0IG1fZ2VuZXJhdGlv
bjsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcGl0Y2ggOiAzOyAvLyBQaXRjaAorICAgIG11dGFi
bGUgdW5zaWduZWQgbV9waXRjaCA6IDM7CiAgICAgbXV0YWJsZSBib29sIG1fbG9hZGluZ0N1c3Rv
bUZvbnRzIDogMTsKIH07CiAKLWlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udEdseXBo
czo6cHJpbWFyeVNpbXBsZUZvbnREYXRhKGNvbnN0IEZvbnQqIGYpIGNvbnN0CitpbmxpbmUgYm9v
bCBGb250R2x5cGhzOjppc0ZpeGVkUGl0Y2goY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbikgY29uc3QKK3sKKyAgICBpZiAobV9waXRjaCA9PSBVbmtub3duUGl0Y2gpCisgICAgICAg
IGRldGVybWluZVBpdGNoKGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gbV9waXRjaCA9PSBGaXhl
ZFBpdGNoOworfTsKKworaW5saW5lIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250R2x5cGhzOjpw
cmltYXJ5U2ltcGxlRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9jYWNoZWRQ
cmltYXJ5U2ltcGxlRm9udERhdGEpCi0gICAgICAgIG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnRE
YXRhID0gcHJpbWFyeUZvbnREYXRhKGYpLT5mb250RGF0YUZvckNoYXJhY3RlcignICcpOworICAg
ICAgICBtX2NhY2hlZFByaW1hcnlTaW1wbGVGb250RGF0YSA9IHByaW1hcnlGb250RGF0YShkZXNj
cmlwdGlvbiktPmZvbnREYXRhRm9yQ2hhcmFjdGVyKCcgJyk7CiAgICAgcmV0dXJuIG1fY2FjaGVk
UHJpbWFyeVNpbXBsZUZvbnREYXRhOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrQmVycnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hl
QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OCwxMSArMTc4LDYgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9u
dENhY2hlOjpnZQogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YSgmcGxhdGZvcm1EYXRhLCBE
b05vdFJldGFpbik7CiB9CiAKLVBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6
Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBTaG91bGRS
ZXRhaW4pCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNh
bnNTdHIsICgiU2FucyIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJl
dmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDExICsxMDAs
NiBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdlCiAgICAgcmV0dXJu
IGdldENhY2hlZEZvbnREYXRhKCZhbHRlcm5hdGVGb250RGF0YSwgRG9Ob3RSZXRhaW4pOwogfQog
Ci1QYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnQmKQotewotICAgIHJldHVybiAwOwotfQotCiBQYXNzUmVmUHRy
PFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRS
ZXRhaW4pCiB7CiAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gYSBmYWxsYmFjayBmb250IGhlcmUs
IG90aGVyd2lzZSB0aGUgbG9naWMgcHJldmVudGluZyBGb250Q29uZmlnCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0J
KHJldmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q2FjaGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MywyMSArMTUzLDIxIEBAIFBh
c3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2UKICAgICByZXR1cm4gZ2V0Q2Fj
aGVkRm9udERhdGEoJmFsdGVybmF0ZUZvbnQsIERvTm90UmV0YWluKTsKIH0KIAotUGFzc1JlZlB0
cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250JiBmb250KQorUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpz
aW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQogewogICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhcHByb3ByaWF0ZSBmb250IHVzaW5nIGEg
bWF0Y2ggYmFzZWQgb24gCiAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGtleXdvcmRzIGluIHRoZSB0
aGUgcmVxdWVzdGVkIG5hbWVzLiAgRm9yIGV4YW1wbGUsIHdlJ2xsCiAgICAgLy8gbWF0Y2ggYW55
IG5hbWUgdGhhdCBjb250YWlucyAiQXJhYmljIiB0byBHZWV6YSBQcm8uCiAgICAgUmVmUHRyPFNp
bXBsZUZvbnREYXRhPiBzaW1wbGVGb250RGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZm9udC5mYW1pbHlDb3VudCgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHkgPSBmb250LmZhbWlseUF0KGkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkgPSBkZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsKICAgICAgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgc3RhdGljIFN0
cmluZyogbWF0Y2hXb3Jkc1szXSA9IHsgbmV3IFN0cmluZygiQXJhYmljIiksIG5ldyBTdHJpbmco
IlBhc2h0byIpLCBuZXcgU3RyaW5nKCJVcmR1IikgfTsKICAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIGdlZXphU3RyLCAoIkdlZXphIFBybyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzICYm
ICFzaW1wbGVGb250RGF0YTsgKytqKQogICAgICAgICAgICAgaWYgKGZhbWlseS5jb250YWlucygq
bWF0Y2hXb3Jkc1tqXSwgZmFsc2UpKQotICAgICAgICAgICAgICAgIHNpbXBsZUZvbnREYXRhID0g
Z2V0Q2FjaGVkRm9udERhdGEoZm9udC5mb250RGVzY3JpcHRpb24oKSwgZ2VlemFTdHIpOworICAg
ICAgICAgICAgICAgIHNpbXBsZUZvbnREYXRhID0gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRp
b24sIGdlZXphU3RyKTsKICAgICB9CiAgICAgcmV0dXJuIHNpbXBsZUZvbnREYXRhLnJlbGVhc2Uo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNo
ZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250Q2FjaGVRdC5jcHAJKHJldmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
MTEgKzczLDYgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpnZQogICAg
IHJldHVybiBnZXRDYWNoZWRGb250RGF0YSgmYWx0ZXJuYXRlRm9udCwgRG9Ob3RSZXRhaW4pOwog
fQogCi1QYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFBh
c3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNr
Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWlu
IHNob3VsZFJldGFpbikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcgZmFsbGJhY2tGYW1pbHkg
PSBRRm9udChmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSkubGFzdFJlc29ydEZhbWlseSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAJKHJldmlzaW9uIDE1MDcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTYsMTEgKzI5Niw2IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2UK
ICAgICByZXR1cm4gZm9udERhdGEucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFNpbXBsZUZv
bnREYXRhPiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQm
IGZvbnQpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+
IEZvbnRDYWNoZTo6Zm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0YWluLCBj
b25zdCBMT0dGT05UJiBmb250LCBBdG9taWNTdHJpbmcmIG91dEZvbnRGYW1pbHlOYW1lKQogewog
ICAgIEF0b21pY1N0cmluZyBmYW1pbHlOYW1lID0gU3RyaW5nKGZvbnQubGZGYWNlTmFtZSwgd2Nz
bmxlbihmb250LmxmRmFjZU5hbWUsIExGX0ZBQ0VTSVpFKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udENhY2hlV2luQ0Uu
Y3BwCShyZXZpc2lvbiAxNTA3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSwxMSArMjc5
LDYgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpnZQogICAgIHJldHVy
biAwOwogfQogCi1QYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldFNpbWls
YXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmKQotewotICAgIHJldHVybiAwOwotfQotCiBQ
YXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFj
a0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzYywgU2hvdWxkUmV0YWluIHNob3Vs
ZFJldGFpbikKIHsKICAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhv
dyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4gIEZvciBub3cgd2UnbGwgcGljawo=
</data>
<flag name="review"
          id="224400"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>