<?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>65330</bug_id>
          
          <creation_ts>2011-07-28 11:34:51 -0700</creation_ts>
          <short_desc>Remove auth-related functions from SubresourceLoaderClient</short_desc>
          <delta_ts>2011-09-22 18:11:54 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61225</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443577</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-07-28 11:34:51 -0700</bug_when>
    <thetext>It appears that getShouldUseCredentialStorage(), didReceiveAuthenticationChallenge() and receivedCancellation() don&apos;t actually do much (in the various SubresourceLoaderClients).  The code would probably be simpler if we pushed the little bit of logic in the clients down into SubresourceLoader and got rid of these callbacks.

It would also make efforts like https://bugs.webkit.org/show_bug.cgi?id=61225 easier by reducing the number of callbacks that need to be rewired.

Patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443583</commentid>
    <comment_count>1</comment_count>
      <attachid>102275</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-07-28 11:38:45 -0700</bug_when>
    <thetext>Created attachment 102275
patch

All the LayoutTests still pass, and I&apos;ve done a little bit of manual browsing with the patch (I plan on doing some more).

If there&apos;s something in particular I should be testing manually, suggestions are appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443595</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-28 11:56:27 -0700</bug_when>
    <thetext>This looks like a good change.  I&apos;m going to give other folks a chance to comment though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443596</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-28 11:57:53 -0700</bug_when>
    <thetext>I&apos;m on vacation now, but would like to take a close look next week.

I vaguely recall that getShouldUseCredentialStorage() in particular is supposed to be filtered down to WebKit client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443598</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-07-28 12:02:36 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m on vacation now, but would like to take a close look next week.
&gt; 
&gt; I vaguely recall that getShouldUseCredentialStorage() in particular is supposed to be filtered down to WebKit client.

If I changed any of the calls back to the WebKit client, it&apos;s a bug. :)

This should only change calls that are made to DocumentThreadableLoader (and therefore the ThreadableLoaderClients) and IconLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445000</commentid>
    <comment_count>5</comment_count>
      <attachid>102275</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-01 17:03:52 -0700</bug_when>
    <thetext>Comment on attachment 102275
patch

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

I like the direction of this patch. I didn&apos;t review it in a lot of detail yet, because I had some general comments that I think you may want to address first.

FrameLoaderClient calls are made from ResourceLoader, which is why changing SubresourceLoader shouldn&apos;t affect them indeed - we just need to make sure that we fall through to ResourceLoader in all the same cases.

&gt; Source/WebCore/loader/ResourceLoader.cpp:524
&gt; +    if (!m_request.allowCookies())
&gt; +        return false;

This is worth at least a comment explaining why we tie cookies and HTTP credentials together like this.

&gt; Source/WebCore/loader/ResourceLoader.cpp:559
&gt; +    didReceiveResponse(challenge.failureResponse());

In XMLHttpRequest case at least, this will change when InspectorInstrumentation is notified. Is that an improvement?

For MainResourceLoader, this changes a lot of code that runs in this case. Why is that OK? The changes that went to ResourceLoader particularly worry me, because the patch is supposed to only affect subresources.

Perhaps this would be easier to review if there were three patches, one for each SubresourceLoaderClient method that&apos;s being removed. It&apos;s rather difficult for me to follow every code path, given that this patch actually changes what code is being run.

&gt; Source/WebCore/loader/SubresourceLoader.cpp:254
&gt; +        // Only these platforms provide a way to continue without credentials, and users shouldn&apos;t be prompted
&gt; +        // for credentials on a cross-origin request. Fall through and cancel for other platfroms.

Typo: platfroms.

&gt; Source/WebCore/loader/SubresourceLoader.cpp:261
&gt; +    case AuthenticateNever:
&gt; +        cancel();

It&apos;s a mystery why we&apos;d try to continue without credentials in AuthenticateSameOrigin, but not in AuthenticateNever.

Another subtlety is when it&apos;s OK to use stored session credentials, and when it&apos;s OK to ask a user for credentials. These are separate questions, but the AuthenticateWhen naming scheme doesn&apos;t differentiate between the two.

I think that for this change to really be an improvement, SubresourceLoader options should be direct and straightforward, without traps like these.

&gt; Source/WebCore/loader/SubresourceLoader.cpp:264
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Is there a specific reason to add this default clause? It prevents the compiler from generating an error if some cases are not handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446670</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-04 12:03:36 -0700</bug_when>
    <thetext>r/SubresourceLoader.cpp:261
&gt; &gt; +    case AuthenticateNever:
&gt; &gt; +        cancel();
&gt; 
&gt; It&apos;s a mystery why we&apos;d try to continue without credentials in AuthenticateSameOrigin, but not in AuthenticateNever.
&gt; 
&gt; Another subtlety is when it&apos;s OK to use stored session credentials, and when it&apos;s OK to ask a user for credentials. These are separate questions, but the AuthenticateWhen naming scheme doesn&apos;t differentiate between the two.

If I&apos;m reading this correctly, it appears ResourceHandle calls ResourceLoader::shouldUseCredentialStorage() and uses credential storage first, and only calls ResourceLoader::didReceiveAuthenticationChallenge() if stored credentials are no longer an option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446673</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-04 12:10:16 -0700</bug_when>
    <thetext>That suggest that better names could be something like NeverAskUserForCredentials instead of AuthenticateNever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446679</commentid>
    <comment_count>8</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-04 12:22:25 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; That suggest that better names could be something like NeverAskUserForCredentials instead of AuthenticateNever.

Good point, I&apos;ll rename that stuff.

I think I&apos;ll follow your other suggestion and split this into a separate patch for each function, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446738</commentid>
    <comment_count>9</comment_count>
      <attachid>102970</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-04 13:30:09 -0700</bug_when>
    <thetext>Created attachment 102970
Remove getShouldUseCredentialStorage()

I gave my best shot at explaining the logic for the allowCookies() check in ResourceLoader::shouldUseCredentialStorage(), let me know if I said something stupid :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446804</commentid>
    <comment_count>10</comment_count>
      <attachid>102985</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-04 14:58:08 -0700</bug_when>
    <thetext>Created attachment 102985
Remove didReceiveAuthenticationChallenge()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446827</commentid>
    <comment_count>11</comment_count>
      <attachid>102990</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-04 15:22:22 -0700</bug_when>
    <thetext>Created attachment 102990
Remove didReceiveAuthenticationChallenge()

Oops, uploaded the same patch twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447238</commentid>
    <comment_count>12</comment_count>
      <attachid>103077</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-05 09:28:34 -0700</bug_when>
    <thetext>Created attachment 103077
Remove receivedCancellation()

After some more studying, it appears receivedCancellation() doesn&apos;t actually do anything in any SubresourceLoaderClient.  Keep in mind that it&apos;s always followed by a didFail() because ResourceLoader::receivedCancellation() cancels the load.  didFail() and receivedCancellation() do the same thing in both WorkerScriptLoader and Notification.  In XMLHttpRequest, receivedCancellation() just sets m_response, and didFail() clears m_response before using it in any way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448309</commentid>
    <comment_count>13</comment_count>
      <attachid>103077</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-08 15:20:27 -0700</bug_when>
    <thetext>Comment on attachment 103077
Remove receivedCancellation()

Let&apos;s start with this patch, as it seems to be the simplest one. It is subtle however, because not every browser UI provides a way for the user to cancel an authentication dialog. However, clients may pick either behavior (cancel request altogether or continue without credentials and use whatever data comes with 401 response).

Can you explain in ChangeLog why it&apos;s OK to make the change for each of the modified files? I&apos;m particularly unsure about XMLHttpRequest - who will set m_response if didReceiveAuthenticationCancellation does not? Or how will WorkerScriptLoader know that it&apos;s in error state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448313</commentid>
    <comment_count>14</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-08 15:23:28 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 103077 [details])
&gt; Let&apos;s start with this patch, as it seems to be the simplest one. It is subtle however, because not every browser UI provides a way for the user to cancel an authentication dialog. However, clients may pick either behavior (cancel request altogether or continue without credentials and use whatever data comes with 401 response).
&gt; 
&gt; Can you explain in ChangeLog why it&apos;s OK to make the change for each of the modified files? I&apos;m particularly unsure about XMLHttpRequest - who will set m_response if didReceiveAuthenticationCancellation does not? Or how will WorkerScriptLoader know that it&apos;s in error state?

Will do.  I&apos;ll essentially be rewording comment #12. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448356</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-08 16:41:35 -0700</bug_when>
    <thetext>&gt; I&apos;ll essentially be rewording comment #12. :)

I did overlook that comment indeed. Let&apos;s get it into ChangeLog though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448365</commentid>
    <comment_count>16</comment_count>
      <attachid>103316</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-08 16:53:37 -0700</bug_when>
    <thetext>Created attachment 103316
Remove receivedCancellation() - with better ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448654</commentid>
    <comment_count>17</comment_count>
      <attachid>103316</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-09 10:19:09 -0700</bug_when>
    <thetext>Comment on attachment 103316
Remove receivedCancellation() - with better ChangeLog

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Remove receivedCancellation() from SubresourceLoaderClient.
&gt; +        It&apos;s a no-op because it&apos;s always immediately followed by a
&gt; +        canceallation (ResourceLoader::receivedCancellation() calls
&gt; +        cancel(), which leads to calling SubresourceLoaderClinet::didFail()).
&gt; +        For WorkerScriptLoader and Notification, receivedCancellation()
&gt; +        and didFail() are identical. For XMLHttpRequest, receivedCancellation()
&gt; +        sets m_response, which didFail() clears before it can be used.

Please don&apos;t put explanations into ChangeLog like this. There is an automatically generated list of files below. Simply listing modified files and functions is not very helpful, and the reason for the script to add it is that contributors will use it as a starting point.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:-1054
&gt; -void XMLHttpRequest::didReceiveAuthenticationCancellation(unsigned long, const ResourceResponse&amp; failureResponse)
&gt; -{
&gt; -    m_response = failureResponse;
&gt; -}

This code was added in &lt;http://trac.webkit.org/changeset/24862&gt; without a regression test. But it does seem fine to remove it now - WebKit (at least ports that I checked) no longer does a cancellation when the user cancels an authentication sheet. It now asks WebKit to continue without credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448736</commentid>
    <comment_count>18</comment_count>
      <attachid>103316</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-09 12:40:39 -0700</bug_when>
    <thetext>Comment on attachment 103316
Remove receivedCancellation() - with better ChangeLog

receivedCancellation() removal landed: http://trac.webkit.org/changeset/92691</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451984</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-16 16:47:48 -0700</bug_when>
    <thetext>Would you be willing to annotate ChangeLogs of the remaining patches with equally good explanations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452273</commentid>
    <comment_count>20</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-17 08:34:22 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Would you be willing to annotate ChangeLogs of the remaining patches with equally good explanations?

Sure.  Will remove r? from the existing patches in the interim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452329</commentid>
    <comment_count>21</comment_count>
      <attachid>104190</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-17 10:22:44 -0700</bug_when>
    <thetext>Created attachment 104190
Remove getShouldUseCredentialStorage() - with more ChangeLog

Hopefully the changelog + comment in ResourceLoader.cpp covers this patch sufficiently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452333</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 10:25:02 -0700</bug_when>
    <thetext>Attachment 104190 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452386</commentid>
    <comment_count>23</comment_count>
      <attachid>104198</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-17 11:16:35 -0700</bug_when>
    <thetext>Created attachment 104198
Remove didReceiveAuthenticationChallenge() - more ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452473</commentid>
    <comment_count>24</comment_count>
      <attachid>104198</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-17 12:32:52 -0700</bug_when>
    <thetext>Comment on attachment 104198
Remove didReceiveAuthenticationChallenge() - more ChangeLog

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

Thanks, the split patch is so much easier to review. Seems like this has a few rough edges, but looks like a nice improvement overall.

One challenge is that existing cross origin policies are incorrect in that they are too limiting. When a cross-origin XMLHttpRequest is redirected, we should actually perform a new preflight, and not just bail out (not quite sure if we&apos;re allowed to ask the user for credentials after the redirect though). We might actually need to call into DocumentThreadableLoader, and in this sense, this patch could be a step in a wrong direction. Perhaps it&apos;s OK to make this step back to make existing code clearer, and think about implementing CORS redirects when we come to that.

&gt; Source/WebCore/ChangeLog:6
&gt; +        Note that this only

Please, more, more ChangeLog!

&gt; Source/WebCore/loader/FrameLoaderTypes.h:127
&gt; +    enum UserCredentialPolicy {

Despite what I said before, this is about asking the client, which will not necessarily ask the user.

&gt; Source/WebCore/loader/FrameLoaderTypes.h:130
&gt; +        AskUserForCredentialsAlways,
&gt; +        AskUserForCredentialsSameOrigin,
&gt; +        AskUserForCredentialsNever

The enum values would benefit from being better formed grammatically (AskUserForCredentialsNever vs. NeverAskUserForCredentials).

For AskUserForCredentialsSameOrigin in particular, I can&apos;t tell what this option does from looking at its name. Is it really AskUserForCredentialsUnlessRedirectedCrossOrigin? Or if it&apos;s about cross-origin requests, why can&apos;t we decide that upfront and pass AskUserForCredentialsNever?

&gt; Source/WebCore/loader/SubresourceLoader.cpp:260
&gt; +        if (m_frame-&gt;document()-&gt;securityOrigin()-&gt;canRequest(request().url()))

This check doesn&apos;t seem to match what we had before. We looked at DocumentThreadableLoader::m_sameOriginRequest, which is set in constructor, while request() changes with every redirect. IIRC DocumentThreadableLoader just prevents cross origin redirects now (which is not correct according to the CORS spec), but you don&apos;t want to rely on the fact that DocumentThreadableLoader is the only client that passes AskUserForCredentialsSameOrigin.

&gt; Source/WebCore/loader/SubresourceLoader.cpp:269
&gt; +#if PLATFORM(MAC) || USE(CFNETWORK) || USE(CURL)
&gt; +        handle()-&gt;receivedRequestToContinueWithoutCredential(challenge);
&gt; +#endif
&gt; +        if (handle()-&gt;hasAuthenticationChallenge())
&gt; +            cancel();

Old code also called didFail with blockedError. Why is that not needed? ChangeLog doesn&apos;t say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453444</commentid>
    <comment_count>25</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-18 15:49:46 -0700</bug_when>
    <thetext>&gt; One challenge is that existing cross origin policies are incorrect in that they are too limiting. When a cross-origin XMLHttpRequest is redirected, we should actually perform a new preflight, and not just bail out (not quite sure if we&apos;re allowed to ask the user for credentials after the redirect though). We might actually need to call into DocumentThreadableLoader, and in this sense, this patch could be a step in a wrong direction. Perhaps it&apos;s OK to make this step back to make existing code clearer, and think about implementing CORS redirects when we come to that.

I&apos;m sort of inclined to punt on this issue until we get around to dealing with CORS redirects, but I&apos;m going to think about it some more before uploading a new patch.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        Note that this only
&gt; 
&gt; Please, more, more ChangeLog!

I&apos;ll do my best :)

&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderTypes.h:127
&gt; &gt; +    enum UserCredentialPolicy {
&gt; 
&gt; Despite what I said before, this is about asking the client, which will not necessarily ask the user.

Hmm.....good point.  ClientCredentialPolicy?

&gt; 
&gt; &gt; Source/WebCore/loader/SubresourceLoader.cpp:260
&gt; &gt; +        if (m_frame-&gt;document()-&gt;securityOrigin()-&gt;canRequest(request().url()))
&gt; 
&gt; This check doesn&apos;t seem to match what we had before. We looked at DocumentThreadableLoader::m_sameOriginRequest, which is set in constructor, while request() changes with every redirect. IIRC DocumentThreadableLoader just prevents cross origin redirects now (which is not correct according to the CORS spec), but you don&apos;t want to rely on the fact that DocumentThreadableLoader is the only client that passes AskUserForCredentialsSameOrigin.

Good catch, that should be originalRequest() I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454850</commentid>
    <comment_count>26</comment_count>
      <attachid>104727</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-22 13:28:12 -0700</bug_when>
    <thetext>Created attachment 104727
Remove didReceiveAuthenticationChallenge() #3

Hopefully this is enough ChangeLog....not sure how I managed to leave that sentence fragment in the previous version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455505</commentid>
    <comment_count>27</comment_count>
      <attachid>104190</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-23 10:59:27 -0700</bug_when>
    <thetext>Comment on attachment 104190
Remove getShouldUseCredentialStorage() - with more ChangeLog

I&apos;m feeling conflicted about this patch:
1. When looking at ResourceLoader code, it&apos;s unnatural to expect that some policy choices are overridden by a subclass. So, getting rid of that is good.
2. The weird check for m_request.allowCookies() is indeed weird. We had very clear and straightforward code in the client.

I&apos;m going to say r+, but could the real answer be to move the client call from SubresourceLoaderClient to ResourceLoaderClient, clarifying control flow in this way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456325</commentid>
    <comment_count>28</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-24 12:49:09 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 104190 [details])
&gt; I&apos;m feeling conflicted about this patch:
&gt; 1. When looking at ResourceLoader code, it&apos;s unnatural to expect that some policy choices are overridden by a subclass. So, getting rid of that is good.
&gt; 2. The weird check for m_request.allowCookies() is indeed weird. We had very clear and straightforward code in the client.
&gt; 
&gt; I&apos;m going to say r+, but could the real answer be to move the client call from SubresourceLoaderClient to ResourceLoaderClient, clarifying control flow in this way?

We could plumb the relevant variable in ThreadableLoaderOptions (m_allowCredentials) down to SubresourceLoader?  Not sure if that&apos;s better or worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456360</commentid>
    <comment_count>29</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-24 13:19:05 -0700</bug_when>
    <thetext>I think that this would be more straightforward than second-guessing from ResourceRequest&apos;s idea of whether to send cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456525</commentid>
    <comment_count>30</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-24 16:45:23 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I think that this would be more straightforward than second-guessing from ResourceRequest&apos;s idea of whether to send cookies.

I revived https://bugs.webkit.org/show_bug.cgi?id=63301 in the hope of making passing these sorts of parameters more sane than a long string of bools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457791</commentid>
    <comment_count>31</comment_count>
      <attachid>105410</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-26 14:42:18 -0700</bug_when>
    <thetext>Created attachment 105410
Remove getShouldUseCredentialStorage() without the allowCookies() check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457812</commentid>
    <comment_count>32</comment_count>
      <attachid>105410</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-26 15:24:54 -0700</bug_when>
    <thetext>Comment on attachment 105410
Remove getShouldUseCredentialStorage() without the allowCookies() check

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457850</commentid>
    <comment_count>33</comment_count>
      <attachid>105410</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 16:32:11 -0700</bug_when>
    <thetext>Comment on attachment 105410
Remove getShouldUseCredentialStorage() without the allowCookies() check

Clearing flags on attachment: 105410

Committed r93923: &lt;http://trac.webkit.org/changeset/93923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457860</commentid>
    <comment_count>34</comment_count>
      <attachid>104727</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-26 16:57:18 -0700</bug_when>
    <thetext>Comment on attachment 104727
Remove didReceiveAuthenticationChallenge() #3

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

Some comments for discussion below.

&gt; Source/WebCore/ChangeLog:21
&gt; +        (WebCore::SubresourceLoader::didReceiveAuthenticationChallenge): Handle the authentication

The good thing about two previous patches was that SubresourceLoader override was completely removed, making the logic much easier to follow. This is not the case here, so I&apos;m not sure if the change is beneficial.

&gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:128
&gt; +        request.get(), resourceRequest, AlwaysAskClientForCredentials, priority, securityCheck, sendResourceLoadCallbacks);

I wonder how important it is to show credentials dialog when a cross-origin subresource or subframe wants it. It&apos;s certainly confusing and dangerous.

Definitely not something to change in this patch.

&gt; Source/WebCore/loader/icon/IconLoader.cpp:-131
&gt; -    m_resourceLoader-&gt;cancel();

This patch changes behavior for IconLoader in a way that&apos;s not mentioned in ChangeLog.

We use to always cancel such requests, but now we attempt to continue without credentials.

&gt; Source/WebCore/loader/SubresourceLoader.cpp:269
&gt; +#if PLATFORM(MAC) || USE(CFNETWORK) || USE(CURL)
&gt; +        handle()-&gt;receivedRequestToContinueWithoutCredential(challenge);
&gt; +#endif
&gt; +        if (handle()-&gt;hasAuthenticationChallenge())
&gt; +            didFail(blockedError());

I would add a comment explaining that receivedRequestToContinueWithoutCredential will normally clear the challenge. Or it might be even better to put the other case in #else, so that no one could get confused as to whether we do didFail() after receivedRequestToContinueWithoutCredential().

There is a comment above the part I quoted, but it&apos;s fairly indirect.

Also, we used to have a cancel() call after didFail() in DocumentThreadableLoader::didReceiveAuthenticationChallenge, and IconLoader also performed a cancel(). Why is this OK to change?

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:346
&gt; +        m_loader = resourceLoadScheduler()-&gt;scheduleSubresourceLoad(m_document-&gt;frame(), this, request, OnlyAskClientForCredentialsForSameOrigin, ResourceLoadPriorityMedium, securityCheck, sendLoadCallbacks,

It would be good to have a FIXME comment, explaining how OnlyAskClientForCredentialsForSameOrigin is not a proper policy. But it may be difficult to write - I certainly cannot do that without consulting relevant specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458428</commentid>
    <comment_count>35</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-29 13:44:58 -0700</bug_when>
    <thetext>
&gt; The good thing about two previous patches was that SubresourceLoader override was completely removed, making the logic much easier to follow. This is not the case here, so I&apos;m not sure if the change is beneficial.

I was thinking about re-writing this patch to pass the policy via ResourceLoaderOptions, which would enable us to move all the login into ResourceLoader very easily.

I&apos;d need to figure out how to handle the similar between the StoredCredential policy and the new ClientCredentialPolicy, but it seems like it would still be cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459023</commentid>
    <comment_count>36</comment_count>
      <attachid>105654</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-30 11:09:39 -0700</bug_when>
    <thetext>Created attachment 105654
Remove didReceiveAuthenticationChallenge() #4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459024</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 11:11:20 -0700</bug_when>
    <thetext>Attachment 105654 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459072</commentid>
    <comment_count>38</comment_count>
      <attachid>105664</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-30 12:11:47 -0700</bug_when>
    <thetext>Created attachment 105664
Remove didReceiveAuthenticationChallenge() - minus style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462911</commentid>
    <comment_count>39</comment_count>
      <attachid>103316</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-06 15:29:05 -0700</bug_when>
    <thetext>Comment on attachment 103316
Remove receivedCancellation() - with better ChangeLog

Cleared Alexey Proskuryakov&apos;s review+ from obsolete attachment 103316 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462912</commentid>
    <comment_count>40</comment_count>
      <attachid>104190</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-06 15:29:09 -0700</bug_when>
    <thetext>Comment on attachment 104190
Remove getShouldUseCredentialStorage() - with more ChangeLog

Cleared Alexey Proskuryakov&apos;s review+ from obsolete attachment 104190 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462937</commentid>
    <comment_count>41</comment_count>
      <attachid>105664</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 15:41:09 -0700</bug_when>
    <thetext>Comment on attachment 105664
Remove didReceiveAuthenticationChallenge() - minus style issue

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

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:66
&gt; +    { }

These braces should be on separate lines now.

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:71
&gt; +    ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy; // Whether we will ask the client for credentials (if we allow credentials at all).

This seems rather confusing. The options are AllowClientCrossOriginCredentials and BlockClientCrossOriginCredentials - I cannot easily connect those to whether we will ask the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471189</commentid>
    <comment_count>42</comment_count>
      <attachid>108242</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-21 15:03:17 -0700</bug_when>
    <thetext>Created attachment 108242
Remove didReceiveAuthenticationChallenge() - rename enum values

Addressed ap&apos;s comments on previous patch.

The new enum names are:
AskClientForCrossOriginCredentials
DoNotAskClientForCrossOriginCredentials

Hopefully that&apos;s clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471796</commentid>
    <comment_count>43</comment_count>
      <attachid>108242</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-22 12:43:37 -0700</bug_when>
    <thetext>Comment on attachment 108242
Remove didReceiveAuthenticationChallenge() - rename enum values

r=me. I didn&apos;t review very closely this time, but looks like all comments were addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471798</commentid>
    <comment_count>44</comment_count>
      <attachid>108242</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-22 12:47:10 -0700</bug_when>
    <thetext>Comment on attachment 108242
Remove didReceiveAuthenticationChallenge() - rename enum values

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471995</commentid>
    <comment_count>45</comment_count>
      <attachid>108242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 18:11:47 -0700</bug_when>
    <thetext>Comment on attachment 108242
Remove didReceiveAuthenticationChallenge() - rename enum values

Clearing flags on attachment: 108242

Committed r95768: &lt;http://trac.webkit.org/changeset/95768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471996</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 18:11:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102275</attachid>
            <date>2011-07-28 11:38:45 -0700</date>
            <delta_ts>2011-08-04 13:30:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>slc.txt</filename>
            <type>text/plain</type>
            <size>24727</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxOTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDctMjggIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZ2V0U2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKSwgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkK
KyAgICAgICAgYW5kIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmYWN0b3Igb25seSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJj
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAqIGxvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQpOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRl
cjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6Cisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAqIG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAxMS0wNy0yOCAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzY1Mjg5PiBSZW1vdmUgR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiA5MTkz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsNiBAQAogICAgIGZpbmlzaExvYWRpbmcoKTsKIH0K
IAotdm9pZCBOb3RpZmljYXRpb246OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlv
bih1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKLXsKLSAgICBmaW5pc2hM
b2FkaW5nKCk7Ci19Ci0KIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKCkKIHsKICAg
ICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcg
KzEwNyw2IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsUmVkaXJlY3RDaGVjaygpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJM
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4pOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiA5MTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDUsMTEgKzEwNDUsNiBAQAogICAgICAgICBtX3Jl
c3BvbnNlRW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CiB9CiAKLXZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBmYWlsdXJlUmVzcG9uc2UpCi17Ci0g
ICAgbV9yZXNwb25zZSA9IGZhaWx1cmVSZXNwb25zZTsKLX0KLQogdm9pZCBYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAo
bV9lcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA5
MTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTUsNyArMTU1LDYgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7
CiAgICAgYm9vbCByZXNwb25zZUlzWE1MKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
MiwxMiBAQAogICAgICAgICBOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4KICAgICB9OwogCisg
ICAgZW51bSBBdXRoZW50aWNhdGlvblBvbGljeSB7CisgICAgICAgIEF1dGhlbnRpY2F0ZUFsd2F5
cywKKyAgICAgICAgQXV0aGVudGljYXRlU2FtZU9yaWdpbiwKKyAgICAgICAgQXV0aGVudGljYXRl
TmV2ZXIKKyAgICB9OworCiAgICAgdHlwZWRlZiBpbnQgU2FuZGJveEZsYWdzOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcAkocmV2aXNpb24gOTE5MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEy
MSw3IEBACiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KHByaW9yaXR5KTsKIAogICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVu
dCgpLT5mcmFtZSgpLAotICAgICAgICByZXF1ZXN0LmdldCgpLCByZXNvdXJjZVJlcXVlc3QsIHBy
aW9yaXR5LCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKKyAgICAg
ICAgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBBdXRoZW50aWNhdGVBbHdheXMsIHBy
aW9yaXR5LCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAgICBp
ZiAoIWxvYWRlciB8fCBsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRpbmcg
Zm9yIHRoaXMgcmV2YWxpZGF0aW9uPwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fu
bm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEwICs4NCwx
MCBAQAogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBTZWN1cml0eUNoZWNrUG9saWN5IHNl
Y3VyaXR5Q2hlY2ssCitQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3Vy
Y2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBB
dXRoZW50aWNhdGlvblBvbGljeSBwb2xpY3ksIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYs
IGJvb2wgc2hvdWxkQnVmZmVyRGF0YSkKIHsKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVz
dCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVu
dFNuaWZmLCBzaG91bGRCdWZmZXJEYXRhKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVz
dCwgcG9saWN5LCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91
bGRDb250ZW50U25pZmYsIHNob3VsZEJ1ZmZlckRhdGEpOwogICAgIGlmIChsb2FkZXIpCiAgICAg
ICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKICAgICByZXR1cm4gbG9h
ZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5MTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSAr
NTAsNiBAQAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSAv
KmZpbmlzaFRpbWUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IGdldFNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFN1YnJlc291cmNlTG9hZGVyKiwgYm9vbCYg
LypzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSovKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lv
biA5MTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBACiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291
cmNlUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKSk7CiAgICAgcmVzb3Vy
Y2VSZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5TG93KTsKIAotICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkt
PnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZnJhbWUsIHRoaXMsIHJlc291cmNlUmVxdWVzdCk7
CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9mcmFtZSwgdGhpcywgcmVzb3VyY2VS
ZXF1ZXN0LCBBdXRoZW50aWNhdGVOZXZlcik7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFt
ZS0+bG9hZGVyKCktPmljb24oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCkBA
IC0xMjQsMTMgKzEyNCw2IEBACiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICAvLyBXZSBkb24ndCBldmVyIHdhbnQgdG8gcHJv
bXB0IGZvciBhdXRoZW50aWNhdGlvbiBqdXN0IGZvciBhIHNpdGUgaWNvbiwgc28KLSAgICAvLyBp
bXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gY2FuY2VsIHRoZSByZXNvdXJjZSBsb2FkCi0gICAgbV9y
ZXNvdXJjZUxvYWRlci0+Y2FuY2VsKCk7Ci19Ci0KIHZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKIHsKICAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9h
ZGVyICVwIiwgcmVzb3VyY2VMb2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25Mb2FkZXIuaAkocmV2aXNpb24gOTE5MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKLQogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIHZvaWQgY2xlYXJMb2FkaW5nU3RhdGUoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAkocmV2aXNpb24gOTE5MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxOCArMjQ5LDYgQEAKICAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJndvcmtlckNvbnRleHREaWRGYWlsUmVkaXJlY3RDaGVjaywgbV93b3JrZXJDbGllbnRX
cmFwcGVyKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9uc2VEYXRhKQotewotICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIE93blB0cjxSZXNv
dXJjZVJlc3BvbnNlPiByZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURh
dGEpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24oaWRlbnRpZmllciwgKnJlc3BvbnNlKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24odW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKLXsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DYW5jZWxsYXRpb24sIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmll
ciwgcmVzcG9uc2UpLCBtX3Rhc2tNb2RlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxMCBA
QAogI2VuZGlmCiAgICAgaWYgKCFmYXN0TWFsbG9jU2l6ZShkb2N1bWVudExvYWRlcigpLT5mcmFt
ZSgpKSkKICAgICAgICAgQ1JBU0goKTsKKworICAgIGlmICghbV9yZXF1ZXN0LmFsbG93Q29va2ll
cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+
IHByb3RlY3Rvcih0aGlzKTsKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSk7
CiB9CkBAIC01NDcsOSArNTUxLDE0IEBACiB9CiAjZW5kaWYKIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQor
dm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBjYW5jZWwoKTsKKyAgICBSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CisgICAgQVNTRVJUKCFyZWFjaGVkVGVybWlu
YWxTdGF0ZSgpKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZS5pc051bGwoKSk7CisgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSk7CisgICAgaWYgKCFyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICBjYW5jZWwoKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDYWNoZVN0b3JhZ2VQ
b2xpY3kmIHBvbGljeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCk7CiAKLSAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVs
ZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5k
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0
cnVlLCBib29sIHNob3VsZEJ1ZmZlckRhdGEgPSB0cnVlKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXV0aGVudGljYXRpb25Qb2xp
Y3ksIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3Vy
aXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91
bGRCdWZmZXJEYXRhID0gdHJ1ZSk7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFk
ZE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNv
dXJjZUxvYWRlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5MTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTks
NiBAQAogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24odW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAgICAgICAgIC8vIE9ubHkgdG8g
YmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgICAgICBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlcj4gbV9tYWluVGhyZWFkTG9hZGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkocmV2aXNpb24gOTE5MzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDEwICs4Miw2IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICAgICAgdmlydHVhbCBib29sIGdldFNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFN1YnJlc291
cmNlTG9hZGVyKiwgYm9vbCYgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vz
c1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTE5MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMCArNDQsMTEgQEAKIHN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRl
ciBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIoIlN1YnJlc291cmNlTG9hZGVyIik7CiAjZW5kaWYK
IAotU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgU3Vi
cmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKK1N1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNv
dXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQs
ICBBdXRoZW50aWNhdGlvblBvbGljeSBwb2xpY3ksIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFt
ZSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkK
KyAgICAsIG1fYXV0aGVudGljYXRpb25Qb2xpY3kocG9saWN5KQogewogI2lmbmRlZiBOREVCVUcK
ICAgICBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC02MSw3ICs2Miw3
IEBACiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGlj
eSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hv
dWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZEJ1ZmZlckRhdGEpCitQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgU3Vi
cmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBBdXRoZW50aWNhdGlvblBvbGljeSBwb2xpY3ksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiwgYm9vbCBzaG91bGRCdWZmZXJEYXRhKQogewogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtOTksNyArMTAwLDcgQEAKIAogICAgIGZsLT5hZGRFeHRyYUZp
ZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpOwogCi0gICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBzdWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZy
YW1lLCBjbGllbnQsIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlm
ZikpKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9wdFJlZihu
ZXcgU3VicmVzb3VyY2VMb2FkZXIoZnJhbWUsIGNsaWVudCwgcG9saWN5LCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25pZmYpKSk7CiAgICAgc3VibG9hZGVyLT5zZXRT
aG91bGRCdWZmZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGEpOwogICAgIHN1YmxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+YWRkU3VicmVzb3VyY2VMb2FkZXIoc3VibG9hZGVyLmdldCgpKTsKICAgICBp
ZiAoIXN1YmxvYWRlci0+aW5pdChuZXdSZXF1ZXN0KSkKQEAgLTIzNSw0OSArMjM2LDM1IEBACiAg
ICAgbV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9CiAK
LWJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKLXsK
LSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBib29s
IHNob3VsZFVzZTsKLSAgICBpZiAobV9jbGllbnQgJiYgbV9jbGllbnQtPmdldFNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKHRoaXMsIHNob3VsZFVzZSkpCi0gICAgICAgIHJldHVybiBzaG91bGRV
c2U7Ci0KLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKCk7Ci19Ci0KIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQog
ewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAogICAgIEFT
U0VSVChoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAKLSAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKLSAgICAKLSAgICAvLyBUaGUgU3ViUmVzb3VyY2VMb2Fk
ZXJDbGllbnQgbWF5IGhhdmUgY2FuY2VsbGVkIHRoaXMgUmVzb3VyY2VMb2FkZXIgaW4gcmVzcG9u
c2UgdG8gdGhlIGNoYWxsZW5nZS4gIAotICAgIC8vIElmIHRoYXQncyB0aGUgY2FzZSwgZG9uJ3Qg
Y2FsbCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuCi0gICAgaWYgKHJlYWNoZWRU
ZXJtaW5hbFN0YXRlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBzd2l0Y2ggKG1fYXV0aGVudGlj
YXRpb25Qb2xpY3kpIHsKKyAgICBjYXNlIEF1dGhlbnRpY2F0ZUFsd2F5czoKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBdXRoZW50aWNhdGVTYW1lT3JpZ2luOgorICAgICAgICBpZiAobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0KCkudXJs
KCkpKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAvLyBJdCBtYXkgaGF2ZSBhbHNvIGhhbmRs
ZWQgYXV0aGVudGljYXRpb24gb24gaXRzIG93bi4KLSAgICBpZiAoIWhhbmRsZSgpLT5oYXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKENVUkwpCisgICAgICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUg
YSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscywgYW5kIHVzZXJzIHNob3VsZG4n
dCBiZSBwcm9tcHRlZAorICAgICAgICAvLyBmb3IgY3JlZGVudGlhbHMgb24gYSBjcm9zcy1vcmln
aW4gcmVxdWVzdC4gRmFsbCB0aHJvdWdoIGFuZCBjYW5jZWwgZm9yIG90aGVyIHBsYXRmcm9tcy4K
KyAgICAgICAgaGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbChjaGFsbGVuZ2UpOworICAgICAgICBpZiAoIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBicmVhazsKKyNlbmRp
ZgorICAgIGNhc2UgQXV0aGVudGljYXRlTmV2ZXI6CisgICAgICAgIGNhbmNlbCgpOwogICAgICAg
ICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjaGFsbGVuZ2UpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewot
ICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7Ci0gICAgICAgIAotICAgIFJlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKHRoaXMsIGNoYWxsZW5nZSk7
Ci0gICAgCi0gICAgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNoYWxsZW5n
ZSk7CiB9Ci0gICAgCi0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA5MTkzNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkNy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpA
QCAtMjg3LDQyICsyODYsNiBAQAogICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsKIH0KIAot
Ym9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmdldFNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGJvb2wmIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKQotewotICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBsb2FkZXIgPT0gbV9sb2FkZXIg
fHwgIW1fbG9hZGVyKTsKLQotICAgIGlmICghbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpIHsK
LSAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBmYWxzZTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IEZyYW1lTG9hZGVy
Q2xpZW50IGNhbiB1bHRpbWF0ZWx5IHBlcm1pdCBjcmVkZW50aWFsIHVzZS4KLX0KLQotdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQotewotICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIpOwotICAgIC8v
IFVzZXJzIGFyZSBub3QgcHJvbXB0ZWQgZm9yIGNyZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4g
cmVxdWVzdHMuCi0gICAgaWYgKCFtX3NhbWVPcmlnaW5SZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0o
TUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkKLSAgICAgICAgbG9hZGVyLT5oYW5k
bGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5n
ZSk7Ci0jZWxzZQotICAgICAgICAvLyBUaGVzZSBwbGF0Zm9ybXMgZG9uJ3QgcHJvdmlkZSBhIHdh
eSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLCBjYW5jZWwgdGhlIGxvYWQgYWx0b2dl
dGhlci4KLSAgICAgICAgVU5VU0VEX1BBUkFNKGNoYWxsZW5nZSk7Ci0gICAgICAgIFJlZlB0cjxE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0gICAgICAgIG1fY2xpZW50
LT5kaWRGYWlsKGxvYWRlci0+YmxvY2tlZEVycm9yKCkpOwotICAgICAgICBjYW5jZWwoKTsKLSNl
bmRpZgotICAgIH0KLX0KLQotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlY2VpdmVk
Q2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyKTsKLSAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGxvYWRlci0+aWRlbnRpZmllcigp
LCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkpOwotfQotCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2VzcygpCiB7CiAgICAgT3duUHRyPFJlc291cmNlUmVx
dWVzdD4gYWN0dWFsUmVxdWVzdDsKQEAgLTM2Niw3ICszMjksNyBAQAogCiAgICAgICAgIC8vIENs
ZWFyIHRoZSBsb2FkZXIgc28gdGhhdCBhbnkgY2FsbGJhY2tzIGZyb20gU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSB3aWxsIG5vdCBoYXZlIHRoZSBvbGQgbG9hZGVyLgogICAgICAgICBtX2xvYWRl
ciA9IDA7Ci0gICAgICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIFJl
c291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBzZW5kTG9hZENhbGxiYWNr
cywKKyAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVT
dWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgQXV0aGVu
dGljYXRlU2FtZU9yaWdpbiwgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hl
Y2ssIHNlbmRMb2FkQ2FsbGJhY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmlmZkNvbnRlbnQsIHNob3VsZEJ1
ZmZlckRhdGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5MTkzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSB7IH0KLQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgcHJvdGVjdGVk
OgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDkxOTM0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQAogICAgIAogICAgIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBT
dWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5
Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91bGRC
dWZmZXJEYXRhID0gdHJ1ZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEF1dGhlbnRpY2F0aW9uUG9saWN5LCBTZWN1cml0eUNoZWNrUG9saWN5
ID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVl
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSA9
IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBTdWJyZXNv
dXJjZUxvYWRlckNsaWVudCosIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBz
aG91bGRDb250ZW50U25pZmYpOworICAgICAgICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIFN1
YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgQXV0aGVudGljYXRpb25Qb2xpY3ksIGJvb2wgc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwogICAgICAgICB2
aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTU2LDkgKzU2LDcgQEAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxh
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOyAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTY5LDYgKzY3
LDcgQEAKIAogICAgICAgICBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAgICAg
ICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKKyAgICAgICAgQXV0aGVudGljYXRp
b25Qb2xpY3kgbV9hdXRoZW50aWNhdGlvblBvbGljeTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102970</attachid>
            <date>2011-08-04 13:30:09 -0700</date>
            <delta_ts>2011-08-17 08:34:31 -0700</delta_ts>
            <desc>Remove getShouldUseCredentialStorage()</desc>
            <filename>shoulduse.txt</filename>
            <type>text/plain</type>
            <size>5819</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDgtMDQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZ2V0U2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKSBmcm9tIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBvbmx5LCBu
byBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaDoKKwogMjAx
MS0wOC0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzk4ODI1ODE+LCA8cmRhcjovL3Byb2JsZW0vOTg2ODAxNT4sIGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MTIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5
MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxNiBAQAogI2VuZGlmCiAgICAgaWYg
KCFmYXN0TWFsbG9jU2l6ZShkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpKSkKICAgICAgICAgQ1JB
U0goKTsKKworICAgIC8vIFRoaXMgaXMgc29ydCBvZiBhIHdlaXJkIGNoZWNrLCBiZWNhdXNlIGNv
b2tpZXMgYW5kIHN0b3JlZCBjcmVkZW50aWFscyBhcmVuJ3QgdGhlIHNhbWUgdGhpbmcuCisgICAg
Ly8gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvciBpdDoKKyAgICAvLyAoMSkgVGhlIHBsYWNlcyB3
aGVyZSB3ZSd2ZSB0cmFkaXRpb25hbGx5IGhhZCBhIGJsYW5rZXQgYmFuIG9uIHN0b3JlZCBjcmVk
ZW50aWFscyB3ZXJlIGlkZW50aWNhbAorICAgIC8vICAgICB0byB0aGUgcGxhY2VzIHdoZXJlIHdl
IGZvcmJhZGUgY29va2llcy4KKyAgICAvLyAoMikgSXQgc2VlbXMgbGlrZSBpZiB3ZSBkb24ndCBm
ZWVsIGl0J3Mgc2FmZSB0byBzZW5kIGNvb2tpZXMsIHdlIGNlcnRhaW5seSBzaG91bGRuJ3QgYmUg
c2VuZGluZworICAgIC8vICAgICBzdG9yZWQgY3JlZGVudGlhbHMuCisgICAgaWYgKCFtX3JlcXVl
c3QuYWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKICAgICByZXR1cm4gZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGRvY3VtZW50TG9hZGVy
KCksIGlkZW50aWZpZXIoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhT
dWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRl
ciosIGJvb2wmIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsMTcgKzIzNSw2IEBA
CiAgICAgbV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9
CiAKLWJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkK
LXsKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBi
b29sIHNob3VsZFVzZTsKLSAgICBpZiAobV9jbGllbnQgJiYgbV9jbGllbnQtPmdldFNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMsIHNob3VsZFVzZSkpCi0gICAgICAgIHJldHVybiBzaG91
bGRVc2U7Ci0KLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKCk7Ci19Ci0KIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
KQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsMTggKzI4Nyw2IEBACiAg
ICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IpOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Z2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgYm9vbCYgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRChsb2FkZXIsIGxvYWRlciA9PSBtX2xvYWRlciB8fCAhbV9sb2FkZXIpOwotCi0gICAg
aWYgKCFtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscykgewotICAgICAgICBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgRnJhbWVMb2FkZXJDbGllbnQgY2FuIHVsdGltYXRlbHkg
cGVybWl0IGNyZWRlbnRpYWwgdXNlLgotfQotCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAg
QVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBA
QAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNo
YXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUg
ZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7ICAg
ICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102985</attachid>
            <date>2011-08-04 14:58:08 -0700</date>
            <delta_ts>2011-08-04 15:22:22 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge()</desc>
            <filename>shoulduse.txt</filename>
            <type>text/plain</type>
            <size>5819</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDgtMDQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZ2V0U2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKSBmcm9tIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBvbmx5LCBu
byBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaDoKKwogMjAx
MS0wOC0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzk4ODI1ODE+LCA8cmRhcjovL3Byb2JsZW0vOTg2ODAxNT4sIGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MTIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5
MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxNiBAQAogI2VuZGlmCiAgICAgaWYg
KCFmYXN0TWFsbG9jU2l6ZShkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpKSkKICAgICAgICAgQ1JB
U0goKTsKKworICAgIC8vIFRoaXMgaXMgc29ydCBvZiBhIHdlaXJkIGNoZWNrLCBiZWNhdXNlIGNv
b2tpZXMgYW5kIHN0b3JlZCBjcmVkZW50aWFscyBhcmVuJ3QgdGhlIHNhbWUgdGhpbmcuCisgICAg
Ly8gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvciBpdDoKKyAgICAvLyAoMSkgVGhlIHBsYWNlcyB3
aGVyZSB3ZSd2ZSB0cmFkaXRpb25hbGx5IGhhZCBhIGJsYW5rZXQgYmFuIG9uIHN0b3JlZCBjcmVk
ZW50aWFscyB3ZXJlIGlkZW50aWNhbAorICAgIC8vICAgICB0byB0aGUgcGxhY2VzIHdoZXJlIHdl
IGZvcmJhZGUgY29va2llcy4KKyAgICAvLyAoMikgSXQgc2VlbXMgbGlrZSBpZiB3ZSBkb24ndCBm
ZWVsIGl0J3Mgc2FmZSB0byBzZW5kIGNvb2tpZXMsIHdlIGNlcnRhaW5seSBzaG91bGRuJ3QgYmUg
c2VuZGluZworICAgIC8vICAgICBzdG9yZWQgY3JlZGVudGlhbHMuCisgICAgaWYgKCFtX3JlcXVl
c3QuYWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKICAgICByZXR1cm4gZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGRvY3VtZW50TG9hZGVy
KCksIGlkZW50aWZpZXIoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhT
dWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRl
ciosIGJvb2wmIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsMTcgKzIzNSw2IEBA
CiAgICAgbV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9
CiAKLWJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkK
LXsKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBi
b29sIHNob3VsZFVzZTsKLSAgICBpZiAobV9jbGllbnQgJiYgbV9jbGllbnQtPmdldFNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMsIHNob3VsZFVzZSkpCi0gICAgICAgIHJldHVybiBzaG91
bGRVc2U7Ci0KLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKCk7Ci19Ci0KIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
KQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsMTggKzI4Nyw2IEBACiAg
ICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IpOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Z2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgYm9vbCYgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRChsb2FkZXIsIGxvYWRlciA9PSBtX2xvYWRlciB8fCAhbV9sb2FkZXIpOwotCi0gICAg
aWYgKCFtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscykgewotICAgICAgICBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgRnJhbWVMb2FkZXJDbGllbnQgY2FuIHVsdGltYXRlbHkg
cGVybWl0IGNyZWRlbnRpYWwgdXNlLgotfQotCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAg
QVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBA
QAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNo
YXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUg
ZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7ICAg
ICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102990</attachid>
            <date>2011-08-04 15:22:22 -0700</date>
            <delta_ts>2011-08-17 08:34:39 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge()</desc>
            <filename>receivechallenge.txt</filename>
            <type>text/plain</type>
            <size>15573</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMDQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbQorICAgICAgICBTdWJyZXNvdXJjZUxvYWRlckNs
aWVudC4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUz
MzAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3Igb25seSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OlN1
YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlckNsaWVudDo6Z2V0U2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oOgorCiAyMDExLTA4LTA0ICBTZXJnZXkgR2xhenVub3YgIDxzZXJnLmdsYXp1bm92QGdt
YWlsLmNvbT4KIAogICAgICAgICBGaXggaW50ZWdlciBvdmVyZmxvdyBpbiBjdXN0b20gYmluZGlu
Z3MgZm9yIFdlYkdMUmVuZGVyaW5nQ29udGV4dApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsMTIg
QEAKICAgICB9OwogCiAgICAgdHlwZWRlZiBpbnQgU2FuZGJveEZsYWdzOworCisgICAgZW51bSBV
c2VyQ3JlZGVudGlhbFBvbGljeSB7CisgICAgICAgIEFza1VzZXJGb3JDcmVkZW50aWFsc0Fsd2F5
cywKKyAgICAgICAgQXNrVXNlckZvckNyZWRlbnRpYWxzU2FtZU9yaWdpbiwKKyAgICAgICAgQXNr
VXNlckZvckNyZWRlbnRpYWxzTmV2ZXIKKyAgICB9OwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAK
ICAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkocHJpb3JpdHkpOwogCiAgICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZy
YW1lKCksCi0gICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJpb3JpdHks
IHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgICAgICByZXF1
ZXN0LmdldCgpLCByZXNvdXJjZVJlcXVlc3QsIEFza1VzZXJGb3JDcmVkZW50aWFsc0Fsd2F5cywg
cHJpb3JpdHksIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOwogICAg
IGlmICghbG9hZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAg
ICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJjZXMgaW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGlu
ZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/CiAgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJD
YW5ub3Qgc3RhcnQgbG9hZGluZyAnJXMnIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTAgKzg1
LDEwIEBACiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1
YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kg
c2VjdXJpdHlDaGVjaywKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNv
dXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFVzZXJDcmVkZW50aWFsUG9saWN5IHBvbGljeSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3Jp
dHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiwgYm9vbCBzaG91bGRCdWZmZXJEYXRhKQogewotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1
ZXN0LCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250
ZW50U25pZmYsIHNob3VsZEJ1ZmZlckRhdGEpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1
ZXN0LCBwb2xpY3ksIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNo
b3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQnVmZmVyRGF0YSk7CiAgICAgaWYgKGxvYWRlcikKICAg
ICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcHJpb3JpdHkpOwogICAgIHJldHVybiBs
b2FkZXIucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDYgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBib29sJiAvKnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKi8pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSB7IH0KIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBACiAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigp
LT51cmwoKSk7CiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFBy
aW9yaXR5TG93KTsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZnJhbWUsIHRo
aXMsIHJlc291cmNlUmVxdWVzdCk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2Fk
ZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9m
cmFtZSwgdGhpcywgcmVzb3VyY2VSZXF1ZXN0LCBBc2tVc2VyRm9yQ3JlZGVudGlhbHNOZXZlcik7
CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxv
YWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmljb24oKS0+dXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0xMjQsMTMgKzEyNCw2IEBACiAgICAgfQog
fQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAg
ICAvLyBXZSBkb24ndCBldmVyIHdhbnQgdG8gcHJvbXB0IGZvciBhdXRoZW50aWNhdGlvbiBqdXN0
IGZvciBhIHNpdGUgaWNvbiwgc28KLSAgICAvLyBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gY2Fu
Y2VsIHRoZSByZXNvdXJjZSBsb2FkCi0gICAgbV9yZXNvdXJjZUxvYWRlci0+Y2FuY2VsKCk7Ci19
Ci0KIHZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciog
cmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKIHsKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9hZGVyICVwIiwgcmVzb3VyY2VMb2FkZXIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkocmV2aXNpb24gOTIz
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDggKzU0LDYgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
U3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLQogICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIHZv
aWQgY2xlYXJMb2FkaW5nU3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5TG93LCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1cml0eUNoZWNr
LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRl
bnRTbmlmZiA9IHRydWUsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSA9IHRydWUpOworICAgIFBhc3NS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBVc2VyQ3Jl
ZGVudGlhbFBvbGljeSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0
eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVl
LCBib29sIHNob3VsZEJ1ZmZlckRhdGEgPSB0cnVlKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQg
cmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODMsNyArODMsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBib29s
JiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
YW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEwICs0NCwxMSBAQAogc3RhdGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyIHN1
YnJlc291cmNlTG9hZGVyQ291bnRlcigiU3VicmVzb3VyY2VMb2FkZXIiKTsKICNlbmRpZgogCi1T
dWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBTdWJyZXNv
dXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNl
TG9hZGVyKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgVXNl
ckNyZWRlbnRpYWxQb2xpY3kgcG9saWN5LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZikKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKICAgICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2UpCisgICAg
LCBtX3VzZXJDcmVkZW50aWFsUG9saWN5KHBvbGljeSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAg
c3VicmVzb3VyY2VMb2FkZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNjEsNyArNjIsNyBAQAog
I2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9h
ZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiwgYm9vbCBzaG91bGRCdWZmZXJEYXRhKQorUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
VXNlckNyZWRlbnRpYWxQb2xpY3kgcG9saWN5LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTk5LDcgKzEwMCw3IEBACiAKICAgICBmbC0+YWRkRXh0cmFGaWVsZHNU
b1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwg
Y2xpZW50LCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25pZmYpKSk7
CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzdWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1
YnJlc291cmNlTG9hZGVyKGZyYW1lLCBjbGllbnQsIHBvbGljeSwgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmKSkpOwogICAgIHN1YmxvYWRlci0+c2V0U2hvdWxk
QnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhKTsKICAgICBzdWJsb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmFkZFN1YnJlc291cmNlTG9hZGVyKHN1YmxvYWRlci5nZXQoKSk7CiAgICAgaWYgKCFz
dWJsb2FkZXItPmluaXQobmV3UmVxdWVzdCkpCkBAIC0yNTIsMTggKzI1MywyMiBAQAogCiAgICAg
QVNTRVJUKGhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKIAotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwotICAgIAotICAgIC8vIFRoZSBTdWJSZXNvdXJjZUxv
YWRlckNsaWVudCBtYXkgaGF2ZSBjYW5jZWxsZWQgdGhpcyBSZXNvdXJjZUxvYWRlciBpbiByZXNw
b25zZSB0byB0aGUgY2hhbGxlbmdlLiAgCi0gICAgLy8gSWYgdGhhdCdzIHRoZSBjYXNlLCBkb24n
dCBjYWxsIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS4KLSAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBzd2l0Y2ggKG1fdXNlckNyZWRlbnRpYWxQb2xpY3kpIHsK
KyAgICBjYXNlIEFza1VzZXJGb3JDcmVkZW50aWFsc0Fsd2F5czoKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBc2tVc2VyRm9yQ3JlZGVudGlhbHNTYW1lT3JpZ2luOgorICAgICAgICBpZiAobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0KCku
dXJsKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc2tVc2VyRm9yQ3JlZGVudGlh
bHNOZXZlcjoKKyAgICAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0
byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgorICAgICAgICAvLyBJZiB3ZSBjYW4ndCBj
b250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBhbHRv
Z2V0aGVyLgorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwp
CisgICAgICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwoY2hhbGxlbmdlKTsKKyNlbmRpZgorICAgICAgICBpZiAoaGFuZGxlKCktPmhhc0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkpCisgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gSXQgbWF5IGhhdmUgYWxzbyBoYW5kbGVkIGF1dGhlbnRpY2F0aW9uIG9u
IGl0cyBvd24uCi0gICAgaWYgKCFoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgfQogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwyMyArMjk5LDYgQEAKICAgICByZXR1
cm4gZmFsc2U7IC8vIE9ubHkgRnJhbWVMb2FkZXJDbGllbnQgY2FuIHVsdGltYXRlbHkgcGVybWl0
IGNyZWRlbnRpYWwgdXNlLgogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJU
KGxvYWRlciA9PSBtX2xvYWRlcik7Ci0gICAgLy8gVXNlcnMgYXJlIG5vdCBwcm9tcHRlZCBmb3Ig
Y3JlZGVudGlhbHMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4KLSAgICBpZiAoIW1fc2FtZU9y
aWdpblJlcXVlc3QpIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShDVVJMKQotICAgICAgICBsb2FkZXItPmhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKLSNlbHNlCi0gICAgICAgIC8vIFRoZXNl
IHBsYXRmb3JtcyBkb24ndCBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVu
dGlhbHMsIGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotICAgICAgICBVTlVTRURfUEFSQU0o
Y2hhbGxlbmdlKTsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJv
dGVjdCh0aGlzKTsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwobG9hZGVyLT5ibG9ja2VkRXJy
b3IoKSk7Ci0gICAgICAgIGNhbmNlbCgpOwotI2VuZGlmCi0gICAgfQotfQotCiB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsK
ICAgICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMzY2LDcgKzM0OSw3IEBACiAKICAgICAgICAgLy8g
Q2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCiAgICAgICAgIG1fbG9h
ZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwg
UmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJh
Y2tzLAorICAgICAgICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVs
ZVN1YnJlc291cmNlTG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBBc2tV
c2VyRm9yQ3JlZGVudGlhbHNTYW1lT3JpZ2luLCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwg
c2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaWZmQ29udGVu
dCwgc2hvdWxkQnVmZmVyRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTIzOTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTIgKzQxLDEyIEBACiAgICAgCiAgICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9h
ZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSA9
IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlLCBib29sIHNob3VsZEJ1ZmZlckRhdGEgPSB0
cnVlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0
ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgVXNlckNyZWRlbnRpYWxQb2xpY3ksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxk
Q29udGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91bGRCdWZmZXJEYXRhID0gdHJ1ZSk7CiAKICAg
ICAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50KiwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRT
bmlmZik7CisgICAgICAgIFN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqLCBVc2VyQ3JlZGVudGlhbFBvbGljeSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgICAgIHZpcnR1YWwgflN1YnJl
c291cmNlTG9hZGVyKCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpOwpAQCAtNjksNiArNjksNyBAQAogCiAgICAgICAgIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgYm9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50
OworICAgICAgICBVc2VyQ3JlZGVudGlhbFBvbGljeSBtX3VzZXJDcmVkZW50aWFsUG9saWN5Owog
ICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103077</attachid>
            <date>2011-08-05 09:28:34 -0700</date>
            <delta_ts>2011-08-08 16:53:37 -0700</delta_ts>
            <desc>Remove receivedCancellation()</desc>
            <filename>cancellation.txt</filename>
            <type>text/plain</type>
            <size>10812</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgtMDUgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oKSBmcm9tIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LgorICAgICAgICBJdCBhcHBl
YXJzIHRvIGJlIGEgY29tcGxldGUgbm8tb3AuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTEtMDgtMDUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgogCiAgICAgICAgIGRpcj1hdXRvIG5lZWRzIHRvIHdvcmsgb24gdmFsdWUg
b2YgaW5wdXQgYW5kIHRleHRhcmVhIGVsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTcyLDExICsxNzIsNiBAQAogICAgIG5vdGlmeUVycm9yKCk7CiB9CiAKLXZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24odW5zaWdu
ZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCi17Ci0gICAg
bm90aWZ5RXJyb3IoKTsKLX0KLQogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9y
KCkKIHsKICAgICBtX2ZhaWxlZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmgJKHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVj
dENoZWNrKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24odW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIHZvaWQgc2V0VGFy
Z2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSkgeyBtX3Rhcmdl
dFR5cGUgPSB0YXJnZXRUeXBlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDEx
ICsyMTEsNiBAQAogICAgIGZpbmlzaExvYWRpbmcoKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBsb25nLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikKLXsKLSAgICBmaW5pc2hMb2FkaW5nKCk7Ci19Ci0KIHZvaWQg
Tm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKCkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBMb2Fk
aW5nKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgJKHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw2IEBACiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0
aW9uKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA5MjM5OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNDUsMTEgKzEwNDUsNiBAQAogICAgICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSByZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBmYWlsdXJlUmVzcG9uc2UpCi17Ci0gICAgbV9yZXNwb25zZSA9IGZhaWx1
cmVSZXNwb25zZTsKLX0KLQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAobV9lcnJvcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDYg
QEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNr
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlv
bih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CiAgICAgYm9vbCByZXNwb25zZUlz
WE1MKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMs
NiBAQAogICAgIAogICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uq
LykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU3Vi
cmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQotCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ5LDE4ICsyNDksNiBAQAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZEZh
aWxSZWRpcmVjdENoZWNrLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpLCBtX3Rhc2tNb2RlKTsKIH0K
IAotc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBy
ZXNwb25zZURhdGEpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dv
cmtlckNvbnRleHQoKSk7Ci0gICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2U6OmFkb3B0KHJlc3BvbnNlRGF0YSkpOwotICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihpZGVudGlmaWVyLCAq
cmVzcG9uc2UpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNr
VGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbiwg
bV93b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSksIG1fdGFza01vZGUp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDYgQEAKICAgICAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWxSZWRpcmVjdENoZWNrKCk7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgICAgICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgb24g
dGhlIG1haW4gdGhyZWFkLgogICAgICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1f
bWFpblRocmVhZExvYWRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw2IEBACiAKICAgICAgICAgdmlydHVhbCBib29sIGdldFNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKFN1YnJlc291cmNlTG9hZGVyKiwgYm9vbCYgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5MjM5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2NywxNyArMjY3LDQgQEAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCi17Ci0gICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKLSAgICAgICAg
Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVjZWl2ZWRDYW5jZWxsYXRpb24odGhpcywg
Y2hhbGxlbmdlKTsKLSAgICAKLSAgICBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24oY2hhbGxlbmdlKTsKIH0KLSAgICAKLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDkyMzk5KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNiwxMyArMzE2LDYgQEAKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewot
ICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlciA9
PSBtX2xvYWRlcik7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbihsb2FkZXItPmlkZW50aWZpZXIoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
KTsKLX0KLQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3Mo
KQogewogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGFjdHVhbFJlcXVlc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDkyMzk5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBAQAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24odW5zaWduZWQgbG9uZyAvKmlkZW50aWZp
ZXIqLywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gOTIzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNiBAQAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103316</attachid>
            <date>2011-08-08 16:53:37 -0700</date>
            <delta_ts>2011-09-06 15:29:05 -0700</delta_ts>
            <desc>Remove receivedCancellation() - with better ChangeLog</desc>
            <filename>cancellation2.txt</filename>
            <type>text/plain</type>
            <size>11233</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNjUzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMzUgQEAKKzIwMTEtMDgtMDggIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZW1vdmUgcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oKSBmcm9tIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LgorICAgICAgICBJdCdzIGEg
bm8tb3AgYmVjYXVzZSBpdCdzIGFsd2F5cyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhCisgICAg
ICAgIGNhbmNlYWxsYXRpb24gKFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbigp
IGNhbGxzCisgICAgICAgIGNhbmNlbCgpLCB3aGljaCBsZWFkcyB0byBjYWxsaW5nIFN1YnJlc291
cmNlTG9hZGVyQ2xpbmV0OjpkaWRGYWlsKCkpLgorICAgICAgICBGb3IgV29ya2VyU2NyaXB0TG9h
ZGVyIGFuZCBOb3RpZmljYXRpb24sIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKCkKKyAgICAgICAgYW5k
IGRpZEZhaWwoKSBhcmUgaWRlbnRpY2FsLiBGb3IgWE1MSHR0cFJlcXVlc3QsIHJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKCkKKyAgICAgICAgc2V0cyBtX3Jlc3BvbnNlLCB3aGljaCBkaWRGYWlsKCkgY2xl
YXJzIGJlZm9yZSBpdCBjYW4gYmUgdXNlZC4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTMzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAg
ICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorCiAgICAgICAgIExvZ2ljIHRvIGNvbXB1dGUgdmlzaWJsZSBk
aXNwbGF5IHJlY3QgaW4gR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MDgKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAkocmV2
aXNpb24gOTI2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MiwxMSArMTcyLDYgQEAKICAgICBub3RpZnlFcnJv
cigpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKQotewotICAgIG5vdGlmeUVycm9yKCk7Ci19Ci0KIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpub3RpZnlFcnJvcigpCiB7CiAgICAgbV9mYWlsZWQgPSB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lvbiA5
MjY1MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcgLyppZGVudGlm
aWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQogICAgICAgICB2b2lkIHNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBl
IHRhcmdldFR5cGUpIHsgbV90YXJnZXRUeXBlID0gdGFyZ2V0VHlwZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gOTI2
NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSwxMSArMjExLDYgQEAKICAgICBmaW5pc2hMb2FkaW5nKCk7CiB9
CiAKLXZvaWQgTm90aWZpY2F0aW9uOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRp
b24odW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCi17Ci0gICAgZmluaXNo
TG9hZGluZygpOwotfQotCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZygpCiB7CiAg
ICAgaWYgKG1fc3RhdGUgPT0gTG9hZGluZykgewpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA5MjY1MykKKysrIFNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3
ICsxMDcsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOb3RpZmljYXRpb24oY29uc3QgS1VS
TCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAkocmV2aXNpb24gOTI2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ4LDExICsxMDQ4LDYgQEAKICAgICAgICAgbV9y
ZXNwb25zZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogfQogCi12b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24odW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgZmFpbHVyZVJlc3BvbnNlKQotewot
ICAgIG1fcmVzcG9uc2UgPSBmYWlsdXJlUmVzcG9uc2U7Ci19Ci0KIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiB7CiAgICAgaWYg
KG1fZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkocmV2aXNpb24g
OTI2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDcgKzE1NSw2IEBACiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DYW5jZWxsYXRpb24odW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0
OwogICAgIGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDkyNjUzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDggKzUzLDYgQEAKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBib29sJiAvKnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSB7IH0KLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAko
cmV2aXNpb24gOTI2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxOCArMjQ5LDYgQEAKICAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRGYWlsUmVkaXJlY3RDaGVjaywgbV93b3JrZXJDbGllbnRXcmFw
cGVyKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRX
cmFwcGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9uc2VEYXRhKQotewotICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIE93blB0cjxSZXNvdXJj
ZVJlc3BvbnNlPiByZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEp
KTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5j
ZWxsYXRpb24oaWRlbnRpZmllciwgKnJlc3BvbnNlKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5j
ZWxsYXRpb24odW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKLXsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DYW5jZWxsYXRpb24sIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmllciwg
cmVzcG9uc2UpLCBtX3Rhc2tNb2RlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDkyNjUzKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDcgKzExOSw2IEBACiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwotICAgICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbih1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgICAgICAgICAg
Ly8gT25seSB0byBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAgIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyPiBtX21haW5UaHJlYWRMb2FkZXI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5
MjY1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNiBAQAogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wm
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENh
bmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CiAKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gOTI2NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsMTcgKzI2Nyw0IEBACiAgICAgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewotICAgIEFTU0VSVCghcmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSk7Ci0gICAgICAgIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdCh0aGlzKTsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKHRoaXMsIGNoYWxsZW5nZSk7Ci0gICAgCi0gICAgUmVzb3VyY2VMb2Fk
ZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNoYWxsZW5nZSk7CiB9Ci0gICAgCi0KLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA5MjY1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsMTMgKzMxNiw2IEBACiAg
ICAgfQogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxs
YXRpb24oU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIEFTU0VSVF9V
TlVTRUQobG9hZGVyLCBsb2FkZXIgPT0gbV9sb2FkZXIpOwotICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24obG9hZGVyLT5pZGVudGlmaWVyKCksIGNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSk7Ci19Ci0KIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKIHsKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBh
Y3R1YWxSZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5MjY1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYg
QEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSB7IH0KIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVu
c2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0K
LQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQo
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDkyNjUzKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsgICAg
ICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104190</attachid>
            <date>2011-08-17 10:22:44 -0700</date>
            <delta_ts>2011-09-06 15:29:09 -0700</delta_ts>
            <desc>Remove getShouldUseCredentialStorage() - with more ChangeLog</desc>
            <filename>shoulduse.txt</filename>
            <type>text/plain</type>
            <size>5962</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMjEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMTcgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZ2V0U2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKSBmcm9tIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LgorICAgICAg
ICBJdHMgb25seSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIs
IHdoZXJlIGl0IGlzCisgICAgICAgIGJhc2VkIG9uIHRoZSBzYW1lIHZhcmlhYmxlIHRoYXQgaXMg
dXNlZCB0byBmb3JiaWQgY29va2llcyBmb3IgdGhlCisgICAgICAgIHJlcXVlc3QgaW4gcXVlc3Rp
b24uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKTogRG9uJ3QgYXNrIHRoZQorICAgICAgICAgICAgZW1iZWRkZXIgd2hldGhl
ciB3ZSBjYW4gYWNjZXNzIGNyZWRlbnRpYWwgc3RvcmFnZSBpZiBjb29raWVzIGFyZQorICAgICAg
ICAgICAgZm9yYmlkZGVuLgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDgtMTcgIFNhaWxlc2ggQWdyYXdh
bCAgPHNhaWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENocm9taXVtIE1hYzogRml4IGltcGxl
bWVudGF0aW9uIG9mIHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVlZGVkRm9yVGh1bWIg
dG8gbWF0Y2ggV2ViS2l0U3lzdGVtSW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTMyMTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNiBAQAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoU3VicmVzb3VyY2VMb2FkZXIqLCBib29sJiAvKnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
Ki8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgeyB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDkzMjEyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDYgKzUxOSwxNiBAQAogI2Vu
ZGlmCiAgICAgaWYgKCFmYXN0TWFsbG9jU2l6ZShkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpKSkK
ICAgICAgICAgQ1JBU0goKTsKKworICAgIC8vIFRoaXMgaXMgc29ydCBvZiBhIHdlaXJkIGNoZWNr
LCBiZWNhdXNlIGNvb2tpZXMgYW5kIHN0b3JlZCBjcmVkZW50aWFscyBhcmVuJ3QgdGhlIHNhbWUg
dGhpbmcuCisgICAgLy8gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvciBpdDoKKyAgICAvLyAoMSkg
VGhlIHBsYWNlcyB3aGVyZSB3ZSd2ZSB0cmFkaXRpb25hbGx5IGhhZCBhIGJsYW5rZXQgYmFuIG9u
IHN0b3JlZCBjcmVkZW50aWFscyB3ZXJlIGlkZW50aWNhbAorICAgIC8vICAgICB0byB0aGUgcGxh
Y2VzIHdoZXJlIHdlIGZvcmJhZGUgY29va2llcy4KKyAgICAvLyAoMikgSXQgc2VlbXMgbGlrZSBp
ZiB3ZSBkb24ndCBmZWVsIGl0J3Mgc2FmZSB0byBzZW5kIGNvb2tpZXMsIHdlIGNlcnRhaW5seSBz
aG91bGRuJ3QgYmUgc2VuZGluZworICAgIC8vICAgICBzdG9yZWQgY3JlZGVudGlhbHMuCisgICAg
aWYgKCFtX3JlcXVlc3QuYWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKICAgICByZXR1
cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGRv
Y3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5MzIxMikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShTdWJy
ZXNvdXJjZUxvYWRlciosIGJvb2wmIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDkzMjEyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDE3ICsyMzUsNiBA
QAogICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlbW92ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOwog
fQogCi1ib29sIFN1YnJlc291cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgp
Ci17Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAg
Ym9vbCBzaG91bGRVc2U7Ci0gICAgaWYgKG1fY2xpZW50ICYmIG1fY2xpZW50LT5nZXRTaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzLCBzaG91bGRVc2UpKQotICAgICAgICByZXR1cm4gc2hv
dWxkVXNlOwotCi0gICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSgpOwotfQotCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAkocmV2aXNpb24gOTMyMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDE4ICsyODgsNiBAQAog
ICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsKIH0KIAotYm9vbCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmdldFNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFN1YnJlc291cmNlTG9hZGVy
KiBsb2FkZXIsIGJvb2wmIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQotewotICAgIEFTU0VS
VF9VTlVTRUQobG9hZGVyLCBsb2FkZXIgPT0gbV9sb2FkZXIgfHwgIW1fbG9hZGVyKTsKLQotICAg
IGlmICghbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpIHsKLSAgICAgICAgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IEZyYW1lTG9hZGVyQ2xpZW50IGNhbiB1bHRpbWF0ZWx5
IHBlcm1pdCBjcmVkZW50aWFsIHVzZS4KLX0KLQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAg
IEFTU0VSVChsb2FkZXIgPT0gbV9sb2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDkzMjEyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYg
QEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBj
aGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91Ymxl
IGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104198</attachid>
            <date>2011-08-17 11:16:35 -0700</date>
            <delta_ts>2011-08-22 13:28:12 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge() - more ChangeLog</desc>
            <filename>receivedChallenge.txt</filename>
            <type>text/plain</type>
            <size>15684</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMjE4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDgtMTcgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC4KKyAg
ICAgICAgSW5zdGVhZCwgcGFzcyB0aGUgY2xpZW50J3MgcG9saWN5IGZvciBzaG93aW5nIHRoZSB1
c2VyIGFuIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGNoYWxsZW5nZSBkb3duIGludG8gU3VicmVz
b3VyY2VMb2FkZXIgYW5kIGVuZm9yY2UgaXQgdGhlcmUuCisgICAgICAgIE5vdGUgdGhhdCB0aGlz
IG9ubHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1
MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
clR5cGVzLmg6IEFkZCBVc2VyQ3JlZGVudGlhbFBvbGljeSBlbnVtLgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6IEhhbmRsZSB0aGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgICAgICBi
YXNlZCBvbiB0aGUgZW51bSB2YWx1ZSBTdWJyZXNvdXJjZUxvYWRlciB3YXMgZ2l2ZW4gaW4gaXRz
IGNvbnN0cnVjdG9yLiBUaGlzIGNhbiByZXN1bHQKKyAgICAgICAgICAgICBpbiBwZXJtaXR0aW5n
IGZvciB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIChieSBjYWxsaW5nIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNpZXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSksCisgICAgICAgICAgICAg
YXR0ZW1wdGluZyB0byBjb250aW51ZSB3aXRob3V0IHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVu
Z2UgKGlmIHRoZSBwb3J0IHN1cHBvcnRzIGl0KSwgb3IgY2FuY2VsaW5nIHRoZSBsb2FkLgorICAg
ICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgor
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKwogMjAxMS0wOC0xNyAgTHVrZSBN
YWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9ubHkgc2V0
IG1fZm9udERpcnR5IGlmIFRleHRTaXplQWRqdXN0IGlzIGFjdHVhbGx5IGNoYW5nZWQuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDkyNzk2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIzLDYgKzEyMywxMiBAQAogICAgIH07CiAKICAgICB0eXBlZGVmIGludCBTYW5k
Ym94RmxhZ3M7CisKKyAgICBlbnVtIFVzZXJDcmVkZW50aWFsUG9saWN5IHsKKyAgICAgICAgQXNr
VXNlckZvckNyZWRlbnRpYWxzQWx3YXlzLAorICAgICAgICBBc2tVc2VyRm9yQ3JlZGVudGlhbHNT
YW1lT3JpZ2luLAorICAgICAgICBBc2tVc2VyRm9yQ3JlZGVudGlhbHNOZXZlcgorICAgIH07CiB9
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHJldmlzaW9uIDkyNzk2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShw
cmlvcml0eSk7CiAKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291
cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwKLSAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVz
b3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcyk7CisgICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgQXNrVXNl
ckZvckNyZWRlbnRpYWxzQWx3YXlzLCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgaWYgKCFsb2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBv
dGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCByZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiA5Mjc5NikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSwxMCArODUsMTAgQEAKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFN1
YnJlc291cmNlTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLAorUGFzc1JlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9h
ZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlckNyZWRlbnRpYWxQb2xpY3kgcG9saWN5LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNo
ZWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZEJ1ZmZlckRhdGEpCiB7Ci0gICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQnVmZmVyRGF0YSk7CisgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHBvbGljeSwgc2VjdXJpdHlDaGVjaywgc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRCdWZmZXJEYXRh
KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCBw
cmlvcml0eSk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTI3
OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxv
YWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UqLykgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiA5Mjc5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3
IEBACiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIo
KS0+aWNvbigpLT51cmwoKSk7CiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KFJlc291
cmNlTG9hZFByaW9yaXR5TG93KTsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9h
ZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1f
ZnJhbWUsIHRoaXMsIHJlc291cmNlUmVxdWVzdCk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJj
ZUxvYWQobV9mcmFtZSwgdGhpcywgcmVzb3VyY2VSZXF1ZXN0LCBBc2tVc2VyRm9yQ3JlZGVudGlh
bHNOZXZlcik7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmljb24o
KS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0xMjQsMTMgKzEyNCw2IEBA
CiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikKLXsKLSAgICAvLyBXZSBkb24ndCBldmVyIHdhbnQgdG8gcHJvbXB0IGZvciBhdXRoZW50aWNh
dGlvbiBqdXN0IGZvciBhIHNpdGUgaWNvbiwgc28KLSAgICAvLyBpbXBsZW1lbnQgdGhpcyBtZXRo
b2QgdG8gY2FuY2VsIHRoZSByZXNvdXJjZSBsb2FkCi0gICAgbV9yZXNvdXJjZUxvYWRlci0+Y2Fu
Y2VsKCk7Ci19Ci0KIHZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKIHsKICAgICBMT0coSWNvbkRhdGFiYXNl
LCAiSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9hZGVyICVwIiwgcmVzb3VyY2VM
b2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkocmV2
aXNpb24gOTI3OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291
cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLQogICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEp
OwogICAgIHZvaWQgY2xlYXJMb2FkaW5nU3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gOTI3OTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2No
ZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0
eSA9IFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1
cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNo
b3VsZENvbnRlbnRTbmlmZiA9IHRydWUsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSA9IHRydWUpOwor
ICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2Fk
KEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBVc2VyQ3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxv
YWRQcmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYgPSB0cnVlLCBib29sIHNob3VsZEJ1ZmZlckRhdGEgPSB0cnVlKTsKICAgICBQYXNzUmVmUHRy
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJh
bWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwog
ICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5Mjc5NikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODMsNyArODMsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBib29sJiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDkyNzk2KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAg
KzQ0LDExIEBACiBzdGF0aWMgV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIgc3VicmVzb3VyY2VM
b2FkZXJDb3VudGVyKCJTdWJyZXNvdXJjZUxvYWRlciIpOwogI2VuZGlmCiAKLVN1YnJlc291cmNl
TG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91
bGRDb250ZW50U25pZmYpCitTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJh
bWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBVc2VyQ3JlZGVudGlh
bFBvbGljeSBwb2xpY3ksIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91
bGRDb250ZW50U25pZmYpCiAgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgc2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKKyAgICAsIG1fdXNlckNy
ZWRlbnRpYWxQb2xpY3kocG9saWN5KQogewogI2lmbmRlZiBOREVCVUcKICAgICBzdWJyZXNvdXJj
ZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC02MSw3ICs2Miw3IEBACiAjZW5kaWYKIH0K
IAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNr
LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
LCBib29sIHNob3VsZEJ1ZmZlckRhdGEpCitQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBVc2VyQ3JlZGVu
dGlhbFBvbGljeSBwb2xpY3ksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9v
bCBzaG91bGRCdWZmZXJEYXRhKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwpAQCAtOTksNyArMTAwLDcgQEAKIAogICAgIGZsLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3Vy
Y2VSZXF1ZXN0KG5ld1JlcXVlc3QpOwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBz
dWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCBjbGllbnQsIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKKyAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9wdFJlZihuZXcgU3VicmVzb3VyY2VM
b2FkZXIoZnJhbWUsIGNsaWVudCwgcG9saWN5LCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBz
aG91bGRDb250ZW50U25pZmYpKSk7CiAgICAgc3VibG9hZGVyLT5zZXRTaG91bGRCdWZmZXJEYXRh
KHNob3VsZEJ1ZmZlckRhdGEpOwogICAgIHN1YmxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRk
U3VicmVzb3VyY2VMb2FkZXIoc3VibG9hZGVyLmdldCgpKTsKICAgICBpZiAoIXN1YmxvYWRlci0+
aW5pdChuZXdSZXF1ZXN0KSkKQEAgLTI1MiwxOCArMjUzLDIyIEBACiAKICAgICBBU1NFUlQoaGFu
ZGxlKCktPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogCi0gICAgaWYgKG1fY2xpZW50
KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRo
aXMsIGNoYWxsZW5nZSk7Ci0gICAgCi0gICAgLy8gVGhlIFN1YlJlc291cmNlTG9hZGVyQ2xpZW50
IG1heSBoYXZlIGNhbmNlbGxlZCB0aGlzIFJlc291cmNlTG9hZGVyIGluIHJlc3BvbnNlIHRvIHRo
ZSBjaGFsbGVuZ2UuICAKLSAgICAvLyBJZiB0aGF0J3MgdGhlIGNhc2UsIGRvbid0IGNhbGwgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLgotICAgIGlmIChyZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQorICAgIHN3aXRjaCAobV91c2VyQ3JlZGVudGlhbFBvbGljeSkgeworICAgIGNhc2Ug
QXNrVXNlckZvckNyZWRlbnRpYWxzQWx3YXlzOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFz
a1VzZXJGb3JDcmVkZW50aWFsc1NhbWVPcmlnaW46CisgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlcXVlc3QoKS51cmwoKSkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEFza1VzZXJGb3JDcmVkZW50aWFsc05ldmVyOgor
ICAgICAgICAvLyBPbmx5IHRoZXNlIHBsYXRmb3JtcyBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVl
IHdpdGhvdXQgY3JlZGVudGlhbHMuCisgICAgICAgIC8vIElmIHdlIGNhbid0IGNvbnRpbnVlIHdp
dGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCisj
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkKKyAgICAgICAg
aGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFs
bGVuZ2UpOworI2VuZGlmCisgICAgICAgIGlmIChoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSkKKyAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBJdCBtYXkgaGF2ZSBhbHNvIGhhbmRsZWQgYXV0aGVudGljYXRpb24gb24gaXRzIG93bi4K
LSAgICBpZiAoIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKQotICAgICAg
ICByZXR1cm47Ci0KKyAgICB9CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gOTI3
OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDIzICsyOTksNiBAQAogICAgIHJldHVybiBmYWxzZTsg
Ly8gT25seSBGcmFtZUxvYWRlckNsaWVudCBjYW4gdWx0aW1hdGVseSBwZXJtaXQgY3JlZGVudGlh
bCB1c2UuCiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlQobG9hZGVyID09
IG1fbG9hZGVyKTsKLSAgICAvLyBVc2VycyBhcmUgbm90IHByb21wdGVkIGZvciBjcmVkZW50aWFs
cyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLgotICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVz
dCkgewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpCi0g
ICAgICAgIGxvYWRlci0+aGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwotI2Vsc2UKLSAgICAgICAgLy8gVGhlc2UgcGxhdGZvcm1z
IGRvbid0IHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscywgY2Fu
Y2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0gICAgICAgIFVOVVNFRF9QQVJBTShjaGFsbGVuZ2Up
OwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KHRoaXMp
OwotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChsb2FkZXItPmJsb2NrZWRFcnJvcigpKTsKLSAg
ICAgICAgY2FuY2VsKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKIHsKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1
ZXN0PiBhY3R1YWxSZXF1ZXN0OwpAQCAtMzU5LDcgKzM0Miw3IEBACiAKICAgICAgICAgLy8gQ2xl
YXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBTdWJyZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCiAgICAgICAgIG1fbG9hZGVy
ID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVz
b3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tz
LAorICAgICAgICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1
YnJlc291cmNlTG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBBc2tVc2Vy
Rm9yQ3JlZGVudGlhbHNTYW1lT3JpZ2luLCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwgc2Vj
dXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaWZmQ29udGVudCwg
c2hvdWxkQnVmZmVyRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTI3OTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTIgKzQxLDEyIEBACiAgICAgCiAgICAgY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgOiBw
dWJsaWMgUmVzb3VyY2VMb2FkZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSA9IERv
U2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9v
bCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlLCBib29sIHNob3VsZEJ1ZmZlckRhdGEgPSB0cnVl
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShG
cmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
VXNlckNyZWRlbnRpYWxQb2xpY3ksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hl
Y2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29u
dGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91bGRCdWZmZXJEYXRhID0gdHJ1ZSk7CiAKICAgICAg
ICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50
KiwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlm
Zik7CisgICAgICAgIFN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQqLCBVc2VyQ3JlZGVudGlhbFBvbGljeSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgICAgIHZpcnR1YWwgflN1YnJlc291
cmNlTG9hZGVyKCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOwpAQCAtNjgsNiArNjgsNyBAQAogCiAgICAgICAgIFN1YnJlc291cmNlTG9hZGVyQ2xp
ZW50KiBtX2NsaWVudDsKICAgICAgICAgYm9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50Owor
ICAgICAgICBVc2VyQ3JlZGVudGlhbFBvbGljeSBtX3VzZXJDcmVkZW50aWFsUG9saWN5OwogICAg
IH07CiAKIH0K
</data>
<flag name="review"
          id="99959"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="99960"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104727</attachid>
            <date>2011-08-22 13:28:12 -0700</date>
            <delta_ts>2011-08-30 11:09:39 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge() #3</desc>
            <filename>receivedChallenge2.txt</filename>
            <type>text/plain</type>
            <size>15827</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNDUxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMjIgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC4KKyAg
ICAgICAgSW5zdGVhZCwgcGFzcyB0aGUgbG9hZC1zcGVjaWZpYyBwb2xpY3kgZm9yIHNob3dpbmcg
dGhlIHVzZXIgYW4gYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxlbmdlIGRvd24gaW50byBT
dWJyZXNvdXJjZUxvYWRlciBhbmQgZW5mb3JjZSBpdCB0aGVyZS4KKyAgICAgICAgTm90ZSB0aGF0
IHRoaXMgb25seSBhZmZlY3RzIHRoZSBjYXNlIHdoZXJlIHdlJ3ZlIGFscmVhZHkgZGVjaWRlZCBu
b3QgdG8KKyAgICAgICAgdXNlIHN0b3JlZCBjcmVkZW50aWFscy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
aXR5IGNoYW5nZSBpbnRlbmRlZC4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6IEFkZCBVc2VyQ3JlZGVu
dGlhbFBvbGljeSBlbnVtLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IEhhbmRsZSB0
aGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgZW51bSB2YWx1ZSBT
dWJyZXNvdXJjZUxvYWRlciB3YXMgZ2l2ZW4gaW4gaXRzIGNvbnN0cnVjdG9yLiBUaGlzIGNhbiBy
ZXN1bHQKKyAgICAgICAgICAgICBpbiBwZXJtaXR0aW5nIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFs
bGVuZ2UgKGJ5IGNhbGxpbmcgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2lldmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKSwKKyAgICAgICAgICAgICBhdHRlbXB0aW5nIHRvIGNvbnRpbnVlIHdpdGhv
dXQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSAoaWYgdGhlIHBvcnQgc3VwcG9ydHMgaXQp
LCBvciBjYW5jZWxpbmcgdGhlIGxvYWQuCisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oOgorCiAyMDExLTA4LTE5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY1OTAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gOTM0
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsNiArMTIzLDEyIEBACiAgICAgfTsKIAogICAgIHR5cGVkZWYgaW50IFNh
bmRib3hGbGFnczsKKworICAgIGVudW0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeSB7CisgICAgICAg
IEFsd2F5c0Fza0NsaWVudEZvckNyZWRlbnRpYWxzLAorICAgICAgICBPbmx5QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHNGb3JTYW1lT3JpZ2luLAorICAgICAgICBOZXZlckFza0NsaWVudEZvckNyZWRl
bnRpYWxzCisgICAgfTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTM0
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBACiAgICAgcmVzb3VyY2VSZXF1
ZXN0LnNldFByaW9yaXR5KHByaW9yaXR5KTsKIAogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLAotICAgICAgICBy
ZXF1ZXN0LmdldCgpLCByZXNvdXJjZVJlcXVlc3QsIHByaW9yaXR5LCBzZWN1cml0eUNoZWNrLCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKKyAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVzb3Vy
Y2VSZXF1ZXN0LCBBbHdheXNBc2tDbGllbnRGb3JDcmVkZW50aWFscywgcHJpb3JpdHksIHNlY3Vy
aXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOwogICAgIGlmICghbG9hZGVyIHx8
IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAvLyBGSVhNRTogV2hh
dCBpZiByZXNvdXJjZXMgaW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZh
bGlkYXRpb24/CiAgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5ub3Qgc3RhcnQgbG9h
ZGluZyAnJXMnIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAkocmV2aXNpb24gOTM0NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTAgKzg1LDEwIEBACiAjZW5kaWYK
IH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywK
K1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRp
YWxQb2xpY3kgcG9saWN5LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgU2VjdXJpdHlD
aGVja1BvbGljeSBzZWN1cml0eUNoZWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3Vs
ZEJ1ZmZlckRhdGEpCiB7Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHNlY3VyaXR5
Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRTbmlmZiwgc2hv
dWxkQnVmZmVyRGF0YSk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QsIHBvbGljeSwg
c2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNu
aWZmLCBzaG91bGRCdWZmZXJEYXRhKTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVs
ZUxvYWQobG9hZGVyLmdldCgpLCBwcmlvcml0eSk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gOTM0NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiA5MzQ1
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw3ICs3Miw3IEBACiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVx
dWVzdChtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKSk7CiAgICAgcmVzb3VyY2VSZXF1
ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5TG93KTsKIAotICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKG1fZnJhbWUsIHRoaXMsIHJlc291cmNlUmVxdWVzdCk7CisgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIo
KS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9mcmFtZSwgdGhpcywgcmVzb3VyY2VSZXF1ZXN0
LCBOZXZlckFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMiLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAKQEAgLTEyNCwxMyArMTI0LDYgQEAKICAgICB9CiB9CiAKLXZvaWQgSWNvbkxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIC8vIFdlIGRvbid0IGV2ZXIgd2FudCB0
byBwcm9tcHQgZm9yIGF1dGhlbnRpY2F0aW9uIGp1c3QgZm9yIGEgc2l0ZSBpY29uLCBzbwotICAg
IC8vIGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBjYW5jZWwgdGhlIHJlc291cmNlIGxvYWQKLSAg
ICBtX3Jlc291cmNlTG9hZGVyLT5jYW5jZWwoKTsKLX0KLQogdm9pZCBJY29uTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgZG91YmxlKQog
ewogICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkg
LSBMb2FkZXIgJXAiLCByZXNvdXJjZUxvYWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCShyZXZpc2lvbiA5MzQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91
YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwotCiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmLCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSk7CiAgICAgdm9pZCBjbGVhckxvYWRpbmdTdGF0ZSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CShyZXZpc2lvbiA5MzQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQAogcHVibGljOgogICAg
IGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpOwog
Ci0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxv
YWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3Vy
aXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91
bGRCdWZmZXJEYXRhID0gdHJ1ZSk7CisgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNl
TG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xp
Y3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRy
dWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gdHJ1ZSwgYm9vbCBzaG91bGRCdWZmZXJEYXRh
ID0gdHJ1ZSk7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2No
ZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1haW5SZXNvdXJj
ZUxvYWQoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaAkocmV2aXNpb24gOTM0NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldFNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKFN1YnJlc291cmNlTG9hZGVyKiwgYm9vbCYgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biA5MzQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxMSBAQAogc3RhdGljIFdURjo6UmVmQ291bnRl
ZExlYWtDb3VudGVyIHN1YnJlc291cmNlTG9hZGVyQ291bnRlcigiU3VicmVzb3VyY2VMb2FkZXIi
KTsKICNlbmRpZgogCi1TdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUq
IGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBib29sIHNlbmRSZXNvdXJj
ZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorU3VicmVzb3VyY2VMb2Fk
ZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQqIGNsaWVudCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBwb2xpY3ksIGJvb2wgc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCiAgICAgOiBSZXNvdXJj
ZUxvYWRlcihmcmFtZSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNu
aWZmKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudChmYWxzZSkKKyAgICAsIG1fY2xpZW50Q3JlZGVudGlhbFBvbGljeShwb2xpY3kpCiB7CiAj
aWZuZGVmIE5ERUJVRwogICAgIHN1YnJlc291cmNlTG9hZGVyQ291bnRlci5pbmNyZW1lbnQoKTsK
QEAgLTYxLDcgKzYyLDcgQEAKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1
cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSkKK1Bh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJh
bWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgcG9saWN5LCBTZWN1cml0
eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cywgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQnVmZmVyRGF0YSkKIHsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTk5LDcgKzEwMCw3IEBACiAKICAg
ICBmbC0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAot
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJy
ZXNvdXJjZUxvYWRlcihmcmFtZSwgY2xpZW50LCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBz
aG91bGRDb250ZW50U25pZmYpKSk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzdWJs
b2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCBjbGllbnQsIHBvbGlj
eSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmKSkpOwogICAg
IHN1YmxvYWRlci0+c2V0U2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhKTsKICAgICBz
dWJsb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFkZFN1YnJlc291cmNlTG9hZGVyKHN1YmxvYWRl
ci5nZXQoKSk7CiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQobmV3UmVxdWVzdCkpCkBAIC0yNTIs
MTggKzI1MywyMiBAQAogCiAgICAgQVNTRVJUKGhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwotICAgIAotICAg
IC8vIFRoZSBTdWJSZXNvdXJjZUxvYWRlckNsaWVudCBtYXkgaGF2ZSBjYW5jZWxsZWQgdGhpcyBS
ZXNvdXJjZUxvYWRlciBpbiByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlLiAgCi0gICAgLy8gSWYg
dGhhdCdzIHRoZSBjYXNlLCBkb24ndCBjYWxsIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS4KLSAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBzd2l0Y2ggKG1fY2xp
ZW50Q3JlZGVudGlhbFBvbGljeSkgeworICAgIGNhc2UgQWx3YXlzQXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHM6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT25seUFza0NsaWVudEZvckNyZWRlbnRp
YWxzRm9yU2FtZU9yaWdpbjoKKyAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBOZXZlckFza0NsaWVudEZvckNyZWRlbnRpYWxzOgorICAg
ICAgICAvLyBPbmx5IHRoZXNlIHBsYXRmb3JtcyBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVlIHdp
dGhvdXQgY3JlZGVudGlhbHMuCisgICAgICAgIC8vIElmIHdlIGNhbid0IGNvbnRpbnVlIHdpdGgg
Y3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkKKyAgICAgICAgaGFu
ZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVu
Z2UpOworI2VuZGlmCisgICAgICAgIGlmIChoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKSkKKyAgICAgICAgICAgIGRpZEZhaWwoYmxvY2tlZEVycm9yKCkpOwogICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBJdCBtYXkgaGF2ZSBhbHNvIGhhbmRsZWQgYXV0aGVudGljYXRpb24g
b24gaXRzIG93bi4KLSAgICBpZiAoIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpKQotICAgICAgICByZXR1cm47Ci0KKyAgICB9CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAko
cmV2aXNpb24gOTM0NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDIzICszMDAsNiBAQAogICAgIHJl
dHVybiBmYWxzZTsgLy8gT25seSBGcmFtZUxvYWRlckNsaWVudCBjYW4gdWx0aW1hdGVseSBwZXJt
aXQgY3JlZGVudGlhbCB1c2UuCiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRl
ciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NF
UlQobG9hZGVyID09IG1fbG9hZGVyKTsKLSAgICAvLyBVc2VycyBhcmUgbm90IHByb21wdGVkIGZv
ciBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLgotICAgIGlmICghbV9zYW1l
T3JpZ2luUmVxdWVzdCkgewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwg
VVNFKENVUkwpCi0gICAgICAgIGxvYWRlci0+aGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwotI2Vsc2UKLSAgICAgICAgLy8gVGhl
c2UgcGxhdGZvcm1zIGRvbid0IHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVk
ZW50aWFscywgY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0gICAgICAgIFVOVVNFRF9QQVJB
TShjaGFsbGVuZ2UpOwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBw
cm90ZWN0KHRoaXMpOwotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChsb2FkZXItPmJsb2NrZWRF
cnJvcigpKTsKLSAgICAgICAgY2FuY2VsKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKIHsKICAgICBPd25QdHI8
UmVzb3VyY2VSZXF1ZXN0PiBhY3R1YWxSZXF1ZXN0OwpAQCAtMzYwLDcgKzM0Myw3IEBACiAKICAg
ICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFja3MgZnJvbSBTdWJy
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBsb2FkZXIuCiAgICAg
ICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywg
cmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRM
b2FkQ2FsbGJhY2tzLAorICAgICAgICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigp
LT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1
ZXN0LCBPbmx5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHNGb3JTYW1lT3JpZ2luLCBSZXNvdXJjZUxv
YWRQcmlvcml0eU1lZGl1bSwgc2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNuaWZmQ29udGVudCwgc2hvdWxkQnVmZmVyRGF0YSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gOTM0NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEyIEBACiAgICAgCiAgICAgY2xhc3Mg
U3VicmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFt
ZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vj
dXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlLCBib29sIHNo
b3VsZEJ1ZmZlckRhdGEgPSB0cnVlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgU2VjdXJpdHlDaGVj
a1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
ID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVlLCBib29sIHNob3VsZEJ1ZmZl
ckRhdGEgPSB0cnVlKTsKIAogICAgICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9
IDA7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiwg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsKKyAgICAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJh
bWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGJv
b2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwog
ICAgICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTY4LDYgKzY4LDcgQEAKIAogICAg
ICAgICBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAgICAgICAgIGJvb2wgbV9s
b2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKKyAgICAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBt
X2NsaWVudENyZWRlbnRpYWxQb2xpY3k7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105410</attachid>
            <date>2011-08-26 14:42:18 -0700</date>
            <delta_ts>2011-08-30 11:09:39 -0700</delta_ts>
            <desc>Remove getShouldUseCredentialStorage() without the allowCookies() check</desc>
            <filename>shoulduse2.txt</filename>
            <type>text/plain</type>
            <size>12240</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzOTEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMjYgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGFsbG93Q3JlZGVudGlh
bHMgZnJvbSBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBkb3duCisgICAgICAgIHRvIFJlc291cmNl
TG9hZGVyT3B0aW9ucy4gVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlCisgICAgICAgIGdldFNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudAorICAg
ICAgICBhbmQgY2hlY2sgYWxsb3dDcmVkZW50aWFscyBpbiBSZXNvdXJjZUxvYWRlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWZyYWN0b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKTogQ2hlY2sKKyAgICAgICAgICAgIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzIGluc3Rl
YWQgb2YgY2FsbGluZyBhIGNsaWVudC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorCiAy
MDExLTA4LTI2ICBOZWQgSG9sYnJvb2sgIDxuaG9sYnJvb2tAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgc2hvdWxkIG1lYXN1
cmUgd29yZHMgd2l0aCB0cmFpbGluZyBzcGFjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHJldmlzaW9uIDkzOTEwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIFJlc291cmNlTG9hZGVyT3B0aW9uc19oCiAjZGVmaW5l
IFJlc291cmNlTG9hZGVyT3B0aW9uc19oCiAKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBlbnVtIFNlbmRDYWxsYmFja1BvbGljeSB7CkBA
IC00OSwxMSArNTEsMTIgQEAKIH07CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewot
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIDogc2VuZExvYWRDYWxsYmFja3MoRG9Ob3RTZW5k
Q2FsbGJhY2tzKSwgc25pZmZDb250ZW50KERvTm90U25pZmZDb250ZW50KSwgc2hvdWxkQnVmZmVy
RGF0YShCdWZmZXJEYXRhKSB7IH0KLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzQXJnLCBDb250ZW50U25pZmZpbmdQb2xpY3kgc25p
ZmZDb250ZW50QXJnLCBEYXRhQnVmZmVyaW5nUG9saWN5IHNob3VsZEJ1ZmZlckRhdGFBcmcpIDog
c2VuZExvYWRDYWxsYmFja3Moc2VuZExvYWRDYWxsYmFja3NBcmcpLCBzbmlmZkNvbnRlbnQoc25p
ZmZDb250ZW50QXJnKSwgc2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhQXJnKSB7IH0K
KyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKERvTm90U2Vu
ZENhbGxiYWNrcyksIHNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCksIHNob3VsZEJ1ZmZl
ckRhdGEoQnVmZmVyRGF0YSksIGFsbG93Q3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzKSB7IH0KKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrUG9saWN5
IHNlbmRMb2FkQ2FsbGJhY2tzQXJnLCBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50
QXJnLCBEYXRhQnVmZmVyaW5nUG9saWN5IHNob3VsZEJ1ZmZlckRhdGFBcmcsIFN0b3JlZENyZWRl
bnRpYWxzIGFsbG93Q3JlZGVudGlhbHNBcmcpIDogc2VuZExvYWRDYWxsYmFja3Moc2VuZExvYWRD
YWxsYmFja3NBcmcpLCBzbmlmZkNvbnRlbnQoc25pZmZDb250ZW50QXJnKSwgc2hvdWxkQnVmZmVy
RGF0YShzaG91bGRCdWZmZXJEYXRhQXJnKSwgYWxsb3dDcmVkZW50aWFscyhhbGxvd0NyZWRlbnRp
YWxzQXJnKSB7IH0KICAgICBTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3M7CiAg
ICAgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29udGVudDsKICAgICBEYXRhQnVmZmVyaW5n
UG9saWN5IHNob3VsZEJ1ZmZlckRhdGE7CisgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVk
ZW50aWFsczsgLy8gV2hldGhlciBIVFRQIGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIGFyZSBzZW50
IHdpdGggdGhlIHJlcXVlc3QuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDkzOTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsx
MjUsNyBAQAogICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShwcmlvcml0eSk7CiAKICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxl
cigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwg
c2VjdXJpdHlDaGVjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMoc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA/IFNlbmRDYWxsYmFja3MgOiBE
b05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzID8gU2VuZENhbGxiYWNrcyA6IERvTm90U2VuZENhbGxiYWNrcywgU25pZmZD
b250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7CiAgICAgaWYgKCFs
b2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0
aGlzIHJldmFsaWRhdGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBz
dGFydCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAkocmV2aXNpb24gOTM5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcihGcmFtZSogZnJhbWUsIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihm
cmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwg
RG9Ob3RCdWZmZXJEYXRhKSkKKyAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEs
IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDkzOTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSAvKmZp
bmlzaFRpbWUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGdl
dFNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFN1YnJlc291cmNlTG9hZGVyKiwgYm9vbCYgLypz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSovKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5MzkxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxNyw2ICs1MTcsMTAgQEAKICNlbmRpZgogICAgIGlmICghZmFzdE1hbGxvY1NpemUoZG9j
dW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkpCiAgICAgICAgIENSQVNIKCk7CisKKyAgICBpZiAobV9v
cHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPT0gRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0b3IodGhpcyk7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5zaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDkzOTEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogTWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZy
YW1lKQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhT
ZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEpKQorICAgIDogUmVzb3VyY2VM
b2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNv
bnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKQogICAgICwgbV9kYXRh
TG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93KQog
ICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGluZ0Zv
ckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA5MzkxMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQAogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291
cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VM
b2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENh
bGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhKSk7CisgICAgUGFzc1JlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9y
aXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1Nl
Y3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKSk7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1h
aW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJj
ZUxvYWRlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaAkocmV2aXNpb24gOTM5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgy
LDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VM
b2FkZXIqLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBib29sJiBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5Mzkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDggKzYwLDcgQEAKICAgICB9OwogCiAgICAgc3RydWN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zIDogcHVibGljIFJlc291cmNlTG9hZGVyT3B0aW9ucyB7Ci0gICAgICAgIFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zKCkgOiBhbGxvd0NyZWRlbnRpYWxzKERvTm90QWxsb3dTdG9y
ZWRDcmVkZW50aWFscyksIHByZWZsaWdodFBvbGljeShDb25zaWRlclByZWZsaWdodCksIGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeShEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgeyB9Ci0gICAgICAg
IFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgSFRUUCBjcmVk
ZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgorICAgICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogcHJlZmxpZ2h0UG9saWN5KENvbnNpZGVyUHJlZmxp
Z2h0KSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KERlbnlDcm9zc09yaWdpblJlcXVlc3RzKSB7
IH0KICAgICAgICAgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeTsgLy8gSWYgQWNjZXNz
Q29udHJvbCBpcyB1c2VkLCBob3cgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmxpZ2h0IGlzIG5lZWRl
ZC4KICAgICAgICAgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBv
bGljeTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gOTM5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsMTcgKzIzNCw2IEBACiAgICAgbV9kb2N1bWVudExvYWRl
ci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9CiAKLWJvb2wgU3VicmVzb3VyY2VM
b2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKLXsKLSAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBib29sIHNob3VsZFVzZTsKLSAgICBp
ZiAobV9jbGllbnQgJiYgbV9jbGllbnQtPmdldFNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRo
aXMsIHNob3VsZFVzZSkpCi0gICAgICAgIHJldHVybiBzaG91bGRVc2U7Ci0KLSAgICByZXR1cm4g
UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7Ci19Ci0KIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA5MzkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODgsMTggKzI4OCw2IEBACiAgICAgbV9jbGllbnQtPmRpZEZhaWwo
ZXJyb3IpOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Z2V0U2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgYm9vbCYgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRl
ciA9PSBtX2xvYWRlciB8fCAhbV9sb2FkZXIpOwotCi0gICAgaWYgKG1fb3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzID09IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscykgewotICAgICAgICBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgRnJhbWVMb2FkZXJDbGllbnQgY2FuIHVs
dGltYXRlbHkgcGVybWl0IGNyZWRlbnRpYWwgdXNlLgotfQotCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
CiB7CiAgICAgQVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTM5MTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRh
KGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105654</attachid>
            <date>2011-08-30 11:09:39 -0700</date>
            <delta_ts>2011-08-30 12:11:47 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge() #4</desc>
            <filename>rc5.txt</filename>
            <type>text/plain</type>
            <size>18466</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDgtMzAgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC4KKyAg
ICAgICAgSW5zdGVhZCwgYWRkIGEgbG9hZC1zcGVjaWZpYyBwb2xpY3kgZm9yIHNob3dpbmcgdGhl
IHVzZXIgYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxlbmdlIGRvd24gdG8gUmVzb3VyY2VM
b2FkZXJPcHRpb25zIGFuZCBlbmZvcmNlIGl0IGluIFJlc291cmNlTG9hZGVyLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVm
YWN0b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgICAgIEZvciByZXNvdXJjZSB0eXBlcyB0aGF0IGFsd2F5cyBzZW5k
IGEgY2hhbGxlbmdlIHRvIHRoZSBlbWJlZGRlciwKKyAgICAgICAgICAgdGhpcyBwYXRjaCBkb2Vz
bid0IGNoYW5nZSBhbnl0aGluZy4gRm9yIHRob3NlIHRoYXQgZG9uJ3QsIHdlIHdpbGwKKyAgICAg
ICAgICAgYWx3YXlzIHRyeSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzIHdoZW4gdGhl
eSBhcmUgZm9yYmlkZGVuCisgICAgICAgICAgIGFuZCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgaXQu
CisgICAgICAgICAgIFdoZW4gY29udGludWluZyB3aXRob3V0IGNyZWRlbnRpYWxzIHdhcyBpbml0
aWFsbHkgaW1wbGVtZW50ZWQgaW4KKyAgICAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LCB3ZSBzZW50IHRoZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGEgZGlkRmFpbCgpLAorICAgICAg
ICAgICB0aGVuIGNhbmNlbGVkIHRoZSBTdWJyZXNvdXJjZUxvYWRlci4gVGhpcyB3YXMgbmVjZXNz
YXJ5IGJlY2F1c2Ugb2YgdGhlCisgICAgICAgICAgIHF1aXJrcyBvZiBUaHJlYWRhYmxlTG9hZGVy
IGNhbmNlbGxhdGlvbiAod2Ugc2V2ZXIgdGhlIGNsaWVudC9sb2FkZXIgY29ubmVjdGlvbnMKKyAg
ICAgICAgICAgYmVmb3JlIHRoZSBsb2FkIGFjdHVhbGx5IGNhbmNlbHMpLCBidXQgYSBzaW1wbGUg
ZGlkRmFpbCgpIHNob3VsZCBzdWZmaWNlIGF0CisgICAgICAgICAgIHRoZSBSZXNvdXJjZUxvYWRl
ciBsYXllci4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHA6IFRoZSBSZXNvdXJjZUxvYWRlciBpbXBsZW1lbnRhdGlvbiBvZgorICAg
ICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlZ2UgbWVhbnMgdGhhdCBJY29u
TG9hZGVyIHdpbGwgbm93CisgICAgICAgICAgICB0cnkgdG8gY29udGludWUgd2l0aCBjcmVkZW50
aWFscyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0LAorICAgICAgICAgICAgcmF0aGVyIHRo
YW4ganVzdCBjYW5jZWxpbmcgb3V0cmlnaHQuIFdlIHN0aWxsIHdpbGwgbmV2ZXIgcHJvbXB0Cisg
ICAgICAgICAgICBmb3IgYXV0aGVudGljYXRpb24gZm9yIGljb25zLgorICAgICAgICAqIGxvYWRl
ci9pY29uL0ljb25Mb2FkZXIuaDoKKwogMjAxMS0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgcXVlcnlTZWxlY3Rvci9xdWVyeVNlbGVjdG9yQWxsIHNo
b3VsZCB1c2Ugc2VsZWN0b3IgY2hlY2tlciBmYXN0IHBhdGggCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCShyZXZpc2lvbiA5NDAyMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksMTQgKzQ5LDI2IEBACiAgICAgQnVmZmVyRGF0YSwKICAgICBEb05vdEJ1ZmZl
ckRhdGEKIH07CisgICAgCitlbnVtIENsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSB7
CisgICAgQWxsb3dDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzLAorICAgIEJsb2NrQ2xpZW50
Q3Jvc3NPcmlnaW5DcmVkZW50aWFscworfTsKIAogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyB7Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhEb05v
dFNlbmRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQoRG9Ob3RTbmlmZkNvbnRlbnQpLCBzaG91bGRC
dWZmZXJEYXRhKEJ1ZmZlckRhdGEpLCBhbGxvd0NyZWRlbnRpYWxzKERvTm90QWxsb3dTdG9yZWRD
cmVkZW50aWFscykgeyB9Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja1Bv
bGljeSBzZW5kTG9hZENhbGxiYWNrc0FyZywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29u
dGVudEFyZywgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhQXJnLCBTdG9yZWRD
cmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzQXJnKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRM
b2FkQ2FsbGJhY2tzQXJnKSwgc25pZmZDb250ZW50KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1
ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0YUFyZyksIGFsbG93Q3JlZGVudGlhbHMoYWxsb3dDcmVk
ZW50aWFsc0FyZykgeyB9CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENh
bGxiYWNrcyhEb05vdFNlbmRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQoRG9Ob3RTbmlmZkNvbnRl
bnQpLCBzaG91bGRCdWZmZXJEYXRhKEJ1ZmZlckRhdGEpLCBhbGxvd0NyZWRlbnRpYWxzKERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscyksIGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeShCbG9j
a0NsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbHMpIHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3NBcmcsIENvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzbmlmZkNvbnRlbnRBcmcsIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVm
ZmVyRGF0YUFyZywgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFsc0FyZywgQ2xpZW50
Q3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5IGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeUFy
ZykKKyAgICAgICAgOiBzZW5kTG9hZENhbGxiYWNrcyhzZW5kTG9hZENhbGxiYWNrc0FyZykKKyAg
ICAgICAgLCBzbmlmZkNvbnRlbnQoc25pZmZDb250ZW50QXJnKQorICAgICAgICAsIHNob3VsZEJ1
ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0YUFyZykKKyAgICAgICAgLCBhbGxvd0NyZWRlbnRpYWxz
KGFsbG93Q3JlZGVudGlhbHNBcmcpCisgICAgICAgICwgY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9s
aWN5KGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeUFyZykKKyAgICB7IH0KICAgICBTZW5kQ2Fs
bGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3M7CiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5
IHNuaWZmQ29udGVudDsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IHNob3VsZEJ1ZmZlckRhdGE7
CiAgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFsczsgLy8gV2hldGhlciBIVFRQ
IGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIGFyZSBzZW50IHdpdGggdGhlIHJlcXVlc3QuCisgICAg
Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5IGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBv
bGljeTsgLy8gV2hldGhlciB3ZSB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBjcmVkZW50aWFscyAo
aWYgd2UgYWxsb3cgY3JlZGVudGlhbHMgYXQgYWxsKS4KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk0MDIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTcxLDcgKzE3MSw3IEBACiAgICAgaWYgKCFpbkNhY2hlKQogICAgICAgICB1c2VyU2hlZXQt
PnNldEluQ2FjaGUodHJ1ZSk7CiAKLSAgICB1c2VyU2hlZXQtPnNldFJlc291cmNlTG9hZGVyT3B0
aW9ucyhSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRl
bnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKTsKKyAgICB1c2VyU2hlZXQt
PnNldFJlc291cmNlTG9hZGVyT3B0aW9ucyhSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5k
Q2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIEFsbG93Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFscykpOwogICAgIHVzZXJTaGVldC0+
bG9hZCh0aGlzLCAvKmluY3JlbWVudGFsKi8gZmFsc2UsIFNraXBTZWN1cml0eUNoZWNrKTsKIAog
ICAgIGlmICghaW5DYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDcgQEAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0
IHZhbHVlIGZvciBSZXNvdXJjZUxvYWRlck9wdGlvbnMgd2lsbCBhbHdheXMgYmUgdXNlZCBjdXJy
ZW50bHkuCiAgICAgLy8gSXQgaXMgcGx1bWJlZCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjEyMjUgLgotICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVz
b2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBC
dWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7CisgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9h
ZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBT
bmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFsbG93Q2xp
ZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFscykpOwogICAgIENhY2hlZFJlc291cmNlKiByZXZhbGlk
YXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAgICAg
Q2FjaGVkUmVzb3VyY2UqIGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgdm9pZCByZXF1ZXN0UHJlbG9hZChD
YWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBACiAgICAg
LCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RhdHVzKFBl
bmRpbmcpCi0gICAgLCBtX29wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZm
ZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQorICAgICwgbV9vcHRpb25zKFNlbmRDYWxs
YmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywg
QWxsb3dDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzKQogI2lmbmRlZiBOREVCVUcKICAgICAs
IG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fbHJ1SW5kZXgoMCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkocmV2
aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcihGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50
KiBjbGllbnQpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKSkKKyAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEs
IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFsbG93Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFs
cykpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTQwMjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsOCArNTAsNiBAQAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2Fj
aGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxl
bmd0aCovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJj
ZUxvYWRlciosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9Ci0gICAg
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQAog
ICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QobV9mcmFtZS0+bG9hZGVyKCktPmlj
b24oKS0+dXJsKCkpOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxv
YWRQcmlvcml0eUxvdyk7CiAKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9
IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1l
LCB0aGlzLCByZXNvdXJjZVJlcXVlc3QpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
bG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2Fk
KG1fZnJhbWUsIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cs
IERvU2VjdXJpdHlDaGVjaywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNu
aWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBCbG9j
a0NsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbHMpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMiLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAKQEAgLTEyNCwxMyArMTI0LDYgQEAKICAgICB9CiB9CiAKLXZvaWQgSWNvbkxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIC8vIFdlIGRvbid0IGV2ZXIgd2FudCB0
byBwcm9tcHQgZm9yIGF1dGhlbnRpY2F0aW9uIGp1c3QgZm9yIGEgc2l0ZSBpY29uLCBzbwotICAg
IC8vIGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBjYW5jZWwgdGhlIHJlc291cmNlIGxvYWQKLSAg
ICBtX3Jlc291cmNlTG9hZGVyLT5jYW5jZWwoKTsKLX0KLQogdm9pZCBJY29uTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgZG91YmxlKQog
ewogICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkg
LSBMb2FkZXIgJXAiLCByZXNvdXJjZUxvYWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCShyZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91
YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwotCiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmLCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSk7CiAgICAgdm9pZCBjbGVhckxvYWRpbmdTdGF0ZSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9u
IDk0MDIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIApAQCAtNTI3LDEwICs1MjgsMjYgQEAKIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CisgICAgQVNTRVJUKGhh
bmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICAvLyBQcm90ZWN0IHRo
aXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2lu
ZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhp
czsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgogICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwor
CisgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpIHsKKyAgICAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xp
Y3kgPT0gQWxsb3dDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzIHx8IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0KCkudXJs
KCkpKSB7CisgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIAorICAgIH0KKyAgICAvLyBPbmx5IHRoZXNlIHBsYXRmb3Jt
cyBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbHMuCisgICAgLy8g
SWYgd2UgY2FuJ3QgY29udGludWUgd2l0aCBjcmVkZW50aWFscywgd2UgbmVlZCB0byBjYW5jZWwg
dGhlIGxvYWQgYWx0b2dldGhlci4KKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUksp
IHx8IFVTRShDVVJMKQorICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKKyAgICBBU1NFUlQoIWhhbmRsZSgpLT5oYXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKKyNlbHNlCisgICAgZGlkRmFpbChibG9ja2VkRXJyb3Io
KSk7CisjZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIE1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFt
ZSkKLSAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2Vu
ZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzKSkKKyAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMo
U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRl
bnRpYWxzLCBBbGxvd0NsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbHMpKQogICAgICwgbV9kYXRh
TG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93KQog
ICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGluZ0Zv
ckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQAogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291
cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VM
b2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENh
bGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
KSk7CisgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJj
ZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5LCBTZWN1cml0eUNoZWNrUG9saWN5LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQg
YWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJl
c291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
OCArODIsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNv
dXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotCiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNyb3Nz
T3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCwyNSArMjM0LDQgQEAKICAgICBtX2RvY3VtZW50TG9hZGVy
LT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17Ci0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KHRoaXMpOwotCi0gICAgQVNTRVJUKGhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKTsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwotICAgIAot
ICAgIC8vIFRoZSBTdWJSZXNvdXJjZUxvYWRlckNsaWVudCBtYXkgaGF2ZSBjYW5jZWxsZWQgdGhp
cyBSZXNvdXJjZUxvYWRlciBpbiByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlLiAgCi0gICAgLy8g
SWYgdGhhdCdzIHRoZSBjYXNlLCBkb24ndCBjYWxsIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS4KLSAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gSXQgbWF5IGhhdmUgYWxzbyBoYW5kbGVkIGF1dGhlbnRpY2F0aW9uIG9uIGl0
cyBvd24uCi0gICAgaWYgKCFoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24g
OTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDIzICsyODgsNiBAQAogICAgIG1fY2xpZW50LT5k
aWRGYWlsKGVycm9yKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewotICAgIEFTU0VSVChs
b2FkZXIgPT0gbV9sb2FkZXIpOwotICAgIC8vIFVzZXJzIGFyZSBub3QgcHJvbXB0ZWQgZm9yIGNy
ZWRlbnRpYWxzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuCi0gICAgaWYgKCFtX3NhbWVPcmln
aW5SZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0Uo
Q1VSTCkKLSAgICAgICAgbG9hZGVyLT5oYW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7Ci0jZWxzZQotICAgICAgICAvLyBUaGVzZSBw
bGF0Zm9ybXMgZG9uJ3QgcHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRp
YWxzLCBjYW5jZWwgdGhlIGxvYWQgYWx0b2dldGhlci4KLSAgICAgICAgVU5VU0VEX1BBUkFNKGNo
YWxsZW5nZSk7Ci0gICAgICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKGxvYWRlci0+YmxvY2tlZEVycm9y
KCkpOwotICAgICAgICBjYW5jZWwoKTsKLSNlbmRpZgotICAgIH0KLX0KLQogdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MoKQogewogICAgIE93blB0cjxSZXNv
dXJjZVJlcXVlc3Q+IGFjdHVhbFJlcXVlc3Q7CkBAIC0zMzEsNiArMzE0LDcgQEAKIAogICAgIGlm
IChtX2FzeW5jKSB7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBt
X29wdGlvbnM7CisgICAgICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5ID0g
QmxvY2tDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzOwogICAgICAgICBpZiAobV9hY3R1YWxS
ZXF1ZXN0KSB7CiAgICAgICAgICAgICAvLyBEb24ndCBzbmlmZiBjb250ZW50IG9yIHNlbmQgbG9h
ZCBjYWxsYmFja3MgZm9yIHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KICAgICAgICAgICAgIG9wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPSBEb05vdFNlbmRDYWxsYmFja3M7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTQwMjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1l
dGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105664</attachid>
            <date>2011-08-30 12:11:47 -0700</date>
            <delta_ts>2011-09-21 15:03:17 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge() - minus style issue</desc>
            <filename>rc5.txt</filename>
            <type>text/plain</type>
            <size>18521</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDgtMzAgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC4KKyAg
ICAgICAgSW5zdGVhZCwgYWRkIGEgbG9hZC1zcGVjaWZpYyBwb2xpY3kgZm9yIHNob3dpbmcgdGhl
IHVzZXIgYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxlbmdlIGRvd24gdG8gUmVzb3VyY2VM
b2FkZXJPcHRpb25zIGFuZCBlbmZvcmNlIGl0IGluIFJlc291cmNlTG9hZGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFj
dG9yIG9ubHkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAgICBGb3IgcmVzb3VyY2UgdHlwZXMgdGhhdCBhbHdheXMgc2VuZCBh
IGNoYWxsZW5nZSB0byB0aGUgZW1iZWRkZXIsCisgICAgICAgICAgIHRoaXMgcGF0Y2ggZG9lc24n
dCBjaGFuZ2UgYW55dGhpbmcuIEZvciB0aG9zZSB0aGF0IGRvbid0LCB3ZSB3aWxsCisgICAgICAg
ICAgIGFsd2F5cyB0cnkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscyB3aGVuIHRoZXkg
YXJlIGZvcmJpZGRlbgorICAgICAgICAgICBhbmQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGl0Lgor
ICAgICAgICAgICBXaGVuIGNvbnRpbnVpbmcgd2l0aG91dCBjcmVkZW50aWFscyB3YXMgaW5pdGlh
bGx5IGltcGxlbWVudGVkIGluCisgICAgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwg
d2Ugc2VudCB0aGUgVGhyZWFkYWJsZUxvYWRlckNsaWVudCBhIGRpZEZhaWwoKSwKKyAgICAgICAg
ICAgdGhlbiBjYW5jZWxlZCB0aGUgU3VicmVzb3VyY2VMb2FkZXIuIFRoaXMgd2FzIG5lY2Vzc2Fy
eSBiZWNhdXNlIG9mIHRoZQorICAgICAgICAgICBxdWlya3Mgb2YgVGhyZWFkYWJsZUxvYWRlciBj
YW5jZWxsYXRpb24gKHdlIHNldmVyIHRoZSBjbGllbnQvbG9hZGVyIGNvbm5lY3Rpb25zCisgICAg
ICAgICAgIGJlZm9yZSB0aGUgbG9hZCBhY3R1YWxseSBjYW5jZWxzKSwgYnV0IGEgc2ltcGxlIGRp
ZEZhaWwoKSBzaG91bGQgc3VmZmljZSBhdAorICAgICAgICAgICB0aGUgUmVzb3VyY2VMb2FkZXIg
bGF5ZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwOiBUaGUgUmVzb3VyY2VMb2FkZXIgaW1wbGVtZW50YXRpb24gb2YKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZWdlIG1lYW5zIHRoYXQgSWNvbkxv
YWRlciB3aWxsIG5vdworICAgICAgICAgICAgdHJ5IHRvIGNvbnRpbnVlIHdpdGggY3JlZGVudGlh
bHMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdCwKKyAgICAgICAgICAgIHJhdGhlciB0aGFu
IGp1c3QgY2FuY2VsaW5nIG91dHJpZ2h0LiBXZSBzdGlsbCB3aWxsIG5ldmVyIHByb21wdAorICAg
ICAgICAgICAgZm9yIGF1dGhlbnRpY2F0aW9uIGZvciBpY29ucy4KKyAgICAgICAgKiBsb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmg6CisKIDIwMTEtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIHF1ZXJ5U2VsZWN0b3IvcXVlcnlTZWxlY3RvckFsbCBzaG91
bGQgdXNlIHNlbGVjdG9yIGNoZWNrZXIgZmFzdCBwYXRoIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTQwMjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDE0ICs0OSwyNiBAQAogICAgIEJ1ZmZlckRhdGEsCiAgICAgRG9Ob3RCdWZmZXJE
YXRhCiB9OworICAgIAorZW51bSBDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3kgewor
ICAgIEFsbG93Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFscywKKyAgICBCbG9ja0NsaWVudENy
b3NzT3JpZ2luQ3JlZGVudGlhbHMKK307CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMg
ewotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIDogc2VuZExvYWRDYWxsYmFja3MoRG9Ob3RT
ZW5kQ2FsbGJhY2tzKSwgc25pZmZDb250ZW50KERvTm90U25pZmZDb250ZW50KSwgc2hvdWxkQnVm
ZmVyRGF0YShCdWZmZXJEYXRhKSwgYWxsb3dDcmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMpIHsgfQotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQb2xp
Y3kgc2VuZExvYWRDYWxsYmFja3NBcmcsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRl
bnRBcmcsIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YUFyZywgU3RvcmVkQ3Jl
ZGVudGlhbHMgYWxsb3dDcmVkZW50aWFsc0FyZykgOiBzZW5kTG9hZENhbGxiYWNrcyhzZW5kTG9h
ZENhbGxiYWNrc0FyZyksIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnRBcmcpLCBzaG91bGRCdWZm
ZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGFBcmcpLCBhbGxvd0NyZWRlbnRpYWxzKGFsbG93Q3JlZGVu
dGlhbHNBcmcpIHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIDogc2VuZExvYWRDYWxs
YmFja3MoRG9Ob3RTZW5kQ2FsbGJhY2tzKSwgc25pZmZDb250ZW50KERvTm90U25pZmZDb250ZW50
KSwgc2hvdWxkQnVmZmVyRGF0YShCdWZmZXJEYXRhKSwgYWxsb3dDcmVkZW50aWFscyhEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMpLCBjcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3koQmxvY2tD
bGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzKSB7IH0KKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzQXJnLCBDb250ZW50U25pZmZp
bmdQb2xpY3kgc25pZmZDb250ZW50QXJnLCBEYXRhQnVmZmVyaW5nUG9saWN5IHNob3VsZEJ1ZmZl
ckRhdGFBcmcsIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHNBcmcsIENsaWVudENy
b3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSBjcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3lBcmcp
CisgICAgICAgIDogc2VuZExvYWRDYWxsYmFja3Moc2VuZExvYWRDYWxsYmFja3NBcmcpCisgICAg
ICAgICwgc25pZmZDb250ZW50KHNuaWZmQ29udGVudEFyZykKKyAgICAgICAgLCBzaG91bGRCdWZm
ZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGFBcmcpCisgICAgICAgICwgYWxsb3dDcmVkZW50aWFscyhh
bGxvd0NyZWRlbnRpYWxzQXJnKQorICAgICAgICAsIGNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGlj
eShjcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3lBcmcpCisgICAgeyB9CiAgICAgU2VuZENhbGxi
YWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzOwogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBz
bmlmZkNvbnRlbnQ7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhOwog
ICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgSFRUUCBj
cmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgorICAgIENs
aWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSBjcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xp
Y3k7IC8vIFdoZXRoZXIgd2Ugd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgY3JlZGVudGlhbHMgKGlm
IHdlIGFsbG93IGNyZWRlbnRpYWxzIGF0IGFsbCkuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDAyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MSw3ICsxNzEsNyBAQAogICAgIGlmICghaW5DYWNoZSkKICAgICAgICAgdXNlclNoZWV0LT5z
ZXRJbkNhY2hlKHRydWUpOwogCi0gICAgdXNlclNoZWV0LT5zZXRSZXNvdXJjZUxvYWRlck9wdGlv
bnMoUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50
LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7CisgICAgdXNlclNoZWV0LT5z
ZXRSZXNvdXJjZUxvYWRlck9wdGlvbnMoUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENh
bGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
LCBBbGxvd0NsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbHMpKTsKICAgICB1c2VyU2hlZXQtPmxv
YWQodGhpcywgLyppbmNyZW1lbnRhbCovIGZhbHNlLCBTa2lwU2VjdXJpdHlDaGVjayk7CiAKICAg
ICBpZiAoIWluQ2FjaGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDcgKzEwOSw3IEBACiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCB2
YWx1ZSBmb3IgUmVzb3VyY2VMb2FkZXJPcHRpb25zIHdpbGwgYWx3YXlzIGJlIHVzZWQgY3VycmVu
dGx5LgogICAgIC8vIEl0IGlzIHBsdW1iZWQgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMjI1IC4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29s
dmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
ID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVm
ZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykpOworICAgIENhY2hlZFJlc291cmNlKiBy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBbGxvd0NsaWVu
dENyb3NzT3JpZ2luQ3JlZGVudGlhbHMpKTsKICAgICBDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0
ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogICAgIENh
Y2hlZFJlc291cmNlKiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogICAgIHZvaWQgcmVxdWVzdFByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDk0MDIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQAogICAgICwg
bV9sb2FkaW5nKGZhbHNlKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0YXR1cyhQZW5k
aW5nKQotICAgICwgbV9vcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVy
RGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykKKyAgICAsIG1fb3B0aW9ucyhTZW5kQ2FsbGJh
Y2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFs
bG93Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFscykKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBt
X2RlbGV0ZWQoZmFsc2UpCiAgICAgLCBtX2xydUluZGV4KDApCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHJldmlz
aW9uIDk0MDIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCog
Y2xpZW50KQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBbGxvd0NsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbHMp
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk0MDIyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDggKzUwLDYgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hl
ZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAvKmRhdGFMZW5n
dGgqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VM
b2FkZXIqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHAJKHJldmlzaW9uIDk0MDIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KG1fZnJhbWUtPmxvYWRlcigpLT5pY29u
KCktPnVybCgpKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2Fk
UHJpb3JpdHlMb3cpOwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9mcmFtZSwg
dGhpcywgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxv
YWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZCht
X2ZyYW1lLCB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBE
b1NlY3VyaXR5Q2hlY2ssIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQmxvY2tD
bGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9m
cmFtZS0+bG9hZGVyKCktPmljb24oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwog
CkBAIC0xMjQsMTMgKzEyNCw2IEBACiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICAvLyBXZSBkb24ndCBldmVyIHdhbnQgdG8g
cHJvbXB0IGZvciBhdXRoZW50aWNhdGlvbiBqdXN0IGZvciBhIHNpdGUgaWNvbiwgc28KLSAgICAv
LyBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gY2FuY2VsIHRoZSByZXNvdXJjZSBsb2FkCi0gICAg
bV9yZXNvdXJjZUxvYWRlci0+Y2FuY2VsKCk7Ci19Ci0KIHZvaWQgSWNvbkxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKIHsK
ICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0g
TG9hZGVyICVwIiwgcmVzb3VyY2VMb2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Mb2FkZXIuaAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJs
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKLQogICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBLVVJMJiwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIHZvaWQgY2xlYXJMb2FkaW5nU3RhdGUoKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5
NDAyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKQEAgLTUyNywxMCArNTI4LDI2IEBACiAKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogeworICAgIEFTU0VSVChoYW5k
bGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgLy8gUHJvdGVjdCB0aGlz
IGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3Npbmcg
Y2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7
IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKwor
ICAgIGlmIChtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzKSB7CisgICAgICAgIGlmIChtX29wdGlvbnMuY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5
ID09IEFsbG93Q2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFscyB8fCBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCgpLnVybCgp
KSkgeworICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGNoYWxsZW5nZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAKKyAgICB9CisgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMg
cHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgorICAgIC8vIElm
IHdlIGNhbid0IGNvbnRpbnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRo
ZSBsb2FkIGFsdG9nZXRoZXIuCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8
fCBVU0UoQ1VSTCkKKyAgICBoYW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CisgICAgQVNTRVJUKCFoYW5kbGUoKS0+aGFzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSk7CisjZWxzZQorICAgIGRpZEZhaWwoYmxvY2tlZEVycm9yKCkp
OworI2VuZGlmCiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUp
Ci0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRD
YWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFs
cykpCisgICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50
aWFscywgQWxsb3dDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxzKSkKICAgICAsIG1fZGF0YUxv
YWRUaW1lcih0aGlzLCAmTWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVEYXRhTG9hZE5vdykKICAg
ICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3dhaXRpbmdGb3JD
b250ZW50UG9saWN5KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDcgQEAKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJj
ZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNj
aGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9h
ZFByaW9yaXR5TG93LCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1cml0eUNoZWNrLCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxs
YmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykp
OworICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgU2VjdXJpdHlDaGVja1BvbGljeSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFk
ZE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNv
dXJjZUxvYWRlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaAkocmV2aXNpb24gOTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3Vy
Y2VMb2FkZXIqLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLQogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1ha2VTaW1wbGVDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
OTQwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzQsMjUgKzIzNCw0IEBACiAgICAgbV9kb2N1bWVudExvYWRlci0+
cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCh0aGlzKTsKLQotICAgIEFTU0VSVChoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKLSAgICAKLSAg
ICAvLyBUaGUgU3ViUmVzb3VyY2VMb2FkZXJDbGllbnQgbWF5IGhhdmUgY2FuY2VsbGVkIHRoaXMg
UmVzb3VyY2VMb2FkZXIgaW4gcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZS4gIAotICAgIC8vIElm
IHRoYXQncyB0aGUgY2FzZSwgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuCi0gICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIEl0IG1heSBoYXZlIGFsc28gaGFuZGxlZCBhdXRoZW50aWNhdGlvbiBvbiBpdHMg
b3duLgotICAgIGlmICghaGFuZGxlKCktPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKIH0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDk0
MDIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwyMyArMjg4LDYgQEAKICAgICBtX2NsaWVudC0+ZGlk
RmFpbChlcnJvcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlQobG9h
ZGVyID09IG1fbG9hZGVyKTsKLSAgICAvLyBVc2VycyBhcmUgbm90IHByb21wdGVkIGZvciBjcmVk
ZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLgotICAgIGlmICghbV9zYW1lT3JpZ2lu
UmVxdWVzdCkgewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENV
UkwpCi0gICAgICAgIGxvYWRlci0+aGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwotI2Vsc2UKLSAgICAgICAgLy8gVGhlc2UgcGxh
dGZvcm1zIGRvbid0IHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFs
cywgY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0gICAgICAgIFVOVVNFRF9QQVJBTShjaGFs
bGVuZ2UpOwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChsb2FkZXItPmJsb2NrZWRFcnJvcigp
KTsKLSAgICAgICAgY2FuY2VsKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKIHsKICAgICBPd25QdHI8UmVzb3Vy
Y2VSZXF1ZXN0PiBhY3R1YWxSZXF1ZXN0OwpAQCAtMzMxLDYgKzMxNCw3IEBACiAKICAgICBpZiAo
bV9hc3luYykgewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gbV9v
cHRpb25zOworICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSA9IEJs
b2NrQ2xpZW50Q3Jvc3NPcmlnaW5DcmVkZW50aWFsczsKICAgICAgICAgaWYgKG1fYWN0dWFsUmVx
dWVzdCkgewogICAgICAgICAgICAgLy8gRG9uJ3Qgc25pZmYgY29udGVudCBvciBzZW5kIGxvYWQg
Y2FsbGJhY2tzIGZvciB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgICAgICAgICBvcHRpb25z
LnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5kQ2FsbGJhY2tzOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk0MDIyKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDYgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRh
ZGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108242</attachid>
            <date>2011-09-21 15:03:17 -0700</date>
            <delta_ts>2011-09-22 18:11:47 -0700</delta_ts>
            <desc>Remove didReceiveAuthenticationChallenge() - rename enum values</desc>
            <filename>rc6.txt</filename>
            <type>text/plain</type>
            <size>18431</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDktMjEgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZnJvbSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudC4KKyAg
ICAgICAgSW5zdGVhZCwgYWRkIGEgbG9hZC1zcGVjaWZpYyBwb2xpY3kgZm9yIHNob3dpbmcgdGhl
IHVzZXIgYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxlbmdlIGRvd24gdG8gUmVzb3VyY2VM
b2FkZXJPcHRpb25zIGFuZCBlbmZvcmNlIGl0IGluIFJlc291cmNlTG9hZGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFj
dG9yIG9ubHkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAgICBGb3IgcmVzb3VyY2UgdHlwZXMgdGhhdCBhbHdheXMgc2VuZCBh
IGNoYWxsZW5nZSB0byB0aGUgZW1iZWRkZXIsCisgICAgICAgICAgIHRoaXMgcGF0Y2ggZG9lc24n
dCBjaGFuZ2UgYW55dGhpbmcuIEZvciB0aG9zZSB0aGF0IGRvbid0LCB3ZSB3aWxsCisgICAgICAg
ICAgIGFsd2F5cyB0cnkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscyB3aGVuIHRoZXkg
YXJlIGZvcmJpZGRlbgorICAgICAgICAgICBhbmQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGl0Lgor
ICAgICAgICAgICBXaGVuIGNvbnRpbnVpbmcgd2l0aG91dCBjcmVkZW50aWFscyB3YXMgaW5pdGlh
bGx5IGltcGxlbWVudGVkIGluCisgICAgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwg
d2Ugc2VudCB0aGUgVGhyZWFkYWJsZUxvYWRlckNsaWVudCBhIGRpZEZhaWwoKSwKKyAgICAgICAg
ICAgdGhlbiBjYW5jZWxlZCB0aGUgU3VicmVzb3VyY2VMb2FkZXIuIFRoaXMgd2FzIG5lY2Vzc2Fy
eSBiZWNhdXNlIG9mIHRoZQorICAgICAgICAgICBxdWlya3Mgb2YgVGhyZWFkYWJsZUxvYWRlciBj
YW5jZWxsYXRpb24gKHdlIHNldmVyIHRoZSBjbGllbnQvbG9hZGVyIGNvbm5lY3Rpb25zCisgICAg
ICAgICAgIGJlZm9yZSB0aGUgbG9hZCBhY3R1YWxseSBjYW5jZWxzKSwgYnV0IGEgc2ltcGxlIGRp
ZEZhaWwoKSBzaG91bGQgc3VmZmljZSBhdAorICAgICAgICAgICB0aGUgUmVzb3VyY2VMb2FkZXIg
bGF5ZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwOiBUaGUgUmVzb3VyY2VMb2FkZXIgaW1wbGVtZW50YXRpb24gb2YKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZWdlIG1lYW5zIHRoYXQgSWNvbkxv
YWRlciB3aWxsIG5vdworICAgICAgICAgICAgdHJ5IHRvIGNvbnRpbnVlIHdpdGggY3JlZGVudGlh
bHMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdCwKKyAgICAgICAgICAgIHJhdGhlciB0aGFu
IGp1c3QgY2FuY2VsaW5nIG91dHJpZ2h0LiBXZSBzdGlsbCB3aWxsIG5ldmVyIHByb21wdAorICAg
ICAgICAgICAgZm9yIGF1dGhlbnRpY2F0aW9uIGZvciBpY29ucy4KKyAgICAgICAgKiBsb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmg6CisKIDIwMTEtMDktMjEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODU2MgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9w
dGlvbnMuaAkocmV2aXNpb24gOTU1NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwyNyBAQAogICAg
IEJ1ZmZlckRhdGEsCiAgICAgRG9Ob3RCdWZmZXJEYXRhCiB9OworICAgIAorZW51bSBDbGllbnRD
cm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3kgeworICAgIEFza0NsaWVudEZvckNyb3NzT3JpZ2lu
Q3JlZGVudGlhbHMsCisgICAgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxz
Cit9OwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIHsKLSAgICBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKERvTm90U2VuZENhbGxiYWNrcyksIHNuaWZm
Q29udGVudChEb05vdFNuaWZmQ29udGVudCksIHNob3VsZEJ1ZmZlckRhdGEoQnVmZmVyRGF0YSks
IGFsbG93Q3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7IH0KLSAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tz
QXJnLCBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50QXJnLCBEYXRhQnVmZmVyaW5n
UG9saWN5IHNob3VsZEJ1ZmZlckRhdGFBcmcsIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVu
dGlhbHNBcmcpIDogc2VuZExvYWRDYWxsYmFja3Moc2VuZExvYWRDYWxsYmFja3NBcmcpLCBzbmlm
ZkNvbnRlbnQoc25pZmZDb250ZW50QXJnKSwgc2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJE
YXRhQXJnKSwgYWxsb3dDcmVkZW50aWFscyhhbGxvd0NyZWRlbnRpYWxzQXJnKSB7IH0KKyAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKERvTm90U2VuZENhbGxi
YWNrcyksIHNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCksIHNob3VsZEJ1ZmZlckRhdGEo
QnVmZmVyRGF0YSksIGFsbG93Q3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
KSwgY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmln
aW5DcmVkZW50aWFscykgeyB9CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFj
a1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29u
dGVudCwgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50
aWFscyBhbGxvd0NyZWRlbnRpYWxzLCBDbGllbnRDcm9zc09yaWdpbkNyZWRlbnRpYWxQb2xpY3kg
Y3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KQorICAgICAgICA6IHNlbmRMb2FkQ2FsbGJhY2tz
KHNlbmRMb2FkQ2FsbGJhY2tzKQorICAgICAgICAsIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnQp
CisgICAgICAgICwgc2hvdWxkQnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhKQorICAgICAgICAs
IGFsbG93Q3JlZGVudGlhbHMoYWxsb3dDcmVkZW50aWFscykKKyAgICAgICAgLCBjcm9zc09yaWdp
bkNyZWRlbnRpYWxQb2xpY3koY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5KQorICAgIHsKKyAg
ICB9CiAgICAgU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzOwogICAgIENvbnRl
bnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnQ7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBz
aG91bGRCdWZmZXJEYXRhOwogICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHM7
IC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRo
ZSByZXF1ZXN0LgorICAgIENsaWVudENyb3NzT3JpZ2luQ3JlZGVudGlhbFBvbGljeSBjcm9zc09y
aWdpbkNyZWRlbnRpYWxQb2xpY3k7IC8vIFdoZXRoZXIgd2Ugd2lsbCBhc2sgdGhlIGNsaWVudCBm
b3IgY3JlZGVudGlhbHMgKGlmIHdlIGFsbG93IGNyZWRlbnRpYWxzIGF0IGFsbCkuCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTU2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgIGlmICghaW5DYWNoZSkKICAg
ICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKHRydWUpOwogCi0gICAgdXNlclNoZWV0LT5zZXRS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoUmVzb3VyY2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7
CisgICAgdXNlclNoZWV0LT5zZXRSZXNvdXJjZUxvYWRlck9wdGlvbnMoUmVzb3VyY2VMb2FkZXJP
cHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzKSk7
CiAgICAgdXNlclNoZWV0LT5sb2FkKHRoaXMsIC8qaW5jcmVtZW50YWwqLyBmYWxzZSwgU2tpcFNl
Y3VyaXR5Q2hlY2spOwogCiAgICAgaWYgKCFpbkNhY2hlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDk1
NTYxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQAogcHJpdmF0ZToKICAgICAvLyBG
SVhNRTogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIFJlc291cmNlTG9hZGVyT3B0aW9ucyB3aWxsIGFs
d2F5cyBiZSB1c2VkIGN1cnJlbnRseS4KICAgICAvLyBJdCBpcyBwbHVtYmVkIGZvciBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIyNSAuCi0gICAgQ2FjaGVkUmVzb3Vy
Y2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNl
TG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tz
LCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9y
aXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZh
bHNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJPcHRpb25z
KFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscykpOwogICAgIENhY2hl
ZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSk7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGxvYWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgdm9p
ZCByZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gOTU1NjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw3ICs5Niw3IEBACiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX3R5cGUodHlwZSkK
ICAgICAsIG1fc3RhdHVzKFBlbmRpbmcpCi0gICAgLCBtX29wdGlvbnMoU2VuZENhbGxiYWNrcywg
U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQorICAgICwg
bV9vcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dT
dG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscykKICNp
Zm5kZWYgTkRFQlVHCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAgLCBtX2xydUluZGV4KDAp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAJKHJldmlzaW9uIDk1NTYxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50KQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUs
IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90
QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscykpCisgICAgOiBSZXNvdXJjZUxvYWRl
cihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVu
dCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JD
cm9zc09yaWdpbkNyZWRlbnRpYWxzKSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
CShyZXZpc2lvbiA5NTU2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBACiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSB7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSB7IH0KIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWREb3dubG9hZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8p
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHJl
dmlzaW9uIDk1NTYxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVzb3VyY2VSZXF1ZXN0KG1fZnJhbWUtPmxvYWRlcigpLT5pY29uKCktPnVybCgpKTsKICAgICBy
ZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogCi0g
ICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9mcmFtZSwgdGhpcywgcmVzb3VyY2VSZXF1
ZXN0KTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9h
ZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1lLCB0aGlzLCByZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBEb1NlY3VyaXR5Q2hlY2ssIFJl
c291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRh
dGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09y
aWdpbkNyZWRlbnRpYWxzKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVy
KCktPmljb24oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0xMjQsMTMg
KzEyNCw2IEBACiAgICAgfQogfQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKLXsKLSAgICAvLyBXZSBkb24ndCBldmVyIHdhbnQgdG8gcHJvbXB0IGZvciBh
dXRoZW50aWNhdGlvbiBqdXN0IGZvciBhIHNpdGUgaWNvbiwgc28KLSAgICAvLyBpbXBsZW1lbnQg
dGhpcyBtZXRob2QgdG8gY2FuY2VsIHRoZSByZXNvdXJjZSBsb2FkCi0gICAgbV9yZXNvdXJjZUxv
YWRlci0+Y2FuY2VsKCk7Ci19Ci0KIHZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhT
dWJyZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKIHsKICAgICBMT0coSWNv
bkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9hZGVyICVwIiwg
cmVzb3VyY2VMb2FkZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuaAkocmV2aXNpb24gOTU1NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLQog
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEpOwogICAgIHZvaWQgY2xlYXJMb2FkaW5nU3RhdGUoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTU2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAKQEAgLTUxNSwxMCArNTE2LDI1IEBACiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogeworICAgIEFTU0VSVChoYW5kbGUoKS0+aGFzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAg
Ly8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxl
IG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3Rvcih0aGlzKTsKLSAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKworICAgIGlmIChtX29w
dGlvbnMuYWxsb3dDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7CisgICAg
ICAgIGlmIChtX29wdGlvbnMuY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5ID09IEFza0NsaWVu
dEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMgfHwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSkpIHsKKyAgICAg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUgYSB3YXkgdG8g
Y29udGludWUgd2l0aG91dCBjcmVkZW50aWFscy4KKyAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51
ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVy
LgorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpCisgICAg
aGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFs
bGVuZ2UpOworICAgIEFTU0VSVCghaGFuZGxlKCktPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkpOworI2Vsc2UKKyAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKKyNlbmRpZgogfQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDk1NTYxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWFpblJlc291cmNl
TG9hZGVyOjpNYWluUmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lKQotICAgIDogUmVzb3VyY2VM
b2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNv
bnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpKQorICAgIDogUmVzb3Vy
Y2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZv
ckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMpKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZN
YWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93KQogICAgICwgbV9sb2FkaW5nTXVs
dGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFs
c2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oCShyZXZpc2lvbiA5NTU2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogcHVibGljOgog
ICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigp
OwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJj
ZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNl
Y3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSk7CisgICAgUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9h
ZFByaW9yaXR5LCBTZWN1cml0eUNoZWNrUG9saWN5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9h
ZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCShyZXZpc2lvbiA5NTU2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsNiBAQAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJs
ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOwotCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWREb3dubG9hZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBpbnQgZGF0YUxlbmd0
aCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gOTU1NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsMjUgKzIzNCw0IEBACiAgICAg
bV9kb2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiB9CiAKLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQotewotICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIEFTU0VSVChoYW5kbGUoKS0+
aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hh
bGxlbmdlKTsKLSAgICAKLSAgICAvLyBUaGUgU3ViUmVzb3VyY2VMb2FkZXJDbGllbnQgbWF5IGhh
dmUgY2FuY2VsbGVkIHRoaXMgUmVzb3VyY2VMb2FkZXIgaW4gcmVzcG9uc2UgdG8gdGhlIGNoYWxs
ZW5nZS4gIAotICAgIC8vIElmIHRoYXQncyB0aGUgY2FzZSwgZG9uJ3QgY2FsbCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuCi0gICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEl0IG1heSBoYXZlIGFsc28gaGFuZGxlZCBhdXRo
ZW50aWNhdGlvbiBvbiBpdHMgb3duLgotICAgIGlmICghaGFuZGxlKCktPmhhc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKIH0KLQotfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDk1NTYxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwyMyArMjg4LDYgQEAK
ICAgICBtX2NsaWVudC0+ZGlkRmFpbChlcnJvcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
LXsKLSAgICBBU1NFUlQobG9hZGVyID09IG1fbG9hZGVyKTsKLSAgICAvLyBVc2VycyBhcmUgbm90
IHByb21wdGVkIGZvciBjcmVkZW50aWFscyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLgotICAg
IGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCkgewotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKENVUkwpCi0gICAgICAgIGxvYWRlci0+aGFuZGxlKCktPnJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwotI2Vsc2UKLSAg
ICAgICAgLy8gVGhlc2UgcGxhdGZvcm1zIGRvbid0IHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUg
d2l0aG91dCBjcmVkZW50aWFscywgY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0gICAgICAg
IFVOVVNFRF9QQVJBTShjaGFsbGVuZ2UpOwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChsb2Fk
ZXItPmJsb2NrZWRFcnJvcigpKTsKLSAgICAgICAgY2FuY2VsKCk7Ci0jZW5kaWYKLSAgICB9Ci19
Ci0KIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKIHsK
ICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhY3R1YWxSZXF1ZXN0OwpAQCAtMzMxLDYgKzMx
NCw3IEBACiAKICAgICBpZiAobV9hc3luYykgewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gbV9vcHRpb25zOworICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luQ3Jl
ZGVudGlhbFBvbGljeSA9IERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFsczsK
ICAgICAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewogICAgICAgICAgICAgLy8gRG9uJ3Qgc25p
ZmYgY29udGVudCBvciBzZW5kIGxvYWQgY2FsbGJhY2tzIGZvciB0aGUgcHJlZmxpZ2h0IHJlcXVl
c3QuCiAgICAgICAgICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5kQ2Fs
bGJhY2tzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJ
KHJldmlzaW9uIDk1NTYxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>