<?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>155923</bug_id>
          
          <creation_ts>2016-03-26 00:03:40 -0700</creation_ts>
          <short_desc>Audit WebCore builtins for user overridable code</short_desc>
          <delta_ts>2016-04-04 11:50:31 -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>0</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178268</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-26 00:03:40 -0700</bug_when>
    <thetext>* SUMMARY
Looking over the different WebCore builtins, it seems there are a few builtins that can use user overridable code.

&lt;script&gt;
&lt;!-- Fetch --&gt;
Array.prototype.forEach = function() { throw &quot;User overriden&quot;; };
new Headers({a:1}) // throws exception
&lt;/script&gt;

&lt;script&gt;
&lt;!-- Streams --&gt;
Object.defineProperty = function() { throw &quot;User overriden&quot;; };
new ByteLengthQueuingStrategy({}) // throws exception
&lt;/script&gt;

&lt;script&gt;
&lt;!-- Streams --&gt;
Object.defineProperty = function() { throw &quot;User overriden&quot;; };
new CountQueuingStrategy({}) // throws exception
&lt;/script&gt;

Not really sure how we can catch this when JSC first parses these scripts. For constructor functions, it seems like it might be possible (Object.defineProperty =&gt; @Object.@defineProperty) but for native prototype methods (an overridden Array.prototype.forEach) I&apos;m not sure how feasible that is. Likewise, a catching this at build time, or scanning the source with RegExps would be brittle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178269</commentid>
    <comment_count>1</comment_count>
      <attachid>274981</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-26 00:07:33 -0700</bug_when>
    <thetext>Created attachment 274981
[PATCH] WIP - Needs Tests

Haven&apos;t yet written tests. Still have to decide where they should go. Its nice that all the test coverage for this code is in imported w3c tests directories, but these kind of tests seem like they would be ridiculous to have as part of w3c. So it&apos;ll take a bunch of boilerplate to setup some LayoutTests directories and stuff for this which I&apos;ll get around to doing in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178273</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-26 02:18:59 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 274981 [details]
&gt; [PATCH] WIP - Needs Tests
&gt; 
&gt; Haven&apos;t yet written tests. Still have to decide where they should go. Its
&gt; nice that all the test coverage for this code is in imported w3c tests
&gt; directories, but these kind of tests seem like they would be ridiculous to
&gt; have as part of w3c. So it&apos;ll take a bunch of boilerplate to setup some
&gt; LayoutTests directories and stuff for this which I&apos;ll get around to doing in
&gt; a bit.

Thanks for taking care of that issue.
In the same vein, it might be good to check WebRTC use of JS built-ins.
IIRC, some of WebRTC built-ins are/were using Promise.then directly.

As of tests, imported/w3c might not be a very good place since these shielding-tests are really WebKit specific.
There are already some shielding-tests in LayoutTests/streams.
For fetch, it might make sense to create a new folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178292</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-26 11:48:07 -0700</bug_when>
    <thetext>I wonder if we could write a rule for this.
If the base is private will we ever access a 
public property on it?
I.e can we assume that all accesses on @Object should
be private? And apply the rule recursively through the 
access chain?

Or do we have places where we really do need a private base
and public property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178401</commentid>
    <comment_count>4</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-03-28 03:16:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I wonder if we could write a rule for this.
&gt; If the base is private will we ever access a 
&gt; public property on it?
&gt; I.e can we assume that all accesses on @Object should
&gt; be private? And apply the rule recursively through the 
&gt; access chain?
&gt; 
&gt; Or do we have places where we really do need a private base
&gt; and public property?

I think we can assume that all accesses to any @Object-like objects should be strictly private and protected.

And IIRC, in the Streams API code we don&apos;t access any public property, all code is based on internal slots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178457</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-28 10:50:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I wonder if we could write a rule for this.
&gt; If the base is private will we ever access a 
&gt; public property on it?

There are instances of @RegExp.prototype in JavaScriptCore/builtins and @Promise.prototype in WebCore/streams builtins. I&apos;m not sure how safe that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178461</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-28 10:59:38 -0700</bug_when>
    <thetext>&gt; Thanks for taking care of that issue.
&gt; In the same vein, it might be good to check WebRTC use of JS built-ins.
&gt; IIRC, some of WebRTC built-ins are/were using Promise.then directly.

I believe that is actually intentional. Promise chaining works with any Promise shaped object (JS libraries that create their own promises and native Promises). As long as the value returned from a promise has a &quot;then&quot; function, it is treated like a promise and chained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178478</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-28 11:45:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Thanks for taking care of that issue.
&gt; &gt; In the same vein, it might be good to check WebRTC use of JS built-ins.
&gt; &gt; IIRC, some of WebRTC built-ins are/were using Promise.then directly.
&gt; 
&gt; I believe that is actually intentional. Promise chaining works with any
&gt; Promise shaped object (JS libraries that create their own promises and
&gt; native Promises). As long as the value returned from a promise has a &quot;then&quot;
&gt; function, it is treated like a promise and chained.

There are cases where accessing public properties is fine, like in Promise.catch.
In the case of WebRTC, native promises are used internally, which might make the situation a bit different.

If a user script changes the &quot;then&quot; property of the Promise prototype, some WebRTC code may break, like in RTCPeerConnection.js: 
&quot;&quot;&quot;
peerConnection.@queuedAddIceCandidate(candidate).then(...)
&quot;&quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178569</commentid>
    <comment_count>8</comment_count>
      <attachid>275061</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-28 15:52:55 -0700</bug_when>
    <thetext>Created attachment 275061
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178570</commentid>
    <comment_count>9</comment_count>
      <attachid>275062</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-28 15:55:47 -0700</bug_when>
    <thetext>Created attachment 275062
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178571</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-28 15:57:46 -0700</bug_when>
    <thetext>&gt; In the case of WebRTC, native promises are used internally, which might make
&gt; the situation a bit different.
&gt; 
&gt; If a user script changes the &quot;then&quot; property of the Promise prototype, some
&gt; WebRTC code may break, like in RTCPeerConnection.js: 
&gt; &quot;&quot;&quot;
&gt; peerConnection.@queuedAddIceCandidate(candidate).then(...)
&gt; &quot;&quot;&quot;

Good catch. I had just expected that this was intentional. Are you able to test this? Should we file another bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178627</commentid>
    <comment_count>11</comment_count>
      <attachid>275062</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 00:27:24 -0700</bug_when>
    <thetext>Comment on attachment 275062
[PATCH] Proposed Fix

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

Looks good to me.
Some suggestions below that could be done as a follow-up

&gt; LayoutTests/ChangeLog:11
&gt; +        * streams/builtin-overrides.html: Added.

We might need to add more tests like these two for fetch or streams API.
These two test filenames should probably be made more specific at some point.

For streams, the test filename is called streams-promises.html, which is probably not specific enough.
For getUserMedia, the test filename is named webkitGetUserMedia-shadowing-then.html, I quite like it.

&gt; Source/WebCore/Modules/fetch/FetchHeaders.js:-54
&gt; -    @Object.@getOwnPropertyNames(headersInit).forEach((name) =&gt; {

forEach is also called in line 39 on a Headers object.
This case should probably be handled as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178629</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 00:29:37 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; In the case of WebRTC, native promises are used internally, which might make
&gt; &gt; the situation a bit different.
&gt; &gt; 
&gt; &gt; If a user script changes the &quot;then&quot; property of the Promise prototype, some
&gt; &gt; WebRTC code may break, like in RTCPeerConnection.js: 
&gt; &gt; &quot;&quot;&quot;
&gt; &gt; peerConnection.@queuedAddIceCandidate(candidate).then(...)
&gt; &gt; &quot;&quot;&quot;
&gt; 
&gt; Good catch. I had just expected that this was intentional. Are you able to
&gt; test this? Should we file another bug?

Sure, I will file a bug for it.
One case to study in details is when chaining then happens, like in RTCPeerConnectionInternals.js/enqueueOperation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178631</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 00:37:38 -0700</bug_when>
    <thetext>&gt; Sure, I will file a bug for it.
&gt; One case to study in details is when chaining then happens, like in
&gt; RTCPeerConnectionInternals.js/enqueueOperation.

Filed bug 155964.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178636</commentid>
    <comment_count>14</comment_count>
      <attachid>275062</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-29 01:14:39 -0700</bug_when>
    <thetext>Comment on attachment 275062
[PATCH] Proposed Fix

Clearing flags on attachment: 275062

Committed r198776: &lt;http://trac.webkit.org/changeset/198776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178637</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-29 01:14:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178639</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 01:42:10 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; I wonder if we could write a rule for this.
&gt; &gt; If the base is private will we ever access a 
&gt; &gt; public property on it?
&gt; 
&gt; There are instances of @RegExp.prototype in JavaScriptCore/builtins and
&gt; @Promise.prototype in WebCore/streams builtins. I&apos;m not sure how safe that
&gt; is.

The &quot;prototype&quot; property of @Promise and @RegExp are DontDelete and ReadOnly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178724</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-29 11:06:35 -0700</bug_when>
    <thetext>&gt; &gt; There are instances of @RegExp.prototype in JavaScriptCore/builtins and
&gt; &gt; @Promise.prototype in WebCore/streams builtins. I&apos;m not sure how safe that
&gt; &gt; is.
&gt; 
&gt; The &quot;prototype&quot; property of @Promise and @RegExp are DontDelete and ReadOnly.

Thanks for checking that!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274981</attachid>
            <date>2016-03-26 00:07:33 -0700</date>
            <delta_ts>2016-03-28 15:52:55 -0700</delta_ts>
            <desc>[PATCH] WIP - Needs Tests</desc>
            <filename>FIXME-needs-tests.patch</filename>
            <type>text/plain</type>
            <size>4692</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IGE3NjRkODQuLjY0OGU3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzE4LDYgKzMxOCw3IEBACiAgICAgbWFj
cm8oaXNGaW5pdGUpIFwKICAgICBtYWNybyhpc05hTikgXAogICAgIG1hY3JvKGNyZWF0ZSkgXAor
ICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZ2V0UHJvdG90eXBlT2YpIFwK
ICAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKICAgICBtYWNybyhnZXRPd25Q
cm9wZXJ0eU5hbWVzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzQzZjliZi4uMWFkMDc3OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAt
MTAwLDYgKzEwMCw3IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIAogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNyZWF0ZVByaXZhdGVO
YW1lLCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSwgRG9udEVudW0sIDIpOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVBy
b3BlcnR5UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHksIERvbnRF
bnVtLCAzKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5nZXRQcm90b3R5cGVPZlByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3Rv
ckdldFByb3RvdHlwZU9mLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0T3duUHJvcGVydHlOYW1lc1By
aXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMsIERvbnRFbnVt
LCAxKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hI
ZWFkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuanMK
aW5kZXggOTcyMTc3ZS4uZmM5MWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEhlYWRlcnMuanMKQEAgLTUxLDkgKzUxLDExIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVG
ZXRjaEhlYWRlcnMoaGVhZGVyc0luaXQpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAot
ICAgIEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0luaXQpLmZvckVhY2goKG5h
bWUpID0+IHsKKyAgICBsZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMoaGVhZGVyc0luaXQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1l
cy5sZW5ndGg7ICsraSkgeworICAgICAgICBsZXQgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAg
ICAgICAgIHRoaXMuQGFwcGVuZEZyb21KUyhuYW1lLCBoZWFkZXJzSW5pdFtuYW1lXSk7Ci0gICAg
fSk7CisgICAgfQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCmlu
ZGV4IDJlMGEyZGIuLmEwN2I0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCkBAIC0zNyw3ICsz
Nyw3IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHBhcmFt
ZXRlcnMpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0aGlzLCAiaGlnaFdhdGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0
aGlzLCAiaGlnaFdhdGVyTWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMuaGlnaFdh
dGVyTWFyaywKICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVtZXJhYmxl
OiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50
UXVldWluZ1N0cmF0ZWd5LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50
UXVldWluZ1N0cmF0ZWd5LmpzCmluZGV4IDA5ZjExNGEuLjViZjNhMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMK
QEAgLTM2LDcgKzM2LDcgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUNvdW50UXVldWluZ1N0cmF0ZWd5
KHBhcmFtZXRlcnMpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0aGlzLCAiaGlnaFdhdGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAiaGlnaFdhdGVyTWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMu
aGlnaFdhdGVyTWFyaywKICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVt
ZXJhYmxlOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDUyMGEzOTMuLmQyZmYyMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUlu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHMuanMKQEAgLTI3OSw3ICsyNzksNyBAQCBmdW5jdGlvbiBmaW5pc2hDbG9z
aW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIEBh
c3NlcnQoc3RyZWFtLkBzdGF0ZSA9PT0gIEBzdHJlYW1SZWFkYWJsZSk7CisgICAgQGFzc2VydChz
dHJlYW0uQHN0YXRlID09PSBAc3RyZWFtUmVhZGFibGUpOwogICAgIHN0cmVhbS5Ac3RhdGUgPSBA
c3RyZWFtQ2xvc2VkOwogICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOwogICAgIGlm
ICghcmVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmpzCmluZGV4IDUxY2MwMzcuLjAwYjAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKQEAgLTExMSw3ICsxMTEsNyBAQCBm
dW5jdGlvbiB3cml0ZShjaHVuaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcg
QFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS53cml0ZSBt
ZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7
CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUg
PT09IEBzdHJlYW1DbG9zaW5nKQogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcg
QFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9z
ZWQgb3IgY2xvc2luZyIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275061</attachid>
            <date>2016-03-28 15:52:55 -0700</date>
            <delta_ts>2016-03-28 15:55:47 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>override.patch</filename>
            <type>text/plain</type>
            <size>9522</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjJmMjY0Li45N2MyMDQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMt
MjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRp
dCBXZWJDb3JlIGJ1aWx0aW5zIGZvciB1c2VyIG92ZXJyaWRhYmxlIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTkyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmV0Y2gvYnVpbHRpbi1vdmVy
cmlkZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmZXRjaC9idWlsdGluLW92ZXJy
aWRlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9idWlsdGluLW92ZXJyaWRlcy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0wMy0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEVTNiBDbGFzcyBzeW50YXguIEludm9raW5nIG1ldGhvZCBvZiBw
YXJlbnQgY2xhc3MgaW4gY29uc3RydWN0b3IgYmVmb3JlIHN1cGVyKCkgbGVhZCB0byBjcmFzaApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNTE0NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRlcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw5IEBACitUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4
Y2VwdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVp
bHRpbi1vdmVycmlkZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
ODZhNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVy
cmlkZXMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxk
IHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4iKTsKKworQXJyYXkucHJvdG90eXBl
LmZvckVhY2ggPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOworfTsK
KworbmV3IEhlYWRlcnMoe2E6MX0pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNTE0NTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1RoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
YnVpbHRpbi1vdmVycmlkZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xYzBhZjhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9idWlsdGlu
LW92ZXJyaWRlcy5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBz
aG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiIpOworCitPYmplY3QuZGVm
aW5lUHJvcGVydHkgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOwor
fTsKKworbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koe30pOworbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHt9KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggOWUyZGFmMC4uNTgzNTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBBdWRpdCBXZWJDb3JlIGJ1aWx0aW5zIGZvciB1c2VyIG92ZXJy
aWRhYmxlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICBFeHBvc2UgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkgdG8g
YnVpbHQtaW5zLgorCiAyMDE2LTAzLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgTWlzYy4gSmF2YVNjcmlwdENvcmUgYnVpbHQtaW5zIGNsZWFudXBz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCBhNzY0ZDg0Li42NDhlNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMxOCw2ICszMTgsNyBAQAogICAgIG1h
Y3JvKGlzRmluaXRlKSBcCiAgICAgbWFjcm8oaXNOYU4pIFwKICAgICBtYWNybyhjcmVhdGUpIFwK
KyAgICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3JvKGdldFByb3RvdHlwZU9mKSBc
CiAgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCiAgICAgbWFjcm8oZ2V0T3du
UHJvcGVydHlOYW1lcykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDM0M2Y5YmYuLjFhZDA3NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEwMCw2ICsxMDAsNyBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jcmVhdGVQcml2YXRl
TmFtZSwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIERvbnRFbnVtLCAyKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQ
cm9wZXJ0eVByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5LCBEb250
RW51bSwgMyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+Z2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0
b3JHZXRQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldE93blByb3BlcnR5TmFtZXNQ
cml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250RW51
bSwgMSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4ODMzOC4uYTE3YWIzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDE2LTAzLTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQXVkaXQgV2ViQ29yZSBidWlsdGlucyBmb3IgdXNlciBvdmVycmlk
YWJsZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMuaHRtbAorICAgICAgICAgICAgICAgc3Ry
ZWFtcy9idWlsdGluLW92ZXJyaWRlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5qczoKKyAgICAgICAgKGluaXRpYWxpemVGZXRjaEhlYWRlcnMpOgorICAgICAg
ICBBdm9pZCB1c2luZyBhbiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCB0aGF0IGNvdWxkIGJlIG92
ZXJyaWRlbi4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kp
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qczoKKyAg
ICAgICAgKGluaXRpYWxpemVDb3VudFF1ZXVpbmdTdHJhdGVneSk6CisgICAgICAgIFVzZSB0aGUg
cHJpdmF0ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbm90IG9uZSB0aGF0IGNvdWxkIGJlIG92ZXJy
aWRlbi4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFs
cy5qczoKKyAgICAgICAgKGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIEZp
eCBzdHlsZS4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczoK
KyAgICAgICAgKHdyaXRlKToKKyAgICAgICAgRml4IGVyb3JyIG1lc3NhZ2UgdG8gdXNlIHRoZSBj
b3JyZWN0IGZ1bmN0aW9uIG5hbWUuCisKIDIwMTYtMDMtMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQXVkaW8gdHJhY2tzIGluIGFsdGVybmF0ZSBn
cm91cHMgYXJlIG5vdCByZXByZXNlbnRlZCBjb3JyZWN0bHkgYXMgQXVkaW9UcmFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuanMKaW5kZXggOTcyMTc3ZS4u
ZmM5MWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhl
YWRlcnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMu
anMKQEAgLTUxLDkgKzUxLDExIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaEhlYWRlcnMoaGVh
ZGVyc0luaXQpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIEBPYmplY3QuQGdl
dE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0luaXQpLmZvckVhY2goKG5hbWUpID0+IHsKKyAgICBs
ZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0lu
aXQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
eworICAgICAgICBsZXQgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAgICAgICAgIHRoaXMuQGFw
cGVuZEZyb21KUyhuYW1lLCBoZWFkZXJzSW5pdFtuYW1lXSk7Ci0gICAgfSk7CisgICAgfQogCiAg
ICAgcmV0dXJuIHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCmluZGV4IDJlMGEyZGIuLmEw
N2I0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0aW9u
IGluaXRpYWxpemVCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHBhcmFtZXRlcnMpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGlnaFdh
dGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGlnaFdhdGVy
TWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMuaGlnaFdhdGVyTWFyaywKICAgICAg
ICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzCmluZGV4IDA5ZjExNGEuLjViZjNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKQEAgLTM2LDcgKzM2LDcg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUNvdW50UXVldWluZ1N0cmF0ZWd5KHBhcmFtZXRlcnMpCiB7
CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAi
aGlnaFdhdGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGln
aFdhdGVyTWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMuaGlnaFdhdGVyTWFyaywK
ICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzLmpzCmluZGV4IDUyMGEzOTMuLmQyZmYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMu
anMKQEAgLTI3OSw3ICsyNzksNyBAQCBmdW5jdGlvbiBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJl
YW0oc3RyZWFtKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIEBhc3NlcnQoc3RyZWFtLkBz
dGF0ZSA9PT0gIEBzdHJlYW1SZWFkYWJsZSk7CisgICAgQGFzc2VydChzdHJlYW0uQHN0YXRlID09
PSBAc3RyZWFtUmVhZGFibGUpOwogICAgIHN0cmVhbS5Ac3RhdGUgPSBAc3RyZWFtQ2xvc2VkOwog
ICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOwogICAgIGlmICghcmVhZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCmluZGV4
IDUxY2MwMzcuLjAwYjAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvV3JpdGFibGVTdHJlYW0uanMKQEAgLTExMSw3ICsxMTEsNyBAQCBmdW5jdGlvbiB3cml0ZShj
aHVuaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhl
IFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
bmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS53cml0ZSBtZXRob2QgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICBpZiAodGhp
cy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9z
aW5nKQogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fu
bm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275062</attachid>
            <date>2016-03-28 15:55:47 -0700</date>
            <delta_ts>2016-03-29 01:14:39 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>fix-typo.patch</filename>
            <type>text/plain</type>
            <size>9522</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjJmMjY0Li45N2MyMDQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMt
MjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRp
dCBXZWJDb3JlIGJ1aWx0aW5zIGZvciB1c2VyIG92ZXJyaWRhYmxlIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTkyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmV0Y2gvYnVpbHRpbi1vdmVy
cmlkZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmZXRjaC9idWlsdGluLW92ZXJy
aWRlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9idWlsdGluLW92ZXJyaWRlcy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0wMy0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEVTNiBDbGFzcyBzeW50YXguIEludm9raW5nIG1ldGhvZCBvZiBw
YXJlbnQgY2xhc3MgaW4gY29uc3RydWN0b3IgYmVmb3JlIHN1cGVyKCkgbGVhZCB0byBjcmFzaApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNTE0NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRlcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw5IEBACitUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4
Y2VwdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVp
bHRpbi1vdmVycmlkZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
ODZhNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVy
cmlkZXMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxk
IHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4iKTsKKworQXJyYXkucHJvdG90eXBl
LmZvckVhY2ggPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOworfTsK
KworbmV3IEhlYWRlcnMoe2E6MX0pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNTE0NTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1RoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
YnVpbHRpbi1vdmVycmlkZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xYzBhZjhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9idWlsdGlu
LW92ZXJyaWRlcy5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBz
aG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiIpOworCitPYmplY3QuZGVm
aW5lUHJvcGVydHkgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOwor
fTsKKworbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koe30pOworbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHt9KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggOWUyZGFmMC4uNTgzNTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBBdWRpdCBXZWJDb3JlIGJ1aWx0aW5zIGZvciB1c2VyIG92ZXJy
aWRhYmxlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICBFeHBvc2UgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkgdG8g
YnVpbHQtaW5zLgorCiAyMDE2LTAzLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgTWlzYy4gSmF2YVNjcmlwdENvcmUgYnVpbHQtaW5zIGNsZWFudXBz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCBhNzY0ZDg0Li42NDhlNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMxOCw2ICszMTgsNyBAQAogICAgIG1h
Y3JvKGlzRmluaXRlKSBcCiAgICAgbWFjcm8oaXNOYU4pIFwKICAgICBtYWNybyhjcmVhdGUpIFwK
KyAgICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3JvKGdldFByb3RvdHlwZU9mKSBc
CiAgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCiAgICAgbWFjcm8oZ2V0T3du
UHJvcGVydHlOYW1lcykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDM0M2Y5YmYuLjFhZDA3NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEwMCw2ICsxMDAsNyBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jcmVhdGVQcml2YXRl
TmFtZSwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIERvbnRFbnVtLCAyKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQ
cm9wZXJ0eVByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5LCBEb250
RW51bSwgMyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+Z2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0
b3JHZXRQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldE93blByb3BlcnR5TmFtZXNQ
cml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250RW51
bSwgMSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4ODMzOC4uNmQ2YWI4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDE2LTAzLTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQXVkaXQgV2ViQ29yZSBidWlsdGlucyBmb3IgdXNlciBvdmVycmlk
YWJsZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0czogZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMuaHRtbAorICAgICAgICAgICAgICAgc3Ry
ZWFtcy9idWlsdGluLW92ZXJyaWRlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5qczoKKyAgICAgICAgKGluaXRpYWxpemVGZXRjaEhlYWRlcnMpOgorICAgICAg
ICBBdm9pZCB1c2luZyBhbiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCB0aGF0IGNvdWxkIGJlIG92
ZXJyaWRlbi4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kp
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qczoKKyAg
ICAgICAgKGluaXRpYWxpemVDb3VudFF1ZXVpbmdTdHJhdGVneSk6CisgICAgICAgIFVzZSB0aGUg
cHJpdmF0ZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgbm90IG9uZSB0aGF0IGNvdWxkIGJlIG92ZXJy
aWRlbi4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFs
cy5qczoKKyAgICAgICAgKGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIEZp
eCBzdHlsZS4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczoK
KyAgICAgICAgKHdyaXRlKToKKyAgICAgICAgRml4IGVycm9yIG1lc3NhZ2UgdG8gdXNlIHRoZSBj
b3JyZWN0IGZ1bmN0aW9uIG5hbWUuCisKIDIwMTYtMDMtMjUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQXVkaW8gdHJhY2tzIGluIGFsdGVybmF0ZSBn
cm91cHMgYXJlIG5vdCByZXByZXNlbnRlZCBjb3JyZWN0bHkgYXMgQXVkaW9UcmFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuanMKaW5kZXggOTcyMTc3ZS4u
ZmM5MWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhl
YWRlcnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMu
anMKQEAgLTUxLDkgKzUxLDExIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaEhlYWRlcnMoaGVh
ZGVyc0luaXQpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIEBPYmplY3QuQGdl
dE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0luaXQpLmZvckVhY2goKG5hbWUpID0+IHsKKyAgICBs
ZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMoaGVhZGVyc0lu
aXQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
eworICAgICAgICBsZXQgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CiAgICAgICAgIHRoaXMuQGFw
cGVuZEZyb21KUyhuYW1lLCBoZWFkZXJzSW5pdFtuYW1lXSk7Ci0gICAgfSk7CisgICAgfQogCiAg
ICAgcmV0dXJuIHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCmluZGV4IDJlMGEyZGIuLmEw
N2I0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0aW9u
IGluaXRpYWxpemVCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHBhcmFtZXRlcnMpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGlnaFdh
dGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGlnaFdhdGVy
TWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMuaGlnaFdhdGVyTWFyaywKICAgICAg
ICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzCmluZGV4IDA5ZjExNGEuLjViZjNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKQEAgLTM2LDcgKzM2LDcg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUNvdW50UXVldWluZ1N0cmF0ZWd5KHBhcmFtZXRlcnMpCiB7
CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgQE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAi
aGlnaFdhdGVyTWFyayIsIHsKKyAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiaGln
aFdhdGVyTWFyayIsIHsKICAgICAgICAgdmFsdWU6IHBhcmFtZXRlcnMuaGlnaFdhdGVyTWFyaywK
ICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzLmpzCmluZGV4IDUyMGEzOTMuLmQyZmYyMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMu
anMKQEAgLTI3OSw3ICsyNzksNyBAQCBmdW5jdGlvbiBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJl
YW0oc3RyZWFtKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIEBhc3NlcnQoc3RyZWFtLkBz
dGF0ZSA9PT0gIEBzdHJlYW1SZWFkYWJsZSk7CisgICAgQGFzc2VydChzdHJlYW0uQHN0YXRlID09
PSBAc3RyZWFtUmVhZGFibGUpOwogICAgIHN0cmVhbS5Ac3RhdGUgPSBAc3RyZWFtQ2xvc2VkOwog
ICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5AcmVhZGVyOwogICAgIGlmICghcmVhZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCmluZGV4
IDUxY2MwMzcuLjAwYjAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvV3JpdGFibGVTdHJlYW0uanMKQEAgLTExMSw3ICsxMTEsNyBAQCBmdW5jdGlvbiB3cml0ZShj
aHVuaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhl
IFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
bmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS53cml0ZSBtZXRob2QgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICBpZiAodGhp
cy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9z
aW5nKQogICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fu
bm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIp
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>