<?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>169514</bug_id>
          
          <creation_ts>2017-03-11 16:04:22 -0800</creation_ts>
          <short_desc>Add full NSHTTPCookie fidelity to WebCore::Cookie</short_desc>
          <delta_ts>2017-03-12 18:54:23 -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 Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1286842</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-11 16:04:22 -0800</bug_when>
    <thetext>Add full NSHTTPCookie fidelity to WebCore::Cookie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286843</commentid>
    <comment_count>1</comment_count>
      <attachid>304180</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-11 16:07:09 -0800</bug_when>
    <thetext>Created attachment 304180
Current patch

I&apos;m breaking this off from larger work and don&apos;t expect it to build quite yet.

Will iterate later after EWS tells me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286935</commentid>
    <comment_count>2</comment_count>
      <attachid>304180</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-03-12 11:52:54 -0700</bug_when>
    <thetext>Comment on attachment 304180
Current patch

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

&gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:56
&gt; +    StringBuilder builder;
&gt; +    for (size_t i = 0; i &lt; ports.size() - 1; ++i) {
&gt; +        builder.append(String::number(ports[i]));
&gt; +        builder.append(&quot;, &quot;);
&gt; +    }
&gt; +    builder.append(String::number(ports.last()));
&gt; +
&gt; +    return builder.toString();

Is it really more efficient to build a WTF::String than convert it to an NSString vs just using an NSMutableString to build it?

&gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:99
&gt; +        [properties setObject:@&quot;YES&quot; forKey:NSHTTPCookieSecure];

The old code was doing a boxed bool value here, not a string (@&quot;YES&quot; vs. @(secure)).  Is the change intentional?

&gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:101
&gt; +    [properties setObject:session ? @&quot;TRUE&quot; : @&quot;FALSE&quot; forKey:NSHTTPCookieDiscard];

Again, the old code was doing a boxed bool value here? @(session).  Why is this now using @&quot;TRUE&quot; /  @&quot;FALSE&quot;?

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:230
&gt;          NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];

You could probably make cookiesForURL return an NSArray&lt;NSHTTPCookie *&gt; *, and then just use cookies[I] here (or actually, this should just be a for (NSHTTPCookie *cookie in cookies) loop).

Also, and unrelated, this function should return a Vector, not us an out parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286976</commentid>
    <comment_count>3</comment_count>
      <attachid>304210</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:08:04 -0700</bug_when>
    <thetext>Created attachment 304210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286980</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:36:45 -0700</bug_when>
    <thetext>Completely didn&apos;t notice that anybody had taken a look at this, sorry - Wasn&apos;t purposefully ignoring your feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286981</commentid>
    <comment_count>5</comment_count>
      <attachid>304210</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-12 17:36:45 -0700</bug_when>
    <thetext>Comment on attachment 304210
Patch

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

&gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:56
&gt; +    StringBuilder builder;
&gt; +    for (size_t i = 0; i &lt; ports.size() - 1; ++i) {
&gt; +        builder.append(String::number(ports[i]));
&gt; +        builder.append(&quot;, &quot;);
&gt; +    }
&gt; +    builder.append(String::number(ports.last()));
&gt; +
&gt; +    return builder.toString();

Didn&apos;t Sam suggest using NSMutableString over StringBuilder?

He also made two other suggestions.

&gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:101
&gt; +    [properties setObject:session ? @&quot;TRUE&quot; : @&quot;FALSE&quot; forKey:NSHTTPCookieDiscard];

My opinion is that it reads better as (session ? @&quot;TRUE&quot; : @&quot;FALSE&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286982</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:40:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 304180 [details]
&gt; Current patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:56
&gt; &gt; +    StringBuilder builder;
&gt; &gt; +    for (size_t i = 0; i &lt; ports.size() - 1; ++i) {
&gt; &gt; +        builder.append(String::number(ports[i]));
&gt; &gt; +        builder.append(&quot;, &quot;);
&gt; &gt; +    }
&gt; &gt; +    builder.append(String::number(ports.last()));
&gt; &gt; +
&gt; &gt; +    return builder.toString();
&gt; 
&gt; Is it really more efficient to build a WTF::String than convert it to an
&gt; NSString vs just using an NSMutableString to build it?

Probably not.

&gt; &gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:99
&gt; &gt; +        [properties setObject:@&quot;YES&quot; forKey:NSHTTPCookieSecure];
&gt; 
&gt; The old code was doing a boxed bool value here, not a string (@&quot;YES&quot; vs.
&gt; @(secure)).  Is the change intentional?

Not really.

&gt; &gt; Source/WebCore/platform/network/cocoa/CookieCocoa.mm:101
&gt; &gt; +    [properties setObject:session ? @&quot;TRUE&quot; : @&quot;FALSE&quot; forKey:NSHTTPCookieDiscard];
&gt; 
&gt; Again, the old code was doing a boxed bool value here? @(session).  Why is
&gt; this now using @&quot;TRUE&quot; /  @&quot;FALSE&quot;?

This one is actually correct, per the documentation for NSHTTPCookieDiscard - It expects the strings TRUE and FALSE, not YES/NO.
&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:230
&gt; &gt;          NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
&gt; 
&gt; You could probably make cookiesForURL return an NSArray&lt;NSHTTPCookie *&gt; *,
&gt; and then just use cookies[I] here (or actually, this should just be a for
&gt; (NSHTTPCookie *cookie in cookies) loop).
&gt; 
&gt; Also, and unrelated, this function should return a Vector, not us an out
&gt; parameter.

Probably yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286984</commentid>
    <comment_count>7</comment_count>
      <attachid>304211</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 17:51:27 -0700</bug_when>
    <thetext>Created attachment 304211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286992</commentid>
    <comment_count>8</comment_count>
      <attachid>304211</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 18:54:20 -0700</bug_when>
    <thetext>Comment on attachment 304211
Patch

Clearing flags on attachment: 304211

Committed r213778: &lt;http://trac.webkit.org/changeset/213778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286993</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 18:54:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304180</attachid>
            <date>2017-03-11 16:07:09 -0800</date>
            <delta_ts>2017-03-12 17:08:04 -0700</delta_ts>
            <desc>Current patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8002</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMzk5YjVjMTM4NS4uMjhhNGUwZWIyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOCBAQAogMjAxNy0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6OkNv
b2tpZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIHRlc3RhYmxlIGJlaGF2aW9yIGNoYW5nZSBmb3Igbm93
KS4KKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llOjpDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llOjpkZWNvZGUpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cG9ydFZl
Y3RvckZyb21MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRTdHJpbmdGcm9tVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICopOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZXRS
YXdDb29raWVzKToKKworMjAxNy0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKICAgICAgICAgQ2xlYW51cCAiYWRkQ29va2llIiBhbmQgaXRzIHNvbGUgdXNlci4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4NgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IDcyNGFiYWI0ZTA2Li5lNDdlN2JiZmY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTIzLDkgKzIzLDkgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgQ29va2llX2gKLSNkZWZpbmUgQ29va2llX2gKKyNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDb29raWUgewogICAgIENvb2tpZSgpIHsgfQogCi0gICAg
Q29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0
cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24pCisgICAgQ29va2llKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJl
LCBib29sIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgY29tbWVudCwgY29uc3QgVVJMJiBjb21tZW50
VVJMLCBjb25zdCBWZWN0b3I8dWludDE2X3Q+IHBvcnRzKQogICAgICAgICA6IG5hbWUobmFtZSkK
ICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKICAgICAgICAgLCBkb21haW4oZG9tYWluKQpAQCAtNDcs
NiArNDcsOSBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICAgICAgLCBodHRwT25seShodHRwT25seSkK
ICAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQogICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKKyAg
ICAgICAgLCBjb21tZW50KGNvbW1lbnQpCisgICAgICAgICwgY29tbWVudFVSTChjb21tZW50VVJM
KQorICAgICAgICAsIHBvcnRzKHBvcnRzKQogICAgIHsKICAgICB9CiAKQEAgLTU0LDYgKzU3LDcg
QEAgc3RydWN0IENvb2tpZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsKIAogI2lmZGVmIF9fT0JKQ19fCisgICAgV0VC
Q09SRV9FWFBPUlQgQ29va2llKE5TSFRUUENvb2tpZSAqKTsKICAgICBvcGVyYXRvciBOU0hUVFBD
b29raWUgKigpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2LDYgKzcwLDEwIEBAIHN0cnVjdCBDb29r
aWUgewogICAgIGJvb2wgaHR0cE9ubHk7CiAgICAgYm9vbCBzZWN1cmU7CiAgICAgYm9vbCBzZXNz
aW9uOworICAgIFN0cmluZyBjb21tZW50OworICAgIFVSTCBjb21tZW50VVJMOworICAgIFZlY3Rv
cjx1aW50MTZfdD4gcG9ydHM7CisKIH07CiAKIHN0cnVjdCBDb29raWVIYXNoIHsKQEAgLTgzLDE0
ICs5MSw3IEBAIHN0cnVjdCBDb29raWVIYXNoIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIENvb2tpZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBuYW1lOwotICAgIGVuY29kZXIgPDwgdmFsdWU7Ci0gICAgZW5jb2RlciA8PCBkb21haW47
Ci0gICAgZW5jb2RlciA8PCBwYXRoOwotICAgIGVuY29kZXIgPDwgZXhwaXJlczsKLSAgICBlbmNv
ZGVyIDw8IGh0dHBPbmx5OwotICAgIGVuY29kZXIgPDwgc2VjdXJlOwotICAgIGVuY29kZXIgPDwg
c2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8IG5hbWUgPDwgdmFsdWUgPDwgZG9tYWluIDw8IHBhdGgg
PDwgZXhwaXJlcyA8PCBodHRwT25seSA8PCBzZWN1cmUgPDwgc2Vzc2lvbiA8PCBjb21tZW50IDw8
IGNvbW1lbnRVUkwgPDwgcG9ydHM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0x
MTIsNiArMTEzLDEyIEBAIGJvb2wgQ29va2llOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29v
a2llJiBjb29raWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvb2tpZS5zZXNzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29va2llLmNvbW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuY29tbWVudFVSTCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wb3J0cykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI0LDUgKzEzMSwzIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIFdlYkNvcmU6OkNvb2tpZUhhc2ggSGFzaDsK
ICAgICB9OwogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCmluZGV4IGMxMTIyYjFiMjg1Li40MjNiNzg3OTdl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nv
b2tpZUNvY29hLm1tCkBAIC0yNiwyOCArMjYsODIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiQ29va2llLmgiCiAKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorc3RhdGljIFZlY3Rvcjx1aW50MTZfdD4gcG9ydFZlY3RvckZyb21MaXN0KE5TQXJyYXk8TlNO
dW1iZXIgKj4gKnBvcnRMaXN0KQoreworICAgIFZlY3Rvcjx1aW50MTZfdD4gcG9ydHM7CisgICAg
cG9ydHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwb3J0TGlzdC5jb3VudCk7CisKKyAgICBmb3Ig
KE5TTnVtYmVyICpwb3J0IDogcG9ydExpc3QpCisgICAgICAgIHBvcnRzLnVuY2hlY2tlZEFwcGVu
ZChwb3J0LnVuc2lnbmVkU2hvcnRWYWx1ZSk7CisKKyAgICByZXR1cm4gcG9ydHM7Cit9CisKK3N0
YXRpYyBOU1N0cmluZyAqcG9ydFN0cmluZ0Zyb21WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQxNl90
PiYgcG9ydHMpCit7CisgICAgaWYgKHBvcnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBvcnRzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6Om51bWJlcihwb3J0c1tpXSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAg
ICB9CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9ydHMubGFzdCgpKSk7CisK
KyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitDb29raWU6OkNvb2tpZShOU0hU
VFBDb29raWUgKmNvb2tpZSkKKyAgICA6IENvb2tpZShjb29raWUubmFtZSwgY29va2llLnZhbHVl
LCBjb29raWUuZG9tYWluLCBjb29raWUucGF0aCwgW2Nvb2tpZS5leHBpcmVzRGF0ZSB0aW1lSW50
ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4wLAorICAgIGNvb2tpZS5IVFRQT25seSwgY29va2llLnNl
Y3VyZSwgY29va2llLnNlc3Npb25Pbmx5LCBjb29raWUuY29tbWVudCwgY29va2llLmNvbW1lbnRV
UkwsIHBvcnRWZWN0b3JGcm9tTGlzdChjb29raWUucG9ydExpc3QpKQoreworfQorCiBDb29raWU6
Om9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogZXhpc3Rp
bmcgQVBJcyBkbyBub3QgcHJvdmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91dCBwYXJz
aW5nIGhlYWRlcnMgZnJvbSBzY3JhdGNoLgogCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJvcGVydGllcyA9IFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6MTFdOworCisgICAgaWYgKCFjb21tZW50Lmlz
TnVsbCgpKQorICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopY29tbWVu
dCBmb3JLZXk6TlNIVFRQQ29va2llQ29tbWVudF07CisKKyAgICBpZiAoIWNvbW1lbnRVUkwuaXNO
dWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNVUkwgKiljb21tZW50VVJM
IGZvcktleTpOU0hUVFBDb29raWVDb21tZW50VVJMXTsKKworICAgIGlmICghZG9tYWluLmlzTnVs
bCgpKQorICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopZG9tYWluIGZv
cktleTpOU0hUVFBDb29raWVEb21haW5dOworCisgICAgaWYgKCFuYW1lLmlzTnVsbCgpKQorICAg
ICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopbmFtZSBmb3JLZXk6TlNIVFRQ
Q29va2llTmFtZV07CisKKyAgICBpZiAoIXBhdGguaXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0
aWVzIHNldE9iamVjdDooTlNTdHJpbmcgKilwYXRoIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsK
KworICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVj
dDooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOworCisgICAgTlNE
YXRlICpleHBpcmF0aW9uRGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5
NzA6ZXhwaXJlcyAvIDEwMDAuMF07CisgICAgYXV0byBtYXhBZ2UgPSBbZXhwaXJhdGlvbkRhdGUg
dGltZUludGVydmFsU2luY2VOb3ddOworICAgIGlmIChtYXhBZ2UgPiAwKQorICAgICAgICBbcHJv
cGVydGllcyBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZiIsIG1heEFn
ZV0gZm9yS2V5Ok5TSFRUUENvb2tpZU1heGltdW1BZ2VdOworCisgICAgYXV0byogcG9ydFN0cmlu
ZyA9IHBvcnRTdHJpbmdGcm9tVmVjdG9yKHBvcnRzKTsKKyAgICBpZiAocG9ydFN0cmluZykKKyAg
ICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OnBvcnRTdHJpbmcgZm9yS2V5Ok5TSFRUUENvb2tp
ZVBvcnRdOworCisgICAgaWYgKHNlY3VyZSkKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0
OkAiWUVTIiBmb3JLZXk6TlNIVFRQQ29va2llU2VjdXJlXTsKIAotICAgIHJldHVybiBbTlNIVFRQ
Q29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7Ci0gICAgICAgIE5TSFRUUENvb2tpZU5hbWU6
IG5hbWUsCi0gICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiB2YWx1ZSwKLSAgICAgICAgTlNIVFRQ
Q29va2llRG9tYWluOiBkb21haW4sCi0gICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IHBhdGgsCi0g
ICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogZG9tYWluLAotICAgICAgICBOU0hUVFBDb29raWVT
ZWN1cmU6IEAoc2VjdXJlKSwKLSAgICAgICAgTlNIVFRQQ29va2llRGlzY2FyZDogQChzZXNzaW9u
KSwKLSAgICAgICAgTlNIVFRQQ29va2llRXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRl
cnZhbFNpbmNlMTk3MDpleHBpcmVzIC8gMTAwMC4wXSwKLSAgICAgICAgfV07CisgICAgW3Byb3Bl
cnRpZXMgc2V0T2JqZWN0OnNlc3Npb24gPyBAIlRSVUUiIDogQCJGQUxTRSIgZm9yS2V5Ok5TSFRU
UENvb2tpZURpc2NhcmRdOworICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDpAIjEiIGZvcktleTpO
U0hUVFBDb29raWVWZXJzaW9uXTsKIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpwcm9wZXJ0aWVzXTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDIzZjcwMTVlNWI5Li40N2Q1
NjkxMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llSmFyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZUphck1hYy5tbQpAQCAtMjI4LDkgKzIyOCw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBOU0hUVFBDb29raWUgKmNv
b2tpZSA9IChOU0hUVFBDb29raWUgKilbY29va2llcyBvYmplY3RBdEluZGV4OmldOwotICAgICAg
ICBOU1RpbWVJbnRlcnZhbCBleHBpcmVzID0gW1tjb29raWUgZXhwaXJlc0RhdGVdIHRpbWVJbnRl
cnZhbFNpbmNlMTk3MF0gKiAxMDAwOwotICAgICAgICByYXdDb29raWVzLnVuY2hlY2tlZEFwcGVu
ZChDb29raWUoW2Nvb2tpZSBuYW1lXSwgW2Nvb2tpZSB2YWx1ZV0sIFtjb29raWUgZG9tYWluXSwg
W2Nvb2tpZSBwYXRoXSwgZXhwaXJlcywKLSAgICAgICAgICAgIFtjb29raWUgaXNIVFRQT25seV0s
IFtjb29raWUgaXNTZWN1cmVdLCBbY29va2llIGlzU2Vzc2lvbk9ubHldKSk7CisgICAgICAgIHJh
d0Nvb2tpZXMudW5jaGVja2VkQXBwZW5kKHsgY29va2llIH0pOwogICAgIH0KIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304210</attachid>
            <date>2017-03-12 17:08:04 -0700</date>
            <delta_ts>2017-03-12 17:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>c1.txt</filename>
            <type>text/plain</type>
            <size>8055</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMzk5YjVjMTM4NS4uMjhhNGUwZWIyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOCBAQAogMjAxNy0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6OkNv
b2tpZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIHRlc3RhYmxlIGJlaGF2aW9yIGNoYW5nZSBmb3Igbm93
KS4KKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tpZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llOjpDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llOjpkZWNvZGUpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cG9ydFZl
Y3RvckZyb21MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRTdHJpbmdGcm9tVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICopOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZXRS
YXdDb29raWVzKToKKworMjAxNy0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKICAgICAgICAgQ2xlYW51cCAiYWRkQ29va2llIiBhbmQgaXRzIHNvbGUgdXNlci4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4NgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IDcyNGFiYWI0ZTA2Li5lNDdlN2JiZmY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTIzLDkgKzIzLDkgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgQ29va2llX2gKLSNkZWZpbmUgQ29va2llX2gKKyNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDb29raWUgewogICAgIENvb2tpZSgpIHsgfQogCi0gICAg
Q29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0
cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24pCisgICAgQ29va2llKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJl
LCBib29sIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgY29tbWVudCwgY29uc3QgVVJMJiBjb21tZW50
VVJMLCBjb25zdCBWZWN0b3I8dWludDE2X3Q+IHBvcnRzKQogICAgICAgICA6IG5hbWUobmFtZSkK
ICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKICAgICAgICAgLCBkb21haW4oZG9tYWluKQpAQCAtNDcs
NiArNDcsOSBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICAgICAgLCBodHRwT25seShodHRwT25seSkK
ICAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQogICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKKyAg
ICAgICAgLCBjb21tZW50KGNvbW1lbnQpCisgICAgICAgICwgY29tbWVudFVSTChjb21tZW50VVJM
KQorICAgICAgICAsIHBvcnRzKHBvcnRzKQogICAgIHsKICAgICB9CiAKQEAgLTU0LDYgKzU3LDcg
QEAgc3RydWN0IENvb2tpZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImLCBDb29raWUmKTsKIAogI2lmZGVmIF9fT0JKQ19fCi0gICAgb3Bl
cmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tp
ZSAqKCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNjYsNiArNzAsMTAgQEAgc3RydWN0IENvb2tpZSB7
CiAgICAgYm9vbCBodHRwT25seTsKICAgICBib29sIHNlY3VyZTsKICAgICBib29sIHNlc3Npb247
CisgICAgU3RyaW5nIGNvbW1lbnQ7CisgICAgVVJMIGNvbW1lbnRVUkw7CisgICAgVmVjdG9yPHVp
bnQxNl90PiBwb3J0czsKKwogfTsKIAogc3RydWN0IENvb2tpZUhhc2ggewpAQCAtODMsMTQgKzkx
LDcgQEAgc3RydWN0IENvb2tpZUhhc2ggewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
Q29va2llOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IG5hbWU7Ci0gICAgZW5jb2RlciA8PCB2YWx1ZTsKLSAgICBlbmNvZGVyIDw8IGRvbWFpbjsKLSAg
ICBlbmNvZGVyIDw8IHBhdGg7Ci0gICAgZW5jb2RlciA8PCBleHBpcmVzOwotICAgIGVuY29kZXIg
PDwgaHR0cE9ubHk7Ci0gICAgZW5jb2RlciA8PCBzZWN1cmU7Ci0gICAgZW5jb2RlciA8PCBzZXNz
aW9uOworICAgIGVuY29kZXIgPDwgbmFtZSA8PCB2YWx1ZSA8PCBkb21haW4gPDwgcGF0aCA8PCBl
eHBpcmVzIDw8IGh0dHBPbmx5IDw8IHNlY3VyZSA8PCBzZXNzaW9uIDw8IGNvbW1lbnQgPDwgY29t
bWVudFVSTCA8PCBwb3J0czsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTExMiw2
ICsxMTMsMTIgQEAgYm9vbCBDb29raWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb29raWUm
IGNvb2tpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29va2llLnNlc3Npb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb29raWUuY29tbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvb2tpZS5jb21tZW50VVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBvcnRzKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjQsNSArMTMxLDMgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6Q29va2llSGFzaCBIYXNoOwogICAg
IH07CiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvQ29va2llQ29jb2EubW0KaW5kZXggYzExMjJiMWIyODUuLjQyM2I3ODc5N2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
Q29jb2EubW0KQEAgLTI2LDI4ICsyNiw4MiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJDb29raWUuaCIKIAotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgVmVjdG9yPHVpbnQxNl90PiBwb3J0VmVjdG9yRnJvbUxpc3QoTlNBcnJheTxOU051bWJl
ciAqPiAqcG9ydExpc3QpCit7CisgICAgVmVjdG9yPHVpbnQxNl90PiBwb3J0czsKKyAgICBwb3J0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBvcnRMaXN0LmNvdW50KTsKKworICAgIGZvciAoTlNO
dW1iZXIgKnBvcnQgOiBwb3J0TGlzdCkKKyAgICAgICAgcG9ydHMudW5jaGVja2VkQXBwZW5kKHBv
cnQudW5zaWduZWRTaG9ydFZhbHVlKTsKKworICAgIHJldHVybiBwb3J0czsKK30KKworc3RhdGlj
IE5TU3RyaW5nICpwb3J0U3RyaW5nRnJvbVZlY3Rvcihjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBw
b3J0cykKK3sKKyAgICBpZiAocG9ydHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cG9ydHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKHBvcnRzW2ldKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgIH0K
KyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihwb3J0cy5sYXN0KCkpKTsKKworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK0Nvb2tpZTo6Q29va2llKE5TSFRUUENv
b2tpZSAqY29va2llKQorICAgIDogQ29va2llKGNvb2tpZS5uYW1lLCBjb29raWUudmFsdWUsIGNv
b2tpZS5kb21haW4sIGNvb2tpZS5wYXRoLCBbY29va2llLmV4cGlyZXNEYXRlIHRpbWVJbnRlcnZh
bFNpbmNlMTk3MF0gKiAxMDAwLjAsCisgICAgY29va2llLkhUVFBPbmx5LCBjb29raWUuc2VjdXJl
LCBjb29raWUuc2Vzc2lvbk9ubHksIGNvb2tpZS5jb21tZW50LCBjb29raWUuY29tbWVudFVSTCwg
cG9ydFZlY3RvckZyb21MaXN0KGNvb2tpZS5wb3J0TGlzdCkpCit7Cit9CisKIENvb2tpZTo6b3Bl
cmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBleGlzdGluZyBB
UElzIGRvIG5vdCBwcm92aWRlIGEgd2F5IHRvIHNldCBodHRwT25seSB3aXRob3V0IHBhcnNpbmcg
aGVhZGVycyBmcm9tIHNjcmF0Y2guCiAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
KyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcm9wZXJ0aWVzID0gW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eToxMV07CisKKyAgICBpZiAoIWNvbW1lbnQuaXNOdWxs
KCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNTdHJpbmcgKiljb21tZW50IGZv
cktleTpOU0hUVFBDb29raWVDb21tZW50XTsKKworICAgIGlmICghY29tbWVudFVSTC5pc051bGwo
KSkKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OihOU1VSTCAqKWNvbW1lbnRVUkwgZm9y
S2V5Ok5TSFRUUENvb2tpZUNvbW1lbnRVUkxdOworCisgICAgaWYgKCFkb21haW4uaXNOdWxsKCkp
CisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNTdHJpbmcgKilkb21haW4gZm9yS2V5
Ok5TSFRUUENvb2tpZURvbWFpbl07CisKKyAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCisgICAgICAg
IFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNTdHJpbmcgKiluYW1lIGZvcktleTpOU0hUVFBDb29r
aWVOYW1lXTsKKworICAgIGlmICghcGF0aC5pc051bGwoKSkKKyAgICAgICAgW3Byb3BlcnRpZXMg
c2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGggZm9yS2V5Ok5TSFRUUENvb2tpZVBhdGhdOworCisg
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OihO
U1N0cmluZyAqKXZhbHVlIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CisKKyAgICBOU0RhdGUg
KmV4cGlyYXRpb25EYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpl
eHBpcmVzIC8gMTAwMC4wXTsKKyAgICBhdXRvIG1heEFnZSA9IFtleHBpcmF0aW9uRGF0ZSB0aW1l
SW50ZXJ2YWxTaW5jZU5vd107CisgICAgaWYgKG1heEFnZSA+IDApCisgICAgICAgIFtwcm9wZXJ0
aWVzIHNldE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVmIiwgbWF4QWdlXSBm
b3JLZXk6TlNIVFRQQ29va2llTWF4aW11bUFnZV07CisKKyAgICBhdXRvKiBwb3J0U3RyaW5nID0g
cG9ydFN0cmluZ0Zyb21WZWN0b3IocG9ydHMpOworICAgIGlmIChwb3J0U3RyaW5nKQorICAgICAg
ICBbcHJvcGVydGllcyBzZXRPYmplY3Q6cG9ydFN0cmluZyBmb3JLZXk6TlNIVFRQQ29va2llUG9y
dF07CisKKyAgICBpZiAoc2VjdXJlKQorICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6QCJZ
RVMiIGZvcktleTpOU0hUVFBDb29raWVTZWN1cmVdOwogCi0gICAgcmV0dXJuIFtOU0hUVFBDb29r
aWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKLSAgICAgICAgTlNIVFRQQ29va2llTmFtZTogbmFt
ZSwKLSAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IHZhbHVlLAotICAgICAgICBOU0hUVFBDb29r
aWVEb21haW46IGRvbWFpbiwKLSAgICAgICAgTlNIVFRQQ29va2llUGF0aDogcGF0aCwKLSAgICAg
ICAgTlNIVFRQQ29va2llRG9tYWluOiBkb21haW4sCi0gICAgICAgIE5TSFRUUENvb2tpZVNlY3Vy
ZTogQChzZWN1cmUpLAotICAgICAgICBOU0hUVFBDb29raWVEaXNjYXJkOiBAKHNlc3Npb24pLAot
ICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFs
U2luY2UxOTcwOmV4cGlyZXMgLyAxMDAwLjBdLAotICAgICAgICB9XTsKKyAgICBbcHJvcGVydGll
cyBzZXRPYmplY3Q6c2Vzc2lvbiA/IEAiVFJVRSIgOiBAIkZBTFNFIiBmb3JLZXk6TlNIVFRQQ29v
a2llRGlzY2FyZF07CisgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OkAiMSIgZm9yS2V5Ok5TSFRU
UENvb2tpZVZlcnNpb25dOwogCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIHJl
dHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXNdOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KaW5kZXggMjNmNzAxNWU1YjkuLjQ3ZDU2OTEx
OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29v
a2llSmFyTWFjLm1tCkBAIC0yMjgsOSArMjI4LDcgQEAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LAog
ICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVn
ZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIE5TSFRUUENvb2tpZSAqY29va2ll
ID0gKE5TSFRUUENvb2tpZSAqKVtjb29raWVzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgIE5T
VGltZUludGVydmFsIGV4cGlyZXMgPSBbW2Nvb2tpZSBleHBpcmVzRGF0ZV0gdGltZUludGVydmFs
U2luY2UxOTcwXSAqIDEwMDA7Ci0gICAgICAgIHJhd0Nvb2tpZXMudW5jaGVja2VkQXBwZW5kKENv
b2tpZShbY29va2llIG5hbWVdLCBbY29va2llIHZhbHVlXSwgW2Nvb2tpZSBkb21haW5dLCBbY29v
a2llIHBhdGhdLCBleHBpcmVzLAotICAgICAgICAgICAgW2Nvb2tpZSBpc0hUVFBPbmx5XSwgW2Nv
b2tpZSBpc1NlY3VyZV0sIFtjb29raWUgaXNTZXNzaW9uT25seV0pKTsKKyAgICAgICAgcmF3Q29v
a2llcy51bmNoZWNrZWRBcHBlbmQoeyBjb29raWUgfSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304211</attachid>
            <date>2017-03-12 17:51:27 -0700</date>
            <delta_ts>2017-03-12 18:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169514-20170312175127.patch</filename>
            <type>text/plain</type>
            <size>8252</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5OWI1YzEzODU2ODM5
M2FjMDFmMDM5M2IxZWFjMjVhZWExYWM0ZS4uZjc2ZjgxNjY2ODEwYjhiNzMxMTM3MmY3OGZkODRh
ODc1NmJjOTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTAzLTExICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgZnVsbCBOU0hUVFBD
b29raWUgZmlkZWxpdHkgdG8gV2ViQ29yZTo6Q29va2llLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIHRlc3Rh
YmxlIGJlaGF2aW9yIGNoYW5nZSBmb3Igbm93KS4KKworICAgICAgICAqIHBsYXRmb3JtL0Nvb2tp
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpkZWNvZGUpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6cG9ydFZlY3RvckZyb21MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnBvcnRTdHJpbmdGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6Q29v
a2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llICop
OgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpnZXRSYXdDb29raWVzKToKKworMjAxNy0wMy0xMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgQ2xlYW51cCAiYWRkQ29v
a2llIiBhbmQgaXRzIHNvbGUgdXNlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTQ4NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IDcy
NGFiYWI0ZTA2YTAzMzdkZDYzYjJiMDcwZTUwOTk3ZjJkZGYwZGIuLmU0N2U3YmJmZjViYjNhYmM2
M2FiM2Y5MjhmYzI3NDE1NWUxMDRmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC0y
Myw5ICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIENvb2tpZV9oCi0j
ZGVmaW5lIENvb2tpZV9oCisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ29va2ll
IHsKICAgICBDb29raWUoKSB7IH0KIAotICAgIENvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGRvdWJsZSBleHBpcmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNz
aW9uKQorICAgIENvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVz
LCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uLCBjb25zdCBTdHJpbmcm
IGNvbW1lbnQsIGNvbnN0IFVSTCYgY29tbWVudFVSTCwgY29uc3QgVmVjdG9yPHVpbnQxNl90PiBw
b3J0cykKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwgdmFsdWUodmFsdWUpCiAgICAg
ICAgICwgZG9tYWluKGRvbWFpbikKQEAgLTQ3LDYgKzQ3LDkgQEAgc3RydWN0IENvb2tpZSB7CiAg
ICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCiAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKICAg
ICAgICAgLCBzZXNzaW9uKHNlc3Npb24pCisgICAgICAgICwgY29tbWVudChjb21tZW50KQorICAg
ICAgICAsIGNvbW1lbnRVUkwoY29tbWVudFVSTCkKKyAgICAgICAgLCBwb3J0cyhwb3J0cykKICAg
ICB7CiAgICAgfQogCkBAIC01NCw2ICs1Nyw3IEBAIHN0cnVjdCBDb29raWUgewogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgQ29va2llJik7
CiAKICNpZmRlZiBfX09CSkNfXworICAgIFdFQkNPUkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29r
aWUgKik7CiAgICAgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRpZgogCkBA
IC02Niw2ICs3MCwxMCBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBib29sIGh0dHBPbmx5OwogICAg
IGJvb2wgc2VjdXJlOwogICAgIGJvb2wgc2Vzc2lvbjsKKyAgICBTdHJpbmcgY29tbWVudDsKKyAg
ICBVUkwgY29tbWVudFVSTDsKKyAgICBWZWN0b3I8dWludDE2X3Q+IHBvcnRzOworCiB9OwogCiBz
dHJ1Y3QgQ29va2llSGFzaCB7CkBAIC04MywxNCArOTEsNyBAQCBzdHJ1Y3QgQ29va2llSGFzaCB7
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBDb29raWU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbmFtZTsKLSAgICBlbmNvZGVyIDw8IHZh
bHVlOwotICAgIGVuY29kZXIgPDwgZG9tYWluOwotICAgIGVuY29kZXIgPDwgcGF0aDsKLSAgICBl
bmNvZGVyIDw8IGV4cGlyZXM7Ci0gICAgZW5jb2RlciA8PCBodHRwT25seTsKLSAgICBlbmNvZGVy
IDw8IHNlY3VyZTsKLSAgICBlbmNvZGVyIDw8IHNlc3Npb247CisgICAgZW5jb2RlciA8PCBuYW1l
IDw8IHZhbHVlIDw8IGRvbWFpbiA8PCBwYXRoIDw8IGV4cGlyZXMgPDwgaHR0cE9ubHkgPDwgc2Vj
dXJlIDw8IHNlc3Npb24gPDwgY29tbWVudCA8PCBjb21tZW50VVJMIDw8IHBvcnRzOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTEyLDYgKzExMywxMiBAQCBib29sIENvb2tpZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvb2tpZSYgY29va2llKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2Vzc2lvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5jb21tZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmNv
bW1lbnRVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb29raWUucG9ydHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTEyNCw1ICsxMzEsMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRl
ZiBXZWJDb3JlOjpDb29raWVIYXNoIEhhc2g7CiAgICAgfTsKIH0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpp
bmRleCBjMTEyMmIxYjI4NTdjMzlmMGZiNjEyYWNmMjZkNTEzNjc4MDgxOTVjLi45YmEwNjA4MDE0
MGYwZTBjM2EzNDNkOTY0N2U5OTM2NjM2Nzc2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KQEAgLTI2LDI4ICsyNiw4
MCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb29raWUuaCIKIAotI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgVmVjdG9yPHVpbnQxNl90PiBw
b3J0VmVjdG9yRnJvbUxpc3QoTlNBcnJheTxOU051bWJlciAqPiAqcG9ydExpc3QpCit7CisgICAg
VmVjdG9yPHVpbnQxNl90PiBwb3J0czsKKyAgICBwb3J0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHBvcnRMaXN0LmNvdW50KTsKKworICAgIGZvciAoTlNOdW1iZXIgKnBvcnQgOiBwb3J0TGlzdCkK
KyAgICAgICAgcG9ydHMudW5jaGVja2VkQXBwZW5kKHBvcnQudW5zaWduZWRTaG9ydFZhbHVlKTsK
KworICAgIHJldHVybiBwb3J0czsKK30KKworc3RhdGljIE5TU3RyaW5nICpwb3J0U3RyaW5nRnJv
bVZlY3Rvcihjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBwb3J0cykKK3sKKyAgICBpZiAocG9ydHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byAqc3RyaW5nID0gW05T
TXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoQ2FwYWNpdHk6cG9ydHMuc2l6ZSgpICogNV07CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLnNpemUoKSAtIDE7ICsraSkKKyAgICAgICAg
W3N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlIiBQUkl1MTYgIiwgIiwgcG9ydHNbaV1dOworCisgICAg
W3N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlIiBQUkl1MTYsIHBvcnRzLmxhc3QoKV07CisKKyAgICBy
ZXR1cm4gc3RyaW5nOworfQorCitDb29raWU6OkNvb2tpZShOU0hUVFBDb29raWUgKmNvb2tpZSkK
KyAgICA6IENvb2tpZShjb29raWUubmFtZSwgY29va2llLnZhbHVlLCBjb29raWUuZG9tYWluLCBj
b29raWUucGF0aCwgW2Nvb2tpZS5leHBpcmVzRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICog
MTAwMC4wLAorICAgIGNvb2tpZS5IVFRQT25seSwgY29va2llLnNlY3VyZSwgY29va2llLnNlc3Np
b25Pbmx5LCBjb29raWUuY29tbWVudCwgY29va2llLmNvbW1lbnRVUkwsIHBvcnRWZWN0b3JGcm9t
TGlzdChjb29raWUucG9ydExpc3QpKQoreworfQorCiBDb29raWU6Om9wZXJhdG9yIE5TSFRUUENv
b2tpZSAqKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogZXhpc3RpbmcgQVBJcyBkbyBub3QgcHJv
dmlkZSBhIHdheSB0byBzZXQgaHR0cE9ubHkgd2l0aG91dCBwYXJzaW5nIGhlYWRlcnMgZnJvbSBz
Y3JhdGNoLgogCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqcHJvcGVydGllcyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoQ2FwYWNpdHk6MTFdOworCisgICAgaWYgKCFjb21tZW50LmlzTnVsbCgpKQorICAgICAgICBb
cHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopY29tbWVudCBmb3JLZXk6TlNIVFRQQ29v
a2llQ29tbWVudF07CisKKyAgICBpZiAoIWNvbW1lbnRVUkwuaXNOdWxsKCkpCisgICAgICAgIFtw
cm9wZXJ0aWVzIHNldE9iamVjdDooTlNVUkwgKiljb21tZW50VVJMIGZvcktleTpOU0hUVFBDb29r
aWVDb21tZW50VVJMXTsKKworICAgIGlmICghZG9tYWluLmlzTnVsbCgpKQorICAgICAgICBbcHJv
cGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopZG9tYWluIGZvcktleTpOU0hUVFBDb29raWVE
b21haW5dOworCisgICAgaWYgKCFuYW1lLmlzTnVsbCgpKQorICAgICAgICBbcHJvcGVydGllcyBz
ZXRPYmplY3Q6KE5TU3RyaW5nICopbmFtZSBmb3JLZXk6TlNIVFRQQ29va2llTmFtZV07CisKKyAg
ICBpZiAoIXBhdGguaXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNT
dHJpbmcgKilwYXRoIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKKworICAgIGlmICghdmFsdWUu
aXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNTdHJpbmcgKil2YWx1
ZSBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOworCisgICAgTlNEYXRlICpleHBpcmF0aW9uRGF0
ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZXhwaXJlcyAvIDEwMDAu
MF07CisgICAgYXV0byBtYXhBZ2UgPSBbZXhwaXJhdGlvbkRhdGUgdGltZUludGVydmFsU2luY2VO
b3ddOworICAgIGlmIChtYXhBZ2UgPiAwKQorICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZiIsIG1heEFnZV0gZm9yS2V5Ok5TSFRUUENv
b2tpZU1heGltdW1BZ2VdOworCisgICAgYXV0byogcG9ydFN0cmluZyA9IHBvcnRTdHJpbmdGcm9t
VmVjdG9yKHBvcnRzKTsKKyAgICBpZiAocG9ydFN0cmluZykKKyAgICAgICAgW3Byb3BlcnRpZXMg
c2V0T2JqZWN0OnBvcnRTdHJpbmcgZm9yS2V5Ok5TSFRUUENvb2tpZVBvcnRdOwogCi0gICAgcmV0
dXJuIFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKLSAgICAgICAgTlNIVFRQ
Q29va2llTmFtZTogbmFtZSwKLSAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IHZhbHVlLAotICAg
ICAgICBOU0hUVFBDb29raWVEb21haW46IGRvbWFpbiwKLSAgICAgICAgTlNIVFRQQ29va2llUGF0
aDogcGF0aCwKLSAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBkb21haW4sCi0gICAgICAgIE5T
SFRUUENvb2tpZVNlY3VyZTogQChzZWN1cmUpLAotICAgICAgICBOU0hUVFBDb29raWVEaXNjYXJk
OiBAKHNlc3Npb24pLAotICAgICAgICBOU0hUVFBDb29raWVFeHBpcmVzOiBbTlNEYXRlIGRhdGVX
aXRoVGltZUludGVydmFsU2luY2UxOTcwOmV4cGlyZXMgLyAxMDAwLjBdLAotICAgICAgICB9XTsK
KyAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6QChzZWN1cmUpIGZvcktleTpOU0hUVFBDb29raWVT
ZWN1cmVdOworICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooc2Vzc2lvbiA/IEAiVFJVRSIgOiBA
IkZBTFNFIikgZm9yS2V5Ok5TSFRUUENvb2tpZURpc2NhcmRdOworICAgIFtwcm9wZXJ0aWVzIHNl
dE9iamVjdDpAIjEiIGZvcktleTpOU0hUVFBDb29raWVWZXJzaW9uXTsKIAotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJv
cGVydGllczpwcm9wZXJ0aWVzXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmlu
ZGV4IDIzZjcwMTVlNWI5NDk4MzgyODFlMTkyZTMyMmUzZGY5NWVmMGYyNTMuLjQ3ZDU2OTExOTEx
ZmViY2YwMjZmZGQyYzI2YzA5NWViODc4YTgwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTIyOCw5ICsyMjgsNyBA
QCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksCiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAg
ICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQQ29va2llICopW2Nvb2tpZXMgb2Jq
ZWN0QXRJbmRleDppXTsKLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZXhwaXJlcyA9IFtbY29va2ll
IGV4cGlyZXNEYXRlXSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMDsKLSAgICAgICAgcmF3
Q29va2llcy51bmNoZWNrZWRBcHBlbmQoQ29va2llKFtjb29raWUgbmFtZV0sIFtjb29raWUgdmFs
dWVdLCBbY29va2llIGRvbWFpbl0sIFtjb29raWUgcGF0aF0sIGV4cGlyZXMsCi0gICAgICAgICAg
ICBbY29va2llIGlzSFRUUE9ubHldLCBbY29va2llIGlzU2VjdXJlXSwgW2Nvb2tpZSBpc1Nlc3Np
b25Pbmx5XSkpOworICAgICAgICByYXdDb29raWVzLnVuY2hlY2tlZEFwcGVuZCh7IGNvb2tpZSB9
KTsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>