<?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>76290</bug_id>
          
          <creation_ts>2012-01-13 10:58:40 -0800</creation_ts>
          <short_desc>[chromium] Convert uses of GetDC to HWndDC.</short_desc>
          <delta_ts>2012-01-23 16:23:26 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76237</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dimich</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535802</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 10:58:40 -0800</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535821</commentid>
    <comment_count>1</comment_count>
      <attachid>122467</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 11:11:17 -0800</bug_when>
    <thetext>Created attachment 122467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535891</commentid>
    <comment_count>2</comment_count>
      <attachid>122467</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 12:30:21 -0800</bug_when>
    <thetext>Comment on attachment 122467
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:-80
&gt; -        ReleaseDC(0, dc);

i&apos;m not totally sure about this change - it looks like this means the ReleaseDC() call will be delayed quite a bit - in this case it could be held across a synchronous IPC when previously it would not. Are you sure this is OK?

&gt; Source/WebCore/rendering/RenderThemeChromiumWin.cpp:-187
&gt; -                ReleaseDC(0, hdc);

similarly here you&apos;re changing the order of the ReleaseDC() and DeleteObject() calls. are you sure that&apos;s OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535909</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 12:48:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 122467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122467&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:-80
&gt; &gt; -        ReleaseDC(0, dc);
&gt; 
&gt; i&apos;m not totally sure about this change - it looks like this means the ReleaseDC() call will be delayed quite a bit - in this case it could be held across a synchronous IPC when previously it would not. Are you sure this is OK?


Why does that matter? This is the DC for the entire screen so it isn&apos;t window specific. It doesn&apos;t matter if we hold it a little longer. It is just important that it is deleted. I suspect the only reason that it was put here is to avoid having to put a ReleaseDC in each clause.

(fwiw, the gdi object limit is quite large if you aren&apos;t leaking them -- which is what inspired this whole change.)

&gt; &gt; Source/WebCore/rendering/RenderThemeChromiumWin.cpp:-187
&gt; &gt; -                ReleaseDC(0, hdc);
&gt; 
&gt; similarly here you&apos;re changing the order of the ReleaseDC() and DeleteObject() calls. are you sure that&apos;s OK?

Yes, the font and the dc have no relation at that point.

Here&apos;s where the two are mixed together and also separated due to the SelectObject.
                HGDIOBJ hObject = SelectObject(hdc, hFont);
                TEXTMETRIC tm;
                GetTextMetrics(hdc, &amp;tm);
                SelectObject(hdc, hObject);
So at the point of DeleteObject and ReleaseDC for the font and dc, the two items are independent.

Ideally HFONT would be in a OwnPtr&lt;HFONT&gt; but that is a different issue and I didn&apos;t wish to boil the ocean completely :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535993</commentid>
    <comment_count>4</comment_count>
      <attachid>122467</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-01-13 14:27:38 -0800</bug_when>
    <thetext>Comment on attachment 122467
Patch

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

Looks good. It is cool - weird that all used are for hWnd = 0 though....

&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:283
&gt;      HGDIOBJ oldFont = static_cast&lt;HFONT&gt;(SelectObject(hdc, hfont));

Not in this patch it it will be awesome to have a RAII abstraction for SelectObject as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535999</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 14:37:42 -0800</bug_when>
    <thetext>OK, sounds like you want a reviewer with a bit more knowledge of how these windows things work (not me). Anyone else please feel free to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538776</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-19 09:56:12 -0800</bug_when>
    <thetext>Dmitry Titov, maybe you could review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540918</commentid>
    <comment_count>7</comment_count>
      <attachid>122467</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2012-01-23 16:00:33 -0800</bug_when>
    <thetext>Comment on attachment 122467
Patch

I looked through those files, change looks correct. Delaying ReleaseDC() until scope close is ok for these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540944</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-23 16:23:26 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/105654</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122467</attachid>
            <date>2012-01-13 11:11:17 -0800</date>
            <delta_ts>2012-01-23 16:00:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76290-20120113111115.patch</filename>
            <type>text/plain</type>
            <size>16883</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMyYmEwNjAzODFmOWZh
YzUxMTMwNmI5ZDQ4Mjk4YWMwYjI4NmRhZS4uODczZjcwYmVjYWVjZTgzZDY1OGUwOGU4OGU4OTdh
NjRhYzFjYTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAxLTEzICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENvbnZl
cnQgdXNlcyBvZiBHZXREQyB0byBIV25kREMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjI5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hl
Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEluZGlyZWN0QW5k
R2V0V2luTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpmb250Q29udGFpbnNDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzY3JpcHRGb250UHJv
cGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxz
Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udE1hcDo6Z2V0QXNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRNYXA6OmdldFNwYWNlR2x5cGgpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dseXBoUGFnZVRyZWVOb2RlQ2hyb21pdW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEJNUEdseXBocyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2ltcGxlRm9udERhdGFDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VW5pc2NyaWJlSGVscGVyOjpFbnN1cmVDYWNoZWREQ0NyZWF0ZWQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN5
c3RlbUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50c1RvUGl4ZWxzKToKKwogMjAx
Mi0wMS0xMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAog
ICAgICAgICBbc291cF0gSW5pdGlhbGl6ZSBtX3NvdXBGbGFncyBpbiBhbGwgUmVzb3VyY2VSZXNw
b25zZSBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKaW5k
ZXggOWY1YmQ0OTE5ZmRhOTAzMmMwMDkyZTJjYzEwNDVkOWUyMDRiOWZjYS4uODUwMjkyNjhmOGI3
ZTVjMTY4NjA0MjI1MTBlN2RkMDI4ZTdiNzJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9t
aXVtV2luLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChj
KSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bmlz
ZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3dp
bi9IV25kRENXaW4uaD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxvYmppZGwu
aD4KQEAgLTI0MSw3ICsyNDIsNyBAQCBzdGF0aWMgSEZPTlQgY3JlYXRlRm9udEluZGlyZWN0QW5k
R2V0V2luTmFtZShjb25zdCBTdHJpbmcmIGZhbWlseSwgTE9HRk9OVCogd2luZgogICAgIGlmICgh
aGZvbnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAg
SFduZERDIGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IHN0YXRpY19jYXN0PEhGT05UPihT
ZWxlY3RPYmplY3QoZGMsIGhmb250KSk7CiAgICAgV0NIQVIgbmFtZVtMRl9GQUNFU0laRV07CiAg
ICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gR2V0VGV4dEZhY2UoZGMsIExGX0ZBQ0VTSVpFLCBu
YW1lKTsKQEAgLTI0OSw3ICsyNTAsNiBAQCBzdGF0aWMgSEZPTlQgY3JlYXRlRm9udEluZGlyZWN0
QW5kR2V0V2luTmFtZShjb25zdCBTdHJpbmcmIGZhbWlseSwgTE9HRk9OVCogd2luZgogICAgICAg
ICByZXN1bHRMZW5ndGgtLTsgLy8gaWdub3JlIHRoZSBudWxsIHRlcm1pbmF0b3IKIAogICAgIFNl
bGVjdE9iamVjdChkYywgb2xkRm9udCk7Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKICAgICAqd2lu
TmFtZSA9IFN0cmluZyhuYW1lLCByZXN1bHRMZW5ndGgpOwogICAgIHJldHVybiBoZm9udDsKIH0K
QEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgYm9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSogZm9udERhdGEsCiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25k
LT5jb250YWlucyhjaGFyYWN0ZXIpOwogICAgIAogICAgIEhGT05UIGhmb250ID0gZm9udERhdGEt
Pmhmb250KCk7IAotICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwog
ICAgIEhHRElPQkogb2xkRm9udCA9IHN0YXRpY19jYXN0PEhGT05UPihTZWxlY3RPYmplY3QoaGRj
LCBoZm9udCkpOwogICAgIGludCBjb3VudCA9IEdldEZvbnRVbmljb2RlUmFuZ2VzKGhkYywgMCk7
CiAgICAgaWYgKCFjb3VudCAmJiBQbGF0Zm9ybVN1cHBvcnQ6OmVuc3VyZUZvbnRMb2FkZWQoaGZv
bnQpKQpAQCAtMjg3LDcgKzI4Nyw2IEBAIHN0YXRpYyBib29sIGZvbnRDb250YWluc0NoYXJhY3Rl
cihjb25zdCBGb250UGxhdGZvcm1EYXRhKiBmb250RGF0YSwKICAgICBpZiAoIWNvdW50KSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGdldCB0aGUgZm9udCB1bmljb2RlIHJhbmdlIGFm
dGVyIHNlY29uZCBhdHRlbXB0Iik7CiAgICAgICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQp
OwotICAgICAgICBSZWxlYXNlREMoMCwgaGRjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0yOTksNyArMjk4LDYgQEAgc3RhdGljIGJvb2wgZm9udENvbnRhaW5zQ2hhcmFjdGVy
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIGZvbnREYXRhLAogICAgIGNvdW50ID0gR2V0Rm9udFVu
aWNvZGVSYW5nZXMoaGRjLCBnbHlwaHNldCk7CiAgICAgQVNTRVJUKGNvdW50ID4gMCk7CiAgICAg
U2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7Ci0gICAgUmVsZWFzZURDKDAsIGhkYyk7CiAKICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgZG9pbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgdHdvOgog
ICAgIC8vIDEpIHBvcnQgYmFjayBJQ1UgNC4wJ3MgZmFzdGVyIGxvb2stdXAgY29kZSBmb3IgVW5p
Y29kZVNldApAQCAtNTcxLDExICs1NjksMTAgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAg
ICAvLyBib3RoIEdldFRleHRGYWNlKCkgYW5kIEVudW1Gb250RmFtaWxpZXMoKSByZXR1cm4gdGhl
IGxvY2FsaXplZCBuYW1lLiBTbywKICAgICAvLyBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEoKSBkb2VzIG5vdCBmaWx0ZXIgb3V0IHRoZSBmb250cwogICAgIC8vIHJldHVybmVkIGJ5
IHRoaXMgRW51bUZvbnRGYW1pbGllcygpIGNhbGwuCi0gICAgSERDIGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGRjKDApOwogICAgIGlmIChkYykgewogICAgICAgICBHZXRMYXN0UmVzb3J0RmFs
bGJhY2tGb250UHJvY0RhdGEgcHJvY0RhdGEodGhpcywgJmRlc2NyaXB0aW9uLCBzaG91bGRSZXRh
aW4sIGZhbGxiYWNrRm9udE5hbWUpOwogICAgICAgICBFbnVtRm9udEZhbWlsaWVzKGRjLCAwLCBn
ZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZw
cm9jRGF0YSkpOwotICAgICAgICBSZWxlYXNlREMoMCwgZGMpOwogCiAgICAgICAgIGlmIChwcm9j
RGF0YS5tX2ZvbnREYXRhKQogICAgICAgICAgICAgcmV0dXJuIHByb2NEYXRhLm1fZm9udERhdGE7
CkBAIC01ODcsNyArNTg0LDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKIAogdm9pZCBGb250
Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwg
VmVjdG9yPHVuc2lnbmVkPiYgdHJhaXRzTWFza3MpCiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDAp
OworICAgIEhXbmREQyBoZGMoMCk7CiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9u
dC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CkBAIC01OTksOCArNTk2LDYgQEAgdm9pZCBG
b250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFt
ZSwgVmVjdG9yPHVuc2lnbmUKICAgICBUcmFpdHNJbkZhbWlseVByb2NEYXRhIHByb2NEYXRhKGZh
bWlseU5hbWUpOwogICAgIEVudW1Gb250RmFtaWxpZXNFeChoZGMsICZsb2dGb250LCB0cmFpdHNJ
bkZhbWlseUVudW1Qcm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJnByb2NEYXRhKSwgMCk7
CiAgICAgY29weVRvVmVjdG9yKHByb2NEYXRhLm1fdHJhaXRzTWFza3MsIHRyYWl0c01hc2tzKTsK
LQotICAgIFJlbGVhc2VEQygwLCBoZGMpOwogfQogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2Fj
aGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9t
aXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zv
bnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5jcHAKaW5kZXggNDZmOWVjZGFkNTZhY2Y2NWQ0YjBl
ZWVmZDIxNThkMTQ3ZTZhMWJhYS4uMDI5ODBlYTZhOGJhOTc0YmNlN2YzMWY4NDI1MGRhZmQ5YWI2
NWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1XaW4uY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBD
b21wdXRlciwgSW5jLgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDEsNiArNDEsOCBAQAogI2lu
Y2x1ZGUgIlNraWFGb250V2luLmgiCiAjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAKKyNpbmNs
dWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNrVHlw
ZWZhY2UqIENyZWF0ZVR5cGVmYWNlRnJvbUhGb250KEhGT05UIGhmb250LCBpbnQqIHNpemUsIGlu
dCogbGZRdWFsaXR5KQpAQCAtMTYxLDcgKzE2Myw3IEBAIFNDUklQVF9GT05UUFJPUEVSVElFUyog
Rm9udFBsYXRmb3JtRGF0YTo6c2NyaXB0Rm9udFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IFNjcmlwdEdldEZvbnRQcm9wZXJ0aWVzKDAsIHNjcmlwdENhY2hlKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3Jp
cHRGb250UHJvcGVydGllcyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9QRU5ESU5HKSB7Ci0g
ICAgICAgICAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICAgICAgICAgIEhXbmREQyBkYygwKTsK
ICAgICAgICAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgaGZvbnQoKSk7
CiAgICAgICAgICAgICBIUkVTVUxUIGhyID0gU2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoZGMsIHNj
cmlwdENhY2hlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zY3JpcHRGb250UHJvcGVydGllcyk7CkBAIC0xNzcsNyArMTc5LDYgQEAgU0NSSVBU
X0ZPTlRQUk9QRVJUSUVTKiBGb250UGxhdGZvcm1EYXRhOjpzY3JpcHRGb250UHJvcGVydGllcygp
IGNvbnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNlbGVjdE9iamVjdChkYywgb2xk
Rm9udCk7Ci0gICAgICAgICAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hy
b21pdW1XaW4uY3BwCmluZGV4IGE0Nzk4ZGRkNTJmZGJiNWEyMTQwNDBhODI2Mzk1YThhNmM5ZGM5
NmMuLmQxYTAzOTVkMjEyYTUwMWM4ZWZkNTc0ZTI1ODZjNjMyZjVjODIwODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9t
aXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChjKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHVuaWNv
ZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTUwLDE0ICs1MSwxMyBAQCBib29sIGlzRm9udFByZXNlbnQoY29u
c3QgVUNoYXIqIGZvbnROYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250TmFt
ZSk7CiAgICAgaWYgKCFoZm9udCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhEQyBkYyA9
IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBzdGF0
aWNfY2FzdDxIRk9OVD4oU2VsZWN0T2JqZWN0KGRjLCBoZm9udCkpOwogICAgIFdDSEFSIGFjdHVh
bEZvbnROYW1lW0xGX0ZBQ0VTSVpFXTsKICAgICBHZXRUZXh0RmFjZShkYywgTEZfRkFDRVNJWkUs
IGFjdHVhbEZvbnROYW1lKTsKICAgICBhY3R1YWxGb250TmFtZVtMRl9GQUNFU0laRSAtIDFdID0g
MDsKICAgICBTZWxlY3RPYmplY3QoZGMsIG9sZEZvbnQpOwogICAgIERlbGV0ZU9iamVjdChoZm9u
dCk7Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKICAgICAvLyBXZSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IEVhc3QgQXNpYW4gZm9udHMgd2l0aCBsb2NhbGUtZGVwZW5kZW50CiAgICAgLy8gbmFt
ZXMgaGVyZSBmb3Igbm93LgogICAgIHJldHVybiAhd2NzY21wKGZvbnROYW1lLCBhY3R1YWxGb250
TmFtZSk7CkBAIC0yNDEsMjQgKzI0MSwyMiBAQCBjb25zdCBpbnQga1VuZGVmaW5lZEFzY2VudCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CiAvLyBrVW5kZWZpbmVkQXNjZW50IGlz
IHJldHVybmVkLCBpbnN0ZWFkLgogaW50IGdldEFzY2VudChIRk9OVCBoZm9udCkKIHsKLSAgICBI
REMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250
ID0gU2VsZWN0T2JqZWN0KGRjLCBoZm9udCk7CiAgICAgVEVYVE1FVFJJQyB0bTsKICAgICBCT09M
IGdvdE1ldHJpY3MgPSBHZXRUZXh0TWV0cmljcyhkYywgJnRtKTsKICAgICBTZWxlY3RPYmplY3Qo
ZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGdvdE1ldHJp
Y3MgPyB0bS50bUFzY2VudCA6IGtVbmRlZmluZWRBc2NlbnQ7CiB9CiAKIFdPUkQgZ2V0U3BhY2VH
bHlwaChIRk9OVCBoZm9udCkgCiB7Ci0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFduZERD
IGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgaGZvbnQpOwog
ICAgIFdDSEFSIHNwYWNlID0gTCcgJzsKICAgICBXT1JEIHNwYWNlR2x5cGggPSAwOwogICAgIEdl
dEdseXBoSW5kaWNlcyhkYywgJnNwYWNlLCAxLCAmc3BhY2VHbHlwaCwgMCk7CiAgICAgU2VsZWN0
T2JqZWN0KGRjLCBvbGRGb250KTsKLSAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgIHJldHVybiBz
cGFjZUdseXBoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HbHlwaFBhZ2VUcmVlTm9kZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dseXBoUGFnZVRyZWVOb2RlQ2hyb21p
dW1XaW4uY3BwCmluZGV4IGY1YWIyMjE1NjVkMzM4ZDI1NzFjNjczNjA5MjFiZWRmYjExNWJlODYu
LjA4NzI0OWIwZDBjNGNiY2U3ZmU3M2JlMzFhOGYzNmU2NTMzMTc5M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dseXBoUGFnZVRyZWVOb2Rl
Q2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dseXBoUGFnZVRyZWVOb2RlQ2hyb21pdW1XaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNpbmNsdWRlICJVbmlz
Y3JpYmVIZWxwZXJUZXh0UnVuLmgiCiAKKyNpbmNsdWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZpbGxzIG9uZSBwYWdlIG9mIGZvbnQgZGF0YSBw
b2ludGVycyB3aXRoIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZQpAQCAtNzEsMTMgKzczLDEyIEBA
IHN0YXRpYyBib29sIGZpbGxCTVBHbHlwaHModW5zaWduZWQgb2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzZSkKIHsKLSAgICBIREMgZGMgPSBHZXREQygoSFdO
RCkwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2Jq
ZWN0KGRjLCBmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7CiAKICAgICBURVhUTUVU
UklDIHRtID0gezB9OwogICAgIGlmICghR2V0VGV4dE1ldHJpY3MoZGMsICZ0bSkpIHsKICAgICAg
ICAgU2VsZWN0T2JqZWN0KGRjLCBvbGRGb250KTsKLSAgICAgICAgUmVsZWFzZURDKDAsIGRjKTsK
IAogICAgICAgICBpZiAocmVjdXJzZSkgewogICAgICAgICAgICAgaWYgKFBsYXRmb3JtU3VwcG9y
dDo6ZW5zdXJlRm9udExvYWRlZChmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSkpCkBA
IC0xNjEsNyArMTYyLDYgQEAgc3RhdGljIGJvb2wgZmlsbEJNUEdseXBocyh1bnNpZ25lZCBvZmZz
ZXQsCiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGRjLCBvbGRGb250KTsKLSAgICBSZWxlYXNl
REMoMCwgZGMpOwogICAgIHJldHVybiBoYXZlR2x5cGhzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaW1wbGVGb250RGF0YUNocm9t
aXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Np
bXBsZUZvbnREYXRhQ2hyb21pdW1XaW4uY3BwCmluZGV4IDc4YWQ1NmFmOWQzNTQ4ODJlYTI4M2Qw
ZmZhMDFjYTI5YzEwMTUxYmEuLmE2NDU0NGY2YjFhZjMxNmNlYjgyNmI5YWQ1ZjJhYTFlN2ZjMzNm
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NpbXBsZUZvbnREYXRhQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBsZUZvbnREYXRhQ2hyb21pdW1XaW4uY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvd2luL0hXbmREQ1dpbi5oPgogCiAjaW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgogI2luY2x1
ZGUgPHVuaWNvZGUvdW5vcm0uaD4KQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBTaW1wbGVGb250RGF0
YTo6cGxhdGZvcm1Jbml0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEhEQyBkYyA9
IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxl
Y3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogCiAgICAgVEVYVE1FVFJJQyB0
ZXh0TWV0cmljID0gezB9OwpAQCAtOTUsNyArOTYsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpw
bGF0Zm9ybUluaXQoKQogICAgIG1fZm9udE1ldHJpY3Muc2V0TGluZVNwYWNpbmcoYXNjZW50ICsg
ZGVzY2VudCArIGxpbmVHYXApOwogCiAgICAgU2VsZWN0T2JqZWN0KGRjLCBvbGRGb250KTsKLSAg
ICBSZWxlYXNlREMoMCwgZGMpOwogfQogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNo
YXJXaWR0aEluaXQoKQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNv
bnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29u
CiB2b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCiB7CiAgICAgLy8gVEVYVE1F
VFJJQ1MgaGF2ZSB0aGlzLiAgU2V0IG1fdHJlYXRBc0ZpeGVkUGl0Y2ggYmFzZWQgb2ZmIHRoYXQu
Ci0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFduZERDIGRjKDApOwogICAgIEhHRElPQkog
b2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAKICAg
ICAvLyBZZXMsIHRoaXMgbG9va3MgYmFja3dhcmRzLCBidXQgdGhlIGZpeGVkIHBpdGNoIGJpdCBp
cyBhY3R1YWxseSBzZXQgaWYgdGhlIGZvbnQKQEAgLTE2Niw3ICsxNjYsNiBAQCB2b2lkIFNpbXBs
ZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCiAgICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9ICgo
dGV4dE1ldHJpYy50bVBpdGNoQW5kRmFtaWx5ICYgVE1QRl9GSVhFRF9QSVRDSCkgPT0gMCk7CiAK
ICAgICBTZWxlY3RPYmplY3QoZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiB9
CiAKIEZsb2F0UmVjdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlw
aCkgY29uc3QKQEAgLTE3OSw3ICsxNzgsNyBAQCBmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZv
cm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIGlmICghbV9wbGF0Zm9ybURh
dGEuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhEQyBkYyA9IEdldERDKDApOwor
ICAgIEhXbmREQyBkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoZGMs
IG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogCiAgICAgaW50IHdpZHRoID0gMDsKQEAgLTE5NCw3
ICsxOTMsNiBAQCBmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEds
eXBoIGdseXBoKSBjb25zdAogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChkYywgb2xkRm9udCk7
Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
d2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAKaW5kZXggZWZjYTNkOTc2OWVlYmU3
ZWYyYTc1MjY5MjliMDY4NzM4YWNlMTE5Mi4uMTBjNmI0ODlkZDhlMWU4ZTgzYTFmOTAxNWU4MDRl
MmNiNzllZWZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTa1Bv
aW50LmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENXaW4uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC03ODYsMTMgKzc4NywxMSBAQCB2b2lkIFVuaXNjcmliZUhlbHBlcjo6RW5zdXJlQ2FjaGVk
RENDcmVhdGVkKCkKICAgICAvLyBBbGxvY2F0ZSBhIG1lbW9yeSBEQyB0aGF0IGlzIGNvbXBhdGli
bGUgd2l0aCB0aGUgRGVza3RvcCBEQyBzaW5jZSB3ZSBkb24ndCBoYXZlIGFueSB3aW5kb3csCiAg
ICAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZSBEZXNrdG9wIERDIGRpcmVjdGx5IHNp
bmNlIGl0IGNhbiBoYXZlIG5hc3R5IHNpZGUgZWZmZWN0cwogICAgIC8vIGFzIGlkZW50aWZpZWQg
aW4gQ2hyb21lIElzc3VlIGh0dHA6Ly9jcmJ1Zy5jb20vNTkzMTUuCi0gICAgSERDIHNjcmVlbkRD
ID0gOjpHZXREQygwKTsKKyAgICBIV25kREMgc2NyZWVuREMoMCk7CiAgICAgbV9jYWNoZWREQyA9
IDo6Q3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDKTsKICAgICBBU1NFUlQobV9jYWNoZWREQyk7
Ci0KLSAgICBpbnQgcmVzdWx0ID0gOjpSZWxlYXNlREMoMCwgc2NyZWVuREMpOwotICAgIEFTU0VS
VChyZXN1bHQgPT0gMSk7CiB9CisKIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpmaWxsU2hhcGVzKCkK
IHsKICAgICBtX3NoYXBlcy5yZXNpemUobV9ydW5zLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggZDQzMjhk
ZjU2M2ViZDJhYTY4MWY3ZjJmYjU0Y2RjMWIyYmM5MzIwOS4uMjczNTRiODJiNmQ4ODlhODljYjQ5
NjhjZjkwMzVkYzZhNmQ2MWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1ZGUg
IlN5c3RlbUluZm8uaCIKICNpbmNsdWRlICJUcmFuc3BhcmVuY3lXaW4uaCIKIAorI2luY2x1ZGUg
PHd0Zi93aW4vSFduZERDV2luLmg+CisKIC8vIEZJWE1FOiBUaGlzIGRlcGVuZGVuY3kgc2hvdWxk
IGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4KICNpbmNsdWRlIDxza2lhL2V4dC9za2lhX3V0aWxzX3dp
bi5oPgogCkBAIC0xNzgsMTMgKzE4MCwxMiBAQCBzdGF0aWMgZmxvYXQgc3lzdGVtRm9udFNpemUo
Y29uc3QgTE9HRk9OVCYgZm9udCkKICAgICBpZiAoc2l6ZSA8IDApIHsKICAgICAgICAgSEZPTlQg
aEZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QoJmZvbnQpOwogICAgICAgICBpZiAoaEZvbnQpIHsK
LSAgICAgICAgICAgIEhEQyBoZGMgPSBHZXREQygwKTsgLy8gV2hhdCBhYm91dCBwcmludGluZz8g
IElzIHRoaXMgdGhlIHJpZ2h0IERDPworICAgICAgICAgICAgSFduZERDIGhkYygwKTsgLy8gV2hh
dCBhYm91dCBwcmludGluZz8gSXMgdGhpcyB0aGUgcmlnaHQgREM/CiAgICAgICAgICAgICBpZiAo
aGRjKSB7CiAgICAgICAgICAgICAgICAgSEdESU9CSiBoT2JqZWN0ID0gU2VsZWN0T2JqZWN0KGhk
YywgaEZvbnQpOwogICAgICAgICAgICAgICAgIFRFWFRNRVRSSUMgdG07CiAgICAgICAgICAgICAg
ICAgR2V0VGV4dE1ldHJpY3MoaGRjLCAmdG0pOwogICAgICAgICAgICAgICAgIFNlbGVjdE9iamVj
dChoZGMsIGhPYmplY3QpOwotICAgICAgICAgICAgICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAg
ICAgICAgICAgICAgIHNpemUgPSB0bS50bUFzY2VudDsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIERlbGV0ZU9iamVjdChoRm9udCk7CkBAIC0yMDksMTMgKzIxMCwxMSBAQCBzdGF0aWMgZmxv
YXQgcG9pbnRzVG9QaXhlbHMoZmxvYXQgcG9pbnRzKQogewogICAgIHN0YXRpYyBmbG9hdCBwaXhl
bHNQZXJJbmNoID0gMC4wZjsKICAgICBpZiAoIXBpeGVsc1BlckluY2gpIHsKLSAgICAgICAgSERD
IGhkYyA9IEdldERDKDApOyAvLyBXaGF0IGFib3V0IHByaW50aW5nPyAgSXMgdGhpcyB0aGUgcmln
aHQgREM/Ci0gICAgICAgIGlmIChoZGMpIHsgLy8gQ2FuIHRoaXMgZXZlciBhY3R1YWxseSBiZSBO
VUxMPworICAgICAgICBIV25kREMgaGRjKDApOyAvLyBXaGF0IGFib3V0IHByaW50aW5nPyBJcyB0
aGlzIHRoZSByaWdodCBEQz8KKyAgICAgICAgaWYgKGhkYykgLy8gQ2FuIHRoaXMgZXZlciBhY3R1
YWxseSBiZSAwPwogICAgICAgICAgICAgcGl4ZWxzUGVySW5jaCA9IEdldERldmljZUNhcHMoaGRj
LCBMT0dQSVhFTFNZKTsKLSAgICAgICAgICAgIFJlbGVhc2VEQygwLCBoZGMpOwotICAgICAgICB9
IGVsc2UgeworICAgICAgICBlbHNlCiAgICAgICAgICAgICBwaXhlbHNQZXJJbmNoID0gOTYuMGY7
Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgcG9pbnRzUGVySW5j
aCA9IDcyLjBmOwo=
</data>
<flag name="review"
          id="123258"
          type_id="1"
          status="+"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>