<?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>156128</bug_id>
          
          <creation_ts>2016-04-01 21:14:48 -0700</creation_ts>
          <short_desc>Cleanup DataDetection.mm a little bit</short_desc>
          <delta_ts>2016-04-03 11:22:09 -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>New Bugs</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1180024</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-04-01 21:14:48 -0700</bug_when>
    <thetext>Cleanup DataDetection.mm a little bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180026</commentid>
    <comment_count>1</comment_count>
      <attachid>275460</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-04-01 21:20:10 -0700</bug_when>
    <thetext>Created attachment 275460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180069</commentid>
    <comment_count>2</comment_count>
      <attachid>275473</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-04-02 11:22:33 -0700</bug_when>
    <thetext>Created attachment 275473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180071</commentid>
    <comment_count>3</comment_count>
      <attachid>275473</attachid>
    <who name="">mitz</who>
    <bug_when>2016-04-02 11:28:22 -0700</bug_when>
    <thetext>Comment on attachment 275473
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:49
&gt; +#import &lt;wtf/text/StringBuilder.h&gt;
&gt; +
&gt; +#import &quot;DataDetectorsCoreSoftLink.h&quot;

Why is this separate? Some ordering requirement?

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:339
&gt; +        return String::number((unsigned long)[path indexAtPosition:0]);

Is the cast needed here?

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:346
&gt; +    case 2: {
&gt; +        StringBuilder stringBuilder;
&gt; +        stringBuilder.appendNumber((unsigned long)[path indexAtPosition:0]);
&gt; +        stringBuilder.append(&apos;/&apos;);
&gt; +        stringBuilder.appendNumber((unsigned long)[path indexAtPosition:1]);
&gt; +        return stringBuilder.toString();
&gt; +    }

What are we gaining from special-casing 2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180072</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-04-02 11:29:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 275473 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275473&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/DataDetection.mm:49
&gt; &gt; +#import &lt;wtf/text/StringBuilder.h&gt;
&gt; &gt; +
&gt; &gt; +#import &quot;DataDetectorsCoreSoftLink.h&quot;
&gt; 
&gt; Why is this separate? Some ordering requirement?

The style checker yelled at me for it. I actually don&apos;t know why it wants it there.

&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/DataDetection.mm:339
&gt; &gt; +        return String::number((unsigned long)[path indexAtPosition:0]);
&gt; 
&gt; Is the cast needed here?

Yes, the compiler didn&apos;t like it otherwise.

&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/DataDetection.mm:346
&gt; &gt; +    case 2: {
&gt; &gt; +        StringBuilder stringBuilder;
&gt; &gt; +        stringBuilder.appendNumber((unsigned long)[path indexAtPosition:0]);
&gt; &gt; +        stringBuilder.append(&apos;/&apos;);
&gt; &gt; +        stringBuilder.appendNumber((unsigned long)[path indexAtPosition:1]);
&gt; &gt; +        return stringBuilder.toString();
&gt; &gt; +    }
&gt; 
&gt; What are we gaining from special-casing 2?

Unsure, but since it was already there, I did&apos;t remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180082</commentid>
    <comment_count>5</comment_count>
      <attachid>275473</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-02 13:01:30 -0700</bug_when>
    <thetext>Comment on attachment 275473
Patch

Clearing flags on attachment: 275473

Committed r198974: &lt;http://trac.webkit.org/changeset/198974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180083</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-02 13:01:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180181</commentid>
    <comment_count>7</comment_count>
      <attachid>275473</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-03 09:51:12 -0700</bug_when>
    <thetext>Comment on attachment 275473
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:-52
&gt; -const char* dataDetectorsURLScheme = &quot;x-apple-data-detectors&quot;;

This is a URL scheme, not an HTML attribute.  Seems odd to add it to HTMLAttributeNames.in, doesn&apos;t it?

&gt; Source/WebCore/html/HTMLAttributeNames.in:385
&gt; +x-apple-data-detectors

Again, this is a URL scheme.  It probably shouldn&apos;t have been added to HTMLAttributeNames.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180182</commentid>
    <comment_count>8</comment_count>
      <attachid>275473</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-03 09:53:51 -0700</bug_when>
    <thetext>Comment on attachment 275473
Patch

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

&gt;&gt;&gt; Source/WebCore/editing/cocoa/DataDetection.mm:49
&gt;&gt;&gt; +#import &quot;DataDetectorsCoreSoftLink.h&quot;
&gt;&gt; 
&gt;&gt; Why is this separate? Some ordering requirement?
&gt; 
&gt; The style checker yelled at me for it. I actually don&apos;t know why it wants it there.

This is the correct place for the header, and I updated the style checker to enforce this ordering.

SoftLinking headers include some #define macros that can interfere with other headers included after it, so it must go last.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180183</commentid>
    <comment_count>9</comment_count>
      <attachid>275473</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-03 09:55:30 -0700</bug_when>
    <thetext>Comment on attachment 275473
Patch

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

&gt;&gt; Source/WebCore/editing/cocoa/DataDetection.mm:-52
&gt;&gt; -const char* dataDetectorsURLScheme = &quot;x-apple-data-detectors&quot;;
&gt; 
&gt; This is a URL scheme, not an HTML attribute.  Seems odd to add it to HTMLAttributeNames.in, doesn&apos;t it?

Nevermind, this is actually used as an attribute apparently.  Very confusing.

&gt;&gt; Source/WebCore/html/HTMLAttributeNames.in:385
&gt;&gt; +x-apple-data-detectors
&gt; 
&gt; Again, this is a URL scheme.  It probably shouldn&apos;t have been added to HTMLAttributeNames.in.

Nevermind.  (See above.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180197</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-04-03 11:22:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 275473 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275473&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/DataDetection.mm:-52
&gt; &gt; -const char* dataDetectorsURLScheme = &quot;x-apple-data-detectors&quot;;
&gt; 
&gt; This is a URL scheme, not an HTML attribute.  Seems odd to add it to
&gt; HTMLAttributeNames.in, doesn&apos;t it?
&gt; 

It&apos;s not a URL scheme. The variable name was simply wrong.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275460</attachid>
            <date>2016-04-01 21:20:10 -0700</date>
            <delta_ts>2016-04-02 11:21:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156128-20160401212043.patch</filename>
            <type>text/plain</type>
            <size>12175</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW51cCBEYXRhRGV0ZWN0aW9uLm1t
IGEgbGl0dGxlIGJpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU2MTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgQWRkIHgtYXBwbGUt
ZGF0YS1kZXRlY3RvcnMsIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtdHlwZSwgeC1hcHBsZS1kYXRh
LWRldGVjdG9ycy1yZXN1bHQKKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlv
bi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OnJlcXVpcmVzRXh0ZW5kZWRD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRhdGFEZXRlY3Rvcklk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6c2hvdWxkQ2FuY2Vs
RGVmYXVsdEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVSZXN1bHRMaW5rc0Zyb21B
bmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoRm9yTGlua1JlbW92aW5nRXhpc3RpbmdE
RExpbmtzKToKKyAgICAgICAgVXNlIG5ldyBnZW5lcmF0ZWQgcXVhbGlmaWVkIG5hbWUgYXR0cmli
dXRlcywgc3dpdGNoIHRvIHVzaW5nIGZhc3RHZXRBdHRyaWJ1dGUgYW5kIAorICAgICAgICBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlLCBhbmQgZml4IHRoZSBwb3NpdGlvbiBvZiBzb21lICpzLgorCisg
ICAgICAgIChXZWJDb3JlOjpkYXRhRGV0ZWN0b3JTdHJpbmdGb3JQYXRoKToKKyAgICAgICAgRml4
IHNvbWUgKnMgYW5kIHN3aXRjaCB0byB1c2luZyBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFF1ZXJ5KToKKyAgICAgICAgRml4IHNvbWUgKnMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKToKKyAgICAgICAgVXNl
IG5ldyBnZW5lcmF0ZWQgcXVhbGlmaWVkIG5hbWUgYXR0cmlidXRlcy4KKwogMjAxNi0wNC0wMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBCYWNrZHJv
cCBGaWx0ZXIgc2hvdWxkIHJlcGFpbnQgd2hlbiBjaGFuZ2VkIHZpYSBzY3JpcHQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9u
IDE5ODg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBACiAKICNpbXBvcnQgIkF0dHIuaCIK
ICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKLSNpbXBvcnQgIkRhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3RvcnNTUEkuaCIKICNpbXBvcnQgIkZy
YW1lVmlldy5oIgogI2ltcG9ydCAiSFRNTEFuY2hvckVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxO
YW1lcy5oIgogI2ltcG9ydCAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIk5vZGUuaCIKQEAgLTQ1LDE3ICs0NSwxOCBAQAog
I2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgiCiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgogCisjaW1w
b3J0ICJEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgiCisKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0RhdGFEZXRlY3RvcnNBZGRpdGlvbnMu
aD4KICNlbmRpZgogCi1jb25zdCBjaGFyKiBkYXRhRGV0ZWN0b3JzVVJMU2NoZW1lID0gIngtYXBw
bGUtZGF0YS1kZXRlY3RvcnMiOwotY29uc3QgY2hhciogZGF0YURldGVjdG9yc0F0dHJpYnV0ZVR5
cGVLZXkgPSAieC1hcHBsZS1kYXRhLWRldGVjdG9ycy10eXBlIjsKLWNvbnN0IGNoYXIqIGRhdGFE
ZXRlY3RvcnNBdHRyaWJ1dGVSZXN1bHRLZXkgPSAieC1hcHBsZS1kYXRhLWRldGVjdG9ycy1yZXN1
bHQiOwogY29uc3QgY2hhciogZGF0YURldGVjdG9yc0xpbmtTdHlsZSA9ICItd2Via2l0LXRleHQt
ZGVjb3JhdGlvbi1jb2xvcjpyZ2IoMTk5LCAxOTksIDIwNCk7IGNvbG9yOmluaXRpYWw7IjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiAjaWYg
UExBVEZPUk0oTUFDKQogCiBzdGF0aWMgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0
SXRlbUF0UG9zaXRpb25XaXRoUmFuZ2UoVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uLCBSZWZQdHI8
UmFuZ2U+IGNvbnRleHRSYW5nZSwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpCkBAIC0xNjAsMTIgKzE2MSwxMiBAQCBi
b29sIERhdGFEZXRlY3Rpb246OmlzRGF0YURldGVjdG9yTGluayhFCiAKIGJvb2wgRGF0YURldGVj
dGlvbjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoUXVh
bGlmaWVkTmFtZShudWxsQXRvbSwgZGF0YURldGVjdG9yc0F0dHJpYnV0ZVR5cGVLZXksIG51bGxB
dG9tKSksICJjYWxlbmRhci1ldmVudCIpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZSh4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzX3R5cGVB
dHRyKSwgImNhbGVuZGFyLWV2ZW50Iik7CiB9CiAKIFN0cmluZyBEYXRhRGV0ZWN0aW9uOjpkYXRh
RGV0ZWN0b3JJZGVudGlmaWVyKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1l
bnQuZmFzdEdldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRhRGV0ZWN0b3Jz
QXR0cmlidXRlUmVzdWx0S2V5LCBudWxsQXRvbSkpOworICAgIHJldHVybiBlbGVtZW50LmZhc3RH
ZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyKTsKIH0KIAogYm9v
bCBEYXRhRGV0ZWN0aW9uOjpzaG91bGRDYW5jZWxEZWZhdWx0QWN0aW9uKEVsZW1lbnQmIGVsZW1l
bnQpCkBAIC0xNzYsNyArMTc3LDcgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjpzaG91bGRDYW5jZWxE
ZWZhdWx0QQogICAgIGlmIChzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVk
aWF0ZWx5U2hvd0FjdGlvblNoZWV0Rm9yVVJMKGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihl
bGVtZW50KS5ocmVmKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHJlc3VsdEF0dHJpYnV0ZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRhRGV0ZWN0b3JzQXR0cmlidXRlUmVzdWx0S2V5LCBu
dWxsQXRvbSkpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzdWx0QXR0cmlidXRlID0gZWxl
bWVudC5mYXN0R2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0cik7
CiAgICAgaWYgKHJlc3VsdEF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBOU0FycmF5ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRh
dGFEZXRlY3Rpb25SZXN1bHRzKCk7CkBAIC0yMzgsMTIgKzIzOSwxMiBAQCBzdGF0aWMgdm9pZCBy
ZW1vdmVSZXN1bHRMaW5rc0Zyb21BbmNob3IoCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgQk9PTCBub2RlSXNEREFuY2hvciA9IGlzPEhUTUxBbmNob3JFbGVtZW50
Pigqbm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmdldEF0dHJpYnV0ZShkYXRhRGV0
ZWN0b3JzVVJMU2NoZW1lKSA9PSAidHJ1ZSI7CisgICAgQk9PTCBub2RlSXNEREFuY2hvciA9IGlz
PEhUTUxBbmNob3JFbGVtZW50Pigqbm9kZSkgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShkb3du
Y2FzdDxFbGVtZW50Pigqbm9kZSkuZmFzdEdldEF0dHJpYnV0ZSh4X2FwcGxlX2RhdGFfZGV0ZWN0
b3JzQXR0ciksICJ0cnVlIik7CiAgICAgCiAgICAgUmVmUHRyPE5vZGVMaXN0PiBjaGlsZHJlbiA9
IG5vZGUtPmNoaWxkTm9kZXMoKTsKICAgICB1bnNpZ25lZCBjaGlsZENvdW50ID0gY2hpbGRyZW4t
Pmxlbmd0aCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgaSsrKSB7
Ci0gICAgICAgIE5vZGUgKmNoaWxkID0gY2hpbGRyZW4tPml0ZW0oaSk7CisgICAgICAgIE5vZGUq
IGNoaWxkID0gY2hpbGRyZW4tPml0ZW0oaSk7CiAgICAgICAgIGlmIChpczxFbGVtZW50PigqY2hp
bGQpKQogICAgICAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9tQW5jaG9yKGNoaWxkLCBub2Rl
KTsKICAgICB9CkBAIC0yNTUsMzIgKzI1NiwzMiBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZXN1bHRM
aW5rc0Zyb21BbmNob3IoCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgY2hpbGRyZW4gYW5k
IG1vdmUgdGhlbSBhbGwgb250byB0aGUgc2FtZSBsZXZlbCBhcyB0aGlzIGFuY2hvci4KICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBhbmNob3IgYWZ0ZXJ3YXJkcy4KICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjaGlsZENvdW50OyBpKyspIHsKLSAgICAgICAgICAgIE5vZGUgKmNoaWxkID0g
Y2hpbGRyZW4tPml0ZW0oMCk7CisgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5p
dGVtKDApOwogICAgICAgICAgICAgbm9kZVBhcmVudC0+aW5zZXJ0QmVmb3JlKGNoaWxkLCBub2Rl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgICAgICBub2RlUGFyZW50LT5y
ZW1vdmVDaGlsZChub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5rcyhOb2RlKiBzdGFydE5v
ZGUsIE5vZGUqIGVuZE5vZGUsIGJvb2wgJmRpZE1vZGlmeURPTSkKK3N0YXRpYyBib29sIHNlYXJj
aEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5rcyhOb2RlJiBzdGFydE5vZGUsIE5vZGUmIGVu
ZE5vZGUsIGJvb2wmIGRpZE1vZGlmeURPTSkKIHsKICAgICBkaWRNb2RpZnlET00gPSBmYWxzZTsK
LSAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOworICAgIE5vZGUqIG5vZGUgPSAmc3RhcnROb2Rl
OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4o
Km5vZGUpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmdldEF0
dHJpYnV0ZShkYXRhRGV0ZWN0b3JzVVJMU2NoZW1lKSAhPSAidHJ1ZSIpCisgICAgICAgICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmZhc3RH
ZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc0F0dHIpLCAidHJ1ZSIpKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9t
QW5jaG9yKG5vZGUsIG5vZGUtPnBhcmVudEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBkaWRNb2Rp
ZnlET00gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZSA9PSBl
bmROb2RlKSB7CisgICAgICAgIGlmIChub2RlID09ICZlbmROb2RlKSB7CiAgICAgICAgICAgICAv
LyBJZiB3ZSBmb3VuZCB0aGUgZW5kIG5vZGUgYW5kIG5vIGxpbmssIHJldHVybiBmYWxzZSB1bmxl
c3MgYW4gYW5jZXN0b3Igbm9kZSBpcyBhIGxpbmsuCiAgICAgICAgICAgICAvLyBUaGUgb25seSBh
bmNlc3RvcnMgbm90IHRlc3RlZCBhdCB0aGlzIHBvaW50IGFyZSBpbiB0aGUgZGlyZWN0IGxpbmUg
ZnJvbSBzZWxmJ3MgcGFyZW50IHRvIHRoZSB0b3AuCiAgICAgICAgICAgICBub2RlID0gc3RhcnRO
b2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAg
ICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZ2V0QXR0cmlidXRlKGRhdGFEZXRl
Y3RvcnNVUkxTY2hlbWUpICE9ICJ0cnVlIikKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5mYXN0R2V0QXR0cmli
dXRlKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNBdHRyKSwgInRydWUiKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZW1vdmVSZXN1bHRM
aW5rc0Zyb21BbmNob3Iobm9kZSwgbm9kZS0+cGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgZGlkTW9kaWZ5RE9NID0gdHJ1ZTsKQEAgLTI5NCw4ICsyOTUsOCBAQCBzdGF0aWMg
Ym9vbCBzZWFyY2hGb3JMaW5rUmVtb3ZpbmdFeGlzdGluCiAgICAgICAgIGlmIChjaGlsZE5vZGVz
LT5sZW5ndGgoKSkKICAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzLT5pdGVtKDApOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUgKm5ld05vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpOwotICAgICAgICAgICAgTm9kZSAqcGFyZW50Tm9kZSA9IG5vZGU7CisgICAgICAgICAgICBO
b2RlKiBuZXdOb2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIE5vZGUqIHBh
cmVudE5vZGUgPSBub2RlOwogICAgICAgICAgICAgd2hpbGUgKCFuZXdOb2RlKSB7CiAgICAgICAg
ICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudE5vZGUpCkBAIC0zMjYsMzAgKzMyNywzMiBAQCBzdGF0aWMgTlNT
dHJpbmcgKmRhdGFEZXRlY3RvclR5cGVGb3JDYXRlCiAgICAgfQogfQogCi1zdGF0aWMgU3RyaW5n
IGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoTlNJbmRleFBhdGgqIHBhdGgpCitzdGF0aWMgU3Ry
aW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoTlNJbmRleFBhdGggKnBhdGgpCiB7CiAgICAg
TlNVSW50ZWdlciBsZW5ndGggPSBwYXRoLmxlbmd0aDsKICAgICAKICAgICBzd2l0Y2ggKGxlbmd0
aCkgewogICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiJWx1IiwgKHVuc2lnbmVkIGxvbmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKLSAg
ICAgICAgCi0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVsdS8l
bHUiLCAodW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9zaXRpb246MF0sICh1bnNpZ25lZCBs
b25nKVtwYXRoIGluZGV4QXRQb3NpdGlvbjoxXSk7Ci0gICAgICAgIAotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBjb21wb25lbnRzU3RyaW5nID0gU3RyaW5nOjpm
b3JtYXQoIiVsdSIsICh1bnNpZ25lZCBsb25nKVtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSk7Ci0g
ICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDEgOyBpIDwgbGVuZ3RoIDsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgY29tcG9uZW50c1N0cmluZy5hcHBlbmQoIi8iKTsKLSAgICAgICAgICAg
ICAgICBjb21wb25lbnRzU3RyaW5nLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJWx1IiwgKHVuc2ln
bmVkIGxvbmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHJldHVybiBjb21wb25lbnRzU3RyaW5nOworICAgICAgICByZXR1cm4gU3RyaW5n
OjpudW1iZXIoKHVuc2lnbmVkIGxvbmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBdKTsKKyAgICBj
YXNlIDI6IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcigodW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9z
aXRpb246MF0pOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLycpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcigodW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9z
aXRpb246MV0pOworICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAg
IH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoKHVuc2lnbmVkIGxvbmcpW3BhdGgg
aW5kZXhBdFBvc2l0aW9uOjBdKTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAxIDsgaSA8
IGxlbmd0aCA7IGkrKykgeworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy8nKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKCh1bnNpZ25lZCBsb25nKVtw
YXRoIGluZGV4QXRQb3NpdGlvbjppXSk7CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpOworICAgIH0KICAgICB9CiB9CiAKQEAgLTM4MCw3ICszODMs
NyBAQCBzdGF0aWMgdm9pZCBidWlsZFF1ZXJ5KEREU2NhblF1ZXJ5UmVmIHNjCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAvLyBUZXN0IGZvciB3aGl0ZSBzcGFjZSBu
b2Rlcywgd2UncmUgY29hbGVzY2luZyB0aGVtLgotICAgICAgICBjb25zdCBVbmlDaGFyICpjdXJy
ZW50Q2hhclB0ciA9IGl0ZXJhdG9yLnRleHQoKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAg
ICAgICAgY29uc3QgVW5pQ2hhciogY3VycmVudENoYXJQdHIgPSBpdGVyYXRvci50ZXh0KCkudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBib29sIGNvbnRhaW5zT25s
eVdoaXRlU3BhY2UgPSB0cnVlOwogICAgICAgICBib29sIGhhc1RhYiA9IGZhbHNlOwpAQCAtNTM1
LDcgKzUzOCw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblIKICAg
ICBUZXh0KiBsYXN0VGV4dE5vZGVUb1VwZGF0ZSA9IG51bGxwdHI7CiAgICAgU3RyaW5nIGxhc3RO
b2RlQ29udGVudDsKICAgICBzaXplX3QgY29udGVudE9mZnNldCA9IDA7Ci0gICAgRERRdWVyeU9m
ZnNldCBsYXN0TW9kaWZpZWRRdWVyeU9mZnNldCA9IHstMSwgMH07CisgICAgRERRdWVyeU9mZnNl
dCBsYXN0TW9kaWZpZWRRdWVyeU9mZnNldCA9IHsgLTEsIDAgfTsKICAgICAKICAgICAvLyBGb3Ig
ZWFjaCByZXN1bHQgYWRkIHRoZSBsaW5rLgogICAgIC8vIFNpbmNlIHRoZXJlIGNvdWxkIGJlIG11
bHRpcGxlIHJlc3VsdHMgaW4gdGhlIHNhbWUgdGV4dCBub2RlLCB0aGUgbm9kZSBpcyBvbmx5IG1v
ZGlmaWVkIHdoZW4KQEAgLTU2NCw3ICs1NjcsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SCiAgICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiByZXN1bHRSYW5nZXMp
CiAgICAgICAgICAgICByYW5nZUJvdW5kYXJpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKSk7CiAKLSAgICAgICAgaWYg
KCFjb3JyZXNwb25kaW5nVVJMIHx8IHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5r
cygmcmVzdWx0UmFuZ2VzLmZpcnN0KCktPnN0YXJ0Q29udGFpbmVyKCksICZyZXN1bHRSYW5nZXMu
bGFzdCgpLT5lbmRDb250YWluZXIoKSwgZGlkTW9kaWZ5RE9NKSkKKyAgICAgICAgaWYgKCFjb3Jy
ZXNwb25kaW5nVVJMIHx8IHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5rcyhyZXN1
bHRSYW5nZXMuZmlyc3QoKS0+c3RhcnRDb250YWluZXIoKSwgcmVzdWx0UmFuZ2VzLmxhc3QoKS0+
ZW5kQ29udGFpbmVyKCksIGRpZE1vZGlmeURPTSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChkaWRNb2RpZnlET00pIHsKQEAgLTYxNyw5ICs2MjAsOSBAQCBO
U0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SCiAgICAgICAgICAgICBhbmNo
b3JFbGVtZW50LT5Ob2RlOjphcHBlbmRDaGlsZChuZXdOb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShhbmNob3JFbGVtZW50LCAm
Y3VycmVudFRleHROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgIC8vIEFk
ZCBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgdGhpcyBVUkxpZmljYXRpb24gYXMgdGhlIHJl
c3VsdCBvZiBkYXRhIGRldGVjdG9ycy4KLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRhRGV0ZWN0b3JzVVJMU2NoZW1lLCBu
dWxsQXRvbSksICJ0cnVlIik7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1
dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgZGF0YURldGVjdG9yc0F0dHJpYnV0ZVR5cGVLZXks
IG51bGxBdG9tKSwgZGF0YURldGVjdG9yVHlwZUZvckNhdGVnb3J5KHNvZnRMaW5rX0RhdGFEZXRl
Y3RvcnNDb3JlX0REUmVzdWx0R2V0Q2F0ZWdvcnkoY29yZVJlc3VsdCkpKTsKLSAgICAgICAgICAg
IGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRh
RGV0ZWN0b3JzQXR0cmlidXRlUmVzdWx0S2V5LCBudWxsQXRvbSksIGlkZW50aWZpZXIpOworICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRlY3Rv
cnNBdHRyLCAidHJ1ZSIpOworICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRl
KHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfdHlwZUF0dHIsIGRhdGFEZXRlY3RvclR5cGVGb3JDYXRl
Z29yeShzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldENhdGVnb3J5KGNvcmVS
ZXN1bHQpKSk7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoeF9hcHBs
ZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNv
bnRlbnRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGxhc3ROb2RlQ29udGVudCA9IGN1cnJlbnRUZXh0Tm9kZS5zdWJzdHJpbmdEYXRhKHJhbmdl
LT5lbmRPZmZzZXQoKSwgY3VycmVudFRleHROb2RlLmxlbmd0aCgpIC0gcmFuZ2UtPmVuZE9mZnNl
dCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiAxOTg4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgxLDMgKzM4MSw3
IEBAIHdlYmtpdC1wbGF5c2lubGluZQogeC13ZWJraXQtYWlycGxheQogeC13ZWJraXQtd2lyZWxl
c3N2aWRlb3BsYXliYWNrZGlzYWJsZWQKIHgtaXR1bmVzLWluaGVyaXQtdXJpLXF1ZXJ5LWNvbXBv
bmVudAorCit4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzCit4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5
cGUKK3gtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275473</attachid>
            <date>2016-04-02 11:22:33 -0700</date>
            <delta_ts>2016-04-02 13:01:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156128-20160402112308.patch</filename>
            <type>text/plain</type>
            <size>12294</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODk3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW51cCBEYXRhRGV0ZWN0aW9uLm1t
IGEgbGl0dGxlIGJpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU2MTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgQWRkIHgtYXBwbGUt
ZGF0YS1kZXRlY3RvcnMsIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtdHlwZSwgeC1hcHBsZS1kYXRh
LWRldGVjdG9ycy1yZXN1bHQKKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlv
bi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OnJlcXVpcmVzRXh0ZW5kZWRD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRhdGFEZXRlY3Rvcklk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6c2hvdWxkQ2FuY2Vs
RGVmYXVsdEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVSZXN1bHRMaW5rc0Zyb21B
bmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoRm9yTGlua1JlbW92aW5nRXhpc3RpbmdE
RExpbmtzKToKKyAgICAgICAgVXNlIG5ldyBnZW5lcmF0ZWQgcXVhbGlmaWVkIG5hbWUgYXR0cmli
dXRlcywgc3dpdGNoIHRvIHVzaW5nIGZhc3RHZXRBdHRyaWJ1dGUgYW5kIAorICAgICAgICBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlLCBhbmQgZml4IHRoZSBwb3NpdGlvbiBvZiBzb21lICpzLgorCisg
ICAgICAgIChXZWJDb3JlOjpkYXRhRGV0ZWN0b3JTdHJpbmdGb3JQYXRoKToKKyAgICAgICAgRml4
IHNvbWUgKnMgYW5kIHN3aXRjaCB0byB1c2luZyBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFF1ZXJ5KToKKyAgICAgICAgRml4IHNvbWUgKnMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKToKKyAgICAgICAgVXNl
IG5ldyBnZW5lcmF0ZWQgcXVhbGlmaWVkIG5hbWUgYXR0cmlidXRlcy4KKwogMjAxNi0wNC0wMSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3Jh
dGUgQmlkaVJ1bkxpc3QgYW5kIEJpZGlSdW4gdG8gYXV0b21hdGljIG1lbW9yeSBtYW5hZ2VtZW50
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CShyZXZpc2lvbiAxOTg5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaW1wb3J0
ICJBdHRyLmgiCiAjaW1wb3J0ICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW1wb3J0ICJEYXRh
RGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0b3JzU1BJLmgiCiAj
aW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBbmNob3JFbGVtZW50LmgiCisjaW1w
b3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJOb2RlLmgiCkBAIC00NCwxOCAr
NDQsMjAgQEAKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAiVmlzaWJsZVVu
aXRzLmgiCiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorCisjaW1wb3J0ICJEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgiCiAKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0RhdGFE
ZXRlY3RvcnNBZGRpdGlvbnMuaD4KICNlbmRpZgogCi1jb25zdCBjaGFyKiBkYXRhRGV0ZWN0b3Jz
VVJMU2NoZW1lID0gIngtYXBwbGUtZGF0YS1kZXRlY3RvcnMiOwotY29uc3QgY2hhciogZGF0YURl
dGVjdG9yc0F0dHJpYnV0ZVR5cGVLZXkgPSAieC1hcHBsZS1kYXRhLWRldGVjdG9ycy10eXBlIjsK
LWNvbnN0IGNoYXIqIGRhdGFEZXRlY3RvcnNBdHRyaWJ1dGVSZXN1bHRLZXkgPSAieC1hcHBsZS1k
YXRhLWRldGVjdG9ycy1yZXN1bHQiOwogY29uc3QgY2hhciogZGF0YURldGVjdG9yc0xpbmtTdHls
ZSA9ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2IoMTk5LCAxOTksIDIwNCk7IGNv
bG9yOmluaXRpYWw7IjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOworCiAjaWYgUExBVEZPUk0oTUFDKQogCiBzdGF0aWMgUmV0YWluUHRyPEREQWN0
aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0UG9zaXRpb25XaXRoUmFuZ2UoVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uLCBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5nZSwgRmxvYXRSZWN0JiBkZXRlY3Rl
ZERhdGFCb3VuZGluZ0JveCwgUmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpCkBAIC0x
NjAsMTIgKzE2MiwxMiBAQCBib29sIERhdGFEZXRlY3Rpb246OmlzRGF0YURldGVjdG9yTGluayhF
CiAKIGJvb2wgRGF0YURldGVjdGlvbjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmZh
c3RHZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgZGF0YURldGVjdG9yc0F0dHJp
YnV0ZVR5cGVLZXksIG51bGxBdG9tKSksICJjYWxlbmRhci1ldmVudCIpOworICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZSh4X2FwcGxlX2Rh
dGFfZGV0ZWN0b3JzX3R5cGVBdHRyKSwgImNhbGVuZGFyLWV2ZW50Iik7CiB9CiAKIFN0cmluZyBE
YXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKEVsZW1lbnQmIGVsZW1lbnQpCiB7
Ci0gICAgcmV0dXJuIGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCBkYXRhRGV0ZWN0b3JzQXR0cmlidXRlUmVzdWx0S2V5LCBudWxsQXRvbSkpOworICAgIHJl
dHVybiBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1
bHRBdHRyKTsKIH0KIAogYm9vbCBEYXRhRGV0ZWN0aW9uOjpzaG91bGRDYW5jZWxEZWZhdWx0QWN0
aW9uKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0xNzYsNyArMTc4LDcgQEAgYm9vbCBEYXRhRGV0ZWN0
aW9uOjpzaG91bGRDYW5jZWxEZWZhdWx0QQogICAgIGlmIChzb2Z0TGlua19EYXRhRGV0ZWN0b3Jz
Q29yZV9ERFNob3VsZEltbWVkaWF0ZWx5U2hvd0FjdGlvblNoZWV0Rm9yVVJMKGRvd25jYXN0PEhU
TUxBbmNob3JFbGVtZW50PihlbGVtZW50KS5ocmVmKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlc3VsdEF0dHJpYnV0ZSA9IGVsZW1lbnQu
ZmFzdEdldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRhRGV0ZWN0b3JzQXR0
cmlidXRlUmVzdWx0S2V5LCBudWxsQXRvbSkpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVz
dWx0QXR0cmlidXRlID0gZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRl
Y3RvcnNfcmVzdWx0QXR0cik7CiAgICAgaWYgKHJlc3VsdEF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBOU0FycmF5ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1bHRzKCk7CkBAIC0yMzgsMTIgKzI0MCwx
MiBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZXN1bHRMaW5rc0Zyb21BbmNob3IoCiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQk9PTCBub2RlSXNEREFuY2hvciA9IGlz
PEhUTUxBbmNob3JFbGVtZW50Pigqbm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmdl
dEF0dHJpYnV0ZShkYXRhRGV0ZWN0b3JzVVJMU2NoZW1lKSA9PSAidHJ1ZSI7CisgICAgQk9PTCBu
b2RlSXNEREFuY2hvciA9IGlzPEhUTUxBbmNob3JFbGVtZW50Pigqbm9kZSkgJiYgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZmFzdEdldEF0dHJpYnV0ZSh4
X2FwcGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciksICJ0cnVlIik7CiAgICAgCiAgICAgUmVmUHRyPE5v
ZGVMaXN0PiBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkTm9kZXMoKTsKICAgICB1bnNpZ25lZCBjaGls
ZENvdW50ID0gY2hpbGRyZW4tPmxlbmd0aCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y2hpbGRDb3VudDsgaSsrKSB7Ci0gICAgICAgIE5vZGUgKmNoaWxkID0gY2hpbGRyZW4tPml0ZW0o
aSk7CisgICAgICAgIE5vZGUqIGNoaWxkID0gY2hpbGRyZW4tPml0ZW0oaSk7CiAgICAgICAgIGlm
IChpczxFbGVtZW50PigqY2hpbGQpKQogICAgICAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9t
QW5jaG9yKGNoaWxkLCBub2RlKTsKICAgICB9CkBAIC0yNTUsMzIgKzI1NywzMiBAQCBzdGF0aWMg
dm9pZCByZW1vdmVSZXN1bHRMaW5rc0Zyb21BbmNob3IoCiAgICAgICAgIC8vIEl0ZXJhdGUgb3Zl
ciB0aGUgY2hpbGRyZW4gYW5kIG1vdmUgdGhlbSBhbGwgb250byB0aGUgc2FtZSBsZXZlbCBhcyB0
aGlzIGFuY2hvci4KICAgICAgICAgLy8gUmVtb3ZlIHRoZSBhbmNob3IgYWZ0ZXJ3YXJkcy4KICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZENvdW50OyBpKyspIHsKLSAgICAgICAg
ICAgIE5vZGUgKmNoaWxkID0gY2hpbGRyZW4tPml0ZW0oMCk7CisgICAgICAgICAgICBOb2RlKiBj
aGlsZCA9IGNoaWxkcmVuLT5pdGVtKDApOwogICAgICAgICAgICAgbm9kZVBhcmVudC0+aW5zZXJ0
QmVmb3JlKGNoaWxkLCBub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAg
ICAgICBub2RlUGFyZW50LT5yZW1vdmVDaGlsZChub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERM
aW5rcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUsIGJvb2wgJmRpZE1vZGlmeURPTSkK
K3N0YXRpYyBib29sIHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5rcyhOb2RlJiBz
dGFydE5vZGUsIE5vZGUmIGVuZE5vZGUsIGJvb2wmIGRpZE1vZGlmeURPTSkKIHsKICAgICBkaWRN
b2RpZnlET00gPSBmYWxzZTsKLSAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOworICAgIE5vZGUq
IG5vZGUgPSAmc3RhcnROb2RlOwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxI
VE1MQW5jaG9yRWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpLmdldEF0dHJpYnV0ZShkYXRhRGV0ZWN0b3JzVVJMU2NoZW1lKSAhPSAidHJ1
ZSIpCisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpLmZhc3RHZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc0F0dHIp
LCAidHJ1ZSIpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmVt
b3ZlUmVzdWx0TGlua3NGcm9tQW5jaG9yKG5vZGUsIG5vZGUtPnBhcmVudEVsZW1lbnQoKSk7CiAg
ICAgICAgICAgICBkaWRNb2RpZnlET00gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAobm9kZSA9PSBlbmROb2RlKSB7CisgICAgICAgIGlmIChub2RlID09ICZlbmROb2Rl
KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCB0aGUgZW5kIG5vZGUgYW5kIG5vIGxpbmss
IHJldHVybiBmYWxzZSB1bmxlc3MgYW4gYW5jZXN0b3Igbm9kZSBpcyBhIGxpbmsuCiAgICAgICAg
ICAgICAvLyBUaGUgb25seSBhbmNlc3RvcnMgbm90IHRlc3RlZCBhdCB0aGlzIHBvaW50IGFyZSBp
biB0aGUgZGlyZWN0IGxpbmUgZnJvbSBzZWxmJ3MgcGFyZW50IHRvIHRoZSB0b3AuCi0gICAgICAg
ICAgICBub2RlID0gc3RhcnROb2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBub2RlID0g
c3RhcnROb2RlLnBhcmVudE5vZGUoKTsKICAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50Pigqbm9kZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5nZXRBdHRyaWJ1dGUoZGF0
YURldGVjdG9yc1VSTFNjaGVtZSkgIT0gInRydWUiKQorICAgICAgICAgICAgICAgICAgICBpZiAo
IWVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmZhc3RHZXRB
dHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc0F0dHIpLCAidHJ1ZSIpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJl
c3VsdExpbmtzRnJvbUFuY2hvcihub2RlLCBub2RlLT5wYXJlbnRFbGVtZW50KCkpOwogICAgICAg
ICAgICAgICAgICAgICBkaWRNb2RpZnlET00gPSB0cnVlOwpAQCAtMjk0LDggKzI5Niw4IEBAIHN0
YXRpYyBib29sIHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW4KICAgICAgICAgaWYgKGNoaWxk
Tm9kZXMtPmxlbmd0aCgpKQogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXMtPml0ZW0oMCk7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSAqbmV3Tm9kZSA9IG5vZGUtPm5leHRT
aWJsaW5nKCk7Ci0gICAgICAgICAgICBOb2RlICpwYXJlbnROb2RlID0gbm9kZTsKKyAgICAgICAg
ICAgIE5vZGUqIG5ld05vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAgICAgICAgICAgTm9k
ZSogcGFyZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgICAgICB3aGlsZSAoIW5ld05vZGUpIHsKICAg
ICAgICAgICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAg
ICAgICAgICAgICAgIGlmICghcGFyZW50Tm9kZSkKQEAgLTMyNiwzMCArMzI4LDMyIEBAIHN0YXRp
YyBOU1N0cmluZyAqZGF0YURldGVjdG9yVHlwZUZvckNhdGUKICAgICB9CiB9CiAKLXN0YXRpYyBT
dHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChOU0luZGV4UGF0aCogcGF0aCkKK3N0YXRp
YyBTdHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChOU0luZGV4UGF0aCAqcGF0aCkKIHsK
ICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHBhdGgubGVuZ3RoOwogICAgIAogICAgIHN3aXRjaCAo
bGVuZ3RoKSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAg
IAorICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlbHUiLCAodW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9zaXRpb246MF0p
OwotICAgICAgICAKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
JWx1LyVsdSIsICh1bnNpZ25lZCBsb25nKVtwYXRoIGluZGV4QXRQb3NpdGlvbjowXSwgKHVuc2ln
bmVkIGxvbmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOjFdKTsKLSAgICAgICAgCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGNvbXBvbmVudHNTdHJpbmcgPSBTdHJp
bmc6OmZvcm1hdCgiJWx1IiwgKHVuc2lnbmVkIGxvbmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOjBd
KTsKLSAgICAgICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMSA7IGkgPCBsZW5ndGggOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBjb21wb25lbnRzU3RyaW5nLmFwcGVuZCgiLyIpOwotICAgICAg
ICAgICAgICAgIGNvbXBvbmVudHNTdHJpbmcuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlbHUiLCAo
dW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9zaXRpb246aV0pKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNTdHJpbmc7CisgICAgICAgIHJldHVybiBT
dHJpbmc6Om51bWJlcigodW5zaWduZWQgbG9uZylbcGF0aCBpbmRleEF0UG9zaXRpb246MF0pOwor
ICAgIGNhc2UgMjogeworICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKCh1bnNpZ25lZCBsb25nKVtwYXRoIGluZGV4
QXRQb3NpdGlvbjowXSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKCh1bnNpZ25lZCBsb25nKVtwYXRoIGluZGV4
QXRQb3NpdGlvbjoxXSk7CisgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcigodW5zaWduZWQgbG9uZylb
cGF0aCBpbmRleEF0UG9zaXRpb246MF0pOworICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDEg
OyBpIDwgbGVuZ3RoIDsgaSsrKSB7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgn
LycpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoKHVuc2lnbmVkIGxv
bmcpW3BhdGggaW5kZXhBdFBvc2l0aW9uOmldKTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQogICAgIH0KIH0KIApAQCAtMzgwLDcg
KzM4NCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUXVlcnkoRERTY2FuUXVlcnlSZWYgc2MKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIFRlc3QgZm9yIHdoaXRlIHNw
YWNlIG5vZGVzLCB3ZSdyZSBjb2FsZXNjaW5nIHRoZW0uCi0gICAgICAgIGNvbnN0IFVuaUNoYXIg
KmN1cnJlbnRDaGFyUHRyID0gaXRlcmF0b3IudGV4dCgpLnVwY29udmVydGVkQ2hhcmFjdGVycygp
OworICAgICAgICBjb25zdCBVbmlDaGFyKiBjdXJyZW50Q2hhclB0ciA9IGl0ZXJhdG9yLnRleHQo
KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgY29udGFp
bnNPbmx5V2hpdGVTcGFjZSA9IHRydWU7CiAgICAgICAgIGJvb2wgaGFzVGFiID0gZmFsc2U7CkBA
IC01MzUsNyArNTM5LDcgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UgogICAgIFRleHQqIGxhc3RUZXh0Tm9kZVRvVXBkYXRlID0gbnVsbHB0cjsKICAgICBTdHJpbmcg
bGFzdE5vZGVDb250ZW50OwogICAgIHNpemVfdCBjb250ZW50T2Zmc2V0ID0gMDsKLSAgICBERFF1
ZXJ5T2Zmc2V0IGxhc3RNb2RpZmllZFF1ZXJ5T2Zmc2V0ID0gey0xLCAwfTsKKyAgICBERFF1ZXJ5
T2Zmc2V0IGxhc3RNb2RpZmllZFF1ZXJ5T2Zmc2V0ID0geyAtMSwgMCB9OwogICAgIAogICAgIC8v
IEZvciBlYWNoIHJlc3VsdCBhZGQgdGhlIGxpbmsuCiAgICAgLy8gU2luY2UgdGhlcmUgY291bGQg
YmUgbXVsdGlwbGUgcmVzdWx0cyBpbiB0aGUgc2FtZSB0ZXh0IG5vZGUsIHRoZSBub2RlIGlzIG9u
bHkgbW9kaWZpZWQgd2hlbgpAQCAtNTY0LDcgKzU2OCw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rp
b246OmRldGVjdENvbnRlbnRJblIKICAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IHJlc3VsdFJh
bmdlcykKICAgICAgICAgICAgIHJhbmdlQm91bmRhcmllcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
cmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKTsKIAotICAgICAg
ICBpZiAoIWNvcnJlc3BvbmRpbmdVUkwgfHwgc2VhcmNoRm9yTGlua1JlbW92aW5nRXhpc3RpbmdE
RExpbmtzKCZyZXN1bHRSYW5nZXMuZmlyc3QoKS0+c3RhcnRDb250YWluZXIoKSwgJnJlc3VsdFJh
bmdlcy5sYXN0KCktPmVuZENvbnRhaW5lcigpLCBkaWRNb2RpZnlET00pKQorICAgICAgICBpZiAo
IWNvcnJlc3BvbmRpbmdVUkwgfHwgc2VhcmNoRm9yTGlua1JlbW92aW5nRXhpc3RpbmdERExpbmtz
KHJlc3VsdFJhbmdlcy5maXJzdCgpLT5zdGFydENvbnRhaW5lcigpLCByZXN1bHRSYW5nZXMubGFz
dCgpLT5lbmRDb250YWluZXIoKSwgZGlkTW9kaWZ5RE9NKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKGRpZE1vZGlmeURPTSkgewpAQCAtNjE3LDkgKzYyMSw5
IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblIKICAgICAgICAgICAg
IGFuY2hvckVsZW1lbnQtPk5vZGU6OmFwcGVuZENoaWxkKG5ld05vZGUsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKGFuY2hvckVsZW1l
bnQsICZjdXJyZW50VGV4dE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAg
Ly8gQWRkIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayB0aGlzIFVSTGlmaWNhdGlvbiBhcyB0
aGUgcmVzdWx0IG9mIGRhdGEgZGV0ZWN0b3JzLgotICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+
c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGRhdGFEZXRlY3RvcnNVUkxTY2hl
bWUsIG51bGxBdG9tKSwgInRydWUiKTsKLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkYXRhRGV0ZWN0b3JzQXR0cmlidXRlVHlw
ZUtleSwgbnVsbEF0b20pLCBkYXRhRGV0ZWN0b3JUeXBlRm9yQ2F0ZWdvcnkoc29mdExpbmtfRGF0
YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRDYXRlZ29yeShjb3JlUmVzdWx0KSkpOwotICAgICAg
ICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGRhdGFEZXRlY3RvcnNBdHRyaWJ1dGVSZXN1bHRLZXksIG51bGxBdG9tKSwgaWRlbnRpZmllcik7
CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2Rl
dGVjdG9yc0F0dHIsICJ0cnVlIik7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRy
aWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc190eXBlQXR0ciwgZGF0YURldGVjdG9yVHlwZUZv
ckNhdGVnb3J5KHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0Q2F0ZWdvcnko
Y29yZVJlc3VsdCkpKTsKKyAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZSh4
X2FwcGxlX2RhdGFfZGV0ZWN0b3JzX3Jlc3VsdEF0dHIsIGlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgY29udGVudE9mZnNldCA9IHJhbmdlLT5lbmRPZmZzZXQoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbGFzdE5vZGVDb250ZW50ID0gY3VycmVudFRleHROb2RlLnN1YnN0cmluZ0RhdGEo
cmFuZ2UtPmVuZE9mZnNldCgpLCBjdXJyZW50VGV4dE5vZGUubGVuZ3RoKCkgLSByYW5nZS0+ZW5k
T2Zmc2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDE5ODk3MikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsMyAr
MzgxLDcgQEAgd2Via2l0LXBsYXlzaW5saW5lCiB4LXdlYmtpdC1haXJwbGF5CiB4LXdlYmtpdC13
aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZAogeC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnkt
Y29tcG9uZW50CisKK3gtYXBwbGUtZGF0YS1kZXRlY3RvcnMKK3gtYXBwbGUtZGF0YS1kZXRlY3Rv
cnMtdHlwZQoreC1hcHBsZS1kYXRhLWRldGVjdG9ycy1yZXN1bHQK
</data>

          </attachment>
      

    </bug>

</bugzilla>