<?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>94822</bug_id>
          
          <creation_ts>2012-08-23 08:52:14 -0700</creation_ts>
          <short_desc>OPENTYPE_VERTICAL support for Chromium Win</short_desc>
          <delta_ts>2012-09-04 11:32:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</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>51450</blocked>
    
    <blocked>95744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Koji Ishii">kojii</reporter>
          <assigned_to name="Koji Ishii">kojii</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>scottmg</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>703040</commentid>
    <comment_count>0</comment_count>
    <who name="Koji Ishii">kojii</who>
    <bug_when>2012-08-23 08:52:14 -0700</bug_when>
    <thetext>This is a split patch from bug 51450. As suggested by Tony in comment #50, this bug covers:
&gt; 2) Land the code needed that is behind #if ENABLE(OPENTYPE_VERTICAL).
portion of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703087</commentid>
    <comment_count>1</comment_count>
      <attachid>160187</attachid>
    <who name="Koji Ishii">kojii</who>
    <bug_when>2012-08-23 09:48:27 -0700</bug_when>
    <thetext>Created attachment 160187
OPENTYPE_VERTICAL support for Chromium Win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704609</commentid>
    <comment_count>2</comment_count>
    <who name="Koji Ishii">kojii</who>
    <bug_when>2012-08-24 18:48:32 -0700</bug_when>
    <thetext>Tony, could you mind to review this one too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705377</commentid>
    <comment_count>3</comment_count>
      <attachid>160187</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-27 10:31:33 -0700</bug_when>
    <thetext>Comment on attachment 160187
OPENTYPE_VERTICAL support for Chromium Win

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

cq- for the changelog.  Otherwise seems fine.

At some point, we may want to add a perf test to the PerformanceTests directory.  I don&apos;t think the page cyclers actually have any pages with vertical text.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [chromium] OPENTYPE_VERTICAL support for Chromium Win

I would remove [chromium] from the bug title since this patch modifies cross platform code.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:429
&gt; +#if ENABLE(OPENTYPE_VERTICAL)
&gt; +        if (verticalData) {

Nit: Checking verticalData for each glyph sounds slow. We can try it, but I bet it would be faster to have drawGlyphs check verticalData at the beginning of the function and call drawVerticalGlyphs that has all of the vertical code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706342</commentid>
    <comment_count>4</comment_count>
      <attachid>160980</attachid>
    <who name="Koji Ishii">kojii</who>
    <bug_when>2012-08-28 07:54:09 -0700</bug_when>
    <thetext>Created attachment 160980
Updated ChangeLog and Font::drawGlyphs in FontChromiumWin.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706346</commentid>
    <comment_count>5</comment_count>
      <attachid>160187</attachid>
    <who name="Koji Ishii">kojii</who>
    <bug_when>2012-08-28 07:57:36 -0700</bug_when>
    <thetext>Comment on attachment 160187
OPENTYPE_VERTICAL support for Chromium Win

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        [chromium] OPENTYPE_VERTICAL support for Chromium Win
&gt; 
&gt; I would remove [chromium] from the bug title since this patch modifies cross platform code.

Fixed, thank you.

&gt;&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:429
&gt;&gt; +        if (verticalData) {
&gt; 
&gt; Nit: Checking verticalData for each glyph sounds slow. We can try it, but I bet it would be faster to have drawGlyphs check verticalData at the beginning of the function and call drawVerticalGlyphs that has all of the vertical code.

Fixed. The check is actually every chunk (256 glyphs), but still you&apos;re right. I thought I could share more code but moving the if out of loop made the patch smaller.
It was marked as &quot;nit&quot;, were I ok to fix this? Sorry for asking review against granted patch, hope it&apos;s not too much burden to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706578</commentid>
    <comment_count>6</comment_count>
      <attachid>160980</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-28 11:40:55 -0700</bug_when>
    <thetext>Comment on attachment 160980
Updated ChangeLog and Font::drawGlyphs in FontChromiumWin.cpp

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

When I mark something as a nit, I mean you can commit with or without the change (it&apos;s more like a suggestion than a requirement).  If it&apos;s something small, then you don&apos;t need to ask for review again, although if you want me to, I don&apos;t mind reviewing again.

In this patch, since I&apos;m setting cq+, you could make a follow up change to address the nit, but it&apos;s not a big deal either way.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:401
&gt; +    const OpenTypeVerticalData* verticalData = font-&gt;verticalData();
&gt; +    if (verticalData) {
&gt; +        Vector&lt;FloatPoint, kMaxBufferLength&gt; translations;
&gt; +        Vector&lt;GOFFSET, kMaxBufferLength&gt; offsets;

Nit: I would probably move all this code into a helper function, but this is OK too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706587</commentid>
    <comment_count>7</comment_count>
      <attachid>160980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 11:51:56 -0700</bug_when>
    <thetext>Comment on attachment 160980
Updated ChangeLog and Font::drawGlyphs in FontChromiumWin.cpp

Clearing flags on attachment: 160980

Committed r126907: &lt;http://trac.webkit.org/changeset/126907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706588</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 11:51:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710709</commentid>
    <comment_count>9</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2012-09-03 10:28:27 -0700</bug_when>
    <thetext>Hi, having OpenTypeVerticalData.cpp in both webcore_remaining and webcore_platform seems to break incremental linking on Windows Chromium. Is it possible to remove it from one of those libraries?

[2734-&gt;326/3093 ~33] LINK(DLL) webkit.dll
FAILED: d:\src\depot_tools\python_bin\python.exe gyp-win-tool link-wrapper environment.x86 link.exe /nologo /IMPLIB:webkit.dll.lib /DLL /OUT:webkit.dll /PDB:webkit.dll.pdb @webkit.dll.rsp &amp;&amp; d:\src\depot_tools\python_bin\python.exe gyp-win-tool manifest-wrapper environment.x86 mt.exe -nologo -manifest obj\third_party\WebKit\Source\WebKit\chromium\webkit.webkit.dll.intermediate.manifest -out:webkit.dll.manifest
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;public: __thiscall WebCore::OpenTypeVerticalData::OpenTypeVerticalData(class WebCore::FontPlatformData const &amp;)&quot; (??0OpenTypeVerticalData@WebCore@@QAE@ABVFontPlatformData@1@@Z) already defined
in webcore_platform.OpenTypeVerticalData.obj
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;private: void __thiscall WebCore::OpenTypeVerticalData::loadMetrics(class WebCore::FontPlatformData const &amp;)&quot; (?loadMetrics@OpenTypeVerticalData@WebCore@@AAEXABVFontPlatformData@2@@Z) already defined in webcore_platform.OpenTypeVerticalData.obj
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;private: void __thiscall WebCore::OpenTypeVerticalData::loadVerticalGlyphSubstitutions(class WebCore::FontPlatformData const &amp;)&quot; (?loadVerticalGlyphSubstitutions@OpenTypeVerticalData@WebCore@@AAEXABVFontPlatformData@2@@Z) already defined in webcore_platform.OpenTypeVerticalData.obj
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;public: float __thiscall WebCore::OpenTypeVerticalData::advanceHeight(class WebCore::SimpleFontData const *,unsigned short)const &quot; (?advanceHeight@OpenTypeVerticalData@WebCore@@QBEMPBVSimpleFontData@2@G@Z) already defined in webcore_platform.OpenTypeVerticalData.obj
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;public: void __thiscall WebCore::OpenTypeVerticalData::getVerticalTranslationsForGlyphs(class WebCore::SimpleFontData const *,unsigned short const *,unsigned int,float *)const &quot; (?getVerticalTranslationsForGlyphs@OpenTypeVerticalData@WebCore@@QBEXPBVSimpleFontData@2@PBGIPAM@Z) already defined in webcore_platform.OpenTypeVerticalData.obj
webcore_remaining.OpenTypeVerticalData.obj : error LNK2005: &quot;public: void __thiscall WebCore::OpenTypeVerticalData::substituteWithVerticalGlyphs(class WebCore::SimpleFontData const *,class WebCore::GlyphPage *,unsigned int,unsigned int)const &quot; (?substituteWithVerticalGlyphs@OpenTypeVerticalData@WebCore@@QBEXPBVSimpleFontData@2@PAVGlyphPage@2@II@Z) already defined in webcore_platform.OpenTypeVerticalData.obj
webkit.dll : fatal error LNK1169: one or more multiply defined symbols found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711281</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-04 11:32:31 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Hi, having OpenTypeVerticalData.cpp in both webcore_remaining and webcore_platform seems to break incremental linking on Windows Chromium. Is it possible to remove it from one of those libraries?

Looks like this was fixed in bug 95744.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160187</attachid>
            <date>2012-08-23 09:48:27 -0700</date>
            <delta_ts>2012-08-28 07:57:36 -0700</delta_ts>
            <desc>OPENTYPE_VERTICAL support for Chromium Win</desc>
            <filename>94822-1.patch</filename>
            <type>text/plain</type>
            <size>14958</size>
            <attacher name="Koji Ishii">kojii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4Y2Y0YzUzLi40YzAzOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDgtMjMgIEtvamkgSXNoaWkgIDxrb2ppaXNoaUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBPUEVOVFlQRV9WRVJUSUNBTCBzdXBwb3J0IGZvciBDaHJvbWl1bSBXaW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZml4IGJ1
ZyA1MTQ1MCAtIEdseXBocyBpbiB2ZXJ0aWNhbCB0ZXh0IHRlc3RzIGFyZSByb3RhdGVkIDkwIGRl
Z3JlZXMgY2xvY2t3aXNlIG9uIENocm9taXVtIFdpbmRvd3MsCisgICAgICAgIHRoaXMgcGF0Y2gg
YWRkcyBzdXBwb3J0IG9mIE9QRU5UWVBFX1ZFUlRJQ0FMIGZlYXR1cmUgZm9yIENocm9taXVtIFdp
bmRvd3MuCisgICAgICAgIFNpbmNlIGVuYWJsaW5nIE9QRU5UWVBFX1ZFUlRJQ0FMIGZlYXR1cmUg
d291bGQgcmVxdWlyZSByYXRoZXIgYSBiaWcgbnVtYmVyIG9mIHRlc3RzIHRvIHJlYmFzZWxpbmUs
CisgICAgICAgIHRoZSBhY3R1YWwgZml4IGlzIHNlcGFyYXRlZCBpbnRvIHRoaXMgcGF0Y2gsIGFu
ZCB0aGUgZmVhdHVyZSB3aWxsIGJlIGVuYWJsZWQgaW4gYnVnIDUxNDUwLAorICAgICAgICBzbyB0
aGF0IGl0IGlzIGVhc2llciB0byByZXZlcnQgb24gYW55IHBlcmYgcmVncmVzc2lvbnMsIGFzIHN1
Z2dlc3RlZCBieSBUb255IGluIGNvbW1lbnQgIzUwIG9mIGJ1ZyA1MTQ1MC4KKworICAgICAgICBB
bGwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIGFyZSBiZWhpbmQgI2lmIEVOQUJMRShPUEVOVFlQRV9W
RVJUSUNBTCkgYW5kIHRoZXJlZm9yZSBubyB0ZXN0cyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBwYXRj
aC4KKyAgICAgICAgQWxsIHRlc3RzIGluIGZhc3Qvd3JpdGluZy1tb2RlcyBjdXJyZW50bHkgc2tp
cHBlZCB3aWxsIGJlIGVuYWJsZWQgaW4gYnVnIDUxNDUwLgorCisgICAgICAgICogV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXA6IEFkZGVkIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
Ki4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOiBTS2lhIHVzZXMgdWludDMyX3QgYXMgRm9udEZpbGVLZXkuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsbCk6IFJlcGxhY2UgdmVydGljYWwgYWx0ZXJuYXRlIGdseXBocyBpZiB2
ZXJ0aWNhbCBmbG93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmNwcDogQWRkZWQgbV92ZXJ0aWNhbERhdGEuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250
RGF0YTo6U2ltcGxlRm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6dmVydGljYWxE
YXRhKToKKyAgICAgICAgKFNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUZvbnREYXRhOjp3aWR0aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJh
d0dseXBocyk6IERyYXcgZ2x5cGhzIHZlcnRpY2FseSBpZiBmb250LT52ZXJ0aWNhbERhdGEoKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6dmVydGlj
YWxEYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRm9udFBsYXRmb3JtRGF0YSk6IEFkZGVkIHZlcnRpY2Fs
RGF0YSgpIGFuZCBvcGVuVHlwZVRhYmxlKCkuCisKIDIwMTItMDgtMjMgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXNlIHRl
bXBvcmFyeSBkaXJlY3RvcnkgZm9yIG1vZHVsZXMgZ2VuZXJhdGVkIGJ5IGNvbXBpbGUtZnJvbnQt
ZW5kLnB5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGRiMDRmNDEu
LjMyZjE1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xODE4
LDYgKzE4MTgsMTAgQEAKICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAnUG9zaXhcXC5jcHAkJ10sCiAKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzXFwuaCQnXSwKKyAgICAgICAgICAg
IFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YVxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YVxcLmgkJ10sCisKICAgICAgICAgICAgICMg
VGhlIENocm9taXVtIFdpbiBjdXJyZW50bHkgdXNlcyBHbHlwaFBhZ2VUcmVlTm9kZUNocm9taXVt
V2luLmNwcCBmcm9tCiAgICAgICAgICAgICAjIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtLCBp
bmNsdWRlZCBieSByZWdleCBhYm92ZSwgaW5zdGVhZC4KICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDYWNoZVNraWFcXC5jcHAkJ10sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggYTZlNjJjYS4uYmNmZGRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzg3Miw4
ICszODcyLDExIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudmcvRUdMRGlzcGxheU9wZW5WRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL29wZW52Zy9FR0xEaXNwbGF5T3BlblZHLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9FR0xVdGlscy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgKaW5kZXggODU4ZGIyMS4uMjFkMDkwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTEwNiw3ICsxMDYsMTEgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCisjaWYgVVNF
KFNLSUEpCisgICAgdHlwZWRlZiB1aW50MzJfdCBGb250RmlsZUtleTsKKyNlbHNlCiAgICAgdHlw
ZWRlZiBBdG9taWNTdHJpbmcgRm9udEZpbGVLZXk7CisjZW5kaWYKICAgICBPcGVuVHlwZVZlcnRp
Y2FsRGF0YSogZ2V0VmVydGljYWxEYXRhKGNvbnN0IEZvbnRGaWxlS2V5JiwgY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAppbmRleCA4N2U5M2ZkLi5hMmYwZDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VU
cmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlVHJlZU5vZGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiR2x5cGhQYWdlVHJlZU5vZGUuaCIKIAorI2luY2x1ZGUgIk9wZW5UeXBlVmVydGlj
YWxEYXRhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWdtZW50
ZWRGb250RGF0YS5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC0xMzAsNyArMTMx
LDEyIEBAIHN0YXRpYyBib29sIGZpbGwoR2x5cGhQYWdlKiBwYWdlVG9GaWxsLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqCiAgICAgaWYgKFNpbXBsZUZvbnREYXRhOjpB
ZGRpdGlvbmFsRm9udERhdGEqIGFkZGl0aW9uYWxGb250RGF0YSA9IGZvbnREYXRhLT5mb250RGF0
YSgpKQogICAgICAgICByZXR1cm4gYWRkaXRpb25hbEZvbnREYXRhLT5maWxsU1ZHR2x5cGhQYWdl
KHBhZ2VUb0ZpbGwsIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udERh
dGEpOwogI2VuZGlmCi0gICAgcmV0dXJuIHBhZ2VUb0ZpbGwtPmZpbGwob2Zmc2V0LCBsZW5ndGgs
IGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250RGF0YSk7CisgICAgYm9vbCBoYXNHbHlwaHMgPSBw
YWdlVG9GaWxsLT5maWxsKG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9u
dERhdGEpOworI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKKyAgICBpZiAoaGFzR2x5cGhz
ICYmIGZvbnREYXRhLT52ZXJ0aWNhbERhdGEoKSkKKyAgICAgICAgZm9udERhdGEtPnZlcnRpY2Fs
RGF0YSgpLT5zdWJzdGl0dXRlV2l0aFZlcnRpY2FsR2x5cGhzKGZvbnREYXRhLCBwYWdlVG9GaWxs
LCBvZmZzZXQsIGxlbmd0aCk7CisjZW5kaWYKKyAgICByZXR1cm4gaGFzR2x5cGhzOwogfQogCiB2
b2lkIEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9u
dERhdGEsIHVuc2lnbmVkIHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAKaW5kZXggMTIzMmU0Ny4uZWFlOTViZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUg
IkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAt
NDksMTEgKzUwLDIwIEBAIFNpbXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIGJvb2wgaXNDdXN0CiAgICAgLCBtX2lzTG9hZGlu
Zyhpc0xvYWRpbmcpCiAgICAgLCBtX2lzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2soaXNUZXh0T3Jp
ZW50YXRpb25GYWxsYmFjaykKICAgICAsIG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayhmYWxz
ZSkKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCisgICAgLCBtX3ZlcnRpY2FsRGF0YSgw
KQorI2VuZGlmCiAgICAgLCBtX2hhc1ZlcnRpY2FsR2x5cGhzKGZhbHNlKQogewogICAgIHBsYXRm
b3JtSW5pdCgpOwogICAgIHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgcGxhdGZvcm1DaGFyV2lk
dGhJbml0KCk7CisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorICAgIGlmIChwbGF0Zm9y
bURhdGEub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbCAmJiAhaXNUZXh0T3JpZW50YXRpb25GYWxs
YmFjaykgeworICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHBsYXRmb3JtRGF0YS52ZXJ0aWNhbERh
dGEoKTsKKyAgICAgICAgbV9oYXNWZXJ0aWNhbEdseXBocyA9IG1fdmVydGljYWxEYXRhICYmIG1f
dmVydGljYWxEYXRhLT5oYXNWZXJ0aWNhbE1ldHJpY3MoKTsKKyAgICB9CisjZW5kaWYKIH0KIAog
U2ltcGxlRm9udERhdGE6OlNpbXBsZUZvbnREYXRhKFBhc3NPd25QdHI8QWRkaXRpb25hbEZvbnRE
YXRhPiBmb250RGF0YSwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMpCkBAIC02NCw2ICs3NCw5IEBAIFNpbXBsZUZvbnREYXRhOjpTaW1wbGVG
b250RGF0YShQYXNzT3duUHRyPEFkZGl0aW9uYWxGb250RGF0YT4gZm9udERhdGEsIGZsb2F0IGZv
CiAgICAgLCBtX2lzTG9hZGluZyhmYWxzZSkKICAgICAsIG1faXNUZXh0T3JpZW50YXRpb25GYWxs
YmFjayhmYWxzZSkKICAgICAsIG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayhmYWxzZSkKKyNp
ZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCisgICAgLCBtX3ZlcnRpY2FsRGF0YSgwKQorI2Vu
ZGlmCiAgICAgLCBtX2hhc1ZlcnRpY2FsR2x5cGhzKGZhbHNlKQogewogICAgIG1fZm9udERhdGEt
PmluaXRpYWxpemVGb250RGF0YSh0aGlzLCBmb250U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAppbmRleCBjMGIwNDRkLi5lZWI4
Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVG
b250RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURhdGE7IH0K
ICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCi0gICAgY29uc3QgT3BlblR5cGVWZXJ0aWNh
bERhdGEqIHZlcnRpY2FsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0gLy8gRklYTUU6IGltcGxl
bWVudAorICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25z
dCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0YTsgfQogI2VuZGlmCiAKICAgICBTaW1wbGVGb250RGF0
YSogc21hbGxDYXBzRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CkBAIC0y
MjksNiArMjI5LDkgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgT3duUHRyPEdseXBoTWV0cmlj
c01hcDxGbG9hdFJlY3Q+ID4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAgIG11dGFibGUgR2x5cGhN
ZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsKKyNpZiBFTkFCTEUoT1BFTlRZUEVf
VkVSVElDQUwpCisgICAgY29uc3QgT3BlblR5cGVWZXJ0aWNhbERhdGEqIG1fdmVydGljYWxEYXRh
OworI2VuZGlmCiAKICAgICBib29sIG1fdHJlYXRBc0ZpeGVkUGl0Y2g7CiAgICAgYm9vbCBtX2lz
Q3VzdG9tRm9udDsgIC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBjdXN0b20gZm9udCBsb2FkZWQg
dmlhIEBmb250LWZhY2UKQEAgLTMxNyw2ICszMjAsMTQgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBT
aW1wbGVGb250RGF0YTo6d2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIGlm
IChtX2ZvbnREYXRhKQogICAgICAgICB3aWR0aCA9IG1fZm9udERhdGEtPndpZHRoRm9yU1ZHR2x5
cGgoZ2x5cGgsIG1fcGxhdGZvcm1EYXRhLnNpemUoKSk7CisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZF
UlRJQ0FMKQorICAgIGVsc2UgaWYgKG1fdmVydGljYWxEYXRhKQorI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKSB8fCBQTEFURk9STShXWCkgfHwgVVNFKFNLSUFfT05fTUFDX0NIUk9NSVVNKQorICAg
ICAgICB3aWR0aCA9IG1fdmVydGljYWxEYXRhLT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKSAr
IG1fc3ludGhldGljQm9sZE9mZnNldDsKKyNlbHNlCisgICAgICAgIHdpZHRoID0gbV92ZXJ0aWNh
bERhdGEtPmFkdmFuY2VIZWlnaHQodGhpcywgZ2x5cGgpOworI2VuZGlmCisjZW5kaWYKICAgICBl
bHNlCiAgICAgICAgIHdpZHRoID0gcGxhdGZvcm1XaWR0aEZvckdseXBoKGdseXBoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRDaHJvbWl1bVdpbi5jcHAKaW5kZXggM2QzMGUxOC4uY2VkNjNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2hyb21pdW1XaW4uY3BwCkBAIC0zOTIsOCArMzkyLDI3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICBjb25zdCBpbnQga01heEJ1
ZmZlckxlbmd0aCA9IDI1NjsKICAgICBWZWN0b3I8V09SRCwga01heEJ1ZmZlckxlbmd0aD4gZ2x5
cGhzOwogICAgIFZlY3RvcjxpbnQsIGtNYXhCdWZmZXJMZW5ndGg+IGFkdmFuY2VzOworI2lmIEVO
QUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKKyAgICBWZWN0b3I8RmxvYXRQb2ludCwga01heEJ1ZmZl
ckxlbmd0aD4gdHJhbnNsYXRpb25zOworICAgIFZlY3RvcjxHT0ZGU0VULCBrTWF4QnVmZmVyTGVu
Z3RoPiBvZmZzZXRzOworI2VuZGlmCiAgICAgaW50IGdseXBoSW5kZXggPSAwOyAgLy8gVGhlIHN0
YXJ0aW5nIGdseXBoIG9mIHRoZSBjdXJyZW50IGNodW5rLgogCisjaWYgRU5BQkxFKE9QRU5UWVBF
X1ZFUlRJQ0FMKQorICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEg
PSBmb250LT52ZXJ0aWNhbERhdGEoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gc2F2ZWRNYXRyaXg7
CisgICAgU2tTY2FsYXIgdmVydGljYWxPcmlnaW5YOworICAgIGlmICh2ZXJ0aWNhbERhdGEpIHsK
KyAgICAgICAgLy8gU2tpYSBkb2Vzbid0IGhhdmUgbWF0cml4IGZvciBnbHlwaCBjb29yZGluYXRl
IHNwYWNlLCBzbyB3ZSByb3RhdGUgYmFjayB0aGUgQ1RNLgorICAgICAgICBzYXZlZE1hdHJpeCA9
IGdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y29u
Y2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgwLCAtMSwgMSwgMCwgcG9pbnQueCgpLCBwb2ludC55KCkp
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKDEs
IDAsIDAsIDEsIC1wb2ludC54KCksIC1wb2ludC55KCkpKTsKKworICAgICAgICBjb25zdCBGb250
TWV0cmljcyYgbWV0cmljcyA9IGZvbnQtPmZvbnRNZXRyaWNzKCk7CisgICAgICAgIHZlcnRpY2Fs
T3JpZ2luWCA9IFNrRmxvYXRUb1NjYWxhcihwb2ludC54KCkgKyBtZXRyaWNzLmZsb2F0QXNjZW50
KCkgLSBtZXRyaWNzLmZsb2F0QXNjZW50KElkZW9ncmFwaGljQmFzZWxpbmUpKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIC8vIEluIG9yZGVyIHRvIHJvdW5kIGFsbCBvZmZzZXRzIHRvIHRoZSBjb3Jy
ZWN0IHBpeGVsIGJvdW5kYXJ5LCB0aGlzIGNvZGUga2VlcHMgdHJhY2sgb2YgdGhlIGFic29sdXRl
IHBvc2l0aW9uCiAgICAgLy8gb2YgZWFjaCBnbHlwaCBpbiBmbG9hdGluZyBwb2ludCB1bml0cyBh
bmQgcm91bmRzIHRvIGludGVnZXIgYWR2YW5jZXMgYXQgdGhlIGxhc3QgcG9zc2libGUgbW9tZW50
LgogCkBAIC00MDYsNiArNDI1LDI3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgYWR2YW5jZXMucmVzaXplKGN1ckxlbik7
CiAKICAgICAgICAgZmxvYXQgY3VycmVudFdpZHRoID0gMDsKKyNpZiBFTkFCTEUoT1BFTlRZUEVf
VkVSVElDQUwpCisgICAgICAgIGlmICh2ZXJ0aWNhbERhdGEpIHsKKyAgICAgICAgICAgIGNvbnN0
IEdseXBoKiBnbHlwaHMgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSArIGdseXBoSW5kZXgpOwor
ICAgICAgICAgICAgdHJhbnNsYXRpb25zLnJlc2l6ZShjdXJMZW4pOworICAgICAgICAgICAgdmVy
dGljYWxEYXRhLT5nZXRWZXJ0aWNhbFRyYW5zbGF0aW9uc0ZvckdseXBocyhmb250LCAmZ2x5cGhz
WzBdLCBjdXJMZW4sIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmdHJhbnNsYXRpb25zWzBdKSk7
CisgICAgICAgICAgICAvLyBUbyBwb3NpdGlvbiBnbHlwaHMgdmVydGljYWxseSwgd2UgdXNlIG9m
ZnNldHMgaW5zdGVhZCBvZiBhZHZhbmNlcy4KKyAgICAgICAgICAgIGFkdmFuY2VzLmZpbGwoMCk7
CisgICAgICAgICAgICBvZmZzZXRzLnJlc2l6ZShjdXJMZW4pOworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjdXJMZW47ICsraSwgKytnbHlwaEluZGV4KSB7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0c1tpXS5kdSA9IGxyb3VuZGYodHJhbnNsYXRpb25zW2ldLngoKSk7CisgICAgICAg
ICAgICAgICAgb2Zmc2V0c1tpXS5kdiA9IC1scm91bmRmKGN1cnJlbnRXaWR0aCAtIHRyYW5zbGF0
aW9uc1tpXS55KCkpOworICAgICAgICAgICAgICAgIGN1cnJlbnRXaWR0aCArPSBnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoZnJvbSArIGdseXBoSW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgU2tQb2ludCBvcmlnaW47CisgICAgICAgICAgICBvcmlnaW4uc2V0KHZlcnRpY2FsT3JpZ2lu
WCwgU2tGbG9hdFRvU2NhbGFyKHBvaW50LnkoKSArIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54
KCkpKTsKKyAgICAgICAgICAgIGhvcml6b250YWxPZmZzZXQgKz0gY3VycmVudFdpZHRoOworICAg
ICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsIGZvbnQtPnBsYXRmb3JtRGF0
YSgpLCBjdXJMZW4sICZnbHlwaHNbMF0sICZhZHZhbmNlc1swXSwgJm9mZnNldHNbMF0sICZvcmln
aW4pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY3VyTGVuOyArK2ksICsrZ2x5cGhJbmRleCkgewogICAgICAg
ICAgICAgZ2x5cGhzW2ldID0gZ2x5cGhCdWZmZXIuZ2x5cGhBdChmcm9tICsgZ2x5cGhJbmRleCk7
CiAgICAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChm
cm9tICsgZ2x5cGhJbmRleCk7CkBAIC00MjksNiArNDY5LDExIEBAIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgb3JpZ2luLmZY
ICs9IFNrRmxvYXRUb1NjYWxhcihob3Jpem9udGFsT2Zmc2V0IC0gcG9pbnQueCgpIC0gY3VycmVu
dFdpZHRoKTsKICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsIGZvbnQtPnBs
YXRmb3JtRGF0YSgpLCBjdXJMZW4sICZnbHlwaHNbMF0sICZhZHZhbmNlc1swXSwgMCwgJm9yaWdp
bik7CiAgICAgfQorCisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorICAgIGlmICh2ZXJ0
aWNhbERhdGEpCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q1RNKHNhdmVkTWF0cml4KTsK
KyNlbmRpZgogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNXaW4oR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNo
cm9taXVtV2luLmNwcAppbmRleCA2ZjI3ZjhhLi4xODNhZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21p
dW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5jcHAKQEAgLTE5MSw2ICsxOTEsMzEgQEAgU0NS
SVBUX0ZPTlRQUk9QRVJUSUVTKiBGb250UGxhdGZvcm1EYXRhOjpzY3JpcHRGb250UHJvcGVydGll
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2NyaXB0Rm9udFByb3BlcnRpZXM7CiB9CiAKKyNpZiBF
TkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCitjb25zdCBPcGVuVHlwZVZlcnRpY2FsRGF0YSogRm9u
dFBsYXRmb3JtRGF0YTo6dmVydGljYWxEYXRhKCkgY29uc3QKK3sKKyAgICBTa0ZvbnRJRCBpZCA9
IHR5cGVmYWNlKCktPnVuaXF1ZUlEKCk7CisgICAgcmV0dXJuIGZvbnRDYWNoZSgpLT5nZXRWZXJ0
aWNhbERhdGEoaWQsICp0aGlzKTsKK30KKworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0Cit7CisgICAg
SFduZERDIGhkYygwKTsKKyAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBo
Zm9udCgpKTsKKworICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAw
LCAwKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKHNpemUgIT0g
R0RJX0VSUk9SKSB7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpemUp
OworICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZP
SUQpYnVmZmVyLT5kYXRhKCksIHNpemUpOworICAgICAgICBBU1NFUlQocmVzdWx0ID09IHNpemUp
OworICAgIH0KKworICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOworICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZSgpOworfQorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiBTdHJpbmcgRm9u
dFBsYXRmb3JtRGF0YTo6ZGVzY3JpcHRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9t
aXVtV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaAppbmRleCA1NWE1YzJiLi5iNWViZWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZv
cm1EYXRhQ2hyb21pdW1XaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUzLDYg
KzU0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2tUeXBlZmFjZSogQ3JlYXRlVHlwZWZhY2VG
cm9tSEZvbnQoSEZPTlQsIGludCogc2l6ZSwgaW50KiBsZlF1YWxpdHkpOwogCiBjbGFzcyBGb250
RGVzY3JpcHRpb247CisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorY2xhc3MgT3BlblR5
cGVWZXJ0aWNhbERhdGE7CisjZW5kaWYKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJs
aWM6CkBAIC05Miw2ICs5NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ZvbnQgPT0g
b3RoZXIubV9mb250ICYmIG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV9vcmllbnRhdGlvbiA9
PSBvdGhlci5tX29yaWVudGF0aW9uOwogICAgIH0KIAorI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJU
SUNBTCkKKyAgICBjb25zdCBPcGVuVHlwZVZlcnRpY2FsRGF0YSogdmVydGljYWxEYXRhKCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0OworI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYK
</data>
<flag name="review"
          id="170705"
          type_id="1"
          status="+"
          setter="tony"
    />
    <flag name="commit-queue"
          id="170706"
          type_id="3"
          status="-"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160980</attachid>
            <date>2012-08-28 07:54:09 -0700</date>
            <delta_ts>2012-08-28 11:51:55 -0700</delta_ts>
            <desc>Updated ChangeLog and Font::drawGlyphs in FontChromiumWin.cpp</desc>
            <filename>94822-2.patch</filename>
            <type>text/plain</type>
            <size>14937</size>
            <attacher name="Koji Ishii">kojii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2RlNmUyLi4zMTJhMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDgtMjggIEtvamkgSXNoaWkgIDxrb2ppaXNoaUBnbWFpbC5jb20+CisKKyAgICAg
ICAgT1BFTlRZUEVfVkVSVElDQUwgc3VwcG9ydCBmb3IgQ2hyb21pdW0gV2luCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDgyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGZpeCBidWcgNTE0NTAgLSBH
bHlwaHMgaW4gdmVydGljYWwgdGV4dCB0ZXN0cyBhcmUgcm90YXRlZCA5MCBkZWdyZWVzIGNsb2Nr
d2lzZSBvbiBDaHJvbWl1bSBXaW5kb3dzLAorICAgICAgICB0aGlzIHBhdGNoIGFkZHMgc3VwcG9y
dCBvZiBPUEVOVFlQRV9WRVJUSUNBTCBmZWF0dXJlIGZvciBDaHJvbWl1bSBXaW5kb3dzLgorICAg
ICAgICBTaW5jZSBlbmFibGluZyBPUEVOVFlQRV9WRVJUSUNBTCBmZWF0dXJlIHdvdWxkIHJlcXVp
cmUgcmF0aGVyIGEgYmlnIG51bWJlciBvZiB0ZXN0cyB0byByZWJhc2VsaW5lLAorICAgICAgICB0
aGUgYWN0dWFsIGZpeCBpcyBzZXBhcmF0ZWQgaW50byB0aGlzIHBhdGNoLCBhbmQgdGhlIGZlYXR1
cmUgd2lsbCBiZSBlbmFibGVkIGluIGJ1ZyA1MTQ1MCwKKyAgICAgICAgc28gdGhhdCBpdCBpcyBl
YXNpZXIgdG8gcmV2ZXJ0IG9uIGFueSBwZXJmIHJlZ3Jlc3Npb25zLCBhcyBzdWdnZXN0ZWQgYnkg
VG9ueSBpbiBjb21tZW50ICM1MCBvZiBidWcgNTE0NTAuCisKKyAgICAgICAgQWxsIGNoYW5nZXMg
aW4gdGhpcyBwYXRjaCBhcmUgYmVoaW5kICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpIGFu
ZCB0aGVyZWZvcmUgbm8gdGVzdHMgYXJlIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2guCisgICAgICAg
IEFsbCB0ZXN0cyBpbiBmYXN0L3dyaXRpbmctbW9kZXMgY3VycmVudGx5IHNraXBwZWQgd2lsbCBi
ZSBlbmFibGVkIGluIGJ1ZyA1MTQ1MC4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwOiBBZGRlZCBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZSouCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaDogU0tpYSB1c2VzIHVpbnQzMl90IGFzIEZvbnRGaWxlS2V5LgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGwpOiBSZXBsYWNlIHZlcnRpY2FsIGFsdGVybmF0ZSBnbHlwaHMgaWYgdmVydGljYWwgZmxv
dy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6IEFkZGVk
IG1fdmVydGljYWxEYXRhLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OlNpbXBs
ZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnZlcnRpY2FsRGF0YSk6CisgICAg
ICAgIChTaW1wbGVGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
d2lkdGhGb3JHbHlwaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOiBE
cmF3IGdseXBocyB2ZXJ0aWNhbHkgaWYgZm9udC0+dmVydGljYWxEYXRhKCkuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEZvbnRQbGF0Zm9ybURhdGEpOiBBZGRlZCB2ZXJ0aWNhbERhdGEoKSBhbmQg
b3BlblR5cGVUYWJsZSgpLgorCiAyMDEyLTA4LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIENyYXNoIGluIEVkaXRpbmdTdHlsZTo6bWVyZ2VT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA0OGI3MzI0Li40
MDgyZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTg0NCw2
ICsxODQ0LDEwIEBACiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydleGNs
dWRlJywgJ1Bvc2l4XFwuY3BwJCddLAogCisgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlc1xcLmgkJ10sCisgICAgICAgICAgICBb
J2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGFcXC5jcHAkJ10sCisgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGFcXC5oJCddLAorCiAgICAgICAgICAgICAjIFRo
ZSBDaHJvbWl1bSBXaW4gY3VycmVudGx5IHVzZXMgR2x5cGhQYWdlVHJlZU5vZGVDaHJvbWl1bVdp
bi5jcHAgZnJvbQogICAgICAgICAgICAgIyBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bSwgaW5j
bHVkZWQgYnkgcmVnZXggYWJvdmUsIGluc3RlYWQuCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q2FjaGVTa2lhXFwuY3BwJCddLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDJmYTM0OTkuLjM3NzJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM4NzMsOCAr
Mzg3MywxMSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0VHTERpc3BsYXlPcGVuVkcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvRUdMRGlzcGxheU9wZW5WRy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudmcvRUdMVXRpbHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg1OGRiMjEuLjIxZDA5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDYsNyArMTA2LDExIEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorI2lmIFVTRShT
S0lBKQorICAgIHR5cGVkZWYgdWludDMyX3QgRm9udEZpbGVLZXk7CisjZWxzZQogICAgIHR5cGVk
ZWYgQXRvbWljU3RyaW5nIEZvbnRGaWxlS2V5OworI2VuZGlmCiAgICAgT3BlblR5cGVWZXJ0aWNh
bERhdGEqIGdldFZlcnRpY2FsRGF0YShjb25zdCBGb250RmlsZUtleSYsIGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKaW5kZXggODdlOTNmZC4uYTJmMGQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFn
ZVRyZWVOb2RlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkdseXBoUGFnZVRyZWVOb2RlLmgiCiAKKyNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2Fs
RGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVk
Rm9udERhdGEuaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgpAQCAtMTMwLDcgKzEzMSwx
MiBAQCBzdGF0aWMgYm9vbCBmaWxsKEdseXBoUGFnZSogcGFnZVRvRmlsbCwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKgogICAgIGlmIChTaW1wbGVGb250RGF0YTo6QWRk
aXRpb25hbEZvbnREYXRhKiBhZGRpdGlvbmFsRm9udERhdGEgPSBmb250RGF0YS0+Zm9udERhdGEo
KSkKICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxGb250RGF0YS0+ZmlsbFNWR0dseXBoUGFnZShw
YWdlVG9GaWxsLCBvZmZzZXQsIGxlbmd0aCwgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGZvbnREYXRh
KTsKICNlbmRpZgotICAgIHJldHVybiBwYWdlVG9GaWxsLT5maWxsKG9mZnNldCwgbGVuZ3RoLCBi
dWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udERhdGEpOworICAgIGJvb2wgaGFzR2x5cGhzID0gcGFn
ZVRvRmlsbC0+ZmlsbChvZmZzZXQsIGxlbmd0aCwgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGZvbnRE
YXRhKTsKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCisgICAgaWYgKGhhc0dseXBocyAm
JiBmb250RGF0YS0+dmVydGljYWxEYXRhKCkpCisgICAgICAgIGZvbnREYXRhLT52ZXJ0aWNhbERh
dGEoKS0+c3Vic3RpdHV0ZVdpdGhWZXJ0aWNhbEdseXBocyhmb250RGF0YSwgcGFnZVRvRmlsbCwg
b2Zmc2V0LCBsZW5ndGgpOworI2VuZGlmCisgICAgcmV0dXJuIGhhc0dseXBoczsKIH0KIAogdm9p
ZCBHbHlwaFBhZ2VUcmVlTm9kZTo6aW5pdGlhbGl6ZVBhZ2UoY29uc3QgRm9udERhdGEqIGZvbnRE
YXRhLCB1bnNpZ25lZCBwYWdlTnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmluZGV4IDEyMzJlNDcuLmVhZTk1YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJG
b250Q2FjaGUuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQ5
LDExICs1MCwyMCBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBib29sIGlzQ3VzdAogICAgICwgbV9pc0xvYWRpbmco
aXNMb2FkaW5nKQogICAgICwgbV9pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKGlzVGV4dE9yaWVu
dGF0aW9uRmFsbGJhY2spCiAgICAgLCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2soZmFsc2Up
CisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorICAgICwgbV92ZXJ0aWNhbERhdGEoMCkK
KyNlbmRpZgogICAgICwgbV9oYXNWZXJ0aWNhbEdseXBocyhmYWxzZSkKIHsKICAgICBwbGF0Zm9y
bUluaXQoKTsKICAgICBwbGF0Zm9ybUdseXBoSW5pdCgpOwogICAgIHBsYXRmb3JtQ2hhcldpZHRo
SW5pdCgpOworI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKKyAgICBpZiAocGxhdGZvcm1E
YXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwgJiYgIWlzVGV4dE9yaWVudGF0aW9uRmFsbGJh
Y2spIHsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBwbGF0Zm9ybURhdGEudmVydGljYWxEYXRh
KCk7CisgICAgICAgIG1faGFzVmVydGljYWxHbHlwaHMgPSBtX3ZlcnRpY2FsRGF0YSAmJiBtX3Zl
cnRpY2FsRGF0YS0+aGFzVmVydGljYWxNZXRyaWNzKCk7CisgICAgfQorI2VuZGlmCiB9CiAKIFNp
bXBsZUZvbnREYXRhOjpTaW1wbGVGb250RGF0YShQYXNzT3duUHRyPEFkZGl0aW9uYWxGb250RGF0
YT4gZm9udERhdGEsIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKQpAQCAtNjQsNiArNzQsOSBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9u
dERhdGEoUGFzc093blB0cjxBZGRpdGlvbmFsRm9udERhdGE+IGZvbnREYXRhLCBmbG9hdCBmbwog
ICAgICwgbV9pc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2lzVGV4dE9yaWVudGF0aW9uRmFsbGJh
Y2soZmFsc2UpCiAgICAgLCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2soZmFsc2UpCisjaWYg
RU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorICAgICwgbV92ZXJ0aWNhbERhdGEoMCkKKyNlbmRp
ZgogICAgICwgbV9oYXNWZXJ0aWNhbEdseXBocyhmYWxzZSkKIHsKICAgICBtX2ZvbnREYXRhLT5p
bml0aWFsaXplRm9udERhdGEodGhpcywgZm9udFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXggODIwYzI2NS4uYzRkM2I5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9u
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhOyB9CiAj
aWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQotICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxE
YXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiAwOyB9IC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICBjb25zdCBPcGVuVHlwZVZlcnRpY2FsRGF0YSogdmVydGljYWxEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJ0aWNhbERhdGE7IH0KICNlbmRpZgogCiAgICAgU2ltcGxlRm9udERhdGEq
IHNtYWxsQ2Fwc0ZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwpAQCAtMjI5
LDYgKzIyOSw5IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIE93blB0cjxHbHlwaE1ldHJpY3NN
YXA8RmxvYXRSZWN0PiA+IG1fZ2x5cGhUb0JvdW5kc01hcDsKICAgICBtdXRhYmxlIEdseXBoTWV0
cmljc01hcDxmbG9hdD4gbV9nbHlwaFRvV2lkdGhNYXA7CisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZF
UlRJQ0FMKQorICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxEYXRhKiBtX3ZlcnRpY2FsRGF0YTsK
KyNlbmRpZgogCiAgICAgYm9vbCBtX3RyZWF0QXNGaXhlZFBpdGNoOwogICAgIGJvb2wgbV9pc0N1
c3RvbUZvbnQ7ICAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgY3VzdG9tIGZvbnQgbG9hZGVkIHZp
YSBAZm9udC1mYWNlCkBAIC0zMTcsNiArMzIwLDE0IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgU2lt
cGxlRm9udERhdGE6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBpZiAo
bV9mb250RGF0YSkKICAgICAgICAgd2lkdGggPSBtX2ZvbnREYXRhLT53aWR0aEZvclNWR0dseXBo
KGdseXBoLCBtX3BsYXRmb3JtRGF0YS5zaXplKCkpOworI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJU
SUNBTCkKKyAgICBlbHNlIGlmIChtX3ZlcnRpY2FsRGF0YSkKKyNpZiBVU0UoQ0cpIHx8IFVTRShD
QUlSTykgfHwgUExBVEZPUk0oV1gpIHx8IFVTRShTS0lBX09OX01BQ19DSFJPTUlVTSkKKyAgICAg
ICAgd2lkdGggPSBtX3ZlcnRpY2FsRGF0YS0+YWR2YW5jZUhlaWdodCh0aGlzLCBnbHlwaCkgKyBt
X3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisjZWxzZQorICAgICAgICB3aWR0aCA9IG1fdmVydGljYWxE
YXRhLT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKTsKKyNlbmRpZgorI2VuZGlmCiAgICAgZWxz
ZQogICAgICAgICB3aWR0aCA9IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChnbHlwaCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJv
bWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250Q2hyb21pdW1XaW4uY3BwCmluZGV4IDNkMzBlMTguLmFmZDA4ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcApAQCAtMzkwLDE1ICszOTAsNTYgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIFdlIGRyYXcgdGhlIGds
eXBocyBpbiBjaHVua3MgdG8gYXZvaWQgaGF2aW5nIHRvIGRvIGEgaGVhcCBhbGxvY2F0aW9uIGZv
cgogICAgIC8vIHRoZSBhcnJheXMgb2YgY2hhcmFjdGVycyBhbmQgYWR2YW5jZXMuCiAgICAgY29u
c3QgaW50IGtNYXhCdWZmZXJMZW5ndGggPSAyNTY7Ci0gICAgVmVjdG9yPFdPUkQsIGtNYXhCdWZm
ZXJMZW5ndGg+IGdseXBoczsKICAgICBWZWN0b3I8aW50LCBrTWF4QnVmZmVyTGVuZ3RoPiBhZHZh
bmNlczsKICAgICBpbnQgZ2x5cGhJbmRleCA9IDA7ICAvLyBUaGUgc3RhcnRpbmcgZ2x5cGggb2Yg
dGhlIGN1cnJlbnQgY2h1bmsuCiAKKyAgICBmbG9hdCBob3Jpem9udGFsT2Zmc2V0ID0gcG9pbnQu
eCgpOyAvLyBUaGUgZmxvYXRpbmcgcG9pbnQgb2Zmc2V0IG9mIHRoZSBsZWZ0IHNpZGUgb2YgdGhl
IGN1cnJlbnQgZ2x5cGguCisjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorICAgIGNvbnN0
IE9wZW5UeXBlVmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEgPSBmb250LT52ZXJ0aWNhbERhdGEo
KTsKKyAgICBpZiAodmVydGljYWxEYXRhKSB7CisgICAgICAgIFZlY3RvcjxGbG9hdFBvaW50LCBr
TWF4QnVmZmVyTGVuZ3RoPiB0cmFuc2xhdGlvbnM7CisgICAgICAgIFZlY3RvcjxHT0ZGU0VULCBr
TWF4QnVmZmVyTGVuZ3RoPiBvZmZzZXRzOworCisgICAgICAgIC8vIFNraWEgZG9lc24ndCBoYXZl
IG1hdHJpeCBmb3IgZ2x5cGggY29vcmRpbmF0ZSBzcGFjZSwgc28gd2Ugcm90YXRlIGJhY2sgdGhl
IENUTS4KKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHNhdmVkTWF0cml4ID0gZ3JhcGhpY3NDb250
ZXh0LT5nZXRDVE0oKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jb25jYXRDVE0oQWZmaW5l
VHJhbnNmb3JtKDAsIC0xLCAxLCAwLCBwb2ludC54KCksIHBvaW50LnkoKSkpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgLXBv
aW50LngoKSwgLXBvaW50LnkoKSkpOworCisgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBtZXRy
aWNzID0gZm9udC0+Zm9udE1ldHJpY3MoKTsKKyAgICAgICAgU2tTY2FsYXIgdmVydGljYWxPcmln
aW5YID0gU2tGbG9hdFRvU2NhbGFyKHBvaW50LngoKSArIG1ldHJpY3MuZmxvYXRBc2NlbnQoKSAt
IG1ldHJpY3MuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkpOworICAgICAgICB3aGls
ZSAoZ2x5cGhJbmRleCA8IG51bUdseXBocykgeworICAgICAgICAgICAgLy8gSG93IG1hbnkgY2hh
cnMgd2lsbCBiZSBpbiB0aGlzIGNodW5rPworICAgICAgICAgICAgaW50IGN1ckxlbiA9IHN0ZDo6
bWluKGtNYXhCdWZmZXJMZW5ndGgsIG51bUdseXBocyAtIGdseXBoSW5kZXgpOworCisgICAgICAg
ICAgICBjb25zdCBHbHlwaCogZ2x5cGhzID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20gKyBnbHlw
aEluZGV4KTsKKyAgICAgICAgICAgIHRyYW5zbGF0aW9ucy5yZXNpemUoY3VyTGVuKTsKKyAgICAg
ICAgICAgIHZlcnRpY2FsRGF0YS0+Z2V0VmVydGljYWxUcmFuc2xhdGlvbnNGb3JHbHlwaHMoZm9u
dCwgJmdseXBoc1swXSwgY3VyTGVuLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJnRyYW5zbGF0
aW9uc1swXSkpOworICAgICAgICAgICAgLy8gVG8gcG9zaXRpb24gZ2x5cGhzIHZlcnRpY2FsbHks
IHdlIHVzZSBvZmZzZXRzIGluc3RlYWQgb2YgYWR2YW5jZXMuCisgICAgICAgICAgICBhZHZhbmNl
cy5yZXNpemUoY3VyTGVuKTsKKyAgICAgICAgICAgIGFkdmFuY2VzLmZpbGwoMCk7CisgICAgICAg
ICAgICBvZmZzZXRzLnJlc2l6ZShjdXJMZW4pOworICAgICAgICAgICAgZmxvYXQgY3VycmVudFdp
ZHRoID0gMDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3VyTGVuOyArK2ksICsr
Z2x5cGhJbmRleCkgeworICAgICAgICAgICAgICAgIG9mZnNldHNbaV0uZHUgPSBscm91bmRmKHRy
YW5zbGF0aW9uc1tpXS54KCkpOworICAgICAgICAgICAgICAgIG9mZnNldHNbaV0uZHYgPSAtbHJv
dW5kZihjdXJyZW50V2lkdGggLSB0cmFuc2xhdGlvbnNbaV0ueSgpKTsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50V2lkdGggKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBnbHlwaEluZGV4
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNrUG9pbnQgb3JpZ2luOworICAgICAgICAg
ICAgb3JpZ2luLnNldCh2ZXJ0aWNhbE9yaWdpblgsIFNrRmxvYXRUb1NjYWxhcihwb2ludC55KCkg
KyBob3Jpem9udGFsT2Zmc2V0IC0gcG9pbnQueCgpKSk7CisgICAgICAgICAgICBob3Jpem9udGFs
T2Zmc2V0ICs9IGN1cnJlbnRXaWR0aDsKKyAgICAgICAgICAgIHBhaW50U2tpYVRleHQoZ3JhcGhp
Y3NDb250ZXh0LCBmb250LT5wbGF0Zm9ybURhdGEoKSwgY3VyTGVuLCAmZ2x5cGhzWzBdLCAmYWR2
YW5jZXNbMF0sICZvZmZzZXRzWzBdLCAmb3JpZ2luKTsKKyAgICAgICAgfQorCisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+c2V0Q1RNKHNhdmVkTWF0cml4KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCiAgICAgLy8gSW4gb3JkZXIgdG8gcm91bmQgYWxsIG9mZnNldHMgdG8gdGhl
IGNvcnJlY3QgcGl4ZWwgYm91bmRhcnksIHRoaXMgY29kZSBrZWVwcyB0cmFjayBvZiB0aGUgYWJz
b2x1dGUgcG9zaXRpb24KICAgICAvLyBvZiBlYWNoIGdseXBoIGluIGZsb2F0aW5nIHBvaW50IHVu
aXRzIGFuZCByb3VuZHMgdG8gaW50ZWdlciBhZHZhbmNlcyBhdCB0aGUgbGFzdCBwb3NzaWJsZSBt
b21lbnQuCiAKLSAgICBmbG9hdCBob3Jpem9udGFsT2Zmc2V0ID0gcG9pbnQueCgpOyAvLyBUaGUg
ZmxvYXRpbmcgcG9pbnQgb2Zmc2V0IG9mIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGN1cnJlbnQgZ2x5
cGguCiAgICAgaW50IGxhc3RIb3Jpem9udGFsT2Zmc2V0Um91bmRlZCA9IGxyb3VuZGYoaG9yaXpv
bnRhbE9mZnNldCk7IC8vIFRoZSByb3VuZGVkIG9mZnNldCBvZiB0aGUgbGVmdCBzaWRlIG9mIHRo
ZSBsYXN0IGdseXBoIHJlbmRlcmVkLgorICAgIFZlY3RvcjxXT1JELCBrTWF4QnVmZmVyTGVuZ3Ro
PiBnbHlwaHM7CiAgICAgd2hpbGUgKGdseXBoSW5kZXggPCBudW1HbHlwaHMpIHsKICAgICAgICAg
Ly8gSG93IG1hbnkgY2hhcnMgd2lsbCBiZSBpbiB0aGlzIGNodW5rPwogICAgICAgICBpbnQgY3Vy
TGVuID0gc3RkOjptaW4oa01heEJ1ZmZlckxlbmd0aCwgbnVtR2x5cGhzIC0gZ2x5cGhJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNwcAppbmRleCA2
ZjI3ZjhhLi4xODNhZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJv
bWl1bVdpbi5jcHAKQEAgLTE5MSw2ICsxOTEsMzEgQEAgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBG
b250UGxhdGZvcm1EYXRhOjpzY3JpcHRGb250UHJvcGVydGllcygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2NyaXB0Rm9udFByb3BlcnRpZXM7CiB9CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElD
QUwpCitjb25zdCBPcGVuVHlwZVZlcnRpY2FsRGF0YSogRm9udFBsYXRmb3JtRGF0YTo6dmVydGlj
YWxEYXRhKCkgY29uc3QKK3sKKyAgICBTa0ZvbnRJRCBpZCA9IHR5cGVmYWNlKCktPnVuaXF1ZUlE
KCk7CisgICAgcmV0dXJuIGZvbnRDYWNoZSgpLT5nZXRWZXJ0aWNhbERhdGEoaWQsICp0aGlzKTsK
K30KKworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0Cit7CisgICAgSFduZERDIGhkYygwKTsKKyAgICBI
R0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKKworICAgIERXT1JE
IHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CisgICAgICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpemUpOworICAgICAgICBEV09SRCByZXN1
bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpYnVmZmVyLT5kYXRhKCksIHNp
emUpOworICAgICAgICBBU1NFUlQocmVzdWx0ID09IHNpemUpOworICAgIH0KKworICAgIFNlbGVj
dE9iamVjdChoZGMsIG9sZEZvbnQpOworICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworfQor
I2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiBTdHJpbmcgRm9udFBsYXRmb3JtRGF0YTo6ZGVzY3Jp
cHRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1X
aW4uaAppbmRleCA1NWE1YzJiLi5iNWViZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZv
cm1EYXRhQ2hyb21pdW1XaW4uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUzLDYgKzU0LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogU2tUeXBlZmFjZSogQ3JlYXRlVHlwZWZhY2VGcm9tSEZvbnQoSEZPTlQsIGludCog
c2l6ZSwgaW50KiBsZlF1YWxpdHkpOwogCiBjbGFzcyBGb250RGVzY3JpcHRpb247CisjaWYgRU5B
QkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQorY2xhc3MgT3BlblR5cGVWZXJ0aWNhbERhdGE7CisjZW5k
aWYKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CkBAIC05Miw2ICs5NiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ZvbnQgPT0gb3RoZXIubV9mb250ICYmIG1fc2l6
ZSA9PSBvdGhlci5tX3NpemUgJiYgbV9vcmllbnRhdGlvbiA9PSBvdGhlci5tX29yaWVudGF0aW9u
OwogICAgIH0KIAorI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKKyAgICBjb25zdCBPcGVu
VHlwZVZlcnRpY2FsRGF0YSogdmVydGljYWxEYXRhKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworI2VuZGlm
CisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAjZW5k
aWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>