<?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>96282</bug_id>
          
          <creation_ts>2012-09-10 09:32:45 -0700</creation_ts>
          <short_desc>[Chromium] remove getFontFamilyForCharacters from PlatformSupport</short_desc>
          <delta_ts>2012-09-21 14:43:41 -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>WebKit Misc.</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>
          
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>bashi</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>716159</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-10 09:32:45 -0700</bug_when>
    <thetext>[Chromium] remove getFontFamilyForCharacters from PlatformSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716160</commentid>
    <comment_count>1</comment_count>
      <attachid>163152</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-10 09:33:29 -0700</bug_when>
    <thetext>Created attachment 163152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716164</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 09:36:42 -0700</bug_when>
    <thetext>Attachment 163152 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/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 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>723639</commentid>
    <comment_count>3</comment_count>
      <attachid>163152</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 10:23:56 -0700</bug_when>
    <thetext>Comment on attachment 163152
Patch

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

&gt; Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp:71
&gt; +    WebKit::WebFontFamily webFamily;

It looks like this will break the Blackberry port.  Notice that there&apos;s an implementation of PlatformSupport::getFontFamilyForCharacters in WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723643</commentid>
    <comment_count>4</comment_count>
      <attachid>163152</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 10:26:59 -0700</bug_when>
    <thetext>Comment on attachment 163152
Patch

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

&gt; Source/WebCore/platform/chromium/PlatformSupport.h:105
&gt; -#elif OS(UNIX)
&gt; -    struct FontFamily {
&gt; -        String name;
&gt; -        bool isBold;
&gt; -        bool isItalic;
&gt; -    };
&gt; -    static void getFontFamilyForCharacters(const UChar*, size_t numCharacters, const char* preferredLocale, FontFamily*);
&gt;  #endif

Rather than inlining this function, it looks like we might need to add it to FontFamily.h and then have WebCore/platform/graphics/chromium/FontFamilyChromiumLinux.cpp and a WebCore/platform/graphics/blackberry/FontFamilyBlackberry.cpp implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724856</commentid>
    <comment_count>5</comment_count>
      <attachid>164979</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-20 14:21:15 -0700</bug_when>
    <thetext>Created attachment 164979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724857</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 14:23:21 -0700</bug_when>
    <thetext>Attachment 164979 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/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/chromium/FontFamilyChromiumLinux.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>724880</commentid>
    <comment_count>7</comment_count>
      <attachid>164979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 14:36:06 -0700</bug_when>
    <thetext>Comment on attachment 164979
Patch

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

I didn&apos;t realize that the last parameter for getFontFamilyForCharacters was the same as FontFamily from FontFamily.h.  Now I&apos;m not sure whether this is the right place to declare this function....

&gt;&gt; Source/WebCore/platform/graphics/chromium/FontFamilyChromiumLinux.cpp:31
&gt;&gt; +#include &lt;public/linux/WebSandboxSupport.h&gt;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

We use case-sensitive sorting, so lower case entries go after all the upper case entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724882</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 14:39:40 -0700</bug_when>
    <thetext>We need to ask someone who know more about fonts on Linux where this function belongs.

@tony: Do you know where we should declare getFontFamilyForCharacters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724899</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-20 15:05:05 -0700</bug_when>
    <thetext>getFontFamilyForCharacters is only called by FontCacheSkia.cpp, which is only used by Blackberry and Chromium Linux.  Hmm, we could maybe add it as a static method of FontCache (with the appropriate #ifs).

Bashi might have a better idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724932</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-20 15:44:31 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; getFontFamilyForCharacters is only called by FontCacheSkia.cpp, which is only used by Blackberry and Chromium Linux.  Hmm, we could maybe add it as a static method of FontCache (with the appropriate #ifs).
&gt; 
&gt; Bashi might have a better idea.

Hmm, adding it as a static method of FontCache looks better. I couldn&apos;t find more appropriate place to declare it..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725655</commentid>
    <comment_count>11</comment_count>
      <attachid>165158</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-21 11:25:25 -0700</bug_when>
    <thetext>Created attachment 165158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725657</commentid>
    <comment_count>12</comment_count>
      <attachid>165158</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-21 11:25:53 -0700</bug_when>
    <thetext>Comment on attachment 165158
Patch

Moved functions to FontCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725660</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 11:28:09 -0700</bug_when>
    <thetext>Attachment 165158 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/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/chromium/FontCacheChromiumLinux.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>725740</commentid>
    <comment_count>14</comment_count>
      <attachid>165158</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-21 13:13:30 -0700</bug_when>
    <thetext>Comment on attachment 165158
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumLinux.cpp:32
&gt; +#include &lt;public/linux/WebSandboxSupport.h&gt;
&gt; +#include &lt;public/Platform.h&gt;

Please fix sorting before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725794</commentid>
    <comment_count>15</comment_count>
      <attachid>165187</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-21 13:58:29 -0700</bug_when>
    <thetext>Created attachment 165187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725795</commentid>
    <comment_count>16</comment_count>
      <attachid>165187</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-21 13:58:55 -0700</bug_when>
    <thetext>Comment on attachment 165187
Patch

Style nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725828</commentid>
    <comment_count>17</comment_count>
      <attachid>165187</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 14:43:36 -0700</bug_when>
    <thetext>Comment on attachment 165187
Patch

Clearing flags on attachment: 165187

Committed r129257: &lt;http://trac.webkit.org/changeset/129257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725830</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 14:43:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163152</attachid>
            <date>2012-09-10 09:33:29 -0700</date>
            <delta_ts>2012-09-20 14:21:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96282-20120910123221.patch</filename>
            <type>text/plain</type>
            <size>7843</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTEwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHJlbW92
ZSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0
b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3Rl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHA6
CisgICAgICAgIChTaW1wbGVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorCiAyMDEy
LTA5LTEwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBSZW1vdmUgdGhlIERlc2NyaXB0b3IgcG9zdGZp
eApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyODA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTMgKzEw
Miw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIE9TKERBUldJTikKICAgICBzdGF0aWMgYm9vbCBs
b2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIENHRm9udFJlZiosIHVpbnQzMl90KiBmb250SUQpOwot
I2VsaWYgT1MoVU5JWCkKLSAgICBzdHJ1Y3QgRm9udEZhbWlseSB7Ci0gICAgICAgIFN0cmluZyBu
YW1lOwotICAgICAgICBib29sIGlzQm9sZDsKLSAgICAgICAgYm9vbCBpc0l0YWxpYzsKLSAgICB9
OwotICAgIHN0YXRpYyB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFy
Kiwgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9u
dEZhbWlseSopOwogI2VuZGlmCiAKICAgICAvLyBGb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENhY2hlQW5kcm9pZC5jcHAJKHJldmlzaW9uIDEyODA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5j
bHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIK
IAogI2luY2x1ZGUgIlNrUGFpbnQuaCIKQEAgLTEwMCwxMyArOTksOSBAQCB2b2lkIEZvbnRDYWNo
ZTo6cGxhdGZvcm1Jbml0KCkKIAogY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0
Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCBpbnQgbGVuZ3RoKQogewotICAgIGljdTo6TG9jYWxlIGxvY2FsZSA9IGljdTo6TG9j
YWxlOjpnZXREZWZhdWx0KCk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpGb250RmFtaWx5IGZhbWls
eTsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJh
Y3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZmYW1pbHkpOwotICAgIGlmIChm
YW1pbHkubmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQXRvbWljU3Ry
aW5nIGF0b21pY0ZhbWlseShmYW1pbHkubmFtZSk7CisgICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1
c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBzbyB1c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTg3CisgICAg
QXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseSgiQXJpYWwiKTsKICAgICByZXR1cm4gZ2V0Q2FjaGVk
Rm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigp
LCBhdG9taWNGYW1pbHksIERvTm90UmV0YWluKSwgRG9Ob3RSZXRhaW4pOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDYWNoZVNraWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENh
Y2hlU2tpYS5jcHAJKHJldmlzaW9uIDEyODA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICog
CisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzYs
MTMgKzM2LDE2IEBACiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAKICNpbmNsdWRlICJTa1Bh
aW50LmgiCiAjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgogI2luY2x1ZGUgIlNrVXRpbHMuaCIKIAor
I2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJGb250RmFtaWx5Lmg+CisjaW5jbHVkZSA8cHVibGlj
L2xpbnV4L1dlYkZvbnRJbmZvLmg+CisjaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYlNhbmRib3hT
dXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS9sb2NpZC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CkBAIC01MCw2ICs1MywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0cnVjdCBTaW1wbGVGb250RmFtaWx5IHsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBi
b29sIGlzQm9sZDsKKyAgICBib29sIGlzSXRhbGljOworfTsKKwogdm9pZCBGb250Q2FjaGU6OnBs
YXRmb3JtSW5pdCgpCiB7CiB9CkBAIC01OSw4ICs2OCwxOCBAQCBjb25zdCBTaW1wbGVGb250RGF0
YSogRm9udENhY2hlOjpnZXRGb250CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKIHsKICAgICBpY3U6OkxvY2FsZSBs
b2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6
Rm9udEZhbWlseSBmYW1pbHk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9y
Q2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAmZmFt
aWx5KTsKKyAgICBXZWJLaXQ6OldlYkZvbnRGYW1pbHkgd2ViRmFtaWx5OworICAgIFNpbXBsZUZv
bnRGYW1pbHkgZmFtaWx5OworCisgICAgaWYgKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
c2FuZGJveFN1cHBvcnQoKSkKKyAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5z
YW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBs
ZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAmd2ViRmFtaWx5KTsKKyAgICBlbHNlCisgICAg
ICAgIFdlYktpdDo6V2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNoYXJhY3RlcnMsIGxlbmd0
aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZ3ZWJGYW1pbHkpOworCisgICAgZmFtaWx5Lm5hbWUg
PSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWlseS5uYW1lLmRhdGEoKSwgd2ViRmFtaWx5Lm5hbWUu
bGVuZ3RoKCkpOworICAgIGZhbWlseS5pc0JvbGQgPSB3ZWJGYW1pbHkuaXNCb2xkOworICAgIGZh
bWlseS5pc0l0YWxpYyA9IHdlYkZhbWlseS5pc0l0YWxpYzsKKwogICAgIGlmIChmYW1pbHkubmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTI4MDY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0xMCAgTWFyayBQ
aWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSByZW1v
dmUgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFj
dG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIHNyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojps
b2FkRm9udCk6CisKIDIwMTItMDktMTAgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgdXNlIFdlYkdlc3R1cmVFdmVudC5ib3VuZGlu
Z0JveCBmb3IgdG91Y2ggYWRqdXN0bWVudApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjgwNjUpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzIsMjcgKzIzMiw2IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpsb2FkRm9udChOU0ZvbnQq
IHMKICAgICAqZm9udElEID0gMDsKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0jZWxpZiBPUyhVTklY
KQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJl
ZmVycmVkTG9jYWxlLCBGb250RmFtaWx5KiBmYW1pbHkpCi17Ci0jaWYgT1MoQU5EUk9JRCkKLSAg
ICAvLyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBz
aW1wbGUgbG9naWMgZm9yIG5vdy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njc1ODcKLSAgICBmYW1pbHktPm5hbWUgPSAiQXJpYWwiOwotICAgIGZhbWls
eS0+aXNCb2xkID0gZmFsc2U7Ci0gICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOwotI2Vsc2UK
LSAgICBXZWJGb250RmFtaWx5IHdlYkZhbWlseTsKLSAgICBpZiAoV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpKQotICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNo
YXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndlYkZhbWlseSk7Ci0g
ICAgZWxzZQotICAgICAgICBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywg
bnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAmd2ViRmFtaWx5KTsKLSAgICBmYW1pbHkt
Pm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWlseS5uYW1lLmRhdGEoKSwgd2ViRmFtaWx5
Lm5hbWUubGVuZ3RoKCkpOwotICAgIGZhbWlseS0+aXNCb2xkID0gd2ViRmFtaWx5LmlzQm9sZDsK
LSAgICBmYW1pbHktPmlzSXRhbGljID0gd2ViRmFtaWx5LmlzSXRhbGljOwotI2VuZGlmCi19Ci0K
ICNlbmRpZgogCiAvLyBJbmRleGVkIERhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164979</attachid>
            <date>2012-09-20 14:21:15 -0700</date>
            <delta_ts>2012-09-21 11:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96282-20120920172037.patch</filename>
            <type>text/plain</type>
            <size>20177</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTE2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTIwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHJlbW92
ZSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRpbmcgYXdheSBm
cm9tIFBsYXRmb3JtU3VwcG9ydC4gZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMgaXMKKyAgICAg
ICAgbW92ZWQgdG8gRm9udEZhbWlseS5oIGFuZCBvdmVycmlkZGVuIGJ5IHRoZSB0d28gcGxhdGZv
cm1zIHRoYXQKKyAgICAgICAgbmVlZCBpdCAoQ2hyb21pdW0gYW5kIEJsYWNrYmVycnkpLiBOZXcg
ZmlsZXMgZm9yIHRoZSBvdmVycmlkZXMuCisgICAgICAgIFBhcnQgb2YgYSBsYXJnZXIgcmVmYWN0
b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3Vw
cG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5oOgorICAgICAg
ICAoU2ltcGxlRm9udEZhbWlseSk6CisgICAgICAgIChGb250RmFtaWx5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRGYW1pbHlCbGFja2JlcnJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHk6Omdl
dEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBv
cnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udEZhbWlseUNocm9taXVtTGludXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseTo6Z2V0Rm9udEZh
bWlseUZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dENhY2hlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRh
Rm9yQ2hhcmFjdGVycyk6CisKIDIwMTItMDktMjAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFN0cmluZzo6bnVtYmVyVG9GaXhlZFByZWNpc2lv
blN0cmluZygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCShy
ZXZpc2lvbiAxMjkxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAKICMgU2tpYSBmb250IGJhY2tlbmQgc291cmNlcwogTElTVChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250RmFtaWx5Qmxh
Y2tiZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZv
cm1CcmlkZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRD
b250cm9sbGVySGFyZkJ1enouY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9u
dEhhcmZCdXp6LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTI5MTIxKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00ODkwLDYgKzQ4
OTAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUFuZHJvaWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250Q2FjaGVDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRGYW1pbHlDaHJvbWl1bUxpbnV4LmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21p
dW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI5MTIxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSwxMyArMTAxLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgT1Mo
REFSV0lOKQogICAgIHN0YXRpYyBib29sIGxvYWRGb250KE5TRm9udCogc3JjRm9udCwgQ0dGb250
UmVmKiwgdWludDMyX3QqIGZvbnRJRCk7Ci0jZWxpZiBPUyhVTklYKQotICAgIHN0cnVjdCBGb250
RmFtaWx5IHsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgaXNCb2xkOwotICAg
ICAgICBib29sIGlzSXRhbGljOwotICAgIH07Ci0gICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZhbWls
eUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3Qg
Y2hhciogcHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5Kik7CiAjZW5kaWYKIAogICAgIC8vIElu
ZGV4ZWREQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFt
aWx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEZhbWlseS5oCShyZXZpc2lvbiAxMjkxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGVuZEZhbWlseShQYXNzUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+
KTsKICAgICBQYXNzUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IHJlbGVhc2VOZXh0KCk7CiAKKyAg
ICBzdHJ1Y3QgU2ltcGxlRm9udEZhbWlseSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAg
ICBib29sIGlzQm9sZDsKKyAgICAgICAgYm9vbCBpc0l0YWxpYzsKKyAgICB9OworICAgIHN0YXRp
YyB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBTaW1w
bGVGb250RmFtaWx5Kik7CisKIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fZmFtaWx5Owog
ICAgIExpc3RSZWZQdHI8U2hhcmVkRm9udEZhbWlseT4gbV9uZXh0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250RmFtaWx5QmxhY2tiZXJyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9Gb250RmFtaWx5QmxhY2tiZXJyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRGYW1pbHlCbGFja2JlcnJ5LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZvbnRGYW1pbHkuaCIKKworI2luY2x1ZGUgIkZvbnRS
ZW5kZXJTdHlsZS5oIgorCisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnRGYW1p
bHk6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBz
aXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciosIEZvbnRGYW1pbHk6OlNpbXBsZUZvbnRG
YW1pbHkqIGZhbWlseSkKK3sKKyAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRDcmVhdGUo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkgeworICAg
ICAgICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQorICAgICAgICAgICAgJiYg
VTE2X0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNbaV0pCisgICAgICAgICAgICAmJiBpICE9
IG51bUNoYXJhY3RlcnMgLSAxCisgICAgICAgICAgICAmJiBVMTZfSVNfVFJBSUwoY2hhcmFjdGVy
c1tpICsgMV0pKSB7CisgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIFUxNl9HRVRf
U1VQUExFTUVOVEFSWShjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2krMV0pKTsKKyAgICAgICAg
ICAgIGkrKzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIo
Y3NldCwgY2hhcmFjdGVyc1tpXSk7CisgICAgfQorICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZj
UGF0dGVybkNyZWF0ZSgpOworCisgICAgRmNWYWx1ZSBmY3ZhbHVlOworICAgIGZjdmFsdWUudHlw
ZSA9IEZjVHlwZUNoYXJTZXQ7CisgICAgZmN2YWx1ZS51LmMgPSBjc2V0OworICAgIEZjUGF0dGVy
bkFkZChwYXR0ZXJuLCBGQ19DSEFSU0VULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFs
dWUudHlwZSA9IEZjVHlwZUJvb2w7CisgICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7CisgICAgRmNQ
YXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAg
IEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7CisgICAgRmNE
ZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKKworICAgIEZjUmVzdWx0IHJlc3VsdDsKKyAgICBG
Y0ZvbnRTZXQqIGZvbnRTZXQgPSBGY0ZvbnRTb3J0KDAsIHBhdHRlcm4sIDAsIDAsICZyZXN1bHQp
OworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisgICAgRmNDaGFyU2V0RGVzdHJveShj
c2V0KTsKKworICAgIGlmICghZm9udFNldCkgeworICAgICAgICBmYW1pbHktPm5hbWUgPSBTdHJp
bmcoKTsKKyAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKyAgICAgICAgZmFtaWx5LT5p
c0l0YWxpYyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT2xkZXIg
dmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fubm90IHNlbGVj
dAorICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2ZSB0byBtYW51YWxseSBmaWx0
ZXIgdGhlIHJlc3VsdHMuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250U2V0LT5uZm9udDsg
KytpKSB7CisgICAgICAgIEZjUGF0dGVybiogY3VycmVudCA9IGZvbnRTZXQtPmZvbnRzW2ldOwor
ICAgICAgICBGY0Jvb2wgaXNTY2FsYWJsZTsKKworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0Qm9v
bChjdXJyZW50LCBGQ19TQ0FMQUJMRSwgMCwgJmlzU2NhbGFibGUpICE9IEZjUmVzdWx0TWF0Y2gK
KyAgICAgICAgICAgIHx8ICFpc1NjYWxhYmxlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgLy8gZm9udGNvbmZpZyBjYW4gYWxzbyByZXR1cm4gZm9udHMgd2hpY2ggYXJlIHVucmVh
ZGFibGUKKyAgICAgICAgRmNDaGFyOCogY0ZpbGVuYW1lOworICAgICAgICBpZiAoRmNQYXR0ZXJu
R2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZJTEUsIDAsICZjRmlsZW5hbWUpICE9IEZjUmVzdWx0TWF0
Y2gpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYWNjZXNzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgRmNDaGFyOCogZmFtaWx5TmFtZTsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdl
dFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHlOYW1lKSA9PSBGY1Jlc3VsdE1h
dGNoKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZmFtaWx5TmFtZSk7CisgICAgICAgICAgICBmYW1pbHktPm5hbWUgPSBTdHJp
bmc6OmZyb21VVEY4KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAgICAgIH0K
KworICAgICAgICBpbnQgd2VpZ2h0OworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihj
dXJyZW50LCBGQ19XRUlHSFQsIDAsICZ3ZWlnaHQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAg
ICAgICBmYW1pbHktPmlzQm9sZCA9IHdlaWdodCA+PSBGQ19XRUlHSFRfQk9MRDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKworICAgICAgICBpbnQg
c2xhbnQ7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKGN1cnJlbnQsIEZDX1NMQU5U
LCAwLCAmc2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgICAgICBmYW1pbHktPmlzSXRh
bGljID0gc2xhbnQgIT0gRkNfU0xBTlRfUk9NQU47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKKworICAgICAgICBGY0ZvbnRTZXREZXN0cm95KGZv
bnRTZXQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmNGb250U2V0RGVzdHJveShm
b250U2V0KTsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjkxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDg2ICsxMjksNCBAQCB2b2lkIFBsYXRmb3JtU3Vw
cG9ydDo6Z2V0UmVuZGVyU3R5bGVGb3JTCiAgICAgRmNQYXR0ZXJuRGVzdHJveShtYXRjaCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqLCBG
b250RmFtaWx5KiBmYW1pbHkpCi17Ci0gICAgRmNDaGFyU2V0KiBjc2V0ID0gRmNDaGFyU2V0Q3Jl
YXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpIHsK
LSAgICAgICAgaWYgKFUxNl9JU19TVVJST0dBVEUoY2hhcmFjdGVyc1tpXSkKLSAgICAgICAgICAg
ICYmIFUxNl9JU19TVVJST0dBVEVfTEVBRChjaGFyYWN0ZXJzW2ldKQotICAgICAgICAgICAgJiYg
aSAhPSBudW1DaGFyYWN0ZXJzIC0gMQotICAgICAgICAgICAgJiYgVTE2X0lTX1RSQUlMKGNoYXJh
Y3RlcnNbaSArIDFdKSkgewotICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBVMTZf
R0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyc1tpXSwgY2hhcmFjdGVyc1tpKzFdKSk7Ci0gICAg
ICAgICAgICBpKys7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICBGY0NoYXJTZXRBZGRD
aGFyKGNzZXQsIGNoYXJhY3RlcnNbaV0pOwotICAgIH0KLSAgICBGY1BhdHRlcm4qIHBhdHRlcm4g
PSBGY1BhdHRlcm5DcmVhdGUoKTsKLQotICAgIEZjVmFsdWUgZmN2YWx1ZTsKLSAgICBmY3ZhbHVl
LnR5cGUgPSBGY1R5cGVDaGFyU2V0OwotICAgIGZjdmFsdWUudS5jID0gY3NldDsKLSAgICBGY1Bh
dHRlcm5BZGQocGF0dGVybiwgRkNfQ0hBUlNFVCwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0KLSAgICBm
Y3ZhbHVlLnR5cGUgPSBGY1R5cGVCb29sOwotICAgIGZjdmFsdWUudS5iID0gRmNUcnVlOwotICAg
IEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0K
LSAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOwotICAg
IEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7Ci0KLSAgICBGY1Jlc3VsdCByZXN1bHQ7Ci0g
ICAgRmNGb250U2V0KiBmb250U2V0ID0gRmNGb250U29ydCgwLCBwYXR0ZXJuLCAwLCAwLCAmcmVz
dWx0KTsKLSAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwotICAgIEZjQ2hhclNldERlc3Ry
b3koY3NldCk7Ci0KLSAgICBpZiAoIWZvbnRTZXQpIHsKLSAgICAgICAgZmFtaWx5LT5uYW1lID0g
U3RyaW5nKCk7Ci0gICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7Ci0gICAgICAgIGZhbWls
eS0+aXNJdGFsaWMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE9s
ZGVyIHZlcnNpb25zIG9mIGZvbnRjb25maWcgaGF2ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNhbm5vdCBz
ZWxlY3QKLSAgICAvLyBvbmx5IHNjYWxhYmxlIGZvbnRzIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkg
ZmlsdGVyIHRoZSByZXN1bHRzLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udFNldC0+bmZv
bnQ7ICsraSkgewotICAgICAgICBGY1BhdHRlcm4qIGN1cnJlbnQgPSBmb250U2V0LT5mb250c1tp
XTsKLSAgICAgICAgRmNCb29sIGlzU2NhbGFibGU7Ci0KLSAgICAgICAgaWYgKEZjUGF0dGVybkdl
dEJvb2woY3VycmVudCwgRkNfU0NBTEFCTEUsIDAsICZpc1NjYWxhYmxlKSAhPSBGY1Jlc3VsdE1h
dGNoCi0gICAgICAgICAgICB8fCAhaXNTY2FsYWJsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIC8vIGZvbnRjb25maWcgY2FuIGFsc28gcmV0dXJuIGZvbnRzIHdoaWNoIGFyZSB1
bnJlYWRhYmxlCi0gICAgICAgIEZjQ2hhcjgqIGNGaWxlbmFtZTsKLSAgICAgICAgaWYgKEZjUGF0
dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GSUxFLCAwLCAmY0ZpbGVuYW1lKSAhPSBGY1Jlc3Vs
dE1hdGNoKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGFjY2VzcyhyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjRmlsZW5hbWUpLCBSX09LKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIEZjQ2hhcjgqIGZhbWlseU5hbWU7Ci0gICAgICAgIGlmIChGY1BhdHRl
cm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZLCAwLCAmZmFtaWx5TmFtZSkgPT0gRmNSZXN1
bHRNYXRjaCkgewotICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGZhbWlseU5hbWUpOwotICAgICAgICAgICAgZmFtaWx5LT5uYW1lID0g
U3RyaW5nOjpmcm9tVVRGOChjaGFyRmFtaWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaW50IHdlaWdodDsKLSAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVn
ZXIoY3VycmVudCwgRkNfV0VJR0hULCAwLCAmd2VpZ2h0KSA9PSBGY1Jlc3VsdE1hdGNoKQotICAg
ICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWlnaHQgPj0gRkNfV0VJR0hUX0JPTEQ7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7Ci0KLSAgICAgICAg
aW50IHNsYW50OwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19T
TEFOVCwgMCwgJnNsYW50KSA9PSBGY1Jlc3VsdE1hdGNoKQotICAgICAgICAgICAgZmFtaWx5LT5p
c0l0YWxpYyA9IHNsYW50ICE9IEZDX1NMQU5UX1JPTUFOOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7Ci0KLSAgICAgICAgRmNGb250U2V0RGVzdHJv
eShmb250U2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZjRm9udFNldERlc3Ry
b3koZm9udFNldCk7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjkxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0Miw2IEBAIHN0cnVjdCBGb250UmVuZGVyU3R5
bGU7CiBjbGFzcyBQbGF0Zm9ybVN1cHBvcnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGdl
dFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHls
ZSwgRm9udFJlbmRlclN0eWxlKiByZXN1bHQpOwotICAgIHN0cnVjdCBGb250RmFtaWx5IHsKLSAg
ICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgaXNCb2xkOwotICAgICAgICBib29sIGlz
SXRhbGljOwotICAgIH07Ci0gICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3Rl
cnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVy
cmVkTG9jYWxlLCBGb250RmFtaWx5Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVB
bmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcAkocmV2aXNpb24gMTI5MTIxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb250RGVzY3Jp
cHRpb24uaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogCiAjaW5jbHVkZSAiU2tQYWludC5oIgpAQCAtMTAwLDEzICs5OSw5IEBA
IHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQogCiBjb25zdCBTaW1wbGVGb250RGF0YSog
Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCiB7Ci0gICAgaWN1OjpMb2NhbGUgbG9j
YWxlID0gaWN1OjpMb2NhbGU6OmdldERlZmF1bHQoKTsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OkZv
bnRGYW1pbHkgZmFtaWx5OwotICAgIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNo
YXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSwgJmZhbWls
eSk7Ci0gICAgaWYgKGZhbWlseS5uYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseS5uYW1lKTsKKyAgICAvLyBGSVhN
RTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1wbGUgbG9n
aWMgZm9yIG5vdy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njc1ODcKKyAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KCJBcmlhbCIpOwogICAgIHJl
dHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9u
dERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgRG9Ob3RSZXRhaW4pLCBEb05vdFJldGFpbik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zv
bnRGYW1pbHlDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250RmFtaWx5Q2hyb21pdW1MaW51eC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250RmFtaWx5Q2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZvbnRGYW1p
bHkuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJGb250RmFtaWx5Lmg+CisjaW5jbHVk
ZSA8cHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmg+CisjaW5jbHVkZSA8cHVibGljL2xpbnV4L1dl
YlNhbmRib3hTdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBGb250RmFtaWx5OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0
IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseTo6U2ltcGxlRm9udEZhbWlseSogZmFt
aWx5KQoreworICAgIFdlYktpdDo6V2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7CisgICAgaWYgKFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKKyAgICAgICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUs
ICZ3ZWJGYW1pbHkpOworICAgIGVsc2UKKyAgICAgICAgV2ViS2l0OjpXZWJGb250SW5mbzo6ZmFt
aWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAm
d2ViRmFtaWx5KTsKKyAgICBmYW1pbHktPm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWls
eS5uYW1lLmRhdGEoKSwgd2ViRmFtaWx5Lm5hbWUubGVuZ3RoKCkpOworICAgIGZhbWlseS0+aXNC
b2xkID0gd2ViRmFtaWx5LmlzQm9sZDsKKyAgICBmYW1pbHktPmlzSXRhbGljID0gd2ViRmFtaWx5
LmlzSXRhbGljOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ZvbnRDYWNoZVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAJKHJldmlzaW9uIDEyOTEyMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNTksOCArNjAsOCBAQCBjb25zdCBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRGb250CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKIHsKICAgICBpY3U6OkxvY2Fs
ZSBsb2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgpOwotICAgIFBsYXRmb3JtU3VwcG9y
dDo6Rm9udEZhbWlseSBmYW1pbHk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAm
ZmFtaWx5KTsKKyAgICBGb250RmFtaWx5OjpTaW1wbGVGb250RmFtaWx5IGZhbWlseTsKKyAgICBG
b250RmFtaWx5OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgs
IGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAmZmFtaWx5KTsKICAgICBpZiAoZmFtaWx5Lm5hbWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyOTE2NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjAgIE1hcmsgUGlsZ3Jp
bSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gcmVtb3ZlIGdl
dEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjI4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3Rvcmlu
ZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5LTIwICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHJvbGwgQ2hyb21pdW0gdG8g
cjE1NzgyOS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcAkocmV2aXNpb24gMTI5MTIxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDI2ICsyMzMsNiBA
QCBib29sIFBsYXRmb3JtU3VwcG9ydDo6bG9hZEZvbnQoTlNGb250KiBzCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogI2VsaWYgT1MoVU5JWCkKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFt
aWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJh
Y3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFtaWx5KQot
ewotI2lmIE9TKEFORFJPSUQpCi0gICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZp
ZyBvbiBBbmRyb2lkLCBzbyB1c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTg3Ci0gICAgZmFtaWx5LT5uYW1l
ID0gIkFyaWFsIjsKLSAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOwotICAgIGZhbWlseS0+aXNJ
dGFsaWMgPSBmYWxzZTsKLSNlbHNlCi0gICAgV2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7Ci0gICAg
aWYgKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKLSAgICAg
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250
RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRM
b2NhbGUsICZ3ZWJGYW1pbHkpOwotICAgIGVsc2UKLSAgICAgICAgV2ViRm9udEluZm86OmZhbWls
eUZvckNoYXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndl
YkZhbWlseSk7Ci0gICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh3ZWJGYW1pbHku
bmFtZS5kYXRhKCksIHdlYkZhbWlseS5uYW1lLmxlbmd0aCgpKTsKLSAgICBmYW1pbHktPmlzQm9s
ZCA9IHdlYkZhbWlseS5pc0JvbGQ7Ci0gICAgZmFtaWx5LT5pc0l0YWxpYyA9IHdlYkZhbWlseS5p
c0l0YWxpYzsKLSNlbmRpZgotfQotCiAjZW5kaWYKIAogLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165158</attachid>
            <date>2012-09-21 11:25:25 -0700</date>
            <delta_ts>2012-09-21 13:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96282-20120921142445.patch</filename>
            <type>text/plain</type>
            <size>20575</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTI0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTIxICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHJlbW92
ZSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRpbmcgYXdheSBm
cm9tIFBsYXRmb3JtU3VwcG9ydC4gZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMgaXMKKyAgICAg
ICAgbW92ZWQgdG8gRm9udENhY2hlLmggYW5kIG92ZXJyaWRkZW4gYnkgdGhlIHR3byBwbGF0Zm9y
bXMgdGhhdAorICAgICAgICBuZWVkIGl0IChDaHJvbWl1bSBMaW51eCBhbmQgQmxhY2tiZXJyeSku
IE5ldyBmaWxlcyBmb3IgdGhlIG92ZXJyaWRlcy4KKyAgICAgICAgUGFydCBvZiBhIGxhcmdlciBy
ZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZv
cm1TdXBwb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAg
ICAgICAgKFNpbXBsZUZvbnRGYW1pbHkpOgorICAgICAgICAoRm9udENhY2hlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrYmVycnkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpn
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBw
b3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtTGludXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RmFt
aWx5Rm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q2FjaGVTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFG
b3JDaGFyYWN0ZXJzKToKKwogMjAxMi0wOS0yMSAgRXZhbiBXYWxsYWNlICA8ZXZhbi5leGVAZ21h
aWwuY29tPgogCiAgICAgICAgIFtXZWJTb2NrZXRdIFJlY2VpdmluZyBhIGxhcmdlIG1lc3NhZ2Ug
aXMgcmVhbGx5IHNsb3cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UJKHJldmlzaW9uIDEyOTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBMSVNUKEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogIyBTa2lhIGZvbnQgYmFja2VuZCBzb3VyY2VzCiBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNo
ZUJsYWNrYmVycnkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL1Bs
YXRmb3JtQnJpZGdlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhU
ZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0ZvbnRIYXJmQnV6ei5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyOTI0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDg4OCw2
ICs0ODg4LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1MaW51eC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2lu
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9t
aXVtV2luLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dFBsYXRmb3JtRGF0YS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjkyNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDEzICsxMDEsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBPUyhEQVJXSU4pCiAg
ICAgc3RhdGljIGJvb2wgbG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqLCB1aW50
MzJfdCogZm9udElEKTsKLSNlbGlmIE9TKFVOSVgpCi0gICAgc3RydWN0IEZvbnRGYW1pbHkgewot
ICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCBpc0JvbGQ7Ci0gICAgICAgIGJvb2wg
aXNJdGFsaWM7Ci0gICAgfTsKLSAgICBzdGF0aWMgdm9pZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciosIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVm
ZXJyZWRMb2NhbGUsIEZvbnRGYW1pbHkqKTsKICNlbmRpZgogCiAgICAgLy8gSW5kZXhlZERCIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCShy
ZXZpc2lvbiAxMjkyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KIAogI2lmIE9TKFdJTkRPV1MpCkBAIC0xMTMsNiArMTE0LDEzIEBAIHB1YmxpYzoK
ICAgICBPcGVuVHlwZVZlcnRpY2FsRGF0YSogZ2V0VmVydGljYWxEYXRhKGNvbnN0IEZvbnRGaWxl
S2V5JiwgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKKyAgICBzdHJ1Y3QgU2lt
cGxlRm9udEZhbWlseSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBib29sIGlzQm9s
ZDsKKyAgICAgICAgYm9vbCBpc0l0YWxpYzsKKyAgICB9OworICAgIHN0YXRpYyB2b2lkIGdldEZv
bnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVt
Q2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBTaW1wbGVGb250RmFtaWx5
Kik7CisKIHByaXZhdGU6CiAgICAgRm9udENhY2hlKCk7CiAgICAgfkZvbnRDYWNoZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVC
bGFja2JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrYmVycnkuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFj
a2JlcnJ5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorCisjaW5jbHVk
ZSAiRm9udFJlbmRlclN0eWxlLmgiCisKKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
Rm9udENhY2hlOjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqLCBGb250Q2FjaGU6OlNpbXBs
ZUZvbnRGYW1pbHkqIGZhbWlseSkKK3sKKyAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRD
cmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkg
eworICAgICAgICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQorICAgICAgICAg
ICAgJiYgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNbaV0pCisgICAgICAgICAgICAm
JiBpICE9IG51bUNoYXJhY3RlcnMgLSAxCisgICAgICAgICAgICAmJiBVMTZfSVNfVFJBSUwoY2hh
cmFjdGVyc1tpICsgMV0pKSB7CisgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIFUx
Nl9HRVRfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2krMV0pKTsKKyAg
ICAgICAgICAgIGkrKzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgIEZjQ2hhclNldEFk
ZENoYXIoY3NldCwgY2hhcmFjdGVyc1tpXSk7CisgICAgfQorICAgIEZjUGF0dGVybiogcGF0dGVy
biA9IEZjUGF0dGVybkNyZWF0ZSgpOworCisgICAgRmNWYWx1ZSBmY3ZhbHVlOworICAgIGZjdmFs
dWUudHlwZSA9IEZjVHlwZUNoYXJTZXQ7CisgICAgZmN2YWx1ZS51LmMgPSBjc2V0OworICAgIEZj
UGF0dGVybkFkZChwYXR0ZXJuLCBGQ19DSEFSU0VULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAg
IGZjdmFsdWUudHlwZSA9IEZjVHlwZUJvb2w7CisgICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7Cisg
ICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsK
KworICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7Cisg
ICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKKworICAgIEZjUmVzdWx0IHJlc3VsdDsK
KyAgICBGY0ZvbnRTZXQqIGZvbnRTZXQgPSBGY0ZvbnRTb3J0KDAsIHBhdHRlcm4sIDAsIDAsICZy
ZXN1bHQpOworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisgICAgRmNDaGFyU2V0RGVz
dHJveShjc2V0KTsKKworICAgIGlmICghZm9udFNldCkgeworICAgICAgICBmYW1pbHktPm5hbWUg
PSBTdHJpbmcoKTsKKyAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKyAgICAgICAgZmFt
aWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
T2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fubm90
IHNlbGVjdAorICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2ZSB0byBtYW51YWxs
eSBmaWx0ZXIgdGhlIHJlc3VsdHMuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250U2V0LT5u
Zm9udDsgKytpKSB7CisgICAgICAgIEZjUGF0dGVybiogY3VycmVudCA9IGZvbnRTZXQtPmZvbnRz
W2ldOworICAgICAgICBGY0Jvb2wgaXNTY2FsYWJsZTsKKworICAgICAgICBpZiAoRmNQYXR0ZXJu
R2V0Qm9vbChjdXJyZW50LCBGQ19TQ0FMQUJMRSwgMCwgJmlzU2NhbGFibGUpICE9IEZjUmVzdWx0
TWF0Y2gKKyAgICAgICAgICAgIHx8ICFpc1NjYWxhYmxlKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgLy8gZm9udGNvbmZpZyBjYW4gYWxzbyByZXR1cm4gZm9udHMgd2hpY2ggYXJl
IHVucmVhZGFibGUKKyAgICAgICAgRmNDaGFyOCogY0ZpbGVuYW1lOworICAgICAgICBpZiAoRmNQ
YXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZJTEUsIDAsICZjRmlsZW5hbWUpICE9IEZjUmVz
dWx0TWF0Y2gpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYWNjZXNzKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgRmNDaGFyOCogZmFtaWx5TmFtZTsKKyAgICAgICAgaWYgKEZjUGF0
dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHlOYW1lKSA9PSBGY1Jl
c3VsdE1hdGNoKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5TmFtZSk7CisgICAgICAgICAgICBmYW1pbHktPm5hbWUg
PSBTdHJpbmc6OmZyb21VVEY4KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAg
ICAgIH0KKworICAgICAgICBpbnQgd2VpZ2h0OworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50
ZWdlcihjdXJyZW50LCBGQ19XRUlHSFQsIDAsICZ3ZWlnaHQpID09IEZjUmVzdWx0TWF0Y2gpCisg
ICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9IHdlaWdodCA+PSBGQ19XRUlHSFRfQk9MRDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKworICAgICAg
ICBpbnQgc2xhbnQ7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKGN1cnJlbnQsIEZD
X1NMQU5ULCAwLCAmc2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgICAgICBmYW1pbHkt
PmlzSXRhbGljID0gc2xhbnQgIT0gRkNfU0xBTlRfUk9NQU47CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKKworICAgICAgICBGY0ZvbnRTZXREZXN0
cm95KGZvbnRTZXQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmNGb250U2V0RGVz
dHJveShmb250U2V0KTsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBv
cnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjkyNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1T
dXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDg2ICsxMjksNCBAQCB2b2lkIFBsYXRm
b3JtU3VwcG9ydDo6Z2V0UmVuZGVyU3R5bGVGb3JTCiAgICAgRmNQYXR0ZXJuRGVzdHJveShtYXRj
aCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVy
cyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNo
YXIqLCBGb250RmFtaWx5KiBmYW1pbHkpCi17Ci0gICAgRmNDaGFyU2V0KiBjc2V0ID0gRmNDaGFy
U2V0Q3JlYXRlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyAr
K2kpIHsKLSAgICAgICAgaWYgKFUxNl9JU19TVVJST0dBVEUoY2hhcmFjdGVyc1tpXSkKLSAgICAg
ICAgICAgICYmIFUxNl9JU19TVVJST0dBVEVfTEVBRChjaGFyYWN0ZXJzW2ldKQotICAgICAgICAg
ICAgJiYgaSAhPSBudW1DaGFyYWN0ZXJzIC0gMQotICAgICAgICAgICAgJiYgVTE2X0lTX1RSQUlM
KGNoYXJhY3RlcnNbaSArIDFdKSkgewotICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0
LCBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyc1tpXSwgY2hhcmFjdGVyc1tpKzFdKSk7
Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICBGY0NoYXJT
ZXRBZGRDaGFyKGNzZXQsIGNoYXJhY3RlcnNbaV0pOwotICAgIH0KLSAgICBGY1BhdHRlcm4qIHBh
dHRlcm4gPSBGY1BhdHRlcm5DcmVhdGUoKTsKLQotICAgIEZjVmFsdWUgZmN2YWx1ZTsKLSAgICBm
Y3ZhbHVlLnR5cGUgPSBGY1R5cGVDaGFyU2V0OwotICAgIGZjdmFsdWUudS5jID0gY3NldDsKLSAg
ICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfQ0hBUlNFVCwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0K
LSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVCb29sOwotICAgIGZjdmFsdWUudS5iID0gRmNUcnVl
OwotICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxz
ZSk7Ci0KLSAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4p
OwotICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7Ci0KLSAgICBGY1Jlc3VsdCByZXN1
bHQ7Ci0gICAgRmNGb250U2V0KiBmb250U2V0ID0gRmNGb250U29ydCgwLCBwYXR0ZXJuLCAwLCAw
LCAmcmVzdWx0KTsKLSAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwotICAgIEZjQ2hhclNl
dERlc3Ryb3koY3NldCk7Ci0KLSAgICBpZiAoIWZvbnRTZXQpIHsKLSAgICAgICAgZmFtaWx5LT5u
YW1lID0gU3RyaW5nKCk7Ci0gICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7Ci0gICAgICAg
IGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIE9sZGVyIHZlcnNpb25zIG9mIGZvbnRjb25maWcgaGF2ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNh
bm5vdCBzZWxlY3QKLSAgICAvLyBvbmx5IHNjYWxhYmxlIGZvbnRzIHNvIHdlIGhhdmUgdG8gbWFu
dWFsbHkgZmlsdGVyIHRoZSByZXN1bHRzLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udFNl
dC0+bmZvbnQ7ICsraSkgewotICAgICAgICBGY1BhdHRlcm4qIGN1cnJlbnQgPSBmb250U2V0LT5m
b250c1tpXTsKLSAgICAgICAgRmNCb29sIGlzU2NhbGFibGU7Ci0KLSAgICAgICAgaWYgKEZjUGF0
dGVybkdldEJvb2woY3VycmVudCwgRkNfU0NBTEFCTEUsIDAsICZpc1NjYWxhYmxlKSAhPSBGY1Jl
c3VsdE1hdGNoCi0gICAgICAgICAgICB8fCAhaXNTY2FsYWJsZSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIC8vIGZvbnRjb25maWcgY2FuIGFsc28gcmV0dXJuIGZvbnRzIHdoaWNo
IGFyZSB1bnJlYWRhYmxlCi0gICAgICAgIEZjQ2hhcjgqIGNGaWxlbmFtZTsKLSAgICAgICAgaWYg
KEZjUGF0dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GSUxFLCAwLCAmY0ZpbGVuYW1lKSAhPSBG
Y1Jlc3VsdE1hdGNoKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGFjY2Vz
cyhyZWludGVycHJldF9jYXN0PGNoYXIqPihjRmlsZW5hbWUpLCBSX09LKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIEZjQ2hhcjgqIGZhbWlseU5hbWU7Ci0gICAgICAgIGlmIChG
Y1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZLCAwLCAmZmFtaWx5TmFtZSkgPT0g
RmNSZXN1bHRNYXRjaCkgewotICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhbWlseU5hbWUpOwotICAgICAgICAgICAgZmFtaWx5LT5u
YW1lID0gU3RyaW5nOjpmcm9tVVRGOChjaGFyRmFtaWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaW50IHdlaWdodDsKLSAgICAgICAgaWYgKEZjUGF0dGVybkdl
dEludGVnZXIoY3VycmVudCwgRkNfV0VJR0hULCAwLCAmd2VpZ2h0KSA9PSBGY1Jlc3VsdE1hdGNo
KQotICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWlnaHQgPj0gRkNfV0VJR0hUX0JPTEQ7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7Ci0KLSAg
ICAgICAgaW50IHNsYW50OwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihjdXJyZW50
LCBGQ19TTEFOVCwgMCwgJnNsYW50KSA9PSBGY1Jlc3VsdE1hdGNoKQotICAgICAgICAgICAgZmFt
aWx5LT5pc0l0YWxpYyA9IHNsYW50ICE9IEZDX1NMQU5UX1JPTUFOOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7Ci0KLSAgICAgICAgRmNGb250U2V0
RGVzdHJveShmb250U2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZjRm9udFNl
dERlc3Ryb3koZm9udFNldCk7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1T
dXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjkyNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1T
dXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0Miw2IEBAIHN0cnVjdCBGb250UmVu
ZGVyU3R5bGU7CiBjbGFzcyBQbGF0Zm9ybVN1cHBvcnQgewogcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVB
bmRTdHlsZSwgRm9udFJlbmRlclN0eWxlKiByZXN1bHQpOwotICAgIHN0cnVjdCBGb250RmFtaWx5
IHsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgaXNCb2xkOwotICAgICAgICBi
b29sIGlzSXRhbGljOwotICAgIH07Ci0gICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNo
YXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciog
cHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2FjaGVBbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcAkocmV2aXNpb24gMTI5MjQxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5k
cm9pZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
ICJTaW1wbGVGb250RGF0YS5oIgogCiAjaW5jbHVkZSAiU2tQYWludC5oIgpAQCAtMTAwLDEzICs5
OSw5IEBAIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQogCiBjb25zdCBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCiB7Ci0gICAgaWN1OjpMb2Nh
bGUgbG9jYWxlID0gaWN1OjpMb2NhbGU6OmdldERlZmF1bHQoKTsKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OkZvbnRGYW1pbHkgZmFtaWx5OwotICAgIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWls
eUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSwg
JmZhbWlseSk7Ci0gICAgaWYgKGZhbWlseS5uYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseS5uYW1lKTsKKyAgICAv
LyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1w
bGUgbG9naWMgZm9yIG5vdy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njc1ODcKKyAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KCJBcmlhbCIpOwog
ICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZv
bnQuZm9udERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgRG9Ob3RSZXRhaW4pLCBEb05vdFJl
dGFpbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRDYWNoZUNocm9taXVtTGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtTGludXguY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udENhY2hlQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgorCisjaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvbGludXgvV2ViRm9udEluZm8uaD4KKyNpbmNsdWRlIDxwdWJsaWMvbGludXgv
V2ViU2FuZGJveFN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnRDYWNoZTo6Z2V0Rm9udEZhbWlseUZvckNoYXJh
Y3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25z
dCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIEZvbnRDYWNoZTo6U2ltcGxlRm9udEZhbWlseSogZmFt
aWx5KQoreworICAgIFdlYktpdDo6V2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7CisgICAgaWYgKFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKKyAgICAgICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUs
ICZ3ZWJGYW1pbHkpOworICAgIGVsc2UKKyAgICAgICAgV2ViS2l0OjpXZWJGb250SW5mbzo6ZmFt
aWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAm
d2ViRmFtaWx5KTsKKyAgICBmYW1pbHktPm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWls
eS5uYW1lLmRhdGEoKSwgd2ViRmFtaWx5Lm5hbWUubGVuZ3RoKCkpOworICAgIGZhbWlseS0+aXNC
b2xkID0gd2ViRmFtaWx5LmlzQm9sZDsKKyAgICBmYW1pbHktPmlzSXRhbGljID0gd2ViRmFtaWx5
LmlzSXRhbGljOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ZvbnRDYWNoZVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAJKHJldmlzaW9uIDEyOTI0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNTksOCArNjAsOCBAQCBjb25zdCBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRGb250CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKIHsKICAgICBpY3U6OkxvY2Fs
ZSBsb2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgpOwotICAgIFBsYXRmb3JtU3VwcG9y
dDo6Rm9udEZhbWlseSBmYW1pbHk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAm
ZmFtaWx5KTsKKyAgICBGb250Q2FjaGU6OlNpbXBsZUZvbnRGYW1pbHkgZmFtaWx5OworICAgIEZv
bnRDYWNoZTo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBs
b2NhbGUuZ2V0TGFuZ3VhZ2UoKSwgJmZhbWlseSk7CiAgICAgaWYgKGZhbWlseS5uYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjkyNDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIxICBNYXJrIFBpbGdyaW0g
IDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHJlbW92ZSBnZXRG
b250RmFtaWx5Rm9yQ2hhcmFjdGVycyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaWdyYXRpbmcgYXdheSBmcm9tIFBs
YXRmb3JtU3VwcG9ydC4gZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMgaXMKKyAgICAgICAgbW92
ZWQgdG8gRm9udENhY2hlLmggYW5kIG92ZXJyaWRkZW4gYnkgdGhlIHR3byBwbGF0Zm9ybXMgdGhh
dAorICAgICAgICBuZWVkIGl0IChDaHJvbWl1bSBMaW51eCBhbmQgQmxhY2tiZXJyeSkuIE5ldyBm
aWxlcyBmb3IgdGhlIG92ZXJyaWRlcy4KKyAgICAgICAgUGFydCBvZiBhIGxhcmdlciByZWZhY3Rv
cmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5LTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmll
d2VkLCByZW1vdmUgZHVwbGljYXRlIHNlY3Rpb24gb2YgV2ViS2l0Lmd5cCBwb2ludGVkIG91dCBi
eSBOaWNvLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCShyZXZpc2lvbiAxMjkyNDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsMjYgKzIzMyw2IEBA
IGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpsb2FkRm9udChOU0ZvbnQqIHMKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAjZWxpZiBPUyhVTklYKQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1p
bHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFj
dGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5KiBmYW1pbHkpCi17
Ci0jaWYgT1MoQU5EUk9JRCkKLSAgICAvLyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmln
IG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1wbGUgbG9naWMgZm9yIG5vdy4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1ODcKLSAgICBmYW1pbHktPm5hbWUg
PSAiQXJpYWwiOwotICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7Ci0gICAgZmFtaWx5LT5pc0l0
YWxpYyA9IGZhbHNlOwotI2Vsc2UKLSAgICBXZWJGb250RmFtaWx5IHdlYkZhbWlseTsKLSAgICBp
ZiAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpKQotICAgICAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExv
Y2FsZSwgJndlYkZhbWlseSk7Ci0gICAgZWxzZQotICAgICAgICBXZWJGb250SW5mbzo6ZmFtaWx5
Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAmd2Vi
RmFtaWx5KTsKLSAgICBmYW1pbHktPm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWlseS5u
YW1lLmRhdGEoKSwgd2ViRmFtaWx5Lm5hbWUubGVuZ3RoKCkpOwotICAgIGZhbWlseS0+aXNCb2xk
ID0gd2ViRmFtaWx5LmlzQm9sZDsKLSAgICBmYW1pbHktPmlzSXRhbGljID0gd2ViRmFtaWx5Lmlz
SXRhbGljOwotI2VuZGlmCi19Ci0KICNlbmRpZgogCiAvLyBJbmRleGVkIERhdGFiYXNlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165187</attachid>
            <date>2012-09-21 13:58:29 -0700</date>
            <delta_ts>2012-09-21 14:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96282-20120921165749.patch</filename>
            <type>text/plain</type>
            <size>20567</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTI0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTIxICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHJlbW92
ZSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIE1pZ3JhdGluZyBhd2F5IGZyb20g
UGxhdGZvcm1TdXBwb3J0LiBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyBpcworICAgICAgICBt
b3ZlZCB0byBGb250Q2FjaGUuaCBhbmQgb3ZlcnJpZGRlbiBieSB0aGUgdHdvIHBsYXRmb3JtcyB0
aGF0CisgICAgICAgIG5lZWQgaXQgKENocm9taXVtIExpbnV4IGFuZCBCbGFja2JlcnJ5KS4gTmV3
IGZpbGVzIGZvciB0aGUgb3ZlcnJpZGVzLgorICAgICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFj
dG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1
cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAg
ICAoU2ltcGxlRm9udEZhbWlseSk6CisgICAgICAgIChGb250Q2FjaGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxhY2tiZXJyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZv
bnRGYW1pbHlGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQu
aDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1MaW51eC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnRGYW1pbHlG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDYWNo
ZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMpOgorCiAyMDEyLTA5LTIxICBFdmFuIFdhbGxhY2UgIDxldmFuLmV4ZUBnbWFpbC5j
b20+CiAKICAgICAgICAgW1dlYlNvY2tldF0gUmVjZWl2aW5nIGEgbGFyZ2UgbWVzc2FnZSBpcyBy
ZWFsbHkgc2xvdwpJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQko
cmV2aXNpb24gMTI5MjQyKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiAjIFNraWEgZm9udCBiYWNrZW5kIHNvdXJjZXMKIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUworICAgIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxh
Y2tiZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZv
cm1CcmlkZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRD
b250cm9sbGVySGFyZkJ1enouY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9u
dEhhcmZCdXp6LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTI5MjQyKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00ODg4LDYgKzQ4
ODgsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdC
dWZmZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bUxpbnV4LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1X
aW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxh
dGZvcm1EYXRhLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyOTI0MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsMTMgKzEwMSw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIE9TKERBUldJTikKICAgICBz
dGF0aWMgYm9vbCBsb2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIENHRm9udFJlZiosIHVpbnQzMl90
KiBmb250SUQpOwotI2VsaWYgT1MoVU5JWCkKLSAgICBzdHJ1Y3QgRm9udEZhbWlseSB7Ci0gICAg
ICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIGlzQm9sZDsKLSAgICAgICAgYm9vbCBpc0l0
YWxpYzsKLSAgICB9OwotICAgIHN0YXRpYyB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiwgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJl
ZExvY2FsZSwgRm9udEZhbWlseSopOwogI2VuZGlmCiAKICAgICAvLyBJbmRleGVkREIgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgJKHJldmlz
aW9uIDEyOTI0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29k
ZS5oPgogCiAjaWYgT1MoV0lORE9XUykKQEAgLTExMyw2ICsxMTQsMTMgQEAgcHVibGljOgogICAg
IE9wZW5UeXBlVmVydGljYWxEYXRhKiBnZXRWZXJ0aWNhbERhdGEoY29uc3QgRm9udEZpbGVLZXkm
LCBjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAjZW5kaWYKIAorICAgIHN0cnVjdCBTaW1wbGVG
b250RmFtaWx5IHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIGJvb2wgaXNCb2xkOwor
ICAgICAgICBib29sIGlzSXRhbGljOworICAgIH07CisgICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZh
bWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFy
YWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFNpbXBsZUZvbnRGYW1pbHkqKTsK
KwogcHJpdmF0ZToKICAgICBGb250Q2FjaGUoKTsKICAgICB+Rm9udENhY2hlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNr
YmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvRm9udENhY2hlQmxhY2tiZXJyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrYmVy
cnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisKKyNpbmNsdWRlICJG
b250UmVuZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgor
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXRmMTYuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBGb250
Q2FjaGU6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciosIEZvbnRDYWNoZTo6U2ltcGxlRm9u
dEZhbWlseSogZmFtaWx5KQoreworICAgIEZjQ2hhclNldCogY3NldCA9IEZjQ2hhclNldENyZWF0
ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyczsgKytpKSB7Cisg
ICAgICAgIGlmIChVMTZfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcnNbaV0pCisgICAgICAgICAgICAm
JiBVMTZfSVNfU1VSUk9HQVRFX0xFQUQoY2hhcmFjdGVyc1tpXSkKKyAgICAgICAgICAgICYmIGkg
IT0gbnVtQ2hhcmFjdGVycyAtIDEKKyAgICAgICAgICAgICYmIFUxNl9JU19UUkFJTChjaGFyYWN0
ZXJzW2kgKyAxXSkpIHsKKyAgICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIoY3NldCwgVTE2X0dF
VF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcnNbaV0sIGNoYXJhY3RlcnNbaSsxXSkpOworICAgICAg
ICAgICAgaSsrOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hh
cihjc2V0LCBjaGFyYWN0ZXJzW2ldKTsKKyAgICB9CisgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0g
RmNQYXR0ZXJuQ3JlYXRlKCk7CisKKyAgICBGY1ZhbHVlIGZjdmFsdWU7CisgICAgZmN2YWx1ZS50
eXBlID0gRmNUeXBlQ2hhclNldDsKKyAgICBmY3ZhbHVlLnUuYyA9IGNzZXQ7CisgICAgRmNQYXR0
ZXJuQWRkKHBhdHRlcm4sIEZDX0NIQVJTRVQsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgZmN2
YWx1ZS50eXBlID0gRmNUeXBlQm9vbDsKKyAgICBmY3ZhbHVlLnUuYiA9IEZjVHJ1ZTsKKyAgICBG
Y1BhdHRlcm5BZGQocGF0dGVybiwgRkNfU0NBTEFCTEUsIGZjdmFsdWUsIEZjRmFsc2UpOworCisg
ICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKKyAgICBG
Y0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRlcm4pOworCisgICAgRmNSZXN1bHQgcmVzdWx0OworICAg
IEZjRm9udFNldCogZm9udFNldCA9IEZjRm9udFNvcnQoMCwgcGF0dGVybiwgMCwgMCwgJnJlc3Vs
dCk7CisgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKKyAgICBGY0NoYXJTZXREZXN0cm95
KGNzZXQpOworCisgICAgaWYgKCFmb250U2V0KSB7CisgICAgICAgIGZhbWlseS0+bmFtZSA9IFN0
cmluZygpOworICAgICAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOworICAgICAgICBmYW1pbHkt
PmlzSXRhbGljID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBmb250Y29uZmlnIGhhdmUgYSBidWcgd2hlcmUgdGhleSBjYW5ub3Qgc2Vs
ZWN0CisgICAgLy8gb25seSBzY2FsYWJsZSBmb250cyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGZp
bHRlciB0aGUgcmVzdWx0cy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRTZXQtPm5mb250
OyArK2kpIHsKKyAgICAgICAgRmNQYXR0ZXJuKiBjdXJyZW50ID0gZm9udFNldC0+Zm9udHNbaV07
CisgICAgICAgIEZjQm9vbCBpc1NjYWxhYmxlOworCisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRC
b29sKGN1cnJlbnQsIEZDX1NDQUxBQkxFLCAwLCAmaXNTY2FsYWJsZSkgIT0gRmNSZXN1bHRNYXRj
aAorICAgICAgICAgICAgfHwgIWlzU2NhbGFibGUpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAvLyBmb250Y29uZmlnIGNhbiBhbHNvIHJldHVybiBmb250cyB3aGljaCBhcmUgdW5y
ZWFkYWJsZQorICAgICAgICBGY0NoYXI4KiBjRmlsZW5hbWU7CisgICAgICAgIGlmIChGY1BhdHRl
cm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRklMRSwgMCwgJmNGaWxlbmFtZSkgIT0gRmNSZXN1bHRN
YXRjaCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChhY2Nlc3MocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY0ZpbGVuYW1lKSwgUl9PSykpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBGY0NoYXI4KiBmYW1pbHlOYW1lOworICAgICAgICBpZiAoRmNQYXR0ZXJu
R2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseU5hbWUpID09IEZjUmVzdWx0
TWF0Y2gpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihmYW1pbHlOYW1lKTsKKyAgICAgICAgICAgIGZhbWlseS0+bmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgoY2hhckZhbWlseSwgc3RybGVuKGNoYXJGYW1pbHkpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGludCB3ZWlnaHQ7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2Vy
KGN1cnJlbnQsIEZDX1dFSUdIVCwgMCwgJndlaWdodCkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAg
ICAgICAgIGZhbWlseS0+aXNCb2xkID0gd2VpZ2h0ID49IEZDX1dFSUdIVF9CT0xEOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOworCisgICAgICAgIGlu
dCBzbGFudDsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3VycmVudCwgRkNfU0xB
TlQsIDAsICZzbGFudCkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAgIGZhbWlseS0+aXNJ
dGFsaWMgPSBzbGFudCAhPSBGQ19TTEFOVF9ST01BTjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworCisgICAgICAgIEZjRm9udFNldERlc3Ryb3ko
Zm9udFNldCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGY0ZvbnRTZXREZXN0cm95
KGZvbnRTZXQpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEyOTI0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBv
cnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksODYgKzEyOSw0IEBAIHZvaWQgUGxhdGZvcm1T
dXBwb3J0OjpnZXRSZW5kZXJTdHlsZUZvclMKICAgICBGY1BhdHRlcm5EZXN0cm95KG1hdGNoKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhcios
IEZvbnRGYW1pbHkqIGZhbWlseSkKLXsKLSAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRD
cmVhdGUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkg
ewotICAgICAgICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQotICAgICAgICAg
ICAgJiYgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNbaV0pCi0gICAgICAgICAgICAm
JiBpICE9IG51bUNoYXJhY3RlcnMgLSAxCi0gICAgICAgICAgICAmJiBVMTZfSVNfVFJBSUwoY2hh
cmFjdGVyc1tpICsgMV0pKSB7Ci0gICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIFUx
Nl9HRVRfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2krMV0pKTsKLSAg
ICAgICAgICAgIGkrKzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgIEZjQ2hhclNldEFk
ZENoYXIoY3NldCwgY2hhcmFjdGVyc1tpXSk7Ci0gICAgfQotICAgIEZjUGF0dGVybiogcGF0dGVy
biA9IEZjUGF0dGVybkNyZWF0ZSgpOwotCi0gICAgRmNWYWx1ZSBmY3ZhbHVlOwotICAgIGZjdmFs
dWUudHlwZSA9IEZjVHlwZUNoYXJTZXQ7Ci0gICAgZmN2YWx1ZS51LmMgPSBjc2V0OwotICAgIEZj
UGF0dGVybkFkZChwYXR0ZXJuLCBGQ19DSEFSU0VULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAg
IGZjdmFsdWUudHlwZSA9IEZjVHlwZUJvb2w7Ci0gICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7Ci0g
ICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsK
LQotICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7Ci0g
ICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKLQotICAgIEZjUmVzdWx0IHJlc3VsdDsK
LSAgICBGY0ZvbnRTZXQqIGZvbnRTZXQgPSBGY0ZvbnRTb3J0KDAsIHBhdHRlcm4sIDAsIDAsICZy
ZXN1bHQpOwotICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7Ci0gICAgRmNDaGFyU2V0RGVz
dHJveShjc2V0KTsKLQotICAgIGlmICghZm9udFNldCkgewotICAgICAgICBmYW1pbHktPm5hbWUg
PSBTdHJpbmcoKTsKLSAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKLSAgICAgICAgZmFt
aWx5LT5pc0l0YWxpYyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
T2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fubm90
IHNlbGVjdAotICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2ZSB0byBtYW51YWxs
eSBmaWx0ZXIgdGhlIHJlc3VsdHMuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250U2V0LT5u
Zm9udDsgKytpKSB7Ci0gICAgICAgIEZjUGF0dGVybiogY3VycmVudCA9IGZvbnRTZXQtPmZvbnRz
W2ldOwotICAgICAgICBGY0Jvb2wgaXNTY2FsYWJsZTsKLQotICAgICAgICBpZiAoRmNQYXR0ZXJu
R2V0Qm9vbChjdXJyZW50LCBGQ19TQ0FMQUJMRSwgMCwgJmlzU2NhbGFibGUpICE9IEZjUmVzdWx0
TWF0Y2gKLSAgICAgICAgICAgIHx8ICFpc1NjYWxhYmxlKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgLy8gZm9udGNvbmZpZyBjYW4gYWxzbyByZXR1cm4gZm9udHMgd2hpY2ggYXJl
IHVucmVhZGFibGUKLSAgICAgICAgRmNDaGFyOCogY0ZpbGVuYW1lOwotICAgICAgICBpZiAoRmNQ
YXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZJTEUsIDAsICZjRmlsZW5hbWUpICE9IEZjUmVz
dWx0TWF0Y2gpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoYWNjZXNzKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgRmNDaGFyOCogZmFtaWx5TmFtZTsKLSAgICAgICAgaWYgKEZjUGF0
dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHlOYW1lKSA9PSBGY1Jl
c3VsdE1hdGNoKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5TmFtZSk7Ci0gICAgICAgICAgICBmYW1pbHktPm5hbWUg
PSBTdHJpbmc6OmZyb21VVEY4KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpbnQgd2VpZ2h0OwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50
ZWdlcihjdXJyZW50LCBGQ19XRUlHSFQsIDAsICZ3ZWlnaHQpID09IEZjUmVzdWx0TWF0Y2gpCi0g
ICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9IHdlaWdodCA+PSBGQ19XRUlHSFRfQk9MRDsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKLQotICAgICAg
ICBpbnQgc2xhbnQ7Ci0gICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKGN1cnJlbnQsIEZD
X1NMQU5ULCAwLCAmc2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpCi0gICAgICAgICAgICBmYW1pbHkt
PmlzSXRhbGljID0gc2xhbnQgIT0gRkNfU0xBTlRfUk9NQU47Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKLQotICAgICAgICBGY0ZvbnRTZXREZXN0
cm95KGZvbnRTZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRmNGb250U2V0RGVz
dHJveShmb250U2V0KTsKLX0KLQogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyOTI0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBv
cnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDYgQEAgc3RydWN0IEZvbnRSZW5kZXJT
dHlsZTsKIGNsYXNzIFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
Z2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0
eWxlLCBGb250UmVuZGVyU3R5bGUqIHJlc3VsdCk7Ci0gICAgc3RydWN0IEZvbnRGYW1pbHkgewot
ICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCBpc0JvbGQ7Ci0gICAgICAgIGJvb2wg
aXNJdGFsaWM7Ci0gICAgfTsKLSAgICBzdGF0aWMgdm9pZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciosIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVm
ZXJyZWRMb2NhbGUsIEZvbnRGYW1pbHkqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCShyZXZpc2lvbiAxMjkyNDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNp
bXBsZUZvbnREYXRhLmgiCiAKICNpbmNsdWRlICJTa1BhaW50LmgiCkBAIC0xMDAsMTMgKzk5LDkg
QEAgdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiAKIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LCBj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkKIHsKLSAgICBpY3U6OkxvY2FsZSBs
b2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6
Rm9udEZhbWlseSBmYW1pbHk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9y
Q2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpLCAmZmFt
aWx5KTsKLSAgICBpZiAoZmFtaWx5Lm5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5Lm5hbWUpOworICAgIC8vIEZJ
WE1FOiBXZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28gdXNlIHNpbXBsZSBs
b2dpYyBmb3Igbm93LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzU4NworICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoIkFyaWFsIik7CiAgICAg
cmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5m
b250RGVzY3JpcHRpb24oKSwgYXRvbWljRmFtaWx5LCBEb05vdFJldGFpbiksIERvTm90UmV0YWlu
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udENhY2hlQ2hyb21pdW1MaW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1MaW51eC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250Q2FjaGVDaHJvbWl1bUxpbnV4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRm9udENhY2hl
LmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvbGlu
dXgvV2ViRm9udEZhbWlseS5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJGb250SW5mby5o
PgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgRm9udENhY2hlOjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVy
cyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNo
YXIqIHByZWZlcnJlZExvY2FsZSwgRm9udENhY2hlOjpTaW1wbGVGb250RmFtaWx5KiBmYW1pbHkp
Cit7CisgICAgV2ViS2l0OjpXZWJGb250RmFtaWx5IHdlYkZhbWlseTsKKyAgICBpZiAoV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpKQorICAgICAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndl
YkZhbWlseSk7CisgICAgZWxzZQorICAgICAgICBXZWJLaXQ6OldlYkZvbnRJbmZvOjpmYW1pbHlG
b3JDaGFycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3ZWJG
YW1pbHkpOworICAgIGZhbWlseS0+bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgod2ViRmFtaWx5Lm5h
bWUuZGF0YSgpLCB3ZWJGYW1pbHkubmFtZS5sZW5ndGgoKSk7CisgICAgZmFtaWx5LT5pc0JvbGQg
PSB3ZWJGYW1pbHkuaXNCb2xkOworICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3ZWJGYW1pbHkuaXNJ
dGFsaWM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvRm9udENhY2hlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q2FjaGVTa2lhLmNwcAkocmV2aXNpb24gMTI5MjQyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q2FjaGVTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5oIgogI2lu
Y2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHkuaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC01OSw4ICs2MCw4IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBGb250Q2FjaGU6OmdldEZvbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKQogewogICAgIGljdTo6TG9jYWxlIGxv
Y2FsZSA9IGljdTo6TG9jYWxlOjpnZXREZWZhdWx0KCk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpG
b250RmFtaWx5IGZhbWlseTsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZmYW1p
bHkpOworICAgIEZvbnRDYWNoZTo6U2ltcGxlRm9udEZhbWlseSBmYW1pbHk7CisgICAgRm9udENh
Y2hlOjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2Fs
ZS5nZXRMYW5ndWFnZSgpLCAmZmFtaWx5KTsKICAgICBpZiAoZmFtaWx5Lm5hbWUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTI0MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDktMjEgIE1hcmsgUGlsZ3JpbSAgPHBp
bGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gcmVtb3ZlIGdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjI4MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgTWlncmF0aW5nIGF3YXkgZnJvbSBQbGF0Zm9ybVN1
cHBvcnQuIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzIGlzCisgICAgICAgIG1vdmVkIHRvIEZv
bnRDYWNoZS5oIGFuZCBvdmVycmlkZGVuIGJ5IHRoZSB0d28gcGxhdGZvcm1zIHRoYXQKKyAgICAg
ICAgbmVlZCBpdCAoQ2hyb21pdW0gTGludXggYW5kIEJsYWNrYmVycnkpLiBOZXcgZmlsZXMgZm9y
IHRoZSBvdmVycmlkZXMuCisgICAgICAgIFBhcnQgb2YgYSBsYXJnZXIgcmVmYWN0b3Jpbmcgc2Vy
aWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wOS0yMSAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdlZCwgcmVt
b3ZlIGR1cGxpY2F0ZSBzZWN0aW9uIG9mIFdlYktpdC5neXAgcG9pbnRlZCBvdXQgYnkgTmljby4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cAkocmV2aXNpb24gMTI5MjQyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDI2ICsyMzMsNiBAQCBib29sIFBs
YXRmb3JtU3VwcG9ydDo6bG9hZEZvbnQoTlNGb250KiBzCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
I2VsaWYgT1MoVU5JWCkKLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hh
cmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNv
bnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFtaWx5KQotewotI2lmIE9T
KEFORFJPSUQpCi0gICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRy
b2lkLCBzbyB1c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTg3Ci0gICAgZmFtaWx5LT5uYW1lID0gIkFyaWFs
IjsKLSAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOwotICAgIGZhbWlseS0+aXNJdGFsaWMgPSBm
YWxzZTsKLSNlbHNlCi0gICAgV2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7Ci0gICAgaWYgKFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKLSAgICAgICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9y
Q2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3
ZWJGYW1pbHkpOwotICAgIGVsc2UKLSAgICAgICAgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJz
KGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndlYkZhbWlseSk7
Ci0gICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh3ZWJGYW1pbHkubmFtZS5kYXRh
KCksIHdlYkZhbWlseS5uYW1lLmxlbmd0aCgpKTsKLSAgICBmYW1pbHktPmlzQm9sZCA9IHdlYkZh
bWlseS5pc0JvbGQ7Ci0gICAgZmFtaWx5LT5pc0l0YWxpYyA9IHdlYkZhbWlseS5pc0l0YWxpYzsK
LSNlbmRpZgotfQotCiAjZW5kaWYKIAogLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>