<?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>74415</bug_id>
          
          <creation_ts>2011-12-13 09:00:37 -0800</creation_ts>
          <short_desc>[skia] cache typeface in FontPlatformData</short_desc>
          <delta_ts>2011-12-19 13:40:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Reed">reed</reporter>
          <assigned_to name="Mike Reed">reed</assigned_to>
          <cc>brettw</cc>
    
    <cc>caryclark</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520109</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-13 09:00:37 -0800</bug_when>
    <thetext>[skia] cache typeface in FontPlatformData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520118</commentid>
    <comment_count>1</comment_count>
      <attachid>119027</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-13 09:09:13 -0800</bug_when>
    <thetext>Created attachment 119027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520284</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-13 12:24:08 -0800</bug_when>
    <thetext>local DRT run on windows with no failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520286</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-13 12:26:07 -0800</bug_when>
    <thetext>Afraid this is outside my areas of expertise. I&apos;m happy to officially review if a domain expert can review the logic first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520923</commentid>
    <comment_count>4</comment_count>
      <attachid>119027</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-12-14 07:51:09 -0800</bug_when>
    <thetext>Comment on attachment 119027
Patch

(I can&apos;t comment inline, but)
Here&apos;s my only nit:
    unsigned value = 0;
    if (m_font)
        value ^= m_font-&gt;hash();
would be clearer as either:
    unsigned value = 0;
    if (m_font)
        value = m_font-&gt;hash();
or:
    unsigned value = m_font ? m_font-&gt;hash() : 0;
otherwise, LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520928</commentid>
    <comment_count>5</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-14 07:59:01 -0800</bug_when>
    <thetext>nit: possibly. I wrote it the way I did so that it matched the line below. i.e. you can reorder the font-&gt;hash and the typeface-&gt;uniqueid and its all the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520932</commentid>
    <comment_count>6</comment_count>
      <attachid>119027</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-14 08:15:32 -0800</bug_when>
    <thetext>Comment on attachment 119027
Patch

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

Looks good.  r=me

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:439
&gt; +        paintSkiaText(graphicsContext, font-&gt;platformData(), curLen, &amp;glyphs[0], &amp;advances[0], 0, &amp;origin);

Nit:  Looks like you can get rid of the hfont local var now.

&gt; Source/WebCore/platform/graphics/chromium/FontPlatformDataChromiumWin.h:85
&gt; +            value ^= m_typeface-&gt;uniqueID();

Is there a possibility for hash collisions if both font and typeface are specified?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521032</commentid>
    <comment_count>7</comment_count>
      <attachid>119242</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-14 10:24:24 -0800</bug_when>
    <thetext>Created attachment 119242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521038</commentid>
    <comment_count>8</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-14 10:26:59 -0800</bug_when>
    <thetext>new patch tries to revert the changes to operator== and hash(), since the new fields (typeface, quality) are just caches derived from the hfont, and therefore need not be part of either of those operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521199</commentid>
    <comment_count>9</comment_count>
      <attachid>119242</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-14 12:46:14 -0800</bug_when>
    <thetext>Comment on attachment 119242
Patch

Looks good.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521234</commentid>
    <comment_count>10</comment_count>
      <attachid>119242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 13:21:54 -0800</bug_when>
    <thetext>Comment on attachment 119242
Patch

Clearing flags on attachment: 119242

Committed r102816: &lt;http://trac.webkit.org/changeset/102816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521235</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 13:22:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521496</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-14 17:19:01 -0800</bug_when>
    <thetext>Sorry, I am rolling out this patch. There are font-related crashes seen on the Chromium canaries and this patch is the one implicated in the revision list.

See:

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win%20%28dbg%29%282%29/builds/7126

(Look for the assertion failures of fontOK around fast/text/international/vertical-text-metrics-test.html and transforms/2d/hindi-rotated.html)

and:

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6%20%28dbg%29/builds/6739

Look for &quot;ASSERTION FAILED: fontCache()-&gt;generation() == m_generation&quot; plugins/fullscreen-plugins-dont-reload.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521527</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-14 17:39:05 -0800</bug_when>
    <thetext>Reverted r102816 for reason:

Implicated in font-related crashes on Chromium canaries.

Committed r102858: &lt;http://trac.webkit.org/changeset/102858&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522973</commentid>
    <comment_count>14</comment_count>
      <attachid>119660</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-16 13:15:57 -0800</bug_when>
    <thetext>Created attachment 119660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522977</commentid>
    <comment_count>15</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-16 13:18:33 -0800</bug_when>
    <thetext>new patch fixes the crash that was reported: Placing a FontPlatformData on the stack caused its hfont parameter to be Deleted when the stack object went out of scope.

I no longer create a temp object (to avoid that), so I had to pass the parameters explicitly, but other than that the code flow is the same as before. I have also added a comment to the header documenting this ownership rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523032</commentid>
    <comment_count>16</comment_count>
      <attachid>119660</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-16 14:31:26 -0800</bug_when>
    <thetext>Comment on attachment 119660
Patch

local failures, investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523975</commentid>
    <comment_count>17</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-19 10:27:43 -0800</bug_when>
    <thetext>Local failures was a flake. Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524089</commentid>
    <comment_count>18</comment_count>
      <attachid>119660</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-19 12:02:07 -0800</bug_when>
    <thetext>Comment on attachment 119660
Patch

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

Looks good, round two.  r=me

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. optimization only, existing tests in play

Nit:  It&apos;s nice to know which ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524112</commentid>
    <comment_count>19</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-12-19 12:26:16 -0800</bug_when>
    <thetext>which tests:

Text drawn with transparency or shadows takes the skia code-path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524153</commentid>
    <comment_count>20</comment_count>
      <attachid>119660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 13:40:17 -0800</bug_when>
    <thetext>Comment on attachment 119660
Patch

Clearing flags on attachment: 119660

Committed r103262: &lt;http://trac.webkit.org/changeset/103262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524154</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 13:40:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119027</attachid>
            <date>2011-12-13 09:09:13 -0800</date>
            <delta_ts>2011-12-14 10:24:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74415-20111213120912.patch</filename>
            <type>text/plain</type>
            <size>12093</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjY4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDExLTEyLTEzICBNaWtlIFJl
ZWQgIDxyZWVkQGdvb2dsZS5jb20+CisKKyAgICAgICAgW3NraWFdIGNhY2hlIHR5cGVmYWNlIGlu
IEZvbnRQbGF0Zm9ybURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0cyBhcHBseSwgdGhpcyBpcyBqdXN0
IGFuIG9wdGltaXphdGlvbgorICAgICAgICB0byBhdm9pZCBsb29raW5nIHVwIHRoZSB0eXBlZmFj
ZSBvbiBlYWNoIGRyYXdUZXh0IGNhbGwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJl
bmN5QXdhcmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdH
bHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVR5cGVmYWNlRnJvbUhGb250KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnR5cGVmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OmxmUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBQYWludEZvckZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5oOgorCiAyMDExLTEyLTEzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFy
bmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcg
dmlvbGF0aW9ucyBpbiBpbmNsdWRlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShy
ZXZpc2lvbiAxMDI1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcg
QEAgYm9vbCBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJhdwogICAgIGlmICghbV91
c2VHREkpIHsKICAgICAgICAgU2tQb2ludCBvcmlnaW4gPSBtX3BvaW50OwogICAgICAgICBvcmln
aW4uZlggKz0gU2tGbG9hdFRvU2NhbGFyKHN0YXJ0QWR2YW5jZSk7Ci0gICAgICAgIHBhaW50U2tp
YVRleHQobV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwK
KyAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29udGV4dCwgbV9mb250LT5wbGF0Zm9y
bURhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICBudW1HbHlwaHMsIGdseXBocywgYWR2YW5j
ZXMsIDAsICZvcmlnaW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00MzYsNyAr
NDM2LDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogCiAgICAg
ICAgIFNrUG9pbnQgb3JpZ2luID0gcG9pbnQ7CiAgICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0
VG9TY2FsYXIoaG9yaXpvbnRhbE9mZnNldCAtIHBvaW50LngoKSAtIGN1cnJlbnRXaWR0aCk7Ci0g
ICAgICAgIHBhaW50U2tpYVRleHQoZ3JhcGhpY3NDb250ZXh0LCBoZm9udCwgY3VyTGVuLCAmZ2x5
cGhzWzBdLCAmYWR2YW5jZXNbMF0sIDAsICZvcmlnaW4pOworICAgICAgICBwYWludFNraWFUZXh0
KGdyYXBoaWNzQ29udGV4dCwgZm9udC0+cGxhdGZvcm1EYXRhKCksIGN1ckxlbiwgJmdseXBoc1sw
XSwgJmFkdmFuY2VzWzBdLCAwLCAmb3JpZ2luKTsKICAgICB9CiB9CiAjZWxzZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNo
cm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiAx
MDI1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcs
MjcgQEAKICNpbmNsdWRlIDxtbGFuZy5oPgogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0Lmgi
CisjaW5jbHVkZSAiU2tUeXBlZmFjZV93aW4uaCIKICNpbmNsdWRlICJTa2lhRm9udFdpbi5oIgog
I2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBTa1R5cGVmYWNlKiBjcmVhdGVUeXBlZmFjZUZyb21IRm9udChIRk9OVCBoZm9udCwgdWludDhf
dCogbGZRdWFsaXR5KQoreworICAgIExPR0ZPTlQgaW5mbzsKKyAgICBHZXRPYmplY3QoaGZvbnQs
IHNpemVvZihpbmZvKSwgJmluZm8pOworICAgICpsZlF1YWxpdHkgPSBpbmZvLmxmUXVhbGl0eTsK
KyAgICByZXR1cm4gU2tDcmVhdGVUeXBlZmFjZUZyb21MT0dGT05UKGluZm8pOworfQorCiBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKICAgICA6IG1fZm9udChoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCiAgICAgLCBt
X3NpemUoLTEpCiAgICAgLCBtX3NjcmlwdENhY2hlKDApCiAgICAgLCBtX3NjcmlwdEZvbnRQcm9w
ZXJ0aWVzKDApCisgICAgLCBtX3R5cGVmYWNlKDApCisgICAgLCBtX2xmUXVhbGl0eShERUZBVUxU
X1FVQUxJVFkpCiB7CiB9CiAKQEAgLTU1LDYgKzY2LDggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YSgpCiAgICAgLCBtX3NpemUoMCkKICAgICAsIG1fc2NyaXB0Q2FjaGUoMCkK
ICAgICAsIG1fc2NyaXB0Rm9udFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdHlwZWZhY2UoMCkKKyAg
ICAsIG1fbGZRdWFsaXR5KERFRkFVTFRfUVVBTElUWSkKIHsKIH0KIApAQCAtNjMsNiArNzYsNyBA
QCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UCiAgICAgLCBtX3NpemUo
c2l6ZSkKICAgICAsIG1fc2NyaXB0Q2FjaGUoMCkKICAgICAsIG1fc2NyaXB0Rm9udFByb3BlcnRp
ZXMoMCkKKyAgICAsIG1fdHlwZWZhY2UoY3JlYXRlVHlwZWZhY2VGcm9tSEZvbnQoZm9udCwgJm1f
bGZRdWFsaXR5KSkKIHsKIH0KIApAQCAtNzIsNiArODYsOCBAQCBGb250UGxhdGZvcm1EYXRhOjpG
b250UGxhdGZvcm1EYXRhKGZsb2F0CiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fc2NyaXB0
Q2FjaGUoMCkKICAgICAsIG1fc2NyaXB0Rm9udFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdHlwZWZh
Y2UoMCkKKyAgICAsIG1fbGZRdWFsaXR5KERFRkFVTFRfUVVBTElUWSkKIHsKIH0KIApAQCAtODAs
NyArOTYsMTAgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdAogICAg
ICwgbV9zaXplKGRhdGEubV9zaXplKQogICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9z
Y3JpcHRGb250UHJvcGVydGllcygwKQorICAgICwgbV90eXBlZmFjZShkYXRhLm1fdHlwZWZhY2Up
CisgICAgLCBtX2xmUXVhbGl0eShkYXRhLm1fbGZRdWFsaXR5KQogeworICAgIFNrU2FmZVJlZiht
X3R5cGVmYWNlKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3Bl
cmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGRhdGEpCkBAIC04OCw2ICsxMDcsOCBAQCBG
b250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1EYXRhOjpvcGVyCiAgICAgaWYgKHRoaXMgIT0g
JmRhdGEpIHsKICAgICAgICAgbV9mb250ID0gZGF0YS5tX2ZvbnQ7CiAgICAgICAgIG1fc2l6ZSA9
IGRhdGEubV9zaXplOworICAgICAgICBTa1JlZkNudF9TYWZlQXNzaWduKG1fdHlwZWZhY2UsIGRh
dGEubV90eXBlZmFjZSk7CisgICAgICAgIG1fbGZRdWFsaXR5ID0gZGF0YS5tX2xmUXVhbGl0eTsK
IAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyB3aWxsIGdldCByZS1jb21wdXRlZCBp
ZiBuZWNlc3NhcnkuCiAgICAgICAgIFNjcmlwdEZyZWVDYWNoZSgmbV9zY3JpcHRDYWNoZSk7CkBA
IC0xMDEsNiArMTIyLDggQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3Bl
cgogCiBGb250UGxhdGZvcm1EYXRhOjp+Rm9udFBsYXRmb3JtRGF0YSgpCiB7CisgICAgU2tTYWZl
VW5yZWYobV90eXBlZmFjZSk7CisKICAgICBTY3JpcHRGcmVlQ2FjaGUoJm1fc2NyaXB0Q2FjaGUp
OwogICAgIG1fc2NyaXB0Q2FjaGUgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxh
dGZvcm1EYXRhQ2hyb21pdW1XaW4uaAkocmV2aXNpb24gMTAyNTc4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY5LDE4ICs3MCwyNiBAQCBwdWJsaWM6CiAK
ICAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9udC0+aGZvbnQo
KSA6IDA7IH0KICAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAg
U2tUeXBlZmFjZSogdHlwZWZhY2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGVmYWNlOyB9CisgICAg
dWludDhfdCBsZlF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2xmUXVhbGl0eTsgfQogCiAgICAg
Rm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSG9yaXpvbnRhbDsg
fSAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHZvaWQgc2V0T3JpZW50YXRpb24oRm9udE9yaWVu
dGF0aW9uKSB7IH0gLy8gRklYTUU6IEltcGxlbWVudC4KIAogICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAotICAgIHsgCi0gICAgICAgIHJldHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmhhc2goKSA6IE5V
TEw7CisgICAgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IDA7CisgICAgICAgIGlmIChtX2Zv
bnQpCisgICAgICAgICAgICB2YWx1ZSBePSBtX2ZvbnQtPmhhc2goKTsKKyAgICAgICAgaWYgKG1f
dHlwZWZhY2UpCisgICAgICAgICAgICB2YWx1ZSBePSBtX3R5cGVmYWNlLT51bmlxdWVJRCgpOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHsgCi0gICAgICAgIHJldHVybiBt
X2ZvbnQgPT0gb3RoZXIubV9mb250ICYmIG1fc2l6ZSA9PSBvdGhlci5tX3NpemU7CisgICAgICAg
IHJldHVybiBtX2ZvbnQgPT0gb3RoZXIubV9mb250ICYmIG1fc2l6ZSA9PSBvdGhlci5tX3NpemUK
KyAgICAgICAgICAgICAgICYmIG1fdHlwZWZhY2UgPT0gb3RoZXIubV90eXBlZmFjZTsKICAgICB9
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xMjgsNiArMTM3LDkgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxSZWZDb3VudGVkSEZPTlQ+IG1fZm9udDsKICAgICBmbG9hdCBtX3NpemU7ICAvLyBQb2lu
dCBzaXplIG9mIHRoZSBmb250IGluIHBpeGVscy4KKyAgICBTa1R5cGVmYWNlKiBtX3R5cGVmYWNl
OworCisgICAgdWludDhfdCBtX2xmUXVhbGl0eTsgLy8gY2FjaGUgb2YgbGZRdWFsaXR5IGZpZWxk
IGZyb20gbV9mb250J3MgTE9HRk9OVAogCiAgICAgbXV0YWJsZSBTQ1JJUFRfQ0FDSEUgbV9zY3Jp
cHRDYWNoZTsKICAgICBtdXRhYmxlIFNDUklQVF9GT05UUFJPUEVSVElFUyogbV9zY3JpcHRGb250
UHJvcGVydGllczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
U2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiAxMDI1NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTYgKzMyLDE2IEBACiAjaW5jbHVkZSAiU2tpYUZvbnRXaW4uaCIKIAogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgog
I2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIK
ICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrRGV2aWNlLmgiCiAjaW5jbHVkZSAi
U2tQYWludC5oIgogI2luY2x1ZGUgIlNrU2hhZGVyLmgiCiAjaW5jbHVkZSAiU2tUZW1wbGF0ZXMu
aCIKLSNpbmNsdWRlICJTa1R5cGVmYWNlX3dpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE3OSwyNyArMTc5LDE0IEBAIHN0YXRpYyB1aW50MzJfdCBnZXREZWZhdWx0R0RJVGV4dEZs
YWdzKCkKICAgICByZXR1cm4gZ0ZsYWdzOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cFBhaW50Rm9y
Rm9udChIRk9OVCBoZm9udCwgU2tQYWludCogcGFpbnQsIFBsYXRmb3JtQ29udGV4dFNraWEqIHBj
cykKK3N0YXRpYyB2b2lkIHNldHVwUGFpbnRGb3JGb250KFNrUGFpbnQqIHBhaW50LCBjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBmb250LCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBwY3MpCiB7Ci0gICAg
Ly8gIEZJWE1FOgotICAgIC8vICBNdWNoIG9mIHRoaXMgbG9naWMgY291bGQgYWxzbyBoYXBwZW4g
aW4KLSAgICAvLyAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSBhbmQg
YmUgY2FjaGVkLAotICAgIC8vICBhbGxvd2luZyB1cyB0byBhdm9pZCB0YWxraW5nIHRvIEdESSBh
dCB0aGlzIHBvaW50LgotICAgIC8vCi0gICAgTE9HRk9OVCBpbmZvOwotICAgIEdldE9iamVjdCho
Zm9udCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7Ci0gICAgaW50IHNpemUgPSBpbmZvLmxmSGVpZ2h0
OwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgc2l6ZSA9IC1zaXplOyAvLyBXZSBkb24ndCBs
ZXQgR0RJIGRwaS1zY2FsZSB1cyAoc2VlIFNrRm9udEhvc3Rfd2luLmNwcCkuCi0gICAgcGFpbnQt
PnNldFRleHRTaXplKFNrSW50VG9TY2FsYXIoc2l6ZSkpOwotCi0gICAgU2tUeXBlZmFjZSogZmFj
ZSA9IFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChpbmZvKTsKLSAgICBwYWludC0+c2V0VHlw
ZWZhY2UoZmFjZSk7Ci0gICAgU2tTYWZlVW5yZWYoZmFjZSk7CisgICAgcGFpbnQtPnNldFRleHRT
aXplKFNrRmxvYXRUb1NjYWxhcihmb250LnNpemUoKSkpOworICAgIHBhaW50LT5zZXRUeXBlZmFj
ZShmb250LnR5cGVmYWNlKCkpOwogCiAgICAgLy8gdHVybiBsZlF1YWxpdHkgaW50byB0ZXh0IGZs
YWdzCiAgICAgdWludDMyX3QgdGV4dEZsYWdzOwotICAgIHN3aXRjaCAoaW5mby5sZlF1YWxpdHkp
IHsKKyAgICBzd2l0Y2ggKGZvbnQubGZRdWFsaXR5KCkpIHsKICAgICBjYXNlIE5PTkFOVElBTElB
U0VEX1FVQUxJVFk6CiAgICAgICAgIHRleHRGbGFncyA9IDA7CiAgICAgICAgIGJyZWFrOwpAQCAt
MjI4LDcgKzIxNSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUGFpbnRGb3JGb250KEhGT05UIGhmb24K
IH0KIAogdm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICBIRk9OVCBoZm9udCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBmb250LAogICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludCogYWR2YW5jZXMsCkBAIC0yNDAsMTMgKzIyNywxMyBAQCB2b2lkIHBhaW50U2tp
YVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250CiAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dE1vZGUgPSBwbGF0Zm9ybUNvbnRleHQtPmdldFRleHREcmF3aW5nTW9kZSgpOwogICAgIC8vIEVu
c3VyZSBmb250IGxvYWQgZm9yIHByaW50aW5nLCBiZWNhdXNlIFBERiBkZXZpY2UgbmVlZHMgaXQu
CiAgICAgaWYgKGNhbnZhcy0+Z2V0VG9wRGV2aWNlKCktPmdldERldmljZUNhcGFiaWxpdGllcygp
ICYgU2tEZXZpY2U6OmtWZWN0b3JfQ2FwYWJpbGl0eSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0
OjplbnN1cmVGb250TG9hZGVkKGhmb250KTsKKyAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjplbnN1
cmVGb250TG9hZGVkKGZvbnQuaGZvbnQoKSk7CiAKICAgICAvLyBGaWxsaW5nIChpZiBuZWNlc3Nh
cnkpLiBUaGlzIGlzIHRoZSBjb21tb24gY2FzZS4KICAgICBTa1BhaW50IHBhaW50OwogICAgIHBs
YXRmb3JtQ29udGV4dC0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKICAgICBwYWludC5z
ZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5nKTsKLSAgICBzZXR1
cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50LCBwbGF0Zm9ybUNvbnRleHQpOworICAgIHNldHVw
UGFpbnRGb3JGb250KCZwYWludCwgZm9udCwgcGxhdGZvcm1Db250ZXh0KTsKIAogICAgIGJvb2wg
ZGlkRmlsbCA9IGZhbHNlOwogCkBAIC0yNjMsNyArMjUwLDcgQEAgdm9pZCBwYWludFNraWFUZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udAogICAgICAgICBwYWludC5yZXNldCgpOwogICAgICAgICBw
bGF0Zm9ybUNvbnRleHQtPnNldHVwUGFpbnRGb3JTdHJva2luZygmcGFpbnQsIDAsIDApOwogICAg
ICAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5n
KTsKLSAgICAgICAgc2V0dXBQYWludEZvckZvbnQoaGZvbnQsICZwYWludCwgcGxhdGZvcm1Db250
ZXh0KTsKKyAgICAgICAgc2V0dXBQYWludEZvckZvbnQoJnBhaW50LCBmb250LCBwbGF0Zm9ybUNv
bnRleHQpOwogCiAgICAgICAgIGlmIChkaWRGaWxsKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBhIHNoYWRvdyBhbmQgd2UgZmlsbGVkIGFib3ZlLCB0aGVyZSB3aWxsIGFscmVhZHkgYmUK
QEAgLTI4Miw0ICsyNjksMjIgQEAgdm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udAogICAgIH0KIH0KIAordm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICBIRk9OVCBoZm9udCwKKyAgICAgICAgICAgICAgICAg
ICBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQqIGdseXBocywK
KyAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAorICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdPRkZTRVQqIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgU2tQ
b2ludCogb3JpZ2luKQoreworICAgIExPR0ZPTlQgaW5mbzsKKyAgICBHZXRPYmplY3QoaGZvbnQs
IHNpemVvZihpbmZvKSwgJmluZm8pOworICAgIGZsb2F0IHNpemUgPSBpbmZvLmxmSGVpZ2h0Owor
ICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgc2l6ZSA9IC1zaXplOworCisgICAgRm9udFBsYXRm
b3JtRGF0YSBmb250KGhmb250LCBzaXplKTsKKyAgICBwYWludFNraWFUZXh0KGNvbnRleHQsIGZv
bnQsIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgb2Zmc2V0cywgb3JpZ2luKTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJKHJldmlzaW9uIDEwMjU3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgU2tQb2ludDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBGb250UGxhdGZvcm1EYXRhOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKIApAQCAtNzIsNiArNzMsMTUgQEAgYm9v
bCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0UwogLy8gTm90ZSB0aGF0IHRoZSBv
ZmZzZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElmIG5vdCBOVUxMIGl0IHJlcHJlc2VudHMg
YQogLy8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBX
aW5kb3dzIEFQSSBmdW5jdGlvbikuCiB2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0
KiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiwKKyAgICAgICAg
ICAgICAgICAgICBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdPRkZTRVQqIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2tQb2ludCogb3JpZ2luKTsKKworLy8gQ29udmVuaWVuY2UgY2FsbCBmb3IgY2xpZW50
cyB0aGF0IGRvbid0IGNhY2hlIHRoZSB0eXBlZmFjZSBvciBzaXplCit2b2lkIHBhaW50U2tpYVRl
eHQoR3JhcGhpY3NDb250ZXh0KiwKICAgICAgICAgICAgICAgICAgICBIRk9OVCwKICAgICAgICAg
ICAgICAgICAgICBpbnQgbnVtR2x5cGhzLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119242</attachid>
            <date>2011-12-14 10:24:24 -0800</date>
            <delta_ts>2011-12-16 13:15:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74415-20111214132422.patch</filename>
            <type>text/plain</type>
            <size>12050</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDExLTEyLTEzICBNaWtlIFJl
ZWQgIDxyZWVkQGdvb2dsZS5jb20+CisKKyAgICAgICAgW3NraWFdIGNhY2hlIHR5cGVmYWNlIGlu
IEZvbnRQbGF0Zm9ybURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0ZXN0cyBhcHBseSwgdGhpcyBpcyBqdXN0
IGFuIG9wdGltaXphdGlvbgorICAgICAgICB0byBhdm9pZCBsb29raW5nIHVwIHRoZSB0eXBlZmFj
ZSBvbiBlYWNoIGRyYXdUZXh0IGNhbGwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJl
bmN5QXdhcmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdH
bHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVR5cGVmYWNlRnJvbUhGb250KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnR5cGVmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OmxmUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBQYWludEZvckZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5oOgorCiAyMDExLTEyLTEzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFy
bmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcg
dmlvbGF0aW9ucyBpbiBpbmNsdWRlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShy
ZXZpc2lvbiAxMDI2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcg
QEAgYm9vbCBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJhdwogICAgIGlmICghbV91
c2VHREkpIHsKICAgICAgICAgU2tQb2ludCBvcmlnaW4gPSBtX3BvaW50OwogICAgICAgICBvcmln
aW4uZlggKz0gU2tGbG9hdFRvU2NhbGFyKHN0YXJ0QWR2YW5jZSk7Ci0gICAgICAgIHBhaW50U2tp
YVRleHQobV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwK
KyAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29udGV4dCwgbV9mb250LT5wbGF0Zm9y
bURhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICBudW1HbHlwaHMsIGdseXBocywgYWR2YW5j
ZXMsIDAsICZvcmlnaW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zOTQsOCAr
Mzk0LDYgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogICAgIGlm
ICghYWxwaGEgJiYgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tl
U3R5bGUoKSA9PSBOb1N0cm9rZSAmJiAhZ3JhcGhpY3NDb250ZXh0LT5oYXNTaGFkb3coKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSEZPTlQgaGZvbnQgPSBmb250LT5wbGF0Zm9ybURhdGEoKS5o
Zm9udCgpOwotCiAgICAgLy8gV2UgZHJhdyB0aGUgZ2x5cGhzIGluIGNodW5rcyB0byBhdm9pZCBo
YXZpbmcgdG8gZG8gYSBoZWFwIGFsbG9jYXRpb24gZm9yCiAgICAgLy8gdGhlIGFycmF5cyBvZiBj
aGFyYWN0ZXJzIGFuZCBhZHZhbmNlcy4KICAgICBjb25zdCBpbnQga01heEJ1ZmZlckxlbmd0aCA9
IDI1NjsKQEAgLTQzNiw3ICs0MzQsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b250ZXh0KiBnCiAKICAgICAgICAgU2tQb2ludCBvcmlnaW4gPSBwb2ludDsKICAgICAgICAgb3Jp
Z2luLmZYICs9IFNrRmxvYXRUb1NjYWxhcihob3Jpem9udGFsT2Zmc2V0IC0gcG9pbnQueCgpIC0g
Y3VycmVudFdpZHRoKTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsIGhm
b250LCBjdXJMZW4sICZnbHlwaHNbMF0sICZhZHZhbmNlc1swXSwgMCwgJm9yaWdpbik7CisgICAg
ICAgIHBhaW50U2tpYVRleHQoZ3JhcGhpY3NDb250ZXh0LCBmb250LT5wbGF0Zm9ybURhdGEoKSwg
Y3VyTGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIDAsICZvcmlnaW4pOwogICAgIH0KIH0K
ICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdp
bi5jcHAJKHJldmlzaW9uIDEwMjY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDE2ICszNywyNyBAQAogI2luY2x1ZGUgPG1sYW5nLmg+CiAKICNpbmNsdWRlICJQ
bGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJTa1R5cGVmYWNlX3dpbi5oIgogI2luY2x1ZGUg
IlNraWFGb250V2luLmgiCiAjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIFNrVHlwZWZhY2UqIGNyZWF0ZVR5cGVmYWNlRnJvbUhGb250KEhG
T05UIGhmb250LCB1aW50OF90KiBsZlF1YWxpdHkpCit7CisgICAgTE9HRk9OVCBpbmZvOworICAg
IEdldE9iamVjdChoZm9udCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7CisgICAgKmxmUXVhbGl0eSA9
IGluZm8ubGZRdWFsaXR5OworICAgIHJldHVybiBTa0NyZWF0ZVR5cGVmYWNlRnJvbUxPR0ZPTlQo
aW5mbyk7Cit9CisKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgIDogbV9mb250KGhhc2hUYWJsZURlbGV0ZWRGb250
VmFsdWUoKSkKICAgICAsIG1fc2l6ZSgtMSkKICAgICAsIG1fc2NyaXB0Q2FjaGUoMCkKICAgICAs
IG1fc2NyaXB0Rm9udFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdHlwZWZhY2UoMCkKKyAgICAsIG1f
bGZRdWFsaXR5KERFRkFVTFRfUVVBTElUWSkKIHsKIH0KIApAQCAtNTUsNiArNjYsOCBAQCBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKCkKICAgICAsIG1fc2l6ZSgwKQogICAgICwg
bV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9zY3JpcHRGb250UHJvcGVydGllcygwKQorICAgICwg
bV90eXBlZmFjZSgwKQorICAgICwgbV9sZlF1YWxpdHkoREVGQVVMVF9RVUFMSVRZKQogewogfQog
CkBAIC02Myw2ICs3Niw3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoSEZP
TlQKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9z
Y3JpcHRGb250UHJvcGVydGllcygwKQorICAgICwgbV90eXBlZmFjZShjcmVhdGVUeXBlZmFjZUZy
b21IRm9udChmb250LCAmbV9sZlF1YWxpdHkpKQogewogfQogCkBAIC03Miw2ICs4Niw4IEBAIEZv
bnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQKICAgICAsIG1fc2l6ZShzaXpl
KQogICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9zY3JpcHRGb250UHJvcGVydGllcygw
KQorICAgICwgbV90eXBlZmFjZSgwKQorICAgICwgbV9sZlF1YWxpdHkoREVGQVVMVF9RVUFMSVRZ
KQogewogfQogCkBAIC04MCw3ICs5NiwxMCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGNvbnN0CiAgICAgLCBtX3NpemUoZGF0YS5tX3NpemUpCiAgICAgLCBtX3NjcmlwdENh
Y2hlKDApCiAgICAgLCBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVzKDApCisgICAgLCBtX3R5cGVmYWNl
KGRhdGEubV90eXBlZmFjZSkKKyAgICAsIG1fbGZRdWFsaXR5KGRhdGEubV9sZlF1YWxpdHkpCiB7
CisgICAgU2tTYWZlUmVmKG1fdHlwZWZhY2UpOwogfQogCiBGb250UGxhdGZvcm1EYXRhJiBGb250
UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZGF0YSkKQEAg
LTg4LDYgKzEwNyw4IEBAIEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXIK
ICAgICBpZiAodGhpcyAhPSAmZGF0YSkgewogICAgICAgICBtX2ZvbnQgPSBkYXRhLm1fZm9udDsK
ICAgICAgICAgbV9zaXplID0gZGF0YS5tX3NpemU7CisgICAgICAgIFNrUmVmQ250X1NhZmVBc3Np
Z24obV90eXBlZmFjZSwgZGF0YS5tX3R5cGVmYWNlKTsKKyAgICAgICAgbV9sZlF1YWxpdHkgPSBk
YXRhLm1fbGZRdWFsaXR5OwogCiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZmllbGRzIHdpbGwg
Z2V0IHJlLWNvbXB1dGVkIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgU2NyaXB0RnJlZUNhY2hlKCZt
X3NjcmlwdENhY2hlKTsKQEAgLTEwMSw2ICsxMjIsOCBAQCBGb250UGxhdGZvcm1EYXRhJiBGb250
UGxhdGZvcm1EYXRhOjpvcGVyCiAKIEZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRh
KCkKIHsKKyAgICBTa1NhZmVVbnJlZihtX3R5cGVmYWNlKTsKKwogICAgIFNjcmlwdEZyZWVDYWNo
ZSgmbV9zY3JpcHRDYWNoZSk7CiAgICAgbV9zY3JpcHRDYWNoZSA9IDA7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJv
bWl1bVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5oCShyZXZpc2lvbiAxMDI2ODQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZv
cm1EYXRhQ2hyb21pdW1XaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCisjaW5jbHVk
ZSAiU2tUeXBlZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjksMTIgKzcw
LDE0IEBAIHB1YmxpYzoKIAogICAgIEhGT05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250
ID8gbV9mb250LT5oZm9udCgpIDogMDsgfQogICAgIGZsb2F0IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZWZhY2U7IH0KKyAgICB1aW50OF90IGxmUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbGZR
dWFsaXR5OyB9CiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJl
dHVybiBIb3Jpem9udGFsOyB9IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihGb250T3JpZW50YXRpb24pIHsgfSAvLyBGSVhNRTogSW1wbGVtZW50LgogCiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgeyAKKyAgICB7CiAgICAgICAgIHJldHVybiBtX2Zv
bnQgPyBtX2ZvbnQtPmhhc2goKSA6IE5VTEw7CiAgICAgfQogCkBAIC0xMjksNiArMTMyLDkgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8UmVmQ291bnRlZEhGT05UPiBtX2ZvbnQ7CiAgICAgZmxvYXQg
bV9zaXplOyAgLy8gUG9pbnQgc2l6ZSBvZiB0aGUgZm9udCBpbiBwaXhlbHMuCiAKKyAgICBTa1R5
cGVmYWNlKiBtX3R5cGVmYWNlOyAvLyBjYWNoZWQgZnJvbSBtX2ZvbnQKKyAgICB1aW50OF90IG1f
bGZRdWFsaXR5OyAvLyBjYWNoZWQgZnJvbSBtX2ZvbnQKKwogICAgIG11dGFibGUgU0NSSVBUX0NB
Q0hFIG1fc2NyaXB0Q2FjaGU7CiAgICAgbXV0YWJsZSBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIG1f
c2NyaXB0Rm9udFByb3BlcnRpZXM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9uIDEwMjY4
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNiArMzIsMTYgQEAKICNpbmNsdWRlICJTa2lhRm9u
dFdpbi5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUg
IkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2Uu
aCIKICNpbmNsdWRlICJTa1BhaW50LmgiCiAjaW5jbHVkZSAiU2tTaGFkZXIuaCIKICNpbmNsdWRl
ICJTa1RlbXBsYXRlcy5oIgotI2luY2x1ZGUgIlNrVHlwZWZhY2Vfd2luLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTc5LDI3ICsxNzksMTQgQEAgc3RhdGljIHVpbnQzMl90IGdldERl
ZmF1bHRHRElUZXh0RmxhZ3MoKQogICAgIHJldHVybiBnRmxhZ3M7CiB9CiAKLXN0YXRpYyB2b2lk
IHNldHVwUGFpbnRGb3JGb250KEhGT05UIGhmb250LCBTa1BhaW50KiBwYWludCwgUGxhdGZvcm1D
b250ZXh0U2tpYSogcGNzKQorc3RhdGljIHZvaWQgc2V0dXBQYWludEZvckZvbnQoU2tQYWludCog
cGFpbnQsIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnQsIFBsYXRmb3JtQ29udGV4dFNraWEq
IHBjcykKIHsKLSAgICAvLyAgRklYTUU6Ci0gICAgLy8gIE11Y2ggb2YgdGhpcyBsb2dpYyBjb3Vs
ZCBhbHNvIGhhcHBlbiBpbgotICAgIC8vICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhIGFuZCBiZSBjYWNoZWQsCi0gICAgLy8gIGFsbG93aW5nIHVzIHRvIGF2b2lkIHRh
bGtpbmcgdG8gR0RJIGF0IHRoaXMgcG9pbnQuCi0gICAgLy8KLSAgICBMT0dGT05UIGluZm87Ci0g
ICAgR2V0T2JqZWN0KGhmb250LCBzaXplb2YoaW5mbyksICZpbmZvKTsKLSAgICBpbnQgc2l6ZSA9
IGluZm8ubGZIZWlnaHQ7Ci0gICAgaWYgKHNpemUgPCAwKQotICAgICAgICBzaXplID0gLXNpemU7
IC8vIFdlIGRvbid0IGxldCBHREkgZHBpLXNjYWxlIHVzIChzZWUgU2tGb250SG9zdF93aW4uY3Bw
KS4KLSAgICBwYWludC0+c2V0VGV4dFNpemUoU2tJbnRUb1NjYWxhcihzaXplKSk7Ci0KLSAgICBT
a1R5cGVmYWNlKiBmYWNlID0gU2tDcmVhdGVUeXBlZmFjZUZyb21MT0dGT05UKGluZm8pOwotICAg
IHBhaW50LT5zZXRUeXBlZmFjZShmYWNlKTsKLSAgICBTa1NhZmVVbnJlZihmYWNlKTsKKyAgICBw
YWludC0+c2V0VGV4dFNpemUoU2tGbG9hdFRvU2NhbGFyKGZvbnQuc2l6ZSgpKSk7CisgICAgcGFp
bnQtPnNldFR5cGVmYWNlKGZvbnQudHlwZWZhY2UoKSk7CiAKICAgICAvLyB0dXJuIGxmUXVhbGl0
eSBpbnRvIHRleHQgZmxhZ3MKICAgICB1aW50MzJfdCB0ZXh0RmxhZ3M7Ci0gICAgc3dpdGNoIChp
bmZvLmxmUXVhbGl0eSkgeworICAgIHN3aXRjaCAoZm9udC5sZlF1YWxpdHkoKSkgewogICAgIGNh
c2UgTk9OQU5USUFMSUFTRURfUVVBTElUWToKICAgICAgICAgdGV4dEZsYWdzID0gMDsKICAgICAg
ICAgYnJlYWs7CkBAIC0yMjgsNyArMjE1LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQYWludEZvckZv
bnQoSEZPTlQgaGZvbgogfQogCiB2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LAotICAgICAgICAgICAgICAgICAgIEhGT05UIGhmb250LAorICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAgaW50
IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICBjb25zdCBXT1JEKiBnbHlwaHMsCiAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50KiBhZHZhbmNlcywKQEAgLTI0MCwxMyArMjI3LDEzIEBA
IHZvaWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICBUZXh0RHJhd2lu
Z01vZGVGbGFncyB0ZXh0TW9kZSA9IHBsYXRmb3JtQ29udGV4dC0+Z2V0VGV4dERyYXdpbmdNb2Rl
KCk7CiAgICAgLy8gRW5zdXJlIGZvbnQgbG9hZCBmb3IgcHJpbnRpbmcsIGJlY2F1c2UgUERGIGRl
dmljZSBuZWVkcyBpdC4KICAgICBpZiAoY2FudmFzLT5nZXRUb3BEZXZpY2UoKS0+Z2V0RGV2aWNl
Q2FwYWJpbGl0aWVzKCkgJiBTa0RldmljZTo6a1ZlY3Rvcl9DYXBhYmlsaXR5KQotICAgICAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OmVuc3VyZUZvbnRMb2FkZWQoaGZvbnQpOworICAgICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OmVuc3VyZUZvbnRMb2FkZWQoZm9udC5oZm9udCgpKTsKIAogICAgIC8vIEZpbGxp
bmcgKGlmIG5lY2Vzc2FyeSkuIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIFNrUGFpbnQg
cGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0LT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQp
OwogICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2Rp
bmcpOwotICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQsIHBsYXRmb3JtQ29udGV4
dCk7CisgICAgc2V0dXBQYWludEZvckZvbnQoJnBhaW50LCBmb250LCBwbGF0Zm9ybUNvbnRleHQp
OwogCiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7CiAKQEAgLTI2Myw3ICsyNTAsNyBAQCB2b2lk
IHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250CiAgICAgICAgIHBhaW50LnJlc2V0
KCk7CiAgICAgICAgIHBsYXRmb3JtQ29udGV4dC0+c2V0dXBQYWludEZvclN0cm9raW5nKCZwYWlu
dCwgMCwgMCk7CiAgICAgICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJ
RF9UZXh0RW5jb2RpbmcpOwotICAgICAgICBzZXR1cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50
LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICBzZXR1cFBhaW50Rm9yRm9udCgmcGFpbnQsIGZv
bnQsIHBsYXRmb3JtQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGRpZEZpbGwpIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZXJlIGlzIGEgc2hhZG93IGFuZCB3ZSBmaWxsZWQgYWJvdmUsIHRoZXJlIHdp
bGwgYWxyZWFkeSBiZQpAQCAtMjgyLDQgKzI2OSwyMiBAQCB2b2lkIHBhaW50U2tpYVRleHQoR3Jh
cGhpY3NDb250ZXh0KiBjb250CiAgICAgfQogfQogCit2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgIEhGT05UIGhmb250LAorICAg
ICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
V09SRCogZ2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCogYWR2YW5jZXMsCisg
ICAgICAgICAgICAgICAgICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBTa1BvaW50KiBvcmlnaW4pCit7CisgICAgTE9HRk9OVCBpbmZvOworICAgIEdl
dE9iamVjdChoZm9udCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7CisgICAgZmxvYXQgc2l6ZSA9IGlu
Zm8ubGZIZWlnaHQ7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICBzaXplID0gLXNpemU7CisK
KyAgICBGb250UGxhdGZvcm1EYXRhIGZvbnQoaGZvbnQsIHNpemUpOworICAgIHBhaW50U2tpYVRl
eHQoY29udGV4dCwgZm9udCwgbnVtR2x5cGhzLCBnbHlwaHMsIGFkdmFuY2VzLCBvZmZzZXRzLCBv
cmlnaW4pOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkocmV2aXNp
b24gMTAyNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBTa1BvaW50
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwogCkBAIC03Miw2
ICs3MywxNSBAQCBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTCiAvLyBO
b3RlIHRoYXQgdGhlIG9mZnNldHMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiAgSWYgbm90IE5VTEwg
aXQgcmVwcmVzZW50cyBhCiAvLyBwZXIgZ2x5cGggb2Zmc2V0IChzdWNoIGFzIHJldHVybmVkIGJ5
IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9uKS4KIHZvaWQgcGFpbnRTa2lhVGV4dChH
cmFwaGljc0NvbnRleHQqLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmLAorICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCisgICAgICAgICAgICAgICAg
ICAgY29uc3QgV09SRCogZ2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCogYWR2
YW5jZXMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCBTa1BvaW50KiBvcmlnaW4pOworCisvLyBDb252ZW5pZW5jZSBj
YWxsIGZvciBjbGllbnRzIHRoYXQgZG9uJ3QgY2FjaGUgdGhlIHR5cGVmYWNlIG9yIHNpemUKK3Zv
aWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqLAogICAgICAgICAgICAgICAgICAgIEhG
T05ULAogICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCiAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV09SRCogZ2x5cGhzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119660</attachid>
            <date>2011-12-16 13:15:57 -0800</date>
            <delta_ts>2011-12-19 13:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74415-20111216161556.patch</filename>
            <type>text/plain</type>
            <size>13895</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDExLTEyLTE2ICBNaWtlIFJl
ZWQgIDxyZWVkQGdvb2dsZS5jb20+CisKKyAgICAgICAgW3NraWFdIGNhY2hlIHR5cGVmYWNlIGlu
IEZvbnRQbGF0Zm9ybURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBvcHRpbWl6YXRpb24gb25seSwgZXhpc3RpbmcgdGVzdHMg
aW4gcGxheQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9t
aXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50
ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcmVhdGVUeXBlZmFjZUZyb21IRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
Ojp+Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjp0eXBlZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpsZlF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXR1cFBhaW50Rm9yRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpw
YWludFNraWFUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250
V2luLmg6CisKIDIwMTEtMTItMTYgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29t
PgogCiAgICAgICAgIEF1ZGlvIGZpbGUgaW4gdmlkZW8gZWxlbWVudCBoYXMgYSBzaXplIG9mIDB4
MCAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDEwMzA5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCBib29sIFRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyOjpkcmF3CiAgICAgaWYgKCFtX3VzZUdESSkgewogICAgICAgICBT
a1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7CiAgICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9T
Y2FsYXIoc3RhcnRBZHZhbmNlKTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29u
dGV4dCwgbV9mb250LT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpLAorICAgICAgICBwYWludFNraWFU
ZXh0KG1fZ3JhcGhpY3NDb250ZXh0LCBtX2ZvbnQtPnBsYXRmb3JtRGF0YSgpLAogICAgICAgICAg
ICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM5NCw4ICszOTQsNiBAQCB2b2lkIEZvbnQ6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAgICAgaWYgKCFhbHBoYSAmJiBncmFwaGlj
c0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09IE5vU3Ryb2tl
ICYmICFncmFwaGljc0NvbnRleHQtPmhhc1NoYWRvdygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBIRk9OVCBoZm9udCA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCk7Ci0KICAgICAvLyBX
ZSBkcmF3IHRoZSBnbHlwaHMgaW4gY2h1bmtzIHRvIGF2b2lkIGhhdmluZyB0byBkbyBhIGhlYXAg
YWxsb2NhdGlvbiBmb3IKICAgICAvLyB0aGUgYXJyYXlzIG9mIGNoYXJhY3RlcnMgYW5kIGFkdmFu
Y2VzLgogICAgIGNvbnN0IGludCBrTWF4QnVmZmVyTGVuZ3RoID0gMjU2OwpAQCAtNDM2LDcgKzQz
NCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGcKIAogICAgICAg
ICBTa1BvaW50IG9yaWdpbiA9IHBvaW50OwogICAgICAgICBvcmlnaW4uZlggKz0gU2tGbG9hdFRv
U2NhbGFyKGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkgLSBjdXJyZW50V2lkdGgpOwotICAg
ICAgICBwYWludFNraWFUZXh0KGdyYXBoaWNzQ29udGV4dCwgaGZvbnQsIGN1ckxlbiwgJmdseXBo
c1swXSwgJmFkdmFuY2VzWzBdLCAwLCAmb3JpZ2luKTsKKyAgICAgICAgcGFpbnRTa2lhVGV4dChn
cmFwaGljc0NvbnRleHQsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLCBjdXJMZW4sICZnbHlwaHNbMF0s
ICZhZHZhbmNlc1swXSwgMCwgJm9yaWdpbik7CiAgICAgfQogfQogI2Vsc2UKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJv
bWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMTAz
MDk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBs
YXRmb3JtRGF0YUNocm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTYgKzM3LDM0
IEBACiAjaW5jbHVkZSA8bWxhbmcuaD4KIAogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgor
I2luY2x1ZGUgIlNrVHlwZWZhY2Vfd2luLmgiCiAjaW5jbHVkZSAiU2tpYUZvbnRXaW4uaCIKICNp
bmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTa1R5cGVm
YWNlKiBDcmVhdGVUeXBlZmFjZUZyb21IRm9udChIRk9OVCBoZm9udCwgaW50KiBzaXplLCBpbnQq
IGxmUXVhbGl0eSkKK3sKKyAgICBMT0dGT05UIGluZm87CisgICAgR2V0T2JqZWN0KGhmb250LCBz
aXplb2YoaW5mbyksICZpbmZvKTsKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBpbnQgaGVpZ2h0
ID0gaW5mby5sZkhlaWdodDsKKyAgICAgICAgaWYgKGhlaWdodCA8IDApCisgICAgICAgICAgICBo
ZWlnaHQgPSAtaGVpZ2h0OworICAgICAgICAqc2l6ZSA9IGhlaWdodDsKKyAgICB9CisgICAgaWYg
KGxmUXVhbGl0eSkKKyAgICAgICAgKmxmUXVhbGl0eSA9IGluZm8ubGZRdWFsaXR5OworICAgIHJl
dHVybiBTa0NyZWF0ZVR5cGVmYWNlRnJvbUxPR0ZPTlQoaW5mbyk7Cit9CisKIEZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQog
ICAgIDogbV9mb250KGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSkKICAgICAsIG1fc2l6ZSgt
MSkKICAgICAsIG1fc2NyaXB0Q2FjaGUoMCkKICAgICAsIG1fc2NyaXB0Rm9udFByb3BlcnRpZXMo
MCkKKyAgICAsIG1fdHlwZWZhY2UoMCkKKyAgICAsIG1fbGZRdWFsaXR5KERFRkFVTFRfUVVBTElU
WSkKIHsKIH0KIApAQCAtNTUsNiArNzMsOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKCkKICAgICAsIG1fc2l6ZSgwKQogICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwg
bV9zY3JpcHRGb250UHJvcGVydGllcygwKQorICAgICwgbV90eXBlZmFjZSgwKQorICAgICwgbV9s
ZlF1YWxpdHkoREVGQVVMVF9RVUFMSVRZKQogewogfQogCkBAIC02Myw2ICs4Myw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoSEZPTlQKICAgICAsIG1fc2l6ZShzaXplKQog
ICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9zY3JpcHRGb250UHJvcGVydGllcygwKQor
ICAgICwgbV90eXBlZmFjZShDcmVhdGVUeXBlZmFjZUZyb21IRm9udChmb250LCAwLCAmbV9sZlF1
YWxpdHkpKQogewogfQogCkBAIC03Miw2ICs5Myw4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEoZmxvYXQKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9zY3JpcHRDYWNo
ZSgwKQogICAgICwgbV9zY3JpcHRGb250UHJvcGVydGllcygwKQorICAgICwgbV90eXBlZmFjZSgw
KQorICAgICwgbV9sZlF1YWxpdHkoREVGQVVMVF9RVUFMSVRZKQogewogfQogCkBAIC04MCw3ICsx
MDMsMTAgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdAogICAgICwg
bV9zaXplKGRhdGEubV9zaXplKQogICAgICwgbV9zY3JpcHRDYWNoZSgwKQogICAgICwgbV9zY3Jp
cHRGb250UHJvcGVydGllcygwKQorICAgICwgbV90eXBlZmFjZShkYXRhLm1fdHlwZWZhY2UpCisg
ICAgLCBtX2xmUXVhbGl0eShkYXRhLm1fbGZRdWFsaXR5KQogeworICAgIFNrU2FmZVJlZihtX3R5
cGVmYWNlKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0
b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGRhdGEpCkBAIC04OCw2ICsxMTQsOCBAQCBGb250
UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1EYXRhOjpvcGVyCiAgICAgaWYgKHRoaXMgIT0gJmRh
dGEpIHsKICAgICAgICAgbV9mb250ID0gZGF0YS5tX2ZvbnQ7CiAgICAgICAgIG1fc2l6ZSA9IGRh
dGEubV9zaXplOworICAgICAgICBTa1JlZkNudF9TYWZlQXNzaWduKG1fdHlwZWZhY2UsIGRhdGEu
bV90eXBlZmFjZSk7CisgICAgICAgIG1fbGZRdWFsaXR5ID0gZGF0YS5tX2xmUXVhbGl0eTsKIAog
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyB3aWxsIGdldCByZS1jb21wdXRlZCBpZiBu
ZWNlc3NhcnkuCiAgICAgICAgIFNjcmlwdEZyZWVDYWNoZSgmbV9zY3JpcHRDYWNoZSk7CkBAIC0x
MDEsNiArMTI5LDggQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3Blcgog
CiBGb250UGxhdGZvcm1EYXRhOjp+Rm9udFBsYXRmb3JtRGF0YSgpCiB7CisgICAgU2tTYWZlVW5y
ZWYobV90eXBlZmFjZSk7CisKICAgICBTY3JpcHRGcmVlQ2FjaGUoJm1fc2NyaXB0Q2FjaGUpOwog
ICAgIG1fc2NyaXB0Q2FjaGUgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZv
cm1EYXRhQ2hyb21pdW1XaW4uaAkocmV2aXNpb24gMTAzMDk1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2luY2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ2LDYgKzQ3LDExIEBAIHR5cGVkZWYgc3RydWN0
IEhGT05UX18gKkhGT05UOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFJldHVybiBhIHR5
cGVmYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGZvbnQsIGFuZCByZXR1cm4gaXRzIHNpemUgYW5k
CisvLyBsZlF1YWxpdHkgZnJvbSB0aGUgaGZvbnQncyBMT0dGT05ULiBUaGUgY2FsbGVyIGlzIG5v
dyBhbiBvd25lciBvZiB0aGUKKy8vIHR5cGVmYWNlLgorU2tUeXBlZmFjZSogQ3JlYXRlVHlwZWZh
Y2VGcm9tSEZvbnQoSEZPTlQsIGludCogc2l6ZSwgaW50KiBsZlF1YWxpdHkpOworCiBjbGFzcyBG
b250RGVzY3JpcHRpb247CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtNTcsNiArNjMs
NyBAQCBwdWJsaWM6CiAgICAgLy8gc2V0IGV2ZXJ5dGhpbmcgdG8gTlVMTC4KICAgICBGb250UGxh
dGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9udFBsYXRm
b3JtRGF0YSgpOworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgdGFrZXMgb3duZXJzaGlwIG9mIHRo
ZSBIRk9OVAogICAgIEZvbnRQbGF0Zm9ybURhdGEoSEZPTlQsIGZsb2F0IHNpemUpOwogICAgIEZv
bnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUpOwogICAg
IEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwpAQCAtNjksMTIgKzc2
LDE0IEBAIHB1YmxpYzoKIAogICAgIEhGT05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250
ID8gbV9mb250LT5oZm9udCgpIDogMDsgfQogICAgIGZsb2F0IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZWZhY2U7IH0KKyAgICBpbnQgbGZRdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9sZlF1YWxp
dHk7IH0KIAogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IEhvcml6b250YWw7IH0gLy8gRklYTUU6IEltcGxlbWVudC4KICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEZvbnRPcmllbnRhdGlvbikgeyB9IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAKICAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKLSAgICB7IAorICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udCA/
IG1fZm9udC0+aGFzaCgpIDogTlVMTDsKICAgICB9CiAKQEAgLTEyOSw2ICsxMzgsOSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxSZWZDb3VudGVkSEZPTlQ+IG1fZm9udDsKICAgICBmbG9hdCBtX3Np
emU7ICAvLyBQb2ludCBzaXplIG9mIHRoZSBmb250IGluIHBpeGVscy4KIAorICAgIFNrVHlwZWZh
Y2UqIG1fdHlwZWZhY2U7IC8vIGNhY2hlZCBmcm9tIG1fZm9udAorICAgIGludCBtX2xmUXVhbGl0
eTsgLy8gY2FjaGVkIGZyb20gbV9mb250CisKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3Nj
cmlwdENhY2hlOwogICAgIG11dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZv
bnRQcm9wZXJ0aWVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiAxMDMwOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTYgKzMyLDE2IEBACiAjaW5jbHVkZSAiU2tpYUZvbnRXaW4uaCIK
IAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJHcmFkaWVu
dC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lh
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrRGV2aWNlLmgiCiAjaW5j
bHVkZSAiU2tQYWludC5oIgogI2luY2x1ZGUgIlNrU2hhZGVyLmgiCiAjaW5jbHVkZSAiU2tUZW1w
bGF0ZXMuaCIKLSNpbmNsdWRlICJTa1R5cGVmYWNlX3dpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE3OSwyNyArMTc5LDE1IEBAIHN0YXRpYyB1aW50MzJfdCBnZXREZWZhdWx0R0RJ
VGV4dEZsYWdzKCkKICAgICByZXR1cm4gZ0ZsYWdzOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cFBh
aW50Rm9yRm9udChIRk9OVCBoZm9udCwgU2tQYWludCogcGFpbnQsIFBsYXRmb3JtQ29udGV4dFNr
aWEqIHBjcykKK3N0YXRpYyB2b2lkIHNldHVwUGFpbnRGb3JGb250KFNrUGFpbnQqIHBhaW50LCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBwY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
a1R5cGVmYWNlKiBmYWNlLCBmbG9hdCBzaXplLCBpbnQgcXVhbGl0eSkKIHsKLSAgICAvLyAgRklY
TUU6Ci0gICAgLy8gIE11Y2ggb2YgdGhpcyBsb2dpYyBjb3VsZCBhbHNvIGhhcHBlbiBpbgotICAg
IC8vICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhIGFuZCBiZSBjYWNo
ZWQsCi0gICAgLy8gIGFsbG93aW5nIHVzIHRvIGF2b2lkIHRhbGtpbmcgdG8gR0RJIGF0IHRoaXMg
cG9pbnQuCi0gICAgLy8KLSAgICBMT0dGT05UIGluZm87Ci0gICAgR2V0T2JqZWN0KGhmb250LCBz
aXplb2YoaW5mbyksICZpbmZvKTsKLSAgICBpbnQgc2l6ZSA9IGluZm8ubGZIZWlnaHQ7Ci0gICAg
aWYgKHNpemUgPCAwKQotICAgICAgICBzaXplID0gLXNpemU7IC8vIFdlIGRvbid0IGxldCBHREkg
ZHBpLXNjYWxlIHVzIChzZWUgU2tGb250SG9zdF93aW4uY3BwKS4KLSAgICBwYWludC0+c2V0VGV4
dFNpemUoU2tJbnRUb1NjYWxhcihzaXplKSk7Ci0KLSAgICBTa1R5cGVmYWNlKiBmYWNlID0gU2tD
cmVhdGVUeXBlZmFjZUZyb21MT0dGT05UKGluZm8pOworICAgIHBhaW50LT5zZXRUZXh0U2l6ZShT
a0Zsb2F0VG9TY2FsYXIoc2l6ZSkpOwogICAgIHBhaW50LT5zZXRUeXBlZmFjZShmYWNlKTsKLSAg
ICBTa1NhZmVVbnJlZihmYWNlKTsKIAotICAgIC8vIHR1cm4gbGZRdWFsaXR5IGludG8gdGV4dCBm
bGFncworICAgIC8vIHR1cm4gcXVhbGl0eSBpbnRvIHRleHQgZmxhZ3MKICAgICB1aW50MzJfdCB0
ZXh0RmxhZ3M7Ci0gICAgc3dpdGNoIChpbmZvLmxmUXVhbGl0eSkgeworICAgIHN3aXRjaCAocXVh
bGl0eSkgewogICAgIGNhc2UgTk9OQU5USUFMSUFTRURfUVVBTElUWToKICAgICAgICAgdGV4dEZs
YWdzID0gMDsKICAgICAgICAgYnJlYWs7CkBAIC0yMjcsMTMgKzIxNSwxMyBAQCBzdGF0aWMgdm9p
ZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9uCiAgICAgcGFpbnQtPnNldEZsYWdzKGZsYWdz
KTsKIH0KIAotdm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICBIRk9OVCBoZm9udCwKLSAgICAgICAgICAgICAgICAgICBpbnQgbnVt
R2x5cGhzLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQqIGdseXBocywKLSAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAotICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdPRkZTRVQqIG9mZnNldHMsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgU2tQb2ludCogb3Jp
Z2luKQorc3RhdGljIHZvaWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEhGT05UIGhmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICBTa1R5cGVmYWNlKiBmYWNl
LCBmbG9hdCBzaXplLCBpbnQgcXVhbGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG51bUdseXBocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHT0ZGU0VUKiBvZmZzZXRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTa1BvaW50KiBvcmlnaW4pCiB7CiAgICAgUGxhdGZvcm1Db250
ZXh0U2tpYSogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgU2tDYW52YXMqIGNhbnZhcyA9IHBsYXRmb3JtQ29udGV4dC0+Y2FudmFzKCk7CkBAIC0yNDYs
NyArMjM0LDcgQEAgdm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udAogICAg
IFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0LT5zZXR1cFBhaW50Rm9yRmlsbGlu
ZygmcGFpbnQpOwogICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9U
ZXh0RW5jb2RpbmcpOwotICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQsIHBsYXRm
b3JtQ29udGV4dCk7CisgICAgc2V0dXBQYWludEZvckZvbnQoJnBhaW50LCBwbGF0Zm9ybUNvbnRl
eHQsIGZhY2UsIHNpemUsIHF1YWxpdHkpOwogCiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7CiAK
QEAgLTI2Myw3ICsyNTEsNyBAQCB2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250CiAgICAgICAgIHBhaW50LnJlc2V0KCk7CiAgICAgICAgIHBsYXRmb3JtQ29udGV4dC0+c2V0
dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwgMCk7CiAgICAgICAgIHBhaW50LnNldFRleHRF
bmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2RpbmcpOwotICAgICAgICBzZXR1cFBh
aW50Rm9yRm9udChoZm9udCwgJnBhaW50LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICBzZXR1
cFBhaW50Rm9yRm9udCgmcGFpbnQsIHBsYXRmb3JtQ29udGV4dCwgZmFjZSwgc2l6ZSwgcXVhbGl0
eSk7CiAKICAgICAgICAgaWYgKGRpZEZpbGwpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlz
IGEgc2hhZG93IGFuZCB3ZSBmaWxsZWQgYWJvdmUsIHRoZXJlIHdpbGwgYWxyZWFkeSBiZQpAQCAt
MjgyLDQgKzI3MCwzNCBAQCB2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
CiAgICAgfQogfQogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK3ZvaWQg
cGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBpbnQg
bnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQqIGdseXBocywKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAorICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdPRkZTRVQqIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgU2tQb2ludCog
b3JpZ2luKQoreworICAgIHBhaW50U2tpYVRleHQoY29udGV4dCwgZGF0YS5oZm9udCgpLCBkYXRh
LnR5cGVmYWNlKCksIGRhdGEuc2l6ZSgpLCBkYXRhLmxmUXVhbGl0eSgpLAorICAgICAgICAgICAg
ICAgICAgbnVtR2x5cGhzLCBnbHlwaHMsIGFkdmFuY2VzLCBvZmZzZXRzLCBvcmlnaW4pOworfQor
Cit2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgIEhGT05UIGhmb250LAorICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMs
CisgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAorICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludCogYWR2YW5jZXMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgR09GRlNF
VCogb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBTa1BvaW50KiBvcmlnaW4pCit7
CisgICAgaW50IHNpemU7CisgICAgaW50IHF1YWxpdHk7CisgICAgU2tUeXBlZmFjZSogZmFjZSA9
IENyZWF0ZVR5cGVmYWNlRnJvbUhGb250KGhmb250LCAmc2l6ZSwgJnF1YWxpdHkpOworICAgIFNr
QXV0b1VucmVmIGF1cihmYWNlKTsKKworICAgIHBhaW50U2tpYVRleHQoY29udGV4dCwgaGZvbnQs
IGZhY2UsIHNpemUsIHF1YWxpdHksIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgb2Zmc2V0
cywgb3JpZ2luKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJKHJl
dmlzaW9uIDEwMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
U2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgU2tQ
b2ludDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb250UGxhdGZvcm1EYXRhOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKIApAQCAt
NjksOSArNzAsMjEgQEAgYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpYwog
Ym9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29u
dGV4dCopOwogI2VuZGlmCiAKLS8vIE5vdGUgdGhhdCB0aGUgb2Zmc2V0cyBwYXJhbWV0ZXIgaXMg
b3B0aW9uYWwuICBJZiBub3QgTlVMTCBpdCByZXByZXNlbnRzIGEKKy8vIE5vdGUgdGhhdCB0aGUg
b2Zmc2V0cyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuIElmIG5vdCBudWxsIGl0IHJlcHJlc2VudHMg
YQogLy8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBX
aW5kb3dzIEFQSSBmdW5jdGlvbikuCiB2b2lkIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0
KiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiwKKyAgICAgICAg
ICAgICAgICAgICBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdPRkZTRVQqIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2tQb2ludCogb3JpZ2luKTsKKworLy8gTm90ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFt
ZXRlciBpcyBvcHRpb25hbC4gSWYgbm90IG51bGwgaXQgcmVwcmVzZW50cyBhCisvLyBwZXIgZ2x5
cGggb2Zmc2V0IChzdWNoIGFzIHJldHVybmVkIGJ5IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1
bmN0aW9uKS4KKy8vIE5vdGU6IHRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIHRo
ZSB2ZXJzaW9uIHdpdGggRm9udFBsYXRmb3JtRGF0YSwKKy8vIGFzIHRoYXQgY2FjaGVzIHRoZSBT
a1R5cGVmYWNlIG9iamVjdC4KK3ZvaWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqLAog
ICAgICAgICAgICAgICAgICAgIEhGT05ULAogICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlw
aHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>