<?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>134434</bug_id>
          
          <creation_ts>2014-06-29 00:40:24 -0700</creation_ts>
          <short_desc>[WK2] Add a flatter find-in-page current match indicator style</short_desc>
          <delta_ts>2014-06-30 17:50:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019242</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-29 00:40:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/16225673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019243</commentid>
    <comment_count>1</comment_count>
      <attachid>234058</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-29 01:11:33 -0700</bug_when>
    <thetext>Created attachment 234058
patch

I have a few details to double check but I think this is mostly reviewable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019250</commentid>
    <comment_count>2</comment_count>
      <attachid>234058</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-29 09:26:32 -0700</bug_when>
    <thetext>Comment on attachment 234058
patch

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

I could&apos;t figure out why the Windows EWS build failed. I couldn’t find an error message.

&gt; Source/WebKit2/UIProcess/FindIndicator.cpp:90
&gt; +float flatStyleOutset = 2;
&gt; +float flatShadowOffsetX = 0;
&gt; +float flatShadowOffsetY = 5;
&gt; +float flatShadowBlurRadius = 25.0;
&gt; +float flatRimShadowBlurRadius = 2.0;

These should all be marked const. Not sure why some of these have .0 and others don’t.

&gt; Source/WebKit2/UIProcess/FindIndicator.cpp:216
&gt; +static Color flatHighlightColor()
&gt; +{
&gt; +    // FIXME: This may not be the right color.
&gt; +    return Color(243, 221, 50, 255);
&gt; +}
&gt; +
&gt; +static Color flatRimShadowColor()
&gt; +{
&gt; +    return Color(0, 0, 0, 38);
&gt; +}
&gt; +
&gt; +static Color flatDropShadowColor()
&gt; +{
&gt; +    return Color(0, 0, 0, 51);
&gt; +}

Seems like you should mark these inline.

&gt; Source/WebKit2/UIProcess/FindIndicator.cpp:255
&gt; +    for (FloatRect textRect : m_textRectsInSelectionRectCoordinates) {

Should be FloatRect&amp; or const FloatRect&amp; to avoid an unnecessary copy. Personally I would use auto&amp;.

&gt; Source/WebKit2/UIProcess/FindIndicator.cpp:273
&gt; +            IntRect contentImageRect = enclosingIntRect(textRect);

Why is it enclosingIntRect that we want here? I still don’t know the rules about when we do various types of “pixel snapping” and rounding and floor/ceiling. Of course, enclosing is a kind of floor/ceiling.

&gt; Source/WebKit2/WebProcess/WebPage/FindController.cpp:485
&gt; +        for (IntRect rect : rects) {

IntRect&amp;, const IntRect&amp; or auto&amp; would be slightly more efficient.

&gt; Source/WebKit2/WebProcess/WebPage/FindController.cpp:496
&gt; +    for (IntRect rect : rects) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019346</commentid>
    <comment_count>3</comment_count>
      <attachid>234058</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-06-30 10:52:05 -0700</bug_when>
    <thetext>Comment on attachment 234058
patch

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

&gt; Source/WebKit2/UIProcess/FindIndicator.cpp:121
&gt; +#if ENABLE(LEGACY_FIND_INDICATOR_STYLE)
&gt;          indicatorRect.move(-leftBorderThickness, -topBorderThickness);
&gt;          indicatorRect.expand(leftBorderThickness + rightBorderThickness, topBorderThickness + bottomBorderThickness);
&gt; +#else
&gt; +        indicatorRect.inflate(flatStyleOutset);
&gt; +#endif

I think you should wrap this in a helper function since it happens twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019460</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-30 16:19:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 234058 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234058&amp;action=review
&gt; 
&gt; I could&apos;t figure out why the Windows EWS build failed. I couldn’t find an error message.

:(

&gt; &gt; Source/WebKit2/UIProcess/FindIndicator.cpp:273
&gt; &gt; +            IntRect contentImageRect = enclosingIntRect(textRect);
&gt; 
&gt; Why is it enclosingIntRect that we want here? I still don’t know the rules about when we do various types of “pixel snapping” and rounding and floor/ceiling. Of course, enclosing is a kind of floor/ceiling.

In this case, it&apos;s just matching the enclosingIntRect() with which the content image was painted in the Web process, so that everything lines up. And, that one uses enclosingIntRect() presumably so that the backing store can contain the entire selection; other rounding modes could end up clipping a tiny part of the text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019511</commentid>
    <comment_count>5</comment_count>
      <attachid>234129</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-30 17:45:21 -0700</bug_when>
    <thetext>Created attachment 234129
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019514</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-30 17:50:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170624</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234058</attachid>
            <date>2014-06-29 01:11:33 -0700</date>
            <delta_ts>2014-06-30 17:45:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>find.diff</filename>
            <type>text/plain</type>
            <size>8829</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhOGJkZThiLi43YWFlNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTQtMDYtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIGEgZmxhdHRlciBmaW5kLWluLXBhZ2UgY3VycmVudCBtYXRjaCBp
bmRpY2F0b3Igc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDQzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYyMjU2NzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRmlu
ZEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbmRJbmRpY2F0b3JzRm9yVGV4dFJl
Y3RzT3ZlcmxhcCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6OmZyYW1lUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OmZsYXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OmZsYXRSaW1TaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OmZsYXREcm9wU2hhZG93Q29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5kaWNhdG9yOjpkcmF3KToKKyAgICAgICAgQWRk
IGEgZmxhdHRlciBmaW5kIGluZGljYXRvciwgd2l0aCBhIGJpZ2dlciBzaGFkb3cuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKToKKyAgICAg
ICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0b3JCaXRtYXBBbmRSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmhpZGVGaW5kSW5kaWNhdG9yKToK
KyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgUmVw
YWludCB0aGUgb3ZlcmxheSB3aGVuIHdlIGluc3RhbGwvdW5pbnN0YWxsIHRoZSBjdXJyZW50LW1h
dGNoIGluZGljYXRvciwgb3Igd2hlbiB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgbWF0Y2guCisgICAg
ICAgIEF2b2lkIHBhaW50aW5nIGEgaG9sZSB1bmRlcm5lYXRoIHRoZSBjdXJyZW50IG1hdGNoOyB0
aGUgaG9sZSdzIHNoYWRvdyBjb25mbGljdHMgd2l0aCB0aGUgaW5kaWNhdG9yJ3Mgc2hhZG93Lgor
CiAyMDE0LTA2LTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdW1dLMl0gUERGcyBuZXZlciBsb2FkIGlubGluZSBhZ2FpbiBhZnRlciB0aGUg
V2ViIHByb2Nlc3MgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0ZpbmRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0
b3IuY3BwCmluZGV4IDk1MDM3M2UuLjc3NTg0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRmluZEluZGljYXRvci5jcHAKQEAgLTMzLDggKzMzLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXRoLmg+CiAKKyNpZiBQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEwMDAKKyNkZWZpbmUg
RU5BQkxFX0xFR0FDWV9GSU5EX0lORElDQVRPUl9TVFlMRSAxCisjZWxzZQorI2RlZmluZSBFTkFC
TEVfTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFIDAKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAorI2lmIEVOQUJMRShMRUdBQ1lfRklORF9JTkRJQ0FUT1JfU1RZTEUpCiBz
dGF0aWMgY29uc3QgZmxvYXQgY29ybmVyUmFkaXVzID0gMy4wOwogCiBzdGF0aWMgY29uc3QgZmxv
YXQgc2hhZG93T2Zmc2V0WCA9IDAuMDsKQEAgLTc1LDYgKzgyLDEzIEBAIHN0YXRpYyBjb25zdCBp
bnQgZ3JhZGllbnRMaWdodFJlZCA9IDI0MjsKIHN0YXRpYyBjb25zdCBpbnQgZ3JhZGllbnRMaWdo
dEdyZWVuID0gMjM5Owogc3RhdGljIGNvbnN0IGludCBncmFkaWVudExpZ2h0Qmx1ZSA9IDA7CiBz
dGF0aWMgY29uc3QgaW50IGdyYWRpZW50TGlnaHRBbHBoYSA9IDI1NTsKKyNlbHNlCitmbG9hdCBm
bGF0U3R5bGVPdXRzZXQgPSAyOworZmxvYXQgZmxhdFNoYWRvd09mZnNldFggPSAwOworZmxvYXQg
ZmxhdFNoYWRvd09mZnNldFkgPSA1OworZmxvYXQgZmxhdFNoYWRvd0JsdXJSYWRpdXMgPSAyNS4w
OworZmxvYXQgZmxhdFJpbVNoYWRvd0JsdXJSYWRpdXMgPSAyLjA7CisjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTk5LDggKzExMywxMiBAQCBzdGF0aWMgYm9vbCBmaW5kSW5kaWNh
dG9yc0ZvclRleHRSZWN0c092ZXJsYXAoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0
cwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIEZs
b2F0UmVjdCBpbmRpY2F0b3JSZWN0ID0gdGV4dFJlY3RzW2ldOworI2lmIEVOQUJMRShMRUdBQ1lf
RklORF9JTkRJQ0FUT1JfU1RZTEUpCiAgICAgICAgIGluZGljYXRvclJlY3QubW92ZSgtbGVmdEJv
cmRlclRoaWNrbmVzcywgLXRvcEJvcmRlclRoaWNrbmVzcyk7CiAgICAgICAgIGluZGljYXRvclJl
Y3QuZXhwYW5kKGxlZnRCb3JkZXJUaGlja25lc3MgKyByaWdodEJvcmRlclRoaWNrbmVzcywgdG9w
Qm9yZGVyVGhpY2tuZXNzICsgYm90dG9tQm9yZGVyVGhpY2tuZXNzKTsKKyNlbHNlCisgICAgICAg
IGluZGljYXRvclJlY3QuaW5mbGF0ZShmbGF0U3R5bGVPdXRzZXQpOworI2VuZGlmCiAKICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IGluZGljYXRvclJlY3RzLnNpemUoKTsgajsgKSB7CiAgICAgICAg
ICAgICAtLWo7CkBAIC0xNDEsMTEgKzE1OSwxOCBAQCBzdGF0aWMgRmxvYXRSZWN0IGluZmxhdGVS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgaW5mbGF0ZVgsIGZsb2F0IGluZmxhdAog
CiBGbG9hdFJlY3QgRmluZEluZGljYXRvcjo6ZnJhbWVSZWN0KCkgY29uc3QKIHsKKyNpZiBFTkFC
TEUoTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFKQogICAgIHJldHVybiBGbG9hdFJlY3QobV9z
ZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcy54KCkgLSBsZWZ0Qm9yZGVyVGhpY2tuZXNz
LCBtX3NlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLnkoKSAtIHRvcEJvcmRlclRoaWNr
bmVzcywKICAgICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRp
bmF0ZXMud2lkdGgoKSArIHJpZ2h0Qm9yZGVyVGhpY2tuZXNzICsgbGVmdEJvcmRlclRoaWNrbmVz
cywKICAgICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0
ZXMuaGVpZ2h0KCkgKyB0b3BCb3JkZXJUaGlja25lc3MgKyBib3R0b21Cb3JkZXJUaGlja25lc3Mp
OworI2Vsc2UKKyAgICBGbG9hdFJlY3QgZnJhbWUgPSBtX3NlbGVjdGlvblJlY3RJbldpbmRvd0Nv
b3JkaW5hdGVzOworICAgIGZyYW1lLmluZmxhdGUoZmxhdFNoYWRvd0JsdXJSYWRpdXMpOworICAg
IHJldHVybiBmcmFtZTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKExFR0FDWV9GSU5EX0lORElD
QVRPUl9TVFlMRSkKIHN0YXRpYyBDb2xvciBsaWdodEJvcmRlckNvbG9yKCkKIHsKICAgICByZXR1
cm4gQ29sb3IobGlnaHRCb3JkZXJSZWQsIGxpZ2h0Qm9yZGVyR3JlZW4sIGxpZ2h0Qm9yZGVyQmx1
ZSwgbGlnaHRCb3JkZXJBbHBoYSk7CkBAIC0xNzMsOSArMTk4LDI3IEBAIHN0YXRpYyBQYXRoIHBh
dGhXaXRoUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBwYXRoUmVjdCwgZmxvYXQgcmFkaXVz
KQogCiAgICAgcmV0dXJuIHBhdGg7CiB9CisjZWxzZQorc3RhdGljIENvbG9yIGZsYXRIaWdobGln
aHRDb2xvcigpCit7CisgICAgLy8gRklYTUU6IFRoaXMgbWF5IG5vdCBiZSB0aGUgcmlnaHQgY29s
b3IuCisgICAgcmV0dXJuIENvbG9yKDI0MywgMjIxLCA1MCwgMjU1KTsKK30KKworc3RhdGljIENv
bG9yIGZsYXRSaW1TaGFkb3dDb2xvcigpCit7CisgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDM4
KTsKK30KKworc3RhdGljIENvbG9yIGZsYXREcm9wU2hhZG93Q29sb3IoKQoreworICAgIHJldHVy
biBDb2xvcigwLCAwLCAwLCA1MSk7Cit9CisjZW5kaWYKICAgICAKIHZvaWQgRmluZEluZGljYXRv
cjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYg
LypkaXJ0eVJlY3QqLykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxF
KQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RD
b29yZGluYXRlcy5zaXplKCk7ICsraSkgewogICAgICAgICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBt
X3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzW2ldOwogICAgICAgICB0ZXh0UmVj
dC5tb3ZlKGxlZnRCb3JkZXJUaGlja25lc3MsIHRvcEJvcmRlclRoaWNrbmVzcyk7CkBAIC0yMDgs
NiArMjUxLDMwIEBAIHZvaWQgRmluZEluZGljYXRvcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0CiAgICAgICAgICAgICBtX2NvbnRl
bnRJbWFnZS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBtX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9y
LCBjb250ZW50SW1hZ2VSZWN0LmxvY2F0aW9uKCksIGNvbnRlbnRJbWFnZVJlY3QpOwogICAgICAg
ICB9CiAgICAgfQorI2Vsc2UKKyAgICBmb3IgKEZsb2F0UmVjdCB0ZXh0UmVjdCA6IG1fdGV4dFJl
Y3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAgRmxvYXRSZWN0IGJsdXJS
ZWN0ID0gdGV4dFJlY3Q7CisgICAgICAgIGJsdXJSZWN0Lm1vdmUoZmxhdFNoYWRvd0JsdXJSYWRp
dXMsIGZsYXRTaGFkb3dCbHVyUmFkaXVzKTsKKyAgICAgICAgRmxvYXRSZWN0IG91dGVyUGF0aFJl
Y3QgPSBpbmZsYXRlUmVjdChibHVyUmVjdCwgZmxhdFN0eWxlT3V0c2V0LCBmbGF0U3R5bGVPdXRz
ZXQpOworCisgICAgICAgIHsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFNoYWRvdyhGbG9hdFNpemUoKSwgZmxhdFJpbVNoYWRvd0JsdXJSYWRpdXMsIGZsYXRSaW1T
aGFkb3dDb2xvcigpLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGZsYXRIaWdobGlnaHRDb2xvcigpLCBDb2xvclNwYWNlU1JHQik7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3Qob3V0ZXJQYXRoUmVjdCk7CisgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShmbGF0U2hhZG93T2Zm
c2V0WCwgZmxhdFNoYWRvd09mZnNldFkpLCBmbGF0U2hhZG93Qmx1clJhZGl1cywgZmxhdERyb3BT
aGFkb3dDb2xvcigpLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuZmlsbFJlY3Qob3V0ZXJQYXRoUmVjdCk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250
ZXh0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoRmxvYXRTaXplKGZs
YXRTaGFkb3dCbHVyUmFkaXVzLCBmbGF0U2hhZG93Qmx1clJhZGl1cykpOworCisgICAgICAgICAg
ICBJbnRSZWN0IGNvbnRlbnRJbWFnZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRSZWN0KTsK
KyAgICAgICAgICAgIG1fY29udGVudEltYWdlLT5wYWludChncmFwaGljc0NvbnRleHQsIG1fY29u
dGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFnZVJlY3QubG9jYXRpb24oKSwgY29udGVu
dEltYWdlUmVjdCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcAppbmRleCA4NWUwNWViLi41MTVhNTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTE2
OCw2ICsxNjgsOSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VT
Y3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgICAgIG1f
Zm91bmRTdHJpbmdNYXRjaEluZGV4IC09IG1hdGNoQ291bnQ7CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAobV9maW5kUGFnZU92ZXJsYXkpCisgICAgICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheS0+
c2V0TmVlZHNEaXNwbGF5KCk7CisKICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmRTdHJpbmcoc3RyaW5nLCBtYXRjaENvdW50LCBtX2ZvdW5kU3Ry
aW5nTWF0Y2hJbmRleCkpOwogCiAgICAgICAgIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKSB8fCAhc2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRv
cigqc2VsZWN0ZWRGcmFtZSwgc2hvdWxkU2hvd092ZXJsYXkpKQpAQCAtMjY2LDYgKzI2OSw4IEBA
IGJvb2wgRmluZENvbnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0b3JCaXRtYXBBbmRSZWN0KEZyYW1l
JiBmcmFtZSwgU2hhcmVhYmxlQml0bWFwCiAgICAgaWYgKCFmaW5kSW5kaWNhdG9yVGV4dEJhY2tp
bmdTdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBjb25zaWRlciB1c2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcgZm9yIHRoZSBzbmFwc2hvdAor
ICAgIC8vIGlmIHdlJ3JlIGNvbXBvc2l0aW5nIHRoaXMgaW1hZ2Ugb250byBhIHNvbGlkIGNvbG9y
ICh0aGUgbW9kZXJuIGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KICAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IGZpbmRJbmRpY2F0b3JUZXh0QmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2FsZUZh
Y3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIApAQCAtMzc0LDYgKzM3OSwxMCBAQCB2b2lkIEZp
bmRDb250cm9sbGVyOjpoaWRlRmluZEluZGljYXRvcigpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEZpbmRJbmRpY2F0b3IoRmxvYXRSZWN0KCksIFZlY3Rv
cjxGbG9hdFJlY3Q+KCksIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSwgaGFuZGxlLCBmYWxzZSwgdHJ1ZSkpOwogICAgIG1faXNTaG93aW5nRmluZEluZGljYXRvciA9
IGZhbHNlOwogICAgIG1fZm91bmRTdHJpbmdNYXRjaEluZGV4ID0gLTE7CisKKyAgICBpZiAobV9m
aW5kUGFnZU92ZXJsYXkpCisgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5LT5zZXROZWVkc0Rpc3Bs
YXkoKTsKKwogICAgIGRpZEhpZGVGaW5kSW5kaWNhdG9yKCk7CiB9CiAKQEAgLTQ3MywxNiArNDgy
LDIzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlU1JHQik7CiAKICAgICAgICAgLy8g
RHJhdyB3aGl0ZSBmcmFtZXMgYXJvdW5kIHRoZSBob2xlcy4KLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgSW50UmVjdCB3aGl0
ZUZyYW1lUmVjdCA9IHJlY3RzW2ldOworICAgICAgICBmb3IgKEludFJlY3QgcmVjdCA6IHJlY3Rz
KSB7CisgICAgICAgICAgICBpZiAocmVjdCA9PSBtX2ZpbmRJbmRpY2F0b3JSZWN0ICYmIG1faXNT
aG93aW5nRmluZEluZGljYXRvcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgSW50UmVjdCB3aGl0ZUZyYW1lUmVjdCA9IHJlY3Q7CiAgICAgICAgICAgICB3aGl0ZUZy
YW1lUmVjdC5pbmZsYXRlKDEpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0
KHdoaXRlRnJhbWVSZWN0KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIENsZWFyIG91dCB0
aGUgaG9sZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0c1tpXSk7CisgICAgZm9yIChJ
bnRSZWN0IHJlY3QgOiByZWN0cykgeworICAgICAgICBpZiAocmVjdCA9PSBtX2ZpbmRJbmRpY2F0
b3JSZWN0ICYmIG1faXNTaG93aW5nRmluZEluZGljYXRvcikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclJlY3QocmVjdCk7CisgICAgfQogCiAg
ICAgaWYgKCFtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsK
</data>
<flag name="review"
          id="258586"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234129</attachid>
            <date>2014-06-30 17:45:21 -0700</date>
            <delta_ts>2014-06-30 17:47:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shadow.diff</filename>
            <type>text/plain</type>
            <size>10858</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjU2Mjk3Li4xMmE2ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTQtMDYtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWRkIGEgZmxhdHRlciBmaW5kLWluLXBhZ2UgY3VycmVudCBtYXRjaCBp
bmRpY2F0b3Igc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDQzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYyMjU2NzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRmlu
ZEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbmRJbmRpY2F0b3JzRm9yVGV4dFJl
Y3RzT3ZlcmxhcCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6OmZyYW1lUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OmZsYXRIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OmZsYXRSaW1TaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OmZsYXREcm9wU2hhZG93Q29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5kaWNhdG9yOjpkcmF3KToKKyAgICAgICAgQWRk
IGEgZmxhdHRlciBmaW5kIGluZGljYXRvciwgd2l0aCBhIGJpZ2dlciBzaGFkb3cuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKToKKyAgICAg
ICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0b3JCaXRtYXBBbmRSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmhpZGVGaW5kSW5kaWNhdG9yKToK
KyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgRG9u
J3QgcGFpbnQgYSBzaGFkb3cgYmVoaW5kIHRoZSBzZWNvbmRhcnkgbWF0Y2hlcyBpZiB3ZSdyZSB1
c2luZyB0aGUgbmV3IHN0eWxlLgorCiAyMDE0LTA2LTI5ICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2
LndzPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBIVE1MSW1hZ2VFbGVtZW50J3Mgc2l6ZXMg
YXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGlj
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAKaW5k
ZXggOTUwMzczZS4uYzg0NTQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0ZpbmRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5k
aWNhdG9yLmNwcApAQCAtMzMsOCArMzMsMTUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhdGguaD4KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAwMAorI2RlZmluZSBFTkFCTEVfTEVH
QUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9MRUdBQ1lf
RklORF9JTkRJQ0FUT1JfU1RZTEUgMAorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCisjaWYgRU5BQkxFKExFR0FDWV9GSU5EX0lORElDQVRPUl9TVFlMRSkKIHN0YXRpYyBjb25z
dCBmbG9hdCBjb3JuZXJSYWRpdXMgPSAzLjA7CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBzaGFkb3dP
ZmZzZXRYID0gMC4wOwpAQCAtNzUsNiArODIsMTQgQEAgc3RhdGljIGNvbnN0IGludCBncmFkaWVu
dExpZ2h0UmVkID0gMjQyOwogc3RhdGljIGNvbnN0IGludCBncmFkaWVudExpZ2h0R3JlZW4gPSAy
Mzk7CiBzdGF0aWMgY29uc3QgaW50IGdyYWRpZW50TGlnaHRCbHVlID0gMDsKIHN0YXRpYyBjb25z
dCBpbnQgZ3JhZGllbnRMaWdodEFscGhhID0gMjU1OworI2Vsc2UKK2NvbnN0IGZsb2F0IGZsYXRT
dHlsZUhvcml6b250YWxCb3JkZXIgPSAyOworY29uc3QgZmxvYXQgZmxhdFN0eWxlVmVydGljYWxC
b3JkZXIgPSAxOworY29uc3QgZmxvYXQgZmxhdFNoYWRvd09mZnNldFggPSAwOworY29uc3QgZmxv
YXQgZmxhdFNoYWRvd09mZnNldFkgPSA1OworY29uc3QgZmxvYXQgZmxhdFNoYWRvd0JsdXJSYWRp
dXMgPSAyNTsKK2NvbnN0IGZsb2F0IGZsYXRSaW1TaGFkb3dCbHVyUmFkaXVzID0gMjsKKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtODgsNiArMTAzLDI2IEBAIFBhc3NSZWZQdHI8
RmluZEluZGljYXRvcj4gRmluZEluZGljYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgc2Vs
ZWN0aW9uUmVjdEluCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaW5kSW5kaWNhdG9yKHNlbGVj
dGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29y
ZGluYXRlcywgY29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFnZS5yZWxlYXNlKCkp
KTsKIH0KIAorc3RhdGljIEZsb2F0UmVjdCBpbmZsYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGluZmxhdGVYLCBmbG9hdCBpbmZsYXRlWSkKK3sKKyAgICBGbG9hdFJlY3QgaW5m
bGF0ZWRSZWN0ID0gcmVjdDsKKyAgICBpbmZsYXRlZFJlY3QuaW5mbGF0ZVgoaW5mbGF0ZVgpOwor
ICAgIGluZmxhdGVkUmVjdC5pbmZsYXRlWShpbmZsYXRlWSk7CisgICAgcmV0dXJuIGluZmxhdGVk
UmVjdDsKK30KKworc3RhdGljIEZsb2F0UmVjdCBvdXRzZXRJbmRpY2F0b3JSZWN0SW5jbHVkaW5n
U2hhZG93KGNvbnN0IEZsb2F0UmVjdCByZWN0KQoreworI2lmIEVOQUJMRShMRUdBQ1lfRklORF9J
TkRJQ0FUT1JfU1RZTEUpCisgICAgRmxvYXRSZWN0IG91dHNldFJlY3QgPSByZWN0OworICAgIG91
dHNldFJlY3QubW92ZSgtbGVmdEJvcmRlclRoaWNrbmVzcywgLXRvcEJvcmRlclRoaWNrbmVzcyk7
CisgICAgb3V0c2V0UmVjdC5leHBhbmQobGVmdEJvcmRlclRoaWNrbmVzcyArIHJpZ2h0Qm9yZGVy
VGhpY2tuZXNzLCB0b3BCb3JkZXJUaGlja25lc3MgKyBib3R0b21Cb3JkZXJUaGlja25lc3MpOwor
ICAgIHJldHVybiBvdXRzZXRSZWN0OworI2Vsc2UKKyAgICByZXR1cm4gaW5mbGF0ZVJlY3QocmVj
dCwgZmxhdFNoYWRvd0JsdXJSYWRpdXMgKyBmbGF0U3R5bGVIb3Jpem9udGFsQm9yZGVyLCBmbGF0
U2hhZG93Qmx1clJhZGl1cyArIGZsYXRTdHlsZVZlcnRpY2FsQm9yZGVyKTsKKyNlbmRpZgorfQor
CiBzdGF0aWMgYm9vbCBmaW5kSW5kaWNhdG9yc0ZvclRleHRSZWN0c092ZXJsYXAoY29uc3QgVmVj
dG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0cykKIHsKICAgICBzaXplX3QgY291bnQgPSB0ZXh0UmVj
dHMuc2l6ZSgpOwpAQCAtOTgsOSArMTMzLDcgQEAgc3RhdGljIGJvb2wgZmluZEluZGljYXRvcnNG
b3JUZXh0UmVjdHNPdmVybGFwKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiB0ZXh0UmVjdHMKICAg
ICBpbmRpY2F0b3JSZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBGbG9hdFJlY3QgaW5k
aWNhdG9yUmVjdCA9IHRleHRSZWN0c1tpXTsKLSAgICAgICAgaW5kaWNhdG9yUmVjdC5tb3ZlKC1s
ZWZ0Qm9yZGVyVGhpY2tuZXNzLCAtdG9wQm9yZGVyVGhpY2tuZXNzKTsKLSAgICAgICAgaW5kaWNh
dG9yUmVjdC5leHBhbmQobGVmdEJvcmRlclRoaWNrbmVzcyArIHJpZ2h0Qm9yZGVyVGhpY2tuZXNz
LCB0b3BCb3JkZXJUaGlja25lc3MgKyBib3R0b21Cb3JkZXJUaGlja25lc3MpOworICAgICAgICBG
bG9hdFJlY3QgaW5kaWNhdG9yUmVjdCA9IG91dHNldEluZGljYXRvclJlY3RJbmNsdWRpbmdTaGFk
b3codGV4dFJlY3RzW2ldKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBqID0gaW5kaWNhdG9yUmVj
dHMuc2l6ZSgpOyBqOyApIHsKICAgICAgICAgICAgIC0tajsKQEAgLTEzMCwzOCArMTYzLDI4IEBA
IEZpbmRJbmRpY2F0b3I6On5GaW5kSW5kaWNhdG9yKCkKIHsKIH0KIAotc3RhdGljIEZsb2F0UmVj
dCBpbmZsYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGluZmxhdGVYLCBmbG9h
dCBpbmZsYXRlWSkKLXsKLSAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcmVjdDsKLSAgICBp
bmZsYXRlZFJlY3QuaW5mbGF0ZVgoaW5mbGF0ZVgpOwotICAgIGluZmxhdGVkUmVjdC5pbmZsYXRl
WShpbmZsYXRlWSk7Ci0gICAgCi0gICAgcmV0dXJuIGluZmxhdGVkUmVjdDsKLX0KLQogRmxvYXRS
ZWN0IEZpbmRJbmRpY2F0b3I6OmZyYW1lUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZsb2F0
UmVjdChtX3NlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLngoKSAtIGxlZnRCb3JkZXJU
aGlja25lc3MsIG1fc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMueSgpIC0gdG9wQm9y
ZGVyVGhpY2tuZXNzLAotICAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0SW5XaW5k
b3dDb29yZGluYXRlcy53aWR0aCgpICsgcmlnaHRCb3JkZXJUaGlja25lc3MgKyBsZWZ0Qm9yZGVy
VGhpY2tuZXNzLAotICAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dD
b29yZGluYXRlcy5oZWlnaHQoKSArIHRvcEJvcmRlclRoaWNrbmVzcyArIGJvdHRvbUJvcmRlclRo
aWNrbmVzcyk7CisgICAgcmV0dXJuIG91dHNldEluZGljYXRvclJlY3RJbmNsdWRpbmdTaGFkb3co
bV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcyk7CiB9CiAKLXN0YXRpYyBDb2xvciBs
aWdodEJvcmRlckNvbG9yKCkKKyNpZiBFTkFCTEUoTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxF
KQorc3RhdGljIGlubGluZSBDb2xvciBsaWdodEJvcmRlckNvbG9yKCkKIHsKICAgICByZXR1cm4g
Q29sb3IobGlnaHRCb3JkZXJSZWQsIGxpZ2h0Qm9yZGVyR3JlZW4sIGxpZ2h0Qm9yZGVyQmx1ZSwg
bGlnaHRCb3JkZXJBbHBoYSk7CiB9CiAKLXN0YXRpYyBDb2xvciBzaGFkb3dDb2xvcigpCitzdGF0
aWMgaW5saW5lIENvbG9yIHNoYWRvd0NvbG9yKCkKIHsKICAgICByZXR1cm4gQ29sb3Ioc2hhZG93
UmVkLCBzaGFkb3dHcmVlbiwgc2hhZG93Qmx1ZSwgc2hhZG93QWxwaGEpOwogfQogCi1zdGF0aWMg
Q29sb3IgZ3JhZGllbnRMaWdodENvbG9yKCkKK3N0YXRpYyBpbmxpbmUgQ29sb3IgZ3JhZGllbnRM
aWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gQ29sb3IoZ3JhZGllbnRMaWdodFJlZCwgZ3JhZGll
bnRMaWdodEdyZWVuLCBncmFkaWVudExpZ2h0Qmx1ZSwgZ3JhZGllbnRMaWdodEFscGhhKTsKIH0K
IAotc3RhdGljIENvbG9yIGdyYWRpZW50RGFya0NvbG9yKCkKK3N0YXRpYyBpbmxpbmUgQ29sb3Ig
Z3JhZGllbnREYXJrQ29sb3IoKQogewogICAgIHJldHVybiBDb2xvcihncmFkaWVudERhcmtSZWQs
IGdyYWRpZW50RGFya0dyZWVuLCBncmFkaWVudERhcmtCbHVlLCBncmFkaWVudERhcmtBbHBoYSk7
CiB9CkBAIC0xNzMsOSArMTk2LDI2IEBAIHN0YXRpYyBQYXRoIHBhdGhXaXRoUm91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBwYXRoUmVjdCwgZmxvYXQgcmFkaXVzKQogCiAgICAgcmV0dXJuIHBh
dGg7CiB9CisjZWxzZQorc3RhdGljIGlubGluZSBDb2xvciBmbGF0SGlnaGxpZ2h0Q29sb3IoKQor
eworICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCwgMjU1KTsKK30KKworc3RhdGljIGlubGlu
ZSBDb2xvciBmbGF0UmltU2hhZG93Q29sb3IoKQoreworICAgIHJldHVybiBDb2xvcigwLCAwLCAw
LCAzOCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ29sb3IgZmxhdERyb3BTaGFkb3dDb2xvcigpCit7
CisgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDUxKTsKK30KKyNlbmRpZgogICAgIAogdm9pZCBG
aW5kSW5kaWNhdG9yOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRklORF9JTkRJ
Q0FUT1JfU1RZTEUpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHRSZWN0c0luU2Vs
ZWN0aW9uUmVjdENvb3JkaW5hdGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZsb2F0UmVjdCB0
ZXh0UmVjdCA9IG1fdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXNbaV07CiAgICAg
ICAgIHRleHRSZWN0Lm1vdmUobGVmdEJvcmRlclRoaWNrbmVzcywgdG9wQm9yZGVyVGhpY2tuZXNz
KTsKQEAgLTIwOCw2ICsyNDgsMzAgQEAgdm9pZCBGaW5kSW5kaWNhdG9yOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnQKICAgICAgICAg
ICAgIG1fY29udGVudEltYWdlLT5wYWludChncmFwaGljc0NvbnRleHQsIG1fY29udGVudEltYWdl
U2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFnZVJlY3QubG9jYXRpb24oKSwgY29udGVudEltYWdlUmVj
dCk7CiAgICAgICAgIH0KICAgICB9CisjZWxzZQorICAgIGZvciAoYXV0byYgdGV4dFJlY3QgOiBt
X3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzKSB7CisgICAgICAgIEZsb2F0UmVj
dCBibHVyUmVjdCA9IHRleHRSZWN0OworICAgICAgICBibHVyUmVjdC5tb3ZlKGZsYXRTaGFkb3dC
bHVyUmFkaXVzICsgZmxhdFN0eWxlSG9yaXpvbnRhbEJvcmRlciwgZmxhdFNoYWRvd0JsdXJSYWRp
dXMgKyBmbGF0U3R5bGVWZXJ0aWNhbEJvcmRlcik7CisgICAgICAgIEZsb2F0UmVjdCBvdXRlclBh
dGhSZWN0ID0gaW5mbGF0ZVJlY3QoYmx1clJlY3QsIGZsYXRTdHlsZUhvcml6b250YWxCb3JkZXIs
IGZsYXRTdHlsZVZlcnRpY2FsQm9yZGVyKTsKKworICAgICAgICB7CisgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKCksIGZsYXRSaW1TaGFk
b3dCbHVyUmFkaXVzLCBmbGF0UmltU2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmbGF0SGlnaGxpZ2h0Q29sb3Io
KSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0
KG91dGVyUGF0aFJlY3QpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhG
bG9hdFNpemUoZmxhdFNoYWRvd09mZnNldFgsIGZsYXRTaGFkb3dPZmZzZXRZKSwgZmxhdFNoYWRv
d0JsdXJSYWRpdXMsIGZsYXREcm9wU2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KG91dGVyUGF0aFJlY3QpOworICAgICAg
ICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
dHJhbnNsYXRlKEZsb2F0U2l6ZShmbGF0U2hhZG93Qmx1clJhZGl1cyArIGZsYXRTdHlsZUhvcml6
b250YWxCb3JkZXIsIGZsYXRTaGFkb3dCbHVyUmFkaXVzICsgZmxhdFN0eWxlVmVydGljYWxCb3Jk
ZXIpKTsKKworICAgICAgICAgICAgSW50UmVjdCBjb250ZW50SW1hZ2VSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdCh0ZXh0UmVjdCk7CisgICAgICAgICAgICBtX2NvbnRlbnRJbWFnZS0+cGFpbnQoZ3Jh
cGhpY3NDb250ZXh0LCBtX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yLCBjb250ZW50SW1hZ2VSZWN0
LmxvY2F0aW9uKCksIGNvbnRlbnRJbWFnZVJlY3QpOworICAgICAgICB9CisgICAgfQorI2VuZGlm
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggODVlMDVlYi4uZDBiMzhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCkBAIC00NCw2ICs0NCwxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTAwMAorI2RlZmluZSBFTkFCTEVfTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFIDEK
KyNlbHNlCisjZGVmaW5lIEVOQUJMRV9MRUdBQ1lfRklORF9JTkRJQ0FUT1JfU1RZTEUgMAorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgV2ViQ29yZTo6RmluZE9wdGlvbnMg
Y29yZShGaW5kT3B0aW9ucyBvcHRpb25zKQpAQCAtMjY2LDYgKzI3Miw4IEBAIGJvb2wgRmluZENv
bnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0b3JCaXRtYXBBbmRSZWN0KEZyYW1lJiBmcmFtZSwgU2hh
cmVhYmxlQml0bWFwCiAgICAgaWYgKCFmaW5kSW5kaWNhdG9yVGV4dEJhY2tpbmdTdG9yZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB1
c2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcgZm9yIHRoZSBzbmFwc2hvdAorICAgIC8vIGlmIHdl
J3JlIGNvbXBvc2l0aW5nIHRoaXMgaW1hZ2Ugb250byBhIHNvbGlkIGNvbG9yICh0aGUgbW9kZXJu
IGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGZpbmRJ
bmRpY2F0b3JUZXh0QmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBn
cmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKIApAQCAtNDQ4LDE4ICs0NTYsMTUgQEAgdm9pZCBGaW5kQ29udHJvbGxl
cjo6ZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKQogewogfQogCisjaWYg
RU5BQkxFKExFR0FDWV9GSU5EX0lORElDQVRPUl9TVFlMRSkKIHN0YXRpYyBjb25zdCBmbG9hdCBz
aGFkb3dPZmZzZXRYID0gMC4wOwogc3RhdGljIGNvbnN0IGZsb2F0IHNoYWRvd09mZnNldFkgPSAx
LjA7CiBzdGF0aWMgY29uc3QgZmxvYXQgc2hhZG93Qmx1clJhZGl1cyA9IDIuMDsKLQotc3RhdGlj
IGNvbnN0IGZsb2F0IG92ZXJsYXlCYWNrZ3JvdW5kUmVkID0gMC4xOwotc3RhdGljIGNvbnN0IGZs
b2F0IG92ZXJsYXlCYWNrZ3JvdW5kR3JlZW4gPSAwLjE7Ci1zdGF0aWMgY29uc3QgZmxvYXQgb3Zl
cmxheUJhY2tncm91bmRCbHVlID0gMC4xOwotc3RhdGljIGNvbnN0IGZsb2F0IG92ZXJsYXlCYWNr
Z3JvdW5kQWxwaGEgPSAwLjI1OworI2VuZGlmCiAKIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdS
ZWN0KFBhZ2VPdmVybGF5KiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBDb2xvciBvdmVybGF5QmFja2dyb3VuZENvbG9y
KG92ZXJsYXlCYWNrZ3JvdW5kUmVkLCBvdmVybGF5QmFja2dyb3VuZEdyZWVuLCBvdmVybGF5QmFj
a2dyb3VuZEJsdWUsIG92ZXJsYXlCYWNrZ3JvdW5kQWxwaGEpOworICAgIENvbG9yIG92ZXJsYXlC
YWNrZ3JvdW5kQ29sb3IoMC4xZiwgMC4xZiwgMC4xZiwgMC4yNWYpOwogCiAgICAgVmVjdG9yPElu
dFJlY3Q+IHJlY3RzID0gcmVjdHNGb3JUZXh0TWF0Y2hlcygpOwogCkBAIC00NjksMjAgKzQ3NCwy
MiBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSosIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjbwogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKKyNpZiBFTkFCTEUo
TEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFKQogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1
clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlU1JHQik7CisjZW5kaWYKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VTUkdC
KTsKIAogICAgICAgICAvLyBEcmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBJbnRSZWN0IHdoaXRlRnJhbWVSZWN0ID0gcmVjdHNbaV07CisgICAgICAgIGZvciAoYXV0
byYgcmVjdCA6IHJlY3RzKSB7CisgICAgICAgICAgICBJbnRSZWN0IHdoaXRlRnJhbWVSZWN0ID0g
cmVjdDsKICAgICAgICAgICAgIHdoaXRlRnJhbWVSZWN0LmluZmxhdGUoMSk7CiAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3Qod2hpdGVGcmFtZVJlY3QpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gQ2xlYXIgb3V0IHRoZSBob2xlcy4KLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJS
ZWN0KHJlY3RzW2ldKTsKKyAgICBmb3IgKGF1dG8mIHJlY3QgOiByZWN0cykKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKIAogICAgIGlmICghbV9pc1Nob3dpbmdGaW5k
SW5kaWNhdG9yKQogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="258667"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>