<?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>37674</bug_id>
          
          <creation_ts>2010-04-15 14:19:46 -0700</creation_ts>
          <short_desc>Implement sizes attribute for link tag from HTML5</short_desc>
          <delta_ts>2013-12-16 10:15:03 -0800</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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>32934</blocked>
    
    <blocked>125775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Boodman">aa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>arv</cc>
    
    <cc>csaavedra</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>groby</cc>
    
    <cc>gustavo</cc>
    
    <cc>ian</cc>
    
    <cc>mike</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213049</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2010-04-15 14:19:46 -0700</bug_when>
    <thetext>See spec here:
http://dev.w3.org/html5/spec/Overview.html#attr-link-sizes

Basically:

  &lt;link rel=icon href=favicon.png sizes=&quot;16x16&quot; type=&quot;image/png&quot;&gt;
  &lt;link rel=icon href=windows.ico sizes=&quot;32x32 48x48&quot; type=&quot;image/vnd.microsoft.icon&quot;&gt;
  &lt;link rel=icon href=mac.icns sizes=&quot;128x128 512x512 8192x8192 32768x32768&quot;&gt;
  &lt;link rel=icon href=iphone.png sizes=&quot;59x60&quot; type=&quot;image/png&quot;&gt;
  &lt;link rel=icon href=gnome.svg sizes=&quot;any&quot; type=&quot;image/svg+xml&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431243</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-01 10:17:08 -0700</bug_when>
    <thetext>Various web browsers and other WebKit clients do different things with the icons. The icon code built into WebKit needs to respect those policies. Adding features to the icon loading code is fine, but the features need to serve the needs of the web browsers.

Thus, the HTML5 specification tells us how to correctly parse the link element properties, but does not specify exactly what we should load based on those.

That’s what makes this a challenging project.

I presume there is some specific Chrome goal here. It would be good to know what that is and how these changes will work. Those of us at Apple will also need to consider how the changes would affect Safari as well as the many Apple and third-party applications that use WebKit on Mac OS X and iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431261</commentid>
    <comment_count>2</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-01 11:04:49 -0700</bug_when>
    <thetext>The short-term use case for Chromium is the new tab page, which plans to use 32x32 icons instead of 16x16. 

The proposed change is to simply collect *all* rel-icon links when WebKit does the initial tree traversal and expose those separately. WebKit already does a callback for each loaded icon. (LinkLoader::loadLink)

Any request for icons currently supports the icon types FavIcon, TouchIcon, TouchPrecomposedIcon - there would be an additional &quot;AnyIcon&quot; that will allow retrieving all icons collected.

WebIconURL would need to be extended to store the sizes/type/media attributes for all icons.

As a result, current clients won&apos;t be affected at all unless they request AnyIcon or examine those additional attributes - the change should be backwards compatible.

Choosing an &quot;appropriate&quot; icon will then entirely be at the discretion of the WebKit client. I think this is the most useful approach, since the HTML5 spec doesn&apos;t want to specify which ones to pick. (It makes vague suggestions, but there&apos;s a good case for removing that too - see e.g.  http://www.w3.org/Bugs/Public/show_bug.cgi?id=13107 )

Unless there&apos;s objection to this plan, patch forthcoming soon-ish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433777</commentid>
    <comment_count>3</comment_count>
      <attachid>100048</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-07 16:26:44 -0700</bug_when>
    <thetext>Created attachment 100048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433781</commentid>
    <comment_count>4</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-07 16:33:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=100048) [details]
&gt; Patch

Submitted patch stores a list of all &lt;link rel=icon&gt; elements, complete with size attribute. (Only as text, though, not parsed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433791</commentid>
    <comment_count>5</comment_count>
      <attachid>100048</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-07 16:52:05 -0700</bug_when>
    <thetext>Comment on attachment 100048
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This won&apos;t let you land. You probably need to explain why there are no new tests for the code you adding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433795</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-07 17:04:46 -0700</bug_when>
    <thetext>Does this patch change it so that all icons are loaded, even if the client doesn&apos;t care about those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433797</commentid>
    <comment_count>7</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-07 17:08:33 -0700</bug_when>
    <thetext>No, it only records URLs and the size attrib. 

WebCore::Document has a new member  Vector&lt;IconURL&gt; allIconURLs() const;

That returns you a list of all encountered IconURLs (and IconURL has m_sizes and m_isDefault to expose additional info)

Since the HTML5 spec is deliberately unclear on what the strategy for picking icons is, I did not add any such logic to webkit - it&apos;s up to the UA clients to do something with the additional info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433802</commentid>
    <comment_count>8</comment_count>
      <attachid>100048</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-07 17:20:12 -0700</bug_when>
    <thetext>Comment on attachment 100048
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; This won&apos;t let you land. You probably need to explain why there are no new tests for the code you adding.

There are no new tests because no observable WebKit behavior changed.

This patch simply adds a new API that allows UA&apos;s to retrieve a full list of &lt;link rel=icon&gt; elements encountered. The strategy for picking or downloading favicons has not been affected at all. (Deliberately left out - see bug for add&apos;l comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434105</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-08 09:35:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 100048 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100048&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:8
&gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; This won&apos;t let you land. You probably need to explain why there are no new tests for the code you adding.
&gt; 
&gt; There are no new tests because no observable WebKit behavior changed.
&gt; 
&gt; This patch simply adds a new API that allows UA&apos;s to retrieve a full list of &lt;link rel=icon&gt; elements encountered. The strategy for picking or downloading favicons has not been affected at all. (Deliberately left out - see bug for add&apos;l comments)

If we&apos;re adding code, we should ensure it&apos;s tested somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434106</commentid>
    <comment_count>10</comment_count>
      <attachid>100048</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-08 09:38:39 -0700</bug_when>
    <thetext>Comment on attachment 100048
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Implement sizes attribute for link tag from HTML5, collects *ALL* &lt;link rel=&quot;icon&quot;&gt; elements

It seems like there are two patches (and possibly two tests):

* Add collection of all icons
* Add sizes attribute. I wonder if the code to parse the sizes should be somewhere here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434963</commentid>
    <comment_count>11</comment_count>
      <attachid>100320</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-11 10:16:44 -0700</bug_when>
    <thetext>Created attachment 100320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435261</commentid>
    <comment_count>12</comment_count>
      <attachid>100320</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-11 15:59:47 -0700</bug_when>
    <thetext>Comment on attachment 100320
Patch

I like the test! But let&apos;s split the allIconURLs stuff into a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435338</commentid>
    <comment_count>13</comment_count>
      <attachid>100393</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-11 17:42:27 -0700</bug_when>
    <thetext>Created attachment 100393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435665</commentid>
    <comment_count>14</comment_count>
      <attachid>100393</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-12 08:33:43 -0700</bug_when>
    <thetext>Comment on attachment 100393
Patch

r=me. I assume the sizes parsing code, based on http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#attr-link-sizes is coming in next?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435840</commentid>
    <comment_count>15</comment_count>
      <attachid>100393</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-12 11:58:01 -0700</bug_when>
    <thetext>Comment on attachment 100393
Patch

This patch is wrong. sizes should be DOMSettableTokenList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438650</commentid>
    <comment_count>16</comment_count>
      <attachid>101192</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-18 13:05:24 -0700</bug_when>
    <thetext>Created attachment 101192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438721</commentid>
    <comment_count>17</comment_count>
      <attachid>101192</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-18 14:27:23 -0700</bug_when>
    <thetext>Comment on attachment 101192
Patch

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

This is not a complete implementation, since the validating parser isn&apos;t yet implemented. This means that if I set sizes = &quot;foo 10x10&quot;, the icon.sizes.length would report a size of 2, instead of 1. I wonder if you could add the parser into this patch? This way, we wouldn&apos;t be landing incomplete functionality.

&gt; LayoutTests/fast/dom/icon-size-property.html:14
&gt; +      var icon=document.getElementById(&quot;rel-icon&quot;);

I think we need a few more tests here. Let&apos;s test for an empty sizes value, for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440736</commentid>
    <comment_count>18</comment_count>
      <attachid>101672</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-21 17:09:29 -0700</bug_when>
    <thetext>Created attachment 101672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440747</commentid>
    <comment_count>19</comment_count>
      <attachid>101672</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-21 17:31:43 -0700</bug_when>
    <thetext>Comment on attachment 101672
Patch

Attachment 101672 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9209852</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440749</commentid>
    <comment_count>20</comment_count>
      <attachid>101672</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-21 17:35:43 -0700</bug_when>
    <thetext>Comment on attachment 101672
Patch

Attachment 101672 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9199931</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440822</commentid>
    <comment_count>21</comment_count>
      <attachid>101696</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-21 21:02:06 -0700</bug_when>
    <thetext>Created attachment 101696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440998</commentid>
    <comment_count>22</comment_count>
      <attachid>101696</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-22 10:40:02 -0700</bug_when>
    <thetext>Comment on attachment 101696
Patch

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

the bots are all confused, probably need to re-run the patch. Great progress!

&gt; LayoutTests/fast/dom/icon-size-property.html:42
&gt; +

Let&apos;s also test setting the sizes attribute from script.

&gt; Source/WebCore/html/DOMSettableTokenList.cpp:103
&gt; +    return DOMTokenList::validateToken(token, ec);

Could we just override validateToken and not do the fooInternal dance?

&gt; Source/WebCore/html/SizesList.cpp:56
&gt; +                localEc = SYNTAX_ERR;

Are we really supposed to throw SYNTAX_ERR in these cases?

&gt; Source/WebCore/html/SizesList.cpp:85
&gt; +    ExceptionCode ec;
&gt; +    DOMSettableTokenList::setValue(&quot;&quot;);
&gt; +    for (unsigned i = 0; i &lt; tokens.size(); ++i)
&gt; +        add(tokens[i], ec);

This seems inefficient. It&apos;s almost like SpaceSplitString wants to have a validating function parameter. But I guess it&apos;s ok as is.

&gt; Source/WebCore/html/SizesList.h:37
&gt; +class SizesList : public DOMSettableTokenList {

Should we be more specific in naming, like IconSizeList?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441010</commentid>
    <comment_count>23</comment_count>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-22 10:53:44 -0700</bug_when>
    <thetext>&gt; the bots are all confused, probably need to re-run the patch. 

Yes, a merge conflict. Resolved locally, testing right now.

&gt; Let&apos;s also test setting the sizes attribute from script.

That&apos;s already in there, see icon-sizes-property.html:23-25

      icon.sizes=&quot;10x10 20x20 30x30 40x40&quot;;
      shouldEvaluateTo(&apos;icon.sizes.length&apos;,4);
      shouldBeEqualToString(&apos;icon.sizes.value&apos;,&quot;10x10 20x20 30x30 40x40&quot;);

&gt; Could we just override validateToken and not do the fooInternal dance?

We possibly could, except it&apos;s currently a static on DOMTokenList, not a member. I&apos;ll check if there&apos;s any reason to keep it that way, otherwise it just earned itself a &apos;virtual&apos; ;)

&gt; Are we really supposed to throw SYNTAX_ERR in these cases?

That&apos;s how I read the spec - can&apos;t have more than one &apos;x&apos;/&apos;X&apos;, and it must separate two numbers.  It&apos;s not really an invalid character per se. 


&gt; This seems inefficient. It&apos;s almost like SpaceSplitString wants to have a validating function parameter. 

The entire chain right now is inefficient - SizesList::validateTokenInternal also traverses the token twice. On the upside, it&apos;s a clear separation of responsibilities. 

&gt; Should we be more specific in naming, like IconSizeList?
Probably a better name, so will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441166</commentid>
    <comment_count>24</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-07-22 14:24:02 -0700</bug_when>
    <thetext>Don&apos;t confuse authoring conformance requirements with implementor requirements. Whether something is allowed or not has *absolutely no effect* on what browsers should do. Unless you can point to a specific requirement that says to fire an exception, you should not fire an exception per spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441217</commentid>
    <comment_count>25</comment_count>
      <attachid>101778</attachid>
    <who name="Rachel Blum">groby</who>
    <bug_when>2011-07-22 15:27:32 -0700</bug_when>
    <thetext>Created attachment 101778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441219</commentid>
    <comment_count>26</comment_count>
      <attachid>101778</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-22 15:29:08 -0700</bug_when>
    <thetext>Comment on attachment 101778
Patch

cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443287</commentid>
    <comment_count>27</comment_count>
      <attachid>101778</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-27 20:01:07 -0700</bug_when>
    <thetext>Comment on attachment 101778
Patch

Clearing flags on attachment: 101778

Committed r91893: &lt;http://trac.webkit.org/changeset/91893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443288</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-27 20:01:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865187</commentid>
    <comment_count>29</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-27 23:06:25 -0700</bug_when>
    <thetext>+#if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
+        attribute [Custom] DOMSettableTokenList sizes;
+#endif

Why was this made JavaScript only? I see the first revisions of the patch were adding this unconditionally but it was later made JavaScript only.

I&apos;d like to be able to use this from GTK+&apos;s dom bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865520</commentid>
    <comment_count>30</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2013-03-28 08:13:08 -0700</bug_when>
    <thetext>This uses a custom binding which doesn&apos;t seem needed. Please file a new bug to not use custom bindings and/or add GTK custom bindings.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100048</attachid>
            <date>2011-07-07 16:26:44 -0700</date>
            <delta_ts>2011-07-11 10:16:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110707162642.patch</filename>
            <type>text/plain</type>
            <size>12832</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzkzY2E1Y2VkZGUzNDE5
YzlkNTNmNTY4NDFkNzI4NGRiN2U0OGI4Li44MGM3ZDJlMjM1ZTc1MjNkY2RlZmFkNDkxNDNmOWI3
YzI1MDI1YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDctMDcgIFJhY2hl
bCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBh
dHRyaWJ1dGUgZm9yIGxpbmsgdGFnIGZyb20gSFRNTDUsIGNvbGxlY3RzICpBTEwqIDxsaW5rIHJl
bD0iaWNvbiI+IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphbGxJY29uVVJMcyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6
Okljb25VUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvTGlu
a0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6dXJsc0Zv
clR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVyOjphcHBlbmRUb0ljb25V
UkxzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKToKKwog
MjAxMS0wNy0wNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQ6IFdlYiBJbnNwZWN0b3I6IGZpeGluZyB0eXBvIGludHJvZHVjZWQg
aW4gdGhlIHI5MDM5Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDc1MzJlNGE0ZGM5ZTU1
Zjk4OTM2YTRkNDA2NDA2YTY2MzFlYzYwMGYuLjk4M2NmZDIzMGNiNmM0ZTBmYjljNDA5NTBkYWU1
ZWYzMzQ2NjRmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNSw3ICs1LDcgQEAKICAq
ICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC00MzM1LDIxICs0MzM1LDMwIEBAIHVuc2lnbmVkIEZvcm1FbGVtZW50S2V5SGFzaDo6aGFz
aChjb25zdCBGb3JtRWxlbWVudEtleSYga2V5KQogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhh
c2hNZW1vcnk8c2l6ZW9mKEZvcm1FbGVtZW50S2V5KT4oJmtleSk7CiB9CiAKK1ZlY3RvcjxJY29u
VVJMPiBEb2N1bWVudDo6YWxsSWNvblVSTHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2FsbElj
b25VUkxzOworfQorCiBJY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25UeXBl
KSBjb25zdAogewogICAgIHJldHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQordm9pZCBEb2N1bWVudDo6c2V0
SWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBzaXplcywgSWNvblR5cGUgaWNvblR5cGUpCiB7CiAgICAgLy8gRklYTUUgLSA8cmRh
cjovL3Byb2JsZW0vNDcyNzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUsIHdlIG1p
Z2h0IGFjdHVhbGx5IGhvbm9yIHRoZSAibWltZVR5cGUiCi0gICAgSWNvblVSTCBuZXdVUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBJY29uVVJMIG5ld1VSTChL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgc2l6ZXMsIGljb25UeXBlKTsKICAgICBpZiAoaWNv
blVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAgICAgc2V0SWNvblVSTChu
ZXdVUkwpOwogICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHNldElj
b25VUkwobmV3VVJMKTsKICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQogICAgICAgICBmLT5s
b2FkZXIoKS0+aWNvbigpLT5zZXRVUkwobmV3VVJMKTsKKworICAgIC8vIFNpbmNlIHRoaXMgaXMg
b25seSBpbnZva2VkIGF0IHRyZWUgY29uc3RydWN0aW9uIHRpbWUgKHZpYSBMaW5rTG9hZGVyKSwK
KyAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byBmaWx0ZXIgZm9yIGR1cGxpY2F0ZXMuCisgICAgbV9h
bGxJY29uVVJMcy5hcHBlbmQobmV3VVJMKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0SWNvblVS
TChjb25zdCBJY29uVVJMJiBpY29uVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiNGQ1YTFm
NmJkNjY1MjY1MTY4OWFmZGVlYjQzNDZiODlmOWJiNDAyLi4wY2M4ODE3NDFjZjVjYTY2ZTgyYjgz
NWVhYmM0MjE5MTI0YjUxZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTEwLDggKzkxMCw5
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5
bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAorICAgIFZl
Y3RvcjxJY29uVVJMPiBhbGxJY29uVVJMcygpIGNvbnN0OwogICAgIEljb25VUkwgaWNvblVSTChJ
Y29uVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIEljb25UeXBlKTsKKyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOwogICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50
cnlXaGVuQWN0aXZlKGJvb2wpOwpAQCAtMTM0NSw2ICsxMzQ2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBhZ2VDYWNoZTsKICAgICBJY29u
VVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CisgICAgVmVjdG9yPEljb25VUkw+IG1fYWxsSWNv
blVSTHM7CiAKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2RvY3VtZW50QWN0aXZhdGlvbkNhbGxi
YWNrRWxlbWVudHM7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9tZWRpYVZvbHVtZUNhbGxiYWNr
RWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAppbmRleCA2NDg2Y2E0MzJlZjQ3NDdjZDY0NDkwNzI0
OWM5ZGI5Yjk4NzRhYjM1Li5kMmY5ZWUzNWM0MjUyN2JiOGYzNGFiM2RiN2MzNzIxM2VjNjNlYjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JY29uVVJMLmgKQEAgLTQ1LDIxICs0NSwzNCBAQCBlbnVtIEljb25UeXBlIHsK
ICAgICBJbnZhbGlkSWNvbiA9IDAsCiAgICAgRmF2aWNvbiA9IDEsCiAgICAgVG91Y2hJY29uID0g
MSA8PCAxLAotICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyCisgICAgVG91Y2hQcmVj
b21wb3NlZEljb24gPSAxIDw8IDIsCisgICAgQW55SWNvbiA9IDEgPDwgMwogfTsKIAogc3RydWN0
IEljb25VUkwgewogICAgIEljb25UeXBlIG1faWNvblR5cGU7CisgICAgU3RyaW5nIG1fc2l6ZXM7
CiAgICAgS1VSTCBtX2ljb25VUkw7Ci0KKyAgICBib29sIG1faXNEZWZhdWx0OworICAgIAogICAg
IEljb25VUkwoKQogICAgICAgICA6IG1faWNvblR5cGUoSW52YWxpZEljb24pCiAgICAgewogICAg
IH0KIAotICAgIEljb25VUkwoY29uc3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorICAgIElj
b25VUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNpemVzLCBJY29uVHlwZSB0eXBl
KQorICAgICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX3NpemVzKHNpemVzKQor
ICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgICAgICwgbV9pc0RlZmF1bHQoZmFsc2UpCisg
ICAgeworICAgIH0KKworICAgIEljb25VUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHNpemVzLCBJY29uVHlwZSB0eXBlLCBib29sIGlzRGVmYXVsdCkKICAgICAgICAgOiBtX2ljb25U
eXBlKHR5cGUpCisgICAgICAgICwgbV9zaXplcyhzaXplcykKICAgICAgICAgLCBtX2ljb25VUkwo
dXJsKQorICAgICAgICAsIG1faXNEZWZhdWx0KGlzRGVmYXVsdCkKICAgICB7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggMTY3OWU5NmEw
MGE0ZjM0MTFhOWZlMGFiNzc4MWViYTc2NDdkYjI1Mi4uZDczNDVkNGQ4ODlkY2VjY2E4YjJhOTli
ZWIzM2ZmNTQ2MWQ4NzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KQEAgLTI3MSw2ICsyNzEsNyBAQCBzY3JvbGxpbmcKIHNlbGVjdGVkCiBzaGFwZQogc2l6
ZQorc2l6ZXMKIHNvcnRhYmxlCiBzb3J0ZGlyZWN0aW9uCiBzcGFuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNDMzNTMyOWM5M2Q2ZmE5NmJkMDg4ODYwYWI2YmRm
MmYzYzBkMWY5MS4uMzU3MzBiZDhjMTFkMjY4MmM4M2U4NGI1NjVlM2E1MTE2MjU4NmVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw5IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAg
bV90eXBlID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgcHJvY2VzcygpOworICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHNpemVzQXR0cikgeworICAgICAgICBtX3NpemVzID0gYXR0ci0+
dmFsdWUoKTsKKyAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG1lZGlhQXR0cikgewogICAgICAgICBtX21lZGlhID0gYXR0ci0+dmFsdWUoKS5zdHJpbmco
KS5sb3dlcigpOwogICAgICAgICBwcm9jZXNzKCk7CkBAIC0xNzEsNyArMTc0LDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93
ZXIoKTsKIAotICAgIGlmICghbV9saW5rTG9hZGVyLmxvYWRMaW5rKG1fcmVsQXR0cmlidXRlLCB0
eXBlLCBtX3VybCwgZG9jdW1lbnQoKSkpCisgICAgaWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmso
bV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMsIG1fdXJsLCBkb2N1bWVudCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYm9vbCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgPSBkb2N1
bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpICYmIGRvY3Vt
ZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hl
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IGVmM2IwYTY4NzFi
NTczOWI0M2IyNDY4MjQ1NGY1NmEzYjAwZjZhMjEuLjNiOTYwMmE0OGMyMWZhZGE2M2QyZmMzNGZh
OGRmN2ZlNDc5N2IyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAt
OTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIEtVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fdHlw
ZTsKICAgICBTdHJpbmcgbV9tZWRpYTsKKyAgICBTdHJpbmcgbV9zaXplczsKICAgICBMaW5rUmVs
QXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wg
bV9pc0VuYWJsZWRWaWFTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5p
ZGwKaW5kZXggMWYzNjIzMjY5YjNiM2FiNWJhODU4ZWUzZjY0YmUxYWMyNzAxM2QwMy4uZGZmYjc1
MWIxNGVmMzQ5NzU3ZmY5Y2VkZDIxNDFmZWY0NTFkYWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmlkbApAQCAtMjgsNiArMjgsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG1lZGlhOwogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyByZWw7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHJldjsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2l6
ZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHRhcmdldDsKICAgICAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdHlwZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCmluZGV4IGI5MjQwODgwNzFkODU4ZjQxMzE2YzNkYmNjNjRhN2UzMDQ0
MDE4MzQuLjRlNTg5MWRhNzg3NTY1ZTljZWJhZTkwZDY3YTc3MWNlM2YzMzU3NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIExpbmtM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9v
bCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1
dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
S1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBp
ZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFo
cmVmLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkTGluaygp
KSAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZG9jdW1lbnQtPnNldEljb25V
UkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOworICAgICAg
ICBkb2N1bWVudC0+c2V0SWNvblVSTChocmVmLnN0cmluZygpLCB0eXBlLCBzaXplcywgcmVsQXR0
cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCA2YzQ0OGQ4ZjQ0
MmI1ZTg1NzU0YjJkYjRiODhlOWE2MjZlZDhmZTkwLi43YzQ5ZWJiY2VhOTQ4YzhlNzBjYTkyNzA4
NGYxNzk0MWEzYTYxNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUwLDcg
KzUwLDggQEAgcHVibGljOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAKLSAgICBi
b29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOworICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1Jl
bEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywKKyAg
ICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAg
IHZvaWQgbGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2FkZXI+Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggNzdkNTJlZTQ0ZjFl
NmUxOWE4YjI1NDYwNzk5ODRkOTg1MzA2MzA5ZS4uMzQwZmZiNTI2OWViNWIwMDlkMWM5Y2M0MjI4
N2M3MDRjN2U3YTNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEtyaXMgSm9yZGFuIDxrcmlzam9yZGFuQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02OSw2ICs3MCwyMiBAQCBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6dXJs
c0ZvclR5cGVzKGludCBpY29uVHlwZXMpCiAgICAgSWNvblVSTHMgaWNvblVSTHM7CiAgICAgaWYg
KG1fZnJhbWUtPnRyZWUoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAgICAgICBy
ZXR1cm4gaWNvblVSTHM7CisgICAgICAKKyAgICBpZiAoaWNvblR5cGVzID09IEFueUljb24pIHsK
KyAgICAgICAgSWNvblVSTHMgZHVtbXk7CisgICAgICAgIGFwcGVuZFRvSWNvblVSTHMoQW55SWNv
biwgJmljb25VUkxzKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFwcGVuZCB0aGUgZGVmYXVsdCBp
Y29ucyBpZiBuZWVlZGVkCisgICAgICAgIGlmICghYXBwZW5kVG9JY29uVVJMcyhGYXZpY29uLCAm
ZHVtbXkpKQorICAgICAgICAgIGljb25VUkxzLmFwcGVuZChkZWZhdWx0VVJMKEZhdmljb24pKTsK
KyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgICAgICBpZiAoIWFwcGVuZFRvSWNv
blVSTHMoVG91Y2hQcmVjb21wb3NlZEljb24sICZkdW1teSkpCisgICAgICAgICAgaWNvblVSTHMu
YXBwZW5kKGRlZmF1bHRVUkwoVG91Y2hQcmVjb21wb3NlZEljb24pKTsKKyAgICAgICAgaWYgKCFh
cHBlbmRUb0ljb25VUkxzKFRvdWNoSWNvbiwgJmR1bW15KSkKKyAgICAgICAgICBpY29uVVJMcy5h
cHBlbmQoZGVmYXVsdFVSTChUb3VjaEljb24pKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gaWNv
blVSTHM7CisgICAgfQogCiAgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24gJiYgIWFwcGVuZFRv
SWNvblVSTHMoRmF2aWNvbiwgJmljb25VUkxzKSkKICAgICAgICAgaWNvblVSTHMuYXBwZW5kKGRl
ZmF1bHRVUkwoRmF2aWNvbikpOwpAQCAtMjE0LDYgKzIzMSwxMSBAQCB2b2lkIEljb25Db250cm9s
bGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxvYWREZWNpc2lvbiBpY29uTG9hZERl
Y2lzaW9uKQogCiBib29sIEljb25Db250cm9sbGVyOjphcHBlbmRUb0ljb25VUkxzKEljb25UeXBl
IGljb25UeXBlLCBJY29uVVJMcyogaWNvblVSTHMpCiB7CisgICAgaWYgKGljb25UeXBlID09IEFu
eUljb24pIHsKKyAgICAgIGljb25VUkxzLT5hcHBlbmQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWxs
SWNvblVSTHMoKSk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBJY29uVVJMIHVy
bCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUpOwogICAgIGlmICh1cmwu
bV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI4LDcgKzI1
MCw3IEBAIEljb25VUkwgSWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRVUkwoSWNvblR5cGUgaWNvblR5
cGUpCiAgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0
dXJuIEljb25VUkwoKTsKLQorICAgICAgICAKICAgICBLVVJMIHVybDsKICAgICBib29sIGNvdWxk
U2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKQEAg
LTIzNywxNiArMjU5LDE2IEBAIEljb25VUkwgSWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRVUkwoSWNv
blR5cGUgaWNvblR5cGUpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7
CiAgICAgaWYgKGljb25UeXBlID09IEZhdmljb24pIHsKICAgICAgICAgdXJsLnNldFBhdGgoIi9m
YXZpY29uLmljbyIpOwotICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIEZhdmljb24pOworICAg
ICAgICByZXR1cm4gSWNvblVSTCh1cmwsICIiLCBGYXZpY29uLCB0cnVlKTsKICAgICB9CiAjaWYg
RU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKICAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hQcmVj
b21wb3NlZEljb24pIHsKICAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLXBy
ZWNvbXBvc2VkLnBuZyIpOwotICAgICAgICByZXR1cm4gSWNvblVSTCh1cmwsIFRvdWNoUHJlY29t
cG9zZWRJY29uKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCAiIiwgVG91Y2hQcmVjb21w
b3NlZEljb24sIHRydWUpOwogICAgIH0KICAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7
CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKLSAgICAgICAg
cmV0dXJuIEljb25VUkwodXJsLCBUb3VjaEljb24pOworICAgICAgICByZXR1cm4gSWNvblVSTCh1
cmwsICIiLCBUb3VjaEljb24sIHRydWUpOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBJY29u
VVJMKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100320</attachid>
            <date>2011-07-11 10:16:44 -0700</date>
            <delta_ts>2011-07-11 17:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110711101649.patch</filename>
            <type>text/plain</type>
            <size>14942</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNjhkZDViZDBhNWNmMDAxZDJlNTI4
MzQwYjA2OWU3ZWU4YWNmZDU1Li41YTgwNzBiYjFlNjQwYzk1ZjI1YTdhNzhjNDlkMGIyYWM1NzNj
Nzk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTEgIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMDggIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZDsgbmV3IGNocm9taXVtIEdQVSBwaXhlbCByZXN1bHRzIGZv
ciBvdmVyZmxvdy1zY3JvbGwtZXhwZWN0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDY5YzJhZmUz
MzdmOWRmYmE5ZWY5OGNkMDQwNDM4YTllZTczYjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
IEBACitJY29uIHNpemUgaXM6IDIzeDQ3IDE5eDQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lj
b24tc2l6ZS1wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZmQxYTYxODdmOGRmMTA0MGVhNDIy
Y2ZmNWY0YjVlMzgxMjhiNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXNpemUtcHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNv
biIgc2l6ZXM9IjIzeDQ3IDE5eDQyIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90
ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0
KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRl
YnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0
KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisgICAgaWNvblNpemUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJsaW5rIilbMF0uc2l6ZXM7CisgICAgZGVidWdPdXRwdXQgKCdJY29uIHNpemUgaXM6ICcg
KyBpY29uU2l6ZSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5U
ZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzE3ZTdjZTI2MDk5YmJjMWQxYzY5ZjI2MGFhOWE0MjQ1YjFmYmE0Li4y
NWZjMWI1MjdlM2RhYzdlMTc5YzVmMDBjNWVkZDliODBhYjY5ODRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTEtMDctMTEgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9yIGxpbmsgdGFnIGZyb20g
SFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3
Njc0CisgICAgICAgIAorICAgICAgICBBZGQgY29sbGVjdGlvbiBvZiBhbGwgaWNvbnMgdG8gV2Vi
Q29yZTo6RG9jdW1lbnQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbAorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphbGxJY29u
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuaDoKKyAgICAgICAgKFdl
YkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxM
aW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVy
Ojpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29u
dHJvbGxlcjo6dXJsc0ZvclR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVy
OjphcHBlbmRUb0ljb25VUkxzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpk
ZWZhdWx0VVJMKToKKwogMjAxMS0wNy0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlZmFjdG9yIG92ZXJyaWRlIHNpemUgdG8gYmUgYSBzaXplIHJhdGhlciB0
aGFuIGp1c3QgYW4gaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5MjUyNDgzNzY5ZjZl
YzUzMDEyMzA0MjkwY2YwZjYzOTlhZjY3Y2QxLi41YzAzMjFiMDA0YjI2OTU2ODI0ZWI2YmU1ZGJk
MWU0NTRkZWY3ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUsNyArNSw3IEBACiAg
KiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtNDM0MCwyMSArNDM0MCwzMCBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhhc2g6Omhh
c2goY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSkKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpo
YXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQogCitWZWN0b3I8SWNv
blVSTD4gRG9jdW1lbnQ6OmFsbEljb25VUkxzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbGxJ
Y29uVVJMczsKK30KKwogSWNvblVSTCBEb2N1bWVudDo6aWNvblVSTChJY29uVHlwZSBpY29uVHlw
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pY29uVVJMc1t0b0ljb25JbmRleChpY29uVHlwZSld
OwogfQogCi12b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29uVHlwZSkKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgc2l6ZXMsIEljb25UeXBlIGljb25UeXBlKQogewogICAgIC8vIEZJWE1FIC0gPHJk
YXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBt
aWdodCBhY3R1YWxseSBob25vciB0aGUgIm1pbWVUeXBlIgotICAgIEljb25VUkwgbmV3VVJMKEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBpY29uVHlwZSk7CisgICAgSWNvblVSTCBuZXdVUkwo
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIHNpemVzLCBpY29uVHlwZSk7CiAgICAgaWYgKGlj
b25VUkwoaWNvblR5cGUpLm1faWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHNldEljb25VUkwo
bmV3VVJMKTsKICAgICBlbHNlIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICBzZXRJ
Y29uVVJMKG5ld1VSTCk7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKICAgICAgICAgZi0+
bG9hZGVyKCktPmljb24oKS0+c2V0VVJMKG5ld1VSTCk7CisKKyAgICAvLyBTaW5jZSB0aGlzIGlz
IG9ubHkgaW52b2tlZCBhdCB0cmVlIGNvbnN0cnVjdGlvbiB0aW1lICh2aWEgTGlua0xvYWRlciks
CisgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gZmlsdGVyIGZvciBkdXBsaWNhdGVzLgorICAgIG1f
YWxsSWNvblVSTHMuYXBwZW5kKG5ld1VSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldEljb25V
UkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNTY1OGYy
NDc1M2VjY2Q1ZjE3NjI5YTE3NDU5NDc2ODRhNDA0N2VhMC4uNzAyM2ZjMjg0OTgxY2ZkYWFlYTk3
ZWJmYmIzNTBiZjg2ZjhhZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTkxMSw4ICs5MTEs
OSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0
eWxlKCkgeyBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAKKyAgICBW
ZWN0b3I8SWNvblVSTD4gYWxsSWNvblVSTHMoKSBjb25zdDsKICAgICBJY29uVVJMIGljb25VUkwo
SWNvblR5cGUpIGNvbnN0OwotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBJY29uVHlwZSk7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKICAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgSWNvblVSTCYpOwogCiAgICAgdm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVu
dHJ5V2hlbkFjdGl2ZShib29sKTsKQEAgLTEzNDYsNiArMTM0Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdlQ2FjaGU7CiAgICAgSWNv
blVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworICAgIFZlY3RvcjxJY29uVVJMPiBtX2FsbElj
b25VUkxzOwogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVDYWxsYmFj
a0VsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcy
NDljOWRiOWI5ODc0YWIzNS4uZDJmOWVlMzVjNDI1MjdiYjhmMzRhYjNkYjdjMzcyMTNlYzYzZWI3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSWNvblVSTC5oCkBAIC00NSwyMSArNDUsMzQgQEAgZW51bSBJY29uVHlwZSB7
CiAgICAgSW52YWxpZEljb24gPSAwLAogICAgIEZhdmljb24gPSAxLAogICAgIFRvdWNoSWNvbiA9
IDEgPDwgMSwKLSAgICBUb3VjaFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIFRvdWNoUHJl
Y29tcG9zZWRJY29uID0gMSA8PCAyLAorICAgIEFueUljb24gPSAxIDw8IDMKIH07CiAKIHN0cnVj
dCBJY29uVVJMIHsKICAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIFN0cmluZyBtX3NpemVz
OwogICAgIEtVUkwgbV9pY29uVVJMOwotCisgICAgYm9vbCBtX2lzRGVmYXVsdDsKKyAgICAKICAg
ICBJY29uVVJMKCkKICAgICAgICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQogICAgIHsKICAg
ICB9CiAKLSAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICBJ
Y29uVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgSWNvblR5cGUgdHlw
ZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCisgICAgICAgICwgbV9zaXplcyhzaXplcykK
KyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgICAgICAsIG1faXNEZWZhdWx0KGZhbHNlKQor
ICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBzaXplcywgSWNvblR5cGUgdHlwZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgICAgIDogbV9pY29u
VHlwZSh0eXBlKQorICAgICAgICAsIG1fc2l6ZXMoc2l6ZXMpCiAgICAgICAgICwgbV9pY29uVVJM
KHVybCkKKyAgICAgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCiAgICAgewogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDE2NzllOTZh
MDBhNGYzNDExYTlmZTBhYjc3ODFlYmE3NjQ3ZGIyNTIuLmQ3MzQ1ZDRkODg5ZGNlY2NhOGIyYTk5
YmViMzNmZjU0NjFkODc2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCkBAIC0yNzEsNiArMjcxLDcgQEAgc2Nyb2xsaW5nCiBzZWxlY3RlZAogc2hhcGUKIHNp
emUKK3NpemVzCiBzb3J0YWJsZQogc29ydGRpcmVjdGlvbgogc3BhbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDQzMzUzMjljOTNkNmZhOTZiZDA4ODg2MGFiNmJk
ZjJmM2MwZDFmOTEuLjM1NzMwYmQ4YzExZDI2ODJjODNlODRiNTY1ZTNhNTExNjI1ODZlYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTEzMyw2ICsxMzMsOSBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAg
IG1fdHlwZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIHByb2Nlc3MoKTsKKyAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBzaXplc0F0dHIpIHsKKyAgICAgICAgbV9zaXplcyA9IGF0dHIt
PnZhbHVlKCk7CisgICAgICAgIHByb2Nlc3MoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBtZWRpYUF0dHIpIHsKICAgICAgICAgbV9tZWRpYSA9IGF0dHItPnZhbHVlKCkuc3RyaW5n
KCkubG93ZXIoKTsKICAgICAgICAgcHJvY2VzcygpOwpAQCAtMTcxLDcgKzE3NCw3IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIFN0cmluZyB0eXBlID0gbV90eXBlLmxv
d2VyKCk7CiAKLSAgICBpZiAoIW1fbGlua0xvYWRlci5sb2FkTGluayhtX3JlbEF0dHJpYnV0ZSwg
dHlwZSwgbV91cmwsIGRvY3VtZW50KCkpKQorICAgIGlmICghbV9saW5rTG9hZGVyLmxvYWRMaW5r
KG1fcmVsQXR0cmlidXRlLCB0eXBlLCBtX3NpemVzLCBtX3VybCwgZG9jdW1lbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNo
ZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCBlZjNiMGE2ODcx
YjU3MzliNDNiMjQ2ODI0NTRmNTZhM2IwMGY2YTIxLi4zYjk2MDJhNDhjMjFmYWRhNjNkMmZjMzRm
YThkZjdmZTQ3OTdiMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAg
LTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3R5
cGU7CiAgICAgU3RyaW5nIG1fbWVkaWE7CisgICAgU3RyaW5nIG1fc2l6ZXM7CiAgICAgTGlua1Jl
bEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0ZTsKICAgICBib29sIG1fbG9hZGluZzsKICAgICBib29s
IG1faXNFbmFibGVkVmlhU2NyaXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aWRsCmluZGV4IDFmMzYyMzI2OWIzYjNhYjViYTg1OGVlM2Y2NGJlMWFjMjcwMTNkMDMuLmRmZmI3
NTFiMTRlZjM0OTc1N2ZmOWNlZGQyMTQxZmVmNDUxZGFhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5pZGwKQEAgLTI4LDYgKzI4LDcgQEAgbW9kdWxlIGh0bWwgewogICAg
ICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBtZWRpYTsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmVsOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyByZXY7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNp
emVzOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB0YXJnZXQ7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcAppbmRleCBiOTI0MDg4MDcxZDg1OGY0MTMxNmMzZGJjYzY0YTdlMzA0
NDAxODM0Li40ZTU4OTFkYTc4NzU2NWU5Y2ViYWU5MGQ2N2E3NzFjZTNmMzM1NzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04NSwxMyArODUsMTMgQEAgdm9pZCBMaW5r
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB9CiAKIGJv
b2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmli
dXRlLCBjb25zdCBTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEtVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9jdW1lbnQsIGV2ZW4g
aWYgd2UgbGF0ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwogICAgIGlmIChyZWxB
dHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBocmVmLmlzVmFsaWQoKSAmJiAh
aHJlZi5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX2NsaWVudC0+c2hvdWxkTG9hZExpbmso
KSkgCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvY3VtZW50LT5zZXRJY29u
VVJMKGhyZWYuc3RyaW5nKCksIHR5cGUsIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlKTsKKyAgICAg
ICAgZG9jdW1lbnQtPnNldEljb25VUkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwgc2l6ZXMsIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlKTsKICAgICB9CiAKICAgICBpZiAocmVsQXR0cmlidXRlLm1faXNE
TlNQcmVmZXRjaCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggNmM0NDhkOGY0
NDJiNWU4NTc1NGIyZGI0Yjg4ZTlhNjI2ZWQ4ZmU5MC4uN2M0OWViYmNlYTk0OGM4ZTcwY2E5Mjcw
ODRmMTc5NDFhM2E2MTU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC01MCw3
ICs1MCw4IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgCi0gICAg
Ym9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKKyAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtS
ZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsCisg
ICAgICAgICAgICAgICAgICBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGxpbmtMb2FkVGltZXJGaXJlZChUaW1lcjxMaW5rTG9hZGVyPiopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDc3ZDUyZWU0NGYx
ZTZlMTlhOGIyNTQ2MDc5OTg0ZDk4NTMwNjMwOWUuLjM0MGZmYjUyNjllYjViMDA5ZDFjOWNjNDIy
ODdjNzA0YzdlN2EzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29u
dHJvbGxlci5jcHAKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRv
a2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSBLcmlzIEpvcmRhbiA8a3Jpc2pvcmRhbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjksNiArNzAsMjIgQEAgSWNvblVSTHMgSWNvbkNvbnRyb2xsZXI6OnVy
bHNGb3JUeXBlcyhpbnQgaWNvblR5cGVzKQogICAgIEljb25VUkxzIGljb25VUkxzOwogICAgIGlm
IChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAgICAg
cmV0dXJuIGljb25VUkxzOworICAgICAgCisgICAgaWYgKGljb25UeXBlcyA9PSBBbnlJY29uKSB7
CisgICAgICAgIEljb25VUkxzIGR1bW15OworICAgICAgICBhcHBlbmRUb0ljb25VUkxzKEFueUlj
b24sICZpY29uVVJMcyk7CisgICAgICAgIAorICAgICAgICAvLyBBcHBlbmQgdGhlIGRlZmF1bHQg
aWNvbnMgaWYgbmVlZWRlZAorICAgICAgICBpZiAoIWFwcGVuZFRvSWNvblVSTHMoRmF2aWNvbiwg
JmR1bW15KSkKKyAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoZGVmYXVsdFVSTChGYXZpY29uKSk7
CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICAgICAgaWYgKCFhcHBlbmRUb0lj
b25VUkxzKFRvdWNoUHJlY29tcG9zZWRJY29uLCAmZHVtbXkpKQorICAgICAgICAgIGljb25VUkxz
LmFwcGVuZChkZWZhdWx0VVJMKFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGlmICgh
YXBwZW5kVG9JY29uVVJMcyhUb3VjaEljb24sICZkdW1teSkpCisgICAgICAgICAgaWNvblVSTHMu
YXBwZW5kKGRlZmF1bHRVUkwoVG91Y2hJY29uKSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGlj
b25VUkxzOworICAgIH0KIAogICAgIGlmIChpY29uVHlwZXMgJiBGYXZpY29uICYmICFhcHBlbmRU
b0ljb25VUkxzKEZhdmljb24sICZpY29uVVJMcykpCiAgICAgICAgIGljb25VUkxzLmFwcGVuZChk
ZWZhdWx0VVJMKEZhdmljb24pKTsKQEAgLTIxNCw2ICsyMzEsMTEgQEAgdm9pZCBJY29uQ29udHJv
bGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24gaWNvbkxvYWRE
ZWNpc2lvbikKIAogYm9vbCBJY29uQ29udHJvbGxlcjo6YXBwZW5kVG9JY29uVVJMcyhJY29uVHlw
ZSBpY29uVHlwZSwgSWNvblVSTHMqIGljb25VUkxzKQogeworICAgIGlmIChpY29uVHlwZSA9PSBB
bnlJY29uKSB7CisgICAgICBpY29uVVJMcy0+YXBwZW5kKG1fZnJhbWUtPmRvY3VtZW50KCktPmFs
bEljb25VUkxzKCkpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgSWNvblVSTCB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKICAgICBpZiAodXJs
Lm1faWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyOCw3ICsy
NTAsNyBAQCBJY29uVVJMIEljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKEljb25UeXBlIGljb25U
eXBlKQogICAgIEtVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsK
ICAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJl
dHVybiBJY29uVVJMKCk7Ci0KKyAgICAgICAgCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3Vs
ZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY291bGRTZXRQcm90b2NvbCwgY291bGRTZXRQcm90b2NvbCk7CkBA
IC0yMzcsMTYgKzI1OSwxNiBAQCBJY29uVVJMIEljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKElj
b25UeXBlIGljb25UeXBlKQogICAgICAgICB1cmwuc2V0UG9ydChkb2N1bWVudFVSTC5wb3J0KCkp
OwogICAgIGlmIChpY29uVHlwZSA9PSBGYXZpY29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIv
ZmF2aWNvbi5pY28iKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBGYXZpY29uKTsKKyAg
ICAgICAgcmV0dXJuIEljb25VUkwodXJsLCAiIiwgRmF2aWNvbiwgdHJ1ZSk7CiAgICAgfQogI2lm
IEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCiAgICAgaWYgKGljb25UeXBlID09IFRvdWNoUHJl
Y29tcG9zZWRJY29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1w
cmVjb21wb3NlZC5wbmciKTsKLSAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCBUb3VjaFByZWNv
bXBvc2VkSWNvbik7CisgICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgIiIsIFRvdWNoUHJlY29t
cG9zZWRJY29uLCB0cnVlKTsKICAgICB9CiAgICAgaWYgKGljb25UeXBlID09IFRvdWNoSWNvbikg
ewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24ucG5nIik7Ci0gICAgICAg
IHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hJY29uKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwo
dXJsLCAiIiwgVG91Y2hJY29uLCB0cnVlKTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gSWNv
blVSTCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100393</attachid>
            <date>2011-07-11 17:42:27 -0700</date>
            <delta_ts>2011-07-18 13:05:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110711174224.patch</filename>
            <type>text/plain</type>
            <size>11762</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNjhkZDViZDBhNWNmMDAxZDJlNTI4
MzQwYjA2OWU3ZWU4YWNmZDU1Li41YTgwNzBiYjFlNjQwYzk1ZjI1YTdhNzhjNDlkMGIyYWM1NzNj
Nzk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTEgIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMDggIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZDsgbmV3IGNocm9taXVtIEdQVSBwaXhlbCByZXN1bHRzIGZv
ciBvdmVyZmxvdy1zY3JvbGwtZXhwZWN0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDY5YzJhZmUz
MzdmOWRmYmE5ZWY5OGNkMDQwNDM4YTllZTczYjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
IEBACitJY29uIHNpemUgaXM6IDIzeDQ3IDE5eDQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lj
b24tc2l6ZS1wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZmQxYTYxODdmOGRmMTA0MGVhNDIy
Y2ZmNWY0YjVlMzgxMjhiNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXNpemUtcHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNv
biIgc2l6ZXM9IjIzeDQ3IDE5eDQyIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90
ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0
KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRl
YnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0
KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisgICAgaWNvblNpemUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJsaW5rIilbMF0uc2l6ZXM7CisgICAgZGVidWdPdXRwdXQgKCdJY29uIHNpemUgaXM6ICcg
KyBpY29uU2l6ZSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5U
ZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzE3ZTdjZTI2MDk5YmJjMWQxYzY5ZjI2MGFhOWE0MjQ1YjFmYmE0Li5k
MzU2NGU2NTcyMGVkMTQ4ZGY5ZDQ1YzkyYTY5MmNmMDZhMmMyZDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTEtMDctMTEgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9yIGxpbmsgdGFnIGZyb20g
SFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3
Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9h
ZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29u
Q29udHJvbGxlcjo6ZGVmYXVsdFVSTCk6CisKIDIwMTEtMDctMDggIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWZhY3RvciBvdmVycmlkZSBzaXplIHRvIGJlIGEg
c2l6ZSByYXRoZXIgdGhhbiBqdXN0IGFuIGludApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
OTI1MjQ4Mzc2OWY2ZWM1MzAxMjMwNDI5MGNmMGY2Mzk5YWY2N2NkMS4uMTU2ZTRhMzFjZWRhOTI2
ZWVjNzYzYTFhYWMxYzNmMjI2Y2JkZTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01
LDcgKzUsNyBAQAogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFw
QHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTQzNDUsMTAgKzQzNDUsMTAgQEAgSWNvblVSTCBEb2N1bWVudDo6
aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9pY29uVVJMc1t0
b0ljb25JbmRleChpY29uVHlwZSldOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29uVHlw
ZSkKK3ZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIEljb25UeXBlIGljb25UeXBlKQog
ewogICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2lu
dCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0aGUgIm1pbWVUeXBlIgot
ICAgIEljb25VUkwgbmV3VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBpY29uVHlwZSk7
CisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIHNpemVzLCBp
Y29uVHlwZSk7CiAgICAgaWYgKGljb25VUkwoaWNvblR5cGUpLm1faWNvblVSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBlbHNlIGlmICghbWltZVR5cGUuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1NjU4ZjI0NzUzZWNjZDVmMTc2MjlhMTc0
NTk0NzY4NGE0MDQ3ZWEwLi5mODRlOTM2YjY2YzRmYWVmNzRmNDI0MDUzN2Y3MWY3NzY2ZmIyNWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTEyLDcgKzkxMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxh
Y2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAogICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IEljb25UeXBlKTsKKyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOwogICAgIHZvaWQgc2V0SWNvblVSTChjb25z
dCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0
aXZlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKaW5kZXggNjQ4NmNhNDMyZWY0NzQ3Y2Q2NDQ5MDcy
NDljOWRiOWI5ODc0YWIzNS4uYjExODMwZjNmZGU4YTg5ZGEwY2ZlNjNhMGQzYmNjZWU0ZTdmN2I5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSWNvblVSTC5oCkBAIC01MCw2ICs1MCw3IEBAIGVudW0gSWNvblR5cGUgewog
CiBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBTdHJpbmcg
bV9zaXplczsKICAgICBLVVJMIG1faWNvblVSTDsKIAogICAgIEljb25VUkwoKQpAQCAtNTcsOCAr
NTgsOSBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgewogICAgIH0KIAotICAgIEljb25VUkwoY29u
c3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorICAgIEljb25VUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHNpemVzLCBJY29uVHlwZSB0eXBlKQogICAgICAgICA6IG1faWNvblR5
cGUodHlwZSkKKyAgICAgICAgLCBtX3NpemVzKHNpemVzKQogICAgICAgICAsIG1faWNvblVSTCh1
cmwpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KaW5kZXggMTY3OWU5NmEwMGE0ZjM0MTFhOWZlMGFiNzc4MWViYTc2NDdkYjI1Mi4uZDczNDVk
NGQ4ODlkY2VjY2E4YjJhOTliZWIzM2ZmNTQ2MWQ4NzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTI3MSw2ICsyNzEsNyBAQCBzY3JvbGxpbmcKIHNl
bGVjdGVkCiBzaGFwZQogc2l6ZQorc2l6ZXMKIHNvcnRhYmxlCiBzb3J0ZGlyZWN0aW9uCiBzcGFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNDMzNTMyOWM5M2Q2
ZmE5NmJkMDg4ODYwYWI2YmRmMmYzYzBkMWY5MS4uMzU3MzBiZDhjMTFkMjY4MmM4M2U4NGI1NjVl
M2E1MTE2MjU4NmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApA
QCAtMTMzLDYgKzEzMyw5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlw
ZUF0dHIpIHsKICAgICAgICAgbV90eXBlID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgcHJvY2Vz
cygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVzQXR0cikgeworICAgICAg
ICBtX3NpemVzID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG1lZGlhQXR0cikgewogICAgICAgICBtX21lZGlhID0gYXR0
ci0+dmFsdWUoKS5zdHJpbmcoKS5sb3dlcigpOwogICAgICAgICBwcm9jZXNzKCk7CkBAIC0xNzEs
NyArMTc0LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgU3RyaW5n
IHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKIAotICAgIGlmICghbV9saW5rTG9hZGVyLmxvYWRMaW5r
KG1fcmVsQXR0cmlidXRlLCB0eXBlLCBtX3VybCwgZG9jdW1lbnQoKSkpCisgICAgaWYgKCFtX2xp
bmtMb2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMsIG1fdXJsLCBk
b2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBhY2NlcHRJZlR5cGVDb250
YWluc1RleHRDU1MgPSBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5z
ZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+dHJlYXRzQW55VGV4
dENTU0xpbmtBc1N0eWxlc2hlZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CmluZGV4IGVmM2IwYTY4NzFiNTczOWI0M2IyNDY4MjQ1NGY1NmEzYjAwZjZhMjEuLjNiOTYwMmE0
OGMyMWZhZGE2M2QyZmMzNGZhOGRmN2ZlNDc5N2IyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaApAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIEtVUkwgbV91cmw7
CiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBTdHJpbmcgbV9tZWRpYTsKKyAgICBTdHJpbmcgbV9z
aXplczsKICAgICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9s
b2FkaW5nOwogICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5pZGwKaW5kZXggMWYzNjIzMjY5YjNiM2FiNWJhODU4ZWUzZjY0YmUx
YWMyNzAxM2QwMy4uZGZmYjc1MWIxNGVmMzQ5NzU3ZmY5Y2VkZDIxNDFmZWY0NTFkYWE3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbApAQCAtMjgsNiArMjgsNyBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG1lZGlh
OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyByZWw7CiAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHJldjsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZs
ZWN0XSBET01TdHJpbmcgc2l6ZXM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3Ry
aW5nIHRhcmdldDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdHlwZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGI5MjQwODgwNzFkODU4ZjQx
MzE2YzNkYmNjNjRhN2UzMDQ0MDE4MzQuLjRlNTg5MWRhNzg3NTY1ZTljZWJhZTkwZDY3YTc3MWNl
M2YzMzU3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTg1LDEzICs4
NSwxMyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0
cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiBocmVm
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBl
ciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJh
bWVzCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhy
ZWYuaXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fY2xpZW50
LT5zaG91bGRMb2FkTGluaygpKSAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZG9jdW1lbnQtPnNldEljb25VUkwoaHJlZi5zdHJpbmcoKSwgdHlwZSwgcmVsQXR0cmlidXRlLm1f
aWNvblR5cGUpOworICAgICAgICBkb2N1bWVudC0+c2V0SWNvblVSTChocmVmLnN0cmluZygpLCB0
eXBlLCBzaXplcywgcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChy
ZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
aAppbmRleCA2YzQ0OGQ4ZjQ0MmI1ZTg1NzU0YjJkYjRiODhlOWE2MjZlZDhmZTkwLi43YzQ5ZWJi
Y2VhOTQ4YzhlNzBjYTkyNzA4NGYxNzk0MWEzYTYxNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmgKQEAgLTUwLDcgKzUwLDggQEAgcHVibGljOgogICAgIC8vIGZyb20gQ2FjaGVkUmVz
b3VyY2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqKTsKICAgICAKLSAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOworICAgIGJvb2wgbG9h
ZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBzaXplcywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmLCBEb2N1bWVudCop
OwogCiBwcml2YXRlOgogICAgIHZvaWQgbGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2Fk
ZXI+Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAK
aW5kZXggNzdkNTJlZTQ0ZjFlNmUxOWE4YjI1NDYwNzk5ODRkOTg1MzA2MzA5ZS4uNjcxYjYxMDA2
ZGIxMzNjNmI5NWViOTc2OWIwNGU5M2VmNzdkMjdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDExIEtyaXMgSm9yZGFuIDxrcmlzam9yZGFuQGdtYWlsLmNvbT4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzcsMTYgKzIzOCwxNiBAQCBJY29uVVJM
IEljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKEljb25UeXBlIGljb25UeXBlKQogICAgICAgICB1
cmwuc2V0UG9ydChkb2N1bWVudFVSTC5wb3J0KCkpOwogICAgIGlmIChpY29uVHlwZSA9PSBGYXZp
Y29uKSB7CiAgICAgICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5pY28iKTsKLSAgICAgICAgcmV0
dXJuIEljb25VUkwodXJsLCBGYXZpY29uKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwodXJsLCAi
IiwgRmF2aWNvbik7CiAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCiAgICAg
aWYgKGljb25UeXBlID09IFRvdWNoUHJlY29tcG9zZWRJY29uKSB7CiAgICAgICAgIHVybC5zZXRQ
YXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZC5wbmciKTsKLSAgICAgICAgcmV0dXJu
IEljb25VUkwodXJsLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisgICAgICAgIHJldHVybiBJY29u
VVJMKHVybCwgIiIsIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKICAgICB9CiAgICAgaWYgKGljb25U
eXBlID09IFRvdWNoSWNvbikgewogICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWlj
b24ucG5nIik7Ci0gICAgICAgIHJldHVybiBJY29uVVJMKHVybCwgVG91Y2hJY29uKTsKKyAgICAg
ICAgcmV0dXJuIEljb25VUkwodXJsLCAiIiwgVG91Y2hJY29uKTsKICAgICB9CiAjZW5kaWYKICAg
ICByZXR1cm4gSWNvblVSTCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101192</attachid>
            <date>2011-07-18 13:05:24 -0700</date>
            <delta_ts>2011-07-21 17:09:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110718130521.patch</filename>
            <type>text/plain</type>
            <size>13822</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjkwMDIzYTQzYzFmMWM4ZDIxYWY1
MWI4NjljZWRhOGZmYTA2OWU3Li43NTM1YjRhNmY2M2FkOTE2YTQ5ZGQwYjdiNWZkMWVkZGQ0Y2Yx
N2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTggIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IC0td2Via2l0LXZpc3VhbC13b3JkIGNyYXNoIG9uIG1peGVkIGVkaXRhYmlsaXR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NDE5MzJjNmFkZjA2ODZkZDU1ZDMzYWZhNzNmZjllNDlkMDQ4MzQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9m
IHRoZSBsaW5rIGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGljb24uc2l6ZXMubGVuZ3RoIGlzIDIKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMjN4NDcg
MTl4NDIiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlzIDMKK1BBU1MgaWNvbi5zaXplcy52YWx1
ZSBpcyAiMTB4MTAgMjB4MjAgMzB4MzAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNv
bi1zaXplLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXNpemUtcHJv
cGVydHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTAwYWVmYmRjM2FlZGI2NTg5MTIyY2UzZTU4ZTZkMmZm
ZjhmYjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXpl
LXByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIGlk
PSJyZWwtaWNvbiIgcmVsPSJzaG9ydGN1dCBpY29uIiBzaXplcz0iMjN4NDcgMTl4NDIiIHR5cGU9
ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cDovL3Rlc3QuY29tL29sZGZhdmljb24uaWNvIi8+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgIAorICA8c2NyaXB0PgorICAgICAgZGVzY3JpcHRpb24o
J1Rlc3RzIGZvciBzaXplcyBhdHRyaWJ1dGUgb2YgdGhlIGxpbmsgZWxlbWVudC4nKTsKKworICAg
ICAgdmFyIGljb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlbC1pY29uIik7CisKKyAgICAg
IHNob3VsZEV2YWx1YXRlVG8oJ2ljb24uc2l6ZXMubGVuZ3RoJywyKTsKKyAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnaWNvbi5zaXplcy52YWx1ZScsIjIzeDQ3IDE5eDQyIik7CisgICAgICAK
KyAgICAgIGljb24uc2l6ZXM9IjEweDEwIDIweDIwIDMweDMwIjsKKyAgICAgIHNob3VsZEV2YWx1
YXRlVG8oJ2ljb24uc2l6ZXMubGVuZ3RoJywzKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnaWNvbi5zaXplcy52YWx1ZScsIjEweDEwIDIweDIwIDMweDMwIik7CisKKyAgICAgIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+ICAKKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZTVhZmUwZDc2MzQzYjFkMDI3NWY5NjY5MjliNmUzZmE3ODM3YTBkLi5m
ODhmNmFhNzg4MjU4ZWU3NzU4MjkxOGUyNTllMTA4YjNhODY0NTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTEtMDctMTggIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9yIGxpbmsgdGFnIGZyb20g
SFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3
Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxMaW5rRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxMaW5rRWxl
bWVudDo6c2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTGlua0VsZW1lbnQ6OnNldFNp
emVzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTExpbmtFbGVtZW50OjpzaXpl
c0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTExpbmtFbGVtZW50Ojpz
aXplc0FjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bjoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVt
ZW50OjpzZXRTaXplcyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5pZGw6CisKIDIwMTEtMDctMTUgIFhpYW9tZWkgSmkg
IDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIC0td2Via2l0LXZpc3VhbC13b3JkIGNyYXNo
IG9uIG1peGVkIGVkaXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGViZTk2NmIxMDZkYjEy
ODhlYmY4YzQzZGRmM2Y0NmVlYjZmNjliZi4uYTE4Yjk0YzUwOGIyOWFiOGI0NGVhMjliODFjOThj
YTc4NjhmZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjE0NCw2ICsyMTQ0LDcgQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5ZDM0NDhkOTdmNWZmZjFkMDM1MmE3Yjc5ZmE4NGNk
MGNiODhjZjFiLi40YzMzMGJlMjUxOWMzY2FjMTE0MzFkY2Q1NTgxY2JjNGJjNjNjNmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMTg0LDYgKzE4NCw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgXAorICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAg
XAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRD
dXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TExpbmtFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TExpbmtFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzY2ZjOTlkNDU0MDQ1ZmVkZGIwNjk2MjY4YWJi
MmI5YjgzOTJjNGRkLi5iYmQ1NWE5ZTliNzlmYzQ3NDEyNDcxMTk1ZDM2NDVmYjFjYThmNDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsOSArMjgsMjUgQEAKICNpbmNsdWRlICJKU0hUTUxMaW5rRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSAiSlNET01TZXR0YWJsZVRva2VuTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitK
U1ZhbHVlIEpTSFRNTExpbmtFbGVtZW50OjpzaXplcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgSFRNTExpbmtFbGVtZW50KiBvdXRwdXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1l
bnQqPihpbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIob3V0cHV0LT5zaXplcygpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KKwordm9pZCBKU0hUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxMaW5rRWxlbWVudCogb3V0cHV0ID0gc3RhdGljX2Nh
c3Q8SFRNTExpbmtFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICBvdXRwdXQtPnNldFNpemVzKHZhbHVl
VG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YTIyNjQ1ZDQ2
ZDU0MmYwMGIyMjNkZTlmNGVlMDM5Mjg5OTNhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MTGlu
a0VsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRl
ICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTExpbmtFbGVtZW50OjpzaXplc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxMaW5rRWxlbWVudC5zaXplcy5fZ2V0Iik7CisgICAgSFRNTExpbmtFbGVt
ZW50KiBpbXAgPSBWOEhUTUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIHRvVjgoaW1wLT5zaXplcygpKTsKK30KKwordm9pZCBWOEhUTUxMaW5rRWxlbWVu
dDo6c2l6ZXNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uSFRNTExpbmtFbGVtZW50LnNpemVzLl9zZXQiKTsKKyAgICBIVE1M
TGlua0VsZW1lbnQqIGltcCA9IFY4SFRNTExpbmtFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBpbXAtPnNldFNpemVzKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCmluZGV4IDE2NzllOTZhMDBhNGYzNDExYTlmZTBhYjc3ODFlYmE3NjQ3ZGIyNTIuLmQ3
MzQ1ZDRkODg5ZGNlY2NhOGIyYTk5YmViMzNmZjU0NjFkODc2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0yNzEsNiArMjcxLDcgQEAgc2Nyb2xsaW5n
CiBzZWxlY3RlZAogc2hhcGUKIHNpemUKK3NpemVzCiBzb3J0YWJsZQogc29ydGRpcmVjdGlvbgog
c3BhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDQzMzUzMjlj
OTNkNmZhOTZiZDA4ODg2MGFiNmJkZjJmM2MwZDFmOTEuLjE0OWYzNWM0YTVkYWQzYzYxMjY1MmUz
Yzc4MDExYzM4MDE4NmQzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA5IFJvYiBCdWlzIChyd2xidWlzQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxpbmUgSFRN
TExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCisgICAg
LCBtX3NpemVzKERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKSkKICAgICAsIG1fbG9hZGlu
ZyhmYWxzZSkKICAgICAsIG1faXNFbmFibGVkVmlhU2NyaXB0KGZhbHNlKQogICAgICwgbV9jcmVh
dGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQpAQCAtMTMzLDYgKzEzNSw5IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgbV90eXBlID0g
YXR0ci0+dmFsdWUoKTsKICAgICAgICAgcHJvY2VzcygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IHNpemVzQXR0cikgeworICAgICAgICBzZXRTaXplcyhhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1lZGlh
QXR0cikgewogICAgICAgICBtX21lZGlhID0gYXR0ci0+dmFsdWUoKS5zdHJpbmcoKS5sb3dlcigp
OwogICAgICAgICBwcm9jZXNzKCk7CkBAIC00NDAsNCArNDQ1LDE2IEBAIGJvb2wgSFRNTExpbmtF
bGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hlZXQgJiYgbV9zaGVldC0+
ZGlzYWJsZWQoKTsKIH0KIAorRE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxMaW5rRWxlbWVudDo6
c2l6ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemVzLmdldCgpOworfQorCit2b2lkIEhU
TUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX3Np
emVzLT5zZXRWYWx1ZSh2YWx1ZSk7Cit9CisKKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaAppbmRleCBlZjNiMGE2ODcxYjU3MzliNDNiMjQ2ODI0NTRmNTZhM2IwMGY2YTIx
Li5kMTkzZTA4ZTg0YTJkZWMyMmYxNDM4OTYyNTkxMTE2NmI3YjMwMTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjYsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCisjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgi
CkBAIC01OCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0OyB9CiAgICAgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRTaXpl
cyhjb25zdCBTdHJpbmcmKTsKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdCogc2l6ZXMoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CkBAIC05OSw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIEtVUkwgbV91cmw7CiAg
ICAgU3RyaW5nIG1fdHlwZTsKICAgICBTdHJpbmcgbV9tZWRpYTsKKyAgICBSZWZQdHI8RE9NU2V0
dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJp
YnV0ZTsKICAgICBib29sIG1fbG9hZGluZzsKICAgICBib29sIG1faXNFbmFibGVkVmlhU2NyaXB0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCmluZGV4IDFmMzYyMzI2OWIz
YjNhYjViYTg1OGVlM2Y2NGJlMWFjMjcwMTNkMDMuLjdmNDhhNzI3NDBiNDBmNDIxNmU1MmQ1Njdm
ZjgyMDhhODA0YzkxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCw2ICsy
OSw5IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgbWVkaWE7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHJlbDsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmV2OworI2lmIGRlZmluZWQoTEFO
R1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICBhdHRyaWJ1
dGUgW0N1c3RvbV0gRE9NU2V0dGFibGVUb2tlbkxpc3Qgc2l6ZXM7CisjZW5kaWYKICAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdGFyZ2V0OwogICAgICAgICBhdHRyaWJ1dGUg
W1JlZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101672</attachid>
            <date>2011-07-21 17:09:29 -0700</date>
            <delta_ts>2011-07-21 21:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110721170927.patch</filename>
            <type>text/plain</type>
            <size>24148</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjkwMDIzYTQzYzFmMWM4ZDIxYWY1
MWI4NjljZWRhOGZmYTA2OWU3Li43NTM1YjRhNmY2M2FkOTE2YTQ5ZGQwYjdiNWZkMWVkZGQ0Y2Yx
N2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTggIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IC0td2Via2l0LXZpc3VhbC13b3JkIGNyYXNoIG9uIG1peGVkIGVkaXRhYmlsaXR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzM3MWNiYjVhMTdhZjNmYTUyYzMyZjc0MTI1MmE3NTVmYTZlZmI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9m
IHRoZSBsaW5rIGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGljb24uc2l6ZXMubGVuZ3RoIGlzIDIKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMjN4NDcg
MTl4NDIiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlzIDQKK1BBU1MgaWNvbi5zaXplcy52YWx1
ZSBpcyAiMTB4MTAgMjB4MjAgMzB4MzAgNDB4NDAiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlz
IDMKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMTF4MTEgMjJYMjIgMzN4MzMiCitQQVNTIGlj
b24uc2l6ZXMubGVuZ3RoIGlzIDYKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMTF4MTEgYW55
IEFueSBBTlkgYU55IGFuWSIKK1BBU1MgaWNvbi5zaXplcy5sZW5ndGggaXMgMAorUEFTUyBpY29u
LnNpemVzLnZhbHVlIGlzICIiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlzIDAKK1BBU1MgaWNv
bi5zaXplcy52YWx1ZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tc2l6
ZS1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTBmZTBmODY4NzY4MDZhNTc0MDA3YzcwY2IwYTMxMWE0MzIwZWU2
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tc2l6ZS1wcm9w
ZXJ0eS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayBpZD0icmVs
LWljb24iIHJlbD0ic2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjIzeDQ3IDE5eDQyIiB0eXBlPSJpbWFn
ZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPGxpbmsg
aWQ9ImludmFsaWQtc2l6ZXMiIHJlbD0iaWNvbiIgc2l6ZXM9IjExeDExIDIzeHg0NyB4NDcgNDd4
IGZvb2JhciAwM3gxMyAyMlgyMiAxeDAgMHgxIDEzeDAzIDEyMzQ1IDIzeGZvbyBmb294NDcgMjMh
NDcgMzN4MzMiLz4KKzxsaW5rIGlkPSJhbnktc3VwcG9ydCIgcmVsPSJpY29uIiBzaXplcz0iMTF4
MTEgYW55IEFueSBBTlkgYU55IGFuWSI+Cis8bGluayBpZD0iZW1wdHktc2l6ZXMiIHJlbD0iaWNv
biIgc2l6ZXM9IiIgLz4KKzxsaW5rIGlkPSJuby1zaXplcyIgcmVsPSJpY29uIiAvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAKKyAgPHNjcmlwdD4KKyAgICAgIGRlc2NyaXB0aW9uKCdUZXN0
cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9mIHRoZSBsaW5rIGVsZW1lbnQuJyk7CisKKyAgICAgIHZh
ciBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWwtaWNvbiIpOworCisgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMik7CisgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIyM3g0NyAxOXg0MiIpOworICAgICAgCisgICAg
ICBpY29uLnNpemVzPSIxMHgxMCAyMHgyMCAzMHgzMCA0MHg0MCI7CisgICAgICBzaG91bGRFdmFs
dWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsNCk7CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIxMHgxMCAyMHgyMCAzMHgzMCA0MHg0MCIpOworICAgICAg
CisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnZhbGlkLXNpemVzIik7Cisg
ICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMyk7CisgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIxMXgxMSAyMlgyMiAzM3gzMyIp
OworCisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbnktc3VwcG9ydCIpOwor
ICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaWNvbi5zaXplcy5sZW5ndGgnLDYpOworICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdpY29uLnNpemVzLnZhbHVlJywiMTF4MTEgYW55IEFueSBBTlkg
YU55IGFuWSIpOworCisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbXB0eS1z
aXplcyIpOworICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaWNvbi5zaXplcy5sZW5ndGgnLDApOwor
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpY29uLnNpemVzLnZhbHVlJywiIik7CisKKyAg
ICAgIGljb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXNpemVzIik7CisgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMCk7CisgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIiKTsKKworICAgICAgdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4gIAorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGNlNWFmZTBkNzYzNDNiMWQwMjc1Zjk2NjkyOWI2ZTNmYTc4MzdhMGQuLmY4OGY2YWE3ODgy
NThlZTc3NTgyOTE4ZTI1OWUxMDhiM2E4NjQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAxMS0wNy0xOCAgUmFjaGVsIEJsdW0gIDxncm9ieUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW1wbGVtZW50IHNpemVzIGF0dHJpYnV0ZSBmb3IgbGluayB0YWcgZnJvbSBIVE1MNQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Rv
bS9pY29uLXNpemUtcHJvcGVydHkuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTExpbmtFbGVtZW50OjpzaXpl
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNz
b3JTZXR0ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6SFRNTExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpzaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldFNp
emVzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmlkbDoKKwogMjAxMS0wNy0xNSAgWGlhb21laSBKaSAgPHhqaUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgLS13ZWJraXQtdmlzdWFsLXdvcmQgY3Jhc2ggb24gbWl4ZWQg
ZWRpdGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0ZWJlOTY2YjEwNmRiMTI4OGViZjhjNDNk
ZGYzZjQ2ZWViNmY2OWJmLi43MDRkNzZhNTBlNDFlMWU1NDFlMWQ5NjI5YjI1ZmJlMGRkODQ1MDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50
Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtF
bGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCkBA
IC0zMDc1LDYgKzMwNzYsOCBAQAogICAgICAgICAgICAgJ2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgn
LAogICAgICAgICAgICAgJ2h0bWwvU3RlcFJhbmdlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9T
dGVwUmFuZ2UuaCcsCisgICAgICAgICAgICAnaHRtbC9TaXplc0xpc3QuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL1NpemVzTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL1N1Ym1pdElucHV0VHlw
ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvU3VibWl0SW5wdXRUeXBlLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDlkMzQ0
OGQ5N2Y1ZmZmMWQwMzUyYTdiNzlmYTg0Y2QwY2I4OGNmMWIuLjY0YjY2YzhiZDMzZWRlZDg4NzJh
NWZiN2YxYjVmMDFjMTFlM2JkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xODQsNiArMTg0LDcgQEAg
djggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRF
bGVtZW50Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5r
RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtNzU1LDYgKzc1Niw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGh0bWwvUmVzZXRJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcCBcCisgICAgaHRtbC9T
aXplc0xpc3QuY3BwIFwKICAgICBodG1sL1N1Ym1pdElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwv
VGVsZXBob25lSW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9UZXh0RG9jdW1lbnQuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCAzY2ZjOTlkNDU0MDQ1ZmVkZGIwNjk2MjY4YWJiMmI5YjgzOTJjNGRkLi5i
YmQ1NWE5ZTliNzlmYzQ3NDEyNDcxMTk1ZDM2NDVmYjFjYThmNDM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsOSAr
MjgsMjUgQEAKICNpbmNsdWRlICJKU0hUTUxMaW5rRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRN
TExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01TZXR0YWJsZVRva2VuTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitKU1ZhbHVlIEpTSFRNTExp
bmtFbGVtZW50OjpzaXplcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSFRNTExpbmtF
bGVtZW50KiBvdXRwdXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihpbXBsKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIob3V0cHV0LT5zaXplcygpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KKwordm9pZCBKU0hU
TUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIEhUTUxMaW5rRWxlbWVudCogb3V0cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVt
ZW50Kj4oaW1wbCgpKTsKKyAgICBvdXRwdXQtPnNldFNpemVzKHZhbHVlVG9TdHJpbmdXaXRoTnVs
bENoZWNrKGV4ZWMsIHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlu
a0VsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YTIyNjQ1ZDQ2ZDU0MmYwMGIyMjNkZTlm
NGVlMDM5Mjg5OTNhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MTGlua0VsZW1lbnQuaCIKKwor
I2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4RE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTExpbmtF
bGVtZW50OjpzaXplc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxM
aW5rRWxlbWVudC5zaXplcy5fZ2V0Iik7CisgICAgSFRNTExpbmtFbGVtZW50KiBpbXAgPSBWOEhU
TUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjgo
aW1wLT5zaXplcygpKTsKK30KKwordm9pZCBWOEhUTUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJE
T00uSFRNTExpbmtFbGVtZW50LnNpemVzLl9zZXQiKTsKKyAgICBIVE1MTGlua0VsZW1lbnQqIGlt
cCA9IFY4SFRNTExpbmtFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbXAt
PnNldFNpemVzKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwCmlu
ZGV4IDNhODZlOWMwMDAyNDQyOThkMjRhZGNjM2QxMDVjMWVkNDI0NzQ5ZjAuLmI0ZjE1MmE5NzU4
MjBkOWJjN2JmMjVmNGMxZjdlOTFhZDNhNjIxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwCkBAIC00NiwxNCArNDYsMTQgQEAgY29uc3QgQXRvbWlj
U3RyaW5nIERPTVNldHRhYmxlVG9rZW5MaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
CiBib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcm
IHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBpZiAoIXZhbGlkYXRlVG9r
ZW4odG9rZW4sIGVjKSkKKyAgICBpZiAoIXZhbGlkYXRlVG9rZW5JbnRlcm5hbCh0b2tlbiwgZWMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fdG9rZW5zLmNvbnRhaW5zKHRv
a2VuKTsKIH0KIAogdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkKGNvbnN0IEF0b21pY1N0
cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFsaWRhdGVUb2tl
bih0b2tlbiwgZWMpIHx8IG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKSkKKyAgICBpZiAoIXZhbGlk
YXRlVG9rZW5JbnRlcm5hbCh0b2tlbiwgZWMpIHx8IG1fdG9rZW5zLmNvbnRhaW5zKHRva2VuKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGFkZEludGVybmFsKHRva2VuKTsKIH0KQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6YWRkSW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJiB0b2tlbikKIAogdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0
IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghdmFs
aWRhdGVUb2tlbih0b2tlbiwgZWMpIHx8ICFtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCisgICAg
aWYgKCF2YWxpZGF0ZVRva2VuSW50ZXJuYWwodG9rZW4sIGVjKSB8fCAhbV90b2tlbnMuY29udGFp
bnModG9rZW4pKQogICAgICAgICByZXR1cm47CiAgICAgcmVtb3ZlSW50ZXJuYWwodG9rZW4pOwog
fQpAQCAtODIsNyArODIsNyBAQCB2b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpyZW1vdmVJbnRl
cm5hbChjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogCiBib29sIERPTVNldHRhYmxlVG9rZW5M
aXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRva2VuLCBlYykpCisgICAgaWYgKCF2YWxpZGF0
ZVRva2VuSW50ZXJuYWwodG9rZW4sIGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChtX3Rva2Vucy5jb250YWlucyh0b2tlbikpIHsKICAgICAgICAgcmVtb3ZlSW50ZXJuYWwodG9r
ZW4pOwpAQCAtOTgsNCArOTgsOSBAQCB2b2lkIERPTVNldHRhYmxlVG9rZW5MaXN0OjpzZXRWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fdG9rZW5zLnNldCh2YWx1ZSwgZmFsc2UpOwog
fQogCitib29sIERPTVNldHRhYmxlVG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2VuSW50ZXJuYWwoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIERPTVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNl
dHRhYmxlVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5M
aXN0LmgKaW5kZXggOGY2ZmQ0ZTc4OTA3MDgyZmRlNGQwMjdiMDNmODM5NGYzM2Q2NWNjNC4uYjZl
M2Q2OGRhZTNmMjAzMmJiNzIwNTI1NTJlNmViZjEwZGI1OTk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaApAQCAtNTUsMTAgKzU1LDEzIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCk7IH0K
IAogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBET01TZXR0YWJsZVRva2Vu
TGlzdCgpOworICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVRva2VuSW50ZXJuYWwoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCBhZGRJ
bnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KaW5kZXggMTY3OWU5NmEwMGE0ZjM0MTFhOWZlMGFiNzc4MWViYTc2NDdk
YjI1Mi4uZDczNDVkNGQ4ODlkY2VjY2E4YjJhOTliZWIzM2ZmNTQ2MWQ4NzZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTI3MSw2ICsyNzEsNyBAQCBz
Y3JvbGxpbmcKIHNlbGVjdGVkCiBzaGFwZQogc2l6ZQorc2l6ZXMKIHNvcnRhYmxlCiBzb3J0ZGly
ZWN0aW9uCiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXgg
NDMzNTMyOWM5M2Q2ZmE5NmJkMDg4ODYwYWI2YmRmMmYzYzBkMWY5MS4uM2FjZGIxYzNiMzIzMDU1
ZTY3ZTQxZjMyNmU3Y2RmZDM0NTk0OGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcApAQCAtNCw2ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgUm9iIEJ1aXMgKHJ3bGJ1aXNAZ21haWwuY29tKQorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTUzLDYgKzU0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIGlu
bGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2xpbmtMb2FkZXIodGhp
cykKKyAgICAsIG1fc2l6ZXMoU2l6ZXNMaXN0OjpjcmVhdGUoKSkKICAgICAsIG1fbG9hZGluZyhm
YWxzZSkKICAgICAsIG1faXNFbmFibGVkVmlhU2NyaXB0KGZhbHNlKQogICAgICwgbV9jcmVhdGVk
QnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQpAQCAtMTMzLDYgKzEzNSw5IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgbV90eXBlID0gYXR0
ci0+dmFsdWUoKTsKICAgICAgICAgcHJvY2VzcygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNpemVzQXR0cikgeworICAgICAgICBzZXRTaXplcyhhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1lZGlhQXR0
cikgewogICAgICAgICBtX21lZGlhID0gYXR0ci0+dmFsdWUoKS5zdHJpbmcoKS5sb3dlcigpOwog
ICAgICAgICBwcm9jZXNzKCk7CkBAIC00NDAsNCArNDQ1LDE0IEBAIGJvb2wgSFRNTExpbmtFbGVt
ZW50OjpkaXNhYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hlZXQgJiYgbV9zaGVldC0+ZGlz
YWJsZWQoKTsKIH0KIAorRE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxMaW5rRWxlbWVudDo6c2l6
ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemVzLmdldCgpOworfQorCit2b2lkIEhUTUxM
aW5rRWxlbWVudDo6c2V0U2l6ZXMoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX3NpemVz
LT5zZXRWYWx1ZSh2YWx1ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCmluZGV4IGVmM2IwYTY4NzFiNTczOWI0M2IyNDY4MjQ1NGY1NmEzYjAwZjZhMjEuLmJjZTU4
N2QxMGI4ZjAwMjI3NmZhZWNlNzgyYTE0MDI4ZDA5N2M0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIK
KyNpbmNsdWRlICJTaXplc0xpc3QuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgiCkBAIC01MywxMSArNTUsMTMg
QEAgcHVibGljOgogCiAgICAgU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdDsKIAotICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSByZW1hbmVkIGlzU3R5bGVTaGVldExvYWRpbmcgYXMgdGhpcyBp
cyBvbmx5IHVzZWQgZm9yIHN0eWxlc2hlZXRzLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSByZW5hbWVkIGlzU3R5bGVTaGVldExvYWRpbmcgYXMgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHN0
eWxlc2hlZXRzLgogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VuYWJs
ZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZFZpYVNjcmlwdDsgfQogICAg
IGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wpOworICAg
IHZvaWQgc2V0U2l6ZXMoY29uc3QgU3RyaW5nJik7CisgICAgRE9NU2V0dGFibGVUb2tlbkxpc3Qq
IHNpemVzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwpAQCAtOTksNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBL
VVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWE7CisgICAg
UmVmUHRyPFNpemVzTGlzdD4gbV9zaXplczsKICAgICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0
cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3Jp
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwKaW5kZXggMWYzNjIzMjY5
YjNiM2FiNWJhODU4ZWUzZjY0YmUxYWMyNzAxM2QwMy4uN2Y0OGE3Mjc0MGI0MGY0MjE2ZTUyZDU2
N2ZmODIwOGE4MDRjOTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50Lmlk
bApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDYg
KzI5LDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBtZWRpYTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmVsOwog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyByZXY7CisjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgICAgIGF0dHJp
YnV0ZSBbQ3VzdG9tXSBET01TZXR0YWJsZVRva2VuTGlzdCBzaXplczsKKyNlbmRpZgogICAgICAg
ICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB0YXJnZXQ7CiAgICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2l6ZXNMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2l6ZXNMaXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjIzZGZkMWYyYWIyZTFkNzU3YTg1YTBlZjk0ZjI5ODdlZjBhY2ViCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TaXplc0xpc3QuY3BwCkBAIC0wLDAg
KzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
aXplc0xpc3QuaCIKKworI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTaXplc0xpc3Q6OlNpemVzTGlzdCgpCit7Cit9CisKK2Jvb2wgU2l6ZXNM
aXN0Ojp2YWxpZGF0ZVRva2VuSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgLy8gRmlyc3QsIHBhcnNlIGFjY29yZGluZyB0
byBiYXNlIHJ1bGVzLgorICAgIGlmICghRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnZhbGlkYXRlVG9r
ZW5JbnRlcm5hbCh0b2tlbiwgZWMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBQ
YXJzZSBzaXplcyBhY2NvcmRpbmcgdG8gYWxnb3JpdGhtIGluIAorICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2xpbmtzLmh0
bWwjcmVsLWljb24KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdG9rZW5B
bnksICgiYW55IikpOworICAgIGlmICh0b2tlbi5sb3dlcigpID09IHRva2VuQW55KQorICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBFeGNlcHRpb25Db2RlIGxvY2FsRWMgPSAwOworICAgIGJvb2wg
emVyb0lzSW52YWxpZCA9IHRydWU7CisgICAgYm9vbCBlbmNvdW50ZXJlZFggPSBmYWxzZTsKKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRva2VuLmxlbmd0aCgpOworICAgIGZvciAgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGxlbmd0aCAmJiAhbG9jYWxFYzsgKytpKSB7CisgICAgICAgIGlmICh0
b2tlbltpXSA9PSAneCcgfHwgdG9rZW5baV0gPT0gJ1gnKSB7CisgICAgICAgICAgICBpZiAoZW5j
b3VudGVyZWRYIHx8ICFpIHx8IGkgPT0gbGVuZ3RoLTEpIAorICAgICAgICAgICAgICAgIGxvY2Fs
RWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgZW5jb3VudGVyZWRYID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHplcm9Jc0ludmFsaWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuW2ld
IDwgJzAnIHx8IHRva2VuW2ldID4gJzknKQorICAgICAgICAgICAgbG9jYWxFYyA9IElOVkFMSURf
Q0hBUkFDVEVSX0VSUjsKKyAgICAgICAgZWxzZSBpZiAoemVyb0lzSW52YWxpZCAmJiB0b2tlbltp
XSA9PSAnMCcpIAorICAgICAgICAgICAgbG9jYWxFYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICB6ZXJvSXNJbnZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFl
bmNvdW50ZXJlZFggJiYgIWxvY2FsRWMpCisgICAgICAgIGxvY2FsRWMgPSBTWU5UQVhfRVJSOwor
CisgICAgaWYgKGxvY2FsRWMpCisgICAgICAgIGVjID0gbG9jYWxFYzsKKworICAgIHJldHVybiAh
bG9jYWxFYzsKK30KKwordm9pZCBTaXplc0xpc3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgU3BhY2VTcGxpdFN0cmluZyB0b2tlbnM7CisgICAgdG9rZW5zLnNldCh2YWx1
ZSwgZmFsc2UpOworICAgIAorICAgIC8vIFJlc2V0IGN1cnJlbnQgdmFsdWUgYW5kIGFkZCB0b2tl
bnMgMS1ieS0xIHRvIGZpbHRlciB1bmRlc2lyYWJsZXMuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoIiIpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZCh0b2tlbnNbaV0s
IGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9TaXplc0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2l6ZXNMaXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWFkNjIyYjI3MDRmYTFjNjM2M2JhZmRjOWE5NDQwZWQ1NWVkMmY1ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2l6ZXNMaXN0LmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaXplc0xpc3RfaAorI2RlZmluZSBTaXpl
c0xpc3RfaAorCisjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVu
dDsKKworY2xhc3MgU2l6ZXNMaXN0IDogcHVibGljIERPTVNldHRhYmxlVG9rZW5MaXN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaXplc0xpc3Q+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpemVzTGlzdCgpKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisKKyAgICBT
aXplc0xpc3QoKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVUb2tlbkludGVybmFsKGNvbnN0
IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNpemVzTGlzdF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101696</attachid>
            <date>2011-07-21 21:02:06 -0700</date>
            <delta_ts>2011-07-22 15:27:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110721210203.patch</filename>
            <type>text/plain</type>
            <size>34574</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwNzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjkwMDIzYTQzYzFmMWM4ZDIxYWY1
MWI4NjljZWRhOGZmYTA2OWU3Li43NTM1YjRhNmY2M2FkOTE2YTQ5ZGQwYjdiNWZkMWVkZGQ0Y2Yx
N2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTggIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IC0td2Via2l0LXZpc3VhbC13b3JkIGNyYXNoIG9uIG1peGVkIGVkaXRhYmlsaXR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzM3MWNiYjVhMTdhZjNmYTUyYzMyZjc0MTI1MmE3NTVmYTZlZmI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9m
IHRoZSBsaW5rIGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGljb24uc2l6ZXMubGVuZ3RoIGlzIDIKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMjN4NDcg
MTl4NDIiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlzIDQKK1BBU1MgaWNvbi5zaXplcy52YWx1
ZSBpcyAiMTB4MTAgMjB4MjAgMzB4MzAgNDB4NDAiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlz
IDMKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMTF4MTEgMjJYMjIgMzN4MzMiCitQQVNTIGlj
b24uc2l6ZXMubGVuZ3RoIGlzIDYKK1BBU1MgaWNvbi5zaXplcy52YWx1ZSBpcyAiMTF4MTEgYW55
IEFueSBBTlkgYU55IGFuWSIKK1BBU1MgaWNvbi5zaXplcy5sZW5ndGggaXMgMAorUEFTUyBpY29u
LnNpemVzLnZhbHVlIGlzICIiCitQQVNTIGljb24uc2l6ZXMubGVuZ3RoIGlzIDAKK1BBU1MgaWNv
bi5zaXplcy52YWx1ZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tc2l6
ZS1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTBmZTBmODY4NzY4MDZhNTc0MDA3YzcwY2IwYTMxMWE0MzIwZWU2
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tc2l6ZS1wcm9w
ZXJ0eS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayBpZD0icmVs
LWljb24iIHJlbD0ic2hvcnRjdXQgaWNvbiIgc2l6ZXM9IjIzeDQ3IDE5eDQyIiB0eXBlPSJpbWFn
ZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPGxpbmsg
aWQ9ImludmFsaWQtc2l6ZXMiIHJlbD0iaWNvbiIgc2l6ZXM9IjExeDExIDIzeHg0NyB4NDcgNDd4
IGZvb2JhciAwM3gxMyAyMlgyMiAxeDAgMHgxIDEzeDAzIDEyMzQ1IDIzeGZvbyBmb294NDcgMjMh
NDcgMzN4MzMiLz4KKzxsaW5rIGlkPSJhbnktc3VwcG9ydCIgcmVsPSJpY29uIiBzaXplcz0iMTF4
MTEgYW55IEFueSBBTlkgYU55IGFuWSI+Cis8bGluayBpZD0iZW1wdHktc2l6ZXMiIHJlbD0iaWNv
biIgc2l6ZXM9IiIgLz4KKzxsaW5rIGlkPSJuby1zaXplcyIgcmVsPSJpY29uIiAvPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAKKyAgPHNjcmlwdD4KKyAgICAgIGRlc2NyaXB0aW9uKCdUZXN0
cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9mIHRoZSBsaW5rIGVsZW1lbnQuJyk7CisKKyAgICAgIHZh
ciBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWwtaWNvbiIpOworCisgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMik7CisgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIyM3g0NyAxOXg0MiIpOworICAgICAgCisgICAg
ICBpY29uLnNpemVzPSIxMHgxMCAyMHgyMCAzMHgzMCA0MHg0MCI7CisgICAgICBzaG91bGRFdmFs
dWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsNCk7CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIxMHgxMCAyMHgyMCAzMHgzMCA0MHg0MCIpOworICAgICAg
CisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnZhbGlkLXNpemVzIik7Cisg
ICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMyk7CisgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIxMXgxMSAyMlgyMiAzM3gzMyIp
OworCisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbnktc3VwcG9ydCIpOwor
ICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaWNvbi5zaXplcy5sZW5ndGgnLDYpOworICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdpY29uLnNpemVzLnZhbHVlJywiMTF4MTEgYW55IEFueSBBTlkg
YU55IGFuWSIpOworCisgICAgICBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbXB0eS1z
aXplcyIpOworICAgICAgc2hvdWxkRXZhbHVhdGVUbygnaWNvbi5zaXplcy5sZW5ndGgnLDApOwor
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpY29uLnNpemVzLnZhbHVlJywiIik7CisKKyAg
ICAgIGljb249ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vLXNpemVzIik7CisgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMCk7CisgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIiKTsKKworICAgICAgdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4gIAorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmYTcxYThkNTI0MTFjZWViNGRiOWI5Zjc1M2UzM2ExZDAxMDNiODQ2Li4y
NmZlYjc4MjczMDlmYWZjM2ZkMGRjMjkzOTAzOWJjZjlmOTBmNDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNzk2LDYgKzc5Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcAogICAgIGh0bWwvUmVzZXRJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuY3BwCisgICAgaHRtbC9TaXplc0xpc3QuY3BwCiAgICAgaHRtbC9TdGVw
UmFuZ2UuY3BwCiAgICAgaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9UZWxlcGhv
bmVJbnB1dFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U1YWZlMGQ3NjM0M2IxZDAyNzVmOTY2OTI5
YjZlM2ZhNzgzN2EwZC4uZjg4ZjZhYTc4ODI1OGVlNzc1ODI5MThlMjU5ZTEwOGIzYTg2NDUwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTA3LTE4ICBSYWNoZWwgQmx1bSAgPGdy
b2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgc2l6ZXMgYXR0cmlidXRlIGZv
ciBsaW5rIHRhZyBmcm9tIEhUTUw1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tc2l6ZS1wcm9wZXJ0eS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MTGlua0VsZW1lbnQ6OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTExp
bmtFbGVtZW50OjpzZXRTaXplcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TExpbmtFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxM
aW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhU
TUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvclNldHRlcik6CisgICAgICAgICogaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNpemVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsOgorCiAyMDExLTA3
LTE1ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICAtLXdlYmtpdC12
aXN1YWwtd29yZCBjcmFzaCBvbiBtaXhlZCBlZGl0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggNzUzNWFhY2MwZjZlNWIwOGYyYTI4OWQ5YjMyOTY4Yjk3YmMwOTM3Ni4u
Zjk3NmU5M2E3NThjZmE0ODYxY2Q4MzRjMGY4Y2UyZjhmOWJlODNjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0xODkxLDYgKzE4OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL1NpemVzTGlzdC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvU2l6ZXNMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvU3Rl
cFJhbmdlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0
ZWJlOTY2YjEwNmRiMTI4OGViZjhjNDNkZGYzZjQ2ZWViNmY2OWJmLi43MDRkNzZhNTBlNDFlMWU1
NDFlMWQ5NjI5YjI1ZmJlMGRkODQ1MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTQ0LDYgKzIx
NDQsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3Ry
dWN0b3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnND
b2xsZWN0aW9uQ3VzdG9tLmNwcCcsCkBAIC0zMDc1LDYgKzMwNzYsOCBAQAogICAgICAgICAgICAg
J2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvU3RlcFJhbmdlLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9TdGVwUmFuZ2UuaCcsCisgICAgICAgICAgICAnaHRtbC9T
aXplc0xpc3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL1NpemVzTGlzdC5oJywKICAgICAgICAg
ICAgICdodG1sL1N1Ym1pdElucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvU3VibWl0
SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCmluZGV4IDlkMzQ0OGQ5N2Y1ZmZmMWQwMzUyYTdiNzlmYTg0Y2QwY2I4OGNm
MWIuLjY0YjY2YzhiZDMzZWRlZDg4NzJhNWZiN2YxYjVmMDFjMTFlM2JkMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC0xODQsNiArMTg0LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5j
cHAgXApAQCAtNzU1LDYgKzc1Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvUmVzZXRJbnB1
dFR5cGUuY3BwIFwKICAgICBodG1sL1NlYXJjaElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvU3Rl
cFJhbmdlLmNwcCBcCisgICAgaHRtbC9TaXplc0xpc3QuY3BwIFwKICAgICBodG1sL1N1Ym1pdElu
cHV0VHlwZS5jcHAgXAogICAgIGh0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcCBcCiAgICAgaHRt
bC9UZXh0RG9jdW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggYjNjZmRmY2FiNjZiZjk4YzU1NDA3OWU0OTYwNmRjMWNmNmFmNjVh
Yi4uYjFhYTkyNGU3MmFiMzRmMzliNzAwY2FkNjI4NjI5Njc2ODI0NWNhMCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU3NDU0LDYgKzU3NDU0
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcU2l6ZXNMaXN0LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxTaXplc0xpc3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxTdGVwUmFuZ2UuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4ZjU3NWFhODYxMTQ1NmU4NGJlYWY4NGVhMjQwYTU0ODdiZmUzYTYyLi43
YzgwYzVlMTA3YjVmMjBiNmRmMjVmYTNiMTRmNzJkMzYwNjIwZjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NSw2ICs0NSw3
IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMDAwMjJFNjkxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJh
Y3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMDIyRTY4MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggKi87IH07CiAJCTAwMTQ2MjhBMTAz
Q0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyog
T3JpZ2luQWNjZXNzRW50cnkuY3BwICovOyB9OwogCQkwMDE0NjI4QjEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRy
eS5oICovOyB9OwogCQkwMDNGMUZFQTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAzRjFG
RTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTcsNyArNTgsNiBAQAogCQkwMENB
OTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjQxM0M2Njk3QzAw
RjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBEMDQ2NEExM0M0
RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEQwNDY0ODEzQzREMTQ1MDAz
MjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBEMDQ2
NEIxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBEMDQ2NDkxM0M0RDE0
NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oICovOyB9OwotCQkwMDAy
MkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0
aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAw
MjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1l
dGhvZHMuaCAqLzsgfTsKIAkJMDUyQkZDRTkxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9u
Q2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNTJCRkNFODEyOEFCRjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cCAqLzsgfTsKIAkJMDUyQkZDRUIxMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50
TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUy
QkZDRUExMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA1RkQ2OUUwMTI4NDVE
NDMwMEIyQkVCMyAvKiBET01UaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA1RkQ2OURGMTI4NDVENDMwMEIyQkVCMyAvKiBET01UaW1lU3Rh
bXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NjAyLDYgKzYwMiw4IEBACiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDRjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5tbSAqLzsgfTsKIAkJMUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVy
Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAq
LzsgfTsKIAkJMUNGQUUzMjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2
QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLzsgfTsKKwkJMUQ4QTU1MjExM0Q5MjQ5NTAw
QjZGRjNCIC8qIFNpemVzTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRDhBNTUxRjEzRDkyNDk1MDBCNkZGM0IgLyogU2l6ZXNMaXN0LmNwcCAq
LzsgfTsKKwkJMUQ4QTU1MjIxM0Q5MjQ5NTAwQjZGRjNCIC8qIFNpemVzTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQ4QTU1MjAxM0Q5MjQ5NTAw
QjZGRjNCIC8qIFNpemVzTGlzdC5oICovOyB9OwogCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMg
LyogTWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAg
Ki87IH07CiAJCTFGM0MzQkVCMTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JFOTEzNUNB
RjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwpAQCAtNjQwNSw2ICs2NDA3LDcg
QEAKIC8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTAwMDIyRTY4MTNDRTFCQkEwMDI4MkQ1QiAv
KiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29u
dGVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MTcsNyArNjQyMCw2IEBA
CiAJCTAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdYTUxEb2N1bWVudFBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwRDA0NjQ4MTNDNEQxNDUwMDMy
NkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBEMDQ2NDkxM0M0RDE0NTAwMzI2RkNDIC8qIFhN
TENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlcklubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNTJCRkNFODEyOEFCRjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdlb2xvY2F0aW9u
Q2xpZW50TW9jay5jcHA7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBH
ZW9sb2NhdGlvbkNsaWVudE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNUZENjlERjEyODQ1RDQzMDBCMkJF
QjMgLyogRE9NVGltZVN0YW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVRpbWVTdGFtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzAyMiw2ICs3MDI0
LDggQEAKIAkJMUNGNkJFMTIwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEz
MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2Jq
Yy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91
c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFE
OEE1NTFGMTNEOTI0OTUwMEI2RkYzQiAvKiBTaXplc0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZXNMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUQ4QTU1MjAxM0Q5MjQ5NTAwQjZGRjNCIC8qIFNpemVzTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaXplc0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAv
KiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
Q29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkw
QjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNDcsNiArMTYyNTEsOCBAQAogCQkJCUY1NUIz
RDlDMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oICovLAogCQkJCUY1NUIzRDlE
MTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDlF
MTI1MUYxMkQwMDNFRjI2OSAvKiBTZWFyY2hJbnB1dFR5cGUuaCAqLywKKwkJCQkxRDhBNTUxRjEz
RDkyNDk1MDBCNkZGM0IgLyogU2l6ZXNMaXN0LmNwcCAqLywKKwkJCQkxRDhBNTUyMDEzRDkyNDk1
MDBCNkZGM0IgLyogU2l6ZXNMaXN0LmggKi8sCiAJCQkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5jcHAgKi8sCiAJCQkJQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5oICovLAogCQkJCUY1NUIzRDlGMTI1MUYxMkQwMDNFRjI2OSAvKiBTdWJtaXRJbnB1
dFR5cGUuY3BwICovLApAQCAtMjMwOTcsNiArMjMxMDMsNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0Uy
RTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTFEOEE1NTIyMTNEOTI0OTUwMEI2RkYzQiAvKiBTaXplc0xpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjU4NjcsNiArMjU4NzQsNyBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFEOEE1NTIx
MTNEOTI0OTUwMEI2RkYzQiAvKiBTaXplc0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggM2NmYzk5ZDQ1NDA0NWZlZGRiMDY5NjI2OGFiYjJiOWI4MzkyYzRkZC4uYmJkNTVh
OWU5Yjc5ZmM0NzQxMjQ3MTE5NWQzNjQ1ZmIxY2E4ZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDkgKzI4LDI1
IEBACiAjaW5jbHVkZSAiSlNIVE1MTGlua0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxMaW5r
RWxlbWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NU2V0
dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorSlNWYWx1ZSBKU0hUTUxMaW5rRWxl
bWVudDo6c2l6ZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEhUTUxMaW5rRWxlbWVu
dCogb3V0cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKG91
dHB1dC0+c2l6ZXMoKSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CisKK3ZvaWQgSlNIVE1MTGlu
a0VsZW1lbnQ6OnNldFNpemVzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBIVE1MTGlua0VsZW1lbnQqIG91dHB1dCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+
KGltcGwoKSk7CisgICAgb3V0cHV0LT5zZXRTaXplcyh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVj
ayhleGVjLCB2YWx1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVt
ZW50Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGEyMjY0NWQ0NmQ1NDJmMDBiMjIzZGU5ZjRlZTAz
OTI4OTkzYWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTExpbmtFbGVtZW50LmgiCisKKyNpbmNs
dWRlICJIVE1MTGlua0VsZW1lbnQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOERPTVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxMaW5rRWxlbWVu
dDo6c2l6ZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MTGlua0Vs
ZW1lbnQuc2l6ZXMuX2dldCIpOworICAgIEhUTUxMaW5rRWxlbWVudCogaW1wID0gVjhIVE1MTGlu
a0VsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB0b1Y4KGltcC0+
c2l6ZXMoKSk7Cit9CisKK3ZvaWQgVjhIVE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhU
TUxMaW5rRWxlbWVudC5zaXplcy5fc2V0Iik7CisgICAgSFRNTExpbmtFbGVtZW50KiBpbXAgPSBW
OEhUTUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW1wLT5zZXRT
aXplcyh0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcAppbmRleCAz
YTg2ZTljMDAwMjQ0Mjk4ZDI0YWRjYzNkMTA1YzFlZDQyNDc0OWYwLi5iNGYxNTJhOTc1ODIwZDli
YzdiZjI1ZjRjMWY3ZTkxYWQzYTYyMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNl
dHRhYmxlVG9rZW5MaXN0LmNwcApAQCAtNDYsMTQgKzQ2LDE0IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyBET01TZXR0YWJsZVRva2VuTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIAogYm9v
bCBET01TZXR0YWJsZVRva2VuTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tl
biwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgaWYgKCF2YWxpZGF0ZVRva2VuKHRv
a2VuLCBlYykpCisgICAgaWYgKCF2YWxpZGF0ZVRva2VuSW50ZXJuYWwodG9rZW4sIGVjKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtX3Rva2Vucy5jb250YWlucyh0b2tlbik7
CiB9CiAKIHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZChjb25zdCBBdG9taWNTdHJpbmcm
IHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIXZhbGlkYXRlVG9rZW4odG9r
ZW4sIGVjKSB8fCBtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCisgICAgaWYgKCF2YWxpZGF0ZVRv
a2VuSW50ZXJuYWwodG9rZW4sIGVjKSB8fCBtX3Rva2Vucy5jb250YWlucyh0b2tlbikpCiAgICAg
ICAgIHJldHVybjsKICAgICBhZGRJbnRlcm5hbCh0b2tlbik7CiB9CkBAIC02OSw3ICs2OSw3IEBA
IHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdG9rZW4pCiAKIHZvaWQgRE9NU2V0dGFibGVUb2tlbkxpc3Q6OnJlbW92ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRva2VuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIXZhbGlkYXRl
VG9rZW4odG9rZW4sIGVjKSB8fCAhbV90b2tlbnMuY29udGFpbnModG9rZW4pKQorICAgIGlmICgh
dmFsaWRhdGVUb2tlbkludGVybmFsKHRva2VuLCBlYykgfHwgIW1fdG9rZW5zLmNvbnRhaW5zKHRv
a2VuKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsKIH0KQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6cmVtb3ZlSW50ZXJuYWwo
Y29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKIAogYm9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6
dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmICghdmFsaWRhdGVUb2tlbih0b2tlbiwgZWMpKQorICAgIGlmICghdmFsaWRhdGVUb2tl
bkludGVybmFsKHRva2VuLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV90
b2tlbnMuY29udGFpbnModG9rZW4pKSB7CiAgICAgICAgIHJlbW92ZUludGVybmFsKHRva2VuKTsK
QEAgLTk4LDQgKzk4LDkgQEAgdm9pZCBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX3Rva2Vucy5zZXQodmFsdWUsIGZhbHNlKTsKIH0KIAor
Ym9vbCBET01TZXR0YWJsZVRva2VuTGlzdDo6dmFsaWRhdGVUb2tlbkludGVybmFsKGNvbnN0IEF0
b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIHJldHVy
biBET01Ub2tlbkxpc3Q6OnZhbGlkYXRlVG9rZW4odG9rZW4sIGVjKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJs
ZVRva2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5o
CmluZGV4IDhmNmZkNGU3ODkwNzA4MmZkZTRkMDI3YjAzZjgzOTRmMzNkNjVjYzQuLmI2ZTNkNjhk
YWUzZjIwMzJiYjcyMDUyNTUyZTZlYmYxMGRiNTk5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVNldHRhYmxlVG9rZW5MaXN0LmgKQEAgLTU1LDEwICs1NSwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CiAKICAg
ICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgdm9pZCBzZXRW
YWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3Ry
aW5nJik7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3Qo
KTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVUb2tlbkludGVybmFsKGNvbnN0IEF0b21pY1N0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CiAKICAgICB2b2lk
IHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZvaWQgYWRkSW50ZXJu
YWwoY29uc3QgQXRvbWljU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCmluZGV4IDE2NzllOTZhMDBhNGYzNDExYTlmZTBhYjc3ODFlYmE3NjQ3ZGIyNTIu
LmQ3MzQ1ZDRkODg5ZGNlY2NhOGIyYTk5YmViMzNmZjU0NjFkODc2YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0yNzEsNiArMjcxLDcgQEAgc2Nyb2xs
aW5nCiBzZWxlY3RlZAogc2hhcGUKIHNpemUKK3NpemVzCiBzb3J0YWJsZQogc29ydGRpcmVjdGlv
bgogc3BhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDQzMzUz
MjljOTNkNmZhOTZiZDA4ODg2MGFiNmJkZjJmM2MwZDFmOTEuLjNhY2RiMWMzYjMyMzA1NWU2N2U0
MWYzMjZlN2NkZmQzNDU5NDhhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IFJvYiBCdWlzIChyd2xidWlzQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxpbmUg
SFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCisg
ICAgLCBtX3NpemVzKFNpemVzTGlzdDo6Y3JlYXRlKCkpCiAgICAgLCBtX2xvYWRpbmcoZmFsc2Up
CiAgICAgLCBtX2lzRW5hYmxlZFZpYVNjcmlwdChmYWxzZSkKICAgICAsIG1fY3JlYXRlZEJ5UGFy
c2VyKGNyZWF0ZWRCeVBhcnNlcikKQEAgLTEzMyw2ICsxMzUsOSBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAgIG1fdHlwZSA9IGF0dHItPnZh
bHVlKCk7CiAgICAgICAgIHByb2Nlc3MoKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBzaXplc0F0dHIpIHsKKyAgICAgICAgc2V0U2l6ZXMoYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
IHByb2Nlc3MoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtZWRpYUF0dHIpIHsK
ICAgICAgICAgbV9tZWRpYSA9IGF0dHItPnZhbHVlKCkuc3RyaW5nKCkubG93ZXIoKTsKICAgICAg
ICAgcHJvY2VzcygpOwpAQCAtNDQwLDQgKzQ0NSwxNCBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6
ZGlzYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3NoZWV0ICYmIG1fc2hlZXQtPmRpc2FibGVk
KCk7CiB9CiAKK0RPTVNldHRhYmxlVG9rZW5MaXN0KiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplcy5nZXQoKTsKK30KKwordm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnNldFNpemVzKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9zaXplcy0+c2V0
VmFsdWUodmFsdWUpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApp
bmRleCBlZjNiMGE2ODcxYjU3MzliNDNiMjQ2ODI0NTRmNTZhM2IwMGY2YTIxLi5iY2U1ODdkMTBi
OGYwMDIyNzZmYWVjZTc4MmExNDAyOGQwOTdjNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiU2l6ZXNMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
Y29uVVJMLmgiCiAjaW5jbHVkZSAiTGlua0xvYWRlci5oIgpAQCAtNTMsMTEgKzU1LDEzIEBAIHB1
YmxpYzoKIAogICAgIFN0eWxlU2hlZXQqIHNoZWV0KCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgcmVtYW5lZCBpc1N0eWxlU2hlZXRMb2FkaW5nIGFzIHRoaXMgaXMgb25s
eSB1c2VkIGZvciBzdHlsZXNoZWV0cy4KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVu
YW1lZCBpc1N0eWxlU2hlZXRMb2FkaW5nIGFzIHRoaXMgaXMgb25seSB1c2VkIGZvciBzdHlsZXNo
ZWV0cy4KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIGJvb2wgaXNFbmFibGVkVmlh
U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc0VuYWJsZWRWaWFTY3JpcHQ7IH0KICAgICBib29s
IGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKKyAgICB2b2lk
IHNldFNpemVzKGNvbnN0IFN0cmluZyYpOworICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBzaXpl
cygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKQEAgLTk5LDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgS1VSTCBt
X3VybDsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOworICAgIFJlZlB0
cjxTaXplc0xpc3Q+IG1fc2l6ZXM7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0
ZTsKICAgICBib29sIG1fbG9hZGluZzsKICAgICBib29sIG1faXNFbmFibGVkVmlhU2NyaXB0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCmluZGV4IDFmMzYyMzI2OWIzYjNh
YjViYTg1OGVlM2Y2NGJlMWFjMjcwMTNkMDMuLjdmNDhhNzI3NDBiNDBmNDIxNmU1MmQ1NjdmZjgy
MDhhODA0YzkxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCw2ICsyOSw5
IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcg
bWVkaWE7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHJlbDsKICAgICAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmV2OworI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICBhdHRyaWJ1dGUg
W0N1c3RvbV0gRE9NU2V0dGFibGVUb2tlbkxpc3Qgc2l6ZXM7CisjZW5kaWYKICAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdGFyZ2V0OwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1NpemVzTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NpemVzTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjYyM2RmZDFmMmFiMmUxZDc1N2E4NWEwZWY5NGYyOTg3ZWYwYWNlYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2l6ZXNMaXN0LmNwcApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2l6ZXNM
aXN0LmgiCisKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2l6ZXNMaXN0OjpTaXplc0xpc3QoKQoreworfQorCitib29sIFNpemVzTGlzdDo6
dmFsaWRhdGVUb2tlbkludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAoreworICAgIC8vIEZpcnN0LCBwYXJzZSBhY2NvcmRpbmcgdG8gYmFz
ZSBydWxlcy4KKyAgICBpZiAoIURPTVNldHRhYmxlVG9rZW5MaXN0Ojp2YWxpZGF0ZVRva2VuSW50
ZXJuYWwodG9rZW4sIGVjKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gUGFyc2Ug
c2l6ZXMgYWNjb3JkaW5nIHRvIGFsZ29yaXRobSBpbiAKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI3Jl
bC1pY29uCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRva2VuQW55LCAo
ImFueSIpKTsKKyAgICBpZiAodG9rZW4ubG93ZXIoKSA9PSB0b2tlbkFueSkKKyAgICAgIHJldHVy
biB0cnVlOworCisgICAgRXhjZXB0aW9uQ29kZSBsb2NhbEVjID0gMDsKKyAgICBib29sIHplcm9J
c0ludmFsaWQgPSB0cnVlOworICAgIGJvb2wgZW5jb3VudGVyZWRYID0gZmFsc2U7CisKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSB0b2tlbi5sZW5ndGgoKTsKKyAgICBmb3IgICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBsZW5ndGggJiYgIWxvY2FsRWM7ICsraSkgeworICAgICAgICBpZiAodG9rZW5b
aV0gPT0gJ3gnIHx8IHRva2VuW2ldID09ICdYJykgeworICAgICAgICAgICAgaWYgKGVuY291bnRl
cmVkWCB8fCAhaSB8fCBpID09IGxlbmd0aC0xKSAKKyAgICAgICAgICAgICAgICBsb2NhbEVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgICAgIGVuY291bnRlcmVkWCA9IHRydWU7CisgICAgICAgICAg
ICB6ZXJvSXNJbnZhbGlkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbltpXSA8ICcw
JyB8fCB0b2tlbltpXSA+ICc5JykKKyAgICAgICAgICAgIGxvY2FsRWMgPSBJTlZBTElEX0NIQVJB
Q1RFUl9FUlI7CisgICAgICAgIGVsc2UgaWYgKHplcm9Jc0ludmFsaWQgJiYgdG9rZW5baV0gPT0g
JzAnKSAKKyAgICAgICAgICAgIGxvY2FsRWMgPSBTWU5UQVhfRVJSOworICAgICAgICBlbHNlCisg
ICAgICAgICAgemVyb0lzSW52YWxpZCA9IGZhbHNlOworICAgIH0KKworICAgIGlmICghZW5jb3Vu
dGVyZWRYICYmICFsb2NhbEVjKQorICAgICAgICBsb2NhbEVjID0gU1lOVEFYX0VSUjsKKworICAg
IGlmIChsb2NhbEVjKQorICAgICAgICBlYyA9IGxvY2FsRWM7CisKKyAgICByZXR1cm4gIWxvY2Fs
RWM7Cit9CisKK3ZvaWQgU2l6ZXNMaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIFNwYWNlU3BsaXRTdHJpbmcgdG9rZW5zOworICAgIHRva2Vucy5zZXQodmFsdWUsIGZh
bHNlKTsKKyAgICAKKyAgICAvLyBSZXNldCBjdXJyZW50IHZhbHVlIGFuZCBhZGQgdG9rZW5zIDEt
YnktMSB0byBmaWx0ZXIgdW5kZXNpcmFibGVzLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
RE9NU2V0dGFibGVUb2tlbkxpc3Q6OnNldFZhbHVlKCIiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdG9rZW5zLnNpemUoKTsgKytpKQorICAgICAgICBhZGQodG9rZW5zW2ldLCBlYyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2l6ZXNMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NpemVzTGlzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhZDYyMmIyNzA0ZmExYzYzNjNiYWZkYzlhOTQ0MGVkNTVlZDJmNWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NpemVzTGlzdC5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2l6ZXNMaXN0X2gKKyNkZWZpbmUgU2l6ZXNMaXN0
X2gKKworI2luY2x1ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CisK
K2NsYXNzIFNpemVzTGlzdCA6IHB1YmxpYyBET01TZXR0YWJsZVRva2VuTGlzdCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2l6ZXNMaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaXplc0xpc3QoKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorCisgICAgU2l6ZXNM
aXN0KCk7CisgICAgdmlydHVhbCBib29sIHZhbGlkYXRlVG9rZW5JbnRlcm5hbChjb25zdCBBdG9t
aWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTaXplc0xpc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101778</attachid>
            <date>2011-07-22 15:27:32 -0700</date>
            <delta_ts>2011-07-27 20:01:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37674-20110722152731.patch</filename>
            <type>text/plain</type>
            <size>14794</size>
            <attacher name="Rachel Blum">groby</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1NzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNmIyM2YxZDc1NWI3M2YyMjJlY2Mz
MDdiZGFkZTQyMTViZWU1ZmUzLi5kODNjYmNjZTQyYmQyOGEwYjFmYTc4MWJjYzM2NzhiOGIwZDg4
YmYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMjIgIFJhY2hlbCBCbHVtICA8Z3Jv
YnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBzaXplcyBhdHRyaWJ1dGUgZm9y
IGxpbmsgdGFnIGZyb20gSFRNTDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3Njc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbDogQWRkZWQu
CisKIDIwMTEtMDctMjIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIGFkZCB3ZWJJbnNwZWN0b3Iu
cmVzb3VyY2VzLm9uQ29udGVudEVkaXRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaWNvbi1zaXplLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2ljb24tc2l6ZS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI2ODBjY2NkOTQw
MDE0NDkxNzgyNDBlZjM5MWU5MGI5M2RhY2U1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2ljb24tc2l6ZS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NyBAQAorVGVzdHMgZm9yIHNpemVzIGF0dHJpYnV0ZSBvZiB0aGUgbGluayBlbGVtZW50LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpY29uLnNpemVzLmxlbmd0aCBpcyAy
CitQQVNTIGljb24uc2l6ZXMudmFsdWUgaXMgIjIzeDQ3IDE5eDQyIgorUEFTUyBpY29uLnNpemVz
Lmxlbmd0aCBpcyAzCitQQVNTIGljb24uc2l6ZXMudmFsdWUgaXMgIjEweDEwIDIweDIwIDMweDMw
IgorUEFTUyBpY29uLnNpemVzLmxlbmd0aCBpcyAwCitQQVNTIGljb24uc2l6ZXMudmFsdWUgaXMg
IiIKK1BBU1MgaWNvbi5zaXplcy5sZW5ndGggaXMgMAorUEFTUyBpY29uLnNpemVzLnZhbHVlIGlz
ICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXNpemUtcHJvcGVydHkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMjAyN2EyZjM1ZWQzZTk3ODJkNzI1YTEyNDU1MTVkMjhiOTU4YWI1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi1zaXplLXByb3BlcnR5Lmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgaWQ9InJlbC1pY29uIiByZWw9Imlj
b24iIHNpemVzPSIyM3g0NyAxOXg0MiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJodHRwOi8v
dGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKyAgPGxpbmsgaWQ9Im5vLXNpemVzIiByZWw9Imlj
b24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cDovL3Rlc3QuY29tL29sZGZhdmljb24u
aWNvIi8+CisgIDxsaW5rIGlkPSJlbXB0eS1zaXplcyIgcmVsPSJpY29uIiBzaXplcz0iIiB0eXBl
PSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgor
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+CisKKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAKKyAgPHNjcmlwdD4KKyAgICAgIGRlc2Ny
aXB0aW9uKCdUZXN0cyBmb3Igc2l6ZXMgYXR0cmlidXRlIG9mIHRoZSBsaW5rIGVsZW1lbnQuJyk7
CisKKyAgICAgIHZhciBpY29uPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWwtaWNvbiIpOwor
CisgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMik7CisgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIyM3g0NyAxOXg0MiIpOwor
ICAgICAgCisgICAgICBpY29uLnNpemVzPSIxMHgxMCAyMHgyMCAzMHgzMCI7CisgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdpY29uLnNpemVzLmxlbmd0aCcsMyk7CisgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2ljb24uc2l6ZXMudmFsdWUnLCIxMHgxMCAyMHgyMCAzMHgzMCIpOworCisgICAg
ICB2YXIgaWNvbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm8tc2l6ZXMiKTsKKyAgICAgIHNo
b3VsZEV2YWx1YXRlVG8oJ2ljb24uc2l6ZXMubGVuZ3RoJywwKTsKKyAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnaWNvbi5zaXplcy52YWx1ZScsIiIpOworCisgICAgICB2YXIgaWNvbj1kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZW1wdHktc2l6ZXMiKTsKKyAgICAgIHNob3VsZEV2YWx1YXRl
VG8oJ2ljb24uc2l6ZXMubGVuZ3RoJywwKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
aWNvbi5zaXplcy52YWx1ZScsIiIpOworCisgICAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PiAgCis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTllODM0
N2Y2MGU5MDVmZTVhYjcyMDlmNDI2ZWNmODMzODRlYjg0NS4uNTZlZTExNTgxMGE0NTMzZjRkMzI2
ZjQzMDZhMDYzZjc0YzYzNmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTA3
LTIyICBSYWNoZWwgQmx1bSAgPGdyb2J5QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgc2l6ZXMgYXR0cmlidXRlIGZvciBsaW5rIHRhZyBmcm9tIEhUTUw1CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY3NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tc2l6
ZS1wcm9wZXJ0eS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTGlua0VsZW1lbnQ6OnNpemVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTExpbmtFbGVtZW50OjpzZXRTaXplcyk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvckdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEhUTUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvclNldHRlcik6
CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpI
VE1MTGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNp
emVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMpOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaWRsOgorCiAyMDExLTA3LTIyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgcHJlcHJvY2Vzc29yIHN0YXRlbWVudHMgaW4gSURM
IGZpbGVzIHdpdGggQ29uZGl0aW9uYWwgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmQy
MmNjZTk2MmE4NzUzOWM4YTQ4YjI3OTczODgyMmI3MDZlNjM4YS4uZjRlMGFhZTllNDA0OTliOTdj
N2YyMDJiYTVmOWQ2YTU2MDM2ZDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjE0OCw2ICsyMTQ4
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVj
dG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBjODIwZDhiYjdjZWNmYjQ1N2U0
NzhlNzUwNzI0ZjU5ZjM2ODY0NzFlLi5hN2Q3ZjAyZjMxYTkzMGNlNWZkNGU1ZjIxNmRmMjVjZDM5
OTVjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTg0LDYgKzE4NCw3IEBAIHY4IHsKICAgICAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5j
cHAgXAorICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91
dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzY2ZjOTlkNDU0MDQ1ZmVk
ZGIwNjk2MjY4YWJiMmI5YjgzOTJjNGRkLi5iYmQ1NWE5ZTliNzlmYzQ3NDEyNDcxMTk1ZDM2NDVm
YjFjYThmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxM
aW5rRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsOSArMjgsMjUgQEAKICNpbmNsdWRlICJKU0hUTUxMaW5r
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01TZXR0YWJsZVRva2VuTGlzdC5oIgorI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitKU1ZhbHVlIEpTSFRNTExpbmtFbGVtZW50OjpzaXplcyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0Cit7CisgICAgSFRNTExpbmtFbGVtZW50KiBvdXRwdXQgPSBzdGF0aWNfY2FzdDxI
VE1MTGlua0VsZW1lbnQqPihpbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIob3V0cHV0LT5zaXplcygpKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KKwordm9pZCBKU0hUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEhUTUxMaW5rRWxlbWVudCogb3V0cHV0
ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oaW1wbCgpKTsKKyAgICBvdXRwdXQtPnNl
dFNpemVzKHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4YTIyNjQ1ZDQ2ZDU0MmYwMGIyMjNkZTlmNGVlMDM5Mjg5OTNhZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVjhIVE1MTGlua0VsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgor
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NU2V0dGFibGVUb2tlbkxpc3Qu
aCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTExpbmtFbGVtZW50OjpzaXplc0FjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIElOQ19TVEFUUygiRE9NLkhUTUxMaW5rRWxlbWVudC5zaXplcy5fZ2V0Iik7CisgICAg
SFRNTExpbmtFbGVtZW50KiBpbXAgPSBWOEhUTUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT5zaXplcygpKTsKK30KKwordm9pZCBWOEhU
TUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTExpbmtFbGVtZW50LnNpemVzLl9zZXQi
KTsKKyAgICBIVE1MTGlua0VsZW1lbnQqIGltcCA9IFY4SFRNTExpbmtFbGVtZW50Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbXAtPnNldFNpemVzKHRvV2ViQ29yZVN0cmluZyh2YWx1
ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDE2NzllOTZhMDBhNGYzNDExYTlmZTBhYjc3ODFlYmE3
NjQ3ZGIyNTIuLmQ3MzQ1ZDRkODg5ZGNlY2NhOGIyYTk5YmViMzNmZjU0NjFkODc2YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0yNzEsNiArMjcxLDcg
QEAgc2Nyb2xsaW5nCiBzZWxlY3RlZAogc2hhcGUKIHNpemUKK3NpemVzCiBzb3J0YWJsZQogc29y
dGRpcmVjdGlvbgogc3BhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IDQzMzUzMjljOTNkNmZhOTZiZDA4ODg2MGFiNmJkZjJmM2MwZDFmOTEuLmM0ZDk0MzFmMDVh
M2E2ODE3M2U2YzQ3ZGQ4MzZlNzM3MjhmNDMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IFJvYiBCdWlzIChyd2xidWlzQGdtYWlsLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01Myw2ICs1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
ICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVy
KHRoaXMpCisgICAgLCBtX3NpemVzKERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKSkKICAg
ICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAsIG1faXNFbmFibGVkVmlhU2NyaXB0KGZhbHNlKQog
ICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQpAQCAtMTMzLDYgKzEzNSw5
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAg
ICAgbV90eXBlID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgcHJvY2VzcygpOworICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVzQXR0cikgeworICAgICAgICBzZXRTaXplcyhhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG1lZGlhQXR0cikgewogICAgICAgICBtX21lZGlhID0gYXR0ci0+dmFsdWUoKS5zdHJp
bmcoKS5sb3dlcigpOwogICAgICAgICBwcm9jZXNzKCk7CkBAIC00NDAsNCArNDQ1LDE0IEBAIGJv
b2wgSFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hlZXQg
JiYgbV9zaGVldC0+ZGlzYWJsZWQoKTsKIH0KIAorRE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxM
aW5rRWxlbWVudDo6c2l6ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemVzLmdldCgpOwor
fQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0U2l6ZXMoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBtX3NpemVzLT5zZXRWYWx1ZSh2YWx1ZSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IGVmM2IwYTY4NzFi
NTczOWI0M2IyNDY4MjQ1NGY1NmEzYjAwZjZhMjEuLjhmZWRlMDJlNWU3ZjkyYjc0MGY4NTkwOTEz
ZThiNzU5YTZkMTUxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAt
Miw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJET01TZXR0YWJs
ZVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSWNvblVS
TC5oIgogI2luY2x1ZGUgIkxpbmtMb2FkZXIuaCIKQEAgLTUzLDExICs1NSwxMyBAQCBwdWJsaWM6
CiAKICAgICBTdHlsZVNoZWV0KiBzaGVldCgpIGNvbnN0OwogCi0gICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHJlbWFuZWQgaXNTdHlsZVNoZWV0TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNl
ZCBmb3Igc3R5bGVzaGVldHMuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQg
aXNTdHlsZVNoZWV0TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNlZCBmb3Igc3R5bGVzaGVldHMu
CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0OyB9CiAgICAgYm9vbCBkaXNh
YmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRT
aXplcyhjb25zdCBTdHJpbmcmKTsKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdCogc2l6ZXMoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CkBAIC05OSw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIEtVUkwgbV91cmw7
CiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBTdHJpbmcgbV9tZWRpYTsKKyAgICBSZWZQdHI8RE9N
U2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0
dHJpYnV0ZTsKICAgICBib29sIG1fbG9hZGluZzsKICAgICBib29sIG1faXNFbmFibGVkVmlhU2Ny
aXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCmluZGV4IDFmMzYyMzI2
OWIzYjNhYjViYTg1OGVlM2Y2NGJlMWFjMjcwMTNkMDMuLjdmNDhhNzI3NDBiNDBmNDIxNmU1MmQ1
NjdmZjgyMDhhODA0YzkxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5p
ZGwKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCw2
ICsyOSw5IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01T
dHJpbmcgbWVkaWE7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHJlbDsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgcmV2OworI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICBhdHRy
aWJ1dGUgW0N1c3RvbV0gRE9NU2V0dGFibGVUb2tlbkxpc3Qgc2l6ZXM7CisjZW5kaWYKICAgICAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdGFyZ2V0OwogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>