<?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>156993</bug_id>
          
          <creation_ts>2016-04-25 13:09:16 -0700</creation_ts>
          <short_desc>WebCore on Mac ignores the user&apos;s preferred region (country) while getting the language</short_desc>
          <delta_ts>2016-07-12 15:37:30 -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>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>90906</blocked>
    
    <blocked>159693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187035</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 13:09:16 -0700</bug_when>
    <thetext>It doesn&apos;t allow for the possibility of en-pl, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187036</commentid>
    <comment_count>1</comment_count>
      <attachid>277272</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 13:13:40 -0700</bug_when>
    <thetext>Created attachment 277272
the patch

I&apos;m still testing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187093</commentid>
    <comment_count>2</comment_count>
      <attachid>277272</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 15:54:27 -0700</bug_when>
    <thetext>Comment on attachment 277272
the patch

r=me, assuming that testing pans out.

Since this change is only to the part of the code that parses a preference from the system, I can&apos;t think of any way to test that without changing the preference on the system.

On the other hand, perhaps you could write a test that used window.internals just to call httpStyleLanguageCode with &quot;en-jp&quot; and verify that you get back &quot;en-jp&quot; -- along with other edge cases to do with &quot;_&quot; and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187094</commentid>
    <comment_count>3</comment_count>
      <attachid>277272</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 15:55:03 -0700</bug_when>
    <thetext>Comment on attachment 277272
the patch

&quot;en-pl&quot; I mean!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187095</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-25 15:55:19 -0700</bug_when>
    <thetext>I’m concerned that this could construct language codes that ICU does not know how to handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187099</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 16:02:16 -0700</bug_when>
    <thetext>Maybe we can verify our language-country pair, and fall back to the old behavior if verification fails:

(a) search for language and country in uloc_getISOLanguages and uloc_getISOCountries;

OR

(b) try some simple ICU API like uloc_getVariant and see if it returns an error code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187126</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 16:52:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Maybe we can verify our language-country pair, and fall back to the old
&gt; behavior if verification fails:
&gt; 
&gt; (a) search for language and country in uloc_getISOLanguages and
&gt; uloc_getISOCountries;
&gt; 
&gt; OR
&gt; 
&gt; (b) try some simple ICU API like uloc_getVariant and see if it returns an
&gt; error code.

Good idea, I&apos;ll try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187156</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 18:40:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Maybe we can verify our language-country pair, and fall back to the old
&gt; &gt; behavior if verification fails:
&gt; &gt; 
&gt; &gt; (a) search for language and country in uloc_getISOLanguages and
&gt; &gt; uloc_getISOCountries;
&gt; &gt; 
&gt; &gt; OR
&gt; &gt; 
&gt; &gt; (b) try some simple ICU API like uloc_getVariant and see if it returns an
&gt; &gt; error code.
&gt; 
&gt; Good idea, I&apos;ll try that.

Using uloc_getVariant() doesn&apos;t help.  It will gladly accept en-blahus for example, and it will return BLAHUS as the variant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187161</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 18:49:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Maybe we can verify our language-country pair, and fall back to the old
&gt; &gt; &gt; behavior if verification fails:
&gt; &gt; &gt; 
&gt; &gt; &gt; (a) search for language and country in uloc_getISOLanguages and
&gt; &gt; &gt; uloc_getISOCountries;
&gt; &gt; &gt; 
&gt; &gt; &gt; OR
&gt; &gt; &gt; 
&gt; &gt; &gt; (b) try some simple ICU API like uloc_getVariant and see if it returns an
&gt; &gt; &gt; error code.
&gt; &gt; 
&gt; &gt; Good idea, I&apos;ll try that.
&gt; 
&gt; Using uloc_getVariant() doesn&apos;t help.  It will gladly accept en-blahus for
&gt; example, and it will return BLAHUS as the variant.

Using uloc_getISOCountries works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187164</commentid>
    <comment_count>9</comment_count>
      <attachid>277302</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 18:52:24 -0700</bug_when>
    <thetext>Created attachment 277302
the patch

This version of the patch defends against the country not being recognized by ICU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187177</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 19:34:40 -0700</bug_when>
    <thetext>&gt; Using uloc_getVariant() doesn&apos;t help.  It will gladly accept en-blahus for
&gt; example, and it will return BLAHUS as the variant.

en-BLAHUS is my favorite en.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187182</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 19:38:39 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/WebCore/platform/mac/Language.mm:34:9: fatal error: &apos;unicode/unumsys.h&apos; file not found
#import &lt;unicode/unumsys.h&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187185</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-25 19:41:28 -0700</bug_when>
    <thetext>It looks like each project (WTF, JSC, WebCore, WebKit) includes its own copy of the icu headers in an icu folder. I&apos;m not sure why we do this -- but it seems like the canonical way to fix this bug is to copy unumsys.h to WebCore/icu/unicode/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187243</commentid>
    <comment_count>13</comment_count>
      <attachid>277329</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 21:23:09 -0700</bug_when>
    <thetext>Created attachment 277329
the patch

I don&apos;t need unumsys.h.  Checking if removing that import is enough to make all of the bots happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187364</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 08:27:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; It looks like each project (WTF, JSC, WebCore, WebKit) includes its own copy
&gt; of the icu headers in an icu folder. I&apos;m not sure why we do this -- but it
&gt; seems like the canonical way to fix this bug is to copy unumsys.h to
&gt; WebCore/icu/unicode/.

We have a set of ICU headers in WebKit only because OS X and iOS include the ICU library, but do not include the headers.

However, we should be able to arrange things so we don’t need a separate set in each project. Might involve some build system changes that might be non-obvious, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187377</commentid>
    <comment_count>15</comment_count>
      <attachid>277329</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-26 08:47:53 -0700</bug_when>
    <thetext>Comment on attachment 277329
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187381</commentid>
    <comment_count>16</comment_count>
      <attachid>277329</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 08:53:35 -0700</bug_when>
    <thetext>Comment on attachment 277329
the patch

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

&gt; Source/WebCore/platform/mac/Language.mm:141
&gt; +        // Detect if the country that was requested is one that ICU can handle.
&gt; +        const char* const* countries = uloc_getISOCountries();
&gt; +        const char* countryUTF8 = [countryCode UTF8String];
&gt; +        bool foundCountry = false;
&gt; +        for (unsigned i = 0; countries[i]; ++i) {
&gt; +            const char* possibleCountry = countries[i];
&gt; +            if (!strcmp(countryUTF8, possibleCountry)) {
&gt; +                foundCountry = true;
&gt; +                break;
&gt; +            }
&gt; +        }

I’d like to see this factored out into a helper function rather than written inline. The name of that little helper function could help make things clear enough that we wouldn’t even need the comment!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187407</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-26 09:17:41 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 277329 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277329&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/Language.mm:141
&gt; &gt; +        // Detect if the country that was requested is one that ICU can handle.
&gt; &gt; +        const char* const* countries = uloc_getISOCountries();
&gt; &gt; +        const char* countryUTF8 = [countryCode UTF8String];
&gt; &gt; +        bool foundCountry = false;
&gt; &gt; +        for (unsigned i = 0; countries[i]; ++i) {
&gt; &gt; +            const char* possibleCountry = countries[i];
&gt; &gt; +            if (!strcmp(countryUTF8, possibleCountry)) {
&gt; &gt; +                foundCountry = true;
&gt; &gt; +                break;
&gt; &gt; +            }
&gt; &gt; +        }
&gt; 
&gt; I’d like to see this factored out into a helper function rather than written
&gt; inline. The name of that little helper function could help make things clear
&gt; enough that we wouldn’t even need the comment!

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187411</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-26 09:22:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/200089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187435</commentid>
    <comment_count>19</comment_count>
      <attachid>277329</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-26 09:52:23 -0700</bug_when>
    <thetext>Comment on attachment 277329
the patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        the default region. That&apos;s wrong, since for example it doesn&apos;t respect the user&apos;s choice (in
&gt; +        System Preferences) to display dates/calenders/etc according to a different region (like how
&gt; +        I have my machine set to en-pl right now).

This doesn&apos;t seem right. &quot;en-pl&quot; is &quot;Polish variant of English&quot;, not &quot;English with Polish regional settings for things like date and time&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187439</commentid>
    <comment_count>20</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-04-26 10:05:40 -0700</bug_when>
    <thetext>This change causes the following API tests to fail:
  WKWebView.NavigatorLanguage
  WebKit1.NavigatorLanguage

It looks like the expected results may need to be updated.

&lt;https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20WK2%20%28Tests%29/builds/5452/steps/run-api-tests/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187440</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-26 10:10:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Comment on attachment 277329 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277329&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        the default region. That&apos;s wrong, since for example it doesn&apos;t respect the user&apos;s choice (in
&gt; &gt; +        System Preferences) to display dates/calenders/etc according to a different region (like how
&gt; &gt; +        I have my machine set to en-pl right now).
&gt; 
&gt; This doesn&apos;t seem right. &quot;en-pl&quot; is &quot;Polish variant of English&quot;, not
&gt; &quot;English with Polish regional settings for things like date and time&quot;.

That&apos;s not how our ICU interprets it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187445</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-04-26 10:17:21 -0700</bug_when>
    <thetext>Reverted r200089 for reason:

This change causes API test failures

Committed r200093: &lt;http://trac.webkit.org/changeset/200093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187449</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-26 10:20:39 -0700</bug_when>
    <thetext>We may be confusing locale and language codes when calling into ICU. Not super easy to untangle, given that Apple&apos;s locale is more of a dictionary than a simple string code, but ICU can also encode multiple preferences in a string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187505</commentid>
    <comment_count>24</comment_count>
      <attachid>277405</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-26 12:27:06 -0700</bug_when>
    <thetext>Created attachment 277405
the patch

Fixes the test expectations but also fixes what was probably a real bug: if AppleLanguage specifies a variant, then we might as well fall back to old behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187506</commentid>
    <comment_count>25</comment_count>
      <attachid>277405</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-26 12:31:28 -0700</bug_when>
    <thetext>Comment on attachment 277405
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187511</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-26 13:01:23 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/200105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187980</commentid>
    <comment_count>27</comment_count>
      <attachid>277405</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-27 15:39:34 -0700</bug_when>
    <thetext>Comment on attachment 277405
the patch

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

&gt; Tools/TestWebKitAPI/Tests/mac/NavigatorLanguage.mm:77
&gt; -    @[@&quot;ru&quot;, @&quot;ru-ru&quot;], // This does not match other browsers or CFNetwork&apos;s Accept-Language, which all use &quot;ru&quot;.
&gt; +    @[@&quot;ru&quot;, @&quot;ru-us&quot;], // This does not match other browsers or CFNetwork&apos;s Accept-Language, which all use &quot;ru&quot;.

I still don&apos;t understand this patch. This test change looks completely wrong, navigator.language should never return &quot;ru-us&quot;.

On my machine right here, the primary language is Russian, and the region is U.S. With these settings, navigator.language is ru-ru in shipping Safari. We shouldn&apos;t be changing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187985</commentid>
    <comment_count>28</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-27 15:43:52 -0700</bug_when>
    <thetext>navigator.language - &quot;Must return a valid BCP 47 language tag representing either a plausible language or the user’s most preferred language.&quot;

This is why even the existing &quot;ru-ru&quot; is a bug, it should be just &quot;ru&quot;. Regional settings don&apos;t go into navigator.language, that&apos;s why the new Intl API was necessary in the first place.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277272</attachid>
            <date>2016-04-25 13:13:40 -0700</date>
            <delta_ts>2016-04-25 18:52:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>3681</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA0LTI1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBvbiBNYWMgaWdub3Jl
cyB0aGUgdXNlcidzIHByZWZlcnJlZCByZWdpb24gKGNvdW50cnkpIHdoaWxlIGdldHRpbmcgdGhl
IGxhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJIGRvbid0IGtub3cgaG93IHRvIHRlc3QgdGhpcyBzaW5jZSB0aGlzIGRlcGVuZHMgb24gdXNl
ciBzZXR0aW5ncy4gV2ViQ29yZSB3YXMgcHJldmlvdXNseQorICAgICAgICBnZXR0aW5nIHRoZSBs
aXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMsIGFuZCBmb3IgZWFjaCBvbmUsIGRlZHVjaW5nIHRo
ZSBkZWZhdWx0IHJlZ2lvbi4KKyAgICAgICAgVGhhdCdzIHdyb25nLCBzaW5jZSBmb3IgZXhhbXBs
ZSBpdCBkb2Vzbid0IHJlc3BlY3QgdGhlIHVzZXIncyBjaG9pY2UgKGluIFN5c3RlbSBQcmVmZXJl
bmNlcykKKyAgICAgICAgdG8gZGlzcGxheSBkYXRlcy9jYWxlbmRlcnMvZXRjIGFjY29yZGluZyB0
byBhIGRpZmZlcmVudCByZWdpb24gKGxpa2UgaG93IEkgaGF2ZSBteSBtYWNoaW5lCisgICAgICAg
IHNldCB0byBlbi1wbCByaWdodCBub3cpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL0xhbmd1
YWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6aHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisKIDIwMTYtMDQt
MjUgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IEpTIGJpbmRpbmdzIHRlc3QgcmVzdWx0cyBhZnRlciByMjAwMDM3CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAyMDAwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgKyAodm9pZClsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlOihOUwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKE5T
U3RyaW5nICpsYW5ndWFnZSkKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKE5T
U3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCiB7CiAgICAgU0ludDMyIGxhbmd1
YWdlQ29kZTsKICAgICBTSW50MzIgcmVnaW9uQ29kZTsgCkBAIC04NywxMyArODcsMTIgQEAgc3Rh
dGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNTdAogCiAgICAgLy8gTWFrZSB0aGUg
c3RyaW5nIGxvd2VyY2FzZS4KICAgICBOU1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0g
W2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50
cnlDb2RlID0gW2NvdW50cnkgbG93ZXJjYXNlU3RyaW5nXTsKIAotICAgIC8vIFR1cm4gYSAnXycg
aW50byBhICctJyBpZiBpdCBhcHBlYXJzIGFmdGVyIGEgMi1sZXR0ZXIgbGFuZ3VhZ2UgY29kZS4K
LSAgICBpZiAoW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBsZW5ndGhdID49IDMgJiYgW2xvd2VyY2Fz
ZUxhbmd1YWdlQ29kZSBjaGFyYWN0ZXJBdEluZGV4OjJdID09ICdfJykgewotICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlU3RyaW5nPiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93
ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11dGFibGVDb3B5XSk7Ci0gICAgICAgIFttdXRhYmxlTGFuZ3Vh
Z2VDb2RlLmdldCgpIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3
aXRoU3RyaW5nOkAiLSJdOwotICAgICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQo
KTsKLSAgICB9CisgICAgLy8gSWYgd2Ugc2VlIGEgIl8iIGFmdGVyIGEgMi1sZXR0ZXIgbGFuZ3Vh
Z2UgY29kZSwgcmVwbGFjZSB0aGUgIl8iIGFuZCB3aGF0ZXZlciBjb21lcyBhZnRlciBpdAorICAg
IC8vIHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBjb3VudHJ5IGNvZGUuCisgICAgaWYgKFtsb3dl
cmNhc2VMYW5ndWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUg
Y2hhcmFjdGVyQXRJbmRleDoyXSA9PSAnXycpCisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07CiAKICAg
ICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOwogfQpAQCAtMTEzLDEzICsxMTIsMTYgQEAg
VmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZwogICAgIFZlY3RvcjxTdHJp
bmc+JiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKICAg
ICBpZiAodXNlclByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmV0YWlu
UHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7
CisgICAgICAgIENGU3RyaW5nUmVmIGNvdW50cnlDb2RlID0gKENGU3RyaW5nUmVmKUNGTG9jYWxl
R2V0VmFsdWUobG9jYWxlLmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSk7CisgICAgICAgIAog
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzID0gYWRvcHRDRihDRkxvY2Fs
ZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CiAgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOwogICAgICAgICBpZiAoIWxhbmd1
YWdlQ291bnQpCiAgICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4i
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBs
YW5ndWFnZUNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdl
cy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChOU1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOworICAgICAgICAgICAgICAgIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMuYXBwZW5kKGh0dHBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSksIChOU1N0cmluZyAqKWNv
dW50cnlDb2RlKSk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>
<flag name="review"
          id="301494"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277302</attachid>
            <date>2016-04-25 18:52:24 -0700</date>
            <delta_ts>2016-04-25 21:23:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5323</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTI1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBvbiBNYWMgaWdub3Jl
cyB0aGUgdXNlcidzIHByZWZlcnJlZCByZWdpb24gKGNvdW50cnkpIHdoaWxlIGdldHRpbmcgdGhl
IGxhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJIGRvbid0IGtub3cgaG93IHRvIHRlc3QgdGhpcyBzaW5jZSB0aGlzIGRlcGVuZHMgb24gdXNl
ciBzZXR0aW5ncy4KKyAgICAgICAgCisgICAgICAgIFdlYkNvcmUgd2FzIHByZXZpb3VzbHkgZ2V0
dGluZyB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzLCBhbmQgZm9yIGVhY2ggb25lLCBk
ZWR1Y2luZworICAgICAgICB0aGUgZGVmYXVsdCByZWdpb24uIFRoYXQncyB3cm9uZywgc2luY2Ug
Zm9yIGV4YW1wbGUgaXQgZG9lc24ndCByZXNwZWN0IHRoZSB1c2VyJ3MgY2hvaWNlIChpbgorICAg
ICAgICBTeXN0ZW0gUHJlZmVyZW5jZXMpIHRvIGRpc3BsYXkgZGF0ZXMvY2FsZW5kZXJzL2V0YyBh
Y2NvcmRpbmcgdG8gYSBkaWZmZXJlbnQgcmVnaW9uIChsaWtlIGhvdworICAgICAgICBJIGhhdmUg
bXkgbWFjaGluZSBzZXQgdG8gZW4tcGwgcmlnaHQgbm93KS4KKyAgICAgICAgCisgICAgICAgIEl0
IG1pZ2h0IGJlIHBvc3NpYmxlIGZvciB0aGUgY291bnRyeSBjb2RlIHdlIGdldCB2aWEga0NGTG9j
YWxlQ291bnRyeUNvZGUgdG8gYmUgc29tZXRoaW5nCisgICAgICAgIHRoYXQgb3VyIElDVSBkb2Vz
bid0IGhhbmRsZS4gVG8gZGVmZW5kIGFnYWluc3QgdGhpcywgd2Ugc2VhcmNoIGZvciB0aGUgcmVz
dWx0aW5nIGNvdW50cnkKKyAgICAgICAgY29kZSBpbiBpY3UncyBJU08gY291bnRyaWVzIGxpc3Qu
IElmIGl0IGRvZXNuJ3QgYXBwZWFyIGluIHRoYXQgbGlzdCwgd2UgZmFsbCBiYWNrIG9uIG9sZAor
ICAgICAgICBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6Omh0dHBTdHlsZUxhbmd1YWdlQ29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorCiAyMDE2LTA0LTI1ICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBKUyBiaW5k
aW5ncyB0ZXN0IHJlc3VsdHMgYWZ0ZXIgcjIwMDAzNwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIw
MDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0ICJD
RkJ1bmRsZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0
IDxtdXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgorI2ltcG9ydCA8dW5pY29kZS91bnVt
c3lzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNjksNyArNzEsNyBAQCArICh2b2lk
KWxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2U6KE5TCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdl
KQorc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdl
LCBOU1N0cmluZyAqY291bnRyeSkKIHsKICAgICBTSW50MzIgbGFuZ3VhZ2VDb2RlOwogICAgIFNJ
bnQzMiByZWdpb25Db2RlOyAKQEAgLTg3LDkgKzg5LDIwIEBAIHN0YXRpYyBTdHJpbmcgaHR0cFN0
eWxlTGFuZ3VhZ2VDb2RlKE5TU3QKIAogICAgIC8vIE1ha2UgdGhlIHN0cmluZyBsb3dlcmNhc2Uu
CiAgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUxhbmd1YWdlQ29kZSA9IFtsYW5ndWFnZSBsb3dlcmNh
c2VTdHJpbmddOworICAgIE5TU3RyaW5nICpsb3dlcmNhc2VDb3VudHJ5Q29kZSA9IFtjb3VudHJ5
IGxvd2VyY2FzZVN0cmluZ107CiAKLSAgICAvLyBUdXJuIGEgJ18nIGludG8gYSAnLScgaWYgaXQg
YXBwZWFycyBhZnRlciBhIDItbGV0dGVyIGxhbmd1YWdlIGNvZGUuCisgICAgCisgICAgLy8gSWYg
d2Ugc2VlIGEgIl8iIGFmdGVyIGEgMi1sZXR0ZXIgbGFuZ3VhZ2UgY29kZToKKyAgICAvLyBJZiB0
aGUgY291bnRyeSBpcyB2YWxpZCwgcmVwbGFjZSB0aGUgIl8iIGFuZCB3aGF0ZXZlciBjb21lcyBh
ZnRlciBpdCB3aXRoICItIiBmb2xsb3dlZCBieSB0aGUKKyAgICAvLyBjb3VudHJ5IGNvZGUuCisg
ICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICItIiBhbmQgdXNlIHdoYXRl
dmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRp
b25JbmZvKCkgcmV0dXJuZWQuCiAgICAgaWYgKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbGVuZ3Ro
XSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSA9PSAn
XycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkpCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC0lQCIsIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgc3Vic3Ry
aW5nV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAsIDIpXSwgbG93ZXJjYXNlQ291bnRyeUNvZGVdOwor
ICAgICAgICAKKyAgICAgICAgLy8gRmFsbCBiYWNrIHRvIG9sZGVyIGJlaGF2aW9yLCB3aGljaCB1
c2VkIHRoZSBvcmlnaW5hbCBsYW5ndWFnZS1iYXNlZCBjb2RlIGJ1dCBqdXN0IGNoYW5nZWQKKyAg
ICAgICAgLy8gdGhlICJfIiB0byBhICItIi4KICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0
cmluZz4gbXV0YWJsZUxhbmd1YWdlQ29kZSA9IGFkb3B0TlMoW2xvd2VyY2FzZUxhbmd1YWdlQ29k
ZSBtdXRhYmxlQ29weV0pOwogICAgICAgICBbbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKSByZXBs
YWNlQ2hhcmFjdGVyc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMiwgMSkgd2l0aFN0cmluZzpAIi0iXTsK
ICAgICAgICAgcmV0dXJuIG11dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCk7CkBAIC0xMTMsMTMgKzEy
NiwzMCBAQCBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5nCiAgICAgVmVj
dG9yPFN0cmluZz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMo
KTsKIAogICAgIGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgeworICAgICAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3Vy
cmVudCgpKTsKKyAgICAgICAgTlNTdHJpbmcgKmNvdW50cnlDb2RlID0gKE5TU3RyaW5nICopQ0ZM
b2NhbGVHZXRWYWx1ZShsb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUNvdW50cnlDb2RlKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIERldGVjdCBpZiB0aGUgY291bnRyeSB0aGF0IHdhcyByZXF1ZXN0ZWQg
aXMgb25lIHRoYXQgSUNVIGNhbiBoYW5kbGUuCisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBj
b3VudHJpZXMgPSB1bG9jX2dldElTT0NvdW50cmllcygpOworICAgICAgICBjb25zdCBjaGFyKiBj
b3VudHJ5VVRGOCA9IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICAgICAgYm9vbCBmb3Vu
ZENvdW50cnkgPSBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgY291bnRyaWVz
W2ldOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvc3NpYmxlQ291bnRyeSA9IGNv
dW50cmllc1tpXTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJs
ZUNvdW50cnkpKSB7CisgICAgICAgICAgICAgICAgZm91bmRDb3VudHJ5ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAo
IWZvdW5kQ291bnRyeSkKKyAgICAgICAgICAgIGNvdW50cnlDb2RlID0gbmlsOworICAgICAgICAK
ICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyA9IGFkb3B0Q0YoQ0ZMb2Nh
bGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291
bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKICAgICAgICAgaWYgKCFsYW5n
dWFnZUNvdW50KQogICAgICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVu
Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwg
bGFuZ3VhZ2VDb3VudDsgaSsrKQotICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuYXBwZW5kKGh0dHBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKyAgICAgICAgICAgICAgICB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChodHRwU3R5bGVMYW5ndWFnZUNvZGUoKE5TU3RyaW5nICop
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkpLCBjb3VudHJ5Q29kZSkp
OwogICAgICAgICB9CiAgICAgfQogCg==
</data>
<flag name="review"
          id="301527"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277329</attachid>
            <date>2016-04-25 21:23:09 -0700</date>
            <delta_ts>2016-04-26 12:27:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTI1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBvbiBNYWMgaWdub3Jl
cyB0aGUgdXNlcidzIHByZWZlcnJlZCByZWdpb24gKGNvdW50cnkpIHdoaWxlIGdldHRpbmcgdGhl
IGxhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJIGRvbid0IGtub3cgaG93IHRvIHRlc3QgdGhpcyBzaW5jZSB0aGlzIGRlcGVuZHMgb24gdXNl
ciBzZXR0aW5ncy4KKyAgICAgICAgCisgICAgICAgIFdlYkNvcmUgd2FzIHByZXZpb3VzbHkgZ2V0
dGluZyB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzLCBhbmQgZm9yIGVhY2ggb25lLCBk
ZWR1Y2luZworICAgICAgICB0aGUgZGVmYXVsdCByZWdpb24uIFRoYXQncyB3cm9uZywgc2luY2Ug
Zm9yIGV4YW1wbGUgaXQgZG9lc24ndCByZXNwZWN0IHRoZSB1c2VyJ3MgY2hvaWNlIChpbgorICAg
ICAgICBTeXN0ZW0gUHJlZmVyZW5jZXMpIHRvIGRpc3BsYXkgZGF0ZXMvY2FsZW5kZXJzL2V0YyBh
Y2NvcmRpbmcgdG8gYSBkaWZmZXJlbnQgcmVnaW9uIChsaWtlIGhvdworICAgICAgICBJIGhhdmUg
bXkgbWFjaGluZSBzZXQgdG8gZW4tcGwgcmlnaHQgbm93KS4KKyAgICAgICAgCisgICAgICAgIEl0
IG1pZ2h0IGJlIHBvc3NpYmxlIGZvciB0aGUgY291bnRyeSBjb2RlIHdlIGdldCB2aWEga0NGTG9j
YWxlQ291bnRyeUNvZGUgdG8gYmUgc29tZXRoaW5nCisgICAgICAgIHRoYXQgb3VyIElDVSBkb2Vz
bid0IGhhbmRsZS4gVG8gZGVmZW5kIGFnYWluc3QgdGhpcywgd2Ugc2VhcmNoIGZvciB0aGUgcmVz
dWx0aW5nIGNvdW50cnkKKyAgICAgICAgY29kZSBpbiBpY3UncyBJU08gY291bnRyaWVzIGxpc3Qu
IElmIGl0IGRvZXNuJ3QgYXBwZWFyIGluIHRoYXQgbGlzdCwgd2UgZmFsbCBiYWNrIG9uIG9sZAor
ICAgICAgICBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6Omh0dHBTdHlsZUxhbmd1YWdlQ29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorCiAyMDE2LTA0LTI1ICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBKUyBiaW5k
aW5ncyB0ZXN0IHJlc3VsdHMgYWZ0ZXIgcjIwMDAzNwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIw
MDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJD
RkJ1bmRsZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0
IDxtdXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KQEAgLTY5LDcgKzcwLDcgQEAgKyAodm9pZClsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdl
OihOUwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFu
Z3VhZ2VDb2RlKE5TU3RyaW5nICpsYW5ndWFnZSkKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFu
Z3VhZ2VDb2RlKE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCiB7CiAgICAg
U0ludDMyIGxhbmd1YWdlQ29kZTsKICAgICBTSW50MzIgcmVnaW9uQ29kZTsgCkBAIC04Nyw5ICs4
OCwyMCBAQCBzdGF0aWMgU3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShOU1N0CiAKICAgICAv
LyBNYWtlIHRoZSBzdHJpbmcgbG93ZXJjYXNlLgogICAgIE5TU3RyaW5nICpsb3dlcmNhc2VMYW5n
dWFnZUNvZGUgPSBbbGFuZ3VhZ2UgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICBOU1N0cmluZyAqbG93
ZXJjYXNlQ291bnRyeUNvZGUgPSBbY291bnRyeSBsb3dlcmNhc2VTdHJpbmddOwogCi0gICAgLy8g
VHVybiBhICdfJyBpbnRvIGEgJy0nIGlmIGl0IGFwcGVhcnMgYWZ0ZXIgYSAyLWxldHRlciBsYW5n
dWFnZSBjb2RlLgorICAgIAorICAgIC8vIElmIHdlIHNlZSBhICJfIiBhZnRlciBhIDItbGV0dGVy
IGxhbmd1YWdlIGNvZGU6CisgICAgLy8gSWYgdGhlIGNvdW50cnkgaXMgdmFsaWQsIHJlcGxhY2Ug
dGhlICJfIiBhbmQgd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgd2l0aCAiLSIgZm9sbG93ZWQgYnkg
dGhlCisgICAgLy8gY291bnRyeSBjb2RlLgorICAgIC8vIE90aGVyd2lzZSwgcmVwbGFjZSB0aGUg
Il8iIHdpdGggYSAiLSIgYW5kIHVzZSB3aGF0ZXZlciBjb3VudHJ5CisgICAgLy8gQ0ZCdW5kbGVD
b3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0aW9uSW5mbygpIHJldHVybmVkLgogICAgIGlmIChb
bG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGxlbmd0aF0gPj0gMyAmJiBbbG93ZXJjYXNlTGFuZ3VhZ2VD
b2RlIGNoYXJhY3RlckF0SW5kZXg6Ml0gPT0gJ18nKSB7CisgICAgICAgIGlmIChjb3VudHJ5KQor
ICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJUAiLCBb
bG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIHN1YnN0cmluZ1dpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCAy
KV0sIGxvd2VyY2FzZUNvdW50cnlDb2RlXTsKKyAgICAgICAgCisgICAgICAgIC8vIEZhbGwgYmFj
ayB0byBvbGRlciBiZWhhdmlvciwgd2hpY2ggdXNlZCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UtYmFz
ZWQgY29kZSBidXQganVzdCBjaGFuZ2VkCisgICAgICAgIC8vIHRoZSAiXyIgdG8gYSAiLSIuCiAg
ICAgICAgIFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+IG11dGFibGVMYW5ndWFnZUNvZGUgPSBh
ZG9wdE5TKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbXV0YWJsZUNvcHldKTsKICAgICAgICAgW211
dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCkgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJh
bmdlKDIsIDEpIHdpdGhTdHJpbmc6QCItIl07CiAgICAgICAgIHJldHVybiBtdXRhYmxlTGFuZ3Vh
Z2VDb2RlLmdldCgpOwpAQCAtMTEzLDEzICsxMjUsMzAgQEAgVmVjdG9yPFN0cmluZz4gcGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZwogICAgIFZlY3RvcjxTdHJpbmc+JiB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKICAgICBpZiAodXNlclByZWZlcnJlZExh
bmd1YWdlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2Nh
bGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgICAgIE5TU3RyaW5nICpj
b3VudHJ5Q29kZSA9IChOU1N0cmluZyAqKUNGTG9jYWxlR2V0VmFsdWUobG9jYWxlLmdldCgpLCBr
Q0ZMb2NhbGVDb3VudHJ5Q29kZSk7CisgICAgICAgIAorICAgICAgICAvLyBEZXRlY3QgaWYgdGhl
IGNvdW50cnkgdGhhdCB3YXMgcmVxdWVzdGVkIGlzIG9uZSB0aGF0IElDVSBjYW4gaGFuZGxlLgor
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVzID0gdWxvY19nZXRJU09Db3VudHJp
ZXMoKTsKKyAgICAgICAgY29uc3QgY2hhciogY291bnRyeVVURjggPSBbY291bnRyeUNvZGUgVVRG
OFN0cmluZ107CisgICAgICAgIGJvb2wgZm91bmRDb3VudHJ5ID0gZmFsc2U7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGNvdW50cmllc1tpXTsgKytpKSB7CisgICAgICAgICAgICBjb25z
dCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBjb3VudHJpZXNbaV07CisgICAgICAgICAgICBpZiAo
IXN0cmNtcChjb3VudHJ5VVRGOCwgcG9zc2libGVDb3VudHJ5KSkgeworICAgICAgICAgICAgICAg
IGZvdW5kQ291bnRyeSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZENvdW50cnkpCisgICAgICAgICAgICBj
b3VudHJ5Q29kZSA9IG5pbDsKKyAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVm
PiBsYW5ndWFnZXMgPSBhZG9wdENGKENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpKTsK
ICAgICAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGxhbmd1YWdl
cy5nZXQoKSk7CiAgICAgICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKICAgICAgICAgICAgIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKCJlbiIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkrKykKLSAgICAgICAg
ICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChodHRwU3R5bGVMYW5ndWFnZUNv
ZGUoKE5TU3RyaW5nICopQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkp
KSk7CisgICAgICAgICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0
eWxlTGFuZ3VhZ2VDb2RlKChOU1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3Vh
Z2VzLmdldCgpLCBpKSwgY291bnRyeUNvZGUpKTsKICAgICAgICAgfQogICAgIH0KIAo=
</data>
<flag name="review"
          id="301554"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277405</attachid>
            <date>2016-04-26 12:27:06 -0700</date>
            <delta_ts>2016-04-26 12:31:28 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8598</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDA5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA0LTI2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBvbiBNYWMgaWdub3Jl
cyB0aGUgdXNlcidzIHByZWZlcnJlZCByZWdpb24gKGNvdW50cnkpIHdoaWxlIGdldHRpbmcgdGhl
IGxhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGlzIHRlc3RlZCBieSB0aGUgTmF2aWdhdG9yTGFuZ3VhZ2UgQVBJIHRlc3QuCisgICAg
ICAgIAorICAgICAgICBXZWJDb3JlIHdhcyBwcmV2aW91c2x5IGdldHRpbmcgdGhlIGxpc3Qgb2Yg
cHJlZmVycmVkIGxhbmd1YWdlcywgYW5kIGZvciBlYWNoIG9uZSwgZGVkdWNpbmcKKyAgICAgICAg
dGhlIGRlZmF1bHQgcmVnaW9uLiBUaGF0J3Mgd3JvbmcsIHNpbmNlIGZvciBleGFtcGxlIGl0IGRv
ZXNuJ3QgcmVzcGVjdCB0aGUgdXNlcidzIGNob2ljZSAoaW4KKyAgICAgICAgU3lzdGVtIFByZWZl
cmVuY2VzKSB0byBkaXNwbGF5IGRhdGVzL2NhbGVuZGVycy9ldGMgYWNjb3JkaW5nIHRvIGEgZGlm
ZmVyZW50IHJlZ2lvbiAobGlrZSBob3cKKyAgICAgICAgSSBoYXZlIG15IG1hY2hpbmUgc2V0IHRv
IGVuLXBsIHJpZ2h0IG5vdykuCisgICAgICAgIAorICAgICAgICBJdCBtaWdodCBiZSBwb3NzaWJs
ZSBmb3IgdGhlIGNvdW50cnkgY29kZSB3ZSBnZXQgdmlhIGtDRkxvY2FsZUNvdW50cnlDb2RlIHRv
IGJlIHNvbWV0aGluZworICAgICAgICB0aGF0IG91ciBJQ1UgZG9lc24ndCBoYW5kbGUuIFRvIGRl
ZmVuZCBhZ2FpbnN0IHRoaXMsIHdlIHNlYXJjaCBmb3IgdGhlIHJlc3VsdGluZyBjb3VudHJ5Cisg
ICAgICAgIGNvZGUgaW4gSUNVJ3MgSVNPIGNvdW50cmllcyBsaXN0LiBJZiBpdCBkb2Vzbid0IGFw
cGVhciBpbiB0aGF0IGxpc3QsIHdlIGZhbGwgYmFjayBvbiBvbGQKKyAgICAgICAgYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAgIChXZWJDb3Jl
OjpodHRwU3R5bGVMYW5ndWFnZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZElDVUNv
dW50cnlDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcyk6CisKIDIwMTYtMDQtMjYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIEZvbnRQbGF0Zm9ybURhdGEgaW1tdXRhYmxlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAyMDAwOTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbXBvcnQgIkNGQnVuZGxlU1BJLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgPG11dGV4PgorI2ltcG9ydCA8dW5pY29kZS91bG9jLmg+CiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNjksMTIgKzcwLDE0IEBAICsgKHZvaWQpbGFuZ3VhZ2VQ
cmVmZXJlbmNlc0RpZENoYW5nZTooTlMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
U3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShOU1N0cmluZyAqbGFuZ3VhZ2UpCitzdGF0aWMg
U3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShOU1N0cmluZyAqbGFuZ3VhZ2UsIE5TU3RyaW5n
ICpjb3VudHJ5KQogewogICAgIFNJbnQzMiBsYW5ndWFnZUNvZGU7CiAgICAgU0ludDMyIHJlZ2lv
bkNvZGU7IAogICAgIFNJbnQzMiBzY3JpcHRDb2RlOyAKLSAgICBDRlN0cmluZ0VuY29kaW5nIHN0
cmluZ0VuY29kaW5nOyAKKyAgICBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOworICAg
IAorICAgIGJvb2wgbGFuZ3VhZ2VEaWRTcGVjaWZ5RXhwbGljaXRWYXJpYW50ID0gW2xhbmd1YWdl
IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OltOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRo
Q2hhcmFjdGVyc0luU3RyaW5nOkAiLV8iXV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIHZlcnkgd3Jvbmc6CiAgICAgLy8gMS4g
VGhlcmUgaXMgbm8gcmVhc29uIHdoeSBDRkJ1bmRsZSBsb2NhbGl6YXRpb24gbmFtZXMgd291bGQg
YmUgYXQgYWxsIHJlbGF0ZWQgdG8gbGFuZ3VhZ2UgbmFtZXMgYXMgdXNlZCBvbiB0aGUgV2ViLgpA
QCAtODcsOSArOTAsMTkgQEAgc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNT
dAogCiAgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KICAgICBOU1N0cmluZyAqbG93
ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107Ci0KLSAgICAv
LyBUdXJuIGEgJ18nIGludG8gYSAnLScgaWYgaXQgYXBwZWFycyBhZnRlciBhIDItbGV0dGVyIGxh
bmd1YWdlIGNvZGUuCisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50
cnkgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIg
YSAyLWxldHRlciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlk
IGFuZCB0aGUgbGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUg
Il8iIGFuZAorICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2Vk
IGJ5IHRoZSBjb3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIg
d2l0aCBhICItIiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlM
b2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCiAgICAgaWYgKFtsb3dl
cmNhc2VMYW5ndWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUg
Y2hhcmFjdGVyQXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxh
bmd1YWdlRGlkU3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBz
dWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29k
ZV07CisgICAgICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdo
aWNoIHVzZWQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdl
ZAorICAgICAgICAvLyB0aGUgIl8iIHRvIGEgIi0iLgogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlU3RyaW5nPiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3Vh
Z2VDb2RlIG11dGFibGVDb3B5XSk7CiAgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgp
IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAi
LSJdOwogICAgICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKQEAgLTk4LDYg
KzExMSwxOCBAQCBzdGF0aWMgU3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShOU1N0CiAgICAg
cmV0dXJuIGxvd2VyY2FzZUxhbmd1YWdlQ29kZTsKIH0KIAorc3RhdGljIGJvb2wgaXNWYWxpZElD
VUNvdW50cnlDb2RlKE5TU3RyaW5nKiBjb3VudHJ5Q29kZSkKK3sKKyAgICBjb25zdCBjaGFyKiBj
b25zdCogY291bnRyaWVzID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFy
KiBjb3VudHJ5VVRGOCA9IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBjb3VudHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3Nz
aWJsZUNvdW50cnkgPSBjb3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlV
VEY4LCBwb3NzaWJsZUNvdW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzKCkKIHsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMTMsMTMgKzEzOCwxOSBA
QCBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5nCiAgICAgVmVjdG9yPFN0
cmluZz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAog
ICAgIGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgp
KTsKKyAgICAgICAgTlNTdHJpbmcgKmNvdW50cnlDb2RlID0gKE5TU3RyaW5nICopQ0ZMb2NhbGVH
ZXRWYWx1ZShsb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUNvdW50cnlDb2RlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghaXNWYWxpZElDVUNvdW50cnlDb2RlKGNvdW50cnlDb2RlKSkKKyAgICAgICAg
ICAgIGNvdW50cnlDb2RlID0gbmlsOworICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGxhbmd1YWdlcyA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2Vz
KCkpOwogICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFu
Z3VhZ2VzLmdldCgpKTsKICAgICAgICAgaWYgKCFsYW5ndWFnZUNvdW50KQogICAgICAgICAgICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVuIik7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgbGFuZ3VhZ2VDb3VudDsgaSsrKQotICAg
ICAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKGh0dHBTdHlsZUxhbmd1
YWdlQ29kZSgoTlNTdHJpbmcgKilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQo
KSwgaSkpKTsKKyAgICAgICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCho
dHRwU3R5bGVMYW5ndWFnZUNvZGUoKE5TU3RyaW5nICopQ0ZBcnJheUdldFZhbHVlQXRJbmRleChs
YW5ndWFnZXMuZ2V0KCksIGkpLCBjb3VudHJ5Q29kZSkpOwogICAgICAgICB9CiAgICAgfQogCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDAxMDIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNi0wNC0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYkNvcmUgb24gTWFjIGlnbm9yZXMgdGhlIHVzZXIncyBwcmVmZXJyZWQgcmVnaW9u
IChjb3VudHJ5KSB3aGlsZSBnZXR0aW5nIHRoZSBsYW5ndWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2OTkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSB0ZXN0IGV4cGVjdGF0aW9u
cyBmb3IgdGhpcyB0ZXN0LiBJZiB0aGUgdmFyaWFudCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZp
ZWQgaW4KKyAgICAgICAgdGhlIEFwcGxlTGFuZ3VhZ2UsIHRoZW4gd2UgdXNlIHRoZSBsb2NhbGUn
cyBjb3VudHJ5IGNvZGUsIHdoaWNoIHRoaXMgdGVzdCBhc3N1bWVzIGlzIFVTLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTmF2aWdhdG9yTGFuZ3VhZ2UubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpsYW5ndWFnZUZvclN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE2LTA0LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgYnVpbGQgZmxhZyBmb3IgdGVtcGxhdGUg
ZWxlbWVudHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL05hdmlnYXRvckxh
bmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL05h
dmlnYXRvckxhbmd1YWdlLm1tCShyZXZpc2lvbiAyMDAwOTcpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9OYXZpZ2F0b3JMYW5ndWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTcgKzY4LDIxIEBAIHN0YXRpYyBOU1N0cmluZyAqbGFuZ3VhZ2VGb3JTeXN0ZW1MYW5ndWEKICAg
ICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6
QCJuYXZpZ2F0b3IubGFuZ3VhZ2UiXTsKIH0KIAotLy8gVGhlc2UgdGVzdHMgZG9jdW1lbnQgY3Vy
cmVudCBiZWhhdmlvci4gU29tZSBvZiB0aGUgY3VycmVudCByZXN1bHRzIG1heSBub3QgYmUgcmln
aHQuCisvLyBUaGVzZSB0ZXN0cyBkb2N1bWVudCBjdXJyZW50IGJlaGF2aW9yLiBTb21lIG9mIHRo
ZSBjdXJyZW50IHJlc3VsdHMgbWF5IG5vdCBiZSByaWdodC4gTm90ZSB0aGF0CisvLyB0aGlzIG9k
ZGx5IGFzc3VtZXMgdGhhdCB0aGUgdXNlciBoYXMgc2V0IHRoZWlyIGxhbmd1YWdlIHRvIHNvbWV0
aGluZyBwb3NzaWJseS1mb3JlaWduIGJ1dCBzdGlsbAorLy8gbGVmdCB0aGVpciByZWdpb24gYXMg
VVMuIEhlbmNlIHRoZSAiLXVzIiB2YXJpYW50cy4KKy8vIEZJWE1FOiBUaGVzZSB0ZXN0cyBzaG91
bGQgYWxzbyBzZXQgdGhlIHJlZ2lvbiB0byBzZWUgaG93IFdlYktpdCB3aWxsIGhhbmRsZSB0aGF0
LgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzAzOQogTlNB
cnJheSAqdGVzdHMgPSBAWwotICAgIEBbQCJydSIsIEAicnUtcnUiXSwgLy8gVGhpcyBkb2VzIG5v
dCBtYXRjaCBvdGhlciBicm93c2VycyBvciBDRk5ldHdvcmsncyBBY2NlcHQtTGFuZ3VhZ2UsIHdo
aWNoIGFsbCB1c2UgInJ1Ii4KKyAgICBAW0AicnUiLCBAInJ1LXVzIl0sIC8vIFRoaXMgZG9lcyBu
b3QgbWF0Y2ggb3RoZXIgYnJvd3NlcnMgb3IgQ0ZOZXR3b3JrJ3MgQWNjZXB0LUxhbmd1YWdlLCB3
aGljaCBhbGwgdXNlICJydSIuCiAgICAgQFtAImVuIiwgQCJlbi11cyJdLAogICAgIEBbQCJlbi1H
QiIsIEAiZW4tZ2IiXSwKICAgICBAW0AiZW4tVVMiLCBAImVuLXVzIl0sCi0gICAgQFtAImphIiwg
QCJqYS1qcCJdLAotICAgIEBbQCJoaSIsIEAiaGktaW4iXSwKKyAgICBAW0AiamEiLCBAImphLXVz
Il0sCisgICAgQFtAImhpIiwgQCJoaS11cyJdLAogICAgIEBbQCJ6aC1UVyIsIEAiemgtdHciXSwg
Ly8gVGhpcyBzaG91bGQgbm90IG1hcCB0byB0aGUgZ2VuZXJpYyB6aC1oYW50LCBzZWUgcmRhcjov
L3Byb2JsZW0vMjEzOTUxODAuCiAgICAgQFtAInpoLUhLIiwgQCJ6aC10dyJdLAotICAgIEBbQCJl
cyIsIEAiZXMtZXMiXSwKKyAgICBAW0AiZXMiLCBAImVzLXVzIl0sCiAgICAgQFtAImVzLU1YIiwg
QCJlcy14bCJdLAogICAgIEBbQCJlcy1FUyIsIEAiZXMtZXMiXSwKICAgICBAW0AiZXMtNDE5Iiwg
QCJlcy14bCJdLApAQCAtODYsNyArOTAsNyBAQCBOU0FycmF5ICp0ZXN0cyA9IEBbCiAgICAgQFtA
InpoLUhhbnQiLCBAInpoLXR3Il0sCiAgICAgQFtAInB0LUJSIiwgQCJwdC1iciJdLAogICAgIEBb
QCJwdC1QVCIsIEAicHQtcHQiXSwKLSAgICBAW0AiZnIiLCBAImZyLWZyIl0sCisgICAgQFtAImZy
IiwgQCJmci11cyJdLAogICAgIEBbQCJmci1DQSIsIEAiZnItY2EiXSwKIF07CiAK
</data>
<flag name="review"
          id="301619"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>