<?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>128049</bug_id>
          
          <creation_ts>2014-02-01 13:38:54 -0800</creation_ts>
          <short_desc>Subpixel rendering: Introduce device pixel snapping helper functions.</short_desc>
          <delta_ts>2014-02-02 13:10:11 -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>Layout and Rendering</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>127524</blocked>
    
    <blocked>128009</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974652</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 13:38:54 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974654</commentid>
    <comment_count>1</comment_count>
      <attachid>222889</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 13:58:27 -0800</bug_when>
    <thetext>Created attachment 222889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974694</commentid>
    <comment_count>2</comment_count>
      <attachid>222901</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 19:49:22 -0800</bug_when>
    <thetext>Created attachment 222901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974709</commentid>
    <comment_count>3</comment_count>
      <attachid>222901</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-01 21:25:06 -0800</bug_when>
    <thetext>Comment on attachment 222901
Patch

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

&gt; Source/WebCore/platform/LayoutUnit.h:942
&gt; +inline int snapSizeToPixel(LayoutUnit size, LayoutUnit location)

I don&apos;t like &quot;size&quot; because we have IntSize/FloatSize with have widths and heights.

&gt; Source/WebCore/platform/LayoutUnit.h:948
&gt; +inline float snapSizeToDevicePixel(LayoutUnit size, LayoutUnit location, float devicePixelRatio)

Ditto.

Do we ever use these on things that aren&apos;t rects?

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:91
&gt; +    , m_paintPixelRatio(2)

How can you assume 2 here?

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:447
&gt; +        float paintPixelRatio() const { return m_paintPixelRatio; }

We may have to rethink this name. Reading it in isolation here doesn&apos;t communicate what it&apos;s for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974710</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 21:30:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 222901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222901&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:942
&gt; &gt; +inline int snapSizeToPixel(LayoutUnit size, LayoutUnit location)
&gt; 
&gt; I don&apos;t like &quot;size&quot; because we have IntSize/FloatSize with have widths and heights.
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:948
&gt; &gt; +inline float snapSizeToDevicePixel(LayoutUnit size, LayoutUnit location, float devicePixelRatio)
&gt; 
&gt; Ditto.
ok.


&gt; Do we ever use these on things that aren&apos;t rects?
No. They are part of the rect snapping logic, so it does not make much sense to use them standalone.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:91
&gt; &gt; +    , m_paintPixelRatio(2)
&gt; 
&gt; How can you assume 2 here?
I assumed we support iOS retina only. I could be mistaken here.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:447
&gt; &gt; +        float paintPixelRatio() const { return m_paintPixelRatio; }
&gt; 
&gt; We may have to rethink this name. Reading it in isolation here doesn&apos;t communicate what it&apos;s for.
I had devicePixelRatioForPaiting perviously. Does that sound better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974726</commentid>
    <comment_count>5</comment_count>
      <attachid>222901</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-01 22:22:50 -0800</bug_when>
    <thetext>Comment on attachment 222901
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:91
&gt;&gt;&gt; +    , m_paintPixelRatio(2)
&gt;&gt; 
&gt;&gt; How can you assume 2 here?
&gt; 
&gt; I assumed we support iOS retina only. I could be mistaken here.

I don&apos;t think you should hardcode that assumption.

&gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:447
&gt;&gt;&gt; +        float paintPixelRatio() const { return m_paintPixelRatio; }
&gt;&gt; 
&gt;&gt; We may have to rethink this name. Reading it in isolation here doesn&apos;t communicate what it&apos;s for.
&gt; 
&gt; I had devicePixelRatioForPaiting perviously. Does that sound better?

pixelSnappingFactor()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974728</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 22:26:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 222901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222901&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:91
&gt; &gt;&gt;&gt; +    , m_paintPixelRatio(2)
&gt; &gt;&gt; 
&gt; &gt;&gt; How can you assume 2 here?
&gt; &gt; 
&gt; &gt; I assumed we support iOS retina only. I could be mistaken here.
&gt; 
&gt; I don&apos;t think you should hardcode that assumption.
Ok, I&apos;ll change that.

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:447
&gt; &gt;&gt;&gt; +        float paintPixelRatio() const { return m_paintPixelRatio; }
&gt; &gt;&gt; 
&gt; &gt;&gt; We may have to rethink this name. Reading it in isolation here doesn&apos;t communicate what it&apos;s for.
&gt; &gt; 
&gt; &gt; I had devicePixelRatioForPaiting perviously. Does that sound better?
&gt; 
&gt; pixelSnappingFactor()?
Much better. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974732</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 22:36:03 -0800</bug_when>
    <thetext>&gt; &gt; Do we ever use these on things that aren&apos;t rects?
&gt; No. They are part of the rect snapping logic, so it does not make much sense to use them standalone.
hmm, actually we do use them in a few places outside of LayoutRect for example to snap offsetWidth/Height. This naming confused me too in the past, but I can&apos;t think of anything better now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974733</commentid>
    <comment_count>8</comment_count>
      <attachid>222911</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-02-01 23:11:22 -0800</bug_when>
    <thetext>Created attachment 222911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974784</commentid>
    <comment_count>9</comment_count>
      <attachid>222911</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-02 10:34:00 -0800</bug_when>
    <thetext>Comment on attachment 222911
Patch

Clearing flags on attachment: 222911

Committed r163265: &lt;http://trac.webkit.org/changeset/163265&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974785</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-02 10:34:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974791</commentid>
    <comment_count>11</comment_count>
      <attachid>222911</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-02 11:01:01 -0800</bug_when>
    <thetext>Comment on attachment 222911
Patch

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

&gt; Source/WebCore/platform/LayoutUnit.h:940
&gt; +    return round((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;

Needs to be roundf to avoid converting to a double, rounding, and then converting back to a float.

&gt; Source/WebCore/platform/LayoutUnit.h:945
&gt; +    return floor((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;

Needs to be floorf to avoid converting to a double, rounding, and then converting back to a float.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:143
&gt; +    ASSERT(abs(baseDeviceMatrix.a) == abs(baseDeviceMatrix.d));

The function abs takes an int, and I assume that conversion to integer isn’t what we want here. I suggest using fabs, even though it will result in converting float to double on 32-bit platforms, because this is just an assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974793</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-02 11:02:35 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 222911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222911&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:940
&gt; &gt; +    return round((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;
&gt; 
&gt; Needs to be roundf to avoid converting to a double, rounding, and then converting back to a float.
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:945
&gt; &gt; +    return floor((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;
&gt; 
&gt; Needs to be floorf to avoid converting to a double, rounding, and then converting back to a float.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:143
&gt; &gt; +    ASSERT(abs(baseDeviceMatrix.a) == abs(baseDeviceMatrix.d));
&gt; 
&gt; The function abs takes an int, and I assume that conversion to integer isn’t what we want here. I suggest using fabs, even though it will result in converting float to double on 32-bit platforms, because this is just an assertion.

Thanks. I&apos;ll fix them right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974822</commentid>
    <comment_count>13</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-02-02 13:10:11 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 222911 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222911&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/LayoutUnit.h:940
&gt; &gt; &gt; +    return round((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;
&gt; &gt; 
&gt; &gt; Needs to be roundf to avoid converting to a double, rounding, and then converting back to a float.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/LayoutUnit.h:945
&gt; &gt; &gt; +    return floor((value.rawValue() * pixelSnappingFactor) / kEffectiveFixedPointDenominator) / pixelSnappingFactor;
&gt; &gt; 
&gt; &gt; Needs to be floorf to avoid converting to a double, rounding, and then converting back to a float.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:143
&gt; &gt; &gt; +    ASSERT(abs(baseDeviceMatrix.a) == abs(baseDeviceMatrix.d));
&gt; &gt; 
&gt; &gt; The function abs takes an int, and I assume that conversion to integer isn’t what we want here. I suggest using fabs, even though it will result in converting float to double on 32-bit platforms, because this is just an assertion.
&gt; 
&gt; Thanks. I&apos;ll fix them right away.
bug 128075</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222889</attachid>
            <date>2014-02-01 13:58:27 -0800</date>
            <delta_ts>2014-02-01 19:49:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128049-20140201135824.patch</filename>
            <type>text/plain</type>
            <size>7075</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FlOGNmZGVkODYyYWEz
NThkNWZiNGViOTI0Y2U0MGIxZWI3MGQzNi4uNmI3ZjExNWM5OTBiMTY1MThhM2IyZWEzMGE1MTJi
YjI3MjZlMjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBJbnRyb2R1Y2UgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGhlbHBlciBmdW5jdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwNDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmdW5jdGlv
bnMgaGVscCBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgYXQgcGFpbnRpbmcgdGltZS4KKworICAgICAg
ICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL0xheW91
dFVuaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnJvdW5kVG9EZXZpY2VQaXhlbCk6CisgICAgICAg
IChXZWJDb3JlOjpmbG9vclRvRGV2aWNlUGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6c25hcFNp
emVUb1BpeGVsKToKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBTaXplVG9EZXZpY2VQaXhlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGFpbnRQaXhlbFJhdGlvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRGb3JQYWlu
dGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOiBB
U1NFUlQgYWdhaW5zdCB1bmlmb3JtIHNjYWxpbmcuCisKIDIwMTQtMDItMDEgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFdlYkNyeXB0byBKV0sg
bWFwcGluZyB0byB1c2Uga2V5X29wcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGF5b3V0VW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5oCmlu
ZGV4IDkxZjQ5YjhjODUzMTU0OTMwN2MxZDYyNDFlZTdkYTk0N2Q5NGU0YmYuLjkyNTU4NWE4NDRk
NWZmYTI0ODBhYTY2NmEwNjYyNDUxYzljMTM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xheW91dFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlv
dXRVbml0LmgKQEAgLTkxOSwxMiArOTE5LDYgQEAgaW5saW5lIGZsb2F0JiBvcGVyYXRvci89KGZs
b2F0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUg
aW50IHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0IHNpemUsIExheW91dFVuaXQgbG9jYXRpb24p
IAotewotICAgIExheW91dFVuaXQgZnJhY3Rpb24gPSBsb2NhdGlvbi5mcmFjdGlvbigpOwotICAg
IHJldHVybiAoZnJhY3Rpb24gKyBzaXplKS5yb3VuZCgpIC0gZnJhY3Rpb24ucm91bmQoKTsKLX0K
LQogaW5saW5lIGludCByb3VuZFRvSW50KExheW91dFVuaXQgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IHZhbHVlLnJvdW5kKCk7CkBAIC05MzUsNiArOTI5LDI4IEBAIGlubGluZSBpbnQgZmxvb3JUb0lu
dChMYXlvdXRVbml0IHZhbHVlKQogICAgIHJldHVybiB2YWx1ZS5mbG9vcigpOwogfQogCitpbmxp
bmUgZmxvYXQgcm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQgdmFsdWUsIGZsb2F0IGRldmlj
ZVBpeGVsUmF0aW8pCit7CisgICAgcmV0dXJuIHJvdW5kKCh2YWx1ZS5yYXdWYWx1ZSgpICogZGV2
aWNlUGl4ZWxSYXRpbykgLyBrRWZmZWN0aXZlRml4ZWRQb2ludERlbm9taW5hdG9yKSAvIGRldmlj
ZVBpeGVsUmF0aW87Cit9CisKK2lubGluZSBmbG9hdCBmbG9vclRvRGV2aWNlUGl4ZWwoTGF5b3V0
VW5pdCB2YWx1ZSwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbykKK3sKKyAgICByZXR1cm4gZmxvb3Io
KHZhbHVlLnJhd1ZhbHVlKCkgKiBkZXZpY2VQaXhlbFJhdGlvKSAvIGtFZmZlY3RpdmVGaXhlZFBv
aW50RGVub21pbmF0b3IpIC8gZGV2aWNlUGl4ZWxSYXRpbzsKK30KKworaW5saW5lIGludCBzbmFw
U2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCBzaXplLCBMYXlvdXRVbml0IGxvY2F0aW9uKQoreworICAg
IExheW91dFVuaXQgZnJhY3Rpb24gPSBsb2NhdGlvbi5mcmFjdGlvbigpOworICAgIHJldHVybiAo
ZnJhY3Rpb24gKyBzaXplKS5yb3VuZCgpIC0gZnJhY3Rpb24ucm91bmQoKTsKK30KKworaW5saW5l
IGZsb2F0IHNuYXBTaXplVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0IHNpemUsIExheW91dFVuaXQg
bG9jYXRpb24sIGZsb2F0IGRldmljZVBpeGVsUmF0aW8pCit7CisgICAgTGF5b3V0VW5pdCBmcmFj
dGlvbiA9IGxvY2F0aW9uLmZyYWN0aW9uKCk7CisgICAgcmV0dXJuIHJvdW5kVG9EZXZpY2VQaXhl
bChmcmFjdGlvbiArIHNpemUsIGRldmljZVBpeGVsUmF0aW8pIC0gcm91bmRUb0RldmljZVBpeGVs
KGZyYWN0aW9uLCBkZXZpY2VQaXhlbFJhdGlvKTsKK30KKwogaW5saW5lIExheW91dFVuaXQgcm91
bmRlZExheW91dFVuaXQoZmxvYXQgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9V
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDZiNGQ3YTlhM2Q3MmVkYzMyNWE5OTRlNzljZjYxYTFmMDE5NzY1YTMu
LmQ1NjY1YTg1ZWZkOGQwYzQyOGJjOGQ0MGZjM2E3ODcwMzU4Y2IwNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
ODAsNiArODAsNyBAQCBwcml2YXRlOgogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQo
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KQogICAgIDog
bV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKICAgICAsIG1fdHJhbnNwYXJlbmN5Q291bnQo
MCkKKyAgICAsIG1fcGFpbnRQaXhlbFJhdGlvKDEpCiB7CiAgICAgcGxhdGZvcm1Jbml0KHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KTsKIH0KQEAgLTg3LDYgKzg4LDcgQEAgR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtR3JhcGhp
Y3NDb250ZXgKIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgYm9vbCBzaG91bGRVc2VDb250ZXh0
Q29sb3JzKQogICAgIDogbV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKICAgICAsIG1fdHJh
bnNwYXJlbmN5Q291bnQoMCkKKyAgICAsIG1fcGFpbnRQaXhlbFJhdGlvKDIpCiB7CiAgICAgcGxh
dGZvcm1Jbml0KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBzaG91bGRVc2VDb250ZXh0Q29sb3Jz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggNmIwNGZlNmYxZDdiNjQ0MGU4NmI2YTc1YWM4OWUyMWY1MjA5MzllMi4u
MzhkZTg4NzdhOTZlZDg5ZWRmODFjYjE2NDFlNmQyZWZhMjE4NDdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0NCw2
ICs0NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gSW5jbHVkZURldmlj
ZVNjYWxlIHsgRGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSwgUG9zc2libHlJbmNsdWRlRGV2
aWNlU2NhbGUgfTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldENUTShJbmNsdWRlRGV2aWNl
U2NhbGUgaW5jbHVkZVNjYWxlID0gUG9zc2libHlJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0Owog
CisgICAgICAgIGZsb2F0IHBhaW50UGl4ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRQ
aXhlbFJhdGlvOyB9CisKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQt
Y29tcG9zaXRpbmcgaW4gc29mdHdhcmUgbW9kZSwgbGlrZSBpbiBUZXh0dXJlTWFwcGVyLgogICAg
ICAgICB2b2lkIGNvbmNhdDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7
CkBAIC01ODAsNiArNTgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8
R3JhcGhpY3NDb250ZXh0U3RhdGU+IG1fc3RhY2s7CiAgICAgICAgIGJvb2wgbV91cGRhdGluZ0Nv
bnRyb2xUaW50czsKICAgICAgICAgdW5zaWduZWQgbV90cmFuc3BhcmVuY3lDb3VudDsKKyAgICAg
ICAgZmxvYXQgbV9wYWludFBpeGVsUmF0aW87CiAgICAgfTsKIAogICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5oCmluZGV4IDY2YTE5YmRmMTFiYzE1MjdmM2I1MDc2NzFjOWVkOWM3ZmRhNWY4
MjQuLjA0NTQwOWVmNzU0OTQyZjE1MmQyZTJjNjA5MzhjM2I0OGUxYjZlMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTIzMSw2ICsyMzEs
MjEgQEAgaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChMYXlvdXRQb2ludCBsb2Nh
dGlvbiwgTGF5b3V0U2l6ZSBzaXplKQogICAgIHJldHVybiBJbnRSZWN0KHJvdW5kZWRJbnRQb2lu
dChsb2NhdGlvbiksIHBpeGVsU25hcHBlZEludFNpemUoc2l6ZSwgbG9jYXRpb24pKTsKIH0KIAor
aW5saW5lIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQoreworI2lmIEVOQUJMRShTVUJQSVhFTF9M
QVlPVVQpCisgICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC54KCks
IGRldmljZVBpeGVsUmF0aW8pLCByb3VuZFRvRGV2aWNlUGl4ZWwocmVjdC55KCksIGRldmljZVBp
eGVsUmF0aW8pLAorICAgICAgICBzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwocmVjdC53aWR0aCgpLCBy
ZWN0LngoKSwgZGV2aWNlUGl4ZWxSYXRpbyksIHNuYXBTaXplVG9EZXZpY2VQaXhlbChyZWN0Lmhl
aWdodCgpLCByZWN0LnkoKSwgZGV2aWNlUGl4ZWxSYXRpbykpOworI2Vsc2UKKyAgICByZXR1cm4g
RmxvYXRSZWN0KHJlY3QpOworI2VuZGlmCit9CisKK2lubGluZSBGbG9hdFJlY3QgcGl4ZWxTbmFw
cGVkRm9yUGFpbnRpbmcoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHksIExheW91dFVuaXQgd2lk
dGgsIExheW91dFVuaXQgaGVpZ2h0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQoreworICAgIHJl
dHVybiBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRSZWN0KHgsIHksIHdpZHRoLCBoZWln
aHQpLCBkZXZpY2VQaXhlbFJhdGlvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gTGF5b3V0UmVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYTdlMTAwNjZiY2U0
ZmFhNDE0NTVmZDM0Y2FhMGU1NTY2OGZmZmRkMy4uYTdiNzdlZDIyMDJhM2JhNDk4ZjcxOTk2YmU5
YWVjNTdhMmEwYzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTM4LDYgKzEzOCwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KENHQ29udGV4dFJlZiBjZ0NvbnRleHQs
IGJvb2wgc2hvdWxkVXNlQ29udGV4dAogICAgICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxs
Q29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7CiAgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29s
b3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKICAgICB9CisKKyAgICBDR0Fm
ZmluZVRyYW5zZm9ybSBiYXNlRGV2aWNlTWF0cml4ID0gQ0dDb250ZXh0R2V0VXNlclNwYWNlVG9E
ZXZpY2VTcGFjZVRyYW5zZm9ybShjZ0NvbnRleHQpOworICAgIEFTU0VSVChiYXNlRGV2aWNlTWF0
cml4LmEgPT0gYmFzZURldmljZU1hdHJpeC5kKTsKKyAgICBtX3BhaW50UGl4ZWxSYXRpbyA9IGJh
c2VEZXZpY2VNYXRyaXguYTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRGVz
dHJveSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222901</attachid>
            <date>2014-02-01 19:49:22 -0800</date>
            <delta_ts>2014-02-01 23:11:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128049-20140201194916.patch</filename>
            <type>text/plain</type>
            <size>7252</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FlOGNmZGVkODYyYWEz
NThkNWZiNGViOTI0Y2U0MGIxZWI3MGQzNi4uNDAxNGRkMzQ2N2Q5ZDMxODhhODE2OTE4ODU2NzRl
MzhkNWMxN2IxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBJbnRyb2R1Y2UgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGhlbHBlciBmdW5jdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwNDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmdW5jdGlv
bnMgaGVscCBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZHVyaW5nIHBhaW50aW5nLiBUaGV5IGZvbGxv
dyB0aGUgbG9naWMgb2YKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgcGl4ZWxTbmFwcGVkSW50
KiBmdW5jdGlvbnMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZFRv
RGV2aWNlUGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Zmxvb3JUb0RldmljZVBpeGVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNuYXBTaXplVG9QaXhlbCk6CisgICAgICAgIChXZWJDb3JlOjpzbmFw
U2l6ZVRvRGV2aWNlUGl4ZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50UGl4ZWxSYXRpbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6cGl4ZWxTbmFwcGVkRm9yUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1Jbml0KTogQVNTRVJUIGFnYWluc3QgdW5pZm9ybSBzY2FsaW5nLiBBcHBh
cmVudGx5CisgICAgICAgIHNjYWxlWCA9IDEsIHNjYWxlWSA9IC0xIGlzIGEgdmFsaWQgc2NhbGlu
ZyBjb250ZXh0IGZvciBJbWFnZUJ1ZmZlci4KKwogMjAxNC0wMi0wMSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViQ3J5cHRvIEpXSyBtYXBw
aW5nIHRvIHVzZSBrZXlfb3BzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YXlvdXRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKaW5kZXgg
OTFmNDliOGM4NTMxNTQ5MzA3YzFkNjI0MWVlN2RhOTQ3ZDk0ZTRiZi4uOTI1NTg1YTg0NGQ1ZmZh
MjQ4MGFhNjY2YTA2NjI0NTFjOWMxMzhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGF5b3V0VW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVu
aXQuaApAQCAtOTE5LDEyICs5MTksNiBAQCBpbmxpbmUgZmxvYXQmIG9wZXJhdG9yLz0oZmxvYXQm
IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBpbnQg
c25hcFNpemVUb1BpeGVsKExheW91dFVuaXQgc2l6ZSwgTGF5b3V0VW5pdCBsb2NhdGlvbikgCi17
Ci0gICAgTGF5b3V0VW5pdCBmcmFjdGlvbiA9IGxvY2F0aW9uLmZyYWN0aW9uKCk7Ci0gICAgcmV0
dXJuIChmcmFjdGlvbiArIHNpemUpLnJvdW5kKCkgLSBmcmFjdGlvbi5yb3VuZCgpOwotfQotCiBp
bmxpbmUgaW50IHJvdW5kVG9JbnQoTGF5b3V0VW5pdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFs
dWUucm91bmQoKTsKQEAgLTkzNSw2ICs5MjksMjggQEAgaW5saW5lIGludCBmbG9vclRvSW50KExh
eW91dFVuaXQgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlLmZsb29yKCk7CiB9CiAKK2lubGluZSBm
bG9hdCByb3VuZFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5pdCB2YWx1ZSwgZmxvYXQgZGV2aWNlUGl4
ZWxSYXRpbykKK3sKKyAgICByZXR1cm4gcm91bmQoKHZhbHVlLnJhd1ZhbHVlKCkgKiBkZXZpY2VQ
aXhlbFJhdGlvKSAvIGtFZmZlY3RpdmVGaXhlZFBvaW50RGVub21pbmF0b3IpIC8gZGV2aWNlUGl4
ZWxSYXRpbzsKK30KKworaW5saW5lIGZsb2F0IGZsb29yVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0
IHZhbHVlLCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQoreworICAgIHJldHVybiBmbG9vcigodmFs
dWUucmF3VmFsdWUoKSAqIGRldmljZVBpeGVsUmF0aW8pIC8ga0VmZmVjdGl2ZUZpeGVkUG9pbnRE
ZW5vbWluYXRvcikgLyBkZXZpY2VQaXhlbFJhdGlvOworfQorCitpbmxpbmUgaW50IHNuYXBTaXpl
VG9QaXhlbChMYXlvdXRVbml0IHNpemUsIExheW91dFVuaXQgbG9jYXRpb24pCit7CisgICAgTGF5
b3V0VW5pdCBmcmFjdGlvbiA9IGxvY2F0aW9uLmZyYWN0aW9uKCk7CisgICAgcmV0dXJuIChmcmFj
dGlvbiArIHNpemUpLnJvdW5kKCkgLSBmcmFjdGlvbi5yb3VuZCgpOworfQorCitpbmxpbmUgZmxv
YXQgc25hcFNpemVUb0RldmljZVBpeGVsKExheW91dFVuaXQgc2l6ZSwgTGF5b3V0VW5pdCBsb2Nh
dGlvbiwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbykKK3sKKyAgICBMYXlvdXRVbml0IGZyYWN0aW9u
ID0gbG9jYXRpb24uZnJhY3Rpb24oKTsKKyAgICByZXR1cm4gcm91bmRUb0RldmljZVBpeGVsKGZy
YWN0aW9uICsgc2l6ZSwgZGV2aWNlUGl4ZWxSYXRpbykgLSByb3VuZFRvRGV2aWNlUGl4ZWwoZnJh
Y3Rpb24sIGRldmljZVBpeGVsUmF0aW8pOworfQorCiBpbmxpbmUgTGF5b3V0VW5pdCByb3VuZGVk
TGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKaW5kZXggNmI0ZDdhOWEzZDcyZWRjMzI1YTk5NGU3OWNmNjFhMWYwMTk3NjVhMy4uZDU2
NjVhODVlZmQ4ZDBjNDI4YmM4ZDQwZmMzYTc4NzAzNThjYjA2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04MCw2
ICs4MCw3IEBAIHByaXZhdGU6CiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1HcmFwaGljc0NvbnRleHQpCiAgICAgOiBtX3Vw
ZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQogICAgICwgbV90cmFuc3BhcmVuY3lDb3VudCgwKQor
ICAgICwgbV9wYWludFBpeGVsUmF0aW8oMSkKIHsKICAgICBwbGF0Zm9ybUluaXQocGxhdGZvcm1H
cmFwaGljc0NvbnRleHQpOwogfQpAQCAtODcsNiArODgsNyBAQCBHcmFwaGljc0NvbnRleHQ6Okdy
YXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1HcmFwaGljc0Nv
bnRleAogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQqIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBib29sIHNob3VsZFVzZUNvbnRleHRDb2xv
cnMpCiAgICAgOiBtX3VwZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQogICAgICwgbV90cmFuc3Bh
cmVuY3lDb3VudCgwKQorICAgICwgbV9wYWludFBpeGVsUmF0aW8oMikKIHsKICAgICBwbGF0Zm9y
bUluaXQocGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIHNob3VsZFVzZUNvbnRleHRDb2xvcnMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCA2YjA0ZmU2ZjFkN2I2NDQwZTg2YjZhNzVhYzg5ZTIxZjUyMDkzOWUyLi4zOGRl
ODg3N2E5NmVkODllZGY4MWNiMTY0MWU2ZDJlZmEyMTg0N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDQ0LDYgKzQ0
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBJbmNsdWRlRGV2aWNlU2Nh
bGUgeyBEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlLCBQb3NzaWJseUluY2x1ZGVEZXZpY2VT
Y2FsZSB9OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2Fs
ZSBpbmNsdWRlU2NhbGUgPSBQb3NzaWJseUluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3Q7CiAKKyAg
ICAgICAgZmxvYXQgcGFpbnRQaXhlbFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9wYWludFBpeGVs
UmF0aW87IH0KKwogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBhY2NlbGVyYXRlZC1jb21w
b3NpdGluZyBpbiBzb2Z0d2FyZSBtb2RlLCBsaWtlIGluIFRleHR1cmVNYXBwZXIuCiAgICAgICAg
IHZvaWQgY29uY2F0M0RUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKQEAg
LTU4MCw2ICs1ODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxHcmFw
aGljc0NvbnRleHRTdGF0ZT4gbV9zdGFjazsKICAgICAgICAgYm9vbCBtX3VwZGF0aW5nQ29udHJv
bFRpbnRzOwogICAgICAgICB1bnNpZ25lZCBtX3RyYW5zcGFyZW5jeUNvdW50OworICAgICAgICBm
bG9hdCBtX3BhaW50UGl4ZWxSYXRpbzsKICAgICB9OwogCiAgICAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmgKaW5kZXggNjZhMTliZGYxMWJjMTUyN2YzYjUwNzY3MWM5ZWQ5YzdmZGE1ZjgyNC4u
MDQ1NDA5ZWY3NTQ5NDJmMTUyZDJlMmM2MDkzOGMzYjQ4ZTFiNmUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtMjMxLDYgKzIzMSwyMSBA
QCBpbmxpbmUgSW50UmVjdCBwaXhlbFNuYXBwZWRJbnRSZWN0KExheW91dFBvaW50IGxvY2F0aW9u
LCBMYXlvdXRTaXplIHNpemUpCiAgICAgcmV0dXJuIEludFJlY3Qocm91bmRlZEludFBvaW50KGxv
Y2F0aW9uKSwgcGl4ZWxTbmFwcGVkSW50U2l6ZShzaXplLCBsb2NhdGlvbikpOwogfQogCitpbmxp
bmUgRmxvYXRSZWN0IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8pCit7CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9V
VCkKKyAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kVG9EZXZpY2VQaXhlbChyZWN0LngoKSwgZGV2
aWNlUGl4ZWxSYXRpbyksIHJvdW5kVG9EZXZpY2VQaXhlbChyZWN0LnkoKSwgZGV2aWNlUGl4ZWxS
YXRpbyksCisgICAgICAgIHNuYXBTaXplVG9EZXZpY2VQaXhlbChyZWN0LndpZHRoKCksIHJlY3Qu
eCgpLCBkZXZpY2VQaXhlbFJhdGlvKSwgc25hcFNpemVUb0RldmljZVBpeGVsKHJlY3QuaGVpZ2h0
KCksIHJlY3QueSgpLCBkZXZpY2VQaXhlbFJhdGlvKSk7CisjZWxzZQorICAgIHJldHVybiBGbG9h
dFJlY3QocmVjdCk7CisjZW5kaWYKK30KKworaW5saW5lIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRG
b3JQYWludGluZyhMYXlvdXRVbml0IHgsIExheW91dFVuaXQgeSwgTGF5b3V0VW5pdCB3aWR0aCwg
TGF5b3V0VW5pdCBoZWlnaHQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8pCit7CisgICAgcmV0dXJu
IHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExheW91dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCks
IGRldmljZVBpeGVsUmF0aW8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBMYXlvdXRSZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhN2UxMDA2NmJjZTRmYWE0
MTQ1NWZkMzRjYWEwZTU1NjY4ZmZmZGQzLi41NDhkZjAwMjA3OGU0OTJhNTA3NjQxMmJkNDZhY2Qy
MmU2NTA0NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xMzgsNiArMTM4LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgYm9v
bCBzaG91bGRVc2VDb250ZXh0CiAgICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xv
cigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihz
dHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOwogICAgIH0KKworICAgIENHQWZmaW5l
VHJhbnNmb3JtIGJhc2VEZXZpY2VNYXRyaXggPSBDR0NvbnRleHRHZXRVc2VyU3BhY2VUb0Rldmlj
ZVNwYWNlVHJhbnNmb3JtKGNnQ29udGV4dCk7CisgICAgQVNTRVJUKGFicyhiYXNlRGV2aWNlTWF0
cml4LmEpID09IGFicyhiYXNlRGV2aWNlTWF0cml4LmQpKTsKKyAgICBtX3BhaW50UGl4ZWxSYXRp
byA9IGJhc2VEZXZpY2VNYXRyaXguYTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRGVzdHJveSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222911</attachid>
            <date>2014-02-01 23:11:22 -0800</date>
            <delta_ts>2014-02-02 11:01:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128049-20140201231115.patch</filename>
            <type>text/plain</type>
            <size>6719</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FlOGNmZGVkODYyYWEz
NThkNWZiNGViOTI0Y2U0MGIxZWI3MGQzNi4uNTg2YmUyNzMwYTg1MGQwYTI3NGQzN2ExMTMxNTk2
OGI3NjUyM2YwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE0LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5n
OiBJbnRyb2R1Y2UgZGV2aWNlIHBpeGVsIHNuYXBwaW5nIGhlbHBlciBmdW5jdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwNDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmdW5jdGlv
bnMgaGVscCBkZXZpY2UgcGl4ZWwgc25hcHBpbmcgZHVyaW5nIHBhaW50aW5nLiBUaGV5IGZvbGxv
dyB0aGUgbG9naWMgb2YKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgcGl4ZWxTbmFwcGVkSW50
KiBmdW5jdGlvbnMuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZFRv
RGV2aWNlUGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Zmxvb3JUb0RldmljZVBpeGVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNuYXBTaXplVG9QaXhlbCk6CisgICAgICAgIChXZWJDb3JlOjpzbmFw
U2l6ZVRvRGV2aWNlUGl4ZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBpeGVsU25hcHBpbmdGYWN0b3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnBpeGVsU25hcHBlZEZvclBhaW50aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnBsYXRmb3JtSW5pdCk6CisKIDIwMTQtMDItMDEgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFdlYkNyeXB0byBKV0sgbWFwcGlu
ZyB0byB1c2Uga2V5X29wcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5
b3V0VW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5oCmluZGV4IDkx
ZjQ5YjhjODUzMTU0OTMwN2MxZDYyNDFlZTdkYTk0N2Q5NGU0YmYuLjFmNTgxYmUzZTFiODYyY2My
ODJjOGQwODJkMjg3ZTY0NmU4NDJjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xheW91dFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0
LmgKQEAgLTkzNSw2ICs5MzUsMjIgQEAgaW5saW5lIGludCBmbG9vclRvSW50KExheW91dFVuaXQg
dmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlLmZsb29yKCk7CiB9CiAKK2lubGluZSBmbG9hdCByb3Vu
ZFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5pdCB2YWx1ZSwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rv
cikKK3sKKyAgICByZXR1cm4gcm91bmQoKHZhbHVlLnJhd1ZhbHVlKCkgKiBwaXhlbFNuYXBwaW5n
RmFjdG9yKSAvIGtFZmZlY3RpdmVGaXhlZFBvaW50RGVub21pbmF0b3IpIC8gcGl4ZWxTbmFwcGlu
Z0ZhY3RvcjsKK30KKworaW5saW5lIGZsb2F0IGZsb29yVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0
IHZhbHVlLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKQoreworICAgIHJldHVybiBmbG9vcigo
dmFsdWUucmF3VmFsdWUoKSAqIHBpeGVsU25hcHBpbmdGYWN0b3IpIC8ga0VmZmVjdGl2ZUZpeGVk
UG9pbnREZW5vbWluYXRvcikgLyBwaXhlbFNuYXBwaW5nRmFjdG9yOworfQorCitpbmxpbmUgZmxv
YXQgc25hcFNpemVUb0RldmljZVBpeGVsKExheW91dFVuaXQgc2l6ZSwgTGF5b3V0VW5pdCBsb2Nh
dGlvbiwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKK3sKKyAgICBMYXlvdXRVbml0IGZyYWN0
aW9uID0gbG9jYXRpb24uZnJhY3Rpb24oKTsKKyAgICByZXR1cm4gcm91bmRUb0RldmljZVBpeGVs
KGZyYWN0aW9uICsgc2l6ZSwgcGl4ZWxTbmFwcGluZ0ZhY3RvcikgLSByb3VuZFRvRGV2aWNlUGl4
ZWwoZnJhY3Rpb24sIHBpeGVsU25hcHBpbmdGYWN0b3IpOworfQorCiBpbmxpbmUgTGF5b3V0VW5p
dCByb3VuZGVkTGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoU1VCUElYRUxf
TEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggNmI0ZDdhOWEzZDcyZWRjMzI1YTk5NGU3OWNmNjFhMWYwMTk3
NjVhMy4uMjljZjE4NjBmNDVhNzBmYTE3YTcyYjk5NjEyNWI5ZDA1NzRjZDRmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1HcmFwaGljc0NvbnRleHQpCiAg
ICAgOiBtX3VwZGF0aW5nQ29udHJvbFRpbnRzKGZhbHNlKQogICAgICwgbV90cmFuc3BhcmVuY3lD
b3VudCgwKQorICAgICwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKDEpCiB7CiAgICAgcGxhdGZvcm1J
bml0KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKIH0KQEAgLTg3LDYgKzg4LDcgQEAgR3JhcGhp
Y3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRm
b3JtR3JhcGhpY3NDb250ZXgKIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgYm9vbCBzaG91bGRV
c2VDb250ZXh0Q29sb3JzKQogICAgIDogbV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKICAg
ICAsIG1fdHJhbnNwYXJlbmN5Q291bnQoMCkKKyAgICAsIG1fcGl4ZWxTbmFwcGluZ0ZhY3Rvcigx
KQogewogICAgIHBsYXRmb3JtSW5pdChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgc2hvdWxkVXNl
Q29udGV4dENvbG9ycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDZiMDRmZTZmMWQ3YjY0NDBlODZiNmE3NWFjODll
MjFmNTIwOTM5ZTIuLjcyODkwNWY5NTQ1ZmJmMTk2NjI1MDg5M2QxMjNlMWIxODEwMWVlMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC00NDQsNiArNDQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBlbnVt
IEluY2x1ZGVEZXZpY2VTY2FsZSB7IERlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUsIFBvc3Np
Ymx5SW5jbHVkZURldmljZVNjYWxlIH07CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0o
SW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVkZURldmljZVNj
YWxlKSBjb25zdDsKIAorICAgICAgICBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9waXhlbFNuYXBwaW5nRmFjdG9yOyB9CisKICNpZiBFTkFCTEUoM0RfUkVOREVS
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHdo
ZW4gdXNpbmcgYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcgaW4gc29mdHdhcmUgbW9kZSwgbGlrZSBp
biBUZXh0dXJlTWFwcGVyLgogICAgICAgICB2b2lkIGNvbmNhdDNEVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CkBAIC01ODAsNiArNTgyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0U3RhdGU+IG1fc3RhY2s7CiAgICAg
ICAgIGJvb2wgbV91cGRhdGluZ0NvbnRyb2xUaW50czsKICAgICAgICAgdW5zaWduZWQgbV90cmFu
c3BhcmVuY3lDb3VudDsKKyAgICAgICAgZmxvYXQgbV9waXhlbFNuYXBwaW5nRmFjdG9yOwogICAg
IH07CiAKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAppbmRleCA2NmExOWJkZjExYmMx
NTI3ZjNiNTA3NjcxYzllZDljN2ZkYTVmODI0Li5mZDRlNDE0ZThhNmE4YTJhYWFiODA5NWVlYWJk
NGM4Mzg5MjA3MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5
b3V0UmVjdC5oCkBAIC0yMzEsNiArMjMxLDIyIEBAIGlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBl
ZEludFJlY3QoTGF5b3V0UG9pbnQgbG9jYXRpb24sIExheW91dFNpemUgc2l6ZSkKICAgICByZXR1
cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBwaXhlbFNuYXBwZWRJbnRTaXpl
KHNpemUsIGxvY2F0aW9uKSk7CiB9CiAKK2lubGluZSBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkRm9y
UGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3Rv
cikKK3sKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQorICAgIHJldHVybiBGbG9hdFJlY3Qo
cm91bmRUb0RldmljZVBpeGVsKHJlY3QueCgpLCBwaXhlbFNuYXBwaW5nRmFjdG9yKSwgcm91bmRU
b0RldmljZVBpeGVsKHJlY3QueSgpLCBwaXhlbFNuYXBwaW5nRmFjdG9yKSwKKyAgICAgICAgc25h
cFNpemVUb0RldmljZVBpeGVsKHJlY3Qud2lkdGgoKSwgcmVjdC54KCksIHBpeGVsU25hcHBpbmdG
YWN0b3IpLCBzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwocmVjdC5oZWlnaHQoKSwgcmVjdC55KCksIHBp
eGVsU25hcHBpbmdGYWN0b3IpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBpeGVsU25hcHBp
bmdGYWN0b3IpOworICAgIHJldHVybiBGbG9hdFJlY3QocmVjdCk7CisjZW5kaWYKK30KKworaW5s
aW5lIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRGb3JQYWludGluZyhMYXlvdXRVbml0IHgsIExheW91
dFVuaXQgeSwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQsIGZsb2F0IHBpeGVs
U25hcHBpbmdGYWN0b3IpCit7CisgICAgcmV0dXJuIHBpeGVsU25hcHBlZEZvclBhaW50aW5nKExh
eW91dFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCksIHBpeGVsU25hcHBpbmdGYWN0b3IpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBMYXlvdXRSZWN0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAppbmRleCBhN2UxMDA2NmJjZTRmYWE0MTQ1NWZkMzRjYWEwZTU1NjY4ZmZmZGQz
Li4xYjgwMzAyMjYzOTE2ODU5MjMyMDA4MDkzYWZhMjNmNjc3M2ZiMTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCkBAIC0xMzgsNiArMTM4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9y
bUluaXQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgYm9vbCBzaG91bGRVc2VDb250ZXh0CiAgICAg
ICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsK
ICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xv
clNwYWNlKCkpOwogICAgIH0KKworICAgIENHQWZmaW5lVHJhbnNmb3JtIGJhc2VEZXZpY2VNYXRy
aXggPSBDR0NvbnRleHRHZXRVc2VyU3BhY2VUb0RldmljZVNwYWNlVHJhbnNmb3JtKGNnQ29udGV4
dCk7CisgICAgQVNTRVJUKGFicyhiYXNlRGV2aWNlTWF0cml4LmEpID09IGFicyhiYXNlRGV2aWNl
TWF0cml4LmQpKTsKKyAgICBtX3BpeGVsU25hcHBpbmdGYWN0b3IgPSBiYXNlRGV2aWNlTWF0cml4
LmE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURlc3Ryb3koKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>