<?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>65564</bug_id>
          
          <creation_ts>2011-08-02 13:16:05 -0700</creation_ts>
          <short_desc>Support for multiple &lt;link rel=&quot;icon&quot;&gt; favicon elements.</short_desc>
          <delta_ts>2011-09-26 18:25:51 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>68861</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Rachel Blum">groby</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aa</cc>
    
    <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>445481</commentid>
    <comment_count>0</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-02 13:16:05 -0700</bug_when>
    <thetext>HTML5 supports the idea for multiple favicons - http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon - but WebKit currently only supports three different specific icons (FavIcon, TouchIcon, TouchPrecomposedIcon). Chromium will shortly need that support. (Larger bookmark icons). Bug #37674 was resolved in preparation to this and contains additional info.

I can see two possible ways to implement this:

1) As described in Bug #37674

* collect al* rel-icon links when WebKit does the initial tree traversal - LinkLoader::loadLink is called for each &lt;link rel=&quot;icon&quot;&gt; entry.
* WebCore::Document will be extended to contain a list of all icons encountered. (Currently, only keeps track of three predefined ones). Document::setIconURL will track them, and they will be exposed via accessor

2) link element callback on WebCore::Chrome, invoked by HTMLLinkElement constructor

Both methods are backwards-compatible. Existing APIs are not changed, FavIcon selection is not modified, no additional resources will be loaded.

#1 is consistent with the current approach to icons, but requires more code in WebCore. #2 makes it very clear that FavIcon selection is a job outside of WebCore, and has a smaller code footprint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448746</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-09 13:13:49 -0700</bug_when>
    <thetext>I haven&apos;t looked at this code in much detail, but the way I would expect this to work is for WebCore to call back into the client to ask for each type of icon whether the client is interested in loading it.  If so, it kicks of the load and tells the client when the icon is available.  I guess that&apos;s more like (2) above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448747</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-09 13:14:13 -0700</bug_when>
    <thetext>* for each type of icon it encounters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449492</commentid>
    <comment_count>3</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-10 16:55:49 -0700</bug_when>
    <thetext>Actually not touching the way icons are loaded (yet) - WebCore::Document has a very specific way of handling icons, and web sites rely on quirks in that. The patch (to follow soon) will simply implement a callback mechanism on ChromeClient - it is up to projects using WebKit to take advantage (or not) of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449498</commentid>
    <comment_count>4</comment_count>
      <attachid>103559</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-10 17:03:27 -0700</bug_when>
    <thetext>Created attachment 103559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449500</commentid>
    <comment_count>5</comment_count>
      <attachid>103559</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-10 17:05:49 -0700</bug_when>
    <thetext>Comment on attachment 103559
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:241
&gt; +      document()-&gt;page()-&gt;chrome()-&gt;registerFaviconSource(
&gt; +          getAttribute(hrefAttr), getAttribute(sizesAttr), getAttribute(typeAttr));

Bad indent.  What if page is null?  getAttribute -&gt; fastGetAttribute

&gt; Source/WebKit/chromium/public/WebViewClient.h:319
&gt; +    virtual void registerFaviconSource(const WebString&amp; url,
&gt; +                                        const WebString&amp; sizes,
&gt; +                                        const WebString&amp; mediaType) { }

Bad indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449522</commentid>
    <comment_count>6</comment_count>
      <attachid>103563</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-10 17:38:20 -0700</bug_when>
    <thetext>Created attachment 103563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450610</commentid>
    <comment_count>7</comment_count>
      <attachid>103563</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-12 13:16:50 -0700</bug_when>
    <thetext>Comment on attachment 103563
Patch

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

I don&apos;t really understand this patch well enough to review it.  I&apos;m not sure who would be a better reviewer either.  :-/  fishd might have some suggestions.

&gt; Source/WebKit/chromium/public/WebViewClient.h:316
&gt; +    // Registers &lt;link rel=&quot;icon&quot;&gt; elements.

What does that mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450612</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-12 13:17:15 -0700</bug_when>
    <thetext>+fishd; Thoughts on who would be the best person to review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451276</commentid>
    <comment_count>9</comment_count>
      <attachid>103563</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-15 14:12:52 -0700</bug_when>
    <thetext>Comment on attachment 103563
Patch

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:240
&gt; +        document()-&gt;page()-&gt;chrome()-&gt;registerFaviconSource(

I think other ports use an icon database that is built into WebCore.  How does this work with those ports?
See WebCore/loader/icon/IconDatabase.{h,cpp}

&gt;&gt; Source/WebKit/chromium/public/WebViewClient.h:316
&gt;&gt; +    // Registers &lt;link rel=&quot;icon&quot;&gt; elements.
&gt; 
&gt; What does that mean?

I have the same question as Adam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451277</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-15 14:14:30 -0700</bug_when>
    <thetext>Also, how does this relate to WebFrame::iconURLs and WebFrameClient::didChangeIcon?  The iconURLs method gives the embedder a way to query the set of available icons, and didChangeIcon gives WebKit a way to tell the embedder when the set of available icons changes.  Why do we need registerFaviconSource?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451285</commentid>
    <comment_count>11</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-15 14:21:11 -0700</bug_when>
    <thetext>Re: // Registers &lt;link rel=&quot;icon&quot;&gt; elements

This is a callback for any favicon links encountered, so clients can handle icons separately from the core mechanism in WebKit.

Which dovetails with the question re: IconDatabase, WebFrame::iconURLs, WebFrameClient::didChangeIcon. These continue behaving _exactly_ as before, since :darin in https://bugs.webkit.org/show_bug.cgi?id=37674#c1 stresses the importance of backwards compatibility, and :abarth in https://bugs.webkit.org/show_bug.cgi?id=65564#c1 suggested the callback method in favor of changing LinkLoader::loadLink and the iconDB

If you think this is the wrong direction to head, I&apos;d appreciate your feedback on how to proceed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451376</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-15 16:34:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; If you think this is the wrong direction to head, I&apos;d appreciate your feedback on how to proceed.

Can you explain how this is not redundant with WebFrame::iconURLs and WebFrameClient::didChangeIcon?  Those are about revealing the set of available favicons.  The summary of this bug report is support for multiple favicons.  Sounds like exactly the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451384</commentid>
    <comment_count>13</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-15 16:41:23 -0700</bug_when>
    <thetext>IconController::urlsForTypes is hard-coded to support exactly three icon types: FavIcon, TouchIcon, TouchPrecomposedIcon. It does not (even though it looks that way) support multiple icons beyond &quot;one of each&quot; for those three. 

The patch in bug #37674 originally added support for a fourth type, &quot;AnyIcon&quot;, which could be used to return a list of all icons. I split that out to keep sizes support separate from multi-icon support, and based on comment #1 here I picked a different approach. That might well have been wrong :)

If you think the original approach in #37674 would&apos;ve been better (it&apos;s the second patch, if you want to take a look), I&apos;m happy to resurrect that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451405</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-15 17:06:04 -0700</bug_when>
    <thetext>&gt; IconController::urlsForTypes is hard-coded to support exactly three icon types: FavIcon, TouchIcon, TouchPrecomposedIcon. It does not (even though it looks that way) support multiple icons beyond &quot;one of each&quot; for those three. 

I would expect it to be able to return multiple entries for each type.  The first entry of any given type should probably be the preferred, default icon.


&gt; The patch in bug #37674 originally added support for a fourth type, &quot;AnyIcon&quot;, which could be used to return a list of all icons. I split that out to keep sizes support separate from multi-icon support, and based on comment #1 here I picked a different approach. That might well have been wrong :)

Comment #1 doesn&apos;t seem to take into account the fact that favicon loading in Chromium is done by Chromium and not WebKit.  Chromium just gets the URL of the favicon, and then Chromium loads it externally to WebKit.  (We use webkit_glue::ImageResourceFetcher.)  It might make sense for WebKit to fetch it, but in reality, the favicons are just needed by the browser UI.  That&apos;s why we pushed all of the loading responsibility onto the embedder of WebKit.


&gt; If you think the original approach in #37674 would&apos;ve been better (it&apos;s the second patch, if you want to take a look), I&apos;m happy to resurrect that.

I&apos;m not sure.  That patch seems to have a lot to do with tracking icon sizes too.  I need to study it further to answer your question well.

It just seems fairly confusing to add a redundant sounding API for getting favicon information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451420</commentid>
    <comment_count>15</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-15 17:37:10 -0700</bug_when>
    <thetext>&gt; I would expect it to be able to return multiple entries for each type.  The first entry of any given type should probably be the preferred, default icon.

That won&apos;t work, unfortunately - the icon type is a bitmask (so you can e.g. get both FavIcon and TouchIcon in one go). That means a varying number of icons are default icons, followed by non-default ones. Since that&apos;s an API change, it might break other WebKit users.

I don&apos;t disagree that a second API is confounding - but in light of the fact that the old API is brittle *and* that we need backwards compatibility, it seemed best to pick an API that is completely invisible to clients relying on the old API.

&gt; need to study it further to answer your question well

I&apos;ll try to give a summary:

Document::setIconURL is extended to keep a list of all icons encountered, in addition to the 3 &quot;default&quot; ones it tracks. (The number of default icons is hard-coded to ICON_COUNT)

IconController::urlsForTypes returns that list of all icons if you pass in AnyIcon. Otherwise, it keeps the old behavior. Combining AnyIcon with the other types as operation does not really make sense, but it probably should result in the same behavior as if only AnyIcon was passed in.

IconController::appendToIconURLs is modified to retrieve the list of all icons kept on the Document if you pass in setIconURL

---- End of summary ---

You are right, there is more code in that patch to actually pass lists of sizes along with IconURLs. That&apos;s completely orthogonal to the changes above, so you can probably ignore it. (And if you think the above approach is better, I&apos;ll probably try to land that first, and sizes support in a second bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453346</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-18 14:18:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; I would expect it to be able to return multiple entries for each type.  The first entry of any given type should probably be the preferred, default icon.
&gt; 
&gt; That won&apos;t work, unfortunately - the icon type is a bitmask (so you can e.g. get both FavIcon and TouchIcon in one go). That means a varying number of icons are default icons, followed by non-default ones. Since that&apos;s an API change, it might break other WebKit users.
&gt; 
&gt; I don&apos;t disagree that a second API is confounding - but in light of the fact that the old API is brittle *and* that we need backwards compatibility, it seemed best to pick an API that is completely invisible to clients relying on the old API.

Why is backwards compat an issue?  We are constantly evolving the WebKit API.  We only need backwards compat temporarily to support WebKit rolls.  We often invent the better API and deprecate the older API, but in this case, it sounds like you are proposing a new API that does not deprecate the old API.  That means a future that is more complex, which makes me sad.

Why do we need this sizes attribute at all?  An .ico file is basically a mipmap, containing multiple images at different resolutions.  Are you trying to use non-ico icons (e.g., PNGs)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456417</commentid>
    <comment_count>17</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-24 14:36:23 -0700</bug_when>
    <thetext>Proposal for a patch with minimal effect on the current API: https://docs.google.com/document/pub?id=1FbxGOXcwEKIXsh44NESRpgHXYIt1MnCUoqgueZ-_U6Y

The summary: API&apos;s stay mostly the same. Signatures get changed to accomodate sizes where appropriate, and one function changes from returning an IconURL to returning Vector&lt;IconURL&gt; - smallest possible change.

We do need sizes since the HTML5 spec explicitly allows for them. (And with larger icons, they allow only downloading icons of appropriate size without peeking into every file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458375</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-29 12:36:16 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Proposal for a patch with minimal effect on the current API: https://docs.google.com/document/pub?id=1FbxGOXcwEKIXsh44NESRpgHXYIt1MnCUoqgueZ-_U6Y
&gt; 
&gt; The summary: API&apos;s stay mostly the same. Signatures get changed to accomodate sizes where appropriate, and one function changes from returning an IconURL to returning Vector&lt;IconURL&gt; - smallest possible change.
&gt; 
&gt; We do need sizes since the HTML5 spec explicitly allows for them. (And with larger icons, they allow only downloading icons of appropriate size without peeking into every file)

Some comments:

 - Overall, sounds like a good plan.

 - Document::setIconURL should probably be changed to addIconURL since there could be multiple icon URLs, right?

 - Your document doesn&apos;t indicate how the Chromium WebKit API will be impacted.

 - I tend to agree with you that making Document::iconURL return a Vector is better than introducing a separate allIconURLs function.  (shouldn&apos;t iconURL be named iconURLs?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458429</commentid>
    <comment_count>19</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-29 13:45:57 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt;  - Overall, sounds like a good plan.

I&apos;ll start getting the patch ready, then.

&gt;  - Document::setIconURL should probably be changed to addIconURL since there could be multiple icon URLs, right?

Yes and no. For the pre-defined types of icon (FavIcon, TouchIcon, TouchIconPrecomputed) this will keep existing behavior and just set one icon. I&apos;ve got no preference either way, since neither name catches the meaning 100%. 

I&apos;ll go with the rename for now.

&gt;  - Your document doesn&apos;t indicate how the Chromium WebKit API will be impacted.

It isn&apos;t :)

Chromium still gets notified via ChromeRenderViewObserver::DidIconChange(), and it obtains a list of icons directly from the IconController.

&gt;  - I tend to agree with you that making Document::iconURL return a Vector is better than introducing a separate allIconURLs function.  (shouldn&apos;t iconURL be named iconURLs?)

It probably should. Changing the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459180</commentid>
    <comment_count>20</comment_count>
      <attachid>105690</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-08-30 14:12:27 -0700</bug_when>
    <thetext>Created attachment 105690
Patch - Support for multiple &lt;link rel=&quot;icon&quot;&gt; items according to the API suggestion posted previously</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461023</commentid>
    <comment_count>21</comment_count>
      <attachid>106087</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-01 20:17:15 -0700</bug_when>
    <thetext>Created attachment 106087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461024</commentid>
    <comment_count>22</comment_count>
      <attachid>106087</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-01 20:19:15 -0700</bug_when>
    <thetext>Comment on attachment 106087
Patch

Added requested refactoring:

* DocumentLoader now is not involved in icons at all, no storage of icons either
* Document simply stores a list of icons, without any logic. Notification didChangeIcon is triggered from Document now.
* IconController handles the logic of retrieving the preferred icon for a specific type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461025</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 20:20:39 -0700</bug_when>
    <thetext>Attachment 106087 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:20:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:21:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 14 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>461027</commentid>
    <comment_count>24</comment_count>
      <attachid>106088</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-01 20:22:57 -0700</bug_when>
    <thetext>Created attachment 106088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463682</commentid>
    <comment_count>25</comment_count>
      <attachid>106088</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-07 15:00:24 -0700</bug_when>
    <thetext>Comment on attachment 106088
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4368
&gt; +    IconURL newURL(KURL(ParsedURLString, url), sizes, mimeType, iconType, false);

nit: mystery true/false literals at callsites are ordinarily frowned upon in webkit code.
it makes the code less readable since you need to consult the class definition to see
what this parameter means.  it is preferred to use enums or have separately named
functions.

&gt; Source/WebCore/dom/Document.h:921
&gt; +    void addIconURL(const String&amp;, const String&amp;, const String&amp;, IconType);

please name the first and second parameters.  it is not obvious what they are
supposed to represent.  the only time we drop the parameter name is when the
parameter type is self-documenting, as is the case with the IconType parameter.

&gt; Source/WebCore/dom/IconURL.h:56
&gt; +    bool m_isDefault;

where is m_isDefault used?  i don&apos;t see it referenced elsewhere in this patch (aside
from the operator== implementation).

&gt; Source/WebCore/dom/IconURL.h:64
&gt; +    : m_iconType(type)

nit: indent member initializers

&gt; Source/WebCore/dom/IconURL.h:73
&gt; +bool operator==(const IconURL&amp;, const IconURL&amp;);

nit: add a new line below here

&gt; Source/WebCore/loader/DocumentLoader.cpp:-685
&gt; -IconURL DocumentLoader::iconURL(IconType iconType) const

nice removal!

&gt; Source/WebCore/loader/icon/IconController.cpp:76
&gt; +                result=*iter;

nit: add whitespace around the &quot;=&quot; operator.

should this break after setting result?  or, do you intend to take the last
matching result?  if so, then perhaps you should search from back to front
instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465792</commentid>
    <comment_count>26</comment_count>
      <attachid>107083</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-12 14:22:52 -0700</bug_when>
    <thetext>Created attachment 107083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465795</commentid>
    <comment_count>27</comment_count>
      <attachid>106088</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-12 14:25:44 -0700</bug_when>
    <thetext>Comment on attachment 106088
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:4368
&gt;&gt; +    IconURL newURL(KURL(ParsedURLString, url), sizes, mimeType, iconType, false);
&gt; 
&gt; nit: mystery true/false literals at callsites are ordinarily frowned upon in webkit code.
&gt; it makes the code less readable since you need to consult the class definition to see
&gt; what this parameter means.  it is preferred to use enums or have separately named
&gt; functions.

Added the DefaultIconURL factory method so isDefault is no longer parameter of constructor

&gt;&gt; Source/WebCore/dom/IconURL.h:56
&gt;&gt; +    bool m_isDefault;
&gt; 
&gt; where is m_isDefault used?  i don&apos;t see it referenced elsewhere in this patch (aside
&gt; from the operator== implementation).

m_isDefault (now renamed to m_isDefaultIcon, for clarity) is set in defaultURL in IconController. It&apos;s purely a signifier for higher level code (e.g. Chromium) that this is a &quot;default&quot; icon that has been guessed by IconController (i.e. &quot;/favicon.ico&quot;), not an icon specified by the user

&gt;&gt; Source/WebCore/loader/icon/IconController.cpp:76
&gt;&gt; +                result=*iter;
&gt; 
&gt; nit: add whitespace around the &quot;=&quot; operator.
&gt; 
&gt; should this break after setting result?  or, do you intend to take the last
&gt; matching result?  if so, then perhaps you should search from back to front
&gt; instead?

We can&apos;t simply take the last matching result. The icon is the first icon we find, unless later icons have a mime type, in which case it&apos;s the last icon with a mime type we find. Since the number of icons on a page is usually small &amp; forward iter is slightly clearer than backwards iter, let&apos;s stick with forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468820</commentid>
    <comment_count>28</comment_count>
      <attachid>107083</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-16 14:46:57 -0700</bug_when>
    <thetext>Comment on attachment 107083
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4372
&gt; +      IconURL favIconURL = f-&gt;loader()-&gt;icon()-&gt;iconURL(iconType);

nit: indentation should be 4 white spaces

&gt; Source/WebCore/dom/Document.cpp:4373
&gt; +      if (favIconURL == newURL)

why do you need to restrict calls to didChangeIcons?  also, why is this variable
named favIconURL?  couldn&apos;t iconType indicate a different type of icon?

&gt; Source/WebCore/dom/IconURL.h:59
&gt;          : m_iconType(InvalidIcon)

this should initialize m_isDefaultIcon

&gt; Source/WebCore/dom/IconURL.h:72
&gt; +    static IconURL DefaultIconURL(const KURL&amp;, IconType);

nit: method names start with a lower case letter

&gt; Source/WebCore/loader/icon/IconController.cpp:120
&gt; +            iconURLs.append(*iter);

should you be increasing iconCount here since iconURLs.size() is increasing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468855</commentid>
    <comment_count>29</comment_count>
      <attachid>107736</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-16 15:42:11 -0700</bug_when>
    <thetext>Created attachment 107736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468856</commentid>
    <comment_count>30</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-16 15:45:12 -0700</bug_when>
    <thetext>(In reply to comment #28)

Fixed review issues, except

&gt; why do you need to restrict calls to didChangeIcons?  also, why is this variable
&gt; named favIconURL?  couldn&apos;t iconType indicate a different type of icon?

It&apos;s named favIconURL since it only notifies if the FavIcon of the particular icon type (FavIcon, Touch, PrecomputedTouch) has changed. Document _used_ to keep only one icon of each type and notified when that changed - this patch stores all icons, but still only notifies if the one that will be selected as the FavIcon by the browser changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470437</commentid>
    <comment_count>31</comment_count>
      <attachid>108070</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-09-20 16:10:29 -0700</bug_when>
    <thetext>Created attachment 108070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470548</commentid>
    <comment_count>32</comment_count>
      <attachid>108070</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 18:48:12 -0700</bug_when>
    <thetext>Comment on attachment 108070
Patch

Clearing flags on attachment: 108070

Committed r95593: &lt;http://trac.webkit.org/changeset/95593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470549</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 18:48:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470765</commentid>
    <comment_count>34</comment_count>
      <attachid>108070</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-21 07:01:21 -0700</bug_when>
    <thetext>Comment on attachment 108070
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No tests - purely an API change. (And API is not exposed to LayoutTests)

Presumably this could be tested via window.internals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470857</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-21 09:15:25 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 108070 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108070&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No tests - purely an API change. (And API is not exposed to LayoutTests)
&gt; 
&gt; Presumably this could be tested via window.internals?

Oh, that&apos;s a really good suggestion!  I&apos;m not used to thinking about window.internals :-(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103559</attachid>
            <date>2011-08-10 17:03:27 -0700</date>
            <delta_ts>2011-08-10 17:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110810170326.patch</filename>
            <type>text/plain</type>
            <size>19971</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3MzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjUzZTcyMjAxMTBjMGUw
Y2M2ZTY4MDI5NTBlYWI1YjZhY2EzZjg1Li5lM2U5ZDhhM2IzNjRkNWFmYjJjYmFkOWEwMTJiYjI4
M2E3NDM3MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMTAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnJlZ2lz
dGVyRmF2aWNvblNvdXJjZSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlckZhdmljb25Tb3VyY2UpOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxMS0wOC0wOSAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRl
ckJsb2NrIHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAppbmRleCBjNGQ5NDMxZjA1YTNhNjgxNzNlNmM0N2RkODM2ZTczNzI4ZjQzMGVm
Li5iMzM1M2I4Y2M5ZDg4YzdiN2IwMmE5MzdkYmQ5MTE0OTI1MjFkZTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMjM1LDYgKzIzNiwxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpOwogCisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZElj
b24pIHsKKyAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPnJlZ2lzdGVyRmF2aWNv
blNvdXJjZSgKKyAgICAgICAgICBnZXRBdHRyaWJ1dGUoaHJlZkF0dHIpLCBnZXRBdHRyaWJ1dGUo
c2l6ZXNBdHRyKSwgZ2V0QXR0cmlidXRlKHR5cGVBdHRyKSk7CisgICAgfQorCiAgICAgbV9pc0lu
U2hhZG93VHJlZSA9IGlzSW5TaGFkb3dUcmVlKCk7CiAgICAgaWYgKG1faXNJblNoYWRvd1RyZWUp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBh
YzQzMGE1N2JhOTFkZmExY2YxODcwYmNjYjQwNTdmNGU4NmQwMDU2Li42Nzk2MThlMmM3YzEyYTM4
M2M5NDJiZmI4YzRkZmY2OTY1ZGIyNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
clByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcm
KSB7IH0KIAogICAgIHZpcnR1YWwgS2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKSB7IHJl
dHVybiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1
YzdjYjE0NDVhYzUyMmMzNDQ1Y2EzMTAxOGYyNGJkYjc4OTMwYjgzLi44MGZhN2VjM2Q2MWQzNDE5
MGNlMTUxNzJkMGVhODkyOTcyZDg2ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0zNjgs
NiArMzY4LDExIEBAIHZvaWQgQ2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBT
dHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMCiB9CiAjZW5kaWYKIAordm9pZCBD
aHJvbWU6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZXMpCit7CisgICAgbV9jbGllbnQtPnJl
Z2lzdGVyRmF2aWNvblNvdXJjZSh1cmwsIHNpemVzLCBtaW1lVHlwZXMpOworfQorCiBJbnRSZWN0
IENocm9tZTo6d2luZG93UmVzaXplclJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC0+d2luZG93UmVzaXplclJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDJlZDZlNzIyNjc5
OWNhYmRiZWRiMzdhOWQ2ZGJjOTlhMTk3MDg3ZWYuLmEyNWFlYWNkODA3NjQ4MTUwY2E0OTA4NTE4
ZTA1MTFmZmIxNGU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTQ0LDYgKzE0NCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihj
b25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIHJlZ2lz
dGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICAgICAgSW50UmVjdCB3aW5kb3dSZXNpemVy
UmVjdCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29u
c3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKaW5kZXggMTdmNzkwNmE4ZTQ2OTQ3NTQwOGI0MmE1NjVlZDVmYzk5NjZj
OTUwZS4uNjk1MDQ2NmIyYTBlMmJiYzk2ZjI1OTQ4ODlhMTZmNjFmODNjMjVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xNDUsNiArMTQ1LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3Qg
U3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICNlbmRpZgogCisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
c2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIElu
dFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdCA9IDA7CiAKICAgICAgICAgLy8gTWV0aG9k
cyB1c2VkIGJ5IEhvc3RXaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAzMjIw
Y2VjNWU0NjJlZjdjMTQxNTIyMTQ4ZDIyNjVjNjcxNWIxMWMuLjM5MGYzOTMyMmQ5MjNjOTNkNWEy
YzYxYzU4ODI5MzFkODFmMDFjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTEtMDgtMTAgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24g
ZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVu
dDo6cmVnaXN0ZXJGYXZpY29uU291cmNlKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnJlZ2lzdGVyRmF2aWNv
blNvdXJjZSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMS0wOC0w
OSAgQWxleGVpIFN2aXRraW5lICA8YXN2aXRraW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIEVuYWJsZSBydWJiZXIgYmFuZGluZyB3aGVuIHNjcm9sbGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA4OTk4NmIyZjc4
OWQzZjQxZTc2NmUwZGY4ZWIxNGJkMGExNGUwMWFkLi45NmU0YTQ1ZDlmYmVmMDRmMTlmNmIyMDZj
NDBjOTNlNmNmYzFjZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCkBAIC0zMTMsNiArMzEzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB1cmwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUp
IHsgfQogCisgICAgLy8gUmVnaXN0ZXJzIDxsaW5rIHJlbD0iaWNvbiI+IGVsZW1lbnRzLgorICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgV2ViU3RyaW5nJiB1cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBzaXplcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIG1lZGlhVHlwZSkgeyB9CisKICAgICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAv
LyBSZXR1cm5zIHRoZSBjdXJyZW50IHZpc2liaWxpdHkgb2YgdGhlIFdlYlZpZXcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IGEzZTli
MGZkOTNiYjhjMGU2MzZhOWI2YjMxYTNiMTVhNjc4NWNmOGYuLjQ2MjIxYjU4NTgyZGVmYTZmMzY4
OTY2YTYyYTg1NWY2MTU2OTU4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC01MTQsNiArNTE0LDExIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNv
bnN0IFN0cmluCiB9CiAjZW5kaWYKIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZWdpc3RlckZh
dmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cmVnaXN0ZXJG
YXZpY29uU291cmNlKHVybCwgc2l6ZXMsIG1pbWVUeXBlKTsKK30KKwogdm9pZCBDaHJvbWVDbGll
bnRJbXBsOjppbnZhbGlkYXRlV2luZG93KGNvbnN0IEludFJlY3QmLCBib29sKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKaW5kZXggNTIzNGU0MzY3OTQ1MDVmZjFlZjk0MjNmNTI2MDcxNWQ4OTcyZjIxOS4u
ZDIzNTU4NDkyYzdjNzZkMmQwMjAxMjZjNzIxZWJjNmRhZTU0Mjg5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTA2LDYgKzEwNiw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVXaW5kb3coY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRXaW5k
b3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMTAzM2E2MWMzN2VmYzkxMGNjZjlhNmEyNDYzNWVjN2Vh
NDYwY2YxLi5mZTcxMWYzMWU1MTMyMjU1NGIwM2YzY2RjNzIxMWVmMGZlYjI5ODgzIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTAgIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIDxsaW5rIHJl
bD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6
CisKIDIwMTEtMDgtMDkgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gRml4IHdhcm5pbmcgY2F1c2VkIGJ5IHVuZGVmaW5lZCBzdGF0aWMgYXBp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuaAppbmRleCA3NWY5ZjQ5NzRlZGQzZmI2Zjk1NmU5MjJkZmI4NTI0NjJlMjkwMjM2Li5kYmZi
ZjM2NzBkZTMyM2JmZDhmODNmYTg0NDQ2ZGMxYzVmYTYzNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtOTQsNiArOTQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQo
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgSW50UmVjdCB3
aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6
ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggYmFmZjM1MGUyN2ZkNjdlNjI1OTQzMjFjYjVhYzRlMDI5MzEzOGE0Zi4uZTg0MmNiYzYzMWVi
Nzg4NGU0YjAyYmU0NmU1YTE0MjVlZTYwN2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDExLTA4LTEwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVs
ZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtU
aW1lbGluZV0gSG92ZXIgb24gcGFpbnQgZXZlbnRzIGFuZCBzZWUgcmVjdCBvdXRsaW5lIGFyb3Vu
ZCB0aGF0IGFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oCmluZGV4IDc1NGJhOTUzZDY3M2UxYjU1NmY5MDM2YzFlNDEyMGI1NDE3
YjJkZjEuLjU4ZGUzNjM1NzE2MmUyZDVmMmIwMTVhNDIwOGU5ZmM1YmE2MDNjZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBA
IC05NSw2ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Oktl
eWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSB7IH0KICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6
ZXJSZWN0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IDAyYTVmMDA5OTE0N2RiNzYwNGMw
NzJhZTNkNmZkMjJjZDM3MmM5MWQuLmZhNWFkZTk3OGVhYjBhMDI5MzVjZDI2YWNiMGNkZTZjZDYx
MWE2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTAg
IFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9y
IG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojpy
ZWdpc3RlckZhdmljb25Tb3VyY2UpOgorCiAyMDExLTA4LTAzICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBOb2Rl
IHBhcmFtZXRlciBmcm9tIHRoZSBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5o
IGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5o
CmluZGV4IGE4OGI4MjU1MGNlMGY3YjViN2QxOGU2MjYzNjg2MDk5YzJlNzUzMTYuLjg3OTc0MmUw
Mzk3ZGFjNTg4M2E0ZDU1OGZhMjZjMWJmODZhMmNjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKQEAgLTEwMyw2
ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNl
dFN0YXR1c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCBXZWJD
b3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIHsgfQogICAgICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJl
Y3QoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25z
dCBJbnRSZWN0JiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNWJkZWNmMmI1MDkwYTI4NDM4
Y2I2ZDljZDBhZjgwY2Y4OWI5MDQ0ZS4uZjBjMzRjNjRlOTg5N2RjOTMyNzc2YzYxNmYwNTcwYmIw
NDM3MDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA4LTEwICBS
YWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGZvciBt
dWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWdpc3RlckZhdmljb25T
b3VyY2UpOgorCiAyMDExLTA4LTA5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIFBhcmVudENsYXNzIHR5cGVkZWYgaW4gYWxsIEpTQyBjbGFz
c2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IGNkYzgwNDkxMThiMTE0OGNmMjIzNTM1ODQzYjJhMDlkMzc1ZDIyYWUuLjg2
YTJhZGRmMjJjNjk0Y2UwYTljYzNiZmQ4YjU4YzU5YTRjMTRjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMzcsNiAr
MTM3LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGJlaGluZFRleHQsIGJvb2wgZW50aXJlTGlu
ZSk7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KIAogICAg
IHZpcnR1YWwgTlNSZXNwb25kZXIgKmZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdmlydHVhbCB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcihOU1Jlc3BvbmRlciAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMTM4
ZTNmODRmOWU2ZDgzNmJiNmZjZjJhNzY1YTg3YzYwYzEyMmU5MS4uOGUyNjcyMmUyMmVjMWI1OGYw
NDBkYjM2YzE1NTgwYzBjMjc4NjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wOC0xMCAgUmFjaGVsIEJsdW0gIDxncm9ieUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U3VwcG9ydCBmb3IgbXVsdGlwbGUgPGxpbmsgcmVsPSJpY29uIj4gZmF2aWNvbiBlbGVtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDkgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI5MjY4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAppbmRleCBkYjM2ZjZlOWRmNmUzOWViNDNiNzQyMTA2NDg1MDAyMGU1OGY0
Yzk4Li5jYTQ2YWNkMGFmNTc4MzA3MGU5OTAxOTA3OTA5ZWRhOGE3ZThmNzI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xMTQs
NiArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9k
ZSgpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0
IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGJkNzVh
MWE1M2FhOGJkYmQwMTVmYTRlYmZmYWY4ZDhhZGNhMmRhMC4uNTgyZmZhNTE0OGY3Mzc3MWNkZDRi
OTFmOGMwNWY2NzJlOTJmZmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTA4LTEwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBT
dXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWdp
c3RlckZhdmljb25Tb3VyY2UpOgorCiAyMDExLTA4LTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1Vw
ZGF0ZSgpIGNyYXNoZXMgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2OGEwOTViYTdhYTc3ZDYyODcyMjY2ODBlMzM2
ZjQ0NzM0ZmZlZDA0Li45NGU0NjMxMDc0OTI0NTUxMDhmNTdlNWU5NTU0ODBmYTBmZGE2MmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZElu
dGVycnVwdEphdmFTY3JpcHQoKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1v
ZGUga2V5Ym9hcmRVSU1vZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291
cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVXaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCA3MjYwZGRhY2ZlNTZlYmY2MTYzZmMyMWY2
MWEzMWZmZjQ5NDQxOGM1Li45MjJlNzg5YzZiZjg4NGEwOWJhYTU5YmM0ODY0OGZkYTAzYjdkNThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA4LTEwICBSYWNo
ZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGZvciBtdWx0
aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFdpbkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudFdpbkNFOjpyZWdpc3Rl
ckZhdmljb25Tb3VyY2UpOgorCiAyMDExLTA4LTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBOb2RlIHBhcmFt
ZXRlciBmcm9tIHRoZSBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oIGIvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oCmluZGV4
IDhkMzVlYzA5NTY0MjdjNjUyMGIzMzA0Y2IzYjEwN2IxZGI3MjkzZTkuLmFlNGUwMjU2YjY4YWFm
NTU4N2UxZjAwZDAzOWIwNjc1NDc5YTM3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmgKQEAgLTkyLDYgKzkyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOwog
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKIAogICAgIC8vIE1ldGhvZHMgdXNlZCBi
eSBIb3N0V2luZG93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAxNDZjODI4MThkMjg0ZGVmMjk0ZGMzMTZk
ODQ1Yjg0MGYwYjIzMzdiLi5jZmUyNGZkYjU0NmY1ZWI5MjU0OWQyMmI0MTM5YTc4YWIzYjRhODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA4LTEwICBSYWNoZWwgQmx1
bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8
bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWdpc3RlckZhdmljb25Tb3Vy
Y2UpOgorCiAyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCBiNWQ0YzEwOTNmYjdiYTAwNDA0ZWVj
YmJkZjUzM2YzZDg4MzNhNjQyLi40ZmFjZTE4YzIwM2NjMTM4MTg1NmU1OTRlZmU2MDc0Mjc4YmVm
OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaApAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoaW50IGR4LCBpbnQgZHks
IGNvbnN0IEludFJlY3QmIHNjcm9sbFZpZXdSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY3
YjA2YzRmZTc2ZDY4ZDc3ZmVhZTcxMjI3YTIwYTRjYTE0ZjI3YjIuLjBiZWNhNWIwYTVjYTFhZTc0
MjNjNzNhMmRjZmUxZjAwZTQxNjk1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0wOC0xMCAgUmFjaGVsIEJsdW0gIDxncm9ieUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Vw
cG9ydCBmb3IgbXVsdGlwbGUgPGxpbmsgcmVsPSJpY29uIj4gZmF2aWNvbiBlbGVtZW50cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDkgIEpvaG4g
U3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgV0tQYWdlQ29weVBlbmRp
bmdBUElSZXF1ZXN0VVJMIHJldHVybnMgc3RhbGUgcmVzdWx0IGlmIHBvbGljeSBkZWNpc2lvbiBz
ZXQgdG8gSWdub3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2MzhjNmEzMjdlMjFhOTJhOTBk
ZjZjMTNlMGMzOTU1YjdlMzA5ZjAwLi4zNGE0ZTkzMTg3MjcwZWQ2NzdiNGVlMTdmMWExNmJmNmIw
ZDQyMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgp
OwogCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKICAgICAKICAgICAvLyBNZXRob2Rz
IHVzZWQgYnkgSG9zdFdpbmRvdy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103563</attachid>
            <date>2011-08-10 17:38:20 -0700</date>
            <delta_ts>2011-08-30 14:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110810173819.patch</filename>
            <type>text/plain</type>
            <size>20033</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3MzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjUzZTcyMjAxMTBjMGUw
Y2M2ZTY4MDI5NTBlYWI1YjZhY2EzZjg1Li4xZjFjMDlkZjY2ZjYyZWEzODlhNTNhYWU0NmM0NGYx
YTQ2OGYyZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMTAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIHdheSB0byB0
ZXN0IHZpYSBMYXlvdXRUZXN0cy4gCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6cmVnaXN0ZXJGYXZpY29uU291cmNlKToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyRmF2aWNv
blNvdXJjZSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorCiAyMDExLTA4LTA5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBTd2l0Y2ggUmVuZGVyQmxvY2sgdG8gdG8gbmV3IGxheW91dCB0eXBlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGM0ZDk0MzFmMDVhM2E2
ODE3M2U2YzQ3ZGQ4MzZlNzM3MjhmNDMwZWYuLjdiZWYxMmNiY2Y2YTBkMTBhYTlmNmY3MjM2Mjg2
YmIwYTJkZjZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzUsNiArMjM2LDExIEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRN
TEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAKKyAgICBpZiAobV9yZWxBdHRyaWJ1
dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+cmVnaXN0ZXJGYXZpY29uU291cmNl
KAorICAgICAgICAgICAgZmFzdEdldEF0dHJpYnV0ZShocmVmQXR0ciksIGZhc3RHZXRBdHRyaWJ1
dGUoc2l6ZXNBdHRyKSwgZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0cikpOworICAgIH0KKwogICAg
IG1faXNJblNoYWRvd1RyZWUgPSBpc0luU2hhZG93VHJlZSgpOwogICAgIGlmIChtX2lzSW5TaGFk
b3dUcmVlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
aW5kZXggYWM0MzBhNTdiYTkxZGZhMWNmMTg3MGJjY2I0MDU3ZjRlODZkMDA1Ni4uNjc5NjE4ZTJj
N2MxMmEzODNjOTQyYmZiOGM0ZGZmNjk2NWRiMjcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3Qg
U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIEtleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCkgeyByZXR1cm4gS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggNWM3Y2IxNDQ1YWM1MjJjMzQ0NWNhMzEwMThmMjRiZGI3ODkzMGI4My4uODBmYTdlYzNk
NjFkMzQxOTBjZTE1MTcyZDBlYTg5Mjk3MmQ4NmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtMzY4LDYgKzM2OCwxMSBAQCB2b2lkIENocm9tZTo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
Y29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTAogfQogI2VuZGlmCiAK
K3ZvaWQgQ2hyb21lOjpyZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVzKQoreworICAgIG1fY2xp
ZW50LT5yZWdpc3RlckZhdmljb25Tb3VyY2UodXJsLCBzaXplcywgbWltZVR5cGVzKTsKK30KKwog
SW50UmVjdCBDaHJvbWU6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jbGllbnQtPndpbmRvd1Jlc2l6ZXJSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAyZWQ2
ZTcyMjY3OTljYWJkYmVkYjM3YTlkNmRiYzk5YTE5NzA4N2VmLi5hMjVhZWFjZDgwNzY0ODE1MGNh
NDkwODUxOGUwNTExZmZiMTRlNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTE0NCw2ICsxNDQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogI2VuZGlmCiAKKyAgICAgICAgdm9p
ZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
c2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgICAgIEludFJlY3Qgd2luZG93
UmVzaXplclJlY3QoKSBjb25zdDsKIAogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDE3Zjc5MDZhOGU0Njk0NzU0MDhiNDJhNTY1ZWQ1
ZmM5OTY2Yzk1MGUuLjY5NTA0NjZiMmEwZTJiYmM5NmYyNTk0ODg5YTE2ZjYxZjgzYzI1YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAjZW5kaWYKIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSA9IDA7CisKICAgICAgICAgdmly
dHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgICAgIC8v
IE1ldGhvZHMgdXNlZCBieSBIb3N0V2luZG93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAwMzIyMGNlYzVlNDYyZWY3YzE0MTUyMjE0OGQyMjY1YzY3MTViMTFjLi4zOTBmMzkzMjJkOTIz
YzkzZDVhMmM2MWM1ODgyOTMxZDgxZjAxYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDExLTA4LTEwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBm
YXZpY29uIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdDbGllbnQ6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpyZWdpc3Rl
ckZhdmljb25Tb3VyY2UpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisKIDIw
MTEtMDgtMDkgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggODk5
ODZiMmY3ODlkM2Y0MWU3NjZlMGRmOGViMTRiZDBhMTRlMDFhZC4uZDhlYTM2MTA0NDM4YjRkZjgy
ZGZiOGRiMzI3YjVjOWYzNGEzYTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaApAQCAtMzEzLDYgKzMxMywxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdXJsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IHRpdGxlKSB7IH0KIAorICAgIC8vIFJlZ2lzdGVycyA8bGluayByZWw9Imljb24iPiBlbGVtZW50
cy4KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFdlYlN0cmlu
ZyYgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBzaXplcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgbWVkaWFUeXBlKSB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
ICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmlzaWJpbGl0eSBvZiB0aGUgV2ViVmlldy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXgg
YTNlOWIwZmQ5M2JiOGMwZTYzNmE5YjZiMzFhM2IxNWE2Nzg1Y2Y4Zi4uNDYyMjFiNTg1ODJkZWZh
NmYzNjg5NjZhNjJhODU1ZjYxNTY5NTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTUxNCw2ICs1MTQsMTEgQEAgdm9pZCBDaHJv
bWVDbGllbnRJbXBsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgU3RyaW4KIH0KICNlbmRpZgogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnJlZ2lz
dGVyRmF2aWNvblNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5yZWdp
c3RlckZhdmljb25Tb3VyY2UodXJsLCBzaXplcywgbWltZVR5cGUpOworfQorCiB2b2lkIENocm9t
ZUNsaWVudEltcGw6OmludmFsaWRhdGVXaW5kb3coY29uc3QgSW50UmVjdCYsIGJvb2wpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAppbmRleCA1MjM0ZTQzNjc5NDUwNWZmMWVmOTQyM2Y1MjYwNzE1ZDg5NzJm
MjE5Li5kMjM1NTg0OTJjN2M3NmQyZDAyMDEyNmM3MjFlYmM2ZGFlNTQyODk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMDYsNiArMTA2
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKQogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0Fu
ZFdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGMxMDMzYTYxYzM3ZWZjOTEwY2NmOWE2YTI0NjM1
ZWM3ZWE0NjBjZjEuLmZlNzExZjMxZTUxMzIyNTU0YjAzZjNjZGM3MjExZWYwZmViMjk4ODMgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wOC0xMCAgUmFjaGVsIEJsdW0g
IDxncm9ieUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBmb3IgbXVsdGlwbGUgPGxp
bmsgcmVsPSJpY29uIj4gZmF2aWNvbiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cmVnaXN0ZXJGYXZpY29uU291
cmNlKToKKwogMjAxMS0wOC0wOSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBGaXggd2FybmluZyBjYXVzZWQgYnkgdW5kZWZpbmVkIHN0YXRp
YyBhcGkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oCmluZGV4IDc1ZjlmNDk3NGVkZDNmYjZmOTU2ZTkyMmRmYjg1MjQ2MmUyOTAyMzYu
LmRiZmJmMzY3MGRlMzIzYmZkOGY4M2ZhODQ0NDZkYzFjNWZhNjM1MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC05NCw2
ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBJbnRS
ZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBiYWZmMzUwZTI3ZmQ2N2U2MjU5NDMyMWNiNWFjNGUwMjkzMTM4YTRmLi5lODQyY2Jj
NjMxZWI3ODg0ZTRiMDJiZTQ2ZTVhMTQyNWVlNjA3Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDgtMTAgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmlj
b24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6cmVnaXN0ZXJGYXZpY29uU291cmNlKToKKwogMjAxMS0wOC0wMyAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogW1RpbWVsaW5lXSBIb3ZlciBvbiBwYWludCBldmVudHMgYW5kIHNlZSByZWN0IG91dGxpbmUg
YXJvdW5kIHRoYXQgYXJlYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggNzU0YmE5NTNkNjczZTFiNTU2ZjkwMzZjMWU0MTIw
YjU0MTdiMmRmMS4uNThkZTM2MzU3MTYyZTJkNWYyYjAxNWE0MjA4ZTlmYzViYTYwM2NmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmgKQEAgLTk1LDYgKzk1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29y
ZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKIAorICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIHsgfQogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgd2luZG93
UmVzaXplclJlY3QoKSBjb25zdDsKICNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExF
UikgCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYpOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggMDJhNWYwMDk5MTQ3ZGI3
NjA0YzA3MmFlM2Q2ZmQyMmNkMzcyYzkxZC4uZmE1YWRlOTc4ZWFiMGEwMjkzNWNkMjZhY2IwY2Rl
NmNkNjExYTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
OC0xMCAgUmFjaGVsIEJsdW0gIDxncm9ieUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9y
dCBmb3IgbXVsdGlwbGUgPGxpbmsgcmVsPSJpY29uIj4gZmF2aWNvbiBlbGVtZW50cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3Zl
IE5vZGUgcGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmgKaW5kZXggYTg4YjgyNTUwY2UwZjdiNWI3ZDE4ZTYyNjM2ODYwOTljMmU3NTMxNi4uODc5
NzQyZTAzOTdkYWM1ODgzYTRkNTU4ZmEyNmMxYmY4NmEyY2NjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaApAQCAt
MTAzLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFs
IFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlV2luZG93
KGNvbnN0IEludFJlY3QmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YmRlY2YyYjUwOTBh
Mjg0MzhjYjZkOWNkMGFmODBjZjg5YjkwNDRlLi5mMGMzNGM2NGU5ODk3ZGM5MzI3NzZjNjE2ZjA1
NzBiYjA0MzcwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgt
MTAgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQg
Zm9yIG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyRmF2
aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlND
IGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggY2RjODA0OTExOGIxMTQ4Y2YyMjM1MzU4NDNiMmEwOWQzNzVkMjJh
ZS4uODZhMmFkZGYyMmM2OTRjZTBhOWNjM2JmZDhiNThjNTlhNGMxNGM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEz
Nyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgYmVoaW5kVGV4dCwgYm9vbCBlbnRp
cmVMaW5lKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRV
SU1vZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQog
CiAgICAgdmlydHVhbCBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwb25kZXIoKTsKICAgICB2aXJ0dWFs
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKE5TUmVzcG9uZGVyICopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCAxMzhlM2Y4NGY5ZTZkODM2YmI2ZmNmMmE3NjVhODdjNjBjMTIyZTkxLi44ZTI2NzIyZTIyZWMx
YjU4ZjA0MGRiMzZjMTU1ODBjMGMyNzg2MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDExLTA4LTEwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1l
bnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6cmVnaXN0ZXJGYXZpY29uU291cmNlKToKKwogMjAxMS0wOC0wOSAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjkyNjgzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IGRiMzZmNmU5ZGY2ZTM5ZWI0M2I3NDIxMDY0ODUwMDIw
ZTU4ZjRjOTguLmNhNDZhY2QwYWY1NzgzMDcwZTk5MDE5MDc5MDllZGE4YTdlOGY3MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAg
LTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRl
eHQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIEtleWJvYXJkVUlNb2RlIGtleWJvYXJk
VUlNb2RlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmF2aWNvblNvdXJjZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIElu
dFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlV2luZG93KGNvbnN0IEludFJlY3QmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4
YmQ3NWExYTUzYWE4YmRiZDAxNWZhNGViZmZhZjhkOGFkY2EyZGEwLi41ODJmZmE1MTQ4ZjczNzcx
Y2RkNGI5MWY4YzA1ZjY3MmU5MmZmZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDgtMTAgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnJlZ2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDUgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYlZpZXc6OnBlcmZvcm1MYXllcmVkV2lu
ZG93VXBkYXRlKCkgY3Jhc2hlcyB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDY4YTA5NWJhN2FhNzdkNjI4NzIyNjY4
MGUzMzZmNDQ3MzRmZmVkMDQuLjk0ZTQ2MzEwNzQ5MjQ1NTEwOGY1N2U1ZTk1NTQ4MGZhMGZkYTYy
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2Fy
ZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZhdmlj
b25Tb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IDcyNjBkZGFjZmU1NmViZjYxNjNm
YzIxZjYxYTMxZmZmNDk0NDE4YzUuLjkyMmU3ODljNmJmODg0YTA5YmFhNTliYzQ4NjQ4ZmRhMDNi
N2Q1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTAg
IFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9y
IG11bHRpcGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50V2luQ0U6OnJl
Z2lzdGVyRmF2aWNvblNvdXJjZSk6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIE5vZGUg
cGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmgK
aW5kZXggOGQzNWVjMDk1NjQyN2M2NTIwYjMzMDRjYjNiMTA3YjFkYjcyOTNlOS4uYWU0ZTAyNTZi
NjhhYWY1NTg3ZTFmMDBkMDM5YjA2NzU0NzlhMzc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuaApAQCAtOTIsNiAr
OTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQoKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAgICAgLy8gTWV0aG9kcyB1
c2VkIGJ5IEhvc3RXaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDE0NmM4MjgxOGQyODRkZWYyOTRk
YzMxNmQ4NDViODQwZjBiMjMzN2IuLmNmZTI0ZmRiNTQ2ZjVlYjkyNTQ5ZDIyYjQxMzlhNzhhYjNi
NGE4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJlZ2lzdGVyRmF2aWNv
blNvdXJjZSk6CisKIDIwMTEtMDgtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgUGx1Z2luSGFsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCmluZGV4IGI1ZDRjMTA5M2ZiN2JhMDA0
MDRlZWNiYmRmNTMzZjNkODgzM2E2NDIuLjRmYWNlMThjMjAzY2MxMzgxODU2ZTU5NGVmZTYwNzQy
NzhiZWY5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKIAorICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckZhdmljb25Tb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJhY2tpbmdTdG9yZShpbnQgZHgsIGlu
dCBkeSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsVmlld1JlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNjdiMDZjNGZlNzZkNjhkNzdmZWFlNzEyMjdhMjBhNGNhMTRmMjdiMi4uMGJlY2E1YjBhNWNh
MWFlNzQyM2M3M2EyZGNmZTFmMDBlNDE2OTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA4LTEwICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBTdXBwb3J0IGZvciBtdWx0aXBsZSA8bGluayByZWw9Imljb24iPiBmYXZpY29uIGVsZW1lbnRz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cmVnaXN0ZXJGYXZpY29uU291cmNlKToKKwogMjAxMS0wOC0wOSAg
Sm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1BhZ2VDb3B5
UGVuZGluZ0FQSVJlcXVlc3RVUkwgcmV0dXJucyBzdGFsZSByZXN1bHQgaWYgcG9saWN5IGRlY2lz
aW9uIHNldCB0byBJZ25vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDYzOGM2YTMyN2UyMWE5
MmE5MGRmNmMxM2UwYzM5NTViN2UzMDlmMDAuLjM0YTRlOTMxODcyNzBlZDY3N2I0ZWUxN2YxYTE2
YmY2YjBkNDIxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlN
b2RlKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGYXZpY29uU291cmNlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogICAgIAogICAgIC8vIE1l
dGhvZHMgdXNlZCBieSBIb3N0V2luZG93Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105690</attachid>
            <date>2011-08-30 14:12:27 -0700</date>
            <delta_ts>2011-09-01 20:17:08 -0700</delta_ts>
            <desc>Patch - Support for multiple &lt;link rel=&quot;icon&quot;&gt; items according to the API suggestion posted previously</desc>
            <filename>bug-65564-20110830141226.patch</filename>
            <type>text/plain</type>
            <size>12105</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li41OTJlMzg4OTMzODhmMzk0ZTk4ODRiYzU3Yjk5NmM0
N2Y4Y2M5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2Fk
ZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25D
b250cm9sbGVyOjp1cmxzRm9yVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xs
ZXI6OmFwcGVuZFRvSWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6
OmRlZmF1bHRVUkwpOgorCiAyMDExLTA4LTI2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MTWV0YUVsZW1lbnQ6IERvbid0IGNhY2hlICJodHRwLWVxdWl2
IiBhbmQgImNvbnRlbnQiIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
NTBjMGZjZWM0ZDdiMTUyM2Y0YWVmZDdmYWY5N2Y5ZjVjNWI5NzIzLi5iNmE5MjhjMWM2NDZlNDEx
M2I4ZTU3MzYzZWJiOTNkODZkZjA0MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUs
NyArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
d2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNDM1NCwyNiArNDM1NCwzMiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVu
dEtleUhhc2g6Omhhc2goY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSkKICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQog
Ci1JY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorY29u
c3QgVmVjdG9yPEljb25VUkw+JiBEb2N1bWVudDo6aWNvblVSTHMoSWNvblR5cGUgaWNvblR5cGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsK
IH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgaWNvblR5cGUpCit2b2lkIERvY3VtZW50OjphZGRJ
Y29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBJY29uVHlwZSBpY29uVHlwZSkKIHsKICAgICAvLyBGSVhNRSAtIDxyZGFy
Oi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWln
aHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlwZSIKLSAgICBJY29uVVJMIG5ld1VSTChLVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNvblR5cGUpOwotICAgIGlmIChpY29uVVJMKGljb25U
eXBlKS5tX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7Cisg
ICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIHNpemVzLCBpY29u
VHlwZSwgZmFsc2UpOworICAgIGlmIChpY29uVVJMcyhpY29uVHlwZSkuaXNFbXB0eSgpKQorICAg
ICAgICBhZGRJY29uVVJMKG5ld1VSTCk7CiAgICAgZWxzZSBpZiAoIW1pbWVUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgICAgICBhZGRJY29uVVJMKG5ld1VS
TCk7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKICAgICAgICAgZi0+bG9hZGVyKCktPmlj
b24oKS0+c2V0VVJMKG5ld1VSTCk7CisgICAgCisgICAgLy8gQWxsIGljb25zIGdldCBhZGRlZCB0
byAiQW55SWNvbiIgY29sbGVjdGlvbgorICAgIG5ld1VSTC5tX2ljb25UeXBlID0gQW55SWNvbjsK
KyAgICBhZGRJY29uVVJMKG5ld1VSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwo
Y29uc3QgSWNvblVSTCYgaWNvblVSTCkKK3ZvaWQgRG9jdW1lbnQ6OmFkZEljb25VUkwoY29uc3Qg
SWNvblVSTCYgaWNvblVSTCkKIHsKLSAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwu
bV9pY29uVHlwZSldID0gaWNvblVSTDsKKyAgICBpZiAoaWNvblVSTC5tX2ljb25UeXBlICE9IEFu
eUljb24pCisgICAgICAgIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBl
KV0uY2xlYXIoKTsKKyAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwubV9pY29uVHlw
ZSldLmFwcGVuZChpY29uVVJMKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JtRWxl
bWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdjMDc1MGRhZjgwM2JjMmY1NWUzYzY0YTNi
NDVlNC4uNTYzNmM4M2RiMzAwMDYwMWEyOWI5N2JhMzUyODA1ZjExMDU3MDM2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTE2LDkgKzkxNyw5IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRo
UGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIEljb25VUkwgaWNvblVSTChJY29uVHlw
ZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIEljb25UeXBlKTsKLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOworICAg
IGNvbnN0IFZlY3RvcjxJY29uVVJMPiYgaWNvblVSTHMoSWNvblR5cGUpIGNvbnN0OworICAgIHZv
aWQgYWRkSWNvblVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBJY29uVHlwZSk7CisgICAgdm9pZCBhZGRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKIAogICAg
IHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9v
bCB1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTM1MSw3ICsx
MzUyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9v
bCBtX2luUGFnZUNhY2hlOwotICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09OX0NPVU5UXTsKKyAg
ICBWZWN0b3I8SWNvblVSTD4gbV9pY29uVVJMc1tJQ09OX0NPVU5UKzFdOwogCiAgICAgSGFzaFNl
dDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhh
c2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuY3BwCmluZGV4IDhhZWZjMmFmOTRkYTI3ZTQ1ZWFlZTJlNmJhODgxZjU1OTFmY2E3NDAu
LjMzNDI0YzI4YWNjZDE5ODFkZDY2MjBmODBiNTYyOTg2NzRjNWNmM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5jcHAKQEAgLTQ4LDYgKzQ4LDkgQEAgc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlIHR5
cGUpCiAgICAgICAgIGluZGV4ID0gMjsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNl
IEFueUljb246CisgICAgICAgIGluZGV4ID0gSUNPTl9DT1VOVDsKKyAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
Y29uVVJMLmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcyNDljOWRiOWI5ODc0YWIzNS4u
Zjg3NmYwNDlmZjc4OGVlMTJhZmE0ODU5MDUyY2YwN2Y0YWMxMjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVS
TC5oCkBAIC00NSwyMSArNDUsMzQgQEAgZW51bSBJY29uVHlwZSB7CiAgICAgSW52YWxpZEljb24g
PSAwLAogICAgIEZhdmljb24gPSAxLAogICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKLSAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8
PCAyLAorICAgIEFueUljb24gPSAxIDw8IDMKIH07CiAKIHN0cnVjdCBJY29uVVJMIHsKICAgICBJ
Y29uVHlwZSBtX2ljb25UeXBlOworICAgIFN0cmluZyBtX3NpemVzOwogICAgIEtVUkwgbV9pY29u
VVJMOworICAgIGJvb2wgbV9pc0RlZmF1bHQ7CiAKICAgICBJY29uVVJMKCkKICAgICAgICAgOiBt
X2ljb25UeXBlKEludmFsaWRJY29uKQogICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJMKGNvbnN0
IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKLSAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCi0g
ICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBzaXplcywgSWNvblR5cGUgdHlwZSkKKyAgICA6IG1faWNvblR5cGUodHlwZSkK
KyAgICAsIG1fc2l6ZXMoc2l6ZXMpCisgICAgLCBtX2ljb25VUkwodXJsKQorICAgICwgbV9pc0Rl
ZmF1bHQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIEljb25VUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHNpemVzLCBJY29uVHlwZSB0eXBlLCBib29sIGlzRGVmYXVsdCkKKyAg
ICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAsIG1fc2l6ZXMoc2l6ZXMpCisgICAgLCBtX2ljb25V
UkwodXJsKQorICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0KQogICAgIHsKICAgICB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDRiYzZlOTMzZWNkMGRm
M2JjZWMzOWIxY2M4Y2EzZjk4Zjk3ODg5ZDIuLjkwOTVmNWI0YjZjZTZmZjRiNGVmNDQ0ZWI4M2Rl
MGZmNzk1MDk0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICBT
dHJpbmcgdHlwZSA9IG1fdHlwZS5sb3dlcigpOwogCi0gICAgaWYgKCFtX2xpbmtMb2FkZXIubG9h
ZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fdXJsLCBkb2N1bWVudCgpKSkKKyAgICBpZiAo
IW1fbGlua0xvYWRlci5sb2FkTGluayhtX3JlbEF0dHJpYnV0ZSwgdHlwZSwgbV9zaXplcy0+dG9T
dHJpbmcoKSwgbV91cmwsIGRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29s
IGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENTUyA9IGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5n
cygpLT50cmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCmluZGV4IGI5MjQwODgwNzFkODU4ZjQxMzE2YzNkYmNjNjRhN2UzMDQ0
MDE4MzQuLjUxZDNkOGY3ZDZhYmNjYThjNjQyYjg1ZDA4ZWQ5MTliZWY4ZWRlZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIExpbmtM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9v
bCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1
dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
S1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBp
ZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFo
cmVmLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkTGluaygp
KSAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZG9jdW1lbnQtPnNldEljb25V
UkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOworICAgICAg
ICBkb2N1bWVudC0+YWRkSWNvblVSTChocmVmLnN0cmluZygpLCB0eXBlLCBzaXplcywgcmVsQXR0
cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCA2YzQ0OGQ4ZjQ0
MmI1ZTg1NzU0YjJkYjRiODhlOWE2MjZlZDhmZTkwLi4xZmJjMThkN2M3NmViNmE2ZTdhNGVmZDcx
OTExMWI2Mzk2MGU3OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAKLSAgICBi
b29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOworICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1Jl
bEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29u
c3QgS1VSTCYsIERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVy
RmlyZWQoVGltZXI8TGlua0xvYWRlcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25Db250cm9sbGVyLmNwcAppbmRleCA4YTNhODc3YzZkMDA4Y2RjOWFmNTlkNzhjYWNlMzAx
NmI0NWJhMDgzLi4xODczMTBkYjI4ZGM3ZDQ4YTE2NmUwM2MxYmMzMzQ2ZGRjZGRlYzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC01LDYg
KzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgS3JpcyBKb3JkYW4gPGtyaXNq
b3JkYW5AZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDYg
KzcxLDIyIEBAIEljb25VUkxzIEljb25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25U
eXBlcykKICAgICBpZiAobV9mcmFtZS0+dHJlZSgpICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCkpCiAgICAgICAgIHJldHVybiBpY29uVVJMczsKIAorICAgIGlmIChpY29uVHlwZXMgPT0gQW55
SWNvbikgeworICAgICAgICBJY29uVVJMcyBkdW1teTsKKyAgICAgICAgYXBwZW5kVG9JY29uVVJM
cyhBbnlJY29uLCAmaWNvblVSTHMpOworCisgICAgICAvLyBBcHBlbmQgdGhlIGRlZmF1bHQgaWNv
bnMgb25seSBpZiBuZWVlZGVkCisgICAgICBpZiAoIWFwcGVuZFRvSWNvblVSTHMoRmF2aWNvbiwg
JmR1bW15KSkKKyAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoZGVmYXVsdFVSTChGYXZpY29uKSk7
CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICAgIGlmICghYXBwZW5kVG9JY29u
VVJMcyhUb3VjaFByZWNvbXBvc2VkSWNvbiwgJmR1bW15KSkKKyAgICAgICAgICBpY29uVVJMcy5h
cHBlbmQoZGVmYXVsdFVSTChUb3VjaFByZWNvbXBvc2VkSWNvbikpOworICAgICAgaWYgKCFhcHBl
bmRUb0ljb25VUkxzKFRvdWNoSWNvbiwgJmR1bW15KSkKKyAgICAgICAgICBpY29uVVJMcy5hcHBl
bmQoZGVmYXVsdFVSTChUb3VjaEljb24pKTsKKyNlbmRpZgorICAgICAgcmV0dXJuIGljb25VUkxz
OworICAgIH0KKyAgICAgICAgICAgIAogICAgIGlmIChpY29uVHlwZXMgJiBGYXZpY29uICYmICFh
cHBlbmRUb0ljb25VUkxzKEZhdmljb24sICZpY29uVVJMcykpCiAgICAgICAgIGljb25VUkxzLmFw
cGVuZChkZWZhdWx0VVJMKEZhdmljb24pKTsKIApAQCAtMjE4LDExICsyMzUsMTEgQEAgdm9pZCBJ
Y29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24g
aWNvbkxvYWREZWNpc2lvbikKIAogYm9vbCBJY29uQ29udHJvbGxlcjo6YXBwZW5kVG9JY29uVVJM
cyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMqIGljb25VUkxzKQogewotICAgIEljb25VUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTChpY29uVHlwZSk7Ci0gICAgaWYgKHVy
bC5tX2ljb25VUkwuaXNFbXB0eSgpKQorICAgIGNvbnN0IFZlY3RvcjxJY29uVVJMPiYgdXJscyA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkxzKGljb25UeXBlKTsKKyAgICBpZiAodXJscy5p
c0VtcHR5KCkgfHwgdXJscy5hdCgwKS5tX2ljb25VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpY29uVVJMcy0+YXBwZW5kKHVybCk7CisgICAgaWNvblVSTHMtPmFw
cGVuZCh1cmxzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQxLDE2ICsyNTgsMTYgQEAg
SWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkKICAg
ICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRVUkwucG9ydCgpKTsKICAgICBpZiAoaWNvblR5cGUg
PT0gRmF2aWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAg
ICAgIHJldHVybiBJY29uVVJMKHVybCwgRmF2aWNvbik7CisgICAgICAgIHJldHVybiBJY29uVVJM
KHVybCwgZW1wdHlTdHJpbmcoKSwgRmF2aWNvbiwgdHJ1ZSk7CiAgICAgfQogI2lmIEVOQUJMRShU
T1VDSF9JQ09OX0xPQURJTkcpCiAgICAgaWYgKGljb25UeXBlID09IFRvdWNoUHJlY29tcG9zZWRJ
Y29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3Nl
ZC5wbmciKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaFByZWNvbXBvc2VkSWNv
bik7CisgICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgZW1wdHlTdHJpbmcoKSwgVG91Y2hQcmVj
b21wb3NlZEljb24sIHRydWUpOwogICAgIH0KICAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29u
KSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKLSAgICAg
ICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaEljb24pOworICAgICAgICByZXR1cm4gSWNvblVS
TCh1cmwsIGVtcHR5U3RyaW5nKCksIFRvdWNoSWNvbiwgdHJ1ZSk7CiAgICAgfQogI2VuZGlmCiAg
ICAgcmV0dXJuIEljb25VUkwoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106087</attachid>
            <date>2011-09-01 20:17:15 -0700</date>
            <delta_ts>2011-09-01 20:22:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110901201714.patch</filename>
            <type>text/plain</type>
            <size>19780</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li5lNTZiOWE2YzljMDIzOWU5NzViMmIzZTk4NmJkNjUy
YWUxMmE5Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlk
Q2hhbmdlSWNvbnMpCisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGlua0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OnVybHNGb3JUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJY29uQ29udHJvbGxlcjo6YXBwZW5kVG9JY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTCk6CisKIDIwMTEtMDgtMjYgIEFuZHJlYXMgS2xp
bmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxNZXRhRWxlbWVudDogRG9uJ3Qg
Y2FjaGUgImh0dHAtZXF1aXYiIGFuZCAiY29udGVudCIgYXR0cmlidXRlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDE1MGMwZmNlYzRkN2IxNTIzZjRhZWZkN2ZhZjk3ZjlmNWM1Yjk3MjMu
Ljc3MTdiNWM1OTdkZTM4Y2YyOGFkZTE2OTU0ZDc3YjMxYzA2ZmNkZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00MzU0LDI2ICs0MzU0LDI1IEBAIHVu
c2lnbmVkIEZvcm1FbGVtZW50S2V5SGFzaDo6aGFzaChjb25zdCBGb3JtRWxlbWVudEtleSYga2V5
KQogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZvcm1FbGVtZW50
S2V5KT4oJmtleSk7CiB9CiAKLUljb25VUkwgRG9jdW1lbnQ6Omljb25VUkwoSWNvblR5cGUgaWNv
blR5cGUpIGNvbnN0Citjb25zdCBWZWN0b3I8SWNvblVSTD4mIERvY3VtZW50OjppY29uVVJMcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsK
KyAgICByZXR1cm4gbV9pY29uVVJMczsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgaWNvblR5
cGUpCit2b2lkIERvY3VtZW50OjphZGRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBJY29uVHlwZSBpY29uVHlwZSkK
IHsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRklY
TUUgLSA8cmRhcjovL3Byb2JsZW0vNDcyNzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1
cmUsIHdlIG1pZ2h0IGFjdHVhbGx5IGhvbm9yIHRoZSAibWltZVR5cGUiCi0gICAgSWNvblVSTCBu
ZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGljb25UeXBlKTsKLSAgICBpZiAoaWNv
blVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0SWNvblVSTChu
ZXdVUkwpOwotICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHNldElj
b25VUkwobmV3VVJMKTsKLSAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAgICBmLT5s
b2FkZXIoKS0+aWNvbigpLT5zZXRVUkwobmV3VVJMKTsKLX0KKyAgICBJY29uVVJMIG5ld1VSTChL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgc2l6ZXMsIG1pbWVUeXBlLCBpY29uVHlwZSwgZmFs
c2UpOworICAgIG1faWNvblVSTHMuYXBwZW5kKG5ld1VSTCk7CiAKLXZvaWQgRG9jdW1lbnQ6OnNl
dEljb25VUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKLXsKLSAgICBtX2ljb25VUkxzW3RvSWNv
bkluZGV4KGljb25VUkwubV9pY29uVHlwZSldID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYg
PSBmcmFtZSgpKSB7CisgICAgICBJY29uVVJMIGZhdkljb25VUkwgPSBmLT5sb2FkZXIoKS0+aWNv
bigpLT5pY29uVVJMKGljb25UeXBlKTsKKyAgICAgIGlmIChmYXZJY29uVVJMID09IG5ld1VSTCkK
KyAgICAgICAgICBmLT5sb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnMoaWNvblR5cGUpOworICAgIH0K
IH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRl
KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
M2U4NDYxMjZlYTdjMDc1MGRhZjgwM2JjMmY1NWUzYzY0YTNiNDVlNC4uZTE4OGU3NmU4YjExZTI3
MTdjMTk5ZmUyZDNjZjdmODQwNTIwYTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYsNiAr
Niw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtOTE2LDkgKzkxNyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0
aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRy
dWU7IH0KIAotICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKLSAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxJY29uVVJM
PiYgaWNvblVSTHMoKSBjb25zdDsKKyAgICB2b2lkIGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOwogCiAgICAgdm9pZCBzZXRV
c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgICBib29sIHVzZVNlY3Vy
ZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdl
Q2FjaGU7Ci0gICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworICAgIFZlY3RvcjxJ
Y29uVVJMPiBtX2ljb25VUkxzOwogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFW
b2x1bWVDYWxsYmFja0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCmluZGV4IDhhZWZjMmFm
OTRkYTI3ZTQ1ZWFlZTJlNmJhODgxZjU1OTFmY2E3NDAuLjY4NWJmZGUwYTY0ZjMzNTc4NzAwNzg3
MzY0MWMxNzZkMmUwMzQ4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKQEAgLTU0LDUgKzU0LDE0
IEBAIHNpemVfdCB0b0ljb25JbmRleChJY29uVHlwZSB0eXBlKQogICAgIHJldHVybiBpbmRleDsK
IH0KIAorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEljb25VUkwmIGxocywgY29uc3QgSWNvblVSTCYg
cmhzKQoreworICAgIHJldHVybiBsaHMubV9pY29uVHlwZSA9PSByaHMubV9pY29uVHlwZQorICAg
ICAgICAgICAmJiBsaHMubV9pc0RlZmF1bHQgPT0gcmhzLm1faXNEZWZhdWx0CisgICAgICAgICAg
ICYmIGxocy5tX2ljb25VUkwgPT0gcmhzLm1faWNvblVSTAorICAgICAgICAgICAmJiBsaHMubV9z
aXplcyA9PSByaHMubV9zaXplcworICAgICAgICAgICAmJiBsaHMubV9taW1lVHlwZSA9PSByaHMu
bV9taW1lVHlwZTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAppbmRleCA2NDg2Y2E0MzJlZjQ3
NDdjZDY0NDkwNzI0OWM5ZGI5Yjk4NzRhYjM1Li5hNmMzMTM1NzNhMDRiNzgxOWUzMGQ0M2IyZGM1
NTk2NzQ1NDZlODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKQEAgLTQ1LDI1ICs0NSwzMiBAQCBlbnVt
IEljb25UeXBlIHsKICAgICBJbnZhbGlkSWNvbiA9IDAsCiAgICAgRmF2aWNvbiA9IDEsCiAgICAg
VG91Y2hJY29uID0gMSA8PCAxLAotICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyCisg
ICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIsCiB9OwogCiBzdHJ1Y3QgSWNvblVSTCB7
CiAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBTdHJpbmcgbV9zaXplczsKKyAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBLVVJMIG1faWNvblVSTDsKKyAgICBib29sIG1faXNEZWZhdWx0
OwogCiAgICAgSWNvblVSTCgpCiAgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKICAg
ICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBlIHR5cGUp
Ci0gICAgICAgIDogbV9pY29uVHlwZSh0eXBlKQotICAgICAgICAsIG1faWNvblVSTCh1cmwpCisg
ICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEljb25UeXBlIHR5cGUsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogbV9p
Y29uVHlwZSh0eXBlKQorICAgICwgbV9zaXplcyhzaXplcykKKyAgICAsIG1fbWltZVR5cGUobWlt
ZVR5cGUpCisgICAgLCBtX2ljb25VUkwodXJsKQorICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0
KQogICAgIHsKICAgICB9CiB9OwogCitib29sIG9wZXJhdG9yPT0oY29uc3QgSWNvblVSTCYsIGNv
bnN0IEljb25VUkwmKTsKIHR5cGVkZWYgVmVjdG9yPEljb25VUkwsIElDT05fQ09VTlQ+IEljb25V
UkxzOwogCiAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1
cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCmluZGV4IDRiYzZlOTMzZWNkMGRmM2JjZWMzOWIxY2M4Y2EzZjk4Zjk3ODg5ZDIu
LjkwOTVmNWI0YjZjZTZmZjRiNGVmNDQ0ZWI4M2RlMGZmNzk1MDk0NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICBTdHJpbmcgdHlwZSA9IG1fdHlwZS5sb3dlcigp
OwogCi0gICAgaWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUs
IG1fdXJsLCBkb2N1bWVudCgpKSkKKyAgICBpZiAoIW1fbGlua0xvYWRlci5sb2FkTGluayhtX3Jl
bEF0dHJpYnV0ZSwgdHlwZSwgbV9zaXplcy0+dG9TdHJpbmcoKSwgbV91cmwsIGRvY3VtZW50KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENT
UyA9IGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT50cmVhdHNBbnlUZXh0Q1NTTGlua0Fz
U3R5bGVzaGVldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggNjg0ZmI2NmNkMDQ1Y2RjMTZhMjU3NTU2OTAzMjhjOGU1MTBkYzgwYy4uYmU5MTEyZWQ4MGQ3
MzBkM2IzYWRmODgzMGFlMmUzYWE1MWVkOTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgyLDIyICs2ODMsNiBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKICAgICB9CiB9
CiAKLUljb25VUkwgRG9jdW1lbnRMb2FkZXI6Omljb25VUkwoSWNvblR5cGUgaWNvblR5cGUpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsKLX0K
LQotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiB1cmwpCi17
Ci0gICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoaWNvblVSTCh1cmwubV9pY29uVHlwZSkubV9pY29uVVJMICE9IHVybC5tX2ljb25VUkwp
IHsKLSAgICAgICAgbV9pY29uVVJMc1t0b0ljb25JbmRleCh1cmwubV9pY29uVHlwZSldID0gdXJs
OwotICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VJY29ucyh0aGlzLCB1cmwubV9pY29u
VHlwZSk7Ci0gICAgfQotfQotCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkg
Y29uc3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFu
ZCBCL0YgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTY4
OWZhMjE1ZWY1YjJmMzBmN2RiYzJkZmY3NTkxNWFkODYxZDc1Mi4uYzdlNzhjMGU3NDBjNThhNDlk
ZTAwNTJlNjA1N2I2Zjg4MDgxOGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMyw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
VGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0
YWJhc2VCYXNlLmgiCi0jaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25B
Y3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCkBAIC0xMjgsNyArMTI4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmlt
YXJ5TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwm
KTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzUsNyAr
MTc0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc3RvcFJlY29yZGlu
Z1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9Ci0gICAgICAgIEljb25VUkwgaWNvblVSTChJ
Y29uVHlwZSkgY29uc3Q7CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMzE0
LDcgKzMxMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dhc09ubG9h
ZEhhbmRsZWQ7CiAKICAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKLSAg
ICAgICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOwogCiAgICAgICAgIFN0cmluZyBt
X292ZXJyaWRlRW5jb2Rpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDRmMGYxZjM1NmVhN2EyODdhYmFjZGFlZjQ4Njg0M2NmOTUzODc4NmUuLjRlMjE3NGYzYzQx
ODQyMWNiMTk3YzA5MTkyMGI1ZmFiY2U1NTlkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEtyaXMgSm9yZGFuIDxrcmlzam9yZGFuQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMjI0LDEwICszMjI1LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEljb25UeXBlIHR5
cGUpCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQogewot
ICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKLSAgICAgICAgbV9jbGllbnQtPmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnModHlwZSk7CisgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnModHlwZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGQ2YTIxMTk5NjZkZWRl
YTZmMDhmZDEwMGM2ZTZhOWRlZjQ2NjBiYjIuLjcwNDU2ZDZlODQxZTNkYTIwNmViNGFmMDkwNDVj
NjEyOTViY2VlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0yLDYgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE2OSw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygp
IGNvbnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAg
dm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotICAgIHZvaWQgZGlkQ2hhbmdl
SWNvbnMoRG9jdW1lbnRMb2FkZXIqLCBJY29uVHlwZSk7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29u
cyhJY29uVHlwZSk7CiAKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBiOTI0MDg4MDcxZDg1OGY0MTMxNmMz
ZGJjYzY0YTdlMzA0NDAxODM0Li41MWQzZDhmN2Q2YWJjY2E4YzY0MmI4NWQwOGVkOTE5YmVmOGVk
ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04NSwxMyArODUsMTMg
QEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiB9CiAKIGJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0
ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEtVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYgaHJlZiwgRG9j
dW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9j
dW1lbnQsIGV2ZW4gaWYgd2UgbGF0ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwog
ICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBocmVmLmlz
VmFsaWQoKSAmJiAhaHJlZi5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX2NsaWVudC0+c2hv
dWxkTG9hZExpbmsoKSkgCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvY3Vt
ZW50LT5zZXRJY29uVVJMKGhyZWYuc3RyaW5nKCksIHR5cGUsIHJlbEF0dHJpYnV0ZS5tX2ljb25U
eXBlKTsKKyAgICAgICAgZG9jdW1lbnQtPmFkZEljb25VUkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwg
c2l6ZXMsIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlKTsKICAgICB9CiAKICAgICBpZiAocmVsQXR0
cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5k
ZXggNmM0NDhkOGY0NDJiNWU4NTc1NGIyZGI0Yjg4ZTlhNjI2ZWQ4ZmU5MC4uMWZiYzE4ZDdjNzZl
YjZhNmU3YTRlZmQ3MTkxMTFiNjM5NjBlNzlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNl
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7
CiAgICAgCi0gICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKKyAgICBib29sIGxvYWRMaW5r
KGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2l6ZXMsIGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIHZvaWQg
bGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2FkZXI+Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggOGEzYTg3N2M2ZDAwOGNkYzlh
ZjU5ZDc4Y2FjZTMwMTZiNDViYTA4My4uOWVhYmQ3MjEzYjcxMjc5MjNiZjU0NjljODA1NGQ2ZTJh
YWJjMTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVy
LmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFs
cEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEtyaXMg
Sm9yZGFuIDxrcmlzam9yZGFuQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02NCwzMCArNjUsNjEgQEAgS1VSTCBJY29uQ29udHJvbGxlcjo6dXJsKCkKICAgICBy
ZXR1cm4gaWNvblVSTHMuaXNFbXB0eSgpID8gS1VSTCgpIDogaWNvblVSTHNbMF0ubV9pY29uVVJM
OwogfQogCitJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBl
KSBjb25zdAoreworICAgIEljb25VUkwgcmVzdWx0OworICAgIGNvbnN0IFZlY3RvcjxJY29uVVJM
PiYgaWNvblVSTHMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMcygpOworICAgIFZlY3Rv
cjxJY29uVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXRlcihpY29uVVJMcy5iZWdpbigpKTsKKyAgICBm
b3IgKDsgaXRlciAhPSBpY29uVVJMcy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmIChpdGVy
LT5tX2ljb25UeXBlID09IGljb25UeXBlKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0Lm1faWNv
blVSTC5pc0VtcHR5KCkgfHwgIWl0ZXItPm1fbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHJlc3VsdD0qaXRlcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIEljb25VUkxzIEljb25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25U
eXBlcykKIHsKICAgICBJY29uVVJMcyBpY29uVVJMczsKICAgICBpZiAobV9mcmFtZS0+dHJlZSgp
ICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBpY29uVVJMczsK
LQorICAgICAgICAKICAgICBpZiAoaWNvblR5cGVzICYgRmF2aWNvbiAmJiAhYXBwZW5kVG9JY29u
VVJMcyhGYXZpY29uLCAmaWNvblVSTHMpKQogICAgICAgICBpY29uVVJMcy5hcHBlbmQoZGVmYXVs
dFVSTChGYXZpY29uKSk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQotICAgIGJv
b2wgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGludCBtaXNzZWRJY29ucyA9IDA7
CiAgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKQotICAgICAgICBoYXZl
UHJlY29tcG9zZWRJY29uID0gYXBwZW5kVG9JY29uVVJMcyhUb3VjaFByZWNvbXBvc2VkSWNvbiwg
Jmljb25VUkxzKTsKKyAgICAgICAgbWlzc2VkSWNvbnMgKz0gYXBwZW5kVG9JY29uVVJMcyhUb3Vj
aFByZWNvbXBvc2VkSWNvbiwgJmljb25VUkxzKSA/IDA6MTsKIAotICAgIGJvb2wgaGF2ZVRvdWNo
SWNvbiA9IGZhbHNlOwogICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaEljb24pCi0gICAgICAgIGhh
dmVUb3VjaEljb24gPSBhcHBlbmRUb0ljb25VUkxzKFRvdWNoSWNvbiwgJmljb25VUkxzKTsKKyAg
ICAgIG1pc3NlZEljb25zICs9IGFwcGVuZFRvSWNvblVSTHMoVG91Y2hJY29uLCAmaWNvblVSTHMp
ID8gMDoxOwogCiAgICAgLy8gT25seSByZXR1cm4gdGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hl
biB0aGUgYm90aCB3ZXJlIHJlcXVpcmVkIGFuZCBuZWl0aGVyIHdhcyBnb3R0ZW4uCi0gICAgaWYg
KGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNv
biAmJiAhaGF2ZVByZWNvbXBvc2VkSWNvbiAmJiAhaGF2ZVRvdWNoSWNvbikgeworICAgIGlmICht
aXNzZWRJY29ucyA9PSAyKSB7CiAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZhdWx0VVJMKFRv
dWNoUHJlY29tcG9zZWRJY29uKSk7CiAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZhdWx0VVJM
KFRvdWNoSWNvbikpOwogICAgIH0KICNlbmRpZgorCisgICAgLy8gRmluYWxseSwgYXBwZW5kIGFs
bCByZW1haW5pbmcgaWNvbnMgb2YgdGhpcyB0eXBlLgorICAgIGludCBpY29uQ291bnQgPSBpY29u
VVJMcy5zaXplKCk7CisgICAgY29uc3QgVmVjdG9yPEljb25VUkw+JiBhbGxJY29uVVJMcyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkxzKCk7CisgICAgZm9yIChWZWN0b3I8SWNvblVSTD46
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBhbGxJY29uVVJMcy5iZWdpbigpOyBpdGVyICE9IGFsbElj
b25VUkxzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+bV9pY29uVHlwZSAm
IGljb25UeXBlcykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbnQgaTsKKyAg
ICAgICAgZm9yIChpID0gMDsgaSA8IGljb25Db3VudDsgKytpKSB7CisgICAgICAgICAgICBpZiAo
Kml0ZXIgPT0gaWNvblVSTHMuYXQoaSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGkgPT0gaWNvbkNvdW50KQorICAgICAgICAgICAgaWNvblVSTHMuYXBw
ZW5kKCppdGVyKTsKKyAgICB9CisKICAgICByZXR1cm4gaWNvblVSTHM7CiB9CiAKQEAgLTk4LDEx
ICsxMzAsNiBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtV
UkwmIGljb24pCiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5z
dHJpbmcoKSwgbV9mcmFtZS0+bG9hZGVyKCktPmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCkpOwogfQogCi12b2lkIEljb25Db250cm9sbGVyOjpzZXRVUkwoY29uc3QgSWNvblVSTCYgaWNv
blVSTCkKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0SWNv
blVSTChpY29uVVJMKTsKLX0KLQogdm9pZCBJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIoKQog
ewogICAgIC8vIEZJWE1FOiBXZSBraWNrIG9mZiB0aGUgaWNvbiBsb2FkZXIgd2hlbiB0aGUgZnJh
bWUgaXMgZG9uZSByZWNlaXZpbmcgaXRzIG1haW4gcmVzb3VyY2UuCkBAIC0yMTgsMTEgKzI0NSwx
MSBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxv
YWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogCiBib29sIEljb25Db250cm9sbGVyOjphcHBl
bmRUb0ljb25VUkxzKEljb25UeXBlIGljb25UeXBlLCBJY29uVVJMcyogaWNvblVSTHMpCiB7Ci0g
ICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsK
LSAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAgSWNvblVSTCBmYXZpY29uVVJM
ID0gaWNvblVSTChpY29uVHlwZSk7CisgICAgaWYgKGZhdmljb25VUkwubV9pY29uVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWNvblVSTHMtPmFwcGVuZCh1cmwp
OworICAgIGljb25VUkxzLT5hcHBlbmQoZmF2aWNvblVSTCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTIzOSwxOCArMjY2LDE5IEBAIEljb25VUkwgSWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRV
UkwoSWNvblR5cGUgaWNvblR5cGUpCiAgICAgdXJsLnNldEhvc3QoZG9jdW1lbnRVUkwuaG9zdCgp
KTsKICAgICBpZiAoZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQogICAgICAgICB1cmwuc2V0UG9ydChk
b2N1bWVudFVSTC5wb3J0KCkpOworCiAgICAgaWYgKGljb25UeXBlID09IEZhdmljb24pIHsKICAg
ICAgICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOwotICAgICAgICByZXR1cm4gSWNvblVS
TCh1cmwsIEZhdmljb24pOworICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCksIEZhdmljb24sIHRydWUpOwogICAgIH0KICNpZiBFTkFCTEUoVE9V
Q0hfSUNPTl9MT0FESU5HKQogICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaFByZWNvbXBvc2VkSWNv
bikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQu
cG5nIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hQcmVjb21wb3NlZEljb24p
OworICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5n
KCksIFRvdWNoUHJlY29tcG9zZWRJY29uLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGljb25UeXBl
ID09IFRvdWNoSWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24u
cG5nIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hJY29uKTsKKyAgICAgICAg
cmV0dXJuIEljb25VUkwodXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBUb3VjaElj
b24sIHRydWUpOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBJY29uVVJMKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAppbmRleCA5MGM0MTk3MmRkMjZm
YmU5ZTk3ZGE1OWViYzRhMTVmM2VhZDJmZjFiLi5iMmNhYmEyYTBhOTVkM2VkMGFkMTBiMzNiMGVk
YTJkODFmNjFkYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9s
bGVyLmgKQEAgLTQ5LDkgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgS1VSTCB1cmwoKTsKICAgICBJ
Y29uVVJMcyB1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlcyk7Ci0KLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGlubGluZSB0aGlzIGZ1bmN0aW9uIGludG8gaXRzIG9uZSBjYWxsZXIhCi0gICAgdm9p
ZCBzZXRVUkwoY29uc3QgSWNvblVSTCYpOworICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkg
Y29uc3Q7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGVyKCk7CiAgICAgdm9pZCBzdG9wTG9hZGVyKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106088</attachid>
            <date>2011-09-01 20:22:57 -0700</date>
            <delta_ts>2011-09-12 14:26:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110901202256.patch</filename>
            <type>text/plain</type>
            <size>19782</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li5lZTcwYzM4MjMzMGU3ODNiOWZhOGE1ODFkMTYxMjky
ZjZhNTQxNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aWRDaGFuZ2VJY29ucykKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL0xpbmtM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6dXJsc0ZvclR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Db250cm9sbGVyOjphcHBlbmRUb0ljb25VUkxzKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKToKKwogMjAxMS0wOC0yNiAgQW5kcmVhcyBL
bGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSFRNTE1ldGFFbGVtZW50OiBEb24n
dCBjYWNoZSAiaHR0cC1lcXVpdiIgYW5kICJjb250ZW50IiBhdHRyaWJ1dGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggMTUwYzBmY2VjNGQ3YjE1MjNmNGFlZmQ3ZmFmOTdmOWY1YzViOTcy
My4uNzcxN2I1YzU5N2RlMzhjZjI4YWRlMTY5NTRkNzdiMzFjMDZmY2RlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQzNTQsMjYgKzQzNTQsMjUgQEAg
dW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpoYXNoKGNvbnN0IEZvcm1FbGVtZW50S2V5JiBr
ZXkpCiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9ybUVsZW1l
bnRLZXkpPigma2V5KTsKIH0KIAotSWNvblVSTCBEb2N1bWVudDo6aWNvblVSTChJY29uVHlwZSBp
Y29uVHlwZSkgY29uc3QKK2NvbnN0IFZlY3RvcjxJY29uVVJMPiYgRG9jdW1lbnQ6Omljb25VUkxz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pY29uVVJMc1t0b0ljb25JbmRleChpY29uVHlwZSld
OworICAgIHJldHVybiBtX2ljb25VUkxzOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRJY29uVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29u
VHlwZSkKK3ZvaWQgRG9jdW1lbnQ6OmFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIEljb25UeXBlIGljb25UeXBl
KQogeworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBG
SVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1
dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlwZSIKLSAgICBJY29uVVJM
IG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNvblR5cGUpOwotICAgIGlmIChp
Y29uVVJMKGljb25UeXBlKS5tX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBzZXRJY29uVVJM
KG5ld1VSTCk7Ci0gICAgZWxzZSBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0
SWNvblVSTChuZXdVUkwpOwotICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCi0gICAgICAgIGYt
PmxvYWRlcigpLT5pY29uKCktPnNldFVSTChuZXdVUkwpOwotfQorICAgIEljb25VUkwgbmV3VVJM
KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBzaXplcywgbWltZVR5cGUsIGljb25UeXBlLCBm
YWxzZSk7CisgICAgbV9pY29uVVJMcy5hcHBlbmQobmV3VVJMKTsKIAotdm9pZCBEb2N1bWVudDo6
c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQotewotICAgIG1faWNvblVSTHNbdG9J
Y29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBlKV0gPSBpY29uVVJMOworICAgIGlmIChGcmFtZSog
ZiA9IGZyYW1lKCkpIHsKKyAgICAgIEljb25VUkwgZmF2SWNvblVSTCA9IGYtPmxvYWRlcigpLT5p
Y29uKCktPmljb25VUkwoaWNvblR5cGUpOworICAgICAgaWYgKGZhdkljb25VUkwgPT0gbmV3VVJM
KQorICAgICAgICAgIGYtPmxvYWRlcigpLT5kaWRDaGFuZ2VJY29ucyhpY29uVHlwZSk7CisgICAg
fQogfQogCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAzZTg0NjEyNmVhN2MwNzUwZGFmODAzYmMyZjU1ZTNjNjRhM2I0NWU0Li5lMTg4ZTc2ZThiMTFl
MjcxN2MxOTlmZTJkM2NmN2Y4NDA1MjBhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNiw2
ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC05MTYsOSArOTE3LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SGFzTm9kZXNX
aXRoUGxhY2Vob2xkZXJTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlID0g
dHJ1ZTsgfQogCi0gICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKLSAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOwotICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CisgICAgY29uc3QgVmVjdG9yPEljb25V
Ukw+JiBpY29uVVJMcygpIGNvbnN0OworICAgIHZvaWQgYWRkSWNvblVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBJY29uVHlwZSk7CiAKICAgICB2b2lkIHNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wpOwogICAgIGJvb2wgdXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSBjb25zdDsKQEAgLTEzNTEsNyArMTM1MSw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBh
Z2VDYWNoZTsKLSAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CisgICAgVmVjdG9y
PEljb25VUkw+IG1faWNvblVSTHM7CiAKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrRWxlbWVudHM7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9tZWRp
YVZvbHVtZUNhbGxiYWNrRWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKaW5kZXggOGFlZmMy
YWY5NGRhMjdlNDVlYWVlMmU2YmE4ODFmNTU5MWZjYTc0MC4uNjg1YmZkZTBhNjRmMzM1Nzg3MDA3
ODczNjQxYzE3NmQyZTAzNDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25V
UkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcApAQCAtNTQsNSArNTQs
MTQgQEAgc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlIHR5cGUpCiAgICAgcmV0dXJuIGluZGV4
OwogfQogCitib29sIG9wZXJhdG9yPT0oY29uc3QgSWNvblVSTCYgbGhzLCBjb25zdCBJY29uVVJM
JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tX2ljb25UeXBlID09IHJocy5tX2ljb25UeXBlCisg
ICAgICAgICAgICYmIGxocy5tX2lzRGVmYXVsdCA9PSByaHMubV9pc0RlZmF1bHQKKyAgICAgICAg
ICAgJiYgbGhzLm1faWNvblVSTCA9PSByaHMubV9pY29uVVJMCisgICAgICAgICAgICYmIGxocy5t
X3NpemVzID09IHJocy5tX3NpemVzCisgICAgICAgICAgICYmIGxocy5tX21pbWVUeXBlID09IHJo
cy5tX21pbWVUeXBlOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9J
Y29uVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCmluZGV4IDY0ODZjYTQzMmVm
NDc0N2NkNjQ0OTA3MjQ5YzlkYjliOTg3NGFiMzUuLmE2YzMxMzU3M2EwNGI3ODE5ZTMwZDQzYjJk
YzU1OTY3NDU0NmU4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaApAQCAtNDUsMjUgKzQ1LDMyIEBAIGVu
dW0gSWNvblR5cGUgewogICAgIEludmFsaWRJY29uID0gMCwKICAgICBGYXZpY29uID0gMSwKICAg
ICBUb3VjaEljb24gPSAxIDw8IDEsCi0gICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIK
KyAgICBUb3VjaFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMiwKIH07CiAKIHN0cnVjdCBJY29uVVJM
IHsKICAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIFN0cmluZyBtX3NpemVzOworICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIEtVUkwgbV9pY29uVVJMOworICAgIGJvb2wgbV9pc0RlZmF1
bHQ7CiAKICAgICBJY29uVVJMKCkKICAgICAgICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQog
ICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlw
ZSkKLSAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCi0gICAgICAgICwgbV9pY29uVVJMKHVybCkK
KyAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgdHlwZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgOiBt
X2ljb25UeXBlKHR5cGUpCisgICAgLCBtX3NpemVzKHNpemVzKQorICAgICwgbV9taW1lVHlwZSht
aW1lVHlwZSkKKyAgICAsIG1faWNvblVSTCh1cmwpCisgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1
bHQpCiAgICAgewogICAgIH0KIH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBJY29uVVJMJiwg
Y29uc3QgSWNvblVSTCYpOwogdHlwZWRlZiBWZWN0b3I8SWNvblVSTCwgSUNPTl9DT1VOVD4gSWNv
blVSTHM7CiAKIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiB0eXBlLCAwIGlzIHJl
dHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYzYmNlYzM5YjFjYzhjYTNmOThmOTc4ODlk
Mi4uOTA5NWY1YjRiNmNlNmZmNGI0ZWY0NDRlYjgzZGUwZmY3OTUwOTQ0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIFN0cmluZyB0eXBlID0gbV90eXBlLmxvd2Vy
KCk7CiAKLSAgICBpZiAoIW1fbGlua0xvYWRlci5sb2FkTGluayhtX3JlbEF0dHJpYnV0ZSwgdHlw
ZSwgbV91cmwsIGRvY3VtZW50KCkpKQorICAgIGlmICghbV9saW5rTG9hZGVyLmxvYWRMaW5rKG1f
cmVsQXR0cmlidXRlLCB0eXBlLCBtX3NpemVzLT50b1N0cmluZygpLCBtX3VybCwgZG9jdW1lbnQo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0
Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3Mo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5r
QXNTdHlsZXNoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCA2ODRmYjY2Y2QwNDVjZGMxNmEyNTc1NTY5MDMyOGM4ZTUxMGRjODBjLi5iZTkxMTJlZDgw
ZDczMGQzYjNhZGY4ODMwYWUyZTNhYTUxZWQ5MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02ODIsMjIgKzY4Myw2IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogICAgIH0K
IH0KIAotSWNvblVSTCBEb2N1bWVudExvYWRlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9pY29uVVJMc1t0b0ljb25JbmRleChpY29uVHlwZSldOwot
fQotCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIHVybCkK
LXsKLSAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChpY29uVVJMKHVybC5tX2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNvblVS
TCkgewotICAgICAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1
cmw7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMsIHVybC5tX2lj
b25UeXBlKTsKLSAgICB9Ci19Ci0KIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3Rvcnko
KSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3Rvcnkg
YW5kIEIvRiBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA1
Njg5ZmEyMTVlZjViMmYzMGY3ZGJjMmRmZjc1OTE1YWQ4NjFkNzUyLi5jN2U3OGMwZTc0MGM1OGE0
OWRlMDA1MmU2MDU3YjZmODgwODE4YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMzLDYgQEAKICNpbmNsdWRlICJEb2N1bWVudExv
YWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkljb25E
YXRhYmFzZUJhc2UuaCIKLSNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlv
bkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKQEAgLTEyOCw3ICsxMjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBy
aW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVS
TCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE3NSw3
ICsxNzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KLSAgICAgICAgSWNvblVSTCBpY29uVVJM
KEljb25UeXBlKSBjb25zdDsKIAogICAgICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsK
ICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0z
MTQsNyArMzEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fd2FzT25s
b2FkSGFuZGxlZDsKIAogICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcGFnZVRpdGxlOwot
ICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CiAKICAgICAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVFbmNvZGluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNGYwZjFmMzU2ZWE3YTI4N2FiYWNkYWVmNDg2ODQzY2Y5NTM4Nzg2ZS4uNGUyMTc0ZjNj
NDE4NDIxY2IxOTdjMDkxOTIwYjVmYWJjZTU1OWQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBU
b2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgS3JpcyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyMjQsMTAgKzMyMjUsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIH0KIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgSWNvblR5cGUg
dHlwZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25zKEljb25UeXBlIHR5cGUpCiB7
Ci0gICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKKyAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZDZhMjExOTk2NmRl
ZGVhNmYwOGZkMTAwYzZlNmE5ZGVmNDY2MGJiMi4uNzA0NTZkNmU4NDFlM2RhMjA2ZWI0YWYwOTA0
NWM2MTI5NWJjZWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTIsNiAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTY5LDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1YmZyYW1lSXNMb2FkaW5n
KCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKICAg
ICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBkaWRDaGFu
Z2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBlKTsKKyAgICB2b2lkIGRpZENoYW5nZUlj
b25zKEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGI5MjQwODgwNzFkODU4ZjQxMzE2
YzNkYmNjNjRhN2UzMDQ0MDE4MzQuLjUxZDNkOGY3ZDZhYmNjYThjNjQyYjg1ZDA4ZWQ5MTliZWY4
ZWRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTg1LDEzICs4NSwx
MyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmli
dXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiBocmVmLCBE
b2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBk
b2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVz
CiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYu
aXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fY2xpZW50LT5z
aG91bGRMb2FkTGluaygpKSAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZG9j
dW1lbnQtPnNldEljb25VUkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwgcmVsQXR0cmlidXRlLm1faWNv
blR5cGUpOworICAgICAgICBkb2N1bWVudC0+YWRkSWNvblVSTChocmVmLnN0cmluZygpLCB0eXBl
LCBzaXplcywgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChyZWxB
dHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaApp
bmRleCA2YzQ0OGQ4ZjQ0MmI1ZTg1NzU0YjJkYjRiODhlOWE2MjZlZDhmZTkwLi4xZmJjMThkN2M3
NmViNmE2ZTdhNGVmZDcxOTExMWI2Mzk2MGU3OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKICAgICAKLSAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOworICAgIGJvb2wgbG9hZExp
bmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRlcj4qKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAppbmRleCA4YTNhODc3YzZkMDA4Y2Rj
OWFmNTlkNzhjYWNlMzAxNmI0NWJhMDgzLi45ZWFiZDcyMTNiNzEyNzkyM2JmNTQ2OWM4MDU0ZDZl
MmFhYmMxODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xs
ZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8
YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgS3Jp
cyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY0LDMwICs2NSw2MSBAQCBLVVJMIEljb25Db250cm9sbGVyOjp1cmwoKQogICAg
IHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBpY29uVVJMc1swXS5tX2ljb25V
Ukw7CiB9CiAKK0ljb25VUkwgSWNvbkNvbnRyb2xsZXI6Omljb25VUkwoSWNvblR5cGUgaWNvblR5
cGUpIGNvbnN0Cit7CisgICAgSWNvblVSTCByZXN1bHQ7CisgICAgY29uc3QgVmVjdG9yPEljb25V
Ukw+JiBpY29uVVJMcyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkxzKCk7CisgICAgVmVj
dG9yPEljb25VUkw+Ojpjb25zdF9pdGVyYXRvciBpdGVyKGljb25VUkxzLmJlZ2luKCkpOworICAg
IGZvciAoOyBpdGVyICE9IGljb25VUkxzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKGl0
ZXItPm1faWNvblR5cGUgPT0gaWNvblR5cGUpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubV9p
Y29uVVJMLmlzRW1wdHkoKSB8fCAhaXRlci0+bV9taW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0PSppdGVyOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogSWNvblVSTHMgSWNvbkNvbnRyb2xsZXI6OnVybHNGb3JUeXBlcyhpbnQgaWNv
blR5cGVzKQogewogICAgIEljb25VUkxzIGljb25VUkxzOwogICAgIGlmIChtX2ZyYW1lLT50cmVl
KCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIGljb25VUkxz
OwotCisgICAgICAgIAogICAgIGlmIChpY29uVHlwZXMgJiBGYXZpY29uICYmICFhcHBlbmRUb0lj
b25VUkxzKEZhdmljb24sICZpY29uVVJMcykpCiAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZh
dWx0VVJMKEZhdmljb24pKTsKIAogI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCi0gICAg
Ym9vbCBoYXZlUHJlY29tcG9zZWRJY29uID0gZmFsc2U7CisgICAgaW50IG1pc3NlZEljb25zID0g
MDsKICAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24pCi0gICAgICAgIGhh
dmVQcmVjb21wb3NlZEljb24gPSBhcHBlbmRUb0ljb25VUkxzKFRvdWNoUHJlY29tcG9zZWRJY29u
LCAmaWNvblVSTHMpOworICAgICAgICBtaXNzZWRJY29ucyArPSBhcHBlbmRUb0ljb25VUkxzKFRv
dWNoUHJlY29tcG9zZWRJY29uLCAmaWNvblVSTHMpID8gMDoxOwogCi0gICAgYm9vbCBoYXZlVG91
Y2hJY29uID0gZmFsc2U7CiAgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKLSAgICAgICAg
aGF2ZVRvdWNoSWNvbiA9IGFwcGVuZFRvSWNvblVSTHMoVG91Y2hJY29uLCAmaWNvblVSTHMpOwor
ICAgICAgbWlzc2VkSWNvbnMgKz0gYXBwZW5kVG9JY29uVVJMcyhUb3VjaEljb24sICZpY29uVVJM
cykgPyAwOjE7CiAKICAgICAvLyBPbmx5IHJldHVybiB0aGUgZGVmYXVsdCB0b3VjaCBpY29ucyB3
aGVuIHRoZSBib3RoIHdlcmUgcmVxdWlyZWQgYW5kIG5laXRoZXIgd2FzIGdvdHRlbi4KLSAgICBp
ZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24gJiYgaWNvblR5cGVzICYgVG91Y2hJ
Y29uICYmICFoYXZlUHJlY29tcG9zZWRJY29uICYmICFoYXZlVG91Y2hJY29uKSB7CisgICAgaWYg
KG1pc3NlZEljb25zID09IDIpIHsKICAgICAgICAgaWNvblVSTHMuYXBwZW5kKGRlZmF1bHRVUkwo
VG91Y2hQcmVjb21wb3NlZEljb24pKTsKICAgICAgICAgaWNvblVSTHMuYXBwZW5kKGRlZmF1bHRV
UkwoVG91Y2hJY29uKSk7CiAgICAgfQogI2VuZGlmCisKKyAgICAvLyBGaW5hbGx5LCBhcHBlbmQg
YWxsIHJlbWFpbmluZyBpY29ucyBvZiB0aGlzIHR5cGUuCisgICAgaW50IGljb25Db3VudCA9IGlj
b25VUkxzLnNpemUoKTsKKyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTHMoKTsKKyAgICBmb3IgKFZlY3RvcjxJY29uVVJM
Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGFsbEljb25VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYWxs
SWNvblVSTHMuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoIShpdGVyLT5tX2ljb25UeXBl
ICYgaWNvblR5cGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGludCBpOwor
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaWNvbkNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICgqaXRlciA9PSBpY29uVVJMcy5hdChpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoaSA9PSBpY29uQ291bnQpCisgICAgICAgICAgICBpY29uVVJMcy5h
cHBlbmQoKml0ZXIpOworICAgIH0KKwogICAgIHJldHVybiBpY29uVVJMczsKIH0KIApAQCAtOTgs
MTEgKzEzMCw2IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbW1pdFRvRGF0YWJhc2UoY29uc3Qg
S1VSTCYgaWNvbikKICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29u
LnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKSk7CiB9CiAKLXZvaWQgSWNvbkNvbnRyb2xsZXI6OnNldFVSTChjb25zdCBJY29uVVJMJiBp
Y29uVVJMKQotewotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zZXRJ
Y29uVVJMKGljb25VUkwpOwotfQotCiB2b2lkIEljb25Db250cm9sbGVyOjpzdGFydExvYWRlcigp
CiB7CiAgICAgLy8gRklYTUU6IFdlIGtpY2sgb2ZmIHRoZSBpY29uIGxvYWRlciB3aGVuIHRoZSBm
cmFtZSBpcyBkb25lIHJlY2VpdmluZyBpdHMgbWFpbiByZXNvdXJjZS4KQEAgLTIxOCwxMSArMjQ1
LDExIEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29u
TG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAKIGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFw
cGVuZFRvSWNvblVSTHMoSWNvblR5cGUgaWNvblR5cGUsIEljb25VUkxzKiBpY29uVVJMcykKIHsK
LSAgICBJY29uVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUp
OwotICAgIGlmICh1cmwubV9pY29uVVJMLmlzRW1wdHkoKSkKKyAgICBJY29uVVJMIGZhdmljb25V
UkwgPSBpY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAoZmF2aWNvblVSTC5tX2ljb25VUkwuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpY29uVVJMcy0+YXBwZW5kKHVy
bCk7CisgICAgaWNvblVSTHMtPmFwcGVuZChmYXZpY29uVVJMKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMjM5LDE4ICsyNjYsMTkgQEAgSWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVs
dFVSTChJY29uVHlwZSBpY29uVHlwZSkKICAgICB1cmwuc2V0SG9zdChkb2N1bWVudFVSTC5ob3N0
KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0KCkpCiAgICAgICAgIHVybC5zZXRQb3J0
KGRvY3VtZW50VVJMLnBvcnQoKSk7CisKICAgICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgewog
ICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgICAgIHJldHVybiBJY29u
VVJMKHVybCwgRmF2aWNvbik7CisgICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgZW1wdHlTdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSwgRmF2aWNvbiwgdHJ1ZSk7CiAgICAgfQogI2lmIEVOQUJMRShU
T1VDSF9JQ09OX0xPQURJTkcpCiAgICAgaWYgKGljb25UeXBlID09IFRvdWNoUHJlY29tcG9zZWRJ
Y29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3Nl
ZC5wbmciKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaFByZWNvbXBvc2VkSWNv
bik7CisgICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJp
bmcoKSwgVG91Y2hQcmVjb21wb3NlZEljb24sIHRydWUpOwogICAgIH0KICAgICBpZiAoaWNvblR5
cGUgPT0gVG91Y2hJY29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNv
bi5wbmciKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaEljb24pOworICAgICAg
ICByZXR1cm4gSWNvblVSTCh1cmwsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIFRvdWNo
SWNvbiwgdHJ1ZSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIEljb25VUkwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCmluZGV4IDkwYzQxOTcyZGQy
NmZiZTllOTdkYTU5ZWJjNGExNWYzZWFkMmZmMWIuLmIyY2FiYTJhMGE5NWQzZWQwYWQxMGIzM2Iw
ZWRhMmQ4MWY2MWRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRy
b2xsZXIuaApAQCAtNDksOSArNDksNyBAQCBwdWJsaWM6CiAKICAgICBLVVJMIHVybCgpOwogICAg
IEljb25VUkxzIHVybHNGb3JUeXBlcyhpbnQgaWNvblR5cGVzKTsKLQotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaW5saW5lIHRoaXMgZnVuY3Rpb24gaW50byBpdHMgb25lIGNhbGxlciEKLSAgICB2
b2lkIHNldFVSTChjb25zdCBJY29uVVJMJik7CisgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBl
KSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRMb2FkZXIoKTsKICAgICB2b2lkIHN0b3BMb2FkZXIo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107083</attachid>
            <date>2011-09-12 14:22:52 -0700</date>
            <delta_ts>2011-09-16 15:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110912142250.patch</filename>
            <type>text/plain</type>
            <size>19765</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li41OTJlMzg4OTMzODhmMzk0ZTk4ODRiYzU3Yjk5NmM0
N2Y4Y2M5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2Fk
ZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25D
b250cm9sbGVyOjp1cmxzRm9yVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xs
ZXI6OmFwcGVuZFRvSWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6
OmRlZmF1bHRVUkwpOgorCiAyMDExLTA4LTI2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MTWV0YUVsZW1lbnQ6IERvbid0IGNhY2hlICJodHRwLWVxdWl2
IiBhbmQgImNvbnRlbnQiIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
NTBjMGZjZWM0ZDdiMTUyM2Y0YWVmZDdmYWY5N2Y5ZjVjNWI5NzIzLi41NmNmYzAwOGE2ZGJmMTM0
N2JmNmNkNTdjODA1NTkyODRjN2JkZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUs
NyArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
d2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNDM1NCwyNiArNDM1NCwyNSBAQCB1bnNpZ25lZCBGb3JtRWxlbWVu
dEtleUhhc2g6Omhhc2goY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSkKICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQog
Ci1JY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorY29u
c3QgVmVjdG9yPEljb25VUkw+JiBEb2N1bWVudDo6aWNvblVSTHMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07CisgICAgcmV0dXJuIG1faWNv
blVSTHM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQordm9pZCBEb2N1bWVu
dDo6YWRkSWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBzaXplcywgSWNvblR5cGUgaWNvblR5cGUpCiB7CisgICAgaWYgKHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9i
bGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1
YWxseSBob25vciB0aGUgIm1pbWVUeXBlIgotICAgIEljb25VUkwgbmV3VVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBpY29uVHlwZSk7Ci0gICAgaWYgKGljb25VUkwoaWNvblR5cGUpLm1f
aWNvblVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKLSAgICBlbHNl
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7Ci0g
ICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPmljb24oKS0+
c2V0VVJMKG5ld1VSTCk7Ci19CisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIHNpemVzLCBtaW1lVHlwZSwgaWNvblR5cGUpOworICAgIG1faWNvblVSTHMuYXBw
ZW5kKG5ld1VSTCk7CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYg
aWNvblVSTCkKLXsKLSAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwubV9pY29uVHlw
ZSldID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKSB7CisgICAgICBJY29u
VVJMIGZhdkljb25VUkwgPSBmLT5sb2FkZXIoKS0+aWNvbigpLT5pY29uVVJMKGljb25UeXBlKTsK
KyAgICAgIGlmIChmYXZJY29uVVJMID09IG5ld1VSTCkKKyAgICAgICAgICBmLT5sb2FkZXIoKS0+
ZGlkQ2hhbmdlSWNvbnMoaWNvblR5cGUpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVudDo6cmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdjMDc1MGRhZjgwM2Jj
MmY1NWUzYzY0YTNiNDVlNC4uYzJkZjE3YjFlNjY0YWY4Y2QxYTExNzkyN2I2MmRkOTVkMDU1YWE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8p
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTE2LDkgKzkxNyw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1f
aGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIEljb25VUkwgaWNv
blVSTChJY29uVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNv
blVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxJY29uVVJMPiYgaWNvblVSTHMoKSBjb25zdDsKKyAg
ICB2b2lkIGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgSWNvblR5cGUpOwogCiAgICAgdm9pZCBzZXRVc2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgICBib29sIHVzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdlQ2FjaGU7
Ci0gICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworICAgIFZlY3RvcjxJY29uVVJM
PiBtX2ljb25VUkxzOwogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVD
YWxsYmFja0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCmluZGV4IDhhZWZjMmFmOTRkYTI3
ZTQ1ZWFlZTJlNmJhODgxZjU1OTFmY2E3NDAuLjAxMDc2NjM2YzliYzA0Y2ZjMzY3MTlhYTEzYWJm
ZGQ3NTFkNDNjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKQEAgLTU0LDUgKzU0LDIxIEBAIHNp
emVfdCB0b0ljb25JbmRleChJY29uVHlwZSB0eXBlKQogICAgIHJldHVybiBpbmRleDsKIH0KIAor
SWNvblVSTCBJY29uVVJMOjpEZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBl
IHR5cGUpCit7CisgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpLCB0eXBlKTsKKyAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgSWNvblVSTCYgbGhzLCBj
b25zdCBJY29uVVJMJiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tX2ljb25UeXBlID09IHJocy5t
X2ljb25UeXBlCisgICAgICAgICAgICYmIGxocy5tX2lzRGVmYXVsdEljb24gPT0gcmhzLm1faXNE
ZWZhdWx0SWNvbgorICAgICAgICAgICAmJiBsaHMubV9pY29uVVJMID09IHJocy5tX2ljb25VUkwK
KyAgICAgICAgICAgJiYgbGhzLm1fc2l6ZXMgPT0gcmhzLm1fc2l6ZXMKKyAgICAgICAgICAgJiYg
bGhzLm1fbWltZVR5cGUgPT0gcmhzLm1fbWltZVR5cGU7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcyNDljOWRiOWI5ODc0YWIzNS4uN2Y3NmUw
OGIzNGE0YmEwNzgzMjFhN2IxYmQ2NzQxMjc4ZTc2YzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCkBA
IC00NSwyNSArNDUsMzUgQEAgZW51bSBJY29uVHlwZSB7CiAgICAgSW52YWxpZEljb24gPSAwLAog
ICAgIEZhdmljb24gPSAxLAogICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKLSAgICBUb3VjaFByZWNv
bXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyLAog
fTsKIAogc3RydWN0IEljb25VUkwgewogICAgIEljb25UeXBlIG1faWNvblR5cGU7CisgICAgU3Ry
aW5nIG1fc2l6ZXM7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgS1VSTCBtX2ljb25VUkw7
CisgICAgYm9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKICAgICAgICAgOiBt
X2ljb25UeXBlKEludmFsaWRJY29uKQogICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJMKGNvbnN0
IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgdHlw
ZSkKICAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCisgICAgICAgICwgbV9zaXplcyhzaXplcykK
KyAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICAgICAsIG1faWNvblVSTCh1cmwp
CisgICAgICAgICwgbV9pc0RlZmF1bHRJY29uKGZhbHNlKQogICAgIHsKICAgICB9CisgICAgCisg
ICAgc3RhdGljIEljb25VUkwgRGVmYXVsdEljb25VUkwoY29uc3QgS1VSTCYsIEljb25UeXBlKTsK
IH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBJY29uVVJMJiwgY29uc3QgSWNvblVSTCYpOwor
CiB0eXBlZGVmIFZlY3RvcjxJY29uVVJMLCBJQ09OX0NPVU5UPiBJY29uVVJMczsKIAogLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHR5cGUsIDAgaXMgcmV0dXJuZWQgaWYgdGhlIHR5
cGUgaXMgaW52YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRl
eCA0YmM2ZTkzM2VjZDBkZjNiY2VjMzliMWNjOGNhM2Y5OGY5Nzg4OWQyLi45MDk1ZjViNGI2Y2U2
ZmY0YjRlZjQ0NGViODNkZTBmZjc5NTA5NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKIAotICAgIGlmICgh
bV9saW5rTG9hZGVyLmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB0eXBlLCBtX3VybCwgZG9jdW1l
bnQoKSkpCisgICAgaWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5
cGUsIG1fc2l6ZXMtPnRvU3RyaW5nKCksIG1fdXJsLCBkb2N1bWVudCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYm9vbCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgPSBkb2N1bWVudCgp
LT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKS0+c2V0dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hlZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDY4NGZiNjZjZDA0
NWNkYzE2YTI1NzU1NjkwMzI4YzhlNTEwZGM4MGMuLmJlOTExMmVkODBkNzMwZDNiM2FkZjg4MzBh
ZTJlM2FhNTFlZDkyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4MiwyMiArNjgzLDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiAgICAgfQogfQogCi1JY29uVVJMIERv
Y3VtZW50TG9hZGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAotewotICAgIHJl
dHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07Ci19Ci0KLXZvaWQgRG9jdW1l
bnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgdXJsKQotewotICAgIGlmICh1cmwu
bV9pY29uVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGljb25VUkwo
dXJsLm1faWNvblR5cGUpLm1faWNvblVSTCAhPSB1cmwubV9pY29uVVJMKSB7Ci0gICAgICAgIG1f
aWNvblVSTHNbdG9JY29uSW5kZXgodXJsLm1faWNvblR5cGUpXSA9IHVybDsKLSAgICAgICAgZnJh
bWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcywgdXJsLm1faWNvblR5cGUpOwotICAgIH0K
LX0KLQogS1VSTCBEb2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CiB7CiAgICAg
Ly8gUmV0dXJuIHRoZSBVUkwgdG8gYmUgdXNlZCBmb3IgaGlzdG9yeSBhbmQgQi9GIGxpc3QuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDU2ODlmYTIxNWVmNWIyZjMw
ZjdkYmMyZGZmNzU5MTVhZDg2MWQ3NTIuLmM3ZTc4YzBlNzQwYzU4YTQ5ZGUwMDUyZTYwNTdiNmY4
ODA4MThjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsNyArMzMsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgot
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAt
MTI4LDcgKzEyOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xvYWRp
bmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0
ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
Jik7Ci0gICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVF
bmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc1LDcgKzE3NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsK
ICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VUaXRsZTsgfQotICAgICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0
OwogCiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVy
bEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMxNCw3ICszMTIsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCiAg
ICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIEljb25VUkwg
bV9pY29uVVJMc1tJQ09OX0NPVU5UXTsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29k
aW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0ZjBmMWYzNTZl
YTdhMjg3YWJhY2RhZWY0ODY4NDNjZjk1Mzg3ODZlLi40ZTIxNzRmM2M0MTg0MjFjYjE5N2MwOTE5
MjBiNWZhYmNlNTU5ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAg
LTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2Vy
LmNvbT4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBLcmlzIEpvcmRhbiA8
a3Jpc2pvcmRhbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIyNCwxMCArMzIyNSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFu
Z2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBJY29uVHlwZSB0eXBlKQordm9pZCBGcmFt
ZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobG9hZGVy
ID09IG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5n
ZUljb25zKHR5cGUpOworICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKHR5cGUp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBkNmEyMTE5OTY2ZGVkZWE2ZjA4ZmQxMDBjNmU2
YTlkZWY0NjYwYmIyLi43MDQ1NmQ2ZTg0MWUzZGEyMDZlYjRhZjA5MDQ1YzYxMjk1YmNlZTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjksNyArMTcw
LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50
TG9hZGVyKiwgSWNvblR5cGUpOworICAgIHZvaWQgZGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpOwog
CiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAKaW5kZXggYjkyNDA4ODA3MWQ4NThmNDEzMTZjM2RiY2M2NGE3ZTMwNDQw
MTgzNC4uNTFkM2Q4ZjdkNmFiY2NhOGM2NDJiODVkMDhlZDkxOWJlZjhlZGVkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtODUsMTMgKzg1LDEzIEBAIHZvaWQgTGlua0xv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogfQogCiBib29s
IExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBL
VVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IEtVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKICAgICAvLyBXZSdsbCByZWNvcmQgdGhpcyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlm
IHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBsZXZlbCBmcmFtZXMKICAgICBpZiAocmVsQXR0
cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZEljb24gJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhy
ZWYuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRMaW5rKCkp
IAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkb2N1bWVudC0+c2V0SWNvblVS
TChocmVmLnN0cmluZygpLCB0eXBlLCByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CisgICAgICAg
IGRvY3VtZW50LT5hZGRJY29uVVJMKGhyZWYuc3RyaW5nKCksIHR5cGUsIHNpemVzLCByZWxBdHRy
aWJ1dGUubV9pY29uVHlwZSk7CiAgICAgfQogCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2gpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCmluZGV4IDZjNDQ4ZDhmNDQy
YjVlODU3NTRiMmRiNGI4OGU5YTYyNmVkOGZlOTAuLjFmYmMxOGQ3Yzc2ZWI2YTZlN2E0ZWZkNzE5
MTExYjYzOTYwZTc5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaApAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogICAgIAotICAgIGJv
b2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgS1VSTCYsIERvY3VtZW50Kik7CisgICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVs
QXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25z
dCBLVVJMJiwgRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxpbmtMb2FkVGltZXJG
aXJlZChUaW1lcjxMaW5rTG9hZGVyPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDhhM2E4NzdjNmQwMDhjZGM5YWY1OWQ3OGNhY2UzMDE2
YjQ1YmEwODMuLjcwZTdlNDhlNTRmZGNjYTZlMmM4M2M1YTc4OTNiODMxZjU1NjcyMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTUsNiAr
NSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBLcmlzIEpvcmRhbiA8a3Jpc2pv
cmRhbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMzAg
KzY1LDYxIEBAIEtVUkwgSWNvbkNvbnRyb2xsZXI6OnVybCgpCiAgICAgcmV0dXJuIGljb25VUkxz
LmlzRW1wdHkoKSA/IEtVUkwoKSA6IGljb25VUkxzWzBdLm1faWNvblVSTDsKIH0KIAorSWNvblVS
TCBJY29uQ29udHJvbGxlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKK3sKKyAg
ICBJY29uVVJMIHJlc3VsdDsKKyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGljb25VUkxzID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTHMoKTsKKyAgICBWZWN0b3I8SWNvblVSTD46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIoaWNvblVSTHMuYmVnaW4oKSk7CisgICAgZm9yICg7IGl0ZXIgIT0g
aWNvblVSTHMuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoaXRlci0+bV9pY29uVHlwZSA9
PSBpY29uVHlwZSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5tX2ljb25VUkwuaXNFbXB0eSgp
IHx8ICFpdGVyLT5tX21pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSAqaXRlcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIElj
b25VUkxzIEljb25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlcykKIHsKICAg
ICBJY29uVVJMcyBpY29uVVJMczsKICAgICBpZiAobV9mcmFtZS0+dHJlZSgpICYmIG1fZnJhbWUt
PnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBpY29uVVJMczsKLQorICAgICAgICAK
ICAgICBpZiAoaWNvblR5cGVzICYgRmF2aWNvbiAmJiAhYXBwZW5kVG9JY29uVVJMcyhGYXZpY29u
LCAmaWNvblVSTHMpKQogICAgICAgICBpY29uVVJMcy5hcHBlbmQoZGVmYXVsdFVSTChGYXZpY29u
KSk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQotICAgIGJvb2wgaGF2ZVByZWNv
bXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGludCBtaXNzZWRJY29ucyA9IDA7CiAgICAgaWYgKGlj
b25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKQotICAgICAgICBoYXZlUHJlY29tcG9zZWRJ
Y29uID0gYXBwZW5kVG9JY29uVVJMcyhUb3VjaFByZWNvbXBvc2VkSWNvbiwgJmljb25VUkxzKTsK
KyAgICAgICAgbWlzc2VkSWNvbnMgKz0gYXBwZW5kVG9JY29uVVJMcyhUb3VjaFByZWNvbXBvc2Vk
SWNvbiwgJmljb25VUkxzKSA/IDA6MTsKIAotICAgIGJvb2wgaGF2ZVRvdWNoSWNvbiA9IGZhbHNl
OwogICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaEljb24pCi0gICAgICAgIGhhdmVUb3VjaEljb24g
PSBhcHBlbmRUb0ljb25VUkxzKFRvdWNoSWNvbiwgJmljb25VUkxzKTsKKyAgICAgIG1pc3NlZElj
b25zICs9IGFwcGVuZFRvSWNvblVSTHMoVG91Y2hJY29uLCAmaWNvblVSTHMpID8gMDoxOwogCiAg
ICAgLy8gT25seSByZXR1cm4gdGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3
ZXJlIHJlcXVpcmVkIGFuZCBuZWl0aGVyIHdhcyBnb3R0ZW4uCi0gICAgaWYgKGljb25UeXBlcyAm
IFRvdWNoUHJlY29tcG9zZWRJY29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNvbiAmJiAhaGF2ZVBy
ZWNvbXBvc2VkSWNvbiAmJiAhaGF2ZVRvdWNoSWNvbikgeworICAgIGlmIChtaXNzZWRJY29ucyA9
PSAyKSB7CiAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZhdWx0VVJMKFRvdWNoUHJlY29tcG9z
ZWRJY29uKSk7CiAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZhdWx0VVJMKFRvdWNoSWNvbikp
OwogICAgIH0KICNlbmRpZgorCisgICAgLy8gRmluYWxseSwgYXBwZW5kIGFsbCByZW1haW5pbmcg
aWNvbnMgb2YgdGhpcyB0eXBlLgorICAgIGludCBpY29uQ291bnQgPSBpY29uVVJMcy5zaXplKCk7
CisgICAgY29uc3QgVmVjdG9yPEljb25VUkw+JiBhbGxJY29uVVJMcyA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmljb25VUkxzKCk7CisgICAgZm9yIChWZWN0b3I8SWNvblVSTD46OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBhbGxJY29uVVJMcy5iZWdpbigpOyBpdGVyICE9IGFsbEljb25VUkxzLmVuZCgp
OyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+bV9pY29uVHlwZSAmIGljb25UeXBlcykp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGljb25Db3VudDsgKytpKSB7CisgICAgICAgICAgICBpZiAoKml0ZXIgPT0gaWNv
blVSTHMuYXQoaSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGkgPT0gaWNvbkNvdW50KQorICAgICAgICAgICAgaWNvblVSTHMuYXBwZW5kKCppdGVyKTsK
KyAgICB9CisKICAgICByZXR1cm4gaWNvblVSTHM7CiB9CiAKQEAgLTk4LDExICsxMzAsNiBAQCB2
b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pCiAg
ICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9m
cmFtZS0+bG9hZGVyKCktPmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12
b2lkIEljb25Db250cm9sbGVyOjpzZXRVUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKLXsKLSAg
ICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJM
KTsKLX0KLQogdm9pZCBJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIoKQogewogICAgIC8vIEZJ
WE1FOiBXZSBraWNrIG9mZiB0aGUgaWNvbiBsb2FkZXIgd2hlbiB0aGUgZnJhbWUgaXMgZG9uZSBy
ZWNlaXZpbmcgaXRzIG1haW4gcmVzb3VyY2UuCkBAIC0yMTgsMTEgKzI0NSwxMSBAQCB2b2lkIElj
b25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxvYWREZWNpc2lvbiBp
Y29uTG9hZERlY2lzaW9uKQogCiBib29sIEljb25Db250cm9sbGVyOjphcHBlbmRUb0ljb25VUkxz
KEljb25UeXBlIGljb25UeXBlLCBJY29uVVJMcyogaWNvblVSTHMpCiB7Ci0gICAgSWNvblVSTCB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKLSAgICBpZiAodXJs
Lm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAgSWNvblVSTCBmYXZpY29uVVJMID0gaWNvblVSTChp
Y29uVHlwZSk7CisgICAgaWYgKGZhdmljb25VUkwubV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWNvblVSTHMtPmFwcGVuZCh1cmwpOworICAgIGljb25V
UkxzLT5hcHBlbmQoZmF2aWNvblVSTCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIzOSwx
OCArMjY2LDE5IEBAIEljb25VUkwgSWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRVUkwoSWNvblR5cGUg
aWNvblR5cGUpCiAgICAgdXJsLnNldEhvc3QoZG9jdW1lbnRVUkwuaG9zdCgpKTsKICAgICBpZiAo
ZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQogICAgICAgICB1cmwuc2V0UG9ydChkb2N1bWVudFVSTC5w
b3J0KCkpOworCiAgICAgaWYgKGljb25UeXBlID09IEZhdmljb24pIHsKICAgICAgICAgdXJsLnNl
dFBhdGgoIi9mYXZpY29uLmljbyIpOwotICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIEZhdmlj
b24pOworICAgICAgICByZXR1cm4gSWNvblVSTDo6RGVmYXVsdEljb25VUkwodXJsLCBGYXZpY29u
KTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKICAgICBpZiAoaWNvblR5
cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKICAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBs
ZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOwotICAgICAgICByZXR1cm4gSWNvblVSTCh1
cmwsIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkw6OkRlZmF1
bHRJY29uVVJMKHVybCwgVG91Y2hQcmVjb21wb3NlZEljb24pOwogICAgIH0KICAgICBpZiAoaWNv
blR5cGUgPT0gVG91Y2hJY29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gt
aWNvbi5wbmciKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaEljb24pOworICAg
ICAgICByZXR1cm4gSWNvblVSTDo6RGVmYXVsdEljb25VUkwodXJsLCBUb3VjaEljb24pOwogICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBJY29uVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuaAppbmRleCA5MGM0MTk3MmRkMjZmYmU5ZTk3ZGE1OWViYzRh
MTVmM2VhZDJmZjFiLi5iMmNhYmEyYTBhOTVkM2VkMGFkMTBiMzNiMGVkYTJkODFmNjFkYzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgKQEAgLTQ5LDkg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgS1VSTCB1cmwoKTsKICAgICBJY29uVVJMcyB1cmxzRm9y
VHlwZXMoaW50IGljb25UeXBlcyk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGlubGluZSB0
aGlzIGZ1bmN0aW9uIGludG8gaXRzIG9uZSBjYWxsZXIhCi0gICAgdm9pZCBzZXRVUkwoY29uc3Qg
SWNvblVSTCYpOworICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7CiAKICAgICB2
b2lkIHN0YXJ0TG9hZGVyKCk7CiAgICAgdm9pZCBzdG9wTG9hZGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107736</attachid>
            <date>2011-09-16 15:42:11 -0700</date>
            <delta_ts>2011-09-20 16:10:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110916154210.patch</filename>
            <type>text/plain</type>
            <size>19809</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li41OTJlMzg4OTMzODhmMzk0ZTk4ODRiYzU3Yjk5NmM0
N2Y4Y2M5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2Fk
ZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25D
b250cm9sbGVyOjp1cmxzRm9yVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xs
ZXI6OmFwcGVuZFRvSWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6
OmRlZmF1bHRVUkwpOgorCiAyMDExLTA4LTI2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MTWV0YUVsZW1lbnQ6IERvbid0IGNhY2hlICJodHRwLWVxdWl2
IiBhbmQgImNvbnRlbnQiIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
NTBjMGZjZWM0ZDdiMTUyM2Y0YWVmZDdmYWY5N2Y5ZjVjNWI5NzIzLi41YTg4NTFkZjE1NjU2MDMx
NGZjZTdjZjgyMjYyMzEzYTViNjRiOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUs
NyArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
d2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNDM1NCwyNiArNDM1NCwyNSBAQCB1bnNpZ25lZCBGb3JtRWxlbWVu
dEtleUhhc2g6Omhhc2goY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSkKICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQog
Ci1JY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorY29u
c3QgVmVjdG9yPEljb25VUkw+JiBEb2N1bWVudDo6aWNvblVSTHMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07CisgICAgcmV0dXJuIG1faWNv
blVSTHM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQordm9pZCBEb2N1bWVu
dDo6YWRkSWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBzaXplcywgSWNvblR5cGUgaWNvblR5cGUpCiB7CisgICAgaWYgKHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9i
bGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1
YWxseSBob25vciB0aGUgIm1pbWVUeXBlIgotICAgIEljb25VUkwgbmV3VVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBpY29uVHlwZSk7Ci0gICAgaWYgKGljb25VUkwoaWNvblR5cGUpLm1f
aWNvblVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKLSAgICBlbHNl
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7Ci0g
ICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPmljb24oKS0+
c2V0VVJMKG5ld1VSTCk7Ci19CisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIHNpemVzLCBtaW1lVHlwZSwgaWNvblR5cGUpOworICAgIG1faWNvblVSTHMuYXBw
ZW5kKG5ld1VSTCk7CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYg
aWNvblVSTCkKLXsKLSAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwubV9pY29uVHlw
ZSldID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKSB7CisgICAgICAgIElj
b25VUkwgZmF2SWNvblVSTCA9IGYtPmxvYWRlcigpLT5pY29uKCktPmljb25VUkwoaWNvblR5cGUp
OworICAgICAgICBpZiAoZmF2SWNvblVSTCA9PSBuZXdVUkwpCisgICAgICAgICAgICBmLT5sb2Fk
ZXIoKS0+ZGlkQ2hhbmdlSWNvbnMoaWNvblR5cGUpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVu
dDo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdjMDc1MGRh
ZjgwM2JjMmY1NWUzYzY0YTNiNDVlNC4uYzJkZjE3YjFlNjY0YWY4Y2QxYTExNzkyN2I2MmRkOTVk
MDU1YWE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTE2LDkgKzkxNyw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUo
KSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIEljb25V
UkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKLSAgICB2b2lkIHNldEljb25VUkwoY29u
c3QgSWNvblVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxJY29uVVJMPiYgaWNvblVSTHMoKSBjb25z
dDsKKyAgICB2b2lkIGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgSWNvblR5cGUpOwogCiAgICAgdm9pZCBzZXRV
c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgICBib29sIHVzZVNlY3Vy
ZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdl
Q2FjaGU7Ci0gICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworICAgIFZlY3RvcjxJ
Y29uVVJMPiBtX2ljb25VUkxzOwogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFW
b2x1bWVDYWxsYmFja0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCmluZGV4IDhhZWZjMmFm
OTRkYTI3ZTQ1ZWFlZTJlNmJhODgxZjU1OTFmY2E3NDAuLmQxMjFlYTM2NzRmMWMyZGE5MTIyMDVh
Y2UyOTE4MmQ2MzQ4MDAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKQEAgLTU0LDUgKzU0LDIx
IEBAIHNpemVfdCB0b0ljb25JbmRleChJY29uVHlwZSB0eXBlKQogICAgIHJldHVybiBpbmRleDsK
IH0KIAorSWNvblVSTCBJY29uVVJMOjpkZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiB1cmwsIElj
b25UeXBlIHR5cGUpCit7CisgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBl
bXB0eVN0cmluZygpLCB0eXBlKTsKKyAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgSWNvblVSTCYg
bGhzLCBjb25zdCBJY29uVVJMJiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tX2ljb25UeXBlID09
IHJocy5tX2ljb25UeXBlCisgICAgICAgICAgICYmIGxocy5tX2lzRGVmYXVsdEljb24gPT0gcmhz
Lm1faXNEZWZhdWx0SWNvbgorICAgICAgICAgICAmJiBsaHMubV9pY29uVVJMID09IHJocy5tX2lj
b25VUkwKKyAgICAgICAgICAgJiYgbGhzLm1fc2l6ZXMgPT0gcmhzLm1fc2l6ZXMKKyAgICAgICAg
ICAgJiYgbGhzLm1fbWltZVR5cGUgPT0gcmhzLm1fbWltZVR5cGU7Cit9CisKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
Y29uVVJMLmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcyNDljOWRiOWI5ODc0YWIzNS4u
MTEwNDc5NWQ5Yjc3YTU0ZDI1MWQ0NzFhNTAwNmRmMzdkNzVjMTU5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVS
TC5oCkBAIC00NSwyNSArNDUsMzYgQEAgZW51bSBJY29uVHlwZSB7CiAgICAgSW52YWxpZEljb24g
PSAwLAogICAgIEZhdmljb24gPSAxLAogICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKLSAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8
PCAyLAogfTsKIAogc3RydWN0IEljb25VUkwgewogICAgIEljb25UeXBlIG1faWNvblR5cGU7Cisg
ICAgU3RyaW5nIG1fc2l6ZXM7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgS1VSTCBtX2lj
b25VUkw7CisgICAgYm9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKICAgICAg
ICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgICAgICAsIG1faXNEZWZhdWx0SWNvbihm
YWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25U
eXBlIHR5cGUpCisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2l6
ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV9p
Y29uVHlwZSh0eXBlKQorICAgICAgICAsIG1fc2l6ZXMoc2l6ZXMpCisgICAgICAgICwgbV9taW1l
VHlwZShtaW1lVHlwZSkKICAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgICAgICAsIG1faXNE
ZWZhdWx0SWNvbihmYWxzZSkKICAgICB7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyBJY29uVVJM
IGRlZmF1bHRJY29uVVJMKGNvbnN0IEtVUkwmLCBJY29uVHlwZSk7CiB9OwogCitib29sIG9wZXJh
dG9yPT0oY29uc3QgSWNvblVSTCYsIGNvbnN0IEljb25VUkwmKTsKKwogdHlwZWRlZiBWZWN0b3I8
SWNvblVSTCwgSUNPTl9DT1VOVD4gSWNvblVSTHM7CiAKIC8vIFJldHVybnMgdGhlIGluZGV4IG9m
IHRoZSBnaXZlbiB0eXBlLCAwIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYz
YmNlYzM5YjFjYzhjYTNmOThmOTc4ODlkMi4uOTA5NWY1YjRiNmNlNmZmNGI0ZWY0NDRlYjgzZGUw
ZmY3OTUwOTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAt
MTc5LDcgKzE3OSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIFN0
cmluZyB0eXBlID0gbV90eXBlLmxvd2VyKCk7CiAKLSAgICBpZiAoIW1fbGlua0xvYWRlci5sb2Fk
TGluayhtX3JlbEF0dHJpYnV0ZSwgdHlwZSwgbV91cmwsIGRvY3VtZW50KCkpKQorICAgIGlmICgh
bV9saW5rTG9hZGVyLmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB0eXBlLCBtX3NpemVzLT50b1N0
cmluZygpLCBtX3VybCwgZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
YWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3Vt
ZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdz
KCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA2ODRmYjY2Y2QwNDVjZGMxNmEyNTc1NTY5MDMy
OGM4ZTUxMGRjODBjLi5iZTkxMTJlZDgwZDczMGQzYjNhZGY4ODMwYWUyZTNhYTUxZWQ5MjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02ODIsMjIg
KzY4Myw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlKQogICAgIH0KIH0KIAotSWNvblVSTCBEb2N1bWVudExvYWRlcjo6aWNv
blVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pY29uVVJMc1t0
b0ljb25JbmRleChpY29uVHlwZSldOwotfQotCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29u
VVJMKGNvbnN0IEljb25VUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpY29uVVJMKHVybC5tX2ljb25UeXBlKS5t
X2ljb25VUkwgIT0gdXJsLm1faWNvblVSTCkgewotICAgICAgICBtX2ljb25VUkxzW3RvSWNvbklu
ZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1cmw7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENo
YW5nZUljb25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKLSAgICB9Ci19Ci0KIEtVUkwgRG9jdW1l
bnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJM
IHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCA1Njg5ZmEyMTVlZjViMmYzMGY3ZGJjMmRmZjc1OTE1YWQ4
NjFkNzUyLi5jN2U3OGMwZTc0MGM1OGE0OWRlMDA1MmU2MDU3YjZmODgwODE4YzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMzLDYg
QEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdy
aXRlci5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKLSNpbmNsdWRlICJJY29uVVJM
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJy
b3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyOCw3ICsxMjgsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJy
aWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTE3NSw3ICsxNzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0K
LSAgICAgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgICAgICBLVVJM
IHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVj
dHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0zMTQsNyArMzEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAgICBTdHJpbmdXaXRo
RGlyZWN0aW9uIG1fcGFnZVRpdGxlOwotICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9D
T1VOVF07CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGYwZjFmMzU2ZWE3YTI4N2FiYWNkYWVmNDg2
ODQzY2Y5NTM4Nzg2ZS4uNGUyMTc0ZjNjNDE4NDIxY2IxOTdjMDkxOTIwYjVmYWJjZTU1OWQ4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgS3JpcyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyMjQsMTAgKzMyMjUsOSBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5n
ZUljb25zKEljb25UeXBlIHR5cGUpCiB7Ci0gICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9h
ZGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKKyAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKaW5kZXggZDZhMjExOTk2NmRlZGVhNmYwOGZkMTAwYzZlNmE5ZGVmNDY2MGJiMi4uNzA0
NTZkNmU4NDFlM2RhMjA2ZWI0YWYwOTA0NWM2MTI5NWJjZWU3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY5LDcgKzE3MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBl
KTsKKyAgICB2b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5
cGUgbG9hZFR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmlu
ZGV4IGI5MjQwODgwNzFkODU4ZjQxMzE2YzNkYmNjNjRhN2UzMDQ0MDE4MzQuLjUxZDNkOGY3ZDZh
YmNjYThjNjQyYjg1ZDA4ZWQ5MTliZWY4ZWRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5jcHAKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2Fk
TGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNp
emVzLCBjb25zdCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgLy8gV2Un
bGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVz
ZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
ICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkTGluaygpKSAKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgZG9jdW1lbnQtPnNldEljb25VUkwoaHJlZi5zdHJpbmcoKSwg
dHlwZSwgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOworICAgICAgICBkb2N1bWVudC0+YWRkSWNv
blVSTChocmVmLnN0cmluZygpLCB0eXBlLCBzaXplcywgcmVsQXR0cmlidXRlLm1faWNvblR5cGUp
OwogICAgIH0KIAogICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCA2YzQ0OGQ4ZjQ0MmI1ZTg1NzU0YjJkYjRiODhl
OWE2MjZlZDhmZTkwLi4xZmJjMThkN2M3NmViNmE2ZTdhNGVmZDcxOTExMWI2Mzk2MGU3OWRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAKLSAgICBib29sIGxvYWRMaW5rKGNvbnN0
IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEtVUkwmLCBEb2N1
bWVudCopOworICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50
Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xv
YWRlcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNw
cAppbmRleCA4YTNhODc3YzZkMDA4Y2RjOWFmNTlkNzhjYWNlMzAxNmI0NWJhMDgzLi4yZTU2Mzhj
YjA0OTFmOWUyZDMxNTUwMWNhNGU0MzAxZWQ0ZDE0YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgS3JpcyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwuY29tPgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDMwICs2NSw2MSBAQCBLVVJMIElj
b25Db250cm9sbGVyOjp1cmwoKQogICAgIHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJM
KCkgOiBpY29uVVJMc1swXS5tX2ljb25VUkw7CiB9CiAKK0ljb25VUkwgSWNvbkNvbnRyb2xsZXI6
Omljb25VUkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0Cit7CisgICAgSWNvblVSTCByZXN1bHQ7
CisgICAgY29uc3QgVmVjdG9yPEljb25VUkw+JiBpY29uVVJMcyA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmljb25VUkxzKCk7CisgICAgVmVjdG9yPEljb25VUkw+Ojpjb25zdF9pdGVyYXRvciBpdGVy
KGljb25VUkxzLmJlZ2luKCkpOworICAgIGZvciAoOyBpdGVyICE9IGljb25VUkxzLmVuZCgpOyAr
K2l0ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXItPm1faWNvblR5cGUgPT0gaWNvblR5cGUpIHsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQubV9pY29uVVJMLmlzRW1wdHkoKSB8fCAhaXRlci0+bV9taW1l
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKml0ZXI7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBJY29uVVJMcyBJY29uQ29udHJv
bGxlcjo6dXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXMpCiB7CiAgICAgSWNvblVSTHMgaWNvblVS
THM7CiAgICAgaWYgKG1fZnJhbWUtPnRyZWUoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgp
KQogICAgICAgICByZXR1cm4gaWNvblVSTHM7Ci0KKyAgICAgICAgCiAgICAgaWYgKGljb25UeXBl
cyAmIEZhdmljb24gJiYgIWFwcGVuZFRvSWNvblVSTHMoRmF2aWNvbiwgJmljb25VUkxzKSkKICAg
ICAgICAgaWNvblVSTHMuYXBwZW5kKGRlZmF1bHRVUkwoRmF2aWNvbikpOwogCiAjaWYgRU5BQkxF
KFRPVUNIX0lDT05fTE9BRElORykKLSAgICBib29sIGhhdmVQcmVjb21wb3NlZEljb24gPSBmYWxz
ZTsKKyAgICBpbnQgbWlzc2VkSWNvbnMgPSAwOwogICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFBy
ZWNvbXBvc2VkSWNvbikKLSAgICAgICAgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGFwcGVuZFRvSWNv
blVSTHMoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7CisgICAgICAgIG1pc3NlZElj
b25zICs9IGFwcGVuZFRvSWNvblVSTHMoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcykg
PyAwOjE7CiAKLSAgICBib29sIGhhdmVUb3VjaEljb24gPSBmYWxzZTsKICAgICBpZiAoaWNvblR5
cGVzICYgVG91Y2hJY29uKQotICAgICAgICBoYXZlVG91Y2hJY29uID0gYXBwZW5kVG9JY29uVVJM
cyhUb3VjaEljb24sICZpY29uVVJMcyk7CisgICAgICBtaXNzZWRJY29ucyArPSBhcHBlbmRUb0lj
b25VUkxzKFRvdWNoSWNvbiwgJmljb25VUkxzKSA/IDA6MTsKIAogICAgIC8vIE9ubHkgcmV0dXJu
IHRoZSBkZWZhdWx0IHRvdWNoIGljb25zIHdoZW4gdGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQg
bmVpdGhlciB3YXMgZ290dGVuLgotICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2Vk
SWNvbiAmJiBpY29uVHlwZXMgJiBUb3VjaEljb24gJiYgIWhhdmVQcmVjb21wb3NlZEljb24gJiYg
IWhhdmVUb3VjaEljb24pIHsKKyAgICBpZiAobWlzc2VkSWNvbnMgPT0gMikgewogICAgICAgICBp
Y29uVVJMcy5hcHBlbmQoZGVmYXVsdFVSTChUb3VjaFByZWNvbXBvc2VkSWNvbikpOwogICAgICAg
ICBpY29uVVJMcy5hcHBlbmQoZGVmYXVsdFVSTChUb3VjaEljb24pKTsKICAgICB9CiAjZW5kaWYK
KworICAgIC8vIEZpbmFsbHksIGFwcGVuZCBhbGwgcmVtYWluaW5nIGljb25zIG9mIHRoaXMgdHlw
ZS4KKyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aWNvblVSTHMoKTsKKyAgICBmb3IgKFZlY3RvcjxJY29uVVJMPjo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGFsbEljb25VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYWxsSWNvblVSTHMuZW5k
KCk7ICsraXRlcikgeworICAgICAgICBpZiAoIShpdGVyLT5tX2ljb25UeXBlICYgaWNvblR5cGVz
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGludCBpOworICAgICAgICBpbnQg
aWNvbkNvdW50ID0gaWNvblVSTHMuc2l6ZSgpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaWNv
bkNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmICgqaXRlciA9PSBpY29uVVJMcy5hdChpKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA9PSBpY29u
Q291bnQpCisgICAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoKml0ZXIpOworICAgIH0KKwogICAg
IHJldHVybiBpY29uVVJMczsKIH0KIApAQCAtOTgsMTEgKzEzMCw2IEBAIHZvaWQgSWNvbkNvbnRy
b2xsZXI6OmNvbW1pdFRvRGF0YWJhc2UoY29uc3QgS1VSTCYgaWNvbikKICAgICBpY29uRGF0YWJh
c2UoKS5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIo
KS0+aW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgSWNvbkNvbnRy
b2xsZXI6OnNldFVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQotewotICAgIG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOwotfQotCiB2b2lk
IEljb25Db250cm9sbGVyOjpzdGFydExvYWRlcigpCiB7CiAgICAgLy8gRklYTUU6IFdlIGtpY2sg
b2ZmIHRoZSBpY29uIGxvYWRlciB3aGVuIHRoZSBmcmFtZSBpcyBkb25lIHJlY2VpdmluZyBpdHMg
bWFpbiByZXNvdXJjZS4KQEAgLTIxOCwxMSArMjQ1LDExIEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6
OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNp
b24pCiAKIGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFwcGVuZFRvSWNvblVSTHMoSWNvblR5cGUgaWNv
blR5cGUsIEljb25VUkxzKiBpY29uVVJMcykKIHsKLSAgICBJY29uVVJMIHVybCA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUpOwotICAgIGlmICh1cmwubV9pY29uVVJMLmlz
RW1wdHkoKSkKKyAgICBJY29uVVJMIGZhdmljb25VUkwgPSBpY29uVVJMKGljb25UeXBlKTsKKyAg
ICBpZiAoZmF2aWNvblVSTC5tX2ljb25VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpY29uVVJMcy0+YXBwZW5kKHVybCk7CisgICAgaWNvblVSTHMtPmFwcGVuZChm
YXZpY29uVVJMKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjM5LDE4ICsyNjYsMTkgQEAg
SWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkKICAg
ICB1cmwuc2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5o
YXNQb3J0KCkpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7CisKICAg
ICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmlj
b24uaWNvIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgRmF2aWNvbik7CisgICAgICAg
IHJldHVybiBJY29uVVJMOjpkZWZhdWx0SWNvblVSTCh1cmwsIEZhdmljb24pOwogICAgIH0KICNp
ZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQogICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaFBy
ZWNvbXBvc2VkSWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24t
cHJlY29tcG9zZWQucG5nIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hQcmVj
b21wb3NlZEljb24pOworICAgICAgICByZXR1cm4gSWNvblVSTDo6ZGVmYXVsdEljb25VUkwodXJs
LCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CiAgICAgfQogICAgIGlmIChpY29uVHlwZSA9PSBUb3Vj
aEljb24pIHsKICAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLnBuZyIpOwot
ICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIFRvdWNoSWNvbik7CisgICAgICAgIHJldHVybiBJ
Y29uVVJMOjpkZWZhdWx0SWNvblVSTCh1cmwsIFRvdWNoSWNvbik7CiAgICAgfQogI2VuZGlmCiAg
ICAgcmV0dXJuIEljb25VUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29u
dHJvbGxlci5oCmluZGV4IDkwYzQxOTcyZGQyNmZiZTllOTdkYTU5ZWJjNGExNWYzZWFkMmZmMWIu
LmIyY2FiYTJhMGE5NWQzZWQwYWQxMGIzM2IwZWRhMmQ4MWY2MWRjMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaApAQCAtNDksOSArNDksNyBAQCBwdWJs
aWM6CiAKICAgICBLVVJMIHVybCgpOwogICAgIEljb25VUkxzIHVybHNGb3JUeXBlcyhpbnQgaWNv
blR5cGVzKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5saW5lIHRoaXMgZnVuY3Rpb24g
aW50byBpdHMgb25lIGNhbGxlciEKLSAgICB2b2lkIHNldFVSTChjb25zdCBJY29uVVJMJik7Cisg
ICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRMb2Fk
ZXIoKTsKICAgICB2b2lkIHN0b3BMb2FkZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108070</attachid>
            <date>2011-09-20 16:10:29 -0700</date>
            <delta_ts>2011-09-21 07:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65564-20110920161028.patch</filename>
            <type>text/plain</type>
            <size>19803</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NTkyMTkwZmI3MTM2YjZj
ZTJjNWY5NmQ4ZGE4M2NmMDY2YWQ2OTc3Li41OTJlMzg4OTMzODhmMzk0ZTk4ODRiYzU3Yjk5NmM0
N2Y4Y2M5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMzAgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgZm9yIG11bHRp
cGxlIDxsaW5rIHJlbD0iaWNvbiI+IGZhdmljb24gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIC0gcHVyZWx5IGFuIEFQSSBj
aGFuZ2UuIChBbmQgQVBJIGlzIG5vdCBleHBvc2VkIHRvIExheW91dFRlc3RzKQorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppY29uVVJM
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkSWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2Fk
ZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25D
b250cm9sbGVyOjp1cmxzRm9yVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xs
ZXI6OmFwcGVuZFRvSWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6
OmRlZmF1bHRVUkwpOgorCiAyMDExLTA4LTI2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MTWV0YUVsZW1lbnQ6IERvbid0IGNhY2hlICJodHRwLWVxdWl2
IiBhbmQgImNvbnRlbnQiIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
NTBjMGZjZWM0ZDdiMTUyM2Y0YWVmZDdmYWY5N2Y5ZjVjNWI5NzIzLi4xZGY0YmI3YWU3ODI3ZTU3
NDA4MmUzMTdlNWFjYWY5NzVkNTY2NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUs
NyArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
d2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNDM1NCwyNiArNDM1NCwyNSBAQCB1bnNpZ25lZCBGb3JtRWxlbWVu
dEtleUhhc2g6Omhhc2goY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSkKICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQog
Ci1JY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorY29u
c3QgVmVjdG9yPEljb25VUkw+JiBEb2N1bWVudDo6aWNvblVSTHMoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07CisgICAgcmV0dXJuIG1faWNv
blVSTHM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQordm9pZCBEb2N1bWVu
dDo6YWRkSWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBzaXplcywgSWNvblR5cGUgaWNvblR5cGUpCiB7CisgICAgaWYgKHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9i
bGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1
YWxseSBob25vciB0aGUgIm1pbWVUeXBlIgotICAgIEljb25VUkwgbmV3VVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBpY29uVHlwZSk7Ci0gICAgaWYgKGljb25VUkwoaWNvblR5cGUpLm1f
aWNvblVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKLSAgICBlbHNl
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7Ci0g
ICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPmljb24oKS0+
c2V0VVJMKG5ld1VSTCk7Ci19CisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIHNpemVzLCBtaW1lVHlwZSwgaWNvblR5cGUpOworICAgIG1faWNvblVSTHMuYXBw
ZW5kKG5ld1VSTCk7CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYg
aWNvblVSTCkKLXsKLSAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwubV9pY29uVHlw
ZSldID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKSB7CisgICAgICAgIElj
b25VUkwgaWNvblVSTCA9IGYtPmxvYWRlcigpLT5pY29uKCktPmljb25VUkwoaWNvblR5cGUpOwor
ICAgICAgICBpZiAoaWNvblVSTCA9PSBuZXdVUkwpCisgICAgICAgICAgICBmLT5sb2FkZXIoKS0+
ZGlkQ2hhbmdlSWNvbnMoaWNvblR5cGUpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVudDo6cmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdjMDc1MGRhZjgwM2Jj
MmY1NWUzYzY0YTNiNDVlNC4uYzJkZjE3YjFlNjY0YWY4Y2QxYTExNzkyN2I2MmRkOTVkMDU1YWE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8p
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTE2LDkgKzkxNyw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1f
aGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIEljb25VUkwgaWNv
blVSTChJY29uVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNv
blVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxJY29uVVJMPiYgaWNvblVSTHMoKSBjb25zdDsKKyAg
ICB2b2lkIGFkZEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgSWNvblR5cGUpOwogCiAgICAgdm9pZCBzZXRVc2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgICBib29sIHVzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdlQ2FjaGU7
Ci0gICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworICAgIFZlY3RvcjxJY29uVVJM
PiBtX2ljb25VUkxzOwogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVD
YWxsYmFja0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCmluZGV4IDhhZWZjMmFmOTRkYTI3
ZTQ1ZWFlZTJlNmJhODgxZjU1OTFmY2E3NDAuLmQxMjFlYTM2NzRmMWMyZGE5MTIyMDVhY2UyOTE4
MmQ2MzQ4MDAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKQEAgLTU0LDUgKzU0LDIxIEBAIHNp
emVfdCB0b0ljb25JbmRleChJY29uVHlwZSB0eXBlKQogICAgIHJldHVybiBpbmRleDsKIH0KIAor
SWNvblVSTCBJY29uVVJMOjpkZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBl
IHR5cGUpCit7CisgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpLCB0eXBlKTsKKyAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgSWNvblVSTCYgbGhzLCBj
b25zdCBJY29uVVJMJiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tX2ljb25UeXBlID09IHJocy5t
X2ljb25UeXBlCisgICAgICAgICAgICYmIGxocy5tX2lzRGVmYXVsdEljb24gPT0gcmhzLm1faXNE
ZWZhdWx0SWNvbgorICAgICAgICAgICAmJiBsaHMubV9pY29uVVJMID09IHJocy5tX2ljb25VUkwK
KyAgICAgICAgICAgJiYgbGhzLm1fc2l6ZXMgPT0gcmhzLm1fc2l6ZXMKKyAgICAgICAgICAgJiYg
bGhzLm1fbWltZVR5cGUgPT0gcmhzLm1fbWltZVR5cGU7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcyNDljOWRiOWI5ODc0YWIzNS4uMTEwNDc5
NWQ5Yjc3YTU0ZDI1MWQ0NzFhNTAwNmRmMzdkNzVjMTU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCkBA
IC00NSwyNSArNDUsMzYgQEAgZW51bSBJY29uVHlwZSB7CiAgICAgSW52YWxpZEljb24gPSAwLAog
ICAgIEZhdmljb24gPSAxLAogICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKLSAgICBUb3VjaFByZWNv
bXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyLAog
fTsKIAogc3RydWN0IEljb25VUkwgewogICAgIEljb25UeXBlIG1faWNvblR5cGU7CisgICAgU3Ry
aW5nIG1fc2l6ZXM7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgS1VSTCBtX2ljb25VUkw7
CisgICAgYm9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKICAgICAgICAgOiBt
X2ljb25UeXBlKEludmFsaWRJY29uKQorICAgICAgICAsIG1faXNEZWZhdWx0SWNvbihmYWxzZSkK
ICAgICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBlIHR5
cGUpCisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIHR5cGUpCiAgICAgICAgIDogbV9pY29uVHlw
ZSh0eXBlKQorICAgICAgICAsIG1fc2l6ZXMoc2l6ZXMpCisgICAgICAgICwgbV9taW1lVHlwZSht
aW1lVHlwZSkKICAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgICAgICAsIG1faXNEZWZhdWx0
SWNvbihmYWxzZSkKICAgICB7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1
bHRJY29uVVJMKGNvbnN0IEtVUkwmLCBJY29uVHlwZSk7CiB9OwogCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgSWNvblVSTCYsIGNvbnN0IEljb25VUkwmKTsKKwogdHlwZWRlZiBWZWN0b3I8SWNvblVS
TCwgSUNPTl9DT1VOVD4gSWNvblVSTHM7CiAKIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBn
aXZlbiB0eXBlLCAwIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYzYmNlYzM5
YjFjYzhjYTNmOThmOTc4ODlkMi4uOTA5NWY1YjRiNmNlNmZmNGI0ZWY0NDRlYjgzZGUwZmY3OTUw
OTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTc5LDcg
KzE3OSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIFN0cmluZyB0
eXBlID0gbV90eXBlLmxvd2VyKCk7CiAKLSAgICBpZiAoIW1fbGlua0xvYWRlci5sb2FkTGluayht
X3JlbEF0dHJpYnV0ZSwgdHlwZSwgbV91cmwsIGRvY3VtZW50KCkpKQorICAgIGlmICghbV9saW5r
TG9hZGVyLmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB0eXBlLCBtX3NpemVzLT50b1N0cmluZygp
LCBtX3VybCwgZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgYWNjZXB0
SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRy
ZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCA2ODRmYjY2Y2QwNDVjZGMxNmEyNTc1NTY5MDMyOGM4ZTUx
MGRjODBjLi5iZTkxMTJlZDgwZDczMGQzYjNhZGY4ODMwYWUyZTNhYTUxZWQ5MjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02ODIsMjIgKzY4Myw2
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQogICAgIH0KIH0KIAotSWNvblVSTCBEb2N1bWVudExvYWRlcjo6aWNvblVSTChJ
Y29uVHlwZSBpY29uVHlwZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pY29uVVJMc1t0b0ljb25J
bmRleChpY29uVHlwZSldOwotfQotCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNv
bnN0IEljb25VUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChpY29uVVJMKHVybC5tX2ljb25UeXBlKS5tX2ljb25V
UkwgIT0gdXJsLm1faWNvblVSTCkgewotICAgICAgICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KHVy
bC5tX2ljb25UeXBlKV0gPSB1cmw7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUlj
b25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKLSAgICB9Ci19Ci0KIEtVUkwgRG9jdW1lbnRMb2Fk
ZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJl
IHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAppbmRleCA1Njg5ZmEyMTVlZjViMmYzMGY3ZGJjMmRmZjc1OTE1YWQ4NjFkNzUy
Li5jN2U3OGMwZTc0MGM1OGE0OWRlMDA1MmU2MDU3YjZmODgwODE4YzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5o
IgogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKLSNpbmNsdWRlICJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyOCw3ICsxMjgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQg
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE3NSw3ICsxNzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KLSAgICAg
ICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgICAgICBLVVJMIHVybEZv
ckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWls
dXJlKCkgY29uc3Q7CkBAIC0zMTQsNyArMzEyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAgICBTdHJpbmdXaXRoRGlyZWN0
aW9uIG1fcGFnZVRpdGxlOwotICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07
CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGYwZjFmMzU2ZWE3YTI4N2FiYWNkYWVmNDg2ODQzY2Y5
NTM4Nzg2ZS4uNGUyMTc0ZjNjNDE4NDIxY2IxOTdjMDkxOTIwYjVmYWJjZTU1OWQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgS3JpcyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwuY29tPgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyMjQsMTAgKzMyMjUsOSBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAg
IH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgSWNvblR5cGUgdHlwZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25z
KEljb25UeXBlIHR5cGUpCiB7Ci0gICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQot
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKKyAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
aW5kZXggZDZhMjExOTk2NmRlZGVhNmYwOGZkMTAwYzZlNmE5ZGVmNDY2MGJiMi4uNzA0NTZkNmU4
NDFlM2RhMjA2ZWI0YWYwOTA0NWM2MTI5NWJjZWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY5LDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7
Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBlKTsKKyAg
ICB2b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9h
ZFR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGI5
MjQwODgwNzFkODU4ZjQxMzE2YzNkYmNjNjRhN2UzMDQ0MDE4MzQuLjUxZDNkOGY3ZDZhYmNjYThj
NjQyYjg1ZDA4ZWQ5MTliZWY4ZWRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhj
b25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRv
Y3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNpemVzLCBj
b25zdCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgLy8gV2UnbGwgcmVj
b3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBp
biB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IElu
dmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSkgewogICAgICAg
ICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkTGluaygpKSAKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZG9jdW1lbnQtPnNldEljb25VUkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwg
cmVsQXR0cmlidXRlLm1faWNvblR5cGUpOworICAgICAgICBkb2N1bWVudC0+YWRkSWNvblVSTCho
cmVmLnN0cmluZygpLCB0eXBlLCBzaXplcywgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAg
IH0KIAogICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuaAppbmRleCA2YzQ0OGQ4ZjQ0MmI1ZTg1NzU0YjJkYjRiODhlOWE2MjZl
ZDhmZTkwLi4xZmJjMThkN2M3NmViNmE2ZTdhNGVmZDcxOTExMWI2Mzk2MGU3OWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8v
IGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAKLSAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtS
ZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEtVUkwmLCBEb2N1bWVudCop
OworICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50Kik7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRlcj4q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAppbmRl
eCA4YTNhODc3YzZkMDA4Y2RjOWFmNTlkNzhjYWNlMzAxNmI0NWJhMDgzLi4yZTU2MzhjYjA0OTFm
OWUyZDMxNTUwMWNhNGU0MzAxZWQ0ZDE0YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgS3JpcyBKb3JkYW4gPGtyaXNqb3JkYW5AZ21haWwuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDMwICs2NSw2MSBAQCBLVVJMIEljb25Db250
cm9sbGVyOjp1cmwoKQogICAgIHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBp
Y29uVVJMc1swXS5tX2ljb25VUkw7CiB9CiAKK0ljb25VUkwgSWNvbkNvbnRyb2xsZXI6Omljb25V
UkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0Cit7CisgICAgSWNvblVSTCByZXN1bHQ7CisgICAg
Y29uc3QgVmVjdG9yPEljb25VUkw+JiBpY29uVVJMcyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmlj
b25VUkxzKCk7CisgICAgVmVjdG9yPEljb25VUkw+Ojpjb25zdF9pdGVyYXRvciBpdGVyKGljb25V
UkxzLmJlZ2luKCkpOworICAgIGZvciAoOyBpdGVyICE9IGljb25VUkxzLmVuZCgpOyArK2l0ZXIp
IHsKKyAgICAgICAgaWYgKGl0ZXItPm1faWNvblR5cGUgPT0gaWNvblR5cGUpIHsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQubV9pY29uVVJMLmlzRW1wdHkoKSB8fCAhaXRlci0+bV9taW1lVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKml0ZXI7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6
dXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXMpCiB7CiAgICAgSWNvblVSTHMgaWNvblVSTHM7CiAg
ICAgaWYgKG1fZnJhbWUtPnRyZWUoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAg
ICAgICByZXR1cm4gaWNvblVSTHM7Ci0KKyAgICAgICAgCiAgICAgaWYgKGljb25UeXBlcyAmIEZh
dmljb24gJiYgIWFwcGVuZFRvSWNvblVSTHMoRmF2aWNvbiwgJmljb25VUkxzKSkKICAgICAgICAg
aWNvblVSTHMuYXBwZW5kKGRlZmF1bHRVUkwoRmF2aWNvbikpOwogCiAjaWYgRU5BQkxFKFRPVUNI
X0lDT05fTE9BRElORykKLSAgICBib29sIGhhdmVQcmVjb21wb3NlZEljb24gPSBmYWxzZTsKKyAg
ICBpbnQgbWlzc2VkSWNvbnMgPSAwOwogICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBv
c2VkSWNvbikKLSAgICAgICAgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGFwcGVuZFRvSWNvblVSTHMo
VG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7CisgICAgICAgIG1pc3NlZEljb25zICs9
IGFwcGVuZFRvSWNvblVSTHMoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcykgPyAwOjE7
CiAKLSAgICBib29sIGhhdmVUb3VjaEljb24gPSBmYWxzZTsKICAgICBpZiAoaWNvblR5cGVzICYg
VG91Y2hJY29uKQotICAgICAgICBoYXZlVG91Y2hJY29uID0gYXBwZW5kVG9JY29uVVJMcyhUb3Vj
aEljb24sICZpY29uVVJMcyk7CisgICAgICBtaXNzZWRJY29ucyArPSBhcHBlbmRUb0ljb25VUkxz
KFRvdWNoSWNvbiwgJmljb25VUkxzKSA/IDA6MTsKIAogICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBk
ZWZhdWx0IHRvdWNoIGljb25zIHdoZW4gdGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVpdGhl
ciB3YXMgZ290dGVuLgotICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbiAm
JiBpY29uVHlwZXMgJiBUb3VjaEljb24gJiYgIWhhdmVQcmVjb21wb3NlZEljb24gJiYgIWhhdmVU
b3VjaEljb24pIHsKKyAgICBpZiAobWlzc2VkSWNvbnMgPT0gMikgewogICAgICAgICBpY29uVVJM
cy5hcHBlbmQoZGVmYXVsdFVSTChUb3VjaFByZWNvbXBvc2VkSWNvbikpOwogICAgICAgICBpY29u
VVJMcy5hcHBlbmQoZGVmYXVsdFVSTChUb3VjaEljb24pKTsKICAgICB9CiAjZW5kaWYKKworICAg
IC8vIEZpbmFsbHksIGFwcGVuZCBhbGwgcmVtYWluaW5nIGljb25zIG9mIHRoaXMgdHlwZS4KKyAg
ICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+aWNvblVSTHMoKTsKKyAgICBmb3IgKFZlY3RvcjxJY29uVVJMPjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IGFsbEljb25VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYWxsSWNvblVSTHMuZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBpZiAoIShpdGVyLT5tX2ljb25UeXBlICYgaWNvblR5cGVzKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGludCBpOworICAgICAgICBpbnQgaWNvbkNv
dW50ID0gaWNvblVSTHMuc2l6ZSgpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaWNvbkNvdW50
OyArK2kpIHsKKyAgICAgICAgICAgIGlmICgqaXRlciA9PSBpY29uVVJMcy5hdChpKSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA9PSBpY29uQ291bnQp
CisgICAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoKml0ZXIpOworICAgIH0KKwogICAgIHJldHVy
biBpY29uVVJMczsKIH0KIApAQCAtOTgsMTEgKzEzMCw2IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6
OmNvbW1pdFRvRGF0YWJhc2UoY29uc3QgS1VSTCYgaWNvbikKICAgICBpY29uRGF0YWJhc2UoKS5z
ZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aW5p
dGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgSWNvbkNvbnRyb2xsZXI6
OnNldFVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQotewotICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOwotfQotCiB2b2lkIEljb25D
b250cm9sbGVyOjpzdGFydExvYWRlcigpCiB7CiAgICAgLy8gRklYTUU6IFdlIGtpY2sgb2ZmIHRo
ZSBpY29uIGxvYWRlciB3aGVuIHRoZSBmcmFtZSBpcyBkb25lIHJlY2VpdmluZyBpdHMgbWFpbiBy
ZXNvdXJjZS4KQEAgLTIxOCwxMSArMjQ1LDExIEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRp
bnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAK
IGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFwcGVuZFRvSWNvblVSTHMoSWNvblR5cGUgaWNvblR5cGUs
IEljb25VUkxzKiBpY29uVVJMcykKIHsKLSAgICBJY29uVVJMIHVybCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmljb25VUkwoaWNvblR5cGUpOwotICAgIGlmICh1cmwubV9pY29uVVJMLmlzRW1wdHko
KSkKKyAgICBJY29uVVJMIGZhdmljb25VUkwgPSBpY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAo
ZmF2aWNvblVSTC5tX2ljb25VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpY29uVVJMcy0+YXBwZW5kKHVybCk7CisgICAgaWNvblVSTHMtPmFwcGVuZChmYXZpY29u
VVJMKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjM5LDE4ICsyNjYsMTkgQEAgSWNvblVS
TCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkKICAgICB1cmwu
c2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0
KCkpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7CisKICAgICBpZiAo
aWNvblR5cGUgPT0gRmF2aWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNv
Iik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgRmF2aWNvbik7CisgICAgICAgIHJldHVy
biBJY29uVVJMOjpkZWZhdWx0SWNvblVSTCh1cmwsIEZhdmljb24pOwogICAgIH0KICNpZiBFTkFC
TEUoVE9VQ0hfSUNPTl9MT0FESU5HKQogICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaFByZWNvbXBv
c2VkSWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24tcHJlY29t
cG9zZWQucG5nIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hQcmVjb21wb3Nl
ZEljb24pOworICAgICAgICByZXR1cm4gSWNvblVSTDo6ZGVmYXVsdEljb25VUkwodXJsLCBUb3Vj
aFByZWNvbXBvc2VkSWNvbik7CiAgICAgfQogICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaEljb24p
IHsKICAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLnBuZyIpOwotICAgICAg
ICByZXR1cm4gSWNvblVSTCh1cmwsIFRvdWNoSWNvbik7CisgICAgICAgIHJldHVybiBJY29uVVJM
OjpkZWZhdWx0SWNvblVSTCh1cmwsIFRvdWNoSWNvbik7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0
dXJuIEljb25VUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxl
ci5oCmluZGV4IDkwYzQxOTcyZGQyNmZiZTllOTdkYTU5ZWJjNGExNWYzZWFkMmZmMWIuLmIyY2Fi
YTJhMGE5NWQzZWQwYWQxMGIzM2IwZWRhMmQ4MWY2MWRjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaApAQCAtNDksOSArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICBLVVJMIHVybCgpOwogICAgIEljb25VUkxzIHVybHNGb3JUeXBlcyhpbnQgaWNvblR5cGVz
KTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5saW5lIHRoaXMgZnVuY3Rpb24gaW50byBp
dHMgb25lIGNhbGxlciEKLSAgICB2b2lkIHNldFVSTChjb25zdCBJY29uVVJMJik7CisgICAgSWNv
blVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRMb2FkZXIoKTsK
ICAgICB2b2lkIHN0b3BMb2FkZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>