<?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>35084</bug_id>
          
          <creation_ts>2010-02-18 03:14:40 -0800</creation_ts>
          <short_desc>New port: EFL; adding files to JavaScriptCore/wtf/efl</short_desc>
          <delta_ts>2010-03-06 21:33:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone.hur</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191511</commentid>
    <comment_count>0</comment_count>
      <attachid>48993</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-18 03:14:40 -0800</bug_when>
    <thetext>Created attachment 48993
Add EFL port files in JavaScriptCore/efl

This patch is part of a series of patches to add an updated version of the EFL
port to the WebKit tree.

This particular patch adds files to JavaScriptCore/wtf/efl directory. Changes
to the port-independent parts and build system changes, will come later.

(See bug #35059 for the first patch in this series.)

It should apply cleanly on SVN rev 54651.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191523</commentid>
    <comment_count>1</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-18 03:48:44 -0800</bug_when>
    <thetext>Changing platform to Other / Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191525</commentid>
    <comment_count>2</comment_count>
      <attachid>48993</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-18 03:59:36 -0800</bug_when>
    <thetext>Comment on attachment 48993
Add EFL port files in JavaScriptCore/efl

Mark patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191825</commentid>
    <comment_count>3</comment_count>
      <attachid>48993</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-18 22:28:01 -0800</bug_when>
    <thetext>Comment on attachment 48993
Add EFL port files in JavaScriptCore/efl

Welcome to WebKit :D

This patch is basically fine, but you shouldn&apos;t add JavaScriptCore/wtf/efl/EOwnPtr.cpp as it&apos;s an (effectively) empty file.

You also need a changelog, to create it use the prepare-ChangeLog script, and add appropriate description.

I&apos;ll r- this patch and wait for an updated patch with a changelog and the superfluous file removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191878</commentid>
    <comment_count>4</comment_count>
      <attachid>49069</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-19 05:44:22 -0800</bug_when>
    <thetext>Created attachment 49069
Patch, with requested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191921</commentid>
    <comment_count>5</comment_count>
      <attachid>49069</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-19 08:40:28 -0800</bug_when>
    <thetext>Comment on attachment 49069
Patch, with requested changes

Marking patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191928</commentid>
    <comment_count>6</comment_count>
      <attachid>49069</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-19 08:56:28 -0800</bug_when>
    <thetext>Comment on attachment 49069
Patch, with requested changes

So what do you use the EOwnPtr for ? basically it is a define for the GOwnPtr that works together with the GObject I suppose.

Also the method freeOwnerGPtr does nothing so far. It actually just contains out commented code.

I think it would be nice to fix this before committing the patch, or leaving out the EOwnPtr for now.

Could you please clarify this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191942</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-19 09:19:46 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 49069 [details])
&gt; So what do you use the EOwnPtr for ? basically it is a define for the GOwnPtr
&gt; that works together with the GObject I suppose.
&gt; 

Currently the soup network backend includes GOwnPtr, which is only defined in JSC/wtf/gtk. Since GOwnPtr is used elsewhere throughout the GTK+ port and it doesn&apos;t actually rely on GTK+, I don&apos;t know what to do.

The EFL port currently copies files from other ports. Its been like this since it was first developed, and we&apos;re rewriting/using common implementations as much as time permits. It is on our todo list to improve this gradually, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191951</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-19 09:57:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 49069 [details] [details])
&gt; &gt; So what do you use the EOwnPtr for ? basically it is a define for the GOwnPtr
&gt; &gt; that works together with the GObject I suppose.
&gt; &gt; 
&gt; 
&gt; Currently the soup network backend includes GOwnPtr, which is only defined in
&gt; JSC/wtf/gtk. Since GOwnPtr is used elsewhere throughout the GTK+ port and it
&gt; doesn&apos;t actually rely on GTK+, I don&apos;t know what to do.
&gt; 
&gt; The EFL port currently copies files from other ports. Its been like this since
&gt; it was first developed, and we&apos;re rewriting/using common implementations as
&gt; much as time permits. It is on our todo list to improve this gradually, though.

As we discussed briefly in #webkit-gtk, we go out of our way to make sure JSC does not depend on GTK+, so GOwnPtr is only related to gobject, not GTK+. I believe it is fine to rename JavaScriptCore/wtf/gtk to JavaScriptCore/wtf/gobject, to make it clearer that it is not specific to the GTK+ port, but to any gobjects-using port.

I&apos;m not sure whether you will use our Threading, and MainThread implementations, though, but feel free to move GOwnPtr, and GRefPtr to a gobject directory (as long as you fix the paths in our build system, it won&apos;t be a problem for us at all).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191954</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-19 10:00:48 -0800</bug_when>
    <thetext>Should that be gobject or glib?

&gt; As we discussed briefly in #webkit-gtk, we go out of our way to make sure JSC
&gt; does not depend on GTK+, so GOwnPtr is only related to gobject, not GTK+. I
&gt; believe it is fine to rename JavaScriptCore/wtf/gtk to
&gt; JavaScriptCore/wtf/gobject, to make it clearer that it is not specific to the
&gt; GTK+ port, but to any gobjects-using port.
&gt; 
&gt; I&apos;m not sure whether you will use our Threading, and MainThread
&gt; implementations, though, but feel free to move GOwnPtr, and GRefPtr to a
&gt; gobject directory (as long as you fix the paths in our build system, it won&apos;t
&gt; be a problem for us at all).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191970</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-19 10:43:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Should that be gobject or glib?

glib does sound more on the mark, tbh, but I don&apos;t care either way</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191988</commentid>
    <comment_count>11</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-19 11:09:07 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Should that be gobject or glib?
&gt; 
&gt; glib does sound more on the mark, tbh, but I don&apos;t care either way

We do have our own implementation of MainThread and other ports (if they ever depend on the soup backend) might have it also, so I propose the following:

1) let MainThreadGtk.cpp and ThreadingGtk.cpp inside JSC/wtf/gtk
2) move GOwnPtr.{cpp,h} and GRefPtr.{cpp,h} to JSC/wtf/glib
3) change GTK+&apos;s build system to reflect this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192044</commentid>
    <comment_count>12</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-19 13:57:33 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Should that be gobject or glib?
&gt; &gt; 
&gt; &gt; glib does sound more on the mark, tbh, but I don&apos;t care either way
&gt; 
&gt; We do have our own implementation of MainThread and other ports (if they ever
&gt; depend on the soup backend) might have it also, so I propose the following:
&gt; 
&gt; 1) let MainThreadGtk.cpp and ThreadingGtk.cpp inside JSC/wtf/gtk
&gt; 2) move GOwnPtr.{cpp,h} and GRefPtr.{cpp,h} to JSC/wtf/glib
&gt; 3) change GTK+&apos;s build system to reflect this change

This seems sane. I&apos;d say &apos;gobject&apos; sounds better to describe a &quot;platform&quot; than &apos;glib&apos;, since you can use glib without gobject but what really defines the platform is the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192403</commentid>
    <comment_count>13</comment_count>
      <attachid>49195</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-22 03:20:33 -0800</bug_when>
    <thetext>Created attachment 49195
Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192421</commentid>
    <comment_count>14</comment_count>
      <attachid>49195</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-22 05:14:36 -0800</bug_when>
    <thetext>Comment on attachment 49195
Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject

Eric, if this is landed with the commit-queue, will it show the files as moved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192518</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-22 10:45:12 -0800</bug_when>
    <thetext>What&apos;s an EFL port?

It would be best if you could send a note to webkit-dev introducing yourself and your port and explain who is going to maintain the port and why WebKit should accept the port into our tree.

You might also want to read:
http://trac.webkit.org/wiki/SuccessfulPortHowTo

Maybe you already sent a note and I missed it?

It&apos;s very rare that webkit &quot;rejects&quot; a port, but it is important that behind each port there be a real maintenance effort, as poorly maintained partial ports have fallen under the &quot;science project&quot; non-goal and been removed after being abandoned in the past.  (Again, this is rare.)
https://webkit.org/projects/goals.html

As Oliver said, welcome to WebKit!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192529</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-22 10:58:09 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; What&apos;s an EFL port?
&gt; 
&gt; It would be best if you could send a note to webkit-dev introducing yourself
&gt; and your port and explain who is going to maintain the port and why WebKit
&gt; should accept the port into our tree.

&gt; Maybe you already sent a note and I missed it?


I believe that it was actually announced on the mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192666</commentid>
    <comment_count>17</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-22 15:18:05 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 49195 [details])
&gt; Eric, if this is landed with the commit-queue, will it show the files as moved?

Subversion is kind of sucky in tracking file movements inside the repository. I wouldn&apos;t worry about this. Git will save us all, if we need this at a future point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192668</commentid>
    <comment_count>18</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-22 15:21:24 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 49195 [details] [details])
&gt; &gt; Eric, if this is landed with the commit-queue, will it show the files as moved?
&gt; 
&gt; Subversion is kind of sucky in tracking file movements inside the repository. I
&gt; wouldn&apos;t worry about this. Git will save us all, if we need this at a future
&gt; point.

Having said that, the EWS scripts didn&apos;t like the patch, so I think it&apos;s unlikely that the cq will be able to handle it:

https://webkit-commit-queue.appspot.com/results/298648

You may need to rebase the patch on trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192899</commentid>
    <comment_count>19</comment_count>
      <attachid>49282</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-23 05:54:13 -0800</bug_when>
    <thetext>Created attachment 49282
Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject

Patch updated to SVN HEAD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192900</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-23 05:57:52 -0800</bug_when>
    <thetext>Attachment 49282 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Skipping input &apos;JavaScriptCore/wtf/gtk/GRefPtr.h&apos;: Can&apos;t open for reading
JavaScriptCore/wtf/gobject/GRefPtr.h:23:  #ifndef header guard has wrong style, please use: GRefPtr_h  [build/header_guard] [5]
JavaScriptCore/wtf/gobject/GRefPtr.h:44:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/gobject/GRefPtr.h:45:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/gobject/GRefPtr.h:46:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/gobject/GRefPtr.h:48:  More than one command on the same line in if  [whitespace/parens] [4]
Skipping input &apos;JavaScriptCore/wtf/gtk/GOwnPtr.h&apos;: Can&apos;t open for reading
Skipping input &apos;JavaScriptCore/wtf/gtk/GOwnPtr.cpp&apos;: Can&apos;t open for reading
Skipping input &apos;JavaScriptCore/wtf/gtk/GRefPtr.cpp&apos;: Can&apos;t open for reading
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192901</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-23 05:59:39 -0800</bug_when>
    <thetext>Attachment 49282 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/299722</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192911</commentid>
    <comment_count>22</comment_count>
      <attachid>49282</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-23 06:22:01 -0800</bug_when>
    <thetext>Comment on attachment 49282
Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject

Clearing flags on attachment: 49282

Committed r55149: &lt;http://trac.webkit.org/changeset/55149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192912</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-23 06:22:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192915</commentid>
    <comment_count>24</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-23 06:30:37 -0800</bug_when>
    <thetext>As EWS said in comment #21, this broke al GTK+ bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192917</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-23 06:37:15 -0800</bug_when>
    <thetext>../../WebKit/gtk/webkit/webkitprivate.h:51:21: error: GOwnPtr.h: No such file or directory, seems to be the culprit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192918</commentid>
    <comment_count>26</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-23 06:40:47 -0800</bug_when>
    <thetext>I guess all these needs fixing:

JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/GOwnPtr.cpp&apos;,
JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/GOwnPtr.h&apos;,
JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/MainThreadGtk.cpp&apos;,
JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/ThreadingGtk.cpp&apos;,
JavaScriptCore/wtf/Threading.h:#include &lt;wtf/gtk/GOwnPtr.h&gt;
JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebCore/platform/KURL.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebCore/platform/gtk/DataObjectGtk.h:#include &lt;wtf/gtk/GRefPtr.h&gt;
WebCore/platform/text/TextEncoding.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebCore/platform/text/gtk/TextCodecGtk.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
WebKit/gtk/webkit/webkitwebview.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;

Xan, feel free to rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192947</commentid>
    <comment_count>27</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-23 07:39:24 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; As EWS said in comment #21, this broke al GTK+ bots.

Would be good to have the cq look at EWS bots before doing the commit, for these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192949</commentid>
    <comment_count>28</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-23 07:41:53 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; I guess all these needs fixing:
&gt; 
&gt; JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/GOwnPtr.cpp&apos;,
&gt; JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/GOwnPtr.h&apos;,
&gt; JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/MainThreadGtk.cpp&apos;,
&gt; JavaScriptCore/JavaScriptCore.gypi:            &apos;wtf/gtk/ThreadingGtk.cpp&apos;,
&gt; JavaScriptCore/wtf/Threading.h:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebCore/platform/KURL.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:#include
&gt; &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebCore/platform/gtk/DataObjectGtk.h:#include &lt;wtf/gtk/GRefPtr.h&gt;
&gt; WebCore/platform/text/TextEncoding.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebCore/platform/text/gtk/TextBreakIteratorGtk.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;
&gt; WebKit/gtk/webkit/webkitwebview.cpp:#include &lt;wtf/gtk/GOwnPtr.h&gt;

Most of the ones that matter for GTK+&apos;s main configuration have been fixed (we focused on those to get the bots building again before today&apos;s commit stream opens up =D). I believe Leandro will work on a follow-up patch that fixes all the other usages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192996</commentid>
    <comment_count>29</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-02-23 09:57:25 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Most of the ones that matter for GTK+&apos;s main configuration have been fixed (we
&gt; focused on those to get the bots building again before today&apos;s commit stream
&gt; opens up =D). I believe Leandro will work on a follow-up patch that fixes all
&gt; the other usages.

Fixes were committed to SVN r55158.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193059</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-23 12:03:53 -0800</bug_when>
    <thetext>The EWS bots stop processing after r+ is set.  So they&apos;re necessarily done before r+ is set if they&apos;re done at all. :)  EWS bots are really for reviewers. The commit-queue is its own separate beast.  They could be tied, but right now they aren&apos;t (intentionally).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48993</attachid>
            <date>2010-02-18 03:14:40 -0800</date>
            <delta_ts>2010-02-19 05:44:22 -0800</delta_ts>
            <desc>Add EFL port files in JavaScriptCore/efl</desc>
            <filename>webkit-efl-port-javascriptcore_wtf_efl.diff</filename>
            <type>text/plain</type>
            <size>7065</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRU93blB0ci5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS93dGYvZWZsL0VPd25QdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQ5Mjk2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZWZs
L0VPd25QdHIuY3BwCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFT3duUHRyLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRU93blB0ci5oIGIvSmF2YVNjcmlw
dENvcmUvd3RmL2VmbC9FT3duUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzU2MTRiOAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRU93
blB0ci5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgRU93blB0cl9oCisjZGVmaW5lIEVPd25QdHJfaAorCisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIHZvaWQgZnJlZU93bmVkR1B0cihUKiBwdHIpOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRU93blB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgRU93blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9CisgICAgfkVP
d25QdHIoKSB7IGZyZWVPd25lZEdQdHIobV9wdHIpOyB9CisKKyAgICBUKiBnZXQoKSBjb25zdCB7
IHJldHVybiBtX3B0cjsgfQorICAgIFQqIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgVCogcHRy
ID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBUKiYgb3V0UHRyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wdHIpOworICAg
ICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCisgICAgdm9pZCBzZXQoVCogcHRyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKKyAgICAgICAgZnJlZU93bmVk
R1B0cihtX3B0cik7CisgICAgICAgIG1fcHRyID0gcHRyOworICAgIH0KKworICAgIHZvaWQgY2xl
YXIoKQorICAgIHsKKyAgICAgICAgZnJlZU93bmVkR1B0cihtX3B0cik7CisgICAgICAgIG1fcHRy
ID0gMDsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fcHRyKTsKKyAgICAgICAgcmV0dXJuICptX3B0cjsKKyAgICB9CisKKyAgICBUKiBv
cGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAg
IHJldHVybiBtX3B0cjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX3B0cjsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBp
bXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVz
LgorICAgIHR5cGVkZWYgVCogRU93blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3Bl
cmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkVPd25Q
dHI6Om1fcHRyIDogMDsgfQorCisgICAgdm9pZCBzd2FwKEVPd25QdHImIG8pIHsgc3RkOjpzd2Fw
KG1fcHRyLCBvLm1fcHRyKTsgfQorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoRU93blB0cjxUPiYgYSwgRU93blB0
cjxUPiYgYikKK3sKKyAgICBhLnN3YXAoYik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVPd25QdHI8VD4mIGEsIFUq
IGIpCit7IAorICAgIHJldHVybiBhLmdldCgpID09IGI7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBFT3du
UHRyPFU+JiBiKSAKK3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRU93
blB0cjxUPiYgYSwgVSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCog
YSwgY29uc3QgRU93blB0cjxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgRU93blB0cjxUPjo6UHRy
VHlwZSBnZXRQdHIoY29uc3QgRU93blB0cjxUPiYgcCkKK3sKKyAgICByZXR1cm4gcC5nZXQoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCog
cHRyKQoreworICAgIC8vIEZJWE1FCisgICAgLy8gZnJlZShwdHIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwordXNpbmcgV1RGOjpFT3duUHRyOworCisvLyBGSVhNRQorI2RlZmluZSBHT3du
UHRyIEVPd25QdHIKKworI2VuZGlmIC8vIEVPd25QdHJfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL2VmbC9NYWluVGhyZWFkRWZsLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwv
TWFpblRocmVhZEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUz
MmQxYgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvTWFpblRocmVh
ZEVmbC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
SnVzdGluIEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA4IERpZWdvIEdvbnphbGV6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgp
Cit7Cit9CisKK3N0YXRpYyBpbnQgdGltZW91dEZpcmVkKHZvaWQqKQoreworICAgIGRpc3BhdGNo
RnVuY3Rpb25zRnJvbU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FO
Q0VMOworfQorCit2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQor
eworICAgIGVjb3JlX3RpbWVyX2FkZCgwLCB0aW1lb3V0RmlyZWQsIDApOworfQorCisKK30K
</data>
<flag name="review"
          id="31740"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49069</attachid>
            <date>2010-02-19 05:44:22 -0800</date>
            <delta_ts>2010-02-22 03:20:33 -0800</delta_ts>
            <desc>Patch, with requested changes</desc>
            <filename>webkit-efl-javascriptcore.diff</filename>
            <type>text/plain</type>
            <size>6432</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1OGQ3M2U0Li42YTc4YmJjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMDItMDggIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZp
bGVzIHJlbGF0ZWQgdG8gdGhlIEVGTCBpbXBsZW1lbnRhdGlvbiBvZiBKU0MvV1RGLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwODQKKworICAgICAg
ICAqIHd0Zi9lZmwvRU93blB0ci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvZWZsL01haW5UaHJl
YWRFZmwuY3BwOiBBZGRlZC4KKwogMjAxMC0wMi0wOCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENhbWVyb24gWndhcmljaC4KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRU93blB0ci5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL2VmbC9FT3duUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2
MTRiOAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvRU93blB0ci5o
CkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpZm5kZWYgRU93blB0cl9oCisjZGVmaW5lIEVPd25QdHJfaAorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIHZvaWQgZnJlZU93bmVkR1B0cihUKiBwdHIpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgRU93blB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgRU93blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9CisgICAgfkVPd25QdHIo
KSB7IGZyZWVPd25lZEdQdHIobV9wdHIpOyB9CisKKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3B0cjsgfQorICAgIFQqIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgVCogcHRyID0gbV9w
dHI7CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICBUKiYgb3V0UHRyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wdHIpOworICAgICAgICBy
ZXR1cm4gbV9wdHI7CisgICAgfQorCisgICAgdm9pZCBzZXQoVCogcHRyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKKyAgICAgICAgZnJlZU93bmVkR1B0ciht
X3B0cik7CisgICAgICAgIG1fcHRyID0gcHRyOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQor
ICAgIHsKKyAgICAgICAgZnJlZU93bmVkR1B0cihtX3B0cik7CisgICAgICAgIG1fcHRyID0gMDsK
KyAgICB9CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fcHRyKTsKKyAgICAgICAgcmV0dXJuICptX3B0cjsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRv
ci0+KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIHJldHVy
biBtX3B0cjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFt
X3B0cjsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNp
dCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAg
IHR5cGVkZWYgVCogRU93blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CisgICAgb3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJkVPd25QdHI6Om1f
cHRyIDogMDsgfQorCisgICAgdm9pZCBzd2FwKEVPd25QdHImIG8pIHsgc3RkOjpzd2FwKG1fcHRy
LCBvLm1fcHRyKTsgfQorCitwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoRU93blB0cjxUPiYgYSwgRU93blB0cjxUPiYg
YikKK3sKKyAgICBhLnN3YXAoYik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVPd25QdHI8VD4mIGEsIFUqIGIpCit7
IAorICAgIHJldHVybiBhLmdldCgpID09IGI7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBFT3duUHRyPFU+
JiBiKSAKK3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRU93blB0cjxU
PiYgYSwgVSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29u
c3QgRU93blB0cjxVPiYgYikKK3sgCisgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgRU93blB0cjxUPjo6UHRyVHlwZSBn
ZXRQdHIoY29uc3QgRU93blB0cjxUPiYgcCkKK3sKKyAgICByZXR1cm4gcC5nZXQoKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCogcHRyKQor
eworICAgIC8vIEZJWE1FCisgICAgLy8gZnJlZShwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpFT3duUHRyOworCisvLyBGSVhNRQorI2RlZmluZSBHT3duUHRyIEVP
d25QdHIKKworI2VuZGlmIC8vIEVPd25QdHJfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
d3RmL2VmbC9NYWluVGhyZWFkRWZsLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvTWFpblRo
cmVhZEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzMmQxYgot
LS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9lZmwvTWFpblRocmVhZEVmbC5j
cHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVzdGlu
IEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA4IERp
ZWdvIEdvbnphbGV6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3ZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCit7Cit9
CisKK3N0YXRpYyBpbnQgdGltZW91dEZpcmVkKHZvaWQqKQoreworICAgIGRpc3BhdGNoRnVuY3Rp
b25zRnJvbU1haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwor
fQorCit2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQoreworICAg
IGVjb3JlX3RpbWVyX2FkZCgwLCB0aW1lb3V0RmlyZWQsIDApOworfQorCisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49195</attachid>
            <date>2010-02-22 03:20:33 -0800</date>
            <delta_ts>2010-02-23 05:54:13 -0800</delta_ts>
            <desc>Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject</desc>
            <filename>webkit-efl-javascriptcore.diff</filename>
            <type>text/plain</type>
            <size>28948</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNGFjODlkOS4uMGFiYmQ0NyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTI5MiwxMCArMjkyLDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi9WYWx1ZUNoZWNrLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9W
ZWN0b3IuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3RvclRyYWl0cy5oIFwKLQlKYXZhU2Ny
aXB0Q29yZS93dGYvZ3RrL0dPd25QdHIuY3BwIFwKLQlKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dP
d25QdHIuaCBcCi0JSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HUmVmUHRyLmNwcCBcCi0JSmF2YVNj
cmlwdENvcmUvd3RmL2d0ay9HUmVmUHRyLmggXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0
L0dPd25QdHIuY3BwIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HT3duUHRyLmggXAor
CUphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwIFwKKwlKYXZhU2NyaXB0Q29y
ZS93dGYvZ29iamVjdC9HUmVmUHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvTWFpblRo
cmVhZEd0ay5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaCBcCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS93dGYvZWZsL01haW5UaHJlYWRFZmwuY3BwIGIvSmF2YVNjcmlwdENvcmUv
d3RmL2VmbC9NYWluVGhyZWFkRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mZTMyZDFiCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2VmbC9N
YWluVGhyZWFkRWZsLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20pCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggRGllZ28gR29uemFsZXoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDxF
Y29yZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBs
YXRmb3JtKCkKK3sKK30KKworc3RhdGljIGludCB0aW1lb3V0RmlyZWQodm9pZCopCit7CisgICAg
ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpOworICAgIHJldHVybiBFQ09SRV9DQUxM
QkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRo
cmVhZCgpCit7CisgICAgZWNvcmVfdGltZXJfYWRkKDAsIHRpbWVvdXRGaXJlZCwgMCk7Cit9CisK
KworfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR093blB0ci5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HT3duUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYTE1MWI5Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL2dvYmplY3QvR093blB0ci5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKworI2lu
Y2x1ZGUgPGdsaWIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+IHZvaWQgZnJl
ZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAg
IGdfZXJyb3JfZnJlZShwdHIpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R0xpc3Q+KEdMaXN0KiBwdHIpCit7CisgICAgZ19saXN0X2ZyZWUocHRyKTsKK30KKwordGVtcGxh
dGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdDb25kPihHQ29uZCogcHRyKQoreworICAgIGlmIChw
dHIpCisgICAgICAgIGdfY29uZF9mcmVlKHB0cik7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZnJl
ZU93bmVkR1B0cjxHTXV0ZXg+KEdNdXRleCogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAg
IGdfbXV0ZXhfZnJlZShwdHIpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAg
ICBnX3BhdHRlcm5fc3BlY19mcmVlKHB0cik7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHRGlyPihHRGlyKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19kaXJf
Y2xvc2UocHRyKTsKK30KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL2dvYmplY3QvR093blB0ci5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3Qv
R093blB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMmMzMGUKLS0t
IC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HT3duUHRyLmgKQEAg
LTAsMCArMSwxNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgR093blB0cl9oCisjZGVmaW5lIEdPd25QdHJf
aAorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKy8vIEZvcndhcmQgZGVsY2FyYXRpb25zIGF0
IHRoaXMgcG9pbnQgYXZvaWQgdGhlIG5lZWQgdG8gaW5jbHVkZSBHTGliIGluY2x1ZGVzCisvLyBp
biBXVEYgaGVhZGVycy4KK3R5cGVkZWYgc3RydWN0IF9HRXJyb3IgR0Vycm9yOwordHlwZWRlZiBz
dHJ1Y3QgX0dMaXN0IEdMaXN0OwordHlwZWRlZiBzdHJ1Y3QgX0dDb25kIEdDb25kOwordHlwZWRl
ZiBzdHJ1Y3QgX0dNdXRleCBHTXV0ZXg7Cit0eXBlZGVmIHN0cnVjdCBfR1BhdHRlcm5TcGVjIEdQ
YXR0ZXJuU3BlYzsKK3R5cGVkZWYgc3RydWN0IF9HRGlyIEdEaXI7Cit0eXBlZGVmIHN0cnVjdCBf
R0hhc2hUYWJsZSBHSGFzaFRhYmxlOworZXh0ZXJuICJDIiB2b2lkIGdfZnJlZSh2b2lkKik7CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZnJl
ZU93bmVkR1B0cihUKiBwdHIpOwordGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9y
PihHRXJyb3IqKTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCop
OwordGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0NvbmQ+KEdDb25kKik7Cit0ZW1wbGF0
ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTXV0ZXg+KEdNdXRleCopOwordGVtcGxhdGU8PiB2b2lk
IGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMqKTsKK3RlbXBsYXRlPD4g
dm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+KEdEaXIqKTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdIYXNoVGFibGU+KEdIYXNoVGFibGUqKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEdPd25QdHIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IEdPd25QdHIoVCogcHRyID0gMCkgOiBtX3B0cihwdHIpIHsgfQorICAgIH5HT3duUHRyKCkg
eyBmcmVlT3duZWRHUHRyKG1fcHRyKTsgfQorCisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9wdHI7IH0KKyAgICBUKiByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIFQqIHB0ciA9IG1fcHRy
OworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
VComIG91dFB0cigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHRyKTsKKyAgICAgICAgcmV0
dXJuIG1fcHRyOworICAgIH0KKworICAgIHZvaWQgc2V0KFQqIHB0cikKKyAgICB7CisgICAgICAg
IEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7CisgICAgICAgIGZyZWVPd25lZEdQdHIobV9w
dHIpOworICAgICAgICBtX3B0ciA9IHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAg
ICB7CisgICAgICAgIGZyZWVPd25lZEdQdHIobV9wdHIpOworICAgICAgICBtX3B0ciA9IDA7Cisg
ICAgfQorCisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3B0cik7CisgICAgICAgIHJldHVybiAqbV9wdHI7CisgICAgfQorCisgICAgVCogb3BlcmF0b3It
PigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4g
bV9wdHI7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9w
dHI7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQg
Y29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0
eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIG9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZHT3duUHRyOjptX3B0
ciA6IDA7IH0KKworICAgIHZvaWQgc3dhcChHT3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwg
by5tX3B0cik7IH0KKworcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKEdPd25QdHI8VD4mIGEsIEdPd25QdHI8VD4mIGIp
Cit7CisgICAgYS5zd2FwKGIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHT3duUHRyPFQ+JiBhLCBVKiBiKQoreyAK
KyAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgR093blB0cjxVPiYg
YikgCit7CisgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdPd25QdHI8VD4m
IGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0
IEdPd25QdHI8VT4mIGIpCit7IAorICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIEdPd25QdHI8VD46OlB0clR5cGUgZ2V0
UHRyKGNvbnN0IEdPd25QdHI8VD4mIHApCit7CisgICAgcmV0dXJuIHAuZ2V0KCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cikKK3sK
KyAgICBnX2ZyZWUocHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
R093blB0cjsKKworI2VuZGlmIC8vIEdPd25QdHJfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9H
UmVmUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2NmMzRiCi0t
LSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4gUm9iaW5z
b24KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHUmVmUHRyLmgiCisKKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZSA8PiBHSGFzaFRhYmxlKiByZWZHUHRyKEdIYXNoVGFibGUqIHB0cikK
K3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2hhc2hfdGFibGVfcmVmKHB0cik7CisgICAgcmV0
dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0hhc2hUYWJsZSogcHRy
KQoreworICAgIGdfaGFzaF90YWJsZV91bnJlZihwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42NjczOWVmCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUv
d3RmL2dvYmplY3QvR1JlZlB0ci5oCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA5IE1hcnRpbiBSb2JpbnNvbgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBXVEZfR1Jl
ZlB0cl9oCisjZGVmaW5lIFdURl9HUmVmUHRyX2gKKworI2luY2x1ZGUgIkFsd2F5c0lubGluZS5o
IgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordHlwZWRlZiBzdHJ1Y3QgX0dIYXNoVGFibGUgR0hh
c2hUYWJsZTsKKworbmFtZXNwYWNlIFdURiB7CisKK2VudW0gR1JlZlB0ckFkb3B0VHlwZSB7IEdS
ZWZQdHJBZG9wdCB9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiByZWZHUHRyKFQq
KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBkZXJlZkdQdHIoVCopOwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdSZWZQdHI7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
R1JlZlB0cjxUPiBhZG9wdEdSZWYoVCopOwordGVtcGxhdGUgPD4gR0hhc2hUYWJsZSogcmVmR1B0
cihHSGFzaFRhYmxlKiBwdHIpOwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0hhc2hUYWJs
ZSogcHRyKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdSZWZQdHIgeworcHVibGlj
OgorICAgIEdSZWZQdHIoKSA6IG1fcHRyKDApIHsgfQorICAgIEdSZWZQdHIoVCogcHRyKSA6IG1f
cHRyKHB0cikgeyBpZiAocHRyKSByZWZHUHRyKHB0cik7IH0KKyAgICBHUmVmUHRyKGNvbnN0IEdS
ZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBpZiAoVCogcHRyID0gbV9wdHIpIHJlZkdQdHIo
cHRyKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBHUmVmUHRyKGNvbnN0IEdSZWZQdHI8
VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBpZiAoVCogcHRyID0gbV9wdHIpIHJlZkdQdHIocHRy
KTsgfQorCisgICAgfkdSZWZQdHIoKSB7IGlmIChUKiBwdHIgPSBtX3B0cikgZGVyZWZHUHRyKHB0
cik7IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgaWYgKFQqIHB0ciA9IG1f
cHRyKQorICAgICAgICAgICAgZGVyZWZHUHRyKHB0cik7CisgICAgICAgIG1fcHRyID0gMDsKKyAg
ICB9CisKKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorICAgIFQmIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuICptX3B0cjsgfQorICAgIEFMV0FZU19JTkxJTkUgVCogb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJh
dG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBp
bnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgVCogR1JlZlB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5
cGU7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID8gJkdSZWZQdHI6Om1fcHRyIDogMDsgfQorCisgICAgR1JlZlB0ciYgb3BlcmF0b3I9KGNv
bnN0IEdSZWZQdHImKTsKKyAgICBHUmVmUHRyJiBvcGVyYXRvcj0oVCopOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPiBHUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgR1JlZlB0cjxVPiYpOworCisg
ICAgdm9pZCBzd2FwKEdSZWZQdHImKTsKKyAgICBmcmllbmQgR1JlZlB0ciBhZG9wdEdSZWY8VD4o
VCopOworCitwcml2YXRlOgorICAgIHN0YXRpYyBUKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7
IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigtMSk7IH0KKyAgICAvLyBBZG9wdGluZyBjb25z
dHJ1Y3Rvci4KKyAgICBHUmVmUHRyKFQqIHB0ciwgR1JlZlB0ckFkb3B0VHlwZSkgOiBtX3B0cihw
dHIpIHt9CisKKyAgICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxp
bmUgR1JlZlB0cjxUPiYgR1JlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IEdSZWZQdHI8VD4mIG8p
Cit7CisgICAgVCogb3B0ciA9IG8uZ2V0KCk7CisgICAgaWYgKG9wdHIpCisgICAgICAgIHJlZkdQ
dHIob3B0cik7CisgICAgVCogcHRyID0gbV9wdHI7CisgICAgbV9wdHIgPSBvcHRyOworICAgIGlm
IChwdHIpCisgICAgICAgIGRlcmVmR1B0cihwdHIpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBHUmVmUHRyPFQ+JiBHUmVmUHRyPFQ+OjpvcGVy
YXRvcj0oVCogb3B0cikKK3sKKyAgICBUKiBwdHIgPSBtX3B0cjsKKyAgICBpZiAob3B0cikKKyAg
ICAgICAgcmVmR1B0cihvcHRyKTsKKyAgICBtX3B0ciA9IG9wdHI7CisgICAgaWYgKHB0cikKKyAg
ICAgICAgZGVyZWZHUHRyKHB0cik7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gaW5saW5lIHZvaWQgR1JlZlB0cjxUPjo6c3dhcChHUmVmUHRyPFQ+JiBvKQorewor
ICAgIHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBp
bmxpbmUgdm9pZCBzd2FwKEdSZWZQdHI8VD4mIGEsIEdSZWZQdHI8VD4mIGIpCit7CisgICAgYS5z
d2FwKGIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHUmVmUHRyPFQ+JiBhLCBjb25zdCBHUmVmUHRyPFU+JiBiKQor
eworICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdSZWZQdHI8VD4m
IGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3Qg
R1JlZlB0cjxVPiYgYikKK3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
UmVmUHRyPFQ+JiBhLCBjb25zdCBHUmVmUHRyPFU+JiBiKQoreworICAgIHJldHVybiBhLmdldCgp
ICE9IGIuZ2V0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdSZWZQdHI8VD4mIGEsIFUqIGIpCit7CisgICAgcmV0
dXJuIGEuZ2V0KCkgIT0gYjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgR1JlZlB0cjxVPiYgYikKK3sKKyAg
ICByZXR1cm4gYSAhPSBiLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIEdSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBHUmVmUHRy
PFU+JiBwKQoreworICAgIHJldHVybiBHUmVmUHRyPFQ+KHN0YXRpY19jYXN0PFQqPihwLmdldCgp
KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgR1JlZlB0
cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgR1JlZlB0cjxVPiYgcCkKK3sKKyAgICByZXR1
cm4gR1JlZlB0cjxUPihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKGNvbnN0IEdSZWZQdHI8VD4mIHApCit7CisgICAg
cmV0dXJuIHAuZ2V0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBHUmVmUHRyPFQ+IGFk
b3B0R1JlZihUKiBwKQoreworICAgIHJldHVybiBHUmVmUHRyPFQ+KHAsIEdSZWZQdHJBZG9wdCk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0cihUKiBwdHIpCit7
CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsocHRyKTsKKyAgICByZXR1
cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGVyZWZHUHRy
KFQqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX29iamVjdF91bnJlZihwdHIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpHUmVmUHRyOwordXNpbmcgV1RG
OjpyZWZHUHRyOwordXNpbmcgV1RGOjpkZXJlZkdQdHI7Cit1c2luZyBXVEY6OmFkb3B0R1JlZjsK
K3VzaW5nIFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDsKK3VzaW5nIFdURjo6Y29uc3RfcG9pbnRl
cl9jYXN0OworCisjZW5kaWYgLy8gV1RGX0dSZWZQdHJfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL2d0ay9HT3duUHRyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMTUxYjkuLjAwMDAwMDAKLS0t
IGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHT3duUHRyLmgiCi0KLSNpbmNsdWRlIDxnbGliLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewot
Ci10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3IqIHB0cikKLXsK
LSAgICBpZiAocHRyKQotICAgICAgICBnX2Vycm9yX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUg
PD4gdm9pZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCogcHRyKQotewotICAgIGdfbGlzdF9m
cmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHQ29uZD4oR0Nv
bmQqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2NvbmRfZnJlZShwdHIpOwotfQot
Ci10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R011dGV4PihHTXV0ZXgqIHB0cikKLXsK
LSAgICBpZiAocHRyKQotICAgICAgICBnX211dGV4X2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUg
PD4gdm9pZCBmcmVlT3duZWRHUHRyPEdQYXR0ZXJuU3BlYz4oR1BhdHRlcm5TcGVjKiBwdHIpCi17
Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19wYXR0ZXJuX3NwZWNfZnJlZShwdHIpOwotfQotCi10
ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Rpcj4oR0RpciogcHRyKQotewotICAgIGlm
IChwdHIpCi0gICAgICAgIGdfZGlyX2Nsb3NlKHB0cik7Ci19Ci19IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0ci5oIGIvSmF2YVNjcmlw
dENvcmUvd3RmL2d0ay9HT3duUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFk
MmMzMGUuLjAwMDAwMDAKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHT3duUHRyX2gKLSNk
ZWZpbmUgR093blB0cl9oCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotLy8gRm9yd2FyZCBk
ZWxjYXJhdGlvbnMgYXQgdGhpcyBwb2ludCBhdm9pZCB0aGUgbmVlZCB0byBpbmNsdWRlIEdMaWIg
aW5jbHVkZXMKLS8vIGluIFdURiBoZWFkZXJzLgotdHlwZWRlZiBzdHJ1Y3QgX0dFcnJvciBHRXJy
b3I7Ci10eXBlZGVmIHN0cnVjdCBfR0xpc3QgR0xpc3Q7Ci10eXBlZGVmIHN0cnVjdCBfR0NvbmQg
R0NvbmQ7Ci10eXBlZGVmIHN0cnVjdCBfR011dGV4IEdNdXRleDsKLXR5cGVkZWYgc3RydWN0IF9H
UGF0dGVyblNwZWMgR1BhdHRlcm5TcGVjOwotdHlwZWRlZiBzdHJ1Y3QgX0dEaXIgR0RpcjsKLXR5
cGVkZWYgc3RydWN0IF9HSGFzaFRhYmxlIEdIYXNoVGFibGU7Ci1leHRlcm4gIkMiIHZvaWQgZ19m
cmVlKHZvaWQqKTsKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgdm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHRXJyb3I+KEdFcnJvciopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R0xpc3Q+KEdMaXN0Kik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHQ29uZD4oR0Nv
bmQqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdNdXRleD4oR011dGV4Kik7Ci10
ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHUGF0dGVyblNwZWM+KEdQYXR0ZXJuU3BlYyop
OwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Rpcj4oR0RpciopOwotdGVtcGxhdGU8
PiB2b2lkIGZyZWVPd25lZEdQdHI8R0hhc2hUYWJsZT4oR0hhc2hUYWJsZSopOwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR093blB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgR093blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikgeyB9Ci0g
ICAgfkdPd25QdHIoKSB7IGZyZWVPd25lZEdQdHIobV9wdHIpOyB9Ci0KLSAgICBUKiBnZXQoKSBj
b25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHJlbGVhc2UoKQotICAgIHsKLSAgICAgICAg
VCogcHRyID0gbV9wdHI7Ci0gICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgcmV0dXJuIHB0cjsK
LSAgICB9Ci0KLSAgICBUKiYgb3V0UHRyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9wdHIp
OwotICAgICAgICByZXR1cm4gbV9wdHI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQoVCogcHRyKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKLSAgICAgICAgZnJl
ZU93bmVkR1B0cihtX3B0cik7Ci0gICAgICAgIG1fcHRyID0gcHRyOwotICAgIH0KLQotICAgIHZv
aWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgZnJlZU93bmVkR1B0cihtX3B0cik7Ci0gICAgICAg
IG1fcHRyID0gMDsKLSAgICB9Ci0KLSAgICBUJiBvcGVyYXRvciooKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuICptX3B0cjsKLSAgICB9Ci0KLSAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0g
ICAgICAgIHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3B0cjsgfQotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFs
bG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2Vy
IHR5cGVzLgotICAgIHR5cGVkZWYgVCogR093blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7Ci0g
ICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8g
JkdPd25QdHI6Om1fcHRyIDogMDsgfQotCi0gICAgdm9pZCBzd2FwKEdPd25QdHImIG8pIHsgc3Rk
Ojpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQotCi1wcml2YXRlOgotICAgIFQqIG1fcHRyOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoR093blB0cjxUPiYgYSwg
R093blB0cjxUPiYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdPd25QdHI8VD4m
IGEsIFUqIGIpCi17IAotICAgIHJldHVybiBhLmdldCgpID09IGI7IAotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25z
dCBHT3duUHRyPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgR093blB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQo
KTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgR093blB0cjxU
Pjo6UHRyVHlwZSBnZXRQdHIoY29uc3QgR093blB0cjxUPiYgcCkKLXsKLSAgICByZXR1cm4gcC5n
ZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQ
dHIoVCogcHRyKQotewotICAgIGdfZnJlZShwdHIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpHT3duUHRyOwotCi0jZW5kaWYgLy8gR093blB0cl9oCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L2d0ay9HUmVmUHRyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdjZjM0Yi4u
MDAwMDAwMAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4g
Um9iaW5zb24KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUmVmUHRyLmgiCi0KLSNpbmNsdWRlIDxnbGliLmg+Ci0KLW5hbWVz
cGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiBHSGFzaFRhYmxlKiByZWZHUHRyKEdIYXNoVGFibGUq
IHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2hhc2hfdGFibGVfcmVmKHB0cik7Ci0g
ICAgcmV0dXJuIHB0cjsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0hhc2hUYWJs
ZSogcHRyKQotewotICAgIGdfaGFzaF90YWJsZV91bnJlZihwdHIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR1JlZlB0ci5oIGIv
SmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HUmVmUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY2NzM5ZWYuLjAwMDAwMDAKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HUmVm
UHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgotICogIENvcHlyaWdodCAo
QykgMjAwOSBNYXJ0aW4gUm9iaW5zb24KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgV1RGX0dSZWZQ
dHJfaAotI2RlZmluZSBXVEZfR1JlZlB0cl9oCi0KLSNpbmNsdWRlICJBbHdheXNJbmxpbmUuaCIK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLXR5cGVkZWYgc3RydWN0IF9HSGFzaFRhYmxlIEdIYXNo
VGFibGU7Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1lbnVtIEdSZWZQdHJBZG9wdFR5cGUgeyBHUmVm
UHRyQWRvcHQgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0cihUKik7
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGVyZWZHUHRyKFQqKTsKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHUmVmUHRyOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEdS
ZWZQdHI8VD4gYWRvcHRHUmVmKFQqKTsKLXRlbXBsYXRlIDw+IEdIYXNoVGFibGUqIHJlZkdQdHIo
R0hhc2hUYWJsZSogcHRyKTsKLXRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdIYXNoVGFibGUq
IHB0cik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHUmVmUHRyIHsKLXB1YmxpYzoK
LSAgICBHUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KLSAgICBHUmVmUHRyKFQqIHB0cikgOiBtX3B0
cihwdHIpIHsgaWYgKHB0cikgcmVmR1B0cihwdHIpOyB9Ci0gICAgR1JlZlB0cihjb25zdCBHUmVm
UHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgaWYgKFQqIHB0ciA9IG1fcHRyKSByZWZHUHRyKHB0
cik7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gR1JlZlB0cihjb25zdCBHUmVmUHRyPFU+
JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgaWYgKFQqIHB0ciA9IG1fcHRyKSByZWZHUHRyKHB0cik7
IH0KLQotICAgIH5HUmVmUHRyKCkgeyBpZiAoVCogcHRyID0gbV9wdHIpIGRlcmVmR1B0cihwdHIp
OyB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIGlmIChUKiBwdHIgPSBtX3B0
cikKLSAgICAgICAgICAgIGRlcmVmR1B0cihwdHIpOwotICAgICAgICBtX3B0ciA9IDA7Ci0gICAg
fQotCi0gICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICBUJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KLSAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotCi0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRv
ciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50
ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIEdSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBl
OwotICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0
ciA/ICZHUmVmUHRyOjptX3B0ciA6IDA7IH0KLQotICAgIEdSZWZQdHImIG9wZXJhdG9yPShjb25z
dCBHUmVmUHRyJik7Ci0gICAgR1JlZlB0ciYgb3BlcmF0b3I9KFQqKTsKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gR1JlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IEdSZWZQdHI8VT4mKTsKLQotICAg
IHZvaWQgc3dhcChHUmVmUHRyJik7Ci0gICAgZnJpZW5kIEdSZWZQdHIgYWRvcHRHUmVmPFQ+KFQq
KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9Ci0gICAgLy8gQWRvcHRpbmcgY29uc3Ry
dWN0b3IuCi0gICAgR1JlZlB0cihUKiBwdHIsIEdSZWZQdHJBZG9wdFR5cGUpIDogbV9wdHIocHRy
KSB7fQotCi0gICAgVCogbV9wdHI7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IEdSZWZQdHI8VD4mIEdSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBHUmVmUHRyPFQ+JiBvKQot
ewotICAgIFQqIG9wdHIgPSBvLmdldCgpOwotICAgIGlmIChvcHRyKQotICAgICAgICByZWZHUHRy
KG9wdHIpOwotICAgIFQqIHB0ciA9IG1fcHRyOwotICAgIG1fcHRyID0gb3B0cjsKLSAgICBpZiAo
cHRyKQotICAgICAgICBkZXJlZkdQdHIocHRyKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgR1JlZlB0cjxUPiYgR1JlZlB0cjxUPjo6b3BlcmF0
b3I9KFQqIG9wdHIpCi17Ci0gICAgVCogcHRyID0gbV9wdHI7Ci0gICAgaWYgKG9wdHIpCi0gICAg
ICAgIHJlZkdQdHIob3B0cik7Ci0gICAgbV9wdHIgPSBvcHRyOwotICAgIGlmIChwdHIpCi0gICAg
ICAgIGRlcmVmR1B0cihwdHIpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSB2b2lkIEdSZWZQdHI8VD46OnN3YXAoR1JlZlB0cjxUPiYgbykKLXsKLSAg
ICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChHUmVmUHRyPFQ+JiBhLCBHUmVmUHRyPFQ+JiBiKQotewotICAgIGEuc3dh
cChiKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgR1JlZlB0cjxUPiYgYSwgY29uc3QgR1JlZlB0cjxVPiYgYikKLXsK
LSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHUmVmUHRyPFQ+JiBh
LCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpID09IGI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEdS
ZWZQdHI8VT4mIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR1Jl
ZlB0cjxUPiYgYSwgY29uc3QgR1JlZlB0cjxVPiYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAh
PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBHUmVmUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVy
biBhLmdldCgpICE9IGI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEdSZWZQdHI8VT4mIGIpCi17Ci0gICAg
cmV0dXJuIGEgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBHUmVmUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgR1JlZlB0cjxV
PiYgcCkKLXsKLSAgICByZXR1cm4gR1JlZlB0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEdSZWZQdHI8
VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IEdSZWZQdHI8VT4mIHApCi17Ci0gICAgcmV0dXJu
IEdSZWZQdHI8VD4oY29uc3RfY2FzdDxUKj4ocC5nZXQoKSkpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBHUmVmUHRyPFQ+JiBwKQotewotICAgIHJl
dHVybiBwLmdldCgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gR1JlZlB0cjxUPiBhZG9w
dEdSZWYoVCogcCkKLXsKLSAgICByZXR1cm4gR1JlZlB0cjxUPihwLCBHUmVmUHRyQWRvcHQpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIHJlZkdQdHIoVCogcHRyKQotewot
ICAgIGlmIChwdHIpCi0gICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7Ci0gICAgcmV0dXJu
IHB0cjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmR1B0cihU
KiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHRyKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6R1JlZlB0cjsKLXVzaW5nIFdURjo6
cmVmR1B0cjsKLXVzaW5nIFdURjo6ZGVyZWZHUHRyOwotdXNpbmcgV1RGOjphZG9wdEdSZWY7Ci11
c2luZyBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q7Ci11c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJf
Y2FzdDsKLQotI2VuZGlmIC8vIFdURl9HUmVmUHRyX2gKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1OGQ3M2U0Li4z
MDMwNTVlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDItMjIgIExlYW5kcm8g
UGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBFRkwgaW1wbGVtZW50YXRpb24g
b2YgSmF2YVNjcmlwdENvcmUuCisgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUwODQgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogVXBkYXRlZCB0byByZWZsZWN0IHRoZSBuZXcgbG9jYXRpb24gb2YgR093blB0ciBhbmQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR1JlZlB0ci4KKyAgICAgICAgKiB3dGYvZWZsL01h
aW5UaHJlYWRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvZ29iamVjdC9HT3duUHRyLmNw
cDogTW92ZWQgZnJvbSB3dGYvZ3RrLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dPd25QdHIuaDog
TW92ZWQgZnJvbSB3dGYvZ3RrLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwOiBN
b3ZlZCBmcm9tIHd0Zi9ndGsuCisgICAgICAgICogd3RmL2dvYmplY3QvR1JlZlB0ci5oOiBNb3Zl
ZCBmcm9tIHd0Zi9ndGsuCisKIDIwMTAtMDItMDggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCg==
</data>
<flag name="review"
          id="31979"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49282</attachid>
            <date>2010-02-23 05:54:13 -0800</date>
            <delta_ts>2010-02-23 06:22:01 -0800</delta_ts>
            <desc>Remove EOwnPtr.h and move GOwnPtr/GRefPtr to wtf/gobject</desc>
            <filename>bug-35084.diff</filename>
            <type>text/plain</type>
            <size>27463</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1MTQ2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDItMjIgIExlYW5kcm8g
UGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBFRkwgaW1wbGVtZW50YXRpb24g
b2YgSmF2YVNjcmlwdENvcmUuCisgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzUwODQgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogVXBkYXRlZCB0byByZWZsZWN0IHRoZSBuZXcgbG9jYXRpb24gb2YgR093blB0ciBhbmQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR1JlZlB0ci4KKyAgICAgICAgKiB3dGYvZWZsL01h
aW5UaHJlYWRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvZ29iamVjdC9HT3duUHRyLmNw
cDogTW92ZWQgZnJvbSB3dGYvZ3RrLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dPd25QdHIuaDog
TW92ZWQgZnJvbSB3dGYvZ3RrLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwOiBN
b3ZlZCBmcm9tIHd0Zi9ndGsuCisgICAgICAgICogd3RmL2dvYmplY3QvR1JlZlB0ci5oOiBNb3Zl
ZCBmcm9tIHd0Zi9ndGsuCisKIDIwMTAtMDItMjIgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNTUxNDYpCisrKyBKYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjkyLDEwICsyOTIsMTAgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1ZhbHVlQ2hlY2suaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVmVj
dG9yVHJhaXRzLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0ci5jcHAgXAotCUph
dmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0ci5oIFwKLQlKYXZhU2NyaXB0Q29yZS93dGYvZ3Rr
L0dSZWZQdHIuY3BwIFwKLQlKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuaCBcCisJSmF2
YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR093blB0ci5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0
Zi9nb2JqZWN0L0dPd25QdHIuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0
ci5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL2d0ay9NYWluVGhyZWFkR3RrLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3Rm
L2d0ay9UaHJlYWRpbmdHdGsuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xs
YXRvci5oIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwCShyZXZp
c2lvbiA1NTE0NikJKGZyb20gSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmNwcDo1NTE0
NikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHT3duUHRyLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVk
ZSA8Z2xpYi5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdFcnJvcj4oR0Vycm9yKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19l
cnJvcl9mcmVlKHB0cik7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTGlz
dD4oR0xpc3QqIHB0cikKK3sKKyAgICBnX2xpc3RfZnJlZShwdHIpOworfQorCit0ZW1wbGF0ZSA8
PiB2b2lkIGZyZWVPd25lZEdQdHI8R0NvbmQ+KEdDb25kKiBwdHIpCit7CisgICAgaWYgKHB0cikK
KyAgICAgICAgZ19jb25kX2ZyZWUocHRyKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPEdNdXRleD4oR011dGV4KiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19t
dXRleF9mcmVlKHB0cik7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHUGF0
dGVyblNwZWM+KEdQYXR0ZXJuU3BlYyogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdf
cGF0dGVybl9zcGVjX2ZyZWUocHRyKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRH
UHRyPEdEaXI+KEdEaXIqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2Rpcl9jbG9z
ZShwdHIpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0ZpbGU+KEdGaWxl
KiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocHRyKTsKK30K
K30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR093
blB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIu
aAkocmV2aXNpb24gNTUxNDYpCShmcm9tIEphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0ci5o
OjU1MTQ2KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR093blB0ci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEdPd25QdHJfaAorI2RlZmlu
ZSBHT3duUHRyX2gKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisvLyBGb3J3YXJkIGRlbGNh
cmF0aW9ucyBhdCB0aGlzIHBvaW50IGF2b2lkIHRoZSBuZWVkIHRvIGluY2x1ZGUgR0xpYiBpbmNs
dWRlcworLy8gaW4gV1RGIGhlYWRlcnMuCit0eXBlZGVmIHN0cnVjdCBfR0Vycm9yIEdFcnJvcjsK
K3R5cGVkZWYgc3RydWN0IF9HTGlzdCBHTGlzdDsKK3R5cGVkZWYgc3RydWN0IF9HQ29uZCBHQ29u
ZDsKK3R5cGVkZWYgc3RydWN0IF9HTXV0ZXggR011dGV4OwordHlwZWRlZiBzdHJ1Y3QgX0dQYXR0
ZXJuU3BlYyBHUGF0dGVyblNwZWM7Cit0eXBlZGVmIHN0cnVjdCBfR0RpciBHRGlyOwordHlwZWRl
ZiBzdHJ1Y3QgX0dIYXNoVGFibGUgR0hhc2hUYWJsZTsKK3R5cGVkZWYgc3RydWN0IF9HRmlsZSBH
RmlsZTsKK2V4dGVybiAiQyIgdm9pZCBnX2ZyZWUodm9pZCopOworCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCogcHRy
KTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdFcnJvcj4oR0Vycm9yKik7Cit0ZW1w
bGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTGlzdD4oR0xpc3QqKTsKK3RlbXBsYXRlPD4gdm9p
ZCBmcmVlT3duZWRHUHRyPEdDb25kPihHQ29uZCopOwordGVtcGxhdGU8PiB2b2lkIGZyZWVPd25l
ZEdQdHI8R011dGV4PihHTXV0ZXgqKTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdQ
YXR0ZXJuU3BlYz4oR1BhdHRlcm5TcGVjKik7Cit0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0
cjxHRGlyPihHRGlyKik7Cit0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHSGFzaFRhYmxl
PihHSGFzaFRhYmxlKik7Cit0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHRmlsZT4oR0Zp
bGUqKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdPd25QdHIgOiBwdWJsaWMgTm9u
Y29weWFibGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdPd25QdHIoVCogcHRyID0gMCkgOiBt
X3B0cihwdHIpIHsgfQorICAgIH5HT3duUHRyKCkgeyBmcmVlT3duZWRHUHRyKG1fcHRyKTsgfQor
CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiByZWxlYXNlKCkK
KyAgICB7CisgICAgICAgIFQqIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IDA7CisgICAg
ICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgVComIG91dFB0cigpCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fcHRyKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIHZv
aWQgc2V0KFQqIHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0
cik7CisgICAgICAgIGZyZWVPd25lZEdQdHIobV9wdHIpOworICAgICAgICBtX3B0ciA9IHB0cjsK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGZyZWVPd25lZEdQdHIo
bV9wdHIpOworICAgICAgICBtX3B0ciA9IDA7CisgICAgfQorCisgICAgVCYgb3BlcmF0b3IqKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIHJldHVybiAqbV9w
dHI7CisgICAgfQorCisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9wdHIpOworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgIC8vIFRoaXMgY29udmVy
c2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3Qg
dG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNp
ZmllZEJvb2xUeXBlOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA/ICZHT3duUHRyOjptX3B0ciA6IDA7IH0KKworICAgIHZvaWQgc3dhcChH
T3duUHRyJiBvKSB7IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KKworcHJpdmF0ZToKKyAg
ICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2Fw
KEdPd25QdHI8VD4mIGEsIEdPd25QdHI8VD4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBHT3duUHRyPFQ+JiBhLCBVKiBiKQoreyAKKyAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikgCit7CisgICAgcmV0dXJuIGEgPT0gYi5n
ZXQoKTsgCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEdPd25QdHI8VD4mIGEsIFUqIGIpCit7CisgICAgcmV0dXJuIGEu
Z2V0KCkgIT0gYjsgCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEdPd25QdHI8VT4mIGIpCit7IAorICAgIHJl
dHVybiBhICE9IGIuZ2V0KCk7IAorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHR5
cGVuYW1lIEdPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IEdPd25QdHI8VD4mIHApCit7
CisgICAgcmV0dXJuIHAuZ2V0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
dm9pZCBmcmVlT3duZWRHUHRyKFQqIHB0cikKK3sKKyAgICBnX2ZyZWUocHRyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6R093blB0cjsKKworI2VuZGlmIC8vIEdPd25Q
dHJfaApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAJKHJldmlzaW9u
IDU1MTQ2KQkoZnJvbSBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuY3BwOjU1MTQ2KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4gUm9iaW5z
b24KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHUmVmUHRyLmgiCisKKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZSA8PiBHSGFzaFRhYmxlKiByZWZHUHRyKEdIYXNoVGFibGUqIHB0cikK
K3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX2hhc2hfdGFibGVfcmVmKHB0cik7CisgICAgcmV0
dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0hhc2hUYWJsZSogcHRy
KQoreworICAgIGdfaGFzaF90YWJsZV91bnJlZihwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmgJKHJldmlzaW9uIDU1MTQ2
KQkoZnJvbSBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuaDo1NTE0NikKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE4NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgorICogIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4gUm9iaW5zb24KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpZm5kZWYgV1RGX0dSZWZQdHJfaAorI2RlZmluZSBXVEZfR1JlZlB0cl9oCisK
KyNpbmNsdWRlICJBbHdheXNJbmxpbmUuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3R5cGVk
ZWYgc3RydWN0IF9HSGFzaFRhYmxlIEdIYXNoVGFibGU7CisKK25hbWVzcGFjZSBXVEYgeworCitl
bnVtIEdSZWZQdHJBZG9wdFR5cGUgeyBHUmVmUHRyQWRvcHQgfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgVCogcmVmR1B0cihUKik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgZGVyZWZHUHRyKFQqKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHUmVmUHRy
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEdSZWZQdHI8VD4gYWRvcHRHUmVmKFQqKTsKK3RlbXBs
YXRlIDw+IEdIYXNoVGFibGUqIHJlZkdQdHIoR0hhc2hUYWJsZSogcHRyKTsKK3RlbXBsYXRlIDw+
IHZvaWQgZGVyZWZHUHRyKEdIYXNoVGFibGUqIHB0cik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBHUmVmUHRyIHsKK3B1YmxpYzoKKyAgICBHUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0K
KyAgICBHUmVmUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgaWYgKHB0cikgcmVmR1B0cihwdHIp
OyB9CisgICAgR1JlZlB0cihjb25zdCBHUmVmUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgaWYg
KFQqIHB0ciA9IG1fcHRyKSByZWZHUHRyKHB0cik7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4gR1JlZlB0cihjb25zdCBHUmVmUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgaWYgKFQq
IHB0ciA9IG1fcHRyKSByZWZHUHRyKHB0cik7IH0KKworICAgIH5HUmVmUHRyKCkgeyBpZiAoVCog
cHRyID0gbV9wdHIpIGRlcmVmR1B0cihwdHIpOyB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7
CisgICAgICAgIGlmIChUKiBwdHIgPSBtX3B0cikKKyAgICAgICAgICAgIGRlcmVmR1B0cihwdHIp
OworICAgICAgICBtX3B0ciA9IDA7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9wdHI7IH0KKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsg
fQorCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKworICAg
IC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0
byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIFQqIEdS
ZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9v
bFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZHUmVmUHRyOjptX3B0ciA6IDA7IH0KKwor
ICAgIEdSZWZQdHImIG9wZXJhdG9yPShjb25zdCBHUmVmUHRyJik7CisgICAgR1JlZlB0ciYgb3Bl
cmF0b3I9KFQqKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gR1JlZlB0ciYgb3BlcmF0b3I9
KGNvbnN0IEdSZWZQdHI8VT4mKTsKKworICAgIHZvaWQgc3dhcChHUmVmUHRyJik7CisgICAgZnJp
ZW5kIEdSZWZQdHIgYWRvcHRHUmVmPFQ+KFQqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgVCog
aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEp
OyB9CisgICAgLy8gQWRvcHRpbmcgY29uc3RydWN0b3IuCisgICAgR1JlZlB0cihUKiBwdHIsIEdS
ZWZQdHJBZG9wdFR5cGUpIDogbV9wdHIocHRyKSB7fQorCisgICAgVCogbV9wdHI7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIEdSZWZQdHI8VD4mIEdSZWZQdHI8VD46Om9wZXJh
dG9yPShjb25zdCBHUmVmUHRyPFQ+JiBvKQoreworICAgIFQqIG9wdHIgPSBvLmdldCgpOworICAg
IGlmIChvcHRyKQorICAgICAgICByZWZHUHRyKG9wdHIpOworICAgIFQqIHB0ciA9IG1fcHRyOwor
ICAgIG1fcHRyID0gb3B0cjsKKyAgICBpZiAocHRyKQorICAgICAgICBkZXJlZkdQdHIocHRyKTsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgR1Jl
ZlB0cjxUPiYgR1JlZlB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit7CisgICAgVCogcHRyID0g
bV9wdHI7CisgICAgaWYgKG9wdHIpCisgICAgICAgIHJlZkdQdHIob3B0cik7CisgICAgbV9wdHIg
PSBvcHRyOworICAgIGlmIChwdHIpCisgICAgICAgIGRlcmVmR1B0cihwdHIpOworICAgIHJldHVy
biAqdGhpczsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2b2lkIEdSZWZQdHI8VD46
OnN3YXAoR1JlZlB0cjxUPiYgbykKK3sKKyAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChHUmVmUHRyPFQ+JiBhLCBH
UmVmUHRyPFQ+JiBiKQoreworICAgIGEuc3dhcChiKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR1JlZlB0cjxUPiYg
YSwgY29uc3QgR1JlZlB0cjxVPiYgYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBHUmVmUHRyPFQ+JiBhLCBVKiBiKQoreworICAgIHJldHVybiBhLmdldCgp
ID09IGI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEdSZWZQdHI8VT4mIGIpCit7CisgICAgcmV0dXJuIGEg
PT0gYi5nZXQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR1JlZlB0cjxUPiYgYSwgY29uc3QgR1JlZlB0cjxVPiYg
YikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHUmVmUHRy
PFQ+JiBhLCBVKiBiKQoreworICAgIHJldHVybiBhLmdldCgpICE9IGI7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IEdSZWZQdHI8VT4mIGIpCit7CisgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBHUmVmUHRyPFQ+IHN0YXRpY19w
b2ludGVyX2Nhc3QoY29uc3QgR1JlZlB0cjxVPiYgcCkKK3sKKyAgICByZXR1cm4gR1JlZlB0cjxU
PihzdGF0aWNfY2FzdDxUKj4ocC5nZXQoKSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIEdSZWZQdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IEdS
ZWZQdHI8VT4mIHApCit7CisgICAgcmV0dXJuIEdSZWZQdHI8VD4oY29uc3RfY2FzdDxUKj4ocC5n
ZXQoKSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25z
dCBHUmVmUHRyPFQ+JiBwKQoreworICAgIHJldHVybiBwLmdldCgpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gR1JlZlB0cjxUPiBhZG9wdEdSZWYoVCogcCkKK3sKKyAgICByZXR1cm4gR1Jl
ZlB0cjxUPihwLCBHUmVmUHRyQWRvcHQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIFQqIHJlZkdQdHIoVCogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdfb2JqZWN0
X3JlZl9zaW5rKHB0cik7CisgICAgcmV0dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSB2b2lkIGRlcmVmR1B0cihUKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAg
ICAgZ19vYmplY3RfdW5yZWYocHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6R1JlZlB0cjsKK3VzaW5nIFdURjo6cmVmR1B0cjsKK3VzaW5nIFdURjo6ZGVyZWZHUHRy
OwordXNpbmcgV1RGOjphZG9wdEdSZWY7Cit1c2luZyBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q7
Cit1c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdDsKKworI2VuZGlmIC8vIFdURl9HUmVmUHRy
X2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvR093blB0ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmNwcAkocmV2aXNpb24gNTUxNDYpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dPd25QdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHT3duUHRyLmgiCi0KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdF
cnJvcj4oR0Vycm9yKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19lcnJvcl9mcmVl
KHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTGlzdD4oR0xpc3Qq
IHB0cikKLXsKLSAgICBnX2xpc3RfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZy
ZWVPd25lZEdQdHI8R0NvbmQ+KEdDb25kKiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAg
Z19jb25kX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdN
dXRleD4oR011dGV4KiBwdHIpCi17Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19tdXRleF9mcmVl
KHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHUGF0dGVyblNwZWM+
KEdQYXR0ZXJuU3BlYyogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdfcGF0dGVybl9z
cGVjX2ZyZWUocHRyKTsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+
KEdEaXIqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX2Rpcl9jbG9zZShwdHIpOwot
fQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0ZpbGU+KEdGaWxlKiBwdHIpCi17
Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19vYmplY3RfdW5yZWYocHRyKTsKLX0KLX0gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmgJKHJldmlzaW9uIDU1MTQ2
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9HT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTQ4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgR093blB0cl9oCi0jZGVmaW5lIEdPd25QdHJf
aAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIEZvcndhcmQgZGVsY2FyYXRpb25zIGF0
IHRoaXMgcG9pbnQgYXZvaWQgdGhlIG5lZWQgdG8gaW5jbHVkZSBHTGliIGluY2x1ZGVzCi0vLyBp
biBXVEYgaGVhZGVycy4KLXR5cGVkZWYgc3RydWN0IF9HRXJyb3IgR0Vycm9yOwotdHlwZWRlZiBz
dHJ1Y3QgX0dMaXN0IEdMaXN0OwotdHlwZWRlZiBzdHJ1Y3QgX0dDb25kIEdDb25kOwotdHlwZWRl
ZiBzdHJ1Y3QgX0dNdXRleCBHTXV0ZXg7Ci10eXBlZGVmIHN0cnVjdCBfR1BhdHRlcm5TcGVjIEdQ
YXR0ZXJuU3BlYzsKLXR5cGVkZWYgc3RydWN0IF9HRGlyIEdEaXI7Ci10eXBlZGVmIHN0cnVjdCBf
R0hhc2hUYWJsZSBHSGFzaFRhYmxlOwotdHlwZWRlZiBzdHJ1Y3QgX0dGaWxlIEdGaWxlOwotZXh0
ZXJuICJDIiB2b2lkIGdfZnJlZSh2b2lkKik7Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZnJlZU93bmVkR1B0cihUKiBwdHIpOwotdGVtcGxh
dGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Vycm9yPihHRXJyb3IqKTsKLXRlbXBsYXRlPD4gdm9p
ZCBmcmVlT3duZWRHUHRyPEdMaXN0PihHTGlzdCopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25l
ZEdQdHI8R0NvbmQ+KEdDb25kKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTXV0
ZXg+KEdNdXRleCopOwotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVj
PihHUGF0dGVyblNwZWMqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdEaXI+KEdE
aXIqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdIYXNoVGFibGU+KEdIYXNoVGFi
bGUqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdGaWxlPihHRmlsZSopOwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR093blB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR093blB0cihUKiBwdHIgPSAwKSA6IG1fcHRyKHB0cikg
eyB9Ci0gICAgfkdPd25QdHIoKSB7IGZyZWVPd25lZEdQdHIobV9wdHIpOyB9Ci0KLSAgICBUKiBn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHJlbGVhc2UoKQotICAgIHsKLSAg
ICAgICAgVCogcHRyID0gbV9wdHI7Ci0gICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgcmV0dXJu
IHB0cjsKLSAgICB9Ci0KLSAgICBUKiYgb3V0UHRyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV9wdHIpOwotICAgICAgICByZXR1cm4gbV9wdHI7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQoVCog
cHRyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKLSAgICAg
ICAgZnJlZU93bmVkR1B0cihtX3B0cik7Ci0gICAgICAgIG1fcHRyID0gcHRyOwotICAgIH0KLQot
ICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgZnJlZU93bmVkR1B0cihtX3B0cik7Ci0g
ICAgICAgIG1fcHRyID0gMDsKLSAgICB9Ci0KLSAgICBUJiBvcGVyYXRvciooKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuICptX3B0cjsKLSAgICB9
Ci0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0
cik7Ci0gICAgICAgIHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQotCi0gICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJh
dG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBp
bnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgVCogR093blB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5
cGU7Ci0gICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID8gJkdPd25QdHI6Om1fcHRyIDogMDsgfQotCi0gICAgdm9pZCBzd2FwKEdPd25QdHImIG8p
IHsgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsgfQotCi1wcml2YXRlOgotICAgIFQqIG1fcHRy
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoR093blB0cjxU
PiYgYSwgR093blB0cjxUPiYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdPd25Q
dHI8VD4mIGEsIFUqIGIpCi17IAotICAgIHJldHVybiBhLmdldCgpID09IGI7IAotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBh
LCBjb25zdCBHT3duUHRyPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgR093blB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBi
OyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oVCogYSwgY29uc3QgR093blB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0g
Yi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgR093
blB0cjxUPjo6UHRyVHlwZSBnZXRQdHIoY29uc3QgR093blB0cjxUPiYgcCkKLXsKLSAgICByZXR1
cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVP
d25lZEdQdHIoVCogcHRyKQotewotICAgIGdfZnJlZShwdHIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQotdXNpbmcgV1RGOjpHT3duUHRyOwotCi0jZW5kaWYgLy8gR093blB0cl9oCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL0dSZWZQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9ndGsvR1JlZlB0ci5jcHAJKHJldmlzaW9uIDU1MTQ2KQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL2d0ay9HUmVmUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IE1hcnRpbiBSb2JpbnNvbgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdS
ZWZQdHIuaCIKLQotI2luY2x1ZGUgPGdsaWIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlIDw+IEdIYXNoVGFibGUqIHJlZkdQdHIoR0hhc2hUYWJsZSogcHRyKQotewotICAgIGlmIChw
dHIpCi0gICAgICAgIGdfaGFzaF90YWJsZV9yZWYocHRyKTsKLSAgICByZXR1cm4gcHRyOwotfQot
Ci10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHSGFzaFRhYmxlKiBwdHIpCi17Ci0gICAgZ19o
YXNoX3RhYmxlX3VucmVmKHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL2d0ay9HUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL2d0ay9HUmVmUHRyLmgJKHJldmlzaW9uIDU1MTQ2KQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL2d0ay9HUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTg3ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDkgTWFydGluIFJvYmluc29uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZu
ZGVmIFdURl9HUmVmUHRyX2gKLSNkZWZpbmUgV1RGX0dSZWZQdHJfaAotCi0jaW5jbHVkZSAiQWx3
YXlzSW5saW5lLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi10eXBlZGVmIHN0cnVjdCBfR0hh
c2hUYWJsZSBHSGFzaFRhYmxlOwotCi1uYW1lc3BhY2UgV1RGIHsKLQotZW51bSBHUmVmUHRyQWRv
cHRUeXBlIHsgR1JlZlB0ckFkb3B0IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQq
IHJlZkdQdHIoVCopOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRlcmVmR1B0
cihUKik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR1JlZlB0cjsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBHUmVmUHRyPFQ+IGFkb3B0R1JlZihUKik7Ci10ZW1wbGF0ZSA8PiBHSGFzaFRh
YmxlKiByZWZHUHRyKEdIYXNoVGFibGUqIHB0cik7Ci10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0
cihHSGFzaFRhYmxlKiBwdHIpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR1JlZlB0
ciB7Ci1wdWJsaWM6Ci0gICAgR1JlZlB0cigpIDogbV9wdHIoMCkgeyB9Ci0gICAgR1JlZlB0cihU
KiBwdHIpIDogbV9wdHIocHRyKSB7IGlmIChwdHIpIHJlZkdQdHIocHRyKTsgfQotICAgIEdSZWZQ
dHIoY29uc3QgR1JlZlB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7IGlmIChUKiBwdHIgPSBtX3B0
cikgcmVmR1B0cihwdHIpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IEdSZWZQdHIoY29u
c3QgR1JlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IGlmIChUKiBwdHIgPSBtX3B0cikg
cmVmR1B0cihwdHIpOyB9Ci0KLSAgICB+R1JlZlB0cigpIHsgaWYgKFQqIHB0ciA9IG1fcHRyKSBk
ZXJlZkdQdHIocHRyKTsgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBpZiAo
VCogcHRyID0gbV9wdHIpCi0gICAgICAgICAgICBkZXJlZkdQdHIocHRyKTsKLSAgICAgICAgbV9w
dHIgPSAwOwotICAgIH0KLQotICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0g
ICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9Ci0gICAgQUxXQVlTX0lO
TElORSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9Ci0KLSAgICAvLyBUaGlzIGNvbnZl
cnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90
IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBUKiBHUmVmUHRyOjoqVW5zcGVj
aWZpZWRCb29sVHlwZTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9wdHIgPyAmR1JlZlB0cjo6bV9wdHIgOiAwOyB9Ci0KLSAgICBHUmVmUHRyJiBv
cGVyYXRvcj0oY29uc3QgR1JlZlB0ciYpOwotICAgIEdSZWZQdHImIG9wZXJhdG9yPShUKik7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IEdSZWZQdHImIG9wZXJhdG9yPShjb25zdCBHUmVmUHRy
PFU+Jik7Ci0KLSAgICB2b2lkIHN3YXAoR1JlZlB0ciYpOwotICAgIGZyaWVuZCBHUmVmUHRyIGFk
b3B0R1JlZjxUPihUKik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQotICAgIC8vIEFk
b3B0aW5nIGNvbnN0cnVjdG9yLgotICAgIEdSZWZQdHIoVCogcHRyLCBHUmVmUHRyQWRvcHRUeXBl
KSA6IG1fcHRyKHB0cikge30KLQotICAgIFQqIG1fcHRyOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBHUmVmUHRyPFQ+JiBHUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgR1Jl
ZlB0cjxUPiYgbykKLXsKLSAgICBUKiBvcHRyID0gby5nZXQoKTsKLSAgICBpZiAob3B0cikKLSAg
ICAgICAgcmVmR1B0cihvcHRyKTsKLSAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICBtX3B0ciA9IG9w
dHI7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZGVyZWZHUHRyKHB0cik7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIEdSZWZQdHI8VD4mIEdSZWZQ
dHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQotewotICAgIFQqIHB0ciA9IG1fcHRyOwotICAgIGlm
IChvcHRyKQotICAgICAgICByZWZHUHRyKG9wdHIpOwotICAgIG1fcHRyID0gb3B0cjsKLSAgICBp
ZiAocHRyKQotICAgICAgICBkZXJlZkdQdHIocHRyKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBHUmVmUHRyPFQ+Ojpzd2FwKEdSZWZQdHI8
VD4mIG8pCi17Ci0gICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoR1JlZlB0cjxUPiYgYSwgR1JlZlB0cjxUPiYgYikK
LXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdSZWZQdHI8VD4mIGEsIGNvbnN0IEdSZWZQ
dHI8VT4mIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
R1JlZlB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShU
KiBhLCBjb25zdCBHUmVmUHRyPFU+JiBiKQotewotICAgIHJldHVybiBhID09IGIuZ2V0KCk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEdSZWZQdHI8VD4mIGEsIGNvbnN0IEdSZWZQdHI8VT4mIGIpCi17Ci0gICAgcmV0
dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR1JlZlB0cjxUPiYgYSwgVSogYikK
LXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBHUmVmUHRyPFU+
JiBiKQotewotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgR1JlZlB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNv
bnN0IEdSZWZQdHI8VT4mIHApCi17Ci0gICAgcmV0dXJuIEdSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8
VCo+KHAuZ2V0KCkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBHUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBHUmVmUHRyPFU+JiBwKQot
ewotICAgIHJldHVybiBHUmVmUHRyPFQ+KGNvbnN0X2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgR1JlZlB0cjxUPiYg
cCkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEdS
ZWZQdHI8VD4gYWRvcHRHUmVmKFQqIHApCi17Ci0gICAgcmV0dXJuIEdSZWZQdHI8VD4ocCwgR1Jl
ZlB0ckFkb3B0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiByZWZHUHRy
KFQqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBnX29iamVjdF9yZWZfc2luayhwdHIp
OwotICAgIHJldHVybiBwdHI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBkZXJlZkdQdHIoVCogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdfb2JqZWN0X3Vu
cmVmKHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkdSZWZQdHI7
Ci11c2luZyBXVEY6OnJlZkdQdHI7Ci11c2luZyBXVEY6OmRlcmVmR1B0cjsKLXVzaW5nIFdURjo6
YWRvcHRHUmVmOwotdXNpbmcgV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0OwotdXNpbmcgV1RGOjpj
b25zdF9wb2ludGVyX2Nhc3Q7Ci0KLSNlbmRpZiAvLyBXVEZfR1JlZlB0cl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>