<?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>117027</bug_id>
          
          <creation_ts>2013-05-30 06:56:37 -0700</creation_ts>
          <short_desc>Separate generic font family settings to a class</short_desc>
          <delta_ts>2022-10-05 16:27:53 -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>ahmad.saleem792</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>895521</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-30 06:56:37 -0700</bug_when>
    <thetext>The class will be under platform/ and accessed by the font code directly without platform violations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895526</commentid>
    <comment_count>1</comment_count>
      <attachid>203354</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-05-30 07:10:04 -0700</bug_when>
    <thetext>Created attachment 203354
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895527</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-30 07:12:38 -0700</bug_when>
    <thetext>Attachment 203354 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/page/Settings.cpp&apos;, u&apos;Source/WebCore/page/Settings.h&apos;, u&apos;Source/WebCore/platform/graphics/FontGenericFamilies.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontGenericFamilies.h&apos;]&quot; exit_code: 1
Source/WebCore/page/Settings.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 12 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>895529</commentid>
    <comment_count>3</comment_count>
      <attachid>203354</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-30 07:21:01 -0700</bug_when>
    <thetext>Comment on attachment 203354
patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903592</commentid>
    <comment_count>4</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-05 16:27:53 -0700</bug_when>
    <thetext>This seems to have landed in this commit and not backed out:

https://github.com/WebKit/WebKit/commit/73904e2b793c6133dd518895db0e6c091803da66

Marking this as &quot;RESOLVED FIXED&quot;. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203354</attachid>
            <date>2013-05-30 07:10:04 -0700</date>
            <delta_ts>2013-05-30 07:21:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>separate-generic-family-settings.patch</filename>
            <type>text/plain</type>
            <size>29387</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA1LTMwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXBhcmF0ZSBnZW5lcmljIGZv
bnQgZmFtaWx5IHNldHRpbmdzIHRvIGEgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzAyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY2xhc3MgaXMgdW5kZXIgcGxhdGZvcm0vIGFu
ZCBjYW4gYmUgYWNjZXNzZWQgYnkgdGhlIGZvbnQgY29kZSBkaXJlY3RseSB3aXRob3V0IHBsYXRm
b3JtIHZpb2xhdGlvbnMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
bnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6flNldHRpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpmaXhlZEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEZpeGVk
Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2VyaWZGb250RmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTZXJpZkZvbnRGYW1pbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNhbnNTZXJpZkZvbnRGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OmN1cnNpdmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRDdXJzaXZlRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6ZmFudGFzeUZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEZh
bnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpwaWN0b2dyYXBo
Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0UGljdG9ncmFwaEZv
bnRGYW1pbHkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJp
Y0ZhbWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRH
ZW5lcmljRmFtaWxpZXM6OnN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNhbnNTZXJpZkZvbnRGYW1pbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6Y3Vyc2l2ZUZvbnRGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6ZmFudGFzeUZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0U3RhbmRhcmRGb250RmFt
aWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEZpeGVkRm9u
dEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTZXJp
ZkZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0
U2Fuc1NlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWls
aWVzOjpzZXRDdXJzaXZlRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJp
Y0ZhbWlsaWVzOjpzZXRGYW50YXN5Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
R2VuZXJpY0ZhbWlsaWVzOjpzZXRQaWN0b2dyYXBoRm9udEZhbWlseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVTY3JpcHRDb2RlSGFzaFRyYWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpVU2NyaXB0Q29kZUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpVU2NyaXB0Q29kZUhhc2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OmNyZWF0ZSk6CisKIDIwMTMtMDUt
MzAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIHVz
aW5nIENTU09NIHN0eWxlIGRlY2xhcmF0aW9ucyBpbiBIVE1MIGVkaXRpbmcuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTUwOTU2KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4OTIsNiArMTg5Miw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2Ny
aXB0aW9uLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFzdFBhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVT
ZXR0aW5ncy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTUwOTU2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtNTYyNiw2ICs1NjI2LDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDE1MDk1NikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTk4Niw2ICs5ODYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlU3lz
dGVtLmNwcCBcCiAgICAgcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5
cGhzLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTUwOTU2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI5ODgxLDYgKzI5ODgxLDE0IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcRm9udERlc2NyaXB0aW9uLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CisgICAgICAgICAgICAgICAgPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRHZW5l
cmljRmFtaWxpZXMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRHbHlwaHMuY3BwIgogCQkJCQk+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJ
KHJldmlzaW9uIDE1MDk1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyMzksNiArNDIzOSw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250Q2FjaGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udERhdGEuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udERl
c2NyaXB0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEdseXBocy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250RmFzdFBhdGguY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEZlYXR1cmVTZXR0
aW5ncy5jcHAiIC8+CkBAIC0xMTYxNyw2ICsxMTYxOCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250Q2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnREYXRhLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250RGVzY3JpcHRpb24uaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRHZW5lcmlj
RmFtaWxpZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXEZvbnRHbHlwaHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEZvbnRGZWF0dXJlU2V0dGluZ3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZvbnRNZXRyaWNzLmgiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxNTA5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTUxOTMsNiArNTE5Myw5
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb250RGVz
Y3JpcHRpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIj4KKyAgICAgICAgPEZpbHRlcj5wbGF0Zm9y
bVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEdseXBocy5jcHAiPgogICAgICAgPEZpbHRl
cj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTI2Njcs
NiArMTI2NzAsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcRm9udERlc2NyaXB0aW9uLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcRm9udEdlbmVyaWNGYW1pbGllcy5oIj4KKyAgICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9udEdseXBocy5oIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE1MDk1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTUxNSw2ICs1NTE1LDcgQEAKIAkJRTQ0
NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZCNjA5MDBBRjJFQ0UgLyog
UmVuZGVyVmlkZW8uaCAqLzsgfTsKIAkJRTQ0QjRCQjMxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVj
dG9yQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDRCNEJCMTE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmNwcCAqLzsg
fTsKIAkJRTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjIxNDE2NTBE
NzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovOyB9OworCQlFNDRFRTNBODE3NTc3RUJE
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRFRTNBNjE3NTc2RTU1MDBFRUU4Q0YgLyogRm9u
dEdlbmVyaWNGYW1pbGllcy5jcHAgKi87IH07CiAJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAv
KiBTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCAq
LzsgfTsKIAkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTMyMkFBMTQwQ0Uy
NjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi87IH07CiAJCUU0NTM5MDFFMEVBRkNBQ0Ew
MDM2OTVDOCAvKiBQYXN0ZWJvYXJkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ1MzkwMTkwRUFGQ0FDQTAwMzY5NUM4IC8qIFBhc3RlYm9hcmRJ
T1MubW0gKi87IH07CkBAIC0xMjMwOCw2ICsxMjMwOSw4IEBACiAJCUU0NDYxNDEzMENENjgyNjkw
MEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNUaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NEI0QkIx
MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0b3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3RvckNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ0RUUzQTYxNzU3NkU1NTAwRUVFOENGIC8q
IEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEdlbmVyaWNG
YW1pbGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0NEVFM0E3MTc1NzZF
NTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRH
ZW5lcmljRmFtaWxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzIyQTkx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yUXVlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwMTkwRUFGQ0FDQTAwMzY5NUM4IC8qIFBhc3RlYm9h
cmRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQYXN0ZWJv
YXJkSU9TLm1tOyBwYXRoID0gaW9zL1Bhc3RlYm9hcmRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODMzNyw2ICsxODM0MCw4IEBACiAJCQkJNzI2MjZFMDEwRUYwMjJGRTAw
QTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8sCiAJCQkJNEE2RTlGQzUxM0MxN0Q1NzAwNDZB
N0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwICovLAogCQkJCTRBNkU5RkM2MTNDMTdENTcw
MDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmggKi8sCisJCQkJRTQ0RUUzQTYxNzU3NkU1
NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwICovLAorCQkJCUU0NEVFM0E3MTc1
NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggKi8sCiAJCQkJMDg0NTY4MDcx
MkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggKi8sCiAJCQkJRjdBMDM0QzMxMjZCRjZC
RTAwN0RDMTlFIC8qIEZvbnRPcmllbnRhdGlvbi5oICovLAogCQkJCTg0QjYyNjg0MTMzMTM4Rjkw
MDk1QTQ4OSAvKiBGb250UGxhdGZvcm1EYXRhLmNwcCAqLywKQEAgLTI2ODc1LDYgKzI2ODgwLDcg
QEAKIAkJCQlGMzZFMDdBNDEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0QzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NEYwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0
NEVFM0E4MTc1NzdFQkQwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxMjcxQTE0MEVFRUM4MDQwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NTIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
clJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MjA4OTgxNDdEMzVGOTAwMTBCQzA2
IC8qIFdvcmtlclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNTA5NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250LmgiCisj
aW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01NywzNCArNTgs
MTMgQEAgc3RhdGljIHZvaWQgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MoUGFnZQogICAgIH0KIH0K
IAotLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2NyaXB0
LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5zdGVh
ZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRHZW5lcmljRm9udEZhbWlseU1hcChTY3JpcHRGb250
RmFtaWx5TWFwJiBmb250TWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENv
ZGUgc2NyaXB0LCBQYWdlKiBwYWdlKQorc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFmdGVyR2VuZXJp
Y0ZhbWlseUNoYW5nZShQYWdlKiBwYWdlKQogewotICAgIFNjcmlwdEZvbnRGYW1pbHlNYXA6Oml0
ZXJhdG9yIGl0ID0gZm9udE1hcC5maW5kKHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSk7Ci0gICAg
aWYgKGZhbWlseS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGl0ID09IGZvbnRNYXAuZW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZvbnRNYXAucmVtb3ZlKGl0KTsKLSAgICB9
IGVsc2UgaWYgKGl0ICE9IGZvbnRNYXAuZW5kKCkgJiYgaXQtPnZhbHVlID09IGZhbWlseSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGVsc2UKLSAgICAgICAgZm9udE1hcC5zZXQoc3RhdGljX2Nhc3Q8
aW50PihzY3JpcHQpLCBmYW1pbHkpOwotCiAgICAgaW52YWxpZGF0ZUZvbnRHbHlwaHNDYWNoZSgp
OwogICAgIGlmIChwYWdlKQogICAgICAgICBwYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxG
cmFtZXMoKTsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGdldEdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRNYXAs
IFVTY3JpcHRDb2RlIHNjcmlwdCkKLXsKLSAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwotICAg
IGlmIChpdCAhPSBmb250TWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotICAg
IGlmIChzY3JpcHQgIT0gVVNDUklQVF9DT01NT04pCi0gICAgICAgIHJldHVybiBnZXRHZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChmb250TWFwLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgcmV0dXJu
IGVtcHR5QXRvbTsKLX0KLQogZG91YmxlIFNldHRpbmdzOjpnRGVmYXVsdE1pbkRPTVRpbWVySW50
ZXJ2YWwgPSAwLjAxMDsgLy8gMTAgbWlsbGlzZWNvbmRzCiBkb3VibGUgU2V0dGluZ3M6OmdEZWZh
dWx0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbCA9IDA7CiBkb3VibGUgU2V0dGluZ3M6OmdIaWRk
ZW5QYWdlRE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbCA9IDEuMDsKQEAgLTE0Myw2ICsxMjMsNyBA
QCBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0U2VsZWN0VHJhaWxpbmdXCiBTZXR0aW5nczo6U2V0
dGluZ3MoUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZSgwKQogICAgICwgbV9tZWRpYVR5cGVPdmVy
cmlkZSgic2NyZWVuIikKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhGb250R2VuZXJpY0Zh
bWlsaWVzOjpjcmVhdGUoKSkKICAgICAsIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5
T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAg
ICAsIG1fdGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3IoMSkKQEAgLTE5NSwxMCArMTc2LDE0
IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgIG1fcGFnZSA9IHBhZ2U7IC8v
IFBhZ2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCB3ZW4gY29uc3RydWN0aW5nIFNldHRp
bmdzLCBzbyBrZWVwaW5nIG1fcGFnZSBudWxsIG92ZXIgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFt
aWxpZXMoKSBjYWxsLgogfQogCitTZXR0aW5nczo6flNldHRpbmdzKCkKK3sKK30KKwogUGFzc093
blB0cjxTZXR0aW5ncz4gU2V0dGluZ3M6OmNyZWF0ZShQYWdlKiBwYWdlKQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgU2V0dGluZ3MocGFnZSkpOwotfSAKK30KIAogU0VUVElOR1NfU0VUVEVS
X0JPRElFUwogCkBAIC0yMjEsNzIgKzIwNiw4NiBAQCB2b2lkIFNldHRpbmdzOjppbml0aWFsaXpl
RGVmYXVsdEZvbnRGYW1pCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnN0YW5kYXJk
Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQp
OworICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnN0YW5kYXJkRm9udEZhbWlseShz
Y3JpcHQpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBzZXRHZW5l
cmljRm9udEZhbWlseU1hcChtX3N0YW5kYXJkRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQs
IG1fcGFnZSk7CisgICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5zZXRT
dGFuZGFyZEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOworICAgIGlmIChjaGFuZ2VzKQorICAg
ICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OmZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSBz
Y3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0
KG1fZml4ZWRGb250RmFtaWx5TWFwLCBzY3JpcHQpOworICAgIHJldHVybiBtX2ZvbnRHZW5lcmlj
RmFtaWxpZXMtPmZpeGVkRm9udEZhbWlseShzY3JpcHQpOwogfQogCiB2b2lkIFNldHRpbmdzOjpz
ZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2Rl
IHNjcmlwdCkKIHsKLSAgICBzZXRHZW5lcmljRm9udEZhbWlseU1hcChtX2ZpeGVkRm9udEZhbWls
eU1hcCwgZmFtaWx5LCBzY3JpcHQsIG1fcGFnZSk7CisgICAgYm9vbCBjaGFuZ2VzID0gbV9mb250
R2VuZXJpY0ZhbWlsaWVzLT5zZXRGaXhlZEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOworICAg
IGlmIChjaGFuZ2VzKQorICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdl
KG1fcGFnZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnNlcmlmRm9udEZh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEdlbmVyaWNG
b250RmFtaWx5Rm9yU2NyaXB0KG1fc2VyaWZGb250RmFtaWx5TWFwLCBzY3JpcHQpOworICAgIHJl
dHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNlcmlmRm9udEZhbWlseShzY3JpcHQpOwogfQog
CiB2b2lkIFNldHRpbmdzOjpzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICAgc2V0R2VuZXJpY0ZvbnRGYW1pbHlN
YXAobV9zZXJpZkZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0LCBtX3BhZ2UpOworICAgIGJv
b2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2VyaWZGb250RmFtaWx5KGZh
bWlseSwgc2NyaXB0KTsKKyAgICBpZiAoY2hhbmdlcykKKyAgICAgICAgaW52YWxpZGF0ZUFmdGVy
R2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNl
dHRpbmdzOjpzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZ2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2VyaWZGb250
RmFtaWx5TWFwLCBzY3JpcHQpOworICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNh
bnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2Ny
aXB0KQogewotICAgIHNldEdlbmVyaWNGb250RmFtaWx5TWFwKG1fc2Fuc1NlcmlmRm9udEZhbWls
eU1hcCwgZmFtaWx5LCBzY3JpcHQsIG1fcGFnZSk7CisgICAgYm9vbCBjaGFuZ2VzID0gbV9mb250
R2VuZXJpY0ZhbWlsaWVzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsK
KyAgICBpZiAoY2hhbmdlcykKKyAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNo
YW5nZShtX3BhZ2UpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNldHRpbmdzOjpjdXJzaXZl
Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7
CisgICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+Y3Vyc2l2ZUZvbnRGYW1pbHkoc2Ny
aXB0KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBzZXRHZW5lcmlj
Rm9udEZhbWlseU1hcChtX2N1cnNpdmVGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9w
YWdlKTsKKyAgICBib29sIGNoYW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldEN1cnNp
dmVGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBpZiAoY2hhbmdlcykKKyAgICAgICAg
aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNldHRpbmdzOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3Jp
cHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1f
ZmFudGFzeUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CisgICAgcmV0dXJuIG1fZm9udEdlbmVyaWNG
YW1pbGllcy0+ZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6
c2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRD
b2RlIHNjcmlwdCkKIHsKLSAgICBzZXRHZW5lcmljRm9udEZhbWlseU1hcChtX2ZhbnRhc3lGb250
RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKKyAgICBib29sIGNoYW5nZXMgPSBt
X2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldEZhbnRhc3lGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0
KTsKKyAgICBpZiAoY2hhbmdlcykKKyAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWls
eUNoYW5nZShtX3BhZ2UpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNldHRpbmdzOjpwaWN0
b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAs
IHNjcmlwdCk7CisgICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+cGljdG9ncmFwaEZv
bnRGYW1pbHkoc2NyaXB0KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0UGljdG9ncmFwaEZvbnRG
YW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsK
LSAgICBzZXRHZW5lcmljRm9udEZhbWlseU1hcChtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLCBm
YW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKKyAgICBib29sIGNoYW5nZXMgPSBtX2ZvbnRHZW5lcmlj
RmFtaWxpZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBp
ZiAoY2hhbmdlcykKKyAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZSht
X3BhZ2UpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgJKHJldmlzaW9uIDE1MDk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKyAgICBjbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzOwogICAgIGNsYXNzIFBhZ2U7
CiAKICAgICBlbnVtIEVkaXRhYmxlTGlua0JlaGF2aW9yIHsKQEAgLTU3LDIyICs1OCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5j
bHVkZWQKICAgICB9OwogCi0gICAgLy8gVVNjcmlwdENvZGUgdXNlcyAtMSBhbmQgMCBmb3IgVVNj
cmlwdEludmFsaWRDb2RlIGFuZCBVU2NyaXB0Q29tbW9uLgotICAgIC8vIFdlIG5lZWQgdG8gdXNl
IC0yIGFuZCAtMyBmb3IgZW1wdHkgdmFsdWUgYW5kIGRlbGV0ZWQgdmFsdWUuCi0gICAgc3RydWN0
IFVTY3JpcHRDb2RlSGFzaFRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICAg
ICAgc3RhdGljIGludCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gLTI7IH0KLSAgICAgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKGludCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA9PSAtMzsgfQotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBBdG9taWNTdHJp
bmcsIERlZmF1bHRIYXNoPGludD46Okhhc2gsIFVTY3JpcHRDb2RlSGFzaFRyYWl0cz4gU2NyaXB0
Rm9udEZhbWlseU1hcDsKLQogICAgIGNsYXNzIFNldHRpbmdzIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2V0dGluZ3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFNldHRpbmdzPiBjcmVhdGUoUGFnZSopOwog
CisgICAgICAgIH5TZXR0aW5ncygpOworCiAgICAgICAgIHZvaWQgc2V0U3RhbmRhcmRGb250RmFt
aWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwog
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIApAQCAtMjc1LDEzICsyNjcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIG1fbWVkaWFUeXBlT3ZlcnJpZGU7CiAgICAg
ICAgIEtVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwotICAgICAgICBTY3JpcHRGb250RmFt
aWx5TWFwIG1fc3RhbmRhcmRGb250RmFtaWx5TWFwOwotICAgICAgICBTY3JpcHRGb250RmFtaWx5
TWFwIG1fc2VyaWZGb250RmFtaWx5TWFwOwotICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1f
Zml4ZWRGb250RmFtaWx5TWFwOwotICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2Fuc1Nl
cmlmRm9udEZhbWlseU1hcDsKLSAgICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX2N1cnNpdmVG
b250RmFtaWx5TWFwOwotICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fZmFudGFzeUZvbnRG
YW1pbHlNYXA7Ci0gICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9waWN0b2dyYXBoRm9udEZh
bWlseU1hcDsKKyAgICAgICAgUmVmUHRyPEZvbnRHZW5lcmljRmFtaWxpZXM+IG1fZm9udEdlbmVy
aWNGYW1pbGllczsKICAgICAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQog
ICAgICAgICBmbG9hdCBtX3RleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250R2VuZXJpY0ZhbWlsaWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3Jp
cHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkgewor
ICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwOjppdGVyYXRvciBpdCA9IGZvbnRNYXAuZmluZChz
dGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOworICAgICAgICBpZiAoaXQgPT0gZm9udE1hcC5lbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9udE1hcC5yZW1vdmUoaXQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcDo6
QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGZvbnRNYXAuYWRkKHN0YXRpY19jYXN0PGludD4oc2NyaXB0
KSwgZmFtaWx5KTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID09IGZhbWlseSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBmYW1p
bHk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRN
YXAsIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwor
ICAgIGlmIChpdCAhPSBmb250TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwor
ICAgIGlmIChzY3JpcHQgIT0gVVNDUklQVF9DT01NT04pCisgICAgICAgIHJldHVybiBnZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChmb250TWFwLCBVU0NSSVBUX0NPTU1PTik7CisgICAgcmV0dXJu
IGVtcHR5QXRvbTsKK30KKworRm9udEdlbmVyaWNGYW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGll
cygpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c3Rh
bmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Z2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAsIHNjcmlw
dCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6Zml4ZWRG
b250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9maXhlZEZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZGb250RmFtaWx5
KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1p
bHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9udEZhbWlseShVU2Ny
aXB0Q29kZSBzY3JpcHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9y
U2NyaXB0KG1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0
Q29kZSBzY3JpcHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6ZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCht
X2ZhbnRhc3lGb250RmFtaWx5TWFwLCBzY3JpcHQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IEZvbnRHZW5lcmljRmFtaWxpZXM6OnBpY3RvZ3JhcGhGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNj
cmlwdCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9w
aWN0b2dyYXBoRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKK30KKworYm9vbCBGb250R2VuZXJpY0Zh
bWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHks
IFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlG
b3JTY3JpcHQobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKK30KKwor
Ym9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICByZXR1cm4gc2V0R2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2Ny
aXB0KTsKK30KKworYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTZXJpZkZvbnRGYW1pbHko
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBy
ZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAs
IGZhbWlseSwgc2NyaXB0KTsKK30KKworYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTYW5z
U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBz
Y3JpcHQpCit7CisgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc2Fu
c1NlcmlmRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOworfQorCitib29sIEZvbnRHZW5l
cmljRmFtaWxpZXM6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit7CisgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFt
aWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKK30K
KworYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQoreworICAgIHJldHVybiBz
ZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX2ZhbnRhc3lGb250RmFtaWx5TWFwLCBmYW1p
bHksIHNjcmlwdCk7Cit9CisKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0UGljdG9ncmFw
aEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlw
dCkKK3sKKyAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9waWN0b2dy
YXBoRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOworfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGll
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdlbmVyaWNGYW1pbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRHZW5l
cmljRmFtaWxpZXNfaAorI2RlZmluZSBGb250R2VuZXJpY0ZhbWlsaWVzX2gKKworI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBVU2Ny
aXB0Q29kZSB1c2VzIC0xIGFuZCAwIGZvciBVU2NyaXB0SW52YWxpZENvZGUgYW5kIFVTY3JpcHRD
b21tb24uCisvLyBXZSBuZWVkIHRvIHVzZSAtMiBhbmQgLTMgZm9yIGVtcHR5IHZhbHVlIGFuZCBk
ZWxldGVkIHZhbHVlLgorc3RydWN0IFVTY3JpcHRDb2RlSGFzaFRyYWl0cyA6IFdURjo6R2VuZXJp
Y0hhc2hUcmFpdHM8aW50PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IGZhbHNlOworICAgIHN0YXRpYyBpbnQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIC0yOyB9Cisg
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKGludCYgc2xvdCkgeyBzbG90ID0g
LTM7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShpbnQgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlID09IC0zOyB9Cit9OworCit0eXBlZGVmIEhhc2hNYXA8aW50LCBBdG9taWNTdHJpbmcs
IERlZmF1bHRIYXNoPGludD46Okhhc2gsIFVTY3JpcHRDb2RlSGFzaFRyYWl0cz4gU2NyaXB0Rm9u
dEZhbWlseU1hcDsKKworY2xhc3MgRm9udEdlbmVyaWNGYW1pbGllcyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZvbnRHZW5lcmljRmFtaWxpZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRm9u
dEdlbmVyaWNGYW1pbGllcyk7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
c2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0g
VVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFudGFzeUZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKKworICAgIGJvb2wgc2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0
b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNldEZpeGVkRm9udEZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRTZXJpZkZvbnRG
YW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0U2Fu
c1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAg
Ym9vbCBzZXRDdXJzaXZlRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29k
ZSk7CisgICAgYm9vbCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBV
U2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisKK3ByaXZhdGU6CisgICAgRm9udEdlbmVyaWNGYW1p
bGllcygpOworCisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3N0YW5kYXJkRm9udEZhbWlseU1h
cDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2VyaWZGb250RmFtaWx5TWFwOworICAgIFNj
cmlwdEZvbnRGYW1pbHlNYXAgbV9maXhlZEZvbnRGYW1pbHlNYXA7CisgICAgU2NyaXB0Rm9udEZh
bWlseU1hcCBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1h
cCBtX2N1cnNpdmVGb250RmFtaWx5TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9mYW50
YXN5Rm9udEZhbWlseU1hcDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fcGljdG9ncmFwaEZv
bnRGYW1pbHlNYXA7Cit9OworCit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="224793"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>