<?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>99343</bug_id>
          
          <creation_ts>2012-10-15 11:32:24 -0700</creation_ts>
          <short_desc>[CSS Exclusions] Polygon edges should span colinear vertices</short_desc>
          <delta_ts>2012-11-05 09:53:32 -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>CSS</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>
          <dependson>98548</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742222</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-15 11:32:24 -0700</bug_when>
    <thetext>At the moment, ExclusionPolygonEdges always (just) connect adjacent vertices.  When a sequence of 3 or more colinear vertices appears, the polygon edge should be defined in terms of the first and last colinear vertices.  This reduces the size of the overall ExclusionPolygon data structure, and will make looking up polygon edges - see m_edgeTree.allOverlaps() - more efficient.

Note that this can be a little tricky when the colinear vertices wrap around the end of the polygon.  For example this CSS polygon has 5 edges.  

  polygon(10px 10px, 20px 10px, 30px 10px, 15px 30px, 0px 10px)

Its ExclusionPolygon representation should be a simple triangle:

  polygon(0px 10px, 30px 10px, 15px 30px)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756872</commentid>
    <comment_count>1</comment_count>
      <attachid>171982</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-01 21:25:27 -0700</bug_when>
    <thetext>Created attachment 171982
Patch

ExclusionPolygonEdges now span coincident and collinear vertices. Currently pairs of vertices are only considered coincident if their coordinates are exactly equal. Similarly, a vertex is only considered collinear with an edge if the area of the triangle defined by the three vertices is exactly zero.  In the future it may be useful to relax the comparison with zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758503</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-05 07:05:45 -0800</bug_when>
    <thetext>Before I review this. Do you preserve the overall direction of the vertex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758534</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-05 07:53:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Before I review this. Do you preserve the overall direction of the vertex?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758550</commentid>
    <comment_count>4</comment_count>
      <attachid>171982</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-05 08:23:48 -0800</bug_when>
    <thetext>Comment on attachment 171982
Patch

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

Looks good, just some comments.

&gt; Source/WebCore/ChangeLog:24
&gt; +        (WebCore::ExclusionPolygon::ExclusionPolygon): Skip coincident,collinear vertices when building the list of edges.

coincident,collinear space missing.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:84
&gt; +        if (areCollinearPoints(vertexAt(vertexIndex1), vertexAt(vertexIndex2), vertexAt(vertexIndex3)))
&gt; +            vertexIndex2 = vertexIndex3;
&gt; +        else
&gt; +            break;

why not 

if (!(...))
    break;

vertexIndex2 = ...

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:103
&gt; +    if (!m_empty) {
&gt; +        unsigned edgeIndex = 0;

looks like you can return earlier here:

if (m_empty)
    return;

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:129
&gt; +    if (!m_empty) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758607</commentid>
    <comment_count>5</comment_count>
      <attachid>172352</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-05 09:18:24 -0800</bug_when>
    <thetext>Created attachment 172352
Patch

I&apos;ve made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758620</commentid>
    <comment_count>6</comment_count>
      <attachid>172352</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-05 09:44:28 -0800</bug_when>
    <thetext>Comment on attachment 172352
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758623</commentid>
    <comment_count>7</comment_count>
      <attachid>172352</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 09:53:28 -0800</bug_when>
    <thetext>Comment on attachment 172352
Patch

Clearing flags on attachment: 172352

Committed r133490: &lt;http://trac.webkit.org/changeset/133490&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758624</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 09:53:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171982</attachid>
            <date>2012-11-01 21:25:27 -0700</date>
            <delta_ts>2012-11-05 09:18:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>12483</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNzA5NjVjLi44YWJlMTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDEgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBQb2x5Z29uIGVkZ2VzIHNob3VsZCBzcGFuIGNvbGluZWFyIHZlcnRpY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTM0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcmlmeSB0aGF0IGV4
Y2x1c2lvbiBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGxheW91dCBpcyB1bmFmZmVjdGVkIGJ5IGNv
aW5jaWRlbnQKKyAgICAgICAgb3IgY29sbGluZWFyIHZlcnRpY2VzLgorCisgICAgICAgICogZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNl
cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1jb2luY2lkZW50LXZlcnRpY2VzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWNvbGxpbmVh
ci12ZXJ0aWNlcy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgTmV3IGltYWdlIHJlc3VsdHMgZm9yIGNvbXBvc2l0aW5nIHRlc3RzLiBDcm9z
cy1wbGF0Zm9ybSBpbWFnZSByZXN1bHRzIHNlZW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWNvaW5jaWRlbnQtdmVydGlj
ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWNvaW5jaWRlbnQtdmVydGljZXMtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTZiNTY0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29p
bmNpZGVudC12ZXJ0aWNlcy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0Vu
YWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsKKyAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB0b3A6IDUwcHg7CisgICAgICAgIGxl
ZnQ6IDUwcHg7CisgICAgICAgIHdpZHRoOiAyNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsK
KyAgICAgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBn
cmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgUmVxdWlyZXMgQWhl
bSBmb250LiBWZXJpZmllcyB0aGF0IHBvbHlnb25hbCBzaGFwZXMgd2l0aCBtdWx0aXBsZSBjb2lu
Y2lkZW50IHZlcnRpY2VzIHByb2R1Y2UgCisgICAgdGhlIHNhbWUgb3V0cHV0IGFzIHRoZXkgd291
bGQgd2l0aCBvbmx5IHRoZSB1bmlxdWUgdmVydGljZXMuICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3Bs
YXkgdHdvCisgICAgaW5kZW50aWNhbCBzb2xpZCBncmVlbiBzcXVhcmVzLgorICAgIDxkaXYgaWQ9
InNoYXBlLWluc2lkZSI+WFhYWCBYWFhYIFhYWFggWFhYWDwvZGl2PgorICAgIDxkaXYgaWQ9InNo
YXBlLWluc2lkZSI+WFhYWCBYWFhYIFhYWFggWFhYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNlcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNjkxZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1jb2luY2lkZW50LXZlcnRpY2VzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5h
YmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUtY29pbmNp
ZGVudC12ZXJ0aWNlcyB7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOwor
ICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNTBweDsKKyAgICAgICAgaGVp
Z2h0OiAyNTBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24oNTBweCA1
MHB4LCA1MHB4IDUwcHgsICAyNTBweCA1MHB4LCAyNTBweCA1MHB4LCAgMjUwcHggMjUwcHgsICA1
MHB4IDI1MHB4LCAgNTBweCA1MHB4LCA1MHB4IDUwcHgpOworICAgIH0KKyAgICAjc2hhcGUtaW5z
aWRlIHsKKyAgICAgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNv
bG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDI1MHB4OworICAgICAgICBoZWlnaHQ6IDI1MHB4
OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbig1MHB4IDUwcHgsIDI1MHB4
IDUwcHgsIDI1MHB4IDI1MHB4LCA1MHB4IDI1MHB4KTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgICAgUmVxdWlyZXMgQWhlbSBmb250LiBWZXJpZmllcyB0aGF0IHBvbHlnb25h
bCBzaGFwZXMgd2l0aCBtdWx0aXBsZSBjb2luY2lkZW50IHZlcnRpY2VzIHByb2R1Y2UgCisgICAg
dGhlIHNhbWUgb3V0cHV0IGFzIHRoZXkgd291bGQgd2l0aCBvbmx5IHRoZSB1bmlxdWUgdmVydGlj
ZXMuICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvCisgICAgaW5kZW50aWNhbCBzb2xpZCBn
cmVlbiBzcXVhcmVzLgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZS1jb2luY2lkZW50LXZlcnRp
Y2VzIj5YWFhYIFhYWFggWFhYWCBYWFhYPC9kaXY+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRl
Ij5YWFhYIFhYWFggWFhYWCBYWFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1j
b2xsaW5lYXItdmVydGljZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWNvbGxpbmVhci12ZXJ0aWNlcy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjc2YzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENT
U0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBl
LWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgdG9wOiA1MHB4
OworICAgICAgICBsZWZ0OiA1MHB4OworICAgICAgICB3aWR0aDogMjUwcHg7CisgICAgICAgIGhl
aWdodDogMjUwcHg7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAg
IFJlcXVpcmVzIEFoZW0gZm9udC4gVmVyaWZpZXMgdGhhdCBwb2x5Z29uYWwgc2hhcGVzIHdpdGgg
bXVsdGlwbGUgY29pbmNpZGVudCB2ZXJ0aWNlcyBwcm9kdWNlIAorICAgIHRoZSBzYW1lIG91dHB1
dCBhcyB0aGV5IHdvdWxkIHdpdGggb25seSB0aGUgdW5pcXVlIHZlcnRpY2VzLiAgVGhpcyB0ZXN0
IHNob3VsZCBkaXNwbGF5IHR3bworICAgIGluZGVudGljYWwgc29saWQgZ3JlZW4gcmVjdGlsaW5l
YXIgdHJpYW5nbGVzLgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+WFhYPGJyLz5YWDxici8+
WDwvZGl2PgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+WFhYPGJyLz5YWDxici8+WDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29sbGluZWFyLXZlcnRpY2VzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xs
aW5lYXItdmVydGljZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
ZTJmMTFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29sbGluZWFyLXZlcnRpY2VzLmh0bWwKQEAgLTAsMCAr
MSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNz
aGFwZS1pbnNpZGUtY29sbGluZWFyLXZlcnRpY2VzIHsKKyAgICAgICAgZm9udDogNTBweC8xIEFo
ZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDI1
MHB4OworICAgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lk
ZTogcG9seWdvbigyMDBweCAxMDBweCwgMTUwcHggMTUwcHgsIDEwMHB4IDIwMHB4LCA1MHB4IDI1
MHB4LCA1MHB4IDUwcHgsIDYwcHggNTBweCwgNjFweCA1MHB4LCAyNTBweCA1MHB4KTsKKyAgICB9
CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNl
cmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNTBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyNTBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24o
NTBweCA1MHB4LCAgMjUwcHggNTBweCwgMjUwcHggNTBweCwgNTBweCAyNTBweCk7CisgICAgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFJlcXVpcmVzIEFoZW0gZm9udC4gVmVyaWZp
ZXMgdGhhdCBwb2x5Z29uYWwgc2hhcGVzIHdpdGggbXVsdGlwbGUgY29pbmNpZGVudCB2ZXJ0aWNl
cyBwcm9kdWNlIAorICAgIHRoZSBzYW1lIG91dHB1dCBhcyB0aGV5IHdvdWxkIHdpdGggb25seSB0
aGUgdW5pcXVlIHZlcnRpY2VzLiAgVGhpcyB0ZXN0IHNob3VsZCBkaXNwbGF5IHR3bworICAgIGlu
ZGVudGljYWwgc29saWQgZ3JlZW4gcmVjdGlsaW5lYXIgdHJpYW5nbGVzLgorICAgIDxkaXYgaWQ9
InNoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMiPlhYWCBYWCBYPC9kaXY+CisgICAgPGRp
diBpZD0ic2hhcGUtaW5zaWRlIj5YWFggWFggWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNmYjgyZjEuLjQ1NzkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxMi0xMS0wMSAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBb
Q1NTIEV4Y2x1c2lvbnNdIFBvbHlnb24gZWRnZXMgc2hvdWxkIHNwYW4gY29saW5lYXIgdmVydGlj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVz
aW9uUG9seWdvbkVkZ2VzIG5vdyBzcGFuIGNvaW5jaWRlbnQgYW5kIGNvbGxpbmVhciB2ZXJ0aWNl
cy4gQ3VycmVudGx5CisgICAgICAgIHBhaXJzIG9mIHZlcnRpY2VzIGFyZSBvbmx5IGNvbnNpZGVy
ZWQgY29pbmNpZGVudCBpZiB0aGVpciBjb29yZGluYXRlcyBhcmUgZXhhY3RseQorICAgICAgICBl
cXVhbC4gU2ltaWxhcmx5LCBhIHZlcnRleCBpcyBvbmx5IGNvbnNpZGVyZWQgY29sbGluZWFyIHdp
dGggYW4gZWRnZSBpZiB0aGUgYXJlYQorICAgICAgICBvZiB0aGUgdHJpYW5nbGUgZGVmaW5lZCBi
eSB0aGUgdGhyZWUgdmVydGljZXMgaXMgZXhhY3RseSB6ZXJvLiAgSW4gdGhlIGZ1dHVyZSBpdAor
ICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIHJlbGF4IHRoZSBjb21wYXJpc29uIHdpdGggemVyby4K
KworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtY29pbmNpZGVudC12ZXJ0aWNlcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGV0ZXJtaW5hbnQpOiBVc2VkIHRvIG1lYXN1cmUgY29sbGluZWFyaXR5LgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphcmVDb2xsaW5lYXJQb2ludHMpOiBUcnVlIGlm
IHRocmVlIEZsb2F0UG9pbnQgYXJndW1lbnRzIGFyZSBjb2xsaW5lYXIgcGVyIHRoZSB0ZXN0IG91
dGxpbmVkIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6YXJlQ29pbmNpZGVudFBvaW50cyk6IFRy
dWUgaWYgdGhlIHR3byBGbG9hdFBvaW50IGFyZ3VtZW50cyBhcmUgZXF1YWwuCisgICAgICAgIChX
ZWJDb3JlOjpuZXh0VmVydGV4SW5kZXgpOiBUaGUgbmV4dCB2ZXJ0ZXggaW5kZXggaW4gY2xvY2t3
aXNlIG9yIGNvdW50ZXJjbG9ja3dpc2Ugb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNp
b25Qb2x5Z29uOjpmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleCk6IFJldHVybiB0aGUgaW5kZXggb2Yg
dGhlIG5leHQgbm9uLWNvaW5jaWRlbnQsIG5vbi1jb2xsaW5lYXIgdmVydGV4LgorICAgICAgICAo
V2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbjo6RXhjbHVzaW9uUG9seWdvbik6IFNraXAgY29pbmNp
ZGVudCxjb2xsaW5lYXIgdmVydGljZXMgd2hlbiBidWlsZGluZyB0aGUgbGlzdCBvZiBlZGdlcy4K
KyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oOiBBZGRlZCBwcml2YXRlIGZp
bmROZXh0RWRnZVZlcnRleEluZGV4KCkgZGVjbGFyYXRpb24uCisKIDIwMTItMTEtMDEgIFJvZ2Vy
IEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzMzI1MiBicm9rZSB0aGUgV2luZG93cyBidWls
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRl
eCA5NjEyMjc3Li4xMWI5M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblBvbHlnb24uY3BwCkBAIC00Nyw2ICs0Nyw0NiBAQCBzdHJ1Y3QgRWRnZUludGVyc2VjdGlv
biB7CiAgICAgRWRnZUludGVyc2VjdGlvblR5cGUgdHlwZTsKIH07CiAKK3N0YXRpYyBpbmxpbmUg
ZmxvYXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIp
Cit7CisgICAgcmV0dXJuIGEud2lkdGgoKSAqIGIuaGVpZ2h0KCkgLSBhLmhlaWdodCgpICogYi53
aWR0aCgpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgYXJlQ29sbGluZWFyUG9pbnRzKGNvbnN0
IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYg
cDIpCit7CisgICAgcmV0dXJuICFkZXRlcm1pbmFudChwMSAtIHAwLCBwMiAtIHAwKTsKK30KKwor
c3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxvYXRQb2ludCYg
cDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKQoreworICAgIHJldHVybiBwMC54KCkgPT0gcDEueCgp
ICYmIHAwLnkoKSA9PSBwMS55KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbmV4dFZl
cnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4LCB1bnNpZ25lZCBuVmVydGljZXMsIGJvb2wg
Y2xvY2t3aXNlKQoreworICAgIHJldHVybiAoKGNsb2Nrd2lzZSkgPyB2ZXJ0ZXhJbmRleCArIDEg
OiB2ZXJ0ZXhJbmRleCAtIDEgKyBuVmVydGljZXMpICUgblZlcnRpY2VzOworfQorCit1bnNpZ25l
ZCBFeGNsdXNpb25Qb2x5Z29uOjpmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleCh1bnNpZ25lZCB2ZXJ0
ZXhJbmRleDEsIGJvb2wgY2xvY2t3aXNlKSBjb25zdAoreworICAgIHVuc2lnbmVkIG5WZXJ0aWNl
cyA9IG51bWJlck9mVmVydGljZXMoKTsKKyAgICB1bnNpZ25lZCB2ZXJ0ZXhJbmRleDIgPSBuZXh0
VmVydGV4SW5kZXgodmVydGV4SW5kZXgxLCBuVmVydGljZXMsIGNsb2Nrd2lzZSk7CisgICAgdW5z
aWduZWQgbGFzdFZlcnRleEluZGV4ID0gKGNsb2Nrd2lzZSkgPyAwIDogblZlcnRpY2VzIC0gMTsK
KworICAgIHdoaWxlICh2ZXJ0ZXhJbmRleDIgIT0gbGFzdFZlcnRleEluZGV4ICYmIGFyZUNvaW5j
aWRlbnRQb2ludHModmVydGV4QXQodmVydGV4SW5kZXgxKSwgdmVydGV4QXQodmVydGV4SW5kZXgy
KSkpCisgICAgICAgIHZlcnRleEluZGV4MiA9IG5leHRWZXJ0ZXhJbmRleCh2ZXJ0ZXhJbmRleDIs
IG5WZXJ0aWNlcywgY2xvY2t3aXNlKTsKKworICAgIHdoaWxlICh2ZXJ0ZXhJbmRleDIgIT0gbGFz
dFZlcnRleEluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIHZlcnRleEluZGV4MyA9IG5leHRWZXJ0
ZXhJbmRleCh2ZXJ0ZXhJbmRleDIsIG5WZXJ0aWNlcywgY2xvY2t3aXNlKTsKKyAgICAgICAgaWYg
KGFyZUNvbGxpbmVhclBvaW50cyh2ZXJ0ZXhBdCh2ZXJ0ZXhJbmRleDEpLCB2ZXJ0ZXhBdCh2ZXJ0
ZXhJbmRleDIpLCB2ZXJ0ZXhBdCh2ZXJ0ZXhJbmRleDMpKSkKKyAgICAgICAgICAgIHZlcnRleElu
ZGV4MiA9IHZlcnRleEluZGV4MzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIHZlcnRleEluZGV4MjsKK30KKwogRXhjbHVzaW9uUG9seWdvbjo6
RXhjbHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2Vz
LCBXaW5kUnVsZSBmaWxsUnVsZSkKICAgICA6IEV4Y2x1c2lvblNoYXBlKCkKICAgICAsIG1fdmVy
dGljZXModmVydGljZXMpCkBAIC01OSwxOCArOTksMzggQEAgRXhjbHVzaW9uUG9seWdvbjo6RXhj
bHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2VzLCBX
aW4KICAgICBpZiAoblZlcnRpY2VzKQogICAgICAgICBtX2JvdW5kaW5nQm94LnNldExvY2F0aW9u
KHZlcnRleEF0KDApKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuVmVydGljZXM7
IGkrKykgewotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXggPSB2ZXJ0ZXhBdChpKTsK
LSAgICAgICAgbV9ib3VuZGluZ0JveC5leHRlbmQodmVydGV4KTsKLSAgICAgICAgbV9lZGdlc1tp
XS5wb2x5Z29uID0gdGhpczsKLSAgICAgICAgbV9lZGdlc1tpXS52ZXJ0ZXhJbmRleDEgPSBpOwot
ICAgICAgICBtX2VkZ2VzW2ldLnZlcnRleEluZGV4MiA9IChpICsgMSkgJSBuVmVydGljZXM7Ci0g
ICAgICAgIG1fZWRnZXNbaV0uZWRnZUluZGV4ID0gaTsKKyAgICBpZiAoIW1fZW1wdHkpIHsKKyAg
ICAgICAgdW5zaWduZWQgZWRnZUluZGV4ID0gMDsKKyAgICAgICAgdW5zaWduZWQgdmVydGV4SW5k
ZXgxID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgbV9ib3VuZGluZ0JveC5leHRlbmQo
dmVydGV4QXQodmVydGV4SW5kZXgxKSk7CisgICAgICAgICAgICB1bnNpZ25lZCB2ZXJ0ZXhJbmRl
eDIgPSBmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleCh2ZXJ0ZXhJbmRleDEsIHRydWUpOworICAgICAg
ICAgICAgbV9lZGdlc1tlZGdlSW5kZXhdLnBvbHlnb24gPSB0aGlzOworICAgICAgICAgICAgbV9l
ZGdlc1tlZGdlSW5kZXhdLnZlcnRleEluZGV4MSA9IHZlcnRleEluZGV4MTsKKyAgICAgICAgICAg
IG1fZWRnZXNbZWRnZUluZGV4XS52ZXJ0ZXhJbmRleDIgPSB2ZXJ0ZXhJbmRleDI7CisgICAgICAg
ICAgICBtX2VkZ2VzW2VkZ2VJbmRleF0uZWRnZUluZGV4ID0gZWRnZUluZGV4OworICAgICAgICAg
ICAgZWRnZUluZGV4Kys7CisgICAgICAgICAgICB2ZXJ0ZXhJbmRleDEgPSB2ZXJ0ZXhJbmRleDI7
CisgICAgICAgIH0gd2hpbGUgKHZlcnRleEluZGV4MSk7CisKKyAgICAgICAgaWYgKGVkZ2VJbmRl
eCA+IDMpIHsKKyAgICAgICAgICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBmaXJzdEVk
Z2UgPSBtX2VkZ2VzWzBdOworICAgICAgICAgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2Um
IGxhc3RFZGdlID0gbV9lZGdlc1tlZGdlSW5kZXggLSAxXTsKKyAgICAgICAgICAgIGlmIChhcmVD
b2xsaW5lYXJQb2ludHMobGFzdEVkZ2UudmVydGV4MSgpLCBsYXN0RWRnZS52ZXJ0ZXgyKCksIGZp
cnN0RWRnZS52ZXJ0ZXgyKCkpKSB7CisgICAgICAgICAgICAgICAgbV9lZGdlc1swXS52ZXJ0ZXhJ
bmRleDEgPSBsYXN0RWRnZS52ZXJ0ZXhJbmRleDE7CisgICAgICAgICAgICAgICAgZWRnZUluZGV4
LS07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2VkZ2VzLnJlc2l6ZShl
ZGdlSW5kZXgpOworICAgICAgICBtX2VtcHR5ID0gbV9lZGdlcy5zaXplKCkgPCAzOwogICAgIH0K
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gJm1fZWRnZXNbaV07Ci0gICAgICAg
IG1fZWRnZVRyZWUuYWRkKEVkZ2VJbnRlcnZhbChlZGdlLT5taW5ZKCksIGVkZ2UtPm1heFkoKSwg
ZWRnZSkpOworICAgIGlmICghbV9lbXB0eSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9lZGdlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgRXhjbHVzaW9uUG9seWdv
bkVkZ2UqIGVkZ2UgPSAmbV9lZGdlc1tpXTsKKyAgICAgICAgICAgIG1fZWRnZVRyZWUuYWRkKEVk
Z2VJbnRlcnZhbChlZGdlLT5taW5ZKCksIGVkZ2UtPm1heFkoKSwgZWRnZSkpOworICAgICAgICB9
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUG9seWdvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24u
aAppbmRleCA4YzAzZDAwLi5jZTdhMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBWZWN0b3I8RXhjbHVzaW9uSW50
ZXJ2YWw+JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRWRnZUludGVyc2VjdGlvbnMoZmxvYXQg
bWluWSwgZmxvYXQgbWF4WSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OworICAg
IHVuc2lnbmVkIGZpbmROZXh0RWRnZVZlcnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4MSwg
Ym9vbCBjbG9ja3dpc2UpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBQT0RJbnRlcnZhbDxmbG9hdCwg
RXhjbHVzaW9uUG9seWdvbkVkZ2UqPiBFZGdlSW50ZXJ2YWw7CiAgICAgdHlwZWRlZiBQT0RJbnRl
cnZhbFRyZWU8ZmxvYXQsIEV4Y2x1c2lvblBvbHlnb25FZGdlKj4gRWRnZUludGVydmFsVHJlZTsK
</data>
<flag name="review"
          id="186219"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="186220"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172352</attachid>
            <date>2012-11-05 09:18:24 -0800</date>
            <delta_ts>2012-11-05 09:53:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>12277</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzU2M2MwLi45YTgxZmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDEgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBQb2x5Z29uIGVkZ2VzIHNob3VsZCBzcGFuIGNvbGluZWFyIHZlcnRpY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTM0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcmlmeSB0aGF0IGV4
Y2x1c2lvbiBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGxheW91dCBpcyB1bmFmZmVjdGVkIGJ5IGNv
aW5jaWRlbnQKKyAgICAgICAgb3IgY29sbGluZWFyIHZlcnRpY2VzLgorCisgICAgICAgICogZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNl
cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1jb2luY2lkZW50LXZlcnRpY2VzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWNvbGxpbmVh
ci12ZXJ0aWNlcy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTEtMDUgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVz
QGludGVsLmNvbT4KIAogICAgICAgICBbQ2Fpcm9dIE1ha2UgQ2Fpcm8gaG9ub3IgaW1hZ2Ugb3Jp
ZW50YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLWNvaW5jaWRlbnQtdmVydGljZXMtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWNvaW5j
aWRlbnQtdmVydGljZXMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYTZiNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNlcy1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgICAgICB0b3A6IDUwcHg7CisgICAgICAgIGxlZnQ6IDUwcHg7CisgICAgICAgIHdp
ZHRoOiAyNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsKKyAgICAgICAgZm9udDogNTBweC8x
IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgUmVxdWlyZXMgQWhlbSBmb250LiBWZXJpZmllcyB0aGF0
IHBvbHlnb25hbCBzaGFwZXMgd2l0aCBtdWx0aXBsZSBjb2luY2lkZW50IHZlcnRpY2VzIHByb2R1
Y2UgCisgICAgdGhlIHNhbWUgb3V0cHV0IGFzIHRoZXkgd291bGQgd2l0aCBvbmx5IHRoZSB1bmlx
dWUgdmVydGljZXMuICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvCisgICAgaW5kZW50aWNh
bCBzb2xpZCBncmVlbiBzcXVhcmVzLgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+WFhYWCBY
WFhYIFhYWFggWFhYWDwvZGl2PgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+WFhYWCBYWFhY
IFhYWFggWFhYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12
ZXJ0aWNlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjJhNjkxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2luY2lkZW50LXZlcnRp
Y2VzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0
PgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNlcyB7CisgICAg
ICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47
CisgICAgICAgIHdpZHRoOiAyNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsKKyAgICAgICAg
LXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24oNTBweCA1MHB4LCA1MHB4IDUwcHgsICAyNTBw
eCA1MHB4LCAyNTBweCA1MHB4LCAgMjUwcHggMjUwcHgsICA1MHB4IDI1MHB4LCAgNTBweCA1MHB4
LCA1MHB4IDUwcHgpOworICAgIH0KKyAgICAjc2hhcGUtaW5zaWRlIHsKKyAgICAgICAgZm9udDog
NTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAg
d2lkdGg6IDI1MHB4OworICAgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgICAtd2Via2l0LXNo
YXBlLWluc2lkZTogcG9seWdvbig1MHB4IDUwcHgsIDI1MHB4IDUwcHgsIDI1MHB4IDI1MHB4LCA1
MHB4IDI1MHB4KTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgUmVxdWly
ZXMgQWhlbSBmb250LiBWZXJpZmllcyB0aGF0IHBvbHlnb25hbCBzaGFwZXMgd2l0aCBtdWx0aXBs
ZSBjb2luY2lkZW50IHZlcnRpY2VzIHByb2R1Y2UgCisgICAgdGhlIHNhbWUgb3V0cHV0IGFzIHRo
ZXkgd291bGQgd2l0aCBvbmx5IHRoZSB1bmlxdWUgdmVydGljZXMuICBUaGlzIHRlc3Qgc2hvdWxk
IGRpc3BsYXkgdHdvCisgICAgaW5kZW50aWNhbCBzb2xpZCBncmVlbiBzcXVhcmVzLgorICAgIDxk
aXYgaWQ9InNoYXBlLWluc2lkZS1jb2luY2lkZW50LXZlcnRpY2VzIj5YWFhYIFhYWFggWFhYWCBY
WFhYPC9kaXY+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj5YWFhYIFhYWFggWFhYWCBYWFhY
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLWNvbGxpbmVhci12ZXJ0aWNlcy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjc2YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXIt
dmVydGljZXMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRy
dWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgdG9wOiA1MHB4OworICAgICAgICBsZWZ0OiA1MHB4
OworICAgICAgICB3aWR0aDogMjUwcHg7CisgICAgICAgIGhlaWdodDogMjUwcHg7CisgICAgICAg
IGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47Cisg
ICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFJlcXVpcmVzIEFoZW0gZm9udC4g
VmVyaWZpZXMgdGhhdCBwb2x5Z29uYWwgc2hhcGVzIHdpdGggbXVsdGlwbGUgY29pbmNpZGVudCB2
ZXJ0aWNlcyBwcm9kdWNlIAorICAgIHRoZSBzYW1lIG91dHB1dCBhcyB0aGV5IHdvdWxkIHdpdGgg
b25seSB0aGUgdW5pcXVlIHZlcnRpY2VzLiAgVGhpcyB0ZXN0IHNob3VsZCBkaXNwbGF5IHR3bwor
ICAgIGluZGVudGljYWwgc29saWQgZ3JlZW4gcmVjdGlsaW5lYXIgdHJpYW5nbGVzLgorICAgIDxk
aXYgaWQ9InNoYXBlLWluc2lkZSI+WFhYPGJyLz5YWDxici8+WDwvZGl2PgorICAgIDxkaXYgaWQ9
InNoYXBlLWluc2lkZSI+WFhYPGJyLz5YWDxici8+WDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtY29sbGluZWFyLXZlcnRpY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTJmMTFiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtY29sbGluZWFyLXZlcnRpY2VzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxl
ZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUtY29sbGluZWFy
LXZlcnRpY2VzIHsKKyAgICAgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAg
ICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDI1MHB4OworICAgICAgICBoZWlnaHQ6
IDI1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbigyMDBweCAxMDBw
eCwgMTUwcHggMTUwcHgsIDEwMHB4IDIwMHB4LCA1MHB4IDI1MHB4LCA1MHB4IDUwcHgsIDYwcHgg
NTBweCwgNjFweCA1MHB4LCAyNTBweCA1MHB4KTsKKyAgICB9CisgICAgI3NoYXBlLWluc2lkZSB7
CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjog
Z3JlZW47CisgICAgICAgIHdpZHRoOiAyNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsKKyAg
ICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24oNTBweCA1MHB4LCAgMjUwcHggNTBw
eCwgMjUwcHggNTBweCwgNTBweCAyNTBweCk7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIFJlcXVpcmVzIEFoZW0gZm9udC4gVmVyaWZpZXMgdGhhdCBwb2x5Z29uYWwgc2hh
cGVzIHdpdGggbXVsdGlwbGUgY29pbmNpZGVudCB2ZXJ0aWNlcyBwcm9kdWNlIAorICAgIHRoZSBz
YW1lIG91dHB1dCBhcyB0aGV5IHdvdWxkIHdpdGggb25seSB0aGUgdW5pcXVlIHZlcnRpY2VzLiAg
VGhpcyB0ZXN0IHNob3VsZCBkaXNwbGF5IHR3bworICAgIGluZGVudGljYWwgc29saWQgZ3JlZW4g
cmVjdGlsaW5lYXIgdHJpYW5nbGVzLgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZS1jb2xsaW5l
YXItdmVydGljZXMiPlhYWCBYWCBYPC9kaXY+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj5Y
WFggWFggWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUxZGMxMmUuLmZk
NmM5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMS0wMSAgSGFucyBNdWxs
ZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIFBvbHln
b24gZWRnZXMgc2hvdWxkIHNwYW4gY29saW5lYXIgdmVydGljZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjbHVzaW9uUG9seWdvbkVkZ2VzIG5vdyBz
cGFuIGNvaW5jaWRlbnQgYW5kIGNvbGxpbmVhciB2ZXJ0aWNlcy4gQ3VycmVudGx5CisgICAgICAg
IHBhaXJzIG9mIHZlcnRpY2VzIGFyZSBvbmx5IGNvbnNpZGVyZWQgY29pbmNpZGVudCBpZiB0aGVp
ciBjb29yZGluYXRlcyBhcmUgZXhhY3RseQorICAgICAgICBlcXVhbC4gU2ltaWxhcmx5LCBhIHZl
cnRleCBpcyBvbmx5IGNvbnNpZGVyZWQgY29sbGluZWFyIHdpdGggYW4gZWRnZSBpZiB0aGUgYXJl
YQorICAgICAgICBvZiB0aGUgdHJpYW5nbGUgZGVmaW5lZCBieSB0aGUgdGhyZWUgdmVydGljZXMg
aXMgZXhhY3RseSB6ZXJvLiAgSW4gdGhlIGZ1dHVyZSBpdAorICAgICAgICBtYXkgYmUgdXNlZnVs
IHRvIHJlbGF4IHRoZSBjb21wYXJpc29uIHdpdGggemVyby4KKworICAgICAgICBUZXN0czogZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtY29pbmNpZGVudC12ZXJ0aWNl
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1jb2xsaW5lYXItdmVydGljZXMuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0V4
Y2x1c2lvblBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5hbnQpOiBVc2Vk
IHRvIG1lYXN1cmUgY29sbGluZWFyaXR5LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjphcmVDb2xsaW5lYXJQb2ludHMpOiBUcnVlIGlmIHRocmVlIEZsb2F0UG9pbnQgYXJn
dW1lbnRzIGFyZSBjb2xsaW5lYXIgcGVyIHRoZSB0ZXN0IG91dGxpbmVkIGFib3ZlLgorICAgICAg
ICAoV2ViQ29yZTo6YXJlQ29pbmNpZGVudFBvaW50cyk6IFRydWUgaWYgdGhlIHR3byBGbG9hdFBv
aW50IGFyZ3VtZW50cyBhcmUgZXF1YWwuCisgICAgICAgIChXZWJDb3JlOjpuZXh0VmVydGV4SW5k
ZXgpOiBUaGUgbmV4dCB2ZXJ0ZXggaW5kZXggaW4gY2xvY2t3aXNlIG9yIGNvdW50ZXJjbG9ja3dp
c2Ugb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpmaW5kTmV4dEVk
Z2VWZXJ0ZXhJbmRleCk6IFJldHVybiB0aGUgaW5kZXggb2YgdGhlIG5leHQgbm9uLWNvaW5jaWRl
bnQsIG5vbi1jb2xsaW5lYXIgdmVydGV4LgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9s
eWdvbjo6RXhjbHVzaW9uUG9seWdvbik6IFNraXAgY29pbmNpZGVudCBhbmQgY29sbGluZWFyIHZl
cnRpY2VzIHdoZW4gYnVpbGRpbmcgdGhlIGxpc3Qgb2YgZWRnZXMuCisgICAgICAgICogcmVuZGVy
aW5nL0V4Y2x1c2lvblBvbHlnb24uaDogQWRkZWQgcHJpdmF0ZSBmaW5kTmV4dEVkZ2VWZXJ0ZXhJ
bmRleCgpIGRlY2xhcmF0aW9uLgorCiAyMDEyLTExLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBjb21tZW50IGFib3V0IGEgcmV0dXJuIHZh
bHVlIG9mIElEQktleTo6dG9WOCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUG9seWdvbi5jcHAKaW5kZXggOTYxMjI3Ny4uYTE3YTM5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNDcsNiArNDcsNDUgQEAgc3Ry
dWN0IEVkZ2VJbnRlcnNlY3Rpb24gewogICAgIEVkZ2VJbnRlcnNlY3Rpb25UeXBlIHR5cGU7CiB9
OwogCitzdGF0aWMgaW5saW5lIGZsb2F0IGRldGVybWluYW50KGNvbnN0IEZsb2F0U2l6ZSYgYSwg
Y29uc3QgRmxvYXRTaXplJiBiKQoreworICAgIHJldHVybiBhLndpZHRoKCkgKiBiLmhlaWdodCgp
IC0gYS5oZWlnaHQoKSAqIGIud2lkdGgoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGFyZUNv
bGxpbmVhclBvaW50cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEs
IGNvbnN0IEZsb2F0UG9pbnQmIHAyKQoreworICAgIHJldHVybiAhZGV0ZXJtaW5hbnQocDEgLSBw
MCwgcDIgLSBwMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVDb2luY2lkZW50UG9pbnRz
KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSkKK3sKKyAgICByZXR1
cm4gcDAueCgpID09IHAxLngoKSAmJiBwMC55KCkgPT0gcDEueSgpOworfQorCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIG5leHRWZXJ0ZXhJbmRleCh1bnNpZ25lZCB2ZXJ0ZXhJbmRleCwgdW5zaWdu
ZWQgblZlcnRpY2VzLCBib29sIGNsb2Nrd2lzZSkKK3sKKyAgICByZXR1cm4gKChjbG9ja3dpc2Up
ID8gdmVydGV4SW5kZXggKyAxIDogdmVydGV4SW5kZXggLSAxICsgblZlcnRpY2VzKSAlIG5WZXJ0
aWNlczsKK30KKwordW5zaWduZWQgRXhjbHVzaW9uUG9seWdvbjo6ZmluZE5leHRFZGdlVmVydGV4
SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgxLCBib29sIGNsb2Nrd2lzZSkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBuVmVydGljZXMgPSBudW1iZXJPZlZlcnRpY2VzKCk7CisgICAgdW5zaWduZWQg
dmVydGV4SW5kZXgyID0gbmV4dFZlcnRleEluZGV4KHZlcnRleEluZGV4MSwgblZlcnRpY2VzLCBj
bG9ja3dpc2UpOworICAgIHVuc2lnbmVkIGxhc3RWZXJ0ZXhJbmRleCA9IChjbG9ja3dpc2UpID8g
MCA6IG5WZXJ0aWNlcyAtIDE7CisKKyAgICB3aGlsZSAodmVydGV4SW5kZXgyICE9IGxhc3RWZXJ0
ZXhJbmRleCAmJiBhcmVDb2luY2lkZW50UG9pbnRzKHZlcnRleEF0KHZlcnRleEluZGV4MSksIHZl
cnRleEF0KHZlcnRleEluZGV4MikpKQorICAgICAgICB2ZXJ0ZXhJbmRleDIgPSBuZXh0VmVydGV4
SW5kZXgodmVydGV4SW5kZXgyLCBuVmVydGljZXMsIGNsb2Nrd2lzZSk7CisKKyAgICB3aGlsZSAo
dmVydGV4SW5kZXgyICE9IGxhc3RWZXJ0ZXhJbmRleCkgeworICAgICAgICB1bnNpZ25lZCB2ZXJ0
ZXhJbmRleDMgPSBuZXh0VmVydGV4SW5kZXgodmVydGV4SW5kZXgyLCBuVmVydGljZXMsIGNsb2Nr
d2lzZSk7CisgICAgICAgIGlmICghYXJlQ29sbGluZWFyUG9pbnRzKHZlcnRleEF0KHZlcnRleElu
ZGV4MSksIHZlcnRleEF0KHZlcnRleEluZGV4MiksIHZlcnRleEF0KHZlcnRleEluZGV4MykpKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHZlcnRleEluZGV4MiA9IHZlcnRleEluZGV4MzsK
KyAgICB9CisKKyAgICByZXR1cm4gdmVydGV4SW5kZXgyOworfQorCiBFeGNsdXNpb25Qb2x5Z29u
OjpFeGNsdXNpb25Qb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGlj
ZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQogICAgIDogRXhjbHVzaW9uU2hhcGUoKQogICAgICwgbV92
ZXJ0aWNlcyh2ZXJ0aWNlcykKQEAgLTU5LDE5ICs5OCw0MiBAQCBFeGNsdXNpb25Qb2x5Z29uOjpF
eGNsdXNpb25Qb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMs
IFdpbgogICAgIGlmIChuVmVydGljZXMpCiAgICAgICAgIG1fYm91bmRpbmdCb3guc2V0TG9jYXRp
b24odmVydGV4QXQoMCkpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5WZXJ0aWNl
czsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleCA9IHZlcnRleEF0KGkp
OwotICAgICAgICBtX2JvdW5kaW5nQm94LmV4dGVuZCh2ZXJ0ZXgpOwotICAgICAgICBtX2VkZ2Vz
W2ldLnBvbHlnb24gPSB0aGlzOwotICAgICAgICBtX2VkZ2VzW2ldLnZlcnRleEluZGV4MSA9IGk7
Ci0gICAgICAgIG1fZWRnZXNbaV0udmVydGV4SW5kZXgyID0gKGkgKyAxKSAlIG5WZXJ0aWNlczsK
LSAgICAgICAgbV9lZGdlc1tpXS5lZGdlSW5kZXggPSBpOworICAgIGlmIChtX2VtcHR5KQorICAg
ICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBlZGdlSW5kZXggPSAwOworICAgIHVuc2lnbmVk
IHZlcnRleEluZGV4MSA9IDA7CisgICAgZG8geworICAgICAgICBtX2JvdW5kaW5nQm94LmV4dGVu
ZCh2ZXJ0ZXhBdCh2ZXJ0ZXhJbmRleDEpKTsKKyAgICAgICAgdW5zaWduZWQgdmVydGV4SW5kZXgy
ID0gZmluZE5leHRFZGdlVmVydGV4SW5kZXgodmVydGV4SW5kZXgxLCB0cnVlKTsKKyAgICAgICAg
bV9lZGdlc1tlZGdlSW5kZXhdLnBvbHlnb24gPSB0aGlzOworICAgICAgICBtX2VkZ2VzW2VkZ2VJ
bmRleF0udmVydGV4SW5kZXgxID0gdmVydGV4SW5kZXgxOworICAgICAgICBtX2VkZ2VzW2VkZ2VJ
bmRleF0udmVydGV4SW5kZXgyID0gdmVydGV4SW5kZXgyOworICAgICAgICBtX2VkZ2VzW2VkZ2VJ
bmRleF0uZWRnZUluZGV4ID0gZWRnZUluZGV4OworICAgICAgICBlZGdlSW5kZXgrKzsKKyAgICAg
ICAgdmVydGV4SW5kZXgxID0gdmVydGV4SW5kZXgyOworICAgIH0gd2hpbGUgKHZlcnRleEluZGV4
MSk7CisKKyAgICBpZiAoZWRnZUluZGV4ID4gMykgeworICAgICAgICBjb25zdCBFeGNsdXNpb25Q
b2x5Z29uRWRnZSYgZmlyc3RFZGdlID0gbV9lZGdlc1swXTsKKyAgICAgICAgY29uc3QgRXhjbHVz
aW9uUG9seWdvbkVkZ2UmIGxhc3RFZGdlID0gbV9lZGdlc1tlZGdlSW5kZXggLSAxXTsKKyAgICAg
ICAgaWYgKGFyZUNvbGxpbmVhclBvaW50cyhsYXN0RWRnZS52ZXJ0ZXgxKCksIGxhc3RFZGdlLnZl
cnRleDIoKSwgZmlyc3RFZGdlLnZlcnRleDIoKSkpIHsKKyAgICAgICAgICAgIG1fZWRnZXNbMF0u
dmVydGV4SW5kZXgxID0gbGFzdEVkZ2UudmVydGV4SW5kZXgxOworICAgICAgICAgICAgZWRnZUlu
ZGV4LS07CisgICAgICAgIH0KICAgICB9CiAKKyAgICBtX2VkZ2VzLnJlc2l6ZShlZGdlSW5kZXgp
OworICAgIG1fZW1wdHkgPSBtX2VkZ2VzLnNpemUoKSA8IDM7CisKKyAgICBpZiAobV9lbXB0eSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZWRnZXMu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgRXhjbHVzaW9uUG9seWdvbkVkZ2UqIGVkZ2UgPSAmbV9l
ZGdlc1tpXTsKICAgICAgICAgbV9lZGdlVHJlZS5hZGQoRWRnZUludGVydmFsKGVkZ2UtPm1pblko
KSwgZWRnZS0+bWF4WSgpLCBlZGdlKSk7CiAgICAgfQorCiB9CiAKIHN0YXRpYyBib29sIGNvbXB1
dGVYSW50ZXJzZWN0aW9uKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlUG9pbnRlciwg
ZmxvYXQgeSwgRWRnZUludGVyc2VjdGlvbiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKaW5kZXggOGMwM2QwMC4uY2U3YTIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCkBAIC03MCw2ICs3MCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQg
eSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUVk
Z2VJbnRlcnNlY3Rpb25zKGZsb2F0IG1pblksIGZsb2F0IG1heFksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mKSBjb25zdDsKKyAgICB1bnNpZ25lZCBmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleCh1
bnNpZ25lZCB2ZXJ0ZXhJbmRleDEsIGJvb2wgY2xvY2t3aXNlKSBjb25zdDsKIAogICAgIHR5cGVk
ZWYgUE9ESW50ZXJ2YWw8ZmxvYXQsIEV4Y2x1c2lvblBvbHlnb25FZGdlKj4gRWRnZUludGVydmFs
OwogICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGZsb2F0LCBFeGNsdXNpb25Qb2x5Z29uRWRn
ZSo+IEVkZ2VJbnRlcnZhbFRyZWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>