<?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>88653</bug_id>
          
          <creation_ts>2012-06-08 06:13:23 -0700</creation_ts>
          <short_desc>Remove unneeded callRemovedLastRef function from TreeShared refactoring</short_desc>
          <delta_ts>2012-06-10 10:16:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88528</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>644612</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 06:13:23 -0700</bug_when>
    <thetext>Because the Node class inherits TreeShared&lt;ContainerNode&gt; instead of TreeShared&lt;Node&gt;, TreeShared.h tends to be dirty. For example, we cannot write static_cast&lt;T*&gt;(this) in TreeShared.h. It cannot be compiled.

Consequently, r119802 had to add callRemovedLastRef(ContainerNode* self) to ContainerNode.cpp just to call static_cast&lt;T*&gt;(self). See around https://bugs.webkit.org/show_bug.cgi?id=88528#c21 for more details.

We should change &apos;class Node : public TreeShared&lt;ContainerNode&gt;&apos; to &apos;class Node : public TreeShared&lt;Node&gt;&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644619</commentid>
    <comment_count>1</comment_count>
      <attachid>146551</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 06:21:45 -0700</bug_when>
    <thetext>Created attachment 146551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644739</commentid>
    <comment_count>2</comment_count>
      <attachid>146551</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-08 09:34:22 -0700</bug_when>
    <thetext>Comment on attachment 146551
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        Change &apos;class Node : public TreeShared&lt;ContainerNode&gt;&apos;
&gt; +        to &apos;class Node : public TreeShared&lt;Node&gt;&apos;

We don&apos;t normally line-wrap in the middle of the bug title.
I&apos;ve shortened the bug title for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644765</commentid>
    <comment_count>3</comment_count>
      <attachid>146551</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-08 09:58:25 -0700</bug_when>
    <thetext>Comment on attachment 146551
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Because the Node class inherits TreeShared&lt;ContainerNode&gt; instead
&gt; +        of TreeShared&lt;Node&gt;, TreeShared.h tends to be dirty. For example,

Did you look at the svn history to see if it&apos;s always been like this? Maybe CC the person who first made the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645066</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 15:13:45 -0700</bug_when>
    <thetext>anttik, kling: http://trac.webkit.org/changeset/97137 introduced TreeShared&lt;ContainerNode&gt;. Would you take a look at the patch I uploaded?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645071</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-08 15:21:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 146551 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146551&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Because the Node class inherits TreeShared&lt;ContainerNode&gt; instead
&gt; &gt; +        of TreeShared&lt;Node&gt;, TreeShared.h tends to be dirty. For example,
&gt; 
&gt; Did you look at the svn history to see if it&apos;s always been like this? Maybe CC the person who first made the change?

It was done in http://trac.webkit.org/changeset/65852.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645072</commentid>
    <comment_count>6</comment_count>
      <attachid>146551</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-08 15:24:05 -0700</bug_when>
    <thetext>Comment on attachment 146551
Patch

This looks like an overall improvement. Please update the bug titles in change logs before you land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645466</commentid>
    <comment_count>7</comment_count>
      <attachid>146726</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 01:29:15 -0700</bug_when>
    <thetext>Created attachment 146726
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645467</commentid>
    <comment_count>8</comment_count>
      <attachid>146726</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-10 01:33:46 -0700</bug_when>
    <thetext>Comment on attachment 146726
patch for landing

Rejecting attachment 146726 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
er
patching file Source/WebKit2/mac/WebKit2.order
patching file Source/WebKit2/win/WebKit2.def
patching file Source/WebKit2/win/WebKit2CFLite.def
Hunk #1 FAILED at 108.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/win/WebKit2CFLite.def.rej
patching file Source/autotools/symbols.filter
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12914926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645504</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:29:14 -0700</bug_when>
    <thetext>Please don’t make this change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645505</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:29:59 -0700</bug_when>
    <thetext>Having the parent of a Node be a ContainerNode can lead to more efficient code. We can call firstChild on a ContainerNode without checking the “is container node” bit, and do the types correctly. Why is this a good change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645506</commentid>
    <comment_count>11</comment_count>
      <attachid>146551</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:30:24 -0700</bug_when>
    <thetext>Comment on attachment 146551
Patch

Please do not land this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645507</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:31:21 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Consequently, r119802 had to add callRemovedLastRef(ContainerNode* self) to ContainerNode.cpp just to call static_cast&lt;T*&gt;(self). See around https://bugs.webkit.org/show_bug.cgi?id=88528#c21 for more details.

That was indeed a bad idea. We can come up with a much better way to do this. But please don’t change the type of parent from ContainerNode* to Node* to solve the problem that was introduced with the poorly written code in r119802.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645517</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 07:56:12 -0700</bug_when>
    <thetext>darin: Thanks for the clarification. We won&apos;t land it.

(In reply to comment #12)
&gt; &gt; Consequently, r119802 had to add callRemovedLastRef(ContainerNode* self) to ContainerNode.cpp just to call static_cast&lt;T*&gt;(self). See around https://bugs.webkit.org/show_bug.cgi?id=88528#c21 for more details.
&gt; 
&gt; That was indeed a bad idea. We can come up with a much better way to do this. But please don’t change the type of parent from ContainerNode* to Node* to solve the problem that was introduced with the poorly written code in r119802.

There are other reasons. As I posted to webkit-dev@, I am planning to change the reference counting algorithm so that &quot;If Node X is reachable, all Nodes in the DOM tree which X belongs to are kept alive&quot; is guaranteed. I have an idea to achieve the algorithm (hopefully) with no overhead and with no additional member variables, and the implementation requires to access TreeShared&lt;T*&gt; methods of other TreeShared&lt;T*&gt; objects, like this:

  template&lt;typename T&gt;
  class TreeShared {
  void rootRef() {
      m_refCount++;
  }
  void ref() {
    m_root-&gt;rootRef();  // This cannot be compiled here and there if Node inherits TreeShared&lt;ContainerNode&gt;. If Node inherited TreeShared&lt;Node&gt;, this works fine.
  }
  T* m_parent;
  T* m_root;    // I do not intend to add this variable, this is just for explanation of what I want to do.
  int m_refCount;
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645519</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:05:42 -0700</bug_when>
    <thetext>I’ll take care of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645520</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:08:33 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I am planning to change the reference counting algorithm so that &quot;If Node X is reachable, all Nodes in the DOM tree which X belongs to are kept alive&quot; is guaranteed.

I look forward to seeing what you do for this. From your description I do not yet understand your plans or why they will be efficient. Adding additional cost to every ref/deref on a Node seems likely to slow down many operations in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645521</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 08:09:12 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Why is this a good change?

I thought it would be good because &apos;class Node : TreeShared&lt;Node&gt;&apos; is less hacky than &apos;class Node : TreeShared&lt;ContainerNode&gt;&apos;, and the change seemed to solve our problems (i.e. static_cast&lt;T*&gt;(this) and m_root-&gt;rootRef()) straightforwardly.

&gt; Having the parent of a Node be a ContainerNode can lead to more efficient code. We can call firstChild on a ContainerNode without checking the “is container node” bit, and do the types correctly.

Does it really affect JavaScript performance? Bindings/first-child.html is the most micro benchmark for firstChild. (I could not test it until tomorrow morning due to blackout of buildings...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645523</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 08:10:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; I am planning to change the reference counting algorithm so that &quot;If Node X is reachable, all Nodes in the DOM tree which X belongs to are kept alive&quot; is guaranteed.
&gt; 
&gt; I look forward to seeing what you do for this. From your description I do not yet understand your plans or why they will be efficient. Adding additional cost to every ref/deref on a Node seems likely to slow down many operations in WebKit.

I&apos;ll post a design document within this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645525</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 08:23:42 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Having the parent of a Node be a ContainerNode can lead to more efficient code. We can call firstChild on a ContainerNode without checking the “is container node” bit, and do the types correctly.
&gt; 
&gt; Does it really affect JavaScript performance? Bindings/first-child.html is the most micro benchmark for firstChild. (I could not test it until tomorrow morning due to blackout of buildings...)

Maybe Parser/query-selector-last.html might be the benchmark where we can observe the performance difference clearly. querySelector(&quot;#id&quot;) for an element that appears at the tail of the document requires to traverse a lot of DOM nodes using ContainerNode::firstChild() and ContainerNode::nextSiblings() without being interrupted by JavaScript bindings. (In case of Bindings/first-child.html, each ContainerNode::firstChild() is interrupted by JavaScript bindings, which might hide the overhead of ContainerNode::firstChild().) Anyway let me test it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645531</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:44:11 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; because &apos;class Node : TreeShared&lt;Node&gt;&apos; is less hacky than &apos;class Node : TreeShared&lt;ContainerNode&gt;&apos;

Hacky? No.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645533</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:45:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Having the parent of a Node be a ContainerNode can lead to more efficient code. We can call firstChild on a ContainerNode without checking the “is container node” bit, and do the types correctly.
&gt; 
&gt; Does it really affect JavaScript performance?

I didn’t say JavaScript performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645534</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:46:04 -0700</bug_when>
    <thetext>Continuing to use the specific type for ContainerNode is the right thing to do. Changing the design is unnecessary and you only had to do it because you rushed. I have a patch ready now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645535</commentid>
    <comment_count>22</comment_count>
      <attachid>146740</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:54:43 -0700</bug_when>
    <thetext>Created attachment 146740
Patch (Windows .def files not right yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645536</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:56:28 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Bindings/first-child.html is the most micro benchmark for firstChild.

JavaScript firstChild won’t be affected. It’s DOM manipulation in C++ that will be affected, not JavaScript. The ContainerNode class does not exist in JavaScript bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645537</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:58:30 -0700</bug_when>
    <thetext>These changes have gotten off on a strange tangent. It’s OK to remove the virtual functions from TreeShared to get rid of the extra overhead added when we added EventTarget. That’s a good idea. But these other changes are mostly just based on misunderstanding of TreeShared. There’s no need to change the parent pointer from TreeShared into a Node* instead of the correct type, ContainerNode*. And there’s no need for all the mess of callRemovedLastRef. It’s just because we rushed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645543</commentid>
    <comment_count>25</comment_count>
      <attachid>146740</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 09:08:48 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

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

I am sorry for the original patch that messed things up. Your change makes much sense to me.

&gt; Source/WebCore/dom/Node.h:107
&gt; -class Node : public EventTarget, public ScriptWrappable, public TreeShared&lt;ContainerNode&gt; {
&gt; +class Node : public EventTarget, public ScriptWrappable, public TreeShared&lt;Node, ContainerNode&gt; {

Shall we add a comment about why we use TreeShared&lt;Node, ContainerNode&gt; instead of TreeShared&lt;Node&gt;? I discussed it with 4 folks in IRC last week, but no one could not think up of the reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645546</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 09:09:56 -0700</bug_when>
    <thetext>Oh, I see you renamed this back; I thought that was just bugs.webkit.org malfunctioning.

Does that mean you still want to change TreeShared so it doesn’t know the parent node type? That’s not a good idea. We should land my patch instead. Sorry, I didn’t mean to argue with you about the bug title. If you want to change this back and have me use a different bug report, that’s OK.

But I strongly disagree with changing to TreeShared&lt;Node&gt; just because you think it’s “hacky”. The parent node type should use the correct type, ContainerNode, unless there is some concrete reason not to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645548</commentid>
    <comment_count>27</comment_count>
      <attachid>146740</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-10 09:11:00 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

Attachment 146740 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12937388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645550</commentid>
    <comment_count>28</comment_count>
      <attachid>146740</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-10 09:11:29 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

Attachment 146740 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12939132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645552</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 09:11:59 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Shall we add a comment about why we use TreeShared&lt;Node, ContainerNode&gt; instead of TreeShared&lt;Node&gt;? I discussed it with 4 folks in IRC last week, but no one could not think up of the reason.

We could, but I think a fine way to clear that up is the template argument names, NodeType and ParentNodeType, in TreeShared.h.

If the template argument name was ParentNodeType last week when you asked, I think they would have quickly figured it out.

I think the problem is that people are familiar with RefCounted and assume that the argument type to TreeShared is the same as RefCounted. So I think the problem from last week is solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645554</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 09:12:23 -0700</bug_when>
    <thetext>I may need some help finishing the patch (getting it to complete on all platforms and such).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645555</commentid>
    <comment_count>31</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-10 09:12:29 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Oh, I see you renamed this back; I thought that was just bugs.webkit.org malfunctioning.

That&apos;s just bugs.webkit.org malfunctioning.

&gt; But I strongly disagree with changing to TreeShared&lt;Node&gt; just because you think it’s “hacky”. The parent node type should use the correct type, ContainerNode, unless there is some concrete reason not to.

Now I understood your change is much much better:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645556</commentid>
    <comment_count>32</comment_count>
      <attachid>146740</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-10 09:12:48 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

Attachment 146740 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12914995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645561</commentid>
    <comment_count>33</comment_count>
      <attachid>146740</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-10 09:16:32 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

Attachment 146740 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12925742</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645563</commentid>
    <comment_count>34</comment_count>
      <attachid>146740</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-10 09:18:29 -0700</bug_when>
    <thetext>Comment on attachment 146740
Patch (Windows .def files not right yet)

Attachment 146740 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12941074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645565</commentid>
    <comment_count>35</comment_count>
      <attachid>146741</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 09:22:55 -0700</bug_when>
    <thetext>Created attachment 146741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645570</commentid>
    <comment_count>36</comment_count>
      <attachid>146741</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-10 09:52:40 -0700</bug_when>
    <thetext>Comment on attachment 146741
Patch

Attachment 146741 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12919972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645571</commentid>
    <comment_count>37</comment_count>
      <attachid>146742</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 09:54:41 -0700</bug_when>
    <thetext>Created attachment 146742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645573</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 10:16:02 -0700</bug_when>
    <thetext>Committed r119937: &lt;http://trac.webkit.org/changeset/119937&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146551</attachid>
            <date>2012-06-08 06:21:45 -0700</date>
            <delta_ts>2012-06-10 08:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88653-20120608222144.patch</filename>
            <type>text/plain</type>
            <size>16555</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZlZTJhNDZmZWI2NzZi
N2U4MTQ4NzI1MzAzMzM1ZmIyZmZhZTM1Yy4uYmEzNmNiNTJjYjg3YjQzZTBkMjhkMjIxMjJmYzlh
NjA0MjM4YjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA2LTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgJ2NsYXNz
IE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPicKKyAgICAgICAgdG8gJ2Ns
YXNzIE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxOb2RlPicKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSB0aGUgTm9kZSBjbGFzcyBpbmhlcml0
cyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+IGluc3RlYWQKKyAgICAgICAgb2YgVHJlZVNoYXJl
ZDxOb2RlPiwgVHJlZVNoYXJlZC5oIHRlbmRzIHRvIGJlIGRpcnR5LiBGb3IgZXhhbXBsZSwKKyAg
ICAgICAgd2UgY2Fubm90IHdyaXRlIHN0YXRpY19jYXN0PFQqPih0aGlzKSBpbiBUcmVlU2hhcmVk
LmguIEl0IGNhbm5vdCBiZQorICAgICAgICBjb21waWxlZC4KKworICAgICAgICBDb25zZXF1ZW50
bHksIHIxMTk4MDIgaGFkIHRvIGFkZCBjYWxsUmVtb3ZlZExhc3RSZWYoQ29udGFpbmVyTm9kZSog
c2VsZikKKyAgICAgICAgdG8gQ29udGFpbmVyTm9kZS5jcHAganVzdCB0byBjYWxsIHN0YXRpY19j
YXN0PFQqPihzZWxmKS4gU2VlIHRoZQorICAgICAgICBkaXNjdXNzaW9uIGFyb3VuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgjYzIxIGZvcgorICAgICAgICBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzICdjbGFzcyBOb2RlIDog
cHVibGljIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4nIHRvCisgICAgICAgICdjbGFzcyBOb2Rl
IDogcHVibGljIFRyZWVTaGFyZWQ8Tm9kZT4nLgorCisgICAgICAgIE5vIHRlc3RzLiBDb25maXJt
IG5vIHJlZ3Jlc3Npb24gaW4gZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5jcHA6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpwYXJlbnRPckhvc3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldFBhcmVudE9ySG9zdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9k
ZUd1YXJhbnRlZWRIb3N0RnJlZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5v
ZGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAo
SFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuY3BwOgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFJlbW92
ZWQgYSBzeW1ib2wgb2YgY2FsbFJlbW92ZWRMYXN0UmVmKCkuCisgICAgICAgICogV2ViQ29yZS5v
cmRlcjogRGl0dG8uCisKIDIwMTItMDYtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBIVFRQIDIwNCBObyBDb250ZW50IHJlc3BvbnNlcyBzaG91bGRuJ3QgdHJp
Z2dlciBNSU1FIHR5cGUgd2FybmluZ3MgaW4gdGhlIHdlYiBpbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCA4ZDQ0MzEyM2E2YmEwMDQ5ZjQ3ZGJlZTk2ZTE0Y2ZmNTc2Nzc5NDc5Li5lZThlMzJi
ZWNkMTkxMTI3ZGExMDk5ZjgzNDQ4ZjFlOGQwYzU1ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDYtMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIENoYW5nZSAnY2xhc3MgTm9kZSA6IHB1YmxpYyBUcmVlU2hhcmVkPENv
bnRhaW5lck5vZGU+JworICAgICAgICB0byAnY2xhc3MgTm9kZSA6IHB1YmxpYyBUcmVlU2hhcmVk
PE5vZGU+JworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODg2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmVkIGEgc3ltYm9sIG9mIGNhbGxSZW1vdmVkTGFzdFJlZigpLgorCisgICAgICAgICogV2Vi
S2l0Lm9yZGVyOgorCiAyMDEyLTA2LTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgTm9kZSBvYmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8g
NjQgYnl0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDljZTBhMGM5ODQwNjIzODU5NjMxNjViMjNhYmY0N2E0NjBj
YTYzMjYuLjVlNzE5ZWY3NjMwMjU1MThkM2JhOGRmODk4ODFhYjQ3MjMxYTJlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0wOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlICdjbGFzcyBOb2RlIDogcHVibGljIFRyZWVT
aGFyZWQ8Q29udGFpbmVyTm9kZT4nCisgICAgICAgIHRvICdjbGFzcyBOb2RlIDogcHVibGljIFRy
ZWVTaGFyZWQ8Tm9kZT4nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODY1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZWQgYSBzeW1ib2wgb2YgY2FsbFJlbW92ZWRMYXN0UmVmKCkuCisKKyAgICAg
ICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAg
ICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTA2LTA4ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0gTW92ZSBNYWMtc3BlY2lmaWMg
Yml0cyBmcm9tIGNvbmZpZy5oIHRvIFdlYktpdDJQcmVmaXguaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBkZjM3ZTM3YzkyODA1MGFiMzMzMGY5ZGRlYjdkNWZjOTUzMWVlOWY1Li44NTZmNDBiYzE2
MmI2M2UzYjE1MzJjZWRmNjkxNzA2NzNjM2ZiZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
NTY2LDcgKzU2Niw2IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVO
YW1lRXYKIF9fWk5LN1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDExY2hhbmdlQ291bnRFdgog
X19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ1Y29sb3JFdgogX19aTjdXZWJDb3JlMThT
ZWFyY2hQb3B1cE1lbnVNYWNDMUVQTlNfMTVQb3B1cE1lbnVDbGllbnRFCi1fX1pON1dlYkNvcmUx
OGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVF
RQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlv
bkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk43V2ViQ29yZTE4cGx1Z2lu
U2NyaXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEzSlNIVE1MRWxlbWVudEUKIF9fWk43
V2ViQ29yZTE4cHJveHlTZXJ2ZXJzRm9yVVJMRVJLTlNfNEtVUkxFUEtOU18xN05ldHdvcmtpbmdD
b250ZXh0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggYmJmNmEzZGQzZDdjZGE4NmJjZGE4MDgwMjNi
NWEyMGJjOGNkMzRlOS4uY2EyYjc4MmQ4ZjY0ODE3MDMyYTE1NGQ4MWJlMmQ5ZTg2NTBhMTY5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xOTIzLDcgKzE5MjMsNiBAQCBfX1pON1dlYkNvcmUxMVJl
bmRlckJsb2NrMTFwYWludEZsb2F0c0VSTlNfOVBhaW50SW5mb0VpaWIKIF9fWk43V2ViQ29yZTEx
UmVuZGVyQmxvY2sxMHBhaW50Q2FyZXRFUk5TXzlQYWludEluZm9FaWlOU185Q2FyZXRUeXBlRQog
X19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xM2NhcmV0UmVuZGVyZXJFdgogX19aTks3V2Vi
Q29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3aXNDb250ZW50RWRpdGFibGVFdgotX19aTjdXZWJDb3Jl
MThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVF
RUUKIF9fWk43V2ViQ29yZTE4aXNFZGl0YWJsZVBvc2l0aW9uRVJLTlNfOFBvc2l0aW9uRQogX19a
Tks3V2ViQ29yZTE5RHJhZ0NhcmV0Q29udHJvbGxlcjEzY2FyZXRSZW5kZXJlckV2CiBfX1pON1dl
YkNvcmUxMVJlbmRlckJsb2NrMjVwYWludENvbnRpbnVhdGlvbk91dGxpbmVzRVJOU185UGFpbnRJ
bmZvRWlpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggY2U4YTE1ZjJiODU1
MWEyNzM4MGRiOTJhOGYzODJkNzk0MmIzZTI2MS4uYzIzYTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1
MmI3N2RjMzY0M2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtODYs
MTEgKzg2LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAgICAg
cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsK
IH0KIAotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiog
c2VsZikKLXsKLSAgICBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4oc2VsZiktPnJlbW92ZWRM
YXN0UmVmKCk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShD
b250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTliYWJm
YmZlNjBmOTE2ZmZlM2MuLmUwZGY1ZmZhNTYzMDkxNmM3YzEyZjEyZWIzYzk2MjA2YmI0MTEzNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjgxLDYgKzI4MSwyNyBAQCBpbmxp
bmUgTm9kZSogQ29udGFpbmVyTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBzdGF5
V2l0aGluKSBjb25zdAogICAgIHJldHVybiB0cmF2ZXJzZU5leHRTaWJsaW5nKHN0YXlXaXRoaW4p
OwogfQogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgPyAwIDogc3RhdGljX2Nhc3Q8
Q29udGFpbmVyTm9kZSo+KHBhcmVudCgpKTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUqIE5v
ZGU6OnBhcmVudE9ySG9zdE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
b250YWluZXJOb2RlKj4ocGFyZW50KCkpOworfQorCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRQYXJl
bnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqIHBhcmVudCkKK3sKKyAgICBzZXRQYXJlbnQocGFy
ZW50KTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFyYW50
ZWVkSG9zdEZyZWUoKSBjb25zdAoreworICAgIEFTU0VSVCghZ2V0RmxhZyhJc1NoYWRvd1Jvb3RG
bGFnKSk7CisgICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKTsKK30KKwogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPE5vZGU+LCAxMT4gTm9kZVZlY3RvcjsKIAogaW5saW5lIHZvaWQgZ2V0Q2hpbGRO
b2RlcyhOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDI5ZWZm
ZTNmOGI3NTJlYjRjMGZhN2VlNDYyZjU3ZjJmYzY2ZWNjZGYuLjI0YWYwYzZhMDUyOGIxOWQzZWU5
MWYyNTU4Yzk1ZDVhNmRiNTc5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTA0LDcgKzEwNCw3IEBAIGVu
dW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9k
ZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKLWNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+
IHsKK2NsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7
CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKICAgICBmcmllbmQgY2xhc3MgVHJlZVNjb3Bl
QWRvcHRlcjsKQEAgLTYyOSw4ICs2MjksOCBAQCBwdWJsaWM6CiAgICAgLy8gdG8gZXZlbnQgbGlz
dGVuZXJzLCBhbmQgcHJldmVudHMgRE9NQWN0aXZhdGUgZXZlbnRzIGZyb20gYmVpbmcgc2VudCBh
dCBhbGwuCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAKLSAgICB1c2luZyBU
cmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cmVmOworICAg
IHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiAgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
bnN1cmVFdmVudFRhcmdldERhdGEoKTsKQEAgLTc3Niw4ICs3NzYsOCBAQCBwcml2YXRlOgogICAg
IC8vIFVzZSBOb2RlOjpwYXJlbnROb2RlIGFzIHRoZSBjb25zaXN0ZW50IHdheSBvZiBxdWVyeWlu
ZyBhIHBhcmVudCBub2RlLgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIG1hZGUgcHJpdmF0ZSB0byBl
bnN1cmUgYSBjb21waWxlciBlcnJvciBvbiBjYWxsIHNpdGVzIHRoYXQKICAgICAvLyBkb24ndCBm
b2xsb3cgdGhpcyBydWxlLgotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnBh
cmVudDsKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpzZXRQYXJlbnQ7Cisg
ICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cGFyZW50OworICAgIHVzaW5nIFRyZWVTaGFyZWQ8
Tm9kZT46OnNldFBhcmVudDsKIAogICAgIHZvaWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKIApAQCAt
ODMwLDI3ICs4MzAsNiBAQCBpbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwog
fQogCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgPyAwIDogcGFyZW50KCk7Ci19Ci0K
LWlubGluZSB2b2lkIE5vZGU6OnNldFBhcmVudE9ySG9zdE5vZGUoQ29udGFpbmVyTm9kZSogcGFy
ZW50KQotewotICAgIHNldFBhcmVudChwYXJlbnQpOwotfQotCi1pbmxpbmUgQ29udGFpbmVyTm9k
ZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhcmVudCgp
OwotfQotCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRI
b3N0RnJlZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcp
KTsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpOwotfQotCiBpbmxpbmUgdm9pZCBOb2Rl
OjpyZWF0dGFjaCgpCiB7CiAgICAgaWYgKGF0dGFjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDVmYWM5NTZiNDFhM2QzMjIxMjI2NTFm
ODM3NjlmNjY4ZDQzYTEzZTEuLjY4OWM2MTBhNmI1MWVlNmRiMjk1ODRkZGZlNzdjYmI0MjRmNGEw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBA
IC0xMDksOCArMTA5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2RlKik7CiAKLSAgICB1c2luZyBU
cmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cmVmOworICAg
IHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCos
IEhUTUxGb3JtRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CmluZGV4IGM0NGRhMDIxZGIyYmNiMWI4MWI1MzQ4MGRlOTEyZjczYjIyNTNiZWYuLjUwNmFlYzVk
Zjk4MGU1NTg5OTQ3NzNiNzY1YjQxOTUwZGMyZDlhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIGJvb2wgY2hl
Y2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9t
VmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKLSAgICB1c2luZyBUcmVlU2hh
cmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJO
b2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cmVmOworICAgIHVzaW5n
IFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5S
YW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdXNlRmFsbGJhY2tDb250ZW50KCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDdhOTFjZWRmMDYzZTk1MTZiMDU2
NjMxOGZiYWJjN2Q5ZWYxNzI1MDYuLjcxNGE3ODQ4MWE5ZTg0MDAzZWFmOGM3ZjFiMzdmZTYzZDAy
NWYyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTMyLDE3ICszMiw2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiopOwogI2VuZGlmCiAKLWNsYXNzIENv
bnRhaW5lck5vZGU7Ci1jbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBUcmVlU2hhcmVkOwotCi0vLyBBbGwgY2xhc3NlcyB0aGF0IGluaGVyaXQgVHJl
ZVNoYXJlZCBuZWVkIHRvIGRlZmluZQotLy8gY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8
VD4qKS4gVGhpcyBpcyBuZWNlc3NhcnkKLS8vIHRvIGtpbGwgYWxsIHZpcnR1YWwgbWV0aG9kcyBm
cm9tIFRyZWVTaGFyZWQsIGJ5IHdoaWNoCi0vLyB3ZSBjYW4gc2F2ZSA4IGJ5dGUgZm9yIGEgdmly
dHVhbCBtZXRob2QgdGFibGUgcG9pbnRlci4KLXZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVT
aGFyZWQ8Q29udGFpbmVyTm9kZT4qKTsKLXZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFy
ZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiopOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBU
cmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHB1Ymxp
YzoKQEAgLTkxLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0
UmVmRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1
ZTsKICNlbmRpZgotICAgICAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVmKHRoaXMpOworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5yZW1vdmVkTGFzdFJlZigpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCmluZGV4
IGMzZDZmMDg4ZTBiNzNiZDZiYTBmNWQ4MTMzNjc1OWI3NDRlZjJkNzAuLjUxYjE3ZTZmM2UwYWQ3
NDIyOTFhNzA2OGVjNDczY2ExNzQ2NGE3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50SW5zdGFuY2UuY3BwCkBAIC03MiwxMSArNzIsNiBAQCBTVkdFbGVtZW50SW5zdGFuY2U6On5T
VkdFbGVtZW50SW5zdGFuY2UoKQogICAgIG1fZWxlbWVudCA9IDA7CiB9CiAKLXZvaWQgY2FsbFJl
bW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiogc2VsZikKLXsKLSAg
ICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50SW5zdGFuY2UqPihzZWxmKS0+cmVtb3ZlZExhc3RSZWYo
KTsKLX0KLQogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCgpCiB7CiAgICAgLy8gQ2xl
YXIgYWxsIHBvaW50ZXJzLiBXaGVuIHRoZSBub2RlIGlzIGRldGFjaGVkIGZyb20gdGhlIHNoYWRv
dyBET00gaXQgc2hvdWxkIGJlIHJlbW92ZWQgYnV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCmluZGV4
IDQzYWQxOWE4MzAyODIyYzVjMDg1NGY4YTIyMDdkZTAyM2M2YmVlOTMuLjI3ZTk0MWVlN2M2Nzkx
NDMxMjA4ZTgwZDJlZWFhMDY2MGU1MTRlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYktpdC5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKQEAgLTEz
NDksNyArMTM0OSw2IEBAIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jl
c3VsdEVMbTBFRTE1cmVzZXJ2ZUNhcGFjaXR5RW0KIF9fWk4zV1RGMTFWZWN0b3JNb3ZlcklMYjBF
TjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFRTRtb3ZlRVBLUzJfUzVfUFMyXwogX19aTjNX
VEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFpbEVMbTBFRUMyRVJLUzNfCiBfX1pON1dl
YkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEQxRXYKLV9fWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRM
YXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFCiBfX1pOM1dURjZW
ZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxtMEVFRDFFdgogX19aTjNXVEY2VmVjdG9y
SU43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFMTRzaHJpbmtDYXBhY2l0eUVtCiBf
X1pOMTVXZWJFZGl0b3JDbGllbnQyNXNob3VsZFNob3dEZWxldGVJbnRlcmZhY2VFUE43V2ViQ29y
ZTExSFRNTEVsZW1lbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5v
cmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCmluZGV4IDIxY2EyZmY2Y2Uz
YWJiZTdjZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAuLjA0MWY4OWVmYjExZWI0Y2ZlMmQ1NTQ5ZTE3
ZDAzYTJkODk0ZmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9y
ZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCkBAIC0yNDkxLDcgKzI0
OTEsNiBAQCBfX1pOM1dURjExVmVjdG9yTW92ZXJJTGIwRU43V2ViQ29yZTE4VGV4dENoZWNraW5n
UmVzdWx0RUU0bW92ZUVQS1MyX1M1X1BTMl8KIF9fWk43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVz
dWx0QzJFUktTMF8KIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxM0dyYW1tYXJEZXRhaWxFTG0w
RUVDMkVSS1MzXwogX19aTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHREMkV2Ci1fX1pON1dl
YkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVy
Tm9kZUVFRQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFpbEVMbTBFRUQy
RXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRTE0
c2hyaW5rQ2FwYWNpdHlFbQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENoZWNraW5n
UmVzdWx0RUxtMEVFNnNocmlua0VtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggNTYxMzk2OTNj
ZmM2YjYwNjRjMWE1YjJhOGIwNmRkM2JkOWVjNWFmYS4uZTkwMTk5N2FiMWI4ODZlNmE0ZTk3MGI5
OTViOTE2NGU4NjJhNGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMTYxLDcgKzE2MSw2
IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1Jl
ZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAgICAgICAgID9hZGRTbG93Q2FzZUBBdG9t
aWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBBVlN0
cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZT
dHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNsYXNzSW5mb0Az
QEBaCi0gICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2ViQ29yZUBAWUFYUEFWPyRUcmVlU2hh
cmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAgICAgICAgID9jcmVhdGVASFRNTENv
bnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZIVE1MQ29udGVudEVsZW1l
bnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgogICAgICAgICA/Y3JlYXRlQFJhbmdl
QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBWPyRQYXNz
UmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVA
QEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9vdEBXZWJDb3JlQEBTQT9BVj8kUGFz
c1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJAQUFIQFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBhMzk5MTNhYmY2YTczZDhmMDJiNzRl
N2RjMDBiYTM4OWE3MGY3M2JhLi5iNWVlOWFjYWEyNDQxMDJhNzY5YjhhNzExZDIxMTQzM2U2ODhm
ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysr
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xMDgsNyArMTA4LDYg
QEAgRVhQT1JUUwogICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICAg
ICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxP
bk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKLSAgICAgICAgP2NhbGxSZW1vdmVkTGFz
dFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNvbnRhaW5lck5vZGVAV2ViQ29yZUBA
QDFAQFoKICAgICAgICAgP2NvbnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHNASW5zcGVjdG9yQ29u
c29sZUFnZW50QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQEkkMEFAQFdURkBAWFoKICAgICAgICAg
P2NvdW50ZXJWYWx1ZUBJbnNwZWN0b3JDb3VudGVyc0BXZWJDb3JlQEBTQUhXNENvdW50ZXJUeXBl
QDEyQEBaCiAgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBQQkRAWgpk
aWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMmUyMzU2NDAwNjA5OTAwZDI1OTI1MzJiZTRiZTYz
M2I5MzRhN2ZhMy4uOTA5ZGVlZmY4NWY5ZTA5YmZiYjgzNWQwZGM0MDYwMjA1ZTg5ZmE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Myw3ICs2Myw2IEBAIF9aTjdXZWJDb3JlMTZzY3Jp
cHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVj
dHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFz
c0luZm9FOwogX1pON1dlYkNvcmUxN0luc3BlY3RvckNvdW50ZXJzMTJjb3VudGVyVmFsdWVFTlMw
XzExQ291bnRlclR5cGVFOwogX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVF
UE5TXzhEb2N1bWVudEU7Ci1fWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRy
ZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFOwogX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0VpaTsKIF9a
TjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnQyOGNvbnNvbGVNZXNzYWdlQXJndW1lbnRD
b3VudHNFdjsKIF9aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBOU180UGFnZUU7
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNzMwMmQ5YWNmNzhh
ZDM3MjZkNGM3Y2MxMjE4YjRkMTVjNTcwNS4uMjBkZTU0YjdjMGVkNGNjMzFiNGFlMzk1NTMzMjhk
MjQ5MDg1NWZmZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA2LTA4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDaGFuZ2UgJ2NsYXNzIE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPicKKyAgICAgICAgdG8gJ2NsYXNzIE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxO
b2RlPicKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
NjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCBhIHN5bWJvbCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYoKS4KKworICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXpl
IGZyb20gNzIgYnl0ZSB0byA2NCBieXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146726</attachid>
            <date>2012-06-10 01:29:15 -0700</date>
            <delta_ts>2012-06-10 08:06:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>attachment.cgi?id=146551</filename>
            <type>text/plain</type>
            <size>16431</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZlZTJhNDZmZWI2NzZi
N2U4MTQ4NzI1MzAzMzM1ZmIyZmZhZTM1Yy4uYmEzNmNiNTJjYjg3YjQzZTBkMjhkMjIxMjJmYzlh
NjA0MjM4YjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA2LTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGUgaW5o
ZXJpdCBmcm9tIFRyZWVTaGFyZWQ8Tm9kZT4gaW5zdGVhZCBvZiBUcmVlU2hhcmVkPENvbnRhaW5l
ck5vZGU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODY1MworCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBCZWNh
dXNlIHRoZSBOb2RlIGNsYXNzIGluaGVyaXRzIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4gaW5z
dGVhZAorICAgICAgICBvZiBUcmVlU2hhcmVkPE5vZGU+LCBUcmVlU2hhcmVkLmggdGVuZHMgdG8g
YmUgZGlydHkuIEZvciBleGFtcGxlLAorICAgICAgICB3ZSBjYW5ub3Qgd3JpdGUgc3RhdGljX2Nh
c3Q8VCo+KHRoaXMpIGluIFRyZWVTaGFyZWQuaC4gSXQgY2Fubm90IGJlCisgICAgICAgIGNvbXBp
bGVkLgorCisgICAgICAgIENvbnNlcXVlbnRseSwgcjExOTgwMiBoYWQgdG8gYWRkIGNhbGxSZW1v
dmVkTGFzdFJlZihDb250YWluZXJOb2RlKiBzZWxmKQorICAgICAgICB0byBDb250YWluZXJOb2Rl
LmNwcCBqdXN0IHRvIGNhbGwgc3RhdGljX2Nhc3Q8VCo+KHNlbGYpLiBTZWUgdGhlCisgICAgICAg
IGRpc2N1c3Npb24gYXJvdW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODUyOCNjMjEgZm9yCisgICAgICAgIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgJ2NsYXNzIE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2Rl
PicgdG8KKyAgICAgICAgJ2NsYXNzIE5vZGUgOiBwdWJsaWMgVHJlZVNoYXJlZDxOb2RlPicuCisK
KyAgICAgICAgTm8gdGVzdHMuIENvbmZpcm0gbm8gcmVncmVzc2lvbiBpbiBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE9ySG9zdE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UGFyZW50T3JIb3N0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vVHJlZVNo
YXJlZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVk
OjpkZXJlZik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlZCBhIHN5bWJvbCBvZiBjYWxsUmVtb3ZlZExhc3RS
ZWYoKS4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4KKwogMjAxMi0wNi0wOCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUVFAgMjA0IE5vIENvbnRl
bnQgcmVzcG9uc2VzIHNob3VsZG4ndCB0cmlnZ2VyIE1JTUUgdHlwZSB3YXJuaW5ncyBpbiB0aGUg
d2ViIGluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDhkNDQzMTIzYTZiYTAwNDlmNDdkYmVl
OTZlMTRjZmY1NzY3Nzk0NzkuLmVlOGUzMmJlY2QxOTExMjdkYTEwOTlmODM0NDhmMWU4ZDBjNTVk
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wOCAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBOb2RlIGluaGVy
aXQgZnJvbSBUcmVlU2hhcmVkPE5vZGU+IGluc3RlYWQgb2YgVHJlZVNoYXJlZDxDb250YWluZXJO
b2RlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVtb3Zl
ZCBhIHN5bWJvbCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYoKS4KKworICAgICAgICAqIFdlYktpdC5v
cmRlcjoKKwogMjAxMi0wNi0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmVkdWNlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBieXRlIHRvIDY0IGJ5
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA5Y2UwYTBjOTg0MDYyMzg1OTYzMTY1YjIzYWJmNDdhNDYwY2E2MzI2
Li41ZTcxOWVmNzYzMDI1NTE4ZDNiYThkZjg5ODgxYWI0NzIzMWEyZWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIE1ha2UgTm9kZSBpbmhlcml0IGZyb20gVHJlZVNoYXJlZDxOb2Rl
PiBpbnN0ZWFkIG9mIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjUzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFJlbW92ZWQgYSBzeW1ib2wgb2YgY2FsbFJlbW92
ZWRMYXN0UmVmKCkuCisKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKyAgICAgICAgKiB3
aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEy
LTA2LTA4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0
Ml0gTW92ZSBNYWMtc3BlY2lmaWMgYml0cyBmcm9tIGNvbmZpZy5oIHRvIFdlYktpdDJQcmVmaXgu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZjM3ZTM3YzkyODA1MGFiMzMzMGY5ZGRlYjdkNWZj
OTUzMWVlOWY1Li44NTZmNDBiYzE2MmI2M2UzYjE1MzJjZWRmNjkxNzA2NzNjM2ZiZGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTY2LDcgKzU2Niw2IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZv
cm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk5LN1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVi
b2FyZDExY2hhbmdlQ291bnRFdgogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ1Y29s
b3JFdgogX19aTjdXZWJDb3JlMThTZWFyY2hQb3B1cE1lbnVNYWNDMUVQTlNfMTVQb3B1cE1lbnVD
bGllbnRFCi1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVk
SU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQYXJhZ3JhcGhF
UktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUK
IF9fWk43V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEz
SlNIVE1MRWxlbWVudEUKIF9fWk43V2ViQ29yZTE4cHJveHlTZXJ2ZXJzRm9yVVJMRVJLTlNfNEtV
UkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggYmJmNmEz
ZGQzZDdjZGE4NmJjZGE4MDgwMjNiNWEyMGJjOGNkMzRlOS4uY2EyYjc4MmQ4ZjY0ODE3MDMyYTE1
NGQ4MWJlMmQ5ZTg2NTBhMTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xOTIzLDcgKzE5MjMs
NiBAQCBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMTFwYWludEZsb2F0c0VSTlNfOVBhaW50SW5m
b0VpaWIKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMHBhaW50Q2FyZXRFUk5TXzlQYWludElu
Zm9FaWlOU185Q2FyZXRUeXBlRQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xM2NhcmV0
UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3aXNDb250ZW50RWRp
dGFibGVFdgotX19aTjdXZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJl
ZElOU18xM0NvbnRhaW5lck5vZGVFRUUKIF9fWk43V2ViQ29yZTE4aXNFZGl0YWJsZVBvc2l0aW9u
RVJLTlNfOFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTE5RHJhZ0NhcmV0Q29udHJvbGxlcjEzY2Fy
ZXRSZW5kZXJlckV2CiBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMjVwYWludENvbnRpbnVhdGlv
bk91dGxpbmVzRVJOU185UGFpbnRJbmZvRWlpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggY2U4YTE1ZjJiODU1MWEyNzM4MGRiOTJhOGYzODJkNzk0MmIzZTI2MS4uYzIzYTBi
OWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2RjMzY0M2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtODYsMTEgKzg2LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1v
dmVBbGxDaGlsZHJlbigpCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBD
b250YWluZXJOb2RlPih0aGlzKTsKIH0KIAotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNo
YXJlZDxDb250YWluZXJOb2RlPiogc2VsZikKLXsKLSAgICBzdGF0aWNfY2FzdDxDb250YWluZXJO
b2RlKj4oc2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6
dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgTm9k
ZVZlY3RvciBjaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGJlOGM3
OGU0ZDVmMTA1NjdkNGU1NTliYWJmYmZlNjBmOTE2ZmZlM2MuLmUwZGY1ZmZhNTYzMDkxNmM3YzEy
ZjEyZWIzYzk2MjA2YmI0MTEzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAt
MjgxLDYgKzI4MSwyNyBAQCBpbmxpbmUgTm9kZSogQ29udGFpbmVyTm9kZTo6dHJhdmVyc2VOZXh0
Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdAogICAgIHJldHVybiB0cmF2ZXJzZU5l
eHRTaWJsaW5nKHN0YXlXaXRoaW4pOwogfQogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6
cGFyZW50Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290Rmxh
ZykgPyAwIDogc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHBhcmVudCgpKTsKK30KKworaW5s
aW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4ocGFyZW50KCkpOworfQorCitpbmxp
bmUgdm9pZCBOb2RlOjpzZXRQYXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqIHBhcmVudCkK
K3sKKyAgICBzZXRQYXJlbnQocGFyZW50KTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUqIE5v
ZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25zdAoreworICAgIEFTU0VSVCgh
Z2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSk7CisgICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUo
KTsKK30KKwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE5vZGU+LCAxMT4gTm9kZVZlY3RvcjsKIAog
aW5saW5lIHZvaWQgZ2V0Q2hpbGROb2RlcyhOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCmluZGV4IDI5ZWZmZTNmOGI3NTJlYjRjMGZhN2VlNDYyZjU3ZjJmYzY2ZWNjZGYu
LjI0YWYwYzZhMDUyOGIxOWQzZWU5MWYyNTU4Yzk1ZDVhNmRiNTc5YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtMTA0LDcgKzEwNCw3IEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNT
dHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKLWNsYXNzIE5vZGUg
OiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVl
U2hhcmVkPENvbnRhaW5lck5vZGU+IHsKK2NsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGU+IHsKICAgICBm
cmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKICAgICBm
cmllbmQgY2xhc3MgVHJlZVNjb3BlQWRvcHRlcjsKQEAgLTYyOSw4ICs2MjksOCBAQCBwdWJsaWM6
CiAgICAgLy8gdG8gZXZlbnQgbGlzdGVuZXJzLCBhbmQgcHJldmVudHMgRE9NQWN0aXZhdGUgZXZl
bnRzIGZyb20gYmVpbmcgc2VudCBhdCBhbGwuCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkg
Y29uc3Q7CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAg
dXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNo
YXJlZDxOb2RlPjo6cmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiAg
ICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKQEAgLTc3Niw4ICs3
NzYsOCBAQCBwcml2YXRlOgogICAgIC8vIFVzZSBOb2RlOjpwYXJlbnROb2RlIGFzIHRoZSBjb25z
aXN0ZW50IHdheSBvZiBxdWVyeWluZyBhIHBhcmVudCBub2RlLgogICAgIC8vIFRoaXMgbWV0aG9k
IGlzIG1hZGUgcHJpdmF0ZSB0byBlbnN1cmUgYSBjb21waWxlciBlcnJvciBvbiBjYWxsIHNpdGVz
IHRoYXQKICAgICAvLyBkb24ndCBmb2xsb3cgdGhpcyBydWxlLgotICAgIHVzaW5nIFRyZWVTaGFy
ZWQ8Q29udGFpbmVyTm9kZT46OnBhcmVudDsKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5l
ck5vZGU+OjpzZXRQYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cGFyZW50Owor
ICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OnNldFBhcmVudDsKIAogICAgIHZvaWQgdHJhY2tG
b3JEZWJ1Z2dpbmcoKTsKIApAQCAtODMwLDI3ICs4MzAsNiBAQCBpbmxpbmUgdm9pZCBhZGRTdWJy
ZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQogICAg
ICAgICB1cmxzLmFkZCh1cmwpOwogfQogCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFy
ZW50Tm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykg
PyAwIDogcGFyZW50KCk7Ci19Ci0KLWlubGluZSB2b2lkIE5vZGU6OnNldFBhcmVudE9ySG9zdE5v
ZGUoQ29udGFpbmVyTm9kZSogcGFyZW50KQotewotICAgIHNldFBhcmVudChwYXJlbnQpOwotfQot
Ci1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHBhcmVudCgpOwotfQotCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6
cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFnZXRG
bGFnKElzU2hhZG93Um9vdEZsYWcpKTsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpOwot
fQotCiBpbmxpbmUgdm9pZCBOb2RlOjpyZWF0dGFjaCgpCiB7CiAgICAgaWYgKGF0dGFjaGVkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDVm
YWM5NTZiNDFhM2QzMjIxMjI2NTFmODM3NjlmNjY4ZDQzYTEzZTEuLjY4OWM2MTBhNmI1MWVlNmRi
Mjk1ODRkZGZlNzdjYmI0MjRmNGEwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChO
b2RlKik7CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAg
dXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNo
YXJlZDxOb2RlPjo6cmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiBw
cm90ZWN0ZWQ6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IGM0NGRhMDIxZGIyYmNiMWI4MWI1MzQ4MGRlOTEy
ZjczYjIyNTNiZWYuLjUwNmFlYzVkZjk4MGU1NTg5OTQ3NzNiNzY1YjQxOTUwZGMyZDlhYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTU4LDggKzU4LDggQEAg
cHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9
CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcg
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxO
b2RlPjo6cmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZT46OmRlcmVmOwogCiAgICAgdmly
dHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdXNlRmFs
bGJhY2tDb250ZW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VHJlZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4
IDdhOTFjZWRmMDYzZTk1MTZiMDU2NjMxOGZiYWJjN2Q5ZWYxNzI1MDYuLjcxNGE3ODQ4MWE5ZTg0
MDAzZWFmOGM3ZjFiMzdmZTYzZDAyNWYyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hh
cmVkLmgKQEAgLTMyLDE3ICszMiw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVT
aGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiop
OwogI2VuZGlmCiAKLWNsYXNzIENvbnRhaW5lck5vZGU7Ci1jbGFzcyBTVkdFbGVtZW50SW5zdGFu
Y2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkOwotCi0vLyBBbGwgY2xh
c3NlcyB0aGF0IGluaGVyaXQgVHJlZVNoYXJlZCBuZWVkIHRvIGRlZmluZQotLy8gY2FsbFJlbW92
ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8VD4qKS4gVGhpcyBpcyBuZWNlc3NhcnkKLS8vIHRvIGtpbGwg
YWxsIHZpcnR1YWwgbWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQsIGJ5IHdoaWNoCi0vLyB3ZSBjYW4g
c2F2ZSA4IGJ5dGUgZm9yIGEgdmlydHVhbCBtZXRob2QgdGFibGUgcG9pbnRlci4KLXZvaWQgY2Fs
bFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4qKTsKLXZvaWQgY2FsbFJl
bW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiopOwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUcmVlU2hhcmVkKTsKIHB1YmxpYzoKQEAgLTkxLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgbV9k
ZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgY2FsbFJlbW92ZWRM
YXN0UmVmKHRoaXMpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5yZW1vdmVk
TGFzdFJlZigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50SW5zdGFuY2UuY3BwCmluZGV4IGMzZDZmMDg4ZTBiNzNiZDZiYTBmNWQ4MTMzNjc1OWI3NDRl
ZjJkNzAuLjUxYjE3ZTZmM2UwYWQ3NDIyOTFhNzA2OGVjNDczY2ExNzQ2NGE3OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCkBAIC03MiwxMSArNzIsNiBAQCBT
VkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogICAgIG1fZWxlbWVudCA9
IDA7CiB9CiAKLXZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudElu
c3RhbmNlPiogc2VsZikKLXsKLSAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50SW5zdGFuY2UqPihz
ZWxmKS0+cmVtb3ZlZExhc3RSZWYoKTsKLX0KLQogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmRl
dGFjaCgpCiB7CiAgICAgLy8gQ2xlYXIgYWxsIHBvaW50ZXJzLiBXaGVuIHRoZSBub2RlIGlzIGRl
dGFjaGVkIGZyb20gdGhlIHNoYWRvdyBET00gaXQgc2hvdWxkIGJlIHJlbW92ZWQgYnV0LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0Lm9yZGVyCmluZGV4IDQzYWQxOWE4MzAyODIyYzVjMDg1NGY4YTIyMDdkZTAyM2M2
YmVlOTMuLjI3ZTk0MWVlN2M2NzkxNDMxMjA4ZTgwZDJlZWFhMDY2MGU1MTRlNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQub3JkZXIKQEAgLTEzNDksNyArMTM0OSw2IEBAIF9fWk4zV1RGNlZlY3RvcklON1dl
YkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRTE1cmVzZXJ2ZUNhcGFjaXR5RW0KIF9fWk4z
V1RGMTFWZWN0b3JNb3ZlcklMYjBFTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFRTRtb3Zl
RVBLUzJfUzVfUFMyXwogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFpbEVM
bTBFRUMyRVJLUzNfCiBfX1pON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEQxRXYKLV9fWk43
V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWlu
ZXJOb2RlRUVFCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxtMEVF
RDFFdgogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVF
MTRzaHJpbmtDYXBhY2l0eUVtCiBfX1pOMTVXZWJFZGl0b3JDbGllbnQyNXNob3VsZFNob3dEZWxl
dGVJbnRlcmZhY2VFUE43V2ViQ29yZTExSFRNTEVsZW1lbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9y
ZGVyCmluZGV4IDIxY2EyZmY2Y2UzYWJiZTdjZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAuLjA0MWY4
OWVmYjExZWI0Y2ZlMmQ1NTQ5ZTE3ZDAzYTJkODk0ZmEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQy
Lm9yZGVyCkBAIC0yNDkxLDcgKzI0OTEsNiBAQCBfX1pOM1dURjExVmVjdG9yTW92ZXJJTGIwRU43
V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUU0bW92ZUVQS1MyX1M1X1BTMl8KIF9fWk43V2Vi
Q29yZTE4VGV4dENoZWNraW5nUmVzdWx0QzJFUktTMF8KIF9fWk4zV1RGNlZlY3RvcklON1dlYkNv
cmUxM0dyYW1tYXJEZXRhaWxFTG0wRUVDMkVSS1MzXwogX19aTjdXZWJDb3JlMThUZXh0Q2hlY2tp
bmdSZXN1bHREMkV2Ci1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVl
U2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEz
R3JhbW1hckRldGFpbEVMbTBFRUQyRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRleHRD
aGVja2luZ1Jlc3VsdEVMbTBFRTE0c2hyaW5rQ2FwYWNpdHlFbQogX19aTjNXVEY2VmVjdG9ySU43
V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFNnNocmlua0VtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKaW5kZXggNTYxMzk2OTNjZmM2YjYwNjRjMWE1YjJhOGIwNmRkM2JkOWVjNWFmYS4uZTkw
MTk5N2FiMWI4ODZlNmE0ZTk3MGI5OTViOTE2NGU4NjJhNGViYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgpAQCAtMTYxLDcgKzE2MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNTdHJp
bmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAgICAg
ICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3Ry
aW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1
Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCi0gICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2Vi
Q29yZUBAWUFYUEFWPyRUcmVlU2hhcmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAg
ICAgICAgID9jcmVhdGVASFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVm
UHRyQFZIVE1MQ29udGVudEVsZW1lbnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgog
ICAgICAgICA/Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBX
ZWJDb3JlQEBAV1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNz
UmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9v
dEBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQ
QVZFbGVtZW50QDJAQUFIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBh
Mzk5MTNhYmY2YTczZDhmMDJiNzRlN2RjMDBiYTM4OWE3MGY3M2JhLi5iNWVlOWFjYWEyNDQxMDJh
NzY5YjhhNzExZDIxMTQzM2U2ODhmZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCkBAIC0xMDgsNyArMTA4LDYgQEAgRVhQT1JUUwogICAgICAgICA/PzFUaHJlYWRDb25kaXRp
b25AV1RGQEBRQUVAWFoKICAgICAgICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKLSAg
ICAgICAgP2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNv
bnRhaW5lck5vZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NvbnNvbGVNZXNzYWdlQXJndW1l
bnRDb3VudHNASW5zcGVjdG9yQ29uc29sZUFnZW50QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQEkk
MEFAQFdURkBAWFoKICAgICAgICAgP2NvdW50ZXJWYWx1ZUBJbnNwZWN0b3JDb3VudGVyc0BXZWJD
b3JlQEBTQUhXNENvdW50ZXJUeXBlQDEyQEBaCiAgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZ
QUlQNkFQQVhQQVhAWjBQQkRAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMmUyMzU2NDAw
NjA5OTAwZDI1OTI1MzJiZTRiZTYzM2I5MzRhN2ZhMy4uOTA5ZGVlZmY4NWY5ZTA5YmZiYjgzNWQw
ZGM0MDYwMjA1ZTg5ZmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Myw3ICs2Myw2
IEBAIF9aTjdXZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdX
ZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5
U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUxN0luc3BlY3RvckNvdW50
ZXJzMTJjb3VudGVyVmFsdWVFTlMwXzExQ291bnRlclR5cGVFOwogX1pON1dlYkNvcmUxOEhUTUxD
b250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7Ci1fWk43V2ViQ29yZTE4Y2FsbFJl
bW92ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFOwogX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRz
RnJvbUludGVybmFsc0VpaTsKIF9aTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnQyOGNv
bnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHNFdjsKIF9aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRp
b25Gb3JQYWdlRVBOU180UGFnZUU7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggMTRmNzMwMmQ5YWNmNzhhZDM3MjZkNGM3Y2MxMjE4YjRkMTVjNTcwNS4uMjBkZTU0Yjdj
MGVkNGNjMzFiNGFlMzk1NTMzMjhkMjQ5MDg1NWZmZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTA4ICBLZW50YXJvIEhhcmEg
IDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGUgaW5oZXJpdCBmcm9t
IFRyZWVTaGFyZWQ8Tm9kZT4gaW5zdGVhZCBvZiBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODY1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBSZW1vdmVkIGEgc3lt
Ym9sIG9mIGNhbGxSZW1vdmVkTGFzdFJlZigpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wNi0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVkdWNlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBi
eXRlIHRvIDY0IGJ5dGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146740</attachid>
            <date>2012-06-10 08:54:43 -0700</date>
            <delta_ts>2012-06-10 09:22:50 -0700</delta_ts>
            <desc>Patch (Windows .def files not right yet)</desc>
            <filename>bug-88653-20120610085443.patch</filename>
            <type>text/plain</type>
            <size>18850</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTEwICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWVkZWQgY2FsbFJl
bW92ZWRMYXN0UmVmIGZ1bmN0aW9uIGZyb20gVHJlZVNoYXJlZCByZWZhY3RvcmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2NTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBVcGRhdGVkIHRvIHJlbW92ZSBjYWxsUmVtb3ZlZExhc3RSZWYgYW5kIGFkZCByZW1vdmVkTGFz
dFJlZi4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDogUmVtb3ZlZCBjYWxsUmVt
b3ZlZExhc3RSZWYsIHdoaWNoIGlzIG5vIGxvbmdlcgorICAgICAgICBuZWVkZWQgYW5kIGFsc28g
aGFkIGEgYmFkIGNhc3QgaW4gaXQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogTWFkZSBy
ZW1vdmVkTGFzdFJlZiBwcml2YXRlIGFuZCBub24tdmlydHVhbCBhbmQgbWFkZSBOb2RlCisgICAg
ICAgIGEgZnJpZW5kIHNvIGl0IGNhbiBjYWxsIHRoZSBwcml2YXRlIGZ1bmN0aW9uLgorCisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RS
ZWYpOiBNb3ZlZCBoZXJlLiBUaGlzIHNob3VsZCBub3QgYmUgYW4gaW5saW5lCisgICAgICAgIGZ1
bmN0aW9uLiBBZGRlZCBjb21tZW50cyBleHBsYWluaW5nIHdoeSBpdCBzaG91bGQgbm90IGJlIGlu
bGluZWQuIEFsc28gYWRkZWQKKyAgICAgICAgZXhwbGljaXQgY29kZSB0byBjYWxsIHRvIERvY3Vt
ZW50OjpyZW1vdmVkTGFzdFJlZiwgYW5kIGFkZGVkIGEgY29tbWVudCB3aHkKKyAgICAgICAgdGhh
dCdzIHRoZSByaWdodCB0aGluZyB0byBkbyBoZXJlLgorICAgICAgICAqIGRvbS9Ob2RlLmg6IElu
aGVyaXQgZnJvbSBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+LiBNYWRlIHRoZQorICAg
ICAgICByZW1vdmVkTGFzdFJlZiBmdW5jdGlvbiBub24tdmlydHVhbCBhbmQgcmVtb3ZlZCBpdCBm
cm9tIHRoZSBoZWFkZXIgZmlsZS4KKyAgICAgICAgQ2hhbmdlZCBUcmVlU2hhcmVkIHVzaW5nIHN0
YXRlbWVudHMgdG8ganVzdCBuYW1lIHRoZSBjbGFzcyB0ZW1wbGF0ZSBzaW5jZSB3ZSBkb24ndAor
ICAgICAgICBoYXZlIHRvIHNwZWNpZnkgdGhlIHBhcnRpY3VsYXIgdGVtcGxhdGUgYXJndW1lbnRz
IGluIHRoYXQgY29udGV4dC4gTWFkZQorICAgICAgICB0aGUgVHJlZVNoYXJlZCB0ZW1wbGF0ZSBj
bGFzcyBhIGZyaWVuZCBzbyBpdCBjYW4gY2FsbCB0aGUgcHJpdmF0ZSByZW1vdmVkTGFzdFJlZi4K
KworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBDaGFuZ2VkIFRyZWVT
aGFyZWQgdXNpbmcgc3RhdGVtZW50cyB0byBqdXN0IG5hbWUKKyAgICAgICAgdGhlIGNsYXNzIHRl
bXBsYXRlIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gc3BlY2lmeSB0aGUgcGFydGljdWxhciB0ZW1w
bGF0ZSBhcmd1bWVudHMKKyAgICAgICAgaW4gdGhhdCBjb250ZXh0LgorICAgICAgICAqIGh0bWwv
SFRNTE9iamVjdEVsZW1lbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hh
cmVkLmg6IE1hZGUgVHJlZVNoYXJlZCB0YWtlIHR3byB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIHRo
ZQorICAgICAgICBub2RlIHR5cGUgYW5kIHRoZSBwYXJlbnQgbm9kZSB0eXBlLiBSZW1vdmVkIHRo
ZSBjYWxsUmVtb3ZlZExhc3RSZWYgZnVuY3Rpb25zIGFuZAorICAgICAgICB0aGUgZXh0cmEgZm9y
d2FyZCBkZWNsYXJhdGlvbnMgaXQgcmVxdWlyZWQuIFJlbW92ZWQgdGhlIHByaXZhdGUgdW51c2Vk
CisgICAgICAgIHJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uOyBub3Qgc3VyZSB3aHkgaXQgd2FzIGxl
ZnQgaW4gaGVyZSBhdCBhbGwuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6
IENhbGwgcmVtb3ZlZExhc3RSZWYgaW5zdGVhZCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYuCisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRQYXJlbnQpOiBVc2UgUGFyZW50Tm9kZVR5cGUu
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpwYXJlbnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmFkb3B0ZWQpOiBVcGRhdGVkIHRvIGhhdmUgYm90aCB0ZW1wbGF0ZSBhcmd1bWVu
dHMuCisKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYpOiBSZXBsYWNlZCBjYWxs
UmVtb3ZlZExhc3RSZWYgd2l0aAorICAgICAgICB0aGlzLiBNb3ZlZCB0aGUgYm9keSBvdXQgb2Yg
dGhlIGhlYWRlciBhbmQgYWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRoZQorICAgICAg
ICBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGlubGluZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5oOiBNYWRlIHJlbW92ZWRMYXN0UmVmIG5vbi12aXJ0dWFsLCBub24taW5saW5l
LCBhbmQKKyAgICAgICAgcHJpdmF0ZS4gTWFkZSBUcmVlU2hhcmVkIGEgZnJpZW5kIHNvIGl0IGNh
biBjYWxsIHRoZSBwcml2YXRlIHJlbW92ZWRMYXN0UmVmLgorICAgICAgICBDaGFuZ2VkIFRyZWVT
aGFyZWQgdXNpbmcgc3RhdGVtZW50cyB0byBqdXN0IG5hbWUgdGhlIGNsYXNzIHRlbXBsYXRlIHNp
bmNlIHdlCisgICAgICAgIGRvbid0IGhhdmUgdG8gc3BlY2lmeSB0aGUgcGFydGljdWxhciB0ZW1w
bGF0ZSBhcmd1bWVudHMgaW4gdGhhdCBjb250ZXh0LgorCiAyMDEyLTA2LTEwICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBSZS1zb3J0
ZWQgYW5kIGFscGhhYmV0aXplZCB0aGUgZmlsZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxMTk5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLV9fWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVm
RVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFCiAub2JqY19jbGFzc19uYW1l
X0RPTUFic3RyYWN0VmlldwogLm9iamNfY2xhc3NfbmFtZV9ET01BdHRyCiAub2JqY19jbGFzc19u
YW1lX0RPTUNEQVRBU2VjdGlvbgpAQCAtNzk1LDYgKzc5NCw3IEBAIF9fWk43V2ViQ29yZTRLVVJM
QzFFUDVOU1VSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVQSzdfX0NGVVJMCiBfX1pON1dlYkNvcmU0
S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0Tm9kZTEwcmVuZGVyUmVj
dEVQYgorX19aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWk43V2ViQ29yZTRO
b2RlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pON1dlYkNvcmU0Tm9kZTE4c3RhcnRJZ25vcmlu
Z0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMTlzZXROZWVkc1N0eWxlUmVjYWxjRU5TXzE1U3R5
bGVDaGFuZ2VUeXBlRQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2
aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NiwxMSArODYsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92
ZUFsbENoaWxkcmVuKCkKICAgICByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENv
bnRhaW5lck5vZGU+KHRoaXMpOwogfQogCi12b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hh
cmVkPENvbnRhaW5lck5vZGU+KiBzZWxmKQotewotICAgIHN0YXRpY19jYXN0PENvbnRhaW5lck5v
ZGUqPihzZWxmKS0+cmVtb3ZlZExhc3RSZWYoKTsKLX0KLQogdm9pZCBDb250YWluZXJOb2RlOjp0
YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKIHsKICAgICBOb2Rl
VmVjdG9yIGNoaWxkcmVuOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExOTky
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjAsOCArMjIwLDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0KICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTExMjksOCArMTEyNywx
MSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lv
biA9IFN0cmluZygpOyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE5vZGU7CiAgICAg
ZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwogCisg
ICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIAogICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7
CiAKICAgICB0eXBlZGVmIHZvaWQgKCpBcmd1bWVudHNDYWxsYmFjaykoY29uc3QgU3RyaW5nJiBr
ZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50Kiwgdm9pZCogZGF0
YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NDEsNiArMjk0MSwyMyBAQCB2
b2lkIE5vZGU6OnJlc2V0Q2FjaGVkUmFkaW9Ob2RlTGlzdFJvb3ROCiAgICAgICAgIGl0LT5zZWNv
bmQtPnNldFJvb3RFbGVtZW50KHRvRWxlbWVudCh0aGlzKSk7CiB9CiAKKy8vIEl0J3MgaW1wb3J0
YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0
byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8vIGRlbGV0ZSBhIE5vZGUgYXQgZWFjaCBkZXJlZiBjYWxs
IHNpdGUuCit2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKK3sKKyAgICAvLyBBbiBleHBsaWNp
dCBjaGVjayBmb3IgRG9jdW1lbnQgaGVyZSBpcyBiZXR0ZXIgdGhhbiBhIHZpcnR1YWwgZnVuY3Rp
b24gc2luY2UgaXQgaXMKKyAgICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2RlcywgYW5k
IGJlY2F1c2UgdGhlIGNhbGwgdG8gcmVtb3ZlZExhc3RSZWYgdGhhdCBpcyBpbmxpbmVkCisgICAg
Ly8gYXQgYWxsIGRlcmVmIGNhbGwgc2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEgbm9uLXZpcnR1
YWwgZnVuY3Rpb24uCisgICAgaWYgKGlzRG9jdW1lbnROb2RlKCkpIHsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNpZm5kZWYgTkRFQlVHCisgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsK
KyNlbmRpZgorICAgIGRlbGV0ZSB0aGlzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDExOTkyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7IAogICAgIFN5bnRoZXRpY1N0eWxlQ2hhbmdlID0gMyA8
PCBub2RlU3R5bGVDaGFuZ2VTaGlmdAogfTsKIAotY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Q29udGFpbmVy
Tm9kZT4geworY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT4gewogICAgIGZy
aWVuZCBjbGFzcyBEb2N1bWVudDsKICAgICBmcmllbmQgY2xhc3MgVHJlZVNjb3BlOwogICAgIGZy
aWVuZCBjbGFzcyBUcmVlU2NvcGVBZG9wdGVyOwpAQCAtMTQ2LDEzICsxNDYsNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0eWxlQ2hhbmdlIGRpZmYoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBS
ZW5kZXJTdHlsZSosIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIH5Ob2RlKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAg
ICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGRlbGV0ZSB0aGlz
OwotICAgIH0KIAogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgTm9kZQogCkBA
IC02MzYsOCArNjI5LDggQEAgcHVibGljOgogICAgIC8vIHRvIGV2ZW50IGxpc3RlbmVycywgYW5k
IHByZXZlbnRzIERPTUFjdGl2YXRlIGV2ZW50cyBmcm9tIGJlaW5nIHNlbnQgYXQgYWxsLgogICAg
IHZpcnR1YWwgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OwogCi0gICAgdXNpbmcgVHJlZVNoYXJlZDxD
b250YWluZXJOb2RlPjo6cmVmOwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46
OmRlcmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ6OnJlZjsKKyAgICB1c2luZyBUcmVlU2hhcmVk
OjpkZXJlZjsKIAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEo
KTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7
CkBAIC03NDgsNiArNzQxLDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEhhc0N1c3RvbUNh
bGxiYWNrcygpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCiBw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkOworCisgICAgdm9pZCByZW1vdmVk
TGFzdFJlZigpOworCiAgICAgLy8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEg
dHJlZSBzY29wZSBtaWdyYXRpb24uCiAgICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0dXJucyBOb2Rl
UmFyZURhdGEgdG8gc2F2ZSBleHRyYSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0aGUg
Y2FsbGVyIHNpdGUuCiAgICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7
CkBAIC03ODMsOCArNzgwLDggQEAgcHJpdmF0ZToKICAgICAvLyBVc2UgTm9kZTo6cGFyZW50Tm9k
ZSBhcyB0aGUgY29uc2lzdGVudCB3YXkgb2YgcXVlcnlpbmcgYSBwYXJlbnQgbm9kZS4KICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBtYWRlIHByaXZhdGUgdG8gZW5zdXJlIGEgY29tcGlsZXIgZXJyb3Ig
b24gY2FsbCBzaXRlcyB0aGF0CiAgICAgLy8gZG9uJ3QgZm9sbG93IHRoaXMgcnVsZS4KLSAgICB1
c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpwYXJlbnQ7Ci0gICAgdXNpbmcgVHJlZVNo
YXJlZDxDb250YWluZXJOb2RlPjo6c2V0UGFyZW50OworICAgIHVzaW5nIFRyZWVTaGFyZWQ6OnBh
cmVudDsKKyAgICB1c2luZyBUcmVlU2hhcmVkOjpzZXRQYXJlbnQ7CiAKICAgICB2b2lkIHRyYWNr
Rm9yRGVidWdnaW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDggKzEwOSw4
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3Np
bmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSopOwogCi0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPjo6cmVmOwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OmRl
cmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ6OnJlZjsKKyAgICB1c2luZyBUcmVlU2hhcmVkOjpk
ZXJlZjsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDExOTkyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IH0KIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9k
ZT46OnJlZjsKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKKyAg
ICB1c2luZyBUcmVlU2hhcmVkOjpyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDo6ZGVyZWY7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVy
biB1c2VGYWxsYmFja0NvbnRlbnQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UcmVlU2hhcmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
cmVlU2hhcmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDIy
ICsyOCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgVHJlZVNoYXJlZDsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgYWRvcHRlZChUcmVlU2hhcmVkPFQ+Kik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwg
dHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVl
U2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKICNlbmRpZgogCi1jbGFzcyBDb250
YWluZXJOb2RlOwotY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgVHJlZVNoYXJlZDsKLQotLy8gQWxsIGNsYXNzZXMgdGhhdCBpbmhlcml0IFRyZWVT
aGFyZWQgbmVlZCB0byBkZWZpbmUKLS8vIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hhcmVkPFQ+
KikuIFRoaXMgaXMgbmVjZXNzYXJ5Ci0vLyB0byBraWxsIGFsbCB2aXJ0dWFsIG1ldGhvZHMgZnJv
bSBUcmVlU2hhcmVkLCBieSB3aGljaAotLy8gd2UgY2FuIHNhdmUgOCBieXRlIGZvciBhIHZpcnR1
YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIuCi12b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hh
cmVkPENvbnRhaW5lck5vZGU+Kik7Ci12b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hhcmVk
PFNWR0VsZW1lbnRJbnN0YW5jZT4qKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVHJl
ZVNoYXJlZCB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9k
ZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRyZWVT
aGFyZWQpOwogcHVibGljOgogICAgIFRyZWVTaGFyZWQoKQpAQCAtOTAsNyArNzksNyBAQCBwdWJs
aWM6CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24gPSB0cnVlOwogI2VuZGlmCi0gICAgICAgICAgICBjYWxsUmVtb3ZlZExhc3RSZWYodGhpcyk7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5yZW1vdmVkTGFzdFJl
ZigpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDYsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogCi0gICAgdm9pZCBzZXRQYXJlbnQoVCog
cGFyZW50KQorICAgIHZvaWQgc2V0UGFyZW50KFBhcmVudE5vZGVUeXBlKiBwYXJlbnQpCiAgICAg
eyAKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgbV9wYXJlbnQgPSBw
YXJlbnQ7IAogICAgIH0KIAotICAgIFQqIHBhcmVudCgpIGNvbnN0CisgICAgUGFyZW50Tm9kZVR5
cGUqIHBhcmVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkT3JH
Q1RocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIG1fcGFyZW50OwpAQCAtMTI0LDE1ICsxMTMsMTEg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgLy8gTmV2ZXIgY2FsbGVkLiByZW1v
dmVkTGFzdFJlZigpIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gYWxsIHRoZSBjbGFzc2VzCi0gICAg
Ly8gdGhhdCBpbmhlcml0IFRyZWVTaGFyZWQuCi0gICAgdm9pZCByZW1vdmVkTGFzdFJlZigpIHsg
QVNTRVJUKDApOyB9Ci0KICNpZm5kZWYgTkRFQlVHCi0gICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+
KFRyZWVTaGFyZWQ8VD4qKTsKKyAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxO
b2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAotICAgIFQqIG1fcGFyZW50Owor
ICAgIFBhcmVudE5vZGVUeXBlKiBtX3BhcmVudDsKICAgICBpbnQgbV9yZWZDb3VudDsKIAogI2lm
bmRlZiBOREVCVUcKQEAgLTE0Miw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiAjaWZuZGVmIE5ERUJV
RwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8
VD4qIG9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnRO
b2RlVHlwZT4gaW5saW5lIHZvaWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnRO
b2RlVHlwZT4qIG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDExOTkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3MiwxNCBAQCBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdF
bGVtZW50SW5zdGFuY2UoCiAgICAgbV9lbGVtZW50ID0gMDsKIH0KIAotdm9pZCBjYWxsUmVtb3Zl
ZExhc3RSZWYoVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+KiBzZWxmKQorLy8gSXQncyBp
bXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVjYXVzZSB3ZSBkb24ndCB3
YW50IHRvIGlubGluZSB0aGUgY29kZSB0bworLy8gZGVsZXRlIGFuIFNWR0VsZW1lbnRJbnN0YW5j
ZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KK3ZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1v
dmVkTGFzdFJlZigpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudEluc3RhbmNlKj4oc2Vs
ZiktPnJlbW92ZWRMYXN0UmVmKCk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fZGVsZXRpb25IYXNC
ZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICBkZWxldGUgdGhpczsKIH0KIAogdm9pZCBTVkdFbGVt
ZW50SW5zdGFuY2U6OmRldGFjaCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDcgQEAgY2xhc3MgU1ZH
RWxlbWVudEluc3RhbmNlTGlzdDsKIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKIC8vIFNWR0Vs
ZW1lbnRJbnN0YW5jZSBtaW1pY3MgTm9kZSwgYnV0IHdpdGhvdXQgcHJvdmlkaW5nIGFsbCBpdHMg
ZnVuY3Rpb25hbGl0eQotY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlIDogcHVibGljIFRyZWVTaGFy
ZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2UgOiBwdWJsaWMgVHJlZVNo
YXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4sIHB1YmxpYyBFdmVu
dFRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3Rh
bmNlPiBjcmVhdGUoU1ZHVXNlRWxlbWVudCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQsIFNWR1Vz
ZUVsZW1lbnQqIGRpcmVjdFVzZUVsZW1lbnQsIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2lu
YWxFbGVtZW50KQogICAgIHsKQEAgLTQ3LDEzICs0Niw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
ZExhc3RSZWYoKQotICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fZGVsZXRpb25IYXNC
ZWd1biA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfTsKIAogICAg
IHZvaWQgc2V0UGFyZW50T3JIb3N0Tm9kZShTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKSB7
IHNldFBhcmVudChpbnN0YW5jZSk7IH0KIApAQCAtMTA1LDggKzk3LDggQEAgcHVibGljOgogICAg
IAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxl
bWVudCopOwogCi0gICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7
Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpkZXJlZjsKKyAgICB1
c2luZyBUcmVlU2hhcmVkOjpyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDo6ZGVyZWY7CiAKICAg
ICAvLyBFdmVudFRhcmdldCBBUEkKICAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgYWJvcnQpOwpAQCAtMTUyLDEwICsx
NDQsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdVc2VFbGVt
ZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPjo6cGFyZW50Owot
ICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPjo6c2V0UGFyZW50OworICAg
IGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkOworCisgICAgdXNpbmcgVHJlZVNoYXJlZDo6cGFyZW50
OworICAgIHVzaW5nIFRyZWVTaGFyZWQ6OnNldFBhcmVudDsKIAogICAgIFNWR0VsZW1lbnRJbnN0
YW5jZShTVkdVc2VFbGVtZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVu
dD4gb3JpZ2luYWxFbGVtZW50KTsKKyAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKICAgICB2
aXJ0dWFsIE5vZGUqIHRvTm9kZSgpIHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50KCk7IH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTMyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBjYWxsUmVt
b3ZlZExhc3RSZWYgZnVuY3Rpb24gZnJvbSBUcmVlU2hhcmVkIHJlZmFjdG9yaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODY1MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVm
OiBFeHBvcnQgcmVtb3ZlZExhc3RSZWYgaW5zdGVhZCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYuCisg
ICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wNi0xMCAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgYW5kIHJlZmFjdG9yIGV3ayBBUEkgaW4gb3JkZXIgdG8gc3VwcG9ydCBNaW5pQnJvd3NlciB3
aXRob3V0IFdLIEFQSS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHJldmlzaW9uIDExOTky
OCkKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDcgKzE2MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBD
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAgICAgICAgID9hZGRT
bG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2Vi
Q29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBC
VUNsYXNzSW5mb0AzQEBaCi0gICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2ViQ29yZUBAWUFY
UEFWPyRUcmVlU2hhcmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAgICAgICAgID9j
cmVhdGVASFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZIVE1M
Q29udGVudEVsZW1lbnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgogICAgICAgICA/
Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBA
V1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZO
b2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9vdEBXZWJDb3Jl
QEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50
QDJAQUFIQFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHJldmlzaW9u
IDExOTkyOCkKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw2IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNT
dHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAg
ICAgICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01T
dHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVj
dEAxQFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCi0gICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZA
V2ViQ29yZUBAWUFYUEFWPyRUcmVlU2hhcmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBa
CiAgICAgICAgID9jcmVhdGVASFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNz
UmVmUHRyQFZIVE1MQ29udGVudEVsZW1lbnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBA
WgogICAgICAgICA/Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5n
ZUBXZWJDb3JlQEBAV1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQ
YXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93
Um9vdEBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RG
QEBQQVZFbGVtZW50QDJAQUFIQFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNp
b24gMTE5OTI4KQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNiBAQCBfWk43V2ViQ29yZTE2c2NyaXB0TmFtZVRvQ29kZUVSS04z
V1RGNlN0CiBfWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxP
YmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMTdJ
bnNwZWN0b3JDb3VudGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNvdW50ZXJUeXBlRTsKIF9aTjdX
ZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwotX1pON1dl
YkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVy
Tm9kZUVFRTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43V2ViQ29yZTIxSW5zcGVjdG9yQ29u
c29sZUFnZW50Mjhjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzRXY7CiBfWk43V2ViQ29yZTIy
aW5zdHJ1bWVudGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFOwpAQCAtMTIxLDYgKzEyMCw3IEBAIF9a
TjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xOGQKIF9aTjdXZWJDb3JlMTRTY3Jv
bGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0VSS05TXzhJbnRQb2ludEU7
CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRFYmI7CiBf
Wk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7CitfWk43V2Vi
Q29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2OwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZp
eGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdX
ZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5n
RTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1p
bHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146741</attachid>
            <date>2012-06-10 09:22:55 -0700</date>
            <delta_ts>2012-06-10 09:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88653-20120610092255.patch</filename>
            <type>text/plain</type>
            <size>19395</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExOTkz
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2
LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5u
ZWVkZWQgY2FsbFJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIGZyb20gVHJlZVNoYXJlZCByZWZhY3Rv
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRmlsdGVyIHJlbW92ZWRMYXN0UmVmIGluc3RlYWQg
b2YKKyAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVmLgorCiAyMDEyLTA2LTA5ICBTdWtvbHNhayBT
YWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgVU5ET19NQU5B
R0VSIGZsYWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTkzMikKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEw
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWVk
ZWQgY2FsbFJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIGZyb20gVHJlZVNoYXJlZCByZWZhY3Rvcmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2NTMK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46IFVwZGF0ZWQgdG8gcmVtb3ZlIGNhbGxSZW1vdmVkTGFzdFJlZiBhbmQgYWRkIHJlbW92
ZWRMYXN0UmVmLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOiBSZW1vdmVkIGNh
bGxSZW1vdmVkTGFzdFJlZiwgd2hpY2ggaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQg
YWxzbyBoYWQgYSBiYWQgY2FzdCBpbiBpdC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBN
YWRlIHJlbW92ZWRMYXN0UmVmIHByaXZhdGUgYW5kIG5vbi12aXJ0dWFsIGFuZCBtYWRlIE5vZGUK
KyAgICAgICAgYSBmcmllbmQgc28gaXQgY2FuIGNhbGwgdGhlIHByaXZhdGUgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVk
TGFzdFJlZik6IE1vdmVkIGhlcmUuIFRoaXMgc2hvdWxkIG5vdCBiZSBhbiBpbmxpbmUKKyAgICAg
ICAgZnVuY3Rpb24uIEFkZGVkIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2h5IGl0IHNob3VsZCBub3Qg
YmUgaW5saW5lZC4gQWxzbyBhZGRlZAorICAgICAgICBleHBsaWNpdCBjb2RlIHRvIGNhbGwgdG8g
RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmLCBhbmQgYWRkZWQgYSBjb21tZW50IHdoeQorICAgICAg
ICB0aGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGhlcmUuCisgICAgICAgICogZG9tL05vZGUu
aDogSW5oZXJpdCBmcm9tIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT4uIE1hZGUgdGhl
CisgICAgICAgIHJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIG5vbi12aXJ0dWFsIGFuZCByZW1vdmVk
IGl0IGZyb20gdGhlIGhlYWRlciBmaWxlLgorICAgICAgICBVcGRhdGVkIFRyZWVTaGFyZWQgdXNp
bmcgc3RhdGVtZW50cy4gTWFkZSB0aGUgVHJlZVNoYXJlZCB0ZW1wbGF0ZSBjbGFzcyBhCisgICAg
ICAgIGZyaWVuZCBzbyBpdCBjYW4gY2FsbCB0aGUgcHJpdmF0ZSByZW1vdmVkTGFzdFJlZi4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBVcGRhdGVkIFRyZWVTaGFy
ZWQgdXNpbmcgc3RhdGVtZW50cyB0byBzcGVjaWZ5CisgICAgICAgIE5vZGUgaW5zdGVhZCwgd2hp
Y2ggYWNjb21wbGlzaGVzIHRoZSBzYW1lIHRoaW5nLgorICAgICAgICAqIGh0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6IE1h
ZGUgVHJlZVNoYXJlZCB0YWtlIHR3byB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIHRoZQorICAgICAg
ICBub2RlIHR5cGUgYW5kIHRoZSBwYXJlbnQgbm9kZSB0eXBlLiBSZW1vdmVkIHRoZSBjYWxsUmVt
b3ZlZExhc3RSZWYgZnVuY3Rpb25zIGFuZAorICAgICAgICB0aGUgZXh0cmEgZm9yd2FyZCBkZWNs
YXJhdGlvbnMgaXQgcmVxdWlyZWQuIFJlbW92ZWQgdGhlIHByaXZhdGUgdW51c2VkCisgICAgICAg
IHJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uOyBub3Qgc3VyZSB3aHkgaXQgd2FzIGxlZnQgaW4gaGVy
ZSBhdCBhbGwuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6IENhbGwgcmVt
b3ZlZExhc3RSZWYgaW5zdGVhZCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2hhcmVkOjpzZXRQYXJlbnQpOiBVc2UgUGFyZW50Tm9kZVR5cGUuCisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2hhcmVkOjpwYXJlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmFkb3B0ZWQpOiBVcGRhdGVkIHRvIGhhdmUgYm90aCB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYpOiBSZXBsYWNlZCBjYWxsUmVtb3ZlZExh
c3RSZWYgd2l0aAorICAgICAgICB0aGlzLiBNb3ZlZCB0aGUgYm9keSBvdXQgb2YgdGhlIGhlYWRl
ciBhbmQgYWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRoZQorICAgICAgICBmdW5jdGlv
biBzaG91bGQgbm90IGJlIGlubGluZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oOiBNYWRlIHJlbW92ZWRMYXN0UmVmIG5vbi12aXJ0dWFsLCBub24taW5saW5lLCBhbmQKKyAg
ICAgICAgcHJpdmF0ZS4gTWFkZSBUcmVlU2hhcmVkIGEgZnJpZW5kIHNvIGl0IGNhbiBjYWxsIHRo
ZSBwcml2YXRlIHJlbW92ZWRMYXN0UmVmLgorICAgICAgICBVcGRhdGVkIFRyZWVTaGFyZWQgdXNp
bmcgc3RhdGVtZW50cy4KKwogMjAxMi0wNi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogUmUtc29ydGVkIGFuZCBhbHBoYWJldGl6
ZWQgdGhlIGZpbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTE5OTMyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSwzIEBACi1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVk
SU5TXzEzQ29udGFpbmVyTm9kZUVFRQogLm9iamNfY2xhc3NfbmFtZV9ET01BYnN0cmFjdFZpZXcK
IC5vYmpjX2NsYXNzX25hbWVfRE9NQXR0cgogLm9iamNfY2xhc3NfbmFtZV9ET01DREFUQVNlY3Rp
b24KQEAgLTc5NSw2ICs3OTQsNyBAQCBfX1pON1dlYkNvcmU0S1VSTEMxRVA1TlNVUkwKIF9fWk43
V2ViQ29yZTRLVVJMQzFFUEs3X19DRlVSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVSS1MwX1JLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RFUGIKK19fWk43V2ViQ29y
ZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmU0Tm9kZTE3c3RvcElnbm9yaW5n
TGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2CiBfX1pON1dl
YkNvcmU0Tm9kZTE5c2V0TmVlZHNTdHlsZVJlY2FsY0VOU18xNVN0eWxlQ2hhbmdlVHlwZUUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDExOTkyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsMTEgKzg2LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAg
ICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlz
KTsKIH0KIAotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNoYXJlZDxDb250YWluZXJOb2Rl
Piogc2VsZikKLXsKLSAgICBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4oc2VsZiktPnJlbW92
ZWRMYXN0UmVmKCk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDggKzIyMCw2IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFzdFJl
ZigpOwotCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMTI5LDggKzExMjcsMTEgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQog
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIAorICAgIHZvaWQgcmVtb3ZlZExh
c3RSZWYoKTsKKyAgICAKICAgICB2b2lkIGRldGFjaFBhcnNlcigpOwogCiAgICAgdHlwZWRlZiB2
b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBT
dHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRhdGEpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTQxLDYgKzI5NDEsMjMgQEAgdm9pZCBOb2RlOjpyZXNldENh
Y2hlZFJhZGlvTm9kZUxpc3RSb290TgogICAgICAgICBpdC0+c2Vjb25kLT5zZXRSb290RWxlbWVu
dCh0b0VsZW1lbnQodGhpcykpOwogfQogCisvLyBJdCdzIGltcG9ydGFudCBub3QgdG8gaW5saW5l
IHJlbW92ZWRMYXN0UmVmLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZSBjb2Rl
IHRvCisvLyBkZWxldGUgYSBOb2RlIGF0IGVhY2ggZGVyZWYgY2FsbCBzaXRlLgordm9pZCBOb2Rl
OjpyZW1vdmVkTGFzdFJlZigpCit7CisgICAgLy8gQW4gZXhwbGljaXQgY2hlY2sgZm9yIERvY3Vt
ZW50IGhlcmUgaXMgYmV0dGVyIHRoYW4gYSB2aXJ0dWFsIGZ1bmN0aW9uIHNpbmNlIGl0IGlzCisg
ICAgLy8gZmFzdGVyIGZvciBub24tRG9jdW1lbnQgbm9kZXMsIGFuZCBiZWNhdXNlIHRoZSBjYWxs
IHRvIHJlbW92ZWRMYXN0UmVmIHRoYXQgaXMgaW5saW5lZAorICAgIC8vIGF0IGFsbCBkZXJlZiBj
YWxsIHNpdGVzIGlzIHNtYWxsZXIgaWYgaXQncyBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uLgorICAg
IGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
dGhpcyktPnJlbW92ZWRMYXN0UmVmKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWZuZGVm
IE5ERUJVRworICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICBkZWxl
dGUgdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgZW51bSBTdHlsZUNoYW5n
ZVR5cGUgeyAKICAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdl
U2hpZnQKIH07CiAKLWNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+IHsKK2NsYXNzIE5v
ZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBU
cmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1l
bnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKICAgICBmcmllbmQgY2xhc3MgVHJlZVNj
b3BlQWRvcHRlcjsKQEAgLTE0NiwxMyArMTQ2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHls
ZUNoYW5nZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqLCBEb2N1
bWVudCopOwogCiAgICAgdmlydHVhbCB+Tm9kZSgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
TGFzdFJlZigpCi0gICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9CiAKICAgICAv
LyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGUKIApAQCAtNjM2LDggKzYyOSw4IEBA
IHB1YmxpYzoKICAgICAvLyB0byBldmVudCBsaXN0ZW5lcnMsIGFuZCBwcmV2ZW50cyBET01BY3Rp
dmF0ZSBldmVudHMgZnJvbSBiZWluZyBzZW50IGF0IGFsbC4KICAgICB2aXJ0dWFsIGJvb2wgZGlz
YWJsZWQoKSBjb25zdDsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJl
ZjsKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKKyAgICB1c2lu
ZyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZWY7CisgICAgdXNpbmcgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6ZGVyZWY7CiAKICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwpAQCAtNzQ4LDYgKzc0MSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3Vz
dG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKKworICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsK
KwogICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUg
bWlncmF0aW9uLgogICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRv
IHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRl
LgogICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwpAQCAtNzgzLDgg
Kzc4MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIE5vZGU6OnBhcmVudE5vZGUgYXMgdGhlIGNv
bnNpc3RlbnQgd2F5IG9mIHF1ZXJ5aW5nIGEgcGFyZW50IG5vZGUuCiAgICAgLy8gVGhpcyBtZXRo
b2QgaXMgbWFkZSBwcml2YXRlIHRvIGVuc3VyZSBhIGNvbXBpbGVyIGVycm9yIG9uIGNhbGwgc2l0
ZXMgdGhhdAogICAgIC8vIGRvbid0IGZvbGxvdyB0aGlzIHJ1bGUuCi0gICAgdXNpbmcgVHJlZVNo
YXJlZDxDb250YWluZXJOb2RlPjo6cGFyZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFp
bmVyTm9kZT46OnNldFBhcmVudDsKKyAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5l
ck5vZGU+OjpwYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2Rl
Pjo6c2V0UGFyZW50OwogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24g
MTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KE5vZGUq
KTsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJlZjsKLSAgICB1c2lu
ZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKKyAgICB1c2luZyBOb2RlOjpyZWY7
CisgICAgdXNpbmcgTm9kZTo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRNTEZv
cm1FbGVtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIGJvb2wg
Y2hlY2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vz
dG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKLSAgICB1c2luZyBUcmVl
U2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWlu
ZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgTm9kZTo6cmVmOworICAgIHVzaW5nIE5vZGU6OmRl
cmVmOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qg
eyByZXR1cm4gdXNlRmFsbGJhY2tDb250ZW50KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVHJlZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RyZWVTaGFyZWQuaAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVHJlZVNoYXJlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yOCwyMiArMjgsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOREVCVUcK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiopOwordGVtcGxhdGU8dHlwZW5hbWUgTm9k
ZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkOwordGVtcGxh
dGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiB2b2lkIGFkb3B0
ZWQoVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAotY2xh
c3MgQ29udGFpbmVyTm9kZTsKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7Ci0KLS8vIEFsbCBjbGFzc2VzIHRoYXQgaW5oZXJp
dCBUcmVlU2hhcmVkIG5lZWQgdG8gZGVmaW5lCi0vLyBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNo
YXJlZDxUPiopLiBUaGlzIGlzIG5lY2Vzc2FyeQotLy8gdG8ga2lsbCBhbGwgdmlydHVhbCBtZXRo
b2RzIGZyb20gVHJlZVNoYXJlZCwgYnkgd2hpY2gKLS8vIHdlIGNhbiBzYXZlIDggYnl0ZSBmb3Ig
YSB2aXJ0dWFsIG1ldGhvZCB0YWJsZSBwb2ludGVyLgotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYo
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiopOwotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJl
ZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+Kik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFRyZWVTaGFyZWQgewordGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBh
cmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUcmVlU2hhcmVkKTsKIHB1YmxpYzoKICAgICBUcmVlU2hhcmVkKCkKQEAgLTkwLDcgKzc5LDcg
QEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJl
ZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVm
KHRoaXMpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3Zl
ZExhc3RSZWYoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA2LDEzICs5NSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAotICAgIHZvaWQgc2V0UGFy
ZW50KFQqIHBhcmVudCkKKyAgICB2b2lkIHNldFBhcmVudChQYXJlbnROb2RlVHlwZSogcGFyZW50
KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fcGFy
ZW50ID0gcGFyZW50OyAKICAgICB9CiAKLSAgICBUKiBwYXJlbnQoKSBjb25zdAorICAgIFBhcmVu
dE5vZGVUeXBlKiBwYXJlbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZE9yR0NUaHJlYWQoKSk7CiAgICAgICAgIHJldHVybiBtX3BhcmVudDsKQEAgLTEyNCwxNSAr
MTEzLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIC8vIE5ldmVyIGNhbGxl
ZC4gcmVtb3ZlZExhc3RSZWYoKSBtdXN0IGJlIGltcGxlbWVudGVkIGluIGFsbCB0aGUgY2xhc3Nl
cwotICAgIC8vIHRoYXQgaW5oZXJpdCBUcmVlU2hhcmVkLgotICAgIHZvaWQgcmVtb3ZlZExhc3RS
ZWYoKSB7IEFTU0VSVCgwKTsgfQotCiAjaWZuZGVmIE5ERUJVRwotICAgIGZyaWVuZCB2b2lkIGFk
b3B0ZWQ8PihUcmVlU2hhcmVkPFQ+Kik7CisgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVT
aGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwogI2VuZGlmCiAKLSAgICBUKiBtX3Bh
cmVudDsKKyAgICBQYXJlbnROb2RlVHlwZSogbV9wYXJlbnQ7CiAgICAgaW50IG1fcmVmQ291bnQ7
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNDIsNyArMTI3LDcgQEAgcHJpdmF0ZToKIAogI2lmbmRl
ZiBOREVCVUcKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRvcHRlZChUcmVl
U2hhcmVkPFQ+KiBvYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUg
UGFyZW50Tm9kZVR5cGU+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxOb2RlVHlwZSwg
UGFyZW50Tm9kZVR5cGU+KiBvYmplY3QpCiB7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCShy
ZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTQgQEAgU1ZHRWxlbWVudEluc3RhbmNl
Ojp+U1ZHRWxlbWVudEluc3RhbmNlKAogICAgIG1fZWxlbWVudCA9IDA7CiB9CiAKLXZvaWQgY2Fs
bFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiogc2VsZikKKy8v
IEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8vIGRlbGV0ZSBhbiBTVkdFbGVtZW50
SW5zdGFuY2UgYXQgZWFjaCBkZXJlZiBjYWxsIHNpdGUuCit2b2lkIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYoKQogewotICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+KHNlbGYpLT5yZW1vdmVkTGFzdFJlZigpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgZGVsZXRlIHRoaXM7CiB9CiAKIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2goKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50SW5zdGFuY2UuaAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw3IEBAIGNs
YXNzIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q7CiBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogCiAv
LyBTVkdFbGVtZW50SW5zdGFuY2UgbWltaWNzIE5vZGUsIGJ1dCB3aXRob3V0IHByb3ZpZGluZyBh
bGwgaXRzIGZ1bmN0aW9uYWxpdHkKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZSA6IHB1YmxpYyBU
cmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlIDogcHVibGlj
IFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+LCBwdWJs
aWMgRXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0VsZW1l
bnRJbnN0YW5jZT4gY3JlYXRlKFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
LCBTVkdVc2VFbGVtZW50KiBkaXJlY3RVc2VFbGVtZW50LCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+
IG9yaWdpbmFsRWxlbWVudCkKICAgICB7CkBAIC00NywxMyArNDYsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRMYXN0UmVmKCkKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH07
CiAKICAgICB2b2lkIHNldFBhcmVudE9ySG9zdE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0
YW5jZSkgeyBzZXRQYXJlbnQoaW5zdGFuY2UpOyB9CiAKQEAgLTEwNSw4ICs5Nyw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50
KFNWR0VsZW1lbnQqKTsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNl
Pjo6cmVmOwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPjo6ZGVyZWY7
CisgICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0
YW5jZT46OnJlZjsKKyAgICB1c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZH
RWxlbWVudEluc3RhbmNlPjo6ZGVyZWY7CiAKICAgICAvLyBFdmVudFRhcmdldCBBUEkKICAgICBE
RUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSwgYWJvcnQpOwpAQCAtMTUyLDEwICsxNDQsMTMgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBTVkdVc2VFbGVtZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8
U1ZHRWxlbWVudEluc3RhbmNlPjo6cGFyZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxl
bWVudEluc3RhbmNlPjo6c2V0UGFyZW50OworICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPFNW
R0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPjsKKworICAgIHVzaW5nIFRyZWVT
aGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+OjpwYXJlbnQ7Cisg
ICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5j
ZT46OnNldFBhcmVudDsKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50Kiwg
U1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVtZW50KTsK
KyAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgp
IHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50KCk7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE5OTMyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBjYWxsUmVtb3ZlZExhc3RSZWYgZnVuY3Rpb24g
ZnJvbSBUcmVlU2hhcmVkIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODY1MworCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6IEV4cG9ydCByZW1vdmVkTGFzdFJlZiBp
bnN0ZWFkIG9mIGNhbGxSZW1vdmVkTGFzdFJlZi4KKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0
ZS5kZWY6IERpdHRvLgorCiAyMDEyLTA2LTEwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBp
biBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdpdGhvdXQgV0sgQVBJLgpJbmRleDogU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgRVhQT1JUUwog
ICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJ
bXBsQFdURkBAQDJAUEJFQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZA
QENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBa
CiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NA
QFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKLSAgICAgICAg
P2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNvbnRhaW5l
ck5vZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NyZWF0ZUBIVE1MQ29udGVudEVsZW1lbnRA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50RWxlbWVudEBXZWJDb3JlQEBA
V1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9jcmVhdGVAUmFuZ2VAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVkRvY3Vt
ZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFoKICAg
ICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFk
b3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgpJbmRleDogU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDYg
QEAgRVhQT1JUUwogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJFQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21p
Y1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3Ry
aW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0
cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNA
QFoKLSAgICAgICAgP2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFy
ZWRAVkNvbnRhaW5lck5vZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NyZWF0ZUBIVE1MQ29u
dGVudEVsZW1lbnRAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50RWxlbWVu
dEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9jcmVhdGVAUmFuZ2VA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NS
ZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBA
QDRASDFIQFoKICAgICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNz
UmVmUHRyQFZTaGFkb3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgpJbmRl
eDogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw2IEBAIF9a
TjdXZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3QKIF9aTjdXZWJDb3JlMTdjYWNo
ZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBL
TlMyXzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUxN0luc3BlY3RvckNvdW50ZXJzMTJjb3VudGVy
VmFsdWVFTlMwXzExQ291bnRlclR5cGVFOwogX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVu
dDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7Ci1fWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVm
RVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFOwogX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFs
c0VpaTsKIF9aTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnQyOGNvbnNvbGVNZXNzYWdl
QXJndW1lbnRDb3VudHNFdjsKIF9aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBO
U180UGFnZUU7CkBAIC0xMjEsNiArMTIwLDcgQEAgX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjE4ZAogX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjhzZXRTY3JvbGxPZmZz
ZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFz
ZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKK19aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVm
RXY7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0
b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlm
Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJD
b3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
MTFVU2NyaXB0Q29kZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146742</attachid>
            <date>2012-06-10 09:54:41 -0700</date>
            <delta_ts>2012-06-10 09:54:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88653-20120610095440.patch</filename>
            <type>text/plain</type>
            <size>20447</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExOTkz
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2
LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5u
ZWVkZWQgY2FsbFJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIGZyb20gVHJlZVNoYXJlZCByZWZhY3Rv
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRmlsdGVyIHJlbW92ZWRMYXN0UmVmIGluc3RlYWQg
b2YKKyAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVmLgorCiAyMDEyLTA2LTA5ICBTdWtvbHNhayBT
YWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgVU5ET19NQU5B
R0VSIGZsYWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTkzMikKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTEw
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWVk
ZWQgY2FsbFJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIGZyb20gVHJlZVNoYXJlZCByZWZhY3Rvcmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2NTMK
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46IFVwZGF0ZWQgdG8gcmVtb3ZlIGNhbGxSZW1vdmVkTGFzdFJlZiBhbmQgYWRkIHJlbW92
ZWRMYXN0UmVmLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOiBSZW1vdmVkIGNh
bGxSZW1vdmVkTGFzdFJlZiwgd2hpY2ggaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQg
YWxzbyBoYWQgYSBiYWQgY2FzdCBpbiBpdC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBN
YWRlIHJlbW92ZWRMYXN0UmVmIHByaXZhdGUgYW5kIG5vbi12aXJ0dWFsIGFuZCBtYWRlIE5vZGUK
KyAgICAgICAgYSBmcmllbmQgc28gaXQgY2FuIGNhbGwgdGhlIHByaXZhdGUgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVk
TGFzdFJlZik6IE1vdmVkIGhlcmUuIFRoaXMgc2hvdWxkIG5vdCBiZSBhbiBpbmxpbmUKKyAgICAg
ICAgZnVuY3Rpb24uIEFkZGVkIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2h5IGl0IHNob3VsZCBub3Qg
YmUgaW5saW5lZC4gQWxzbyBhZGRlZAorICAgICAgICBleHBsaWNpdCBjb2RlIHRvIGNhbGwgdG8g
RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmLCBhbmQgYWRkZWQgYSBjb21tZW50IHdoeQorICAgICAg
ICB0aGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGhlcmUuCisgICAgICAgICogZG9tL05vZGUu
aDogSW5oZXJpdCBmcm9tIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT4uIE1hZGUgdGhl
CisgICAgICAgIHJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uIG5vbi12aXJ0dWFsIGFuZCByZW1vdmVk
IGl0IGZyb20gdGhlIGhlYWRlciBmaWxlLgorICAgICAgICBVcGRhdGVkIFRyZWVTaGFyZWQgdXNp
bmcgc3RhdGVtZW50cy4gTWFkZSB0aGUgVHJlZVNoYXJlZCB0ZW1wbGF0ZSBjbGFzcyBhCisgICAg
ICAgIGZyaWVuZCBzbyBpdCBjYW4gY2FsbCB0aGUgcHJpdmF0ZSByZW1vdmVkTGFzdFJlZi4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBVcGRhdGVkIFRyZWVTaGFy
ZWQgdXNpbmcgc3RhdGVtZW50cyB0byBzcGVjaWZ5CisgICAgICAgIE5vZGUgaW5zdGVhZCwgd2hp
Y2ggYWNjb21wbGlzaGVzIHRoZSBzYW1lIHRoaW5nLgorICAgICAgICAqIGh0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6IE1h
ZGUgVHJlZVNoYXJlZCB0YWtlIHR3byB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIHRoZQorICAgICAg
ICBub2RlIHR5cGUgYW5kIHRoZSBwYXJlbnQgbm9kZSB0eXBlLiBSZW1vdmVkIHRoZSBjYWxsUmVt
b3ZlZExhc3RSZWYgZnVuY3Rpb25zIGFuZAorICAgICAgICB0aGUgZXh0cmEgZm9yd2FyZCBkZWNs
YXJhdGlvbnMgaXQgcmVxdWlyZWQuIFJlbW92ZWQgdGhlIHByaXZhdGUgdW51c2VkCisgICAgICAg
IHJlbW92ZWRMYXN0UmVmIGZ1bmN0aW9uOyBub3Qgc3VyZSB3aHkgaXQgd2FzIGxlZnQgaW4gaGVy
ZSBhdCBhbGwuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6IENhbGwgcmVt
b3ZlZExhc3RSZWYgaW5zdGVhZCBvZiBjYWxsUmVtb3ZlZExhc3RSZWYuCisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2hhcmVkOjpzZXRQYXJlbnQpOiBVc2UgUGFyZW50Tm9kZVR5cGUuCisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2hhcmVkOjpwYXJlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmFkb3B0ZWQpOiBVcGRhdGVkIHRvIGhhdmUgYm90aCB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYpOiBSZXBsYWNlZCBjYWxsUmVtb3ZlZExh
c3RSZWYgd2l0aAorICAgICAgICB0aGlzLiBNb3ZlZCB0aGUgYm9keSBvdXQgb2YgdGhlIGhlYWRl
ciBhbmQgYWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRoZQorICAgICAgICBmdW5jdGlv
biBzaG91bGQgbm90IGJlIGlubGluZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oOiBNYWRlIHJlbW92ZWRMYXN0UmVmIG5vbi12aXJ0dWFsLCBub24taW5saW5lLCBhbmQKKyAg
ICAgICAgcHJpdmF0ZS4gTWFkZSBUcmVlU2hhcmVkIGEgZnJpZW5kIHNvIGl0IGNhbiBjYWxsIHRo
ZSBwcml2YXRlIHJlbW92ZWRMYXN0UmVmLgorICAgICAgICBVcGRhdGVkIFRyZWVTaGFyZWQgdXNp
bmcgc3RhdGVtZW50cy4KKwogMjAxMi0wNi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogUmUtc29ydGVkIGFuZCBhbHBoYWJldGl6
ZWQgdGhlIGZpbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTE5OTMyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSwzIEBACi1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVk
SU5TXzEzQ29udGFpbmVyTm9kZUVFRQogLm9iamNfY2xhc3NfbmFtZV9ET01BYnN0cmFjdFZpZXcK
IC5vYmpjX2NsYXNzX25hbWVfRE9NQXR0cgogLm9iamNfY2xhc3NfbmFtZV9ET01DREFUQVNlY3Rp
b24KQEAgLTc5NSw2ICs3OTQsNyBAQCBfX1pON1dlYkNvcmU0S1VSTEMxRVA1TlNVUkwKIF9fWk43
V2ViQ29yZTRLVVJMQzFFUEs3X19DRlVSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVSS1MwX1JLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RFUGIKK19fWk43V2ViQ29y
ZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmU0Tm9kZTE3c3RvcElnbm9yaW5n
TGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2CiBfX1pON1dl
YkNvcmU0Tm9kZTE5c2V0TmVlZHNTdHlsZVJlY2FsY0VOU18xNVN0eWxlQ2hhbmdlVHlwZUUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDExOTkyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsMTEgKzg2LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAg
ICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlz
KTsKIH0KIAotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNoYXJlZDxDb250YWluZXJOb2Rl
Piogc2VsZikKLXsKLSAgICBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4oc2VsZiktPnJlbW92
ZWRMYXN0UmVmKCk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDggKzIyMCw2IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFzdFJl
ZigpOwotCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMTI5LDggKzExMjcsMTEgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQog
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIAorICAgIHZvaWQgcmVtb3ZlZExh
c3RSZWYoKTsKKyAgICAKICAgICB2b2lkIGRldGFjaFBhcnNlcigpOwogCiAgICAgdHlwZWRlZiB2
b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBT
dHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRhdGEpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTQxLDYgKzI5NDEsMjMgQEAgdm9pZCBOb2RlOjpyZXNldENh
Y2hlZFJhZGlvTm9kZUxpc3RSb290TgogICAgICAgICBpdC0+c2Vjb25kLT5zZXRSb290RWxlbWVu
dCh0b0VsZW1lbnQodGhpcykpOwogfQogCisvLyBJdCdzIGltcG9ydGFudCBub3QgdG8gaW5saW5l
IHJlbW92ZWRMYXN0UmVmLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZSBjb2Rl
IHRvCisvLyBkZWxldGUgYSBOb2RlIGF0IGVhY2ggZGVyZWYgY2FsbCBzaXRlLgordm9pZCBOb2Rl
OjpyZW1vdmVkTGFzdFJlZigpCit7CisgICAgLy8gQW4gZXhwbGljaXQgY2hlY2sgZm9yIERvY3Vt
ZW50IGhlcmUgaXMgYmV0dGVyIHRoYW4gYSB2aXJ0dWFsIGZ1bmN0aW9uIHNpbmNlIGl0IGlzCisg
ICAgLy8gZmFzdGVyIGZvciBub24tRG9jdW1lbnQgbm9kZXMsIGFuZCBiZWNhdXNlIHRoZSBjYWxs
IHRvIHJlbW92ZWRMYXN0UmVmIHRoYXQgaXMgaW5saW5lZAorICAgIC8vIGF0IGFsbCBkZXJlZiBj
YWxsIHNpdGVzIGlzIHNtYWxsZXIgaWYgaXQncyBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uLgorICAg
IGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
dGhpcyktPnJlbW92ZWRMYXN0UmVmKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWZuZGVm
IE5ERUJVRworICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICBkZWxl
dGUgdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgZW51bSBTdHlsZUNoYW5n
ZVR5cGUgeyAKICAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdl
U2hpZnQKIH07CiAKLWNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+IHsKK2NsYXNzIE5v
ZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBU
cmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1l
bnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKICAgICBmcmllbmQgY2xhc3MgVHJlZVNj
b3BlQWRvcHRlcjsKQEAgLTE0NiwxMyArMTQ2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHls
ZUNoYW5nZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqLCBEb2N1
bWVudCopOwogCiAgICAgdmlydHVhbCB+Tm9kZSgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
TGFzdFJlZigpCi0gICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9CiAKICAgICAv
LyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGUKIApAQCAtNjM2LDggKzYyOSw4IEBA
IHB1YmxpYzoKICAgICAvLyB0byBldmVudCBsaXN0ZW5lcnMsIGFuZCBwcmV2ZW50cyBET01BY3Rp
dmF0ZSBldmVudHMgZnJvbSBiZWluZyBzZW50IGF0IGFsbC4KICAgICB2aXJ0dWFsIGJvb2wgZGlz
YWJsZWQoKSBjb25zdDsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJl
ZjsKLSAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKKyAgICB1c2lu
ZyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZWY7CisgICAgdXNpbmcgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6ZGVyZWY7CiAKICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwpAQCAtNzQ4LDYgKzc0MSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzZXRIYXNDdXN0b21DYWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3Vz
dG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKKworICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsK
KwogICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUg
bWlncmF0aW9uLgogICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRv
IHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRl
LgogICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwpAQCAtNzgzLDgg
Kzc4MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIE5vZGU6OnBhcmVudE5vZGUgYXMgdGhlIGNv
bnNpc3RlbnQgd2F5IG9mIHF1ZXJ5aW5nIGEgcGFyZW50IG5vZGUuCiAgICAgLy8gVGhpcyBtZXRo
b2QgaXMgbWFkZSBwcml2YXRlIHRvIGVuc3VyZSBhIGNvbXBpbGVyIGVycm9yIG9uIGNhbGwgc2l0
ZXMgdGhhdAogICAgIC8vIGRvbid0IGZvbGxvdyB0aGlzIHJ1bGUuCi0gICAgdXNpbmcgVHJlZVNo
YXJlZDxDb250YWluZXJOb2RlPjo6cGFyZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFp
bmVyTm9kZT46OnNldFBhcmVudDsKKyAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5l
ck5vZGU+OjpwYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2Rl
Pjo6c2V0UGFyZW50OwogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24g
MTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KE5vZGUq
KTsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJlZjsKLSAgICB1c2lu
ZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKKyAgICB1c2luZyBOb2RlOjpyZWY7
CisgICAgdXNpbmcgTm9kZTo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRNTEZv
cm1FbGVtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CShyZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIGJvb2wg
Y2hlY2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vz
dG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKLSAgICB1c2luZyBUcmVl
U2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWlu
ZXJOb2RlPjo6ZGVyZWY7CisgICAgdXNpbmcgTm9kZTo6cmVmOworICAgIHVzaW5nIE5vZGU6OmRl
cmVmOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qg
eyByZXR1cm4gdXNlRmFsbGJhY2tDb250ZW50KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVHJlZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RyZWVTaGFyZWQuaAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVHJlZVNoYXJlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yOCwyMiArMjgsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOREVCVUcK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiopOwordGVtcGxhdGU8dHlwZW5hbWUgTm9k
ZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkOwordGVtcGxh
dGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiB2b2lkIGFkb3B0
ZWQoVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAotY2xh
c3MgQ29udGFpbmVyTm9kZTsKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7Ci0KLS8vIEFsbCBjbGFzc2VzIHRoYXQgaW5oZXJp
dCBUcmVlU2hhcmVkIG5lZWQgdG8gZGVmaW5lCi0vLyBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNo
YXJlZDxUPiopLiBUaGlzIGlzIG5lY2Vzc2FyeQotLy8gdG8ga2lsbCBhbGwgdmlydHVhbCBtZXRo
b2RzIGZyb20gVHJlZVNoYXJlZCwgYnkgd2hpY2gKLS8vIHdlIGNhbiBzYXZlIDggYnl0ZSBmb3Ig
YSB2aXJ0dWFsIG1ldGhvZCB0YWJsZSBwb2ludGVyLgotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYo
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiopOwotdm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJl
ZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+Kik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFRyZWVTaGFyZWQgewordGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBh
cmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUcmVlU2hhcmVkKTsKIHB1YmxpYzoKICAgICBUcmVlU2hhcmVkKCkKQEAgLTkwLDcgKzc5LDcg
QEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJl
ZkZ1bmN0aW9uID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVm
KHRoaXMpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3Zl
ZExhc3RSZWYoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA2LDEzICs5NSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAotICAgIHZvaWQgc2V0UGFy
ZW50KFQqIHBhcmVudCkKKyAgICB2b2lkIHNldFBhcmVudChQYXJlbnROb2RlVHlwZSogcGFyZW50
KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fcGFy
ZW50ID0gcGFyZW50OyAKICAgICB9CiAKLSAgICBUKiBwYXJlbnQoKSBjb25zdAorICAgIFBhcmVu
dE5vZGVUeXBlKiBwYXJlbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZE9yR0NUaHJlYWQoKSk7CiAgICAgICAgIHJldHVybiBtX3BhcmVudDsKQEAgLTEyNCwxNSAr
MTEzLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIC8vIE5ldmVyIGNhbGxl
ZC4gcmVtb3ZlZExhc3RSZWYoKSBtdXN0IGJlIGltcGxlbWVudGVkIGluIGFsbCB0aGUgY2xhc3Nl
cwotICAgIC8vIHRoYXQgaW5oZXJpdCBUcmVlU2hhcmVkLgotICAgIHZvaWQgcmVtb3ZlZExhc3RS
ZWYoKSB7IEFTU0VSVCgwKTsgfQotCiAjaWZuZGVmIE5ERUJVRwotICAgIGZyaWVuZCB2b2lkIGFk
b3B0ZWQ8PihUcmVlU2hhcmVkPFQ+Kik7CisgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVT
aGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwogI2VuZGlmCiAKLSAgICBUKiBtX3Bh
cmVudDsKKyAgICBQYXJlbnROb2RlVHlwZSogbV9wYXJlbnQ7CiAgICAgaW50IG1fcmVmQ291bnQ7
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNDIsNyArMTI3LDcgQEAgcHJpdmF0ZToKIAogI2lmbmRl
ZiBOREVCVUcKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRvcHRlZChUcmVl
U2hhcmVkPFQ+KiBvYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUg
UGFyZW50Tm9kZVR5cGU+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxOb2RlVHlwZSwg
UGFyZW50Tm9kZVR5cGU+KiBvYmplY3QpCiB7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCShy
ZXZpc2lvbiAxMTk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTQgQEAgU1ZHRWxlbWVudEluc3RhbmNl
Ojp+U1ZHRWxlbWVudEluc3RhbmNlKAogICAgIG1fZWxlbWVudCA9IDA7CiB9CiAKLXZvaWQgY2Fs
bFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiogc2VsZikKKy8v
IEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8vIGRlbGV0ZSBhbiBTVkdFbGVtZW50
SW5zdGFuY2UgYXQgZWFjaCBkZXJlZiBjYWxsIHNpdGUuCit2b2lkIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYoKQogewotICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+KHNlbGYpLT5yZW1vdmVkTGFzdFJlZigpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgZGVsZXRlIHRoaXM7CiB9CiAKIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2goKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50SW5zdGFuY2UuaAkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw3IEBAIGNs
YXNzIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q7CiBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogCiAv
LyBTVkdFbGVtZW50SW5zdGFuY2UgbWltaWNzIE5vZGUsIGJ1dCB3aXRob3V0IHByb3ZpZGluZyBh
bGwgaXRzIGZ1bmN0aW9uYWxpdHkKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZSA6IHB1YmxpYyBU
cmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlIDogcHVibGlj
IFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+LCBwdWJs
aWMgRXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0VsZW1l
bnRJbnN0YW5jZT4gY3JlYXRlKFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
LCBTVkdVc2VFbGVtZW50KiBkaXJlY3RVc2VFbGVtZW50LCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+
IG9yaWdpbmFsRWxlbWVudCkKICAgICB7CkBAIC00NywxMyArNDYsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRMYXN0UmVmKCkKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH07
CiAKICAgICB2b2lkIHNldFBhcmVudE9ySG9zdE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0
YW5jZSkgeyBzZXRQYXJlbnQoaW5zdGFuY2UpOyB9CiAKQEAgLTEwNSw4ICs5Nyw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50
KFNWR0VsZW1lbnQqKTsKIAotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNl
Pjo6cmVmOwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPjo6ZGVyZWY7
CisgICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0
YW5jZT46OnJlZjsKKyAgICB1c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZH
RWxlbWVudEluc3RhbmNlPjo6ZGVyZWY7CiAKICAgICAvLyBFdmVudFRhcmdldCBBUEkKICAgICBE
RUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSwgYWJvcnQpOwpAQCAtMTUyLDEwICsxNDQsMTMgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBTVkdVc2VFbGVtZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8
U1ZHRWxlbWVudEluc3RhbmNlPjo6cGFyZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxl
bWVudEluc3RhbmNlPjo6c2V0UGFyZW50OworICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPFNW
R0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPjsKKworICAgIHVzaW5nIFRyZWVT
aGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+OjpwYXJlbnQ7Cisg
ICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5j
ZT46OnNldFBhcmVudDsKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50Kiwg
U1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVtZW50KTsK
KyAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgp
IHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50KCk7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE5OTMyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBjYWxsUmVtb3ZlZExhc3RSZWYgZnVuY3Rpb24g
ZnJvbSBUcmVlU2hhcmVkIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODY1MworCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6IEV4cG9ydCByZW1vdmVkTGFzdFJlZiBp
bnN0ZWFkIG9mIGNhbGxSZW1vdmVkTGFzdFJlZi4KKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0
ZS5kZWY6IERpdHRvLgorCiAyMDEyLTA2LTEwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBp
biBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdpdGhvdXQgV0sgQVBJLgpJbmRleDogU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgkocmV2aXNpb24gMTE5OTI4KQorKysgU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDYgQEAgRVhQT1JUUwog
ICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJ
bXBsQFdURkBAQDJAUEJFQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZA
QENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBa
CiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NA
QFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKLSAgICAgICAg
P2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNvbnRhaW5l
ck5vZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NyZWF0ZUBIVE1MQ29udGVudEVsZW1lbnRA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50RWxlbWVudEBXZWJDb3JlQEBA
V1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9jcmVhdGVAUmFuZ2VAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVkRvY3Vt
ZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFoKICAg
ICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFk
b3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgpAQCAtMjAyLDYgKzIwMSw3
IEBAIEVYUE9SVFMKICAgICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBW
UmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/
cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCisgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2Rl
QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFB
RUlfV0lAWgogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUds
b2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHJldmlzaW9uIDExOTkyOCkKKysr
IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MTU0LDcgKzE1NCw2IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBD
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAgICAgICAgID9hZGRT
bG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2Vi
Q29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBC
VUNsYXNzSW5mb0AzQEBaCi0gICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2ViQ29yZUBAWUFY
UEFWPyRUcmVlU2hhcmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAgICAgICAgID9j
cmVhdGVASFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZIVE1M
Q29udGVudEVsZW1lbnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgogICAgICAgICA/
Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBA
V1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZO
b2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9vdEBXZWJDb3Jl
QEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50
QDJAQUFIQFoKQEAgLTE5NSw2ICsxOTQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVf
TlhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2Vi
Q29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRhaW5l
ck5vZGVAMkBISF9OQFoKICAgICAgICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWgorICAg
ICAgICA/cmVtb3ZlZExhc3RSZWZATm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVy
c2VGaW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3Vu
dGVyQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAgICAgP3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEAyQFhaCkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlz
aW9uIDExOTkyOCkKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDYgQEAgX1pON1dlYkNvcmUxNnNjcmlwdE5hbWVUb0NvZGVFUktO
M1dURjZTdAogX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTE3
SW5zcGVjdG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUU7CiBfWk43
V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKLV9aTjdX
ZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5l
ck5vZGVFRUU7CiBfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2Vz
RGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyMUluc3BlY3RvckNv
bnNvbGVBZ2VudDI4Y29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50c0V2OwogX1pON1dlYkNvcmUy
Mmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQYWdlRTsKQEAgLTEyMSw2ICsxMjAsNyBAQCBf
Wk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMThkCiBfWk43V2ViQ29yZTE0U2Ny
b2xsYWJsZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHNFUktOU184SW50UG9pbnRF
OwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiOwog
X1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9sbGluZ0ViOworX1pON1dl
YkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdjsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRG
aXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43
V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFt
aWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>