<?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>17134</bug_id>
          
          <creation_ts>2008-02-01 08:03:39 -0800</creation_ts>
          <short_desc>Inspector should have an integrated JavaScript debugger</short_desc>
          <delta_ts>2008-07-17 22:45:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>17133</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mikel.walters</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69040</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-01 08:03:39 -0800</bug_when>
    <thetext>The Web Inspector should have an integrated JavaScript debugger. This lack is one of the chief complaints I have heard from people who are used to working with Firebug. The Inspector won&apos;t really be an all-in-one tool for web development until we have this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69043</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-01 08:09:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/5719552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73670</commentid>
    <comment_count>2</comment_count>
      <attachid>19754</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-03-13 21:39:23 -0700</bug_when>
    <thetext>Created attachment 19754
Proof of concept patch

I ma attaching this proof of concept patch that gets basic debugging working in the Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73680</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-13 22:36:45 -0700</bug_when>
    <thetext>*** Bug 17135 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74116</commentid>
    <comment_count>4</comment_count>
      <attachid>19836</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 10:52:17 -0700</bug_when>
    <thetext>Created attachment 19836
Make JavaScriptDebugListeners able to listen to particular Pages

This patch augments JavaScriptDebugServer so that JavaScriptDebugListeners may register to receive callbacks only for specific Pages. Using this we will be able to make the InspectorController register for callbacks for its inspected Page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74117</commentid>
    <comment_count>5</comment_count>
      <attachid>19837</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 10:53:21 -0700</bug_when>
    <thetext>Created attachment 19837
[WIP] Add an EventLoop abstraction (Windows-only right now)

This patch isn&apos;t for review yet. It adds an EventLoop abstraction that we can use in the Inspector to spin a nested event loop while JS is paused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74118</commentid>
    <comment_count>6</comment_count>
      <attachid>19837</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 10:54:02 -0700</bug_when>
    <thetext>Comment on attachment 19837
[WIP] Add an EventLoop abstraction (Windows-only right now)

Note that for the moment this is a Windows-only patch. We&apos;ll need to flesh it out for other platforms before landing (at least with stub implementations of EventLoop::cycle).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74119</commentid>
    <comment_count>7</comment_count>
      <attachid>19838</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 10:55:13 -0700</bug_when>
    <thetext>Created attachment 19838
[WIP] Add Widget::isPluginView

This patch is not ready to be reviewed.

This patch adds a virtual method to Widget, bool isPluginView() const, that will tell you if a Widget is a PluginView. This is useful for finding all the PluginViews in a Frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74121</commentid>
    <comment_count>8</comment_count>
      <attachid>19839</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 10:59:05 -0700</bug_when>
    <thetext>Created attachment 19839
[WIP] Make the Inspector able to pause/step JS code

This patch is not ready for review.

This patch depends on the following patches:

From Bug 17133:
 * Attachment 19590
 * Attachment 19729
 * Attachment 19788

From this bug:
 * Attachment 19836
 * Attachment 19837
 * Attachment 19838

Changes from attachment 19754:
 * InspectorController is now a JavaScriptDebugListener.
 * No InspectorClient methods are added. Instead, we handle the event loop entirely within WebCore.
 * Unused arguments that were being passed down to JS in the debugging methods have been removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74122</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 11:02:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Changes from attachment 19754 [edit]:
&gt;  * InspectorController is now a JavaScriptDebugListener.
&gt;  * No InspectorClient methods are added. Instead, we handle the event loop
&gt; entirely within WebCore.
&gt;  * Unused arguments that were being passed down to JS in the debugging methods
&gt; have been removed.

Oh, and:
 * Adds a PageGroupJavaScriptPauser class that pauses JavaScript for an entire PageGroup.

The behavioral difference between attachment 19754 and this patch (attachment 19839) is that this patch allows you to interact with the WebView being debugged, e.g. by scrolling it, selecting text, clicking links, etc.

Whether or not this is a good thing is TBD since you could conceivably screw up your debugging by, e.g., scrolling the window just before evaluating window.scrollTop, but it does match Firebug&apos;s behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74586</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-20 17:17:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=19839) [edit]
&gt; [WIP] Make the Inspector able to pause/step JS code
&gt; 
&gt; This patch is not ready for review.
&gt; 
&gt; This patch depends on the following patches:
&gt; 
&gt; From Bug 17133:
&gt;  * Attachment 19590 [edit]
&gt;  * Attachment 19729 [edit]
&gt;  * Attachment 19788 [edit]

Updated versions of these have all landed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76134</commentid>
    <comment_count>11</comment_count>
      <attachid>19836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-02 03:07:17 -0700</bug_when>
    <thetext>Comment on attachment 19836
Make JavaScriptDebugListeners able to listen to particular Pages

+    PageListenersMap::iterator it = m_pageListenersMap.find(page);
+    if (it == m_pageListenersMap.end()) {
+        pair&lt;PageListenersMap::iterator, bool&gt; result = m_pageListenersMap.add(page, new ListenerSet);
+        ASSERT(result.second);
+        it = result.first;
+    }

The above is not a great idiom, because it unnecessarily does two hash table lookups when adding a new entry. A better way is:

    pair&lt;PageListenersMap::iterator, bool&gt; result = m_pageListenersMap.add(page, 0);
    if (result.second)
        result.first-&gt;second = new ListenerSet;
    ListenerSet* listeners = result.first-&gt;second;

Is it legal to add a listener when it&apos;s already in, or remove a listener if it&apos;s not in? If not, then I suggest adding some assertions.

The use of &quot;state&quot; instead of &quot;exec&quot; for ExecState* arguments is quite unconventional. I suggest you either use &quot;exec&quot; or push to get &quot;state&quot; used elsewhere. Maybe we can switch using do-webcore-rename, because I bet &quot;exec&quot; is not used for anything except ExecState*.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76163</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-02 10:57:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 19836 [edit])
&gt; +    PageListenersMap::iterator it = m_pageListenersMap.find(page);
&gt; +    if (it == m_pageListenersMap.end()) {
&gt; +        pair&lt;PageListenersMap::iterator, bool&gt; result =
&gt; m_pageListenersMap.add(page, new ListenerSet);
&gt; +        ASSERT(result.second);
&gt; +        it = result.first;
&gt; +    }
&gt; 
&gt; The above is not a great idiom, because it unnecessarily does two hash table
&gt; lookups when adding a new entry. A better way is:
&gt; 
&gt;     pair&lt;PageListenersMap::iterator, bool&gt; result =
&gt; m_pageListenersMap.add(page, 0);
&gt;     if (result.second)
&gt;         result.first-&gt;second = new ListenerSet;
&gt;     ListenerSet* listeners = result.first-&gt;second;

Changed to match your example. Thanks for the tutorial!

&gt; Is it legal to add a listener when it&apos;s already in, or remove a listener if
&gt; it&apos;s not in? If not, then I suggest adding some assertions.

It is legal, in that nothing bad will come of it -- both operations are no-ops.

&gt; The use of &quot;state&quot; instead of &quot;exec&quot; for ExecState* arguments is quite
&gt; unconventional. I suggest you either use &quot;exec&quot; or push to get &quot;state&quot; used
&gt; elsewhere. Maybe we can switch using do-webcore-rename, because I bet &quot;exec&quot; is
&gt; not used for anything except ExecState*.

I can switch this class to using &quot;exec&quot; instead of &quot;state&quot; in a subsequent patch.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76164</commentid>
    <comment_count>13</comment_count>
      <attachid>19836</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-02 11:01:17 -0700</bug_when>
    <thetext>Comment on attachment 19836
Make JavaScriptDebugListeners able to listen to particular Pages

Committed as r31570</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76167</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-02 11:13:46 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; The use of &quot;state&quot; instead of &quot;exec&quot; for ExecState* arguments is quite
&gt; &gt; unconventional. I suggest you either use &quot;exec&quot; or push to get &quot;state&quot; used
&gt; &gt; elsewhere. Maybe we can switch using do-webcore-rename, because I bet &quot;exec&quot; is
&gt; &gt; not used for anything except ExecState*.
&gt; 
&gt; I can switch this class to using &quot;exec&quot; instead of &quot;state&quot; in a subsequent
&gt; patch.

Committed the rename in r31571.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77940</commentid>
    <comment_count>15</comment_count>
      <attachid>20628</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-17 09:24:45 -0700</bug_when>
    <thetext>Created attachment 20628
Add wrappers around showWindow/closeWindow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78107</commentid>
    <comment_count>16</comment_count>
      <attachid>20628</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-18 08:22:00 -0700</bug_when>
    <thetext>Comment on attachment 20628
Add wrappers around showWindow/closeWindow

Committed in r32210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78113</commentid>
    <comment_count>17</comment_count>
      <attachid>20668</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-18 09:12:10 -0700</bug_when>
    <thetext>Created attachment 20668
Make InspectorController a JavaScriptDebugListener</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78114</commentid>
    <comment_count>18</comment_count>
      <attachid>20668</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-04-18 09:14:00 -0700</bug_when>
    <thetext>Comment on attachment 20668
Make InspectorController a JavaScriptDebugListener

r=me, but should reloadInspectedPageAndStartDebugging be startDebuggingAndRelaodInspectedPage to match the order of operations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78115</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-18 09:17:18 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 20668 [edit])
&gt; r=me, but should reloadInspectedPageAndStartDebugging be
&gt; startDebuggingAndRelaodInspectedPage to match the order of operations?

Yes, I&apos;ll rename it.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78117</commentid>
    <comment_count>20</comment_count>
      <attachid>20668</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-18 09:35:11 -0700</bug_when>
    <thetext>Comment on attachment 20668
Make InspectorController a JavaScriptDebugListener

Committed in r32217</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19754</attachid>
            <date>2008-03-13 21:39:23 -0700</date>
            <delta_ts>2008-03-17 10:59:05 -0700</delta_ts>
            <desc>Proof of concept patch</desc>
            <filename>work-in-process.patch</filename>
            <type>text/plain</type>
            <size>22870</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL3ZpZXctc291cmNlLmNzcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy92aWV3LXNvdXJjZS5jc3MJKHJldmlzaW9uIDMxMDQ1KQorKysgV2ViQ29yZS9jc3Mvdmll
dy1zb3VyY2UuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQCB0ZCB7CiAgICAg
dmVydGljYWwtYWxpZ246IGJhc2VsaW5lCiB9CiAKK3RyLndlYmtpdC1jdXJyZW50LWxpbmUgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMTI4LCAwLjUpOworICAgIG91dGxpbmU6
IDFweCBzb2xpZCByZ2IoMCwgMCwgMTI4KTsKK30KKwogLndlYmtpdC1saW5lLWd1dHRlci1iYWNr
ZHJvcCwgLndlYmtpdC1saW5lLW51bWJlciB7CiAgICAgcGFkZGluZzogMCAycHggIWltcG9ydGFu
dDsKICAgICBtaW4td2lkdGg6IDIxcHg7CkluZGV4OiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0luc3BlY3RvckNsaWVudC5oCShyZXZp
c2lvbiAzMTA0NSkKKysrIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdo
bGlnaHQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmIG5ld1VSTCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRPdGhlclBh
Z2VzV2hpbGVQYXVzZWQoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzMTA0NSkKKysrIFdl
YkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgs
NiArNTgsOCBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgImtqc19wcm94
eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4ZWNTdGF0
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdSZWYuaD4KQEAgLTY4LDggKzcwLDk3IEBACiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgogI2Vu
ZGlmCiAKK3VzaW5nIEtKUzo6RXhlY1N0YXRlOwordXNpbmcgS0pTOjpKU09iamVjdDsKK3VzaW5n
IEtKUzo6SlNWYWx1ZTsKK3VzaW5nIEtKUzo6TGlzdDsKK3VzaW5nIEtKUzo6VVN0cmluZzsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisjcHJhZ21hIG1hcmsgSW5zcGVjdG9yIERlYnVnZ2VyCisK
K2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyIDogcHVibGljIEtKUzo6RGVidWdnZXIgeworcHVibGlj
OgorICAgIEluc3BlY3RvckRlYnVnZ2VyKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIpCisgICAgICAgIDogbV9uZXN0ZWQoZmFsc2UpCisgICAgICAgICwgbV9pbnNwZWN0
b3JDb250cm9sbGVyKGluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCBzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgY29uc3Qg
VVN0cmluZyYgdXJsLCBjb25zdCBVU3RyaW5nICZzb3VyY2UsIGludCBsaW5lTnVtYmVyLCBpbnQg
ZXJyb3JMaW5lLCBjb25zdCBVU3RyaW5nJiBlcnJvck1zZykKKyAgICB7CisgICAgICAgIGlmICht
X25lc3RlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIG1fbmVzdGVkID0g
dHJ1ZTsKKworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNvdXJjZVBhcnNlZChzdGF0
ZSwgc2lkLCB1cmwsIHNvdXJjZSwgbGluZU51bWJlciwgZXJyb3JMaW5lLCBlcnJvck1zZyk7CisK
KyAgICAgICAgbV9uZXN0ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgdmlydHVhbCBib29sIGNhbGxFdmVudChFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc2lkLCBp
bnQgbGluZW5vLCBKU09iamVjdCogZnVuYywgY29uc3QgTGlzdCYgYXJncykKKyAgICB7CisgICAg
ICAgIGlmIChtX25lc3RlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIG1f
bmVzdGVkID0gdHJ1ZTsKKworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmVudGVyRnVu
Y3Rpb24oc3RhdGUsIHNpZCwgbGluZW5vLCBmdW5jLCBhcmdzKTsKKworICAgICAgICBtX25lc3Rl
ZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgYXRTdGF0ZW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgaW50IGxpbmVubywgaW50
IGxhc3RMaW5lKQorICAgIHsKKyAgICAgICAgaWYgKG1fbmVzdGVkKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgbV9uZXN0ZWQgPSB0cnVlOworCisgICAgICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+d2lsbEV2YWx1YXRlTGluZShzdGF0ZSwgc2lkLCBsaW5lbm8sIGxhc3RM
aW5lKTsKKworICAgICAgICBtX25lc3RlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcmV0dXJuRXZlbnQoRXhlY1N0YXRlKiBzdGF0ZSwg
aW50IHNpZCwgaW50IGxpbmVubywgSlNPYmplY3QqIGZ1bmMpCisgICAgeworICAgICAgICBpZiAo
bV9uZXN0ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBtX25lc3RlZCA9
IHRydWU7CisKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5leGl0RnVuY3Rpb24oc3Rh
dGUsIHNpZCwgbGluZW5vLCBmdW5jKTsKKworICAgICAgICBtX25lc3RlZCA9IGZhbHNlOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUsIGludCBzaWQsIGludCBsaW5lbm8sIEpTVmFsdWUqIGV4Y2VwdGlvbikK
KyAgICB7CisgICAgICAgIGlmIChtX25lc3RlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIG1fbmVzdGVkID0gdHJ1ZTsKKworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPmV4Y2VwdGlvblJhaXNlZChzdGF0ZSwgc2lkLCBsaW5lbm8sIGV4Y2VwdGlvbik7CisKKyAg
ICAgICAgbV9uZXN0ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIGJvb2wgbV9uZXN0ZWQ7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9p
bnNwZWN0b3JDb250cm9sbGVyOworfTsKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBI
ZWxwZXIgRnVuY3Rpb25zCisKIHN0YXRpYyBKU1ZhbHVlUmVmIGNhbGxTaW1wbGVGdW5jdGlvbihK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lKQogewogICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CkBAIC01
NzcsNiArNjY4LDUxIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdmVCeVVucmVzdHJpY3RlZChKU0MK
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKIH0KIAorc3RhdGljIEpTVmFs
dWVSZWYgaXNQYXVzZWQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiov
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKK3sKKyAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxJbnNwZWN0
b3JDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBpZiAo
IWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
ICAgIHByaW50ZigiaXNQYXVzZWRcbiIpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y3R4LCBjb250cm9sbGVyLT5wYXVzZWQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHBhdXNl
SmF2YVNjcmlwdChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEluc3BlY3RvckNv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGlmICghY29u
dHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAg
ICBwcmludGYoInBhdXNlSmF2YVNjcmlwdFxuIik7CisgICAgY29udHJvbGxlci0+cGF1c2VTY3Jp
cHQoKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworfQorCitzdGF0
aWMgSlNWYWx1ZVJlZiBzdGVwSmF2YVNjcmlwdChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlv
biovKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJl
dF9jYXN0PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7CisKKyAgICBwcmludGYoInN0ZXBKYXZhU2NyaXB0XG4iKTsKKyAgICBjb250
cm9sbGVyLT5zdGVwU2NyaXB0KCk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVzdW1lSmF2YVNjcmlwdChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSByZWludGVycHJldF9jYXN0PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBwcmludGYoInJlc3VtZUphdmFT
Y3JpcHRcbiIpOworICAgIGNvbnRyb2xsZXItPnJlc3VtZVNjcmlwdCgpOworCisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21h
IG1hcmsgSW5zcGVjdG9yQ29udHJvbGxlciBDbGFzcwogCkBAIC01ODgsNiArNzI0LDggQEAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcgogICAgICwgbV9jb250cm9sbGVy
U2NyaXB0T2JqZWN0KDApCiAgICAgLCBtX3NjcmlwdENvbnRleHQoMCkKICAgICAsIG1fd2luZG93
VmlzaWJsZShmYWxzZSkKKyAgICAsIG1fc2NyaXB0UGF1c2VkKGZhbHNlKQorICAgICwgbV9zY3Jp
cHRTdGVwcGluZyhmYWxzZSkKICAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShGb2N1c2VkTm9kZURv
Y3VtZW50UGFuZWwpCiAgICAgLCBtX25leHRJZGVudGlmaWVyKC0yKQogewpAQCAtNjE0LDYgKzc1
Miw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlCiAgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fY29uc29sZU1lc3NhZ2VzKTsKIH0KIAorI3ByYWdtYSBtYXJrIC0KKyNw
cmFnbWEgbWFyayBEZWJ1Z2dlciBDYWxsYmFja3MKKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgY29uc3QgVVN0cmluZyYg
dXJsLCBjb25zdCBVU3RyaW5nICZzb3VyY2UsIGludCBzdGFydExpbmUsIGludCBlcnJvckxpbmUs
IGNvbnN0IFVTdHJpbmcmIGVycm9yTXNnKQoreworICAgIEpTVmFsdWVSZWYgdXJsVmFsdWUgPSBK
U1ZhbHVlTWFrZVN0cmluZyhtX3NjcmlwdENvbnRleHQsIHRvUmVmKHVybC5yZXAoKSkpOworICAg
IEpTVmFsdWVSZWYgc2lkVmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQs
IHNpZCk7CisgICAgSlNWYWx1ZVJlZiBzdGFydExpbmVWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVy
KG1fc2NyaXB0Q29udGV4dCwgc3RhcnRMaW5lKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBzb3VyY2VQYXJzZWRTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJzb3VyY2VQYXJzZWQiKSk7CisgICAgSlNPYmplY3RSZWYgc291cmNlUGFyc2VkRnVuY3Rp
b24gPSBKU1ZhbHVlVG9PYmplY3QobV9zY3JpcHRDb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5
KG1fc2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QsIHNvdXJjZVBhcnNlZFN0cmluZy5nZXQo
KSwgMCksIDApOworCisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSA9IHsgdXJsVmFsdWUsIHNp
ZFZhbHVlLCBzdGFydExpbmVWYWx1ZSB9OworICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24obV9z
Y3JpcHRDb250ZXh0LCBzb3VyY2VQYXJzZWRGdW5jdGlvbiwgbV9zY3JpcHRPYmplY3QsIDMsIGFy
Z3VtZW50cywgMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW50ZXJGdW5jdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc2lkLCBpbnQgbGluZSwgSlNPYmplY3QqIGZ1bmN0aW9u
LCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEpTVmFsdWVSZWYgc2lkVmFsdWUgPSBKU1ZhbHVl
TWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIHNpZCk7CisgICAgSlNWYWx1ZVJlZiBsaW5lVmFs
dWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIGxpbmUpOworICAgIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uT2JqZWN0ID0gdG9SZWYoZnVuY3Rpb24pOworCisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHNvdXJjZVBhcnNlZFN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoImVudGVyRnVuY3Rpb24iKSk7CisgICAgSlNPYmplY3RSZWYgc291cmNl
UGFyc2VkRnVuY3Rpb24gPSBKU1ZhbHVlVG9PYmplY3QobV9zY3JpcHRDb250ZXh0LCBKU09iamVj
dEdldFByb3BlcnR5KG1fc2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QsIHNvdXJjZVBhcnNl
ZFN0cmluZy5nZXQoKSwgMCksIDApOworCisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSA9IHsg
c2lkVmFsdWUsIGxpbmVWYWx1ZSwgZnVuY3Rpb25PYmplY3QgfTsKKyAgICBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKG1fc2NyaXB0Q29udGV4dCwgc291cmNlUGFyc2VkRnVuY3Rpb24sIG1fc2NyaXB0
T2JqZWN0LCAzLCBhcmd1bWVudHMsIDApOworCisgICAgc3VzcGVuZE90aGVyUGFnZXNXaGlsZVBh
dXNlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxFdmFsdWF0ZUxpbmUo
RXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgaW50IGxpbmUsIGludCBsYXN0TGluZSkKK3sKKyAg
ICBKU1ZhbHVlUmVmIHNpZFZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0
LCBzaWQpOworICAgIEpTVmFsdWVSZWYgbGluZVZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9z
Y3JpcHRDb250ZXh0LCBsaW5lKTsKKyAgICBKU1ZhbHVlUmVmIGxhc3RMaW5lVmFsdWUgPSBKU1Zh
bHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIGxhc3RMaW5lKTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBzb3VyY2VQYXJzZWRTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJ3aWxsRXZhbHVhdGVMaW5lIikpOworICAgIEpTT2JqZWN0UmVmIHNv
dXJjZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KG1fc2NyaXB0Q29udGV4dCwgSlNP
YmplY3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCBzb3VyY2VQ
YXJzZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKworICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10g
PSB7IHNpZFZhbHVlLCBsaW5lVmFsdWUsIGxhc3RMaW5lVmFsdWUgfTsKKyAgICBKU09iamVjdENh
bGxBc0Z1bmN0aW9uKG1fc2NyaXB0Q29udGV4dCwgc291cmNlUGFyc2VkRnVuY3Rpb24sIG1fc2Ny
aXB0T2JqZWN0LCAzLCBhcmd1bWVudHMsIDApOworCisgICAgc3VzcGVuZE90aGVyUGFnZXNXaGls
ZVBhdXNlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4aXRGdW5jdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBpbnQgc2lkLCBpbnQgbGluZSwgSlNPYmplY3QqIGZ1bmN0aW9uKQor
eworICAgIEpTVmFsdWVSZWYgc2lkVmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENv
bnRleHQsIHNpZCk7CisgICAgSlNWYWx1ZVJlZiBsaW5lVmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJl
cihtX3NjcmlwdENvbnRleHQsIGxpbmUpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uT2JqZWN0
ID0gdG9SZWYoZnVuY3Rpb24pOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNvdXJj
ZVBhcnNlZFN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImV4aXRG
dW5jdGlvbiIpKTsKKyAgICBKU09iamVjdFJlZiBzb3VyY2VQYXJzZWRGdW5jdGlvbiA9IEpTVmFs
dWVUb09iamVjdChtX3NjcmlwdENvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkobV9zY3JpcHRD
b250ZXh0LCBtX3NjcmlwdE9iamVjdCwgc291cmNlUGFyc2VkU3RyaW5nLmdldCgpLCAwKSwgMCk7
CisKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBzaWRWYWx1ZSwgbGluZVZhbHVlLCBm
dW5jdGlvbk9iamVjdCB9OworICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24obV9zY3JpcHRDb250
ZXh0LCBzb3VyY2VQYXJzZWRGdW5jdGlvbiwgbV9zY3JpcHRPYmplY3QsIDMsIGFyZ3VtZW50cywg
MCk7CisKKyAgICBzdXNwZW5kT3RoZXJQYWdlc1doaWxlUGF1c2VkKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZXhjZXB0aW9uUmFpc2VkKEV4ZWNTdGF0ZSogc3RhdGUsIGludCBz
aWQsIGludCBsaW5lLCBKU1ZhbHVlKiBleGNlcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBzaWRW
YWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgc2lkKTsKKyAgICBKU1Zh
bHVlUmVmIGxpbmVWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgbGlu
ZSk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb25WYWx1ZSA9IHRvUmVmKGV4Y2VwdGlvbik7CisK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlUGFyc2VkU3RyaW5nKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXhjZXB0aW9uUmFpc2VkIikpOworICAgIEpT
T2JqZWN0UmVmIHNvdXJjZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KG1fc2NyaXB0
Q29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2NyaXB0T2Jq
ZWN0LCBzb3VyY2VQYXJzZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKworICAgIEpTVmFsdWVSZWYg
YXJndW1lbnRzW10gPSB7IHNpZFZhbHVlLCBsaW5lVmFsdWUsIGV4Y2VwdGlvblZhbHVlIH07Cisg
ICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihtX3NjcmlwdENvbnRleHQsIHNvdXJjZVBhcnNlZEZ1
bmN0aW9uLCBtX3NjcmlwdE9iamVjdCwgMywgYXJndW1lbnRzLCAwKTsKKworICAgIHN1c3BlbmRP
dGhlclBhZ2VzV2hpbGVQYXVzZWQoKTsKK30KKworI3ByYWdtYSBtYXJrIC0KKwogYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjplbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNwZWN0
ZWRQYWdlLT5zZXR0aW5ncygpLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CkBAIC03ODQsNiAr
MTAwMCwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iCiAgICAg
ICAgIHsgImxvY2FsaXplZFN0cmluZ3NVUkwiLCBsb2NhbGl6ZWRTdHJpbmdzLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAicGxhdGZvcm0iLCBwbGF0Zm9ybSwga0pTUHJv
cGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgIm1vdmVCeVVucmVzdHJpY3RlZCIsIG1v
dmVCeVVucmVzdHJpY3RlZCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsg
ImlzUGF1c2VkIiwgaXNQYXVzZWQsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAg
ICB7ICJwYXVzZVNjcmlwdCIsIHBhdXNlSmF2YVNjcmlwdCwga0pTUHJvcGVydHlBdHRyaWJ1dGVO
b25lIH0sCisgICAgICAgIHsgInN0ZXBTY3JpcHQiLCBzdGVwSmF2YVNjcmlwdCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInJlc3VtZVNjcmlwdCIsIHJlc3VtZUphdmFT
Y3JpcHQsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQog
ICAgIH07CiAKQEAgLTgzMiw2ICsxMDUyLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c2hvdygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICgh
bV9kZWJ1Z2dlcikKKyAgICAgICAgbV9kZWJ1Z2dlci5zZXQobmV3IEluc3BlY3RvckRlYnVnZ2Vy
KHRoaXMpKTsKKyAgICBtX2RlYnVnZ2VyLT5hdHRhY2gobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKS0+c2NyaXB0UHJveHkoKS0+Z2xvYmFsT2JqZWN0KCkpOworCiAgICAgaWYgKCFtX3BhZ2Up
IHsKICAgICAgICAgbV9wYWdlID0gbV9jbGllbnQtPmNyZWF0ZVBhZ2UoKTsKICAgICAgICAgaWYg
KCFtX3BhZ2UpCkBAIC04ODAsNiArMTEwNCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y2xvc2UoKQogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2Rl
YnVnZ2VyLT5kZXRhY2gobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+c2NyaXB0UHJveHko
KS0+Z2xvYmFsT2JqZWN0KCkpOworCiAgICAgbV9jbGllbnQtPmNsb3NlV2luZG93KCk7CiAgICAg
aWYgKG1fcGFnZSkKICAgICAgICAgbV9wYWdlLT5zZXRQYXJlbnRJbnNwZWN0b3JDb250cm9sbGVy
KDApOwpAQCAtMTYwMCw2ICsxODI2LDM1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bW92
ZVdpbmRvd0J5KGYKICAgICBtX3BhZ2UtPmNocm9tZSgpLT5zZXRXaW5kb3dSZWN0KGZyYW1lUmVj
dCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cGF1c2VTY3JpcHQoKQoreworICAg
IG1fc2NyaXB0UGF1c2VkID0gdHJ1ZTsKKyAgICBtX3NjcmlwdFN0ZXBwaW5nID0gZmFsc2U7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RlcFNjcmlwdCgpCit7CisgICAgbV9zY3Jp
cHRQYXVzZWQgPSBmYWxzZTsKKyAgICBtX3NjcmlwdFN0ZXBwaW5nID0gdHJ1ZTsKK30KKwordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWVTY3JpcHQoKQoreworICAgIG1fc2NyaXB0UGF1
c2VkID0gZmFsc2U7CisgICAgbV9zY3JpcHRTdGVwcGluZyA9IGZhbHNlOworfQorCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnN1c3BlbmRPdGhlclBhZ2VzV2hpbGVQYXVzZWQoKQoreworICAg
IGlmIChtX3NjcmlwdFBhdXNlZCkKKyAgICAgICAgbV9jbGllbnQtPnN1c3BlbmRPdGhlclBhZ2Vz
V2hpbGVQYXVzZWQoKTsKKworICAgIGlmIChtX3NjcmlwdFN0ZXBwaW5nKSB7CisgICAgICAgIG1f
c2NyaXB0U3RlcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9zY3JpcHRQYXVzZWQgPSB0cnVlOwor
ICAgIH0KK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IENvbG9y
IG92ZXJsYXlGaWxsQ29sb3IoMCwgMCwgMCwgMTI4KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0luc3BlY3RvckNv
bnRyb2xsZXIuaAkocmV2aXNpb24gMzEwNDUpCisrKyBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMiArMzMsMzIgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEtKUyB7CisgICAgY2xhc3MgRXhlY1N0YXRl
OworICAgIGNsYXNzIExpc3Q7CisgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgSlNWYWx1
ZTsKKyAgICBjbGFzcyBVU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlcjsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIAogc3RydWN0IENvbnNvbGVNZXNzYWdlOwogc3RydWN0IElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7CiBzdHJ1Y3QgSW5zcGVjdG9yUmVzb3VyY2U7Ci1jbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgewogcHVibGlj
OgpAQCAtMTIwLDYgKzEzMCwyMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1vdmVXaW5kb3dCeShm
bG9hdCB4LCBmbG9hdCB5KSBjb25zdDsKIAorICAgIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRQYXVzZWQ7IH0KKyAgICBib29sIHN0ZXBwaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JpcHRTdGVwcGluZzsgfQorCisgICAgdm9pZCBwYXVzZVNjcmlwdCgpOworICAgIHZvaWQg
c3RlcFNjcmlwdCgpOworICAgIHZvaWQgcmVzdW1lU2NyaXB0KCk7CisKKyAgICB2b2lkIHN1c3Bl
bmRPdGhlclBhZ2VzV2hpbGVQYXVzZWQoKTsKKworICAgIHZvaWQgc291cmNlUGFyc2VkKEtKUzo6
RXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgY29uc3QgS0pTOjpVU3RyaW5nJiB1cmwsIGNvbnN0
IEtKUzo6VVN0cmluZyAmc291cmNlLCBpbnQgbGluZU51bWJlciwgaW50IGVycm9yTGluZSwgY29u
c3QgS0pTOjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAgdm9pZCBlbnRlckZ1bmN0aW9uKEtKUzo6
RXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgaW50IGxpbmVubywgS0pTOjpKU09iamVjdCogZnVu
YywgY29uc3QgS0pTOjpMaXN0JiBhcmdzKTsKKyAgICB2b2lkIHdpbGxFdmFsdWF0ZUxpbmUoS0pT
OjpFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc2lkLCBpbnQgbGluZW5vLCBpbnQgbGFzdExpbmUpOwor
ICAgIHZvaWQgZXhpdEZ1bmN0aW9uKEtKUzo6RXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNpZCwgaW50
IGxpbmVubywgS0pTOjpKU09iamVjdCogZnVuYyk7CisgICAgdm9pZCBleGNlcHRpb25SYWlzZWQo
S0pTOjpFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc2lkLCBpbnQgbGluZW5vLCBLSlM6OkpTVmFsdWUq
IGV4Y2VwdGlvbik7CisKICAgICB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTY3LDkgKzE5MiwxMiBAQCBwcml2YXRlOgogICAg
IEpTT2JqZWN0UmVmIG1fY29udHJvbGxlclNjcmlwdE9iamVjdDsKICAgICBKU0NvbnRleHRSZWYg
bV9zY3JpcHRDb250ZXh0OwogICAgIGJvb2wgbV93aW5kb3dWaXNpYmxlOworICAgIGJvb2wgbV9z
Y3JpcHRQYXVzZWQ7CisgICAgYm9vbCBtX3NjcmlwdFN0ZXBwaW5nOwogICAgIFNwZWNpYWxQYW5l
bHMgbV9zaG93QWZ0ZXJWaXNpYmxlOwogICAgIGxvbmcgbG9uZyBtX25leHRJZGVudGlmaWVyOwog
ICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICBPd25QdHI8SW5zcGVjdG9y
RGVidWdnZXI+IG1fZGVidWdnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1NvdXJjZVBhbmVsLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9pbnNwZWN0b3IvU291cmNlUGFuZWwuanMJKHJldmlzaW9uIDMxMDQ1KQorKysg
V2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VQYW5lbC5qcwkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsMzQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICB9LAogCisJdXBkYXRl
VG9vbGJhcjogZnVuY3Rpb24oKQorCXsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlUGFu
ZWwucHJvdG90eXBlLnVwZGF0ZVRvb2xiYXIuY2FsbCh0aGlzKTsKKworICAgICAgICB2YXIgYnV0
dG9uQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXJCdXR0b25zIik7
CisKKwkJdmFyIGJ1dHRvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24i
KTsKKwkJYnV0dG9uRWxlbWVudC50aXRsZSA9ICJQYXVzZSI7CisJCWJ1dHRvbkVsZW1lbnQudGV4
dENvbnRlbnQgPSAiUGF1c2UiOworCQlidXR0b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgSW5zcGVjdG9yQ29udHJvbGxlci5wYXVzZVNjcmlwdC5iaW5kKEluc3BlY3RvckNvbnRy
b2xsZXIpLCBmYWxzZSk7CisKKwkJYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbkVs
ZW1lbnQpOworCisJCWJ1dHRvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0
b24iKTsKKwkJYnV0dG9uRWxlbWVudC50aXRsZSA9ICJTdGVwIjsKKwkJYnV0dG9uRWxlbWVudC50
ZXh0Q29udGVudCA9ICJTdGVwIjsKKwkJYnV0dG9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIEluc3BlY3RvckNvbnRyb2xsZXIuc3RlcFNjcmlwdC5iaW5kKEluc3BlY3RvckNvbnRy
b2xsZXIpLCBmYWxzZSk7CisKKwkJYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbkVs
ZW1lbnQpOworCisJCWJ1dHRvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0
b24iKTsKKwkJYnV0dG9uRWxlbWVudC50aXRsZSA9ICJSZXN1bWUiOworCQlidXR0b25FbGVtZW50
LnRleHRDb250ZW50ID0gIlJlc3VtZSI7CisJCWJ1dHRvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBJbnNwZWN0b3JDb250cm9sbGVyLnJlc3VtZVNjcmlwdC5iaW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIpLCBmYWxzZSk7CisKKwkJYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1
dHRvbkVsZW1lbnQpOworCX0sCisKICAgICBzZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQ6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnZpZXdzLnNvdXJjZS5mcmFtZU5lZWRzU2V0
dXApIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzCShyZXZpc2lvbiAzMTA0
NSkKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw3IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKIHZhciBXZWJJbnNwZWN0b3Ig
PSB7CiAgICAgcmVzb3VyY2VzOiBbXSwKICAgICByZXNvdXJjZVVSTE1hcDoge30sCisgICAgcmVz
b3VyY2VTY3JpcHRJZGVudGlmaWVyTWFwOiB7fSwKICAgICBiYWNrRm9yd2FyZExpc3Q6IFtdLAog
ICAgIHNlYXJjaFJlc3VsdHNIZWlnaHQ6IDEwMCwKICAgICBsb2NhbGl6ZWRTdHJpbmdzOiB7fSwK
QEAgLTY4MCw2ICs2ODEsMTAwIEBAIFdlYkluc3BlY3Rvci5zaG93VGltZWxpbmUgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFuZWwoV2ViSW5zcGVjdG9yLm5ldHdvcmtQYW5lbCk7
CiB9CiAKK1dlYkluc3BlY3Rvci5zb3VyY2VQYXJzZWQgPSBmdW5jdGlvbih1cmwsIHNpZCwgc3Rh
cnRMaW5lKQoreworCXZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VVUkxNYXBbdXJsXTsKKwlp
ZiAoIXJlc291cmNlKQorCQlyZXR1cm47CisKKwlpZiAoISgic2NyaXB0U291cmNlSWRlbnRpZmll
cnMiIGluIHJlc291cmNlKSkKKwkJcmVzb3VyY2Uuc2NyaXB0U291cmNlSWRlbnRpZmllcnMgPSB7
fTsKKwlyZXNvdXJjZS5zY3JpcHRTb3VyY2VJZGVudGlmaWVyc1tzaWRdID0gc3RhcnRMaW5lOwor
CisJdGhpcy5yZXNvdXJjZVNjcmlwdElkZW50aWZpZXJNYXBbc2lkXSA9IHJlc291cmNlOworCisJ
Y29uc29sZS5sb2coInNvdXJjZVBhcnNlZCAiICsgdXJsICsgIiAoIiArIHNpZCArICIpIGxpbmU6
ICIgKyBzdGFydExpbmUpOworfQorCitXZWJJbnNwZWN0b3IuZW50ZXJGdW5jdGlvbiA9IGZ1bmN0
aW9uKHNpZCwgbGluZSwgZnVuYykKK3sKKwlpZiAoIUluc3BlY3RvckNvbnRyb2xsZXIuaXNQYXVz
ZWQoKSkKKwkJcmV0dXJuOworCisJdmFyIHJlc291cmNlID0gdGhpcy5yZXNvdXJjZVNjcmlwdElk
ZW50aWZpZXJNYXBbc2lkXTsKKwlpZiAoIXJlc291cmNlKQorCQlyZXR1cm47CisKKwl0aGlzLm5h
dmlnYXRlVG9QYW5lbChyZXNvdXJjZS5wYW5lbCwgInNvdXJjZSIpOworCXJlc291cmNlLnBhbmVs
LnNob3dTb3VyY2VMaW5lKGxpbmUpOworCisJaWYgKHRoaXMuY3VycmVudExpbmVSb3cpCisJCXRo
aXMuY3VycmVudExpbmVSb3cuY2xhc3NOYW1lID0gIiI7CisJdGhpcy5jdXJyZW50TGluZVJvdyA9
IHJlc291cmNlLnBhbmVsLnNvdXJjZVJvdyhsaW5lKTsKKwl0aGlzLmN1cnJlbnRMaW5lUm93LmNs
YXNzTmFtZSA9ICJ3ZWJraXQtY3VycmVudC1saW5lIjsKKworLy8JY29uc29sZS5sb2coImVudGVy
RnVuY3Rpb24gIiArIHJlc291cmNlLnVybCArICIgbGluZTogIiArIGxpbmUpOworfQorCitXZWJJ
bnNwZWN0b3Iud2lsbEV2YWx1YXRlTGluZSA9IGZ1bmN0aW9uKHNpZCwgbGluZSwgbGFzdExpbmUp
Cit7CisJaWYgKCFJbnNwZWN0b3JDb250cm9sbGVyLmlzUGF1c2VkKCkpCisJCXJldHVybjsKKwor
CXZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VTY3JpcHRJZGVudGlmaWVyTWFwW3NpZF07CisJ
aWYgKCFyZXNvdXJjZSkKKwkJcmV0dXJuOworCisJdGhpcy5uYXZpZ2F0ZVRvUGFuZWwocmVzb3Vy
Y2UucGFuZWwsICJzb3VyY2UiKTsKKwlyZXNvdXJjZS5wYW5lbC5zaG93U291cmNlTGluZShsaW5l
KTsKKworCWlmICh0aGlzLmN1cnJlbnRMaW5lUm93KQorCQl0aGlzLmN1cnJlbnRMaW5lUm93LmNs
YXNzTmFtZSA9ICIiOworCXRoaXMuY3VycmVudExpbmVSb3cgPSByZXNvdXJjZS5wYW5lbC5zb3Vy
Y2VSb3cobGluZSk7CisJdGhpcy5jdXJyZW50TGluZVJvdy5jbGFzc05hbWUgPSAid2Via2l0LWN1
cnJlbnQtbGluZSI7CisKKy8vCWNvbnNvbGUubG9nKCJ3aWxsRXZhbHVhdGVMaW5lICIgKyByZXNv
dXJjZS51cmwgKyAiIGxpbmU6ICIgKyBsaW5lKTsKK30KKworV2ViSW5zcGVjdG9yLmV4aXRGdW5j
dGlvbiA9IGZ1bmN0aW9uKHNpZCwgbGluZSwgZnVuYykKK3sKKwlpZiAoIUluc3BlY3RvckNvbnRy
b2xsZXIuaXNQYXVzZWQoKSkKKwkJcmV0dXJuOworCisJdmFyIHJlc291cmNlID0gdGhpcy5yZXNv
dXJjZVNjcmlwdElkZW50aWZpZXJNYXBbc2lkXTsKKwlpZiAoIXJlc291cmNlKQorCQlyZXR1cm47
CisKKwl0aGlzLm5hdmlnYXRlVG9QYW5lbChyZXNvdXJjZS5wYW5lbCwgInNvdXJjZSIpOworCXJl
c291cmNlLnBhbmVsLnNob3dTb3VyY2VMaW5lKGxpbmUpOworCisJaWYgKHRoaXMuY3VycmVudExp
bmVSb3cpCisJCXRoaXMuY3VycmVudExpbmVSb3cuY2xhc3NOYW1lID0gIiI7CisJdGhpcy5jdXJy
ZW50TGluZVJvdyA9IHJlc291cmNlLnBhbmVsLnNvdXJjZVJvdyhsaW5lKTsKKwl0aGlzLmN1cnJl
bnRMaW5lUm93LmNsYXNzTmFtZSA9ICJ3ZWJraXQtY3VycmVudC1saW5lIjsKKworLy8JY29uc29s
ZS5sb2coImV4aXRGdW5jdGlvbiAiICsgcmVzb3VyY2UudXJsICsgIiBsaW5lOiAiICsgbGluZSk7
Cit9CisKK1dlYkluc3BlY3Rvci5leGNlcHRpb25SYWlzZWQgPSBmdW5jdGlvbihzaWQsIGxpbmUs
IGV4Y2VwdGlvbikKK3sKKwl2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlU2NyaXB0SWRlbnRp
Zmllck1hcFtzaWRdOworCWlmICghcmVzb3VyY2UpCisJCXJldHVybjsKKworCXRoaXMubmF2aWdh
dGVUb1BhbmVsKHJlc291cmNlLnBhbmVsLCAic291cmNlIik7CisJcmVzb3VyY2UucGFuZWwuc2hv
d1NvdXJjZUxpbmUobGluZSk7CisKKwlpZiAodGhpcy5jdXJyZW50TGluZVJvdykKKwkJdGhpcy5j
dXJyZW50TGluZVJvdy5jbGFzc05hbWUgPSAiIjsKKwl0aGlzLmN1cnJlbnRMaW5lUm93ID0gcmVz
b3VyY2UucGFuZWwuc291cmNlUm93KGxpbmUpOworCXRoaXMuY3VycmVudExpbmVSb3cuY2xhc3NO
YW1lID0gIndlYmtpdC1jdXJyZW50LWxpbmUiOworCisJSW5zcGVjdG9yQ29udHJvbGxlci5wYXVz
ZVNjcmlwdCgpOworCisJY29uc29sZS5sb2coImV4Y2VwdGlvblJhaXNlZCAiICsgcmVzb3VyY2Uu
dXJsICsgIiBsaW5lOiAiICsgbGluZSArICIgZXhjZXB0aW9uOiAiICsgZXhjZXB0aW9uKTsKK30K
KwogV2ViSW5zcGVjdG9yLmFkZFJlc291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB7CiAgICAg
dGhpcy5yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDMxMDQ1KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VFbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDA2
LDcgKzQwNiwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUq
KSB7fTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIHt9OworCiAgICAgdmlydHVh
bCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpIHt9OworCisJ
dmlydHVhbCB2b2lkIHN1c3BlbmRPdGhlclBhZ2VzV2hpbGVQYXVzZWQoKSB7fTsKIH07CiAgICAg
CiB9CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgJKHJldmlzaW9uIDMxMDQ1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsMTEgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmly
dHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKIAorICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kT3RoZXJQYWdlc1doaWxlUGF1c2VkKCk7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0OwogCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkocmV2aXNpb24gMzEwNDUpCisrKyBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQp
aGlnaGxpZ2h0QW5kU2Nyb2xsVG9Ob2RlOihET01Ob2RlICopbm9kZTsKIC0gKHZvaWQpaGlnaGxp
Z2h0Tm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lkKWhpZGVIaWdobGlnaHQ7CistICh2b2lk
KXN1c3BlbmRPdGhlclBhZ2VzV2hpbGVQYXVzZWQ7CiBAZW5kCiAKICNwcmFnbWEgbWFyayAtCkBA
IC0xNDQsNiArMTQ1LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp1cGRhdGVXaW5kb3dU
aXQKICAgICBbW21fd2luZG93Q29udHJvbGxlci5nZXQoKSB3aW5kb3ddIHNldFRpdGxlOnRpdGxl
XTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN1c3BlbmRPdGhlclBhZ2VzV2hpbGVQ
YXVzZWQoKQoreworICAgIFttX3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc3VzcGVuZE90aGVyUGFn
ZXNXaGlsZVBhdXNlZF07Cit9CisKICNwcmFnbWEgbWFyayAtCiAKICNkZWZpbmUgV2ViS2l0SW5z
cGVjdG9yQXR0YWNoZWRWaWV3SGVpZ2h0S2V5IEAiV2ViS2l0SW5zcGVjdG9yQXR0YWNoZWRWaWV3
SGVpZ2h0IgpAQCAtMTc3LDYgKzE4Myw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp1cGRh
dGVXaW5kb3dUaXQKICAgICBbX3dlYlZpZXcgc2V0UHJvaGliaXRzTWFpbkZyYW1lU2Nyb2xsaW5n
OllFU107CiAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07CiAKKyAgICBDRlJ1bkxv
b3BBZGRDb21tb25Nb2RlKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgKENGU3RyaW5nUmVmKUAiUGF1
c2VkSW5zcGVjdG9yRGVidWdnZXIiKTsKKyAgICBbX3dlYlZpZXcgc2NoZWR1bGVJblJ1bkxvb3A6
W05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gZm9yTW9kZTpAIlBhdXNlZEluc3BlY3RvckRlYnVn
Z2VyIl07CisKICAgICBbcHJlZmVyZW5jZXMgcmVsZWFzZV07CiAKICAgICBOU1N0cmluZyAqcGF0
aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJd
IHBhdGhGb3JSZXNvdXJjZTpAImluc3BlY3RvciIgb2ZUeXBlOkAiaHRtbCIgaW5EaXJlY3Rvcnk6
QCJpbnNwZWN0b3IiXTsKQEAgLTQwMiw2ICs0MTEsMjcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnVwZGF0ZVdpbmRvd1RpdAogCiAjcHJhZ21hIG1hcmsgLQogCistICh2b2lkKXN1c3BlbmRP
dGhlclBhZ2VzV2hpbGVQYXVzZWQKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyICppbnNwZWN0
b3JDb250cm9sbGVyID0gW19pbnNwZWN0ZWRXZWJWaWV3IHBhZ2VdLT5pbnNwZWN0b3JDb250cm9s
bGVyKCk7CisKKyAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKKyAgICB3aGls
ZSAoaW5zcGVjdG9yQ29udHJvbGxlci0+cGF1c2VkKCkpIHsKKyAgICAgICAgTlNFdmVudCAqZXZl
bnQgPSBbTlNBcHAgbmV4dEV2ZW50TWF0Y2hpbmdNYXNrOk5TQW55RXZlbnRNYXNrIHVudGlsRGF0
ZTpbTlNEYXRlIGRpc3RhbnRGdXR1cmVdIGluTW9kZTpOU01vZGFsUGFuZWxSdW5Mb29wTW9kZSBk
ZXF1ZXVlOllFU107CisgICAgICAgIE5TUG9pbnQgbG9jYXRpb25Gb3JIaXRUZXN0ID0gW193ZWJW
aWV3IGNvbnZlcnRQb2ludDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd10gZnJvbVZpZXc6bmlsXTsK
KyAgICAgICAgTlNMb2coQCIlQCAlQCIsIE5TU3RyaW5nRnJvbVBvaW50KGxvY2F0aW9uRm9ySGl0
VGVzdCksIFtfd2ViVmlldyBoaXRUZXN0OmxvY2F0aW9uRm9ySGl0VGVzdF0pOworICAgICAgICBp
ZiAoW2V2ZW50IHdpbmRvd10gPT0gW3NlbGYgd2luZG93XSB8fCBbX3dlYlZpZXcgaGl0VGVzdDps
b2NhdGlvbkZvckhpdFRlc3RdKQorICAgICAgICAgICAgW05TQXBwIHNlbmRFdmVudDpldmVudF07
CisgICAgfQorCisvKiAgICBOU01vZGFsU2Vzc2lvbiBzZXNzaW9uID0gW05TQXBwIGJlZ2luTW9k
YWxTZXNzaW9uRm9yV2luZG93OltzZWxmIHdpbmRvd11dOworICAgIHdoaWxlIChpbnNwZWN0b3JD
b250cm9sbGVyLT5wYXVzZWQoKSkKKyAgICAgICAgW05TQXBwIHJ1bk1vZGFsU2Vzc2lvbjpzZXNz
aW9uXTsKKyAgICBbTlNBcHAgZW5kTW9kYWxTZXNzaW9uOnNlc3Npb25dOyAqLworfQorCisjcHJh
Z21hIG1hcmsgLQorCiAtICh2b2lkKWF0dGFjaAogewogICAgIGlmIChfYXR0YWNoZWRUb0luc3Bl
Y3RlZFdlYlZpZXcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19836</attachid>
            <date>2008-03-17 10:52:17 -0700</date>
            <delta_ts>2008-04-02 11:01:17 -0700</delta_ts>
            <desc>Make JavaScriptDebugListeners able to listen to particular Pages</desc>
            <filename>0002-Make-it-possible-for-JavaScriptDebugListener.patch</filename>
            <type>text/plain</type>
            <size>12060</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBiZjE5Mjg5Y2JmM2JiMjJjZmM2ZmMyOTE1MjBlY2U1NDc0ZDZiY2E4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDE3IE1hciAyMDA4IDEzOjI1OjM3IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgTWFr
ZSBpdCBwb3NzaWJsZSBmb3IgSmF2YVNjcmlwdERlYnVnTGlzdGVuZXJzIHRvIGxpc3RlbiB0byBz
cGVjaWZpYyBQYWdlcwoKICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIgbm93IGhhcyBvdmVy
bG9hZHMgb2YgaXRzCiAgICAgICAgYWRkTGlzdGVuZXIvcmVtb3ZlTGlzdGVuZXIgbWV0aG9kcyB0
aGF0IHRha2UgYSBQYWdlKiB0byBpbmRpY2F0ZSBmb3IKICAgICAgICB3aGljaCBQYWdlIHRoZSBK
YXZhU2NyaXB0RGVidWdMaXN0ZW5lciB3aXNoZXMgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KCiAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6
On5KYXZhU2NyaXB0RGVidWdTZXJ2ZXIpOiBEZWxldGUgYWxsCiAgICAgICAgTGlzdGVuZXJTZXRz
IGJlaW5nIGhlbGQgaW4gbV9wYWdlTGlzdGVuZXJzTWFwLgogICAgICAgIChXZWJDb3JlOjpKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKTogQ2hhbmdlZCB0byBjYWxsCiAgICAgICAg
aGFzTGlzdGVuZXJzKCkuCiAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVtb3ZlTGlzdGVuZXIpOiBEaXR0by4KICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVn
U2VydmVyOjphZGRMaXN0ZW5lcik6IEFkZGVkLiBUaGlzIG92ZXJsb2FkCiAgICAgICAgdGFrZXMg
YSBQYWdlKiBhbmQgcHV0cyB0aGUgbGlzdGVuZXIgaW4gdGhlIGFwcHJvcHJpYXRlIExpc3RlbmVy
U2V0CiAgICAgICAgd2l0aGluIG1fcGFnZUxpc3RlbmVyc01hcC4gVGhlIExpc3RlbmVyU2V0IGlz
IGFsbG9jYXRlZCBhbmQgYWRkZWQgdG8KICAgICAgICBtX3BhZ2VMaXN0ZW5lcnNNYXAgd2hlbiBp
dHMgZmlyc3QgbGlzdGVuZXIgaXMgYWRkZWQuCiAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIpOiBBZGRlZC4gVGhpcyBvdmVybG9hZAogICAgICAg
IHRha2VzIGEgUGFnZSogYW5kIHJlbW92ZXMgdGhlIGxpc3RlbmVyIGZyb20gdGhlIGFwcHJvcHJp
YXRlCiAgICAgICAgTGlzdGVuZXJTZXQgaW4gbV9wYWdlTGlzdGVuZXJzTWFwLiBUaGUgTGlzdGVu
ZXJTZXQgaXMgZGVsZXRlZCBhbmQKICAgICAgICByZW1vdmVkIGZyb20gbV9wYWdlTGlzdGVuZXJz
TWFwIHdoZW4gaXRzIGxhc3QgbGlzdGVuZXIgaXMgcmVtb3ZlZC4KICAgICAgICAoV2ViQ29yZTo6
dG9QYWdlKTogQWRkZWQuIFJldHJpZXZlcyB0aGUgcGFyZW50IFBhZ2UgZnJvbSBhbiBFeGVjU3Rh
dGUuCiAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2Vk
KTogQ2hhbmdlZCB0byBjYWxsCiAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZS9kaXNwYXRj
aERpZEZhaWxUb1BhcnNlU291cmNlIGZvciBib3RoIHRoZQogICAgICAgIGdsb2JhbCBsaXN0ZW5l
cnMgYW5kIHRoZSBQYWdlIGxpc3RlbmVycy4KICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKTogQWRkZWQuIFRoaXMgY29kZSB3YXMgZXh0cmFjdGVkCiAgICAgICAg
ZnJvbSB0aGUgSmF2YVNjcmlwdERlYnVnU2VydmVyIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lLgog
ICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25U
b0xpc3RlbmVycyk6IENhbGwKICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMgZm9y
IGJvdGggdGhlIGdsb2JhbCBsaXN0ZW5lcnMgYW5kIHRoZSBQYWdlCiAgICAgICAgbGlzdGVuZXJz
LgogICAgICAgICogcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaDoKICAgICAgICAgIC0gQWRk
ZWQgZGVjbGFyYXRpb25zIGZvciBuZXcgbWV0aG9kcy4KICAgICAgICAgIC0gTWFkZSBKYXZhU2Ny
aXB0RXhlY3V0aW9uQ2FsbGJhY2sgdHlwZWRlZiBwdWJsaWMgc28gdGhhdCBpdCBjb3VsZAogICAg
ICAgICAgICBiZSB1c2VkIGJ5IGEgaGVscGVyIG1ldGhvZC4KICAgICAgICAgIC0gQWRkZWQgbmV3
IG1fcGFnZUxpc3RlbmVyc01hcCBtZW1iZXIuCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDM5ICsrKysrKysrKysrCiBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmNwcCB8ICAxMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0K
IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCAgIHwgICAgOSArKystCiAzIGZp
bGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc3N2E3NGYu
LjE4ODUwMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMDgtMDMtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIEphdmFTY3JpcHREZWJ1
Z0xpc3RlbmVycyB0byBsaXN0ZW4gdG8gc3BlY2lmaWMgUGFnZXMKKworICAgICAgICBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXIgbm93IGhhcyBvdmVybG9hZHMgb2YgaXRzCisgICAgICAgIGFkZExpc3Rl
bmVyL3JlbW92ZUxpc3RlbmVyIG1ldGhvZHMgdGhhdCB0YWtlIGEgUGFnZSogdG8gaW5kaWNhdGUg
Zm9yCisgICAgICAgIHdoaWNoIFBhZ2UgdGhlIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyIHdpc2hl
cyB0byByZWNlaXZlIG1lc3NhZ2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjp+SmF2YVNjcmlwdERlYnVnU2VydmVy
KTogRGVsZXRlIGFsbAorICAgICAgICBMaXN0ZW5lclNldHMgYmVpbmcgaGVsZCBpbiBtX3BhZ2VM
aXN0ZW5lcnNNYXAuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFk
ZExpc3RlbmVyKTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIGhhc0xpc3RlbmVycygpLgorICAg
ICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5l
cik6IEFkZGVkLiBUaGlzIG92ZXJsb2FkCisgICAgICAgIHRha2VzIGEgUGFnZSogYW5kIHB1dHMg
dGhlIGxpc3RlbmVyIGluIHRoZSBhcHByb3ByaWF0ZSBMaXN0ZW5lclNldAorICAgICAgICB3aXRo
aW4gbV9wYWdlTGlzdGVuZXJzTWFwLiBUaGUgTGlzdGVuZXJTZXQgaXMgYWxsb2NhdGVkIGFuZCBh
ZGRlZCB0bworICAgICAgICBtX3BhZ2VMaXN0ZW5lcnNNYXAgd2hlbiBpdHMgZmlyc3QgbGlzdGVu
ZXIgaXMgYWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJl
bW92ZUxpc3RlbmVyKTogQWRkZWQuIFRoaXMgb3ZlcmxvYWQKKyAgICAgICAgdGFrZXMgYSBQYWdl
KiBhbmQgcmVtb3ZlcyB0aGUgbGlzdGVuZXIgZnJvbSB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAg
TGlzdGVuZXJTZXQgaW4gbV9wYWdlTGlzdGVuZXJzTWFwLiBUaGUgTGlzdGVuZXJTZXQgaXMgZGVs
ZXRlZCBhbmQKKyAgICAgICAgcmVtb3ZlZCBmcm9tIG1fcGFnZUxpc3RlbmVyc01hcCB3aGVuIGl0
cyBsYXN0IGxpc3RlbmVyIGlzIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1BhZ2UpOiBB
ZGRlZC4gUmV0cmlldmVzIHRoZSBwYXJlbnQgUGFnZSBmcm9tIGFuIEV4ZWNTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKTogQ2hhbmdl
ZCB0byBjYWxsCisgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UvZGlzcGF0Y2hEaWRGYWls
VG9QYXJzZVNvdXJjZSBmb3IgYm90aCB0aGUKKyAgICAgICAgZ2xvYmFsIGxpc3RlbmVycyBhbmQg
dGhlIFBhZ2UgbGlzdGVuZXJzLgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hGdW5jdGlvblRv
TGlzdGVuZXJzKTogQWRkZWQuIFRoaXMgY29kZSB3YXMgZXh0cmFjdGVkCisgICAgICAgIGZyb20g
dGhlIEphdmFTY3JpcHREZWJ1Z1NlcnZlciBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlz
dGVuZXJzKTogQ2FsbAorICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMgZm9yIGJv
dGggdGhlIGdsb2JhbCBsaXN0ZW5lcnMgYW5kIHRoZSBQYWdlCisgICAgICAgIGxpc3RlbmVycy4K
KyAgICAgICAgKiBwYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAgIC0gQWRk
ZWQgZGVjbGFyYXRpb25zIGZvciBuZXcgbWV0aG9kcy4KKyAgICAgICAgICAtIE1hZGUgSmF2YVNj
cmlwdEV4ZWN1dGlvbkNhbGxiYWNrIHR5cGVkZWYgcHVibGljIHNvIHRoYXQgaXQgY291bGQKKyAg
ICAgICAgICAgIGJlIHVzZWQgYnkgYSBoZWxwZXIgbWV0aG9kLgorICAgICAgICAgIC0gQWRkZWQg
bmV3IG1fcGFnZUxpc3RlbmVyc01hcCBtZW1iZXIuCisKIDIwMDgtMDMtMTcgIFJvZG5leSBEYXdl
cyAgPGRvYmV5QHdheW9mdGhlbW9ua2V5LmNvbT4KIAogICAgICAgICBGaXggR1RLKyBidWlsZCBm
cm9tIHIzMTA5NC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmQz
MjRhYS4uYThjYTJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAg
LTU0LDExICs1NCwxMiBAQCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OkphdmFTY3JpcHREZWJ1Z1Nl
cnZlcigpCiAKIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6fkphdmFTY3JpcHREZWJ1Z1NlcnZlcigp
CiB7CisgICAgZGVsZXRlQWxsVmFsdWVzKG1fcGFnZUxpc3RlbmVyc01hcCk7CiB9CiAKIHZvaWQg
SmF2YVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihKYXZhU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIpCiB7Ci0gICAgaWYgKG1fbGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICBpZiAo
IWhhc0xpc3RlbmVycygpKQogICAgICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKHRo
aXMpOwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKQEAgLTY3LDEzICs2OCw1MiBA
QCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyKQogdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxp
c3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBtX2xpc3Rl
bmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCisg
ICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQ
YWdlcygwKTsKK30KKwordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKEph
dmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnZSkKK3sKKyAgICBBU1NF
UlRfQVJHKHBhZ2UsIHBhZ2UpOworCisgICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAg
UGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcyh0aGlzKTsKKworICAgIFBhZ2VMaXN0ZW5lcnNN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmZpbmQocGFnZSk7CisgICAgaWYg
KGl0ID09IG1fcGFnZUxpc3RlbmVyc01hcC5lbmQoKSkgeworICAgICAgICBwYWlyPFBhZ2VMaXN0
ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRk
KHBhZ2UsIG5ldyBMaXN0ZW5lclNldCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQuc2Vjb25kKTsK
KyAgICAgICAgaXQgPSByZXN1bHQuZmlyc3Q7CisgICAgfQorICAgIExpc3RlbmVyU2V0KiBsaXN0
ZW5lcnMgPSBpdC0+c2Vjb25kOworCisgICAgbGlzdGVuZXJzLT5hZGQobGlzdGVuZXIpOworfQor
Cit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoSmF2YVNjcmlwdERl
YnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWdlKQoreworICAgIEFTU0VSVF9BUkcocGFn
ZSwgcGFnZSk7CisKKyAgICBQYWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZUxp
c3RlbmVyc01hcC5maW5kKHBhZ2UpOworICAgIGlmIChpdCA9PSBtX3BhZ2VMaXN0ZW5lcnNNYXAu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBp
dC0+c2Vjb25kOworCisgICAgbGlzdGVuZXJzLT5yZW1vdmUobGlzdGVuZXIpOworCisgICAgaWYg
KGxpc3RlbmVycy0+aXNFbXB0eSgpKSB7CisgICAgICAgIG1fcGFnZUxpc3RlbmVyc01hcC5yZW1v
dmUoaXQpOworICAgICAgICBkZWxldGUgbGlzdGVuZXJzOworICAgIH0KKworICAgIGlmICghaGFz
TGlzdGVuZXJzKCkpCiAgICAgICAgIFBhZ2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXMoMCk7CiB9
CiAKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpwYWdlQ3JlYXRlZChQYWdlKiBwYWdlKQog
ewotICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCisgICAgaWYgKCFoYXNMaXN0ZW5lcnMo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+c2V0RGVidWdnZXIodGhpcyk7CkBAIC05
NSwzMyArMTM1LDc2IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShj
b25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBFeGVjU3RhdGUqCiAgICAgICAgIGNvcHlbaV0t
PmZhaWxlZFRvUGFyc2VTb3VyY2Uoc3RhdGUsIHNvdXJjZSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBz
b3VyY2VVUkwsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAorc3RhdGljIFBhZ2UqIHRv
UGFnZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEFTU0VSVF9BUkcoc3RhdGUsIHN0YXRlKTsK
KworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHN0YXRlLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCkpOworICAgIEFTU0VSVCh3aW5kb3cpOworCisgICAgcmV0dXJuIHdpbmRv
dy0+aW1wbCgpLT5mcmFtZSgpLT5wYWdlKCk7Cit9CisKIGJvb2wgSmF2YVNjcmlwdERlYnVnU2Vy
dmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNvdXJjZUlELCBjb25zdCBV
U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGlu
ZU51bWJlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKQogewog
ICAgIGlmIChtX2NhbGxpbmdMaXN0ZW5lcnMpCiAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
UGFnZSogcGFnZSA9IHRvUGFnZShzdGF0ZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKwogICAgIG1fY2FsbGluZ0xpc3RlbmVycyA9IHRydWU7CiAKLSAgICBBU1NFUlQo
IW1fbGlzdGVuZXJzLmlzRW1wdHkoKSk7Ci0gICAgaWYgKGVycm9yTGluZSA9PSAtMSkKLSAgICAg
ICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShtX2xpc3RlbmVycywgc3RhdGUsIHNvdXJjZSwgc3Rh
cnRpbmdMaW5lTnVtYmVyLCBzb3VyY2VVUkwsIHNvdXJjZUlEKTsKLSAgICBlbHNlCi0gICAgICAg
IGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShtX2xpc3RlbmVycywgc3RhdGUsIHNvdXJjZSwg
c3RhcnRpbmdMaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsK
KyAgICBBU1NFUlQoaGFzTGlzdGVuZXJzKCkpOworCisgICAgYm9vbCBpc0Vycm9yID0gZXJyb3JM
aW5lICE9IC0xOworCisgICAgaWYgKCFtX2xpc3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKGlzRXJyb3IpCisgICAgICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UobV9s
aXN0ZW5lcnMsIHN0YXRlLCBzb3VyY2UsIHN0YXJ0aW5nTGluZU51bWJlciwgc291cmNlVVJMLCBl
cnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRpc3Bh
dGNoRGlkUGFyc2VTb3VyY2UobV9saXN0ZW5lcnMsIHN0YXRlLCBzb3VyY2UsIHN0YXJ0aW5nTGlu
ZU51bWJlciwgc291cmNlVVJMLCBzb3VyY2VJRCk7CisgICAgfQorCisgICAgaWYgKExpc3RlbmVy
U2V0KiBwYWdlTGlzdGVuZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdldChwYWdlKSkgeworICAg
ICAgICBBU1NFUlQoIXBhZ2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7CisgICAgICAgIGlmIChpc0Vy
cm9yKQorICAgICAgICAgICAgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKCpwYWdlTGlzdGVu
ZXJzLCBzdGF0ZSwgc291cmNlLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZVVSTCwgZXJyb3JM
aW5lLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkaXNwYXRjaERp
ZFBhcnNlU291cmNlKCpwYWdlTGlzdGVuZXJzLCBzdGF0ZSwgc291cmNlLCBzdGFydGluZ0xpbmVO
dW1iZXIsIHNvdXJjZVVSTCwgc291cmNlSUQpOworICAgIH0KIAogICAgIG1fY2FsbGluZ0xpc3Rl
bmVycyA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBkaXNwYXRj
aEZ1bmN0aW9uVG9MaXN0ZW5lcnMoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSmF2YVNj
cmlwdERlYnVnU2VydmVyOjpKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIEV4
ZWNTdGF0ZSogc3RhdGUsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit7CisgICAgVmVj
dG9yPEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gY29weTsKKyAgICBjb3B5VG9WZWN0b3IobGlz
dGVuZXJzLCBjb3B5KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvcHkuc2l6ZSgpOyAr
K2kpCisgICAgICAgIChjb3B5W2ldLT4qY2FsbGJhY2spKHN0YXRlLCBzb3VyY2VJRCwgbGluZU51
bWJlcik7Cit9CisKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1bmN0aW9u
VG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBFeGVjU3Rh
dGUqIHN0YXRlLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewogICAgIGlmIChtX2Nh
bGxpbmdMaXN0ZW5lcnMpCiAgICAgICAgIHJldHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSB0b1Bh
Z2Uoc3RhdGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jYWxs
aW5nTGlzdGVuZXJzID0gdHJ1ZTsKIAotICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuaXNFbXB0eSgp
KTsKLSAgICBWZWN0b3I8SmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5OwotICAgIGNvcHlU
b1ZlY3RvcihtX2xpc3RlbmVycywgY29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3B5LnNpemUoKTsgKytpKQotICAgICAgICAoY29weVtpXS0+KmNhbGxiYWNrKShzdGF0ZSwgc291
cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIEFTU0VSVChoYXNMaXN0ZW5lcnMoKSk7CisKKyAgICBX
ZWJDb3JlOjpkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMobV9saXN0ZW5lcnMsIGNhbGxiYWNr
LCBzdGF0ZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIGlmIChMaXN0ZW5lclNldCogcGFn
ZUxpc3RlbmVycyA9IG1fcGFnZUxpc3RlbmVyc01hcC5nZXQocGFnZSkpIHsKKyAgICAgICAgQVNT
RVJUKCFwYWdlTGlzdGVuZXJzLT5pc0VtcHR5KCkpOworICAgICAgICBXZWJDb3JlOjpkaXNwYXRj
aEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKnBhZ2VMaXN0ZW5lcnMsIGNhbGxiYWNrLCBzdGF0ZSwgc291
cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIH0KIAogICAgIG1fY2FsbGluZ0xpc3RlbmVycyA9IGZh
bHNlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5o
IGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDMzMDFmZDguLjJi
NTdmMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaAor
KysgYi9XZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTQ3LDE1ICs0Nywy
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYWRkTGlzdGVuZXIoSmF2YVNj
cmlwdERlYnVnTGlzdGVuZXIqKTsKICAgICAgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihKYXZhU2Ny
aXB0RGVidWdMaXN0ZW5lciopOwogCisgICAgICAgIHZvaWQgYWRkTGlzdGVuZXIoSmF2YVNjcmlw
dERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CisgICAgICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSmF2
YVNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CisKICAgICAgICAgdm9pZCBwYWdlQ3JlYXRl
ZChQYWdlKik7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PEphdmFTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gTGlzdGVuZXJTZXQ7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKEtKUzo6RXhlY1N0YXRlKiwg
aW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICAgICAgfkphdmFTY3JpcHREZWJ1Z1NlcnZlcigp
OwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXI6OipKYXZh
U2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKEtKUzo6RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7CisgICAgICAgIGJvb2wgaGFzTGlzdGVuZXJzKCkgY29uc3QgeyByZXR1
cm4gIW1fbGlzdGVuZXJzLmlzRW1wdHkoKSB8fCAhbV9wYWdlTGlzdGVuZXJzTWFwLmlzRW1wdHko
KTsgfQorCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3Jp
cHRFeGVjdXRpb25DYWxsYmFjaywgS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQsIGludCBs
aW5lTnVtYmVyKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc291cmNlUGFyc2VkKEtKUzo6RXhl
Y1N0YXRlKiwgaW50IHNvdXJjZUlELCBjb25zdCBLSlM6OlVTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgS0pTOjpVU3RyaW5nJiBzb3VyY2UsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGludCBlcnJv
ckxpbmUsIGNvbnN0IEtKUzo6VVN0cmluZyYgZXJyb3JNc2cpOwpAQCAtNjQsNiArNjksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCByZXR1cm5FdmVudChLSlM6
OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIEtKUzo6SlNPYmplY3Qq
IGZ1bmN0aW9uKTsKICAgICAgICAgdmlydHVhbCBib29sIGV4Y2VwdGlvbihLSlM6OkV4ZWNTdGF0
ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9u
KTsKIAorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0Kj4gUGFnZUxp
c3RlbmVyc01hcDsKKyAgICAgICAgUGFnZUxpc3RlbmVyc01hcCBtX3BhZ2VMaXN0ZW5lcnNNYXA7
CiAgICAgICAgIExpc3RlbmVyU2V0IG1fbGlzdGVuZXJzOwogICAgICAgICBib29sIG1fY2FsbGlu
Z0xpc3RlbmVyczsKICAgICB9OwotLSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19837</attachid>
            <date>2008-03-17 10:53:21 -0700</date>
            <delta_ts>2008-03-17 10:54:02 -0700</delta_ts>
            <desc>[WIP] Add an EventLoop abstraction (Windows-only right now)</desc>
            <filename>0003-Add-EventLoop-class-Windows-only-for-now.patch</filename>
            <type>text/plain</type>
            <size>5199</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBhNGYyOTBhZmMwMGY2NjBjMjg2YjVjZTc2NWJkMmMzNzUzZWMyNDMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDE3IE1hciAyMDA4IDEzOjQxOjE4IC0wNDAwClN1YmplY3Q6IFtQRlJdIEFkZCBFdmVudExv
b3AgY2xhc3MgKFdpbmRvd3Mtb25seSBmb3Igbm93KQoKLS0tCiBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIHwgICAxMCArKysrKystCiBXZWJDb3JlL3BsYXRmb3JtL0V2ZW50
TG9vcC5oICAgICAgICAgIHwgICA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAgfCAgIDQzICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCAx
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vRXZlbnRM
b29wLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3dpbi9FdmVudExvb3BX
aW4uY3BwCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOGE1ZDhmMC4u
ZDhjYjUwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0xLDQgKzEs
NCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUxIj8+DQogPFZpc3VhbFN0dWRp
b1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQogCVZlcnNpb249IjguMDAiDQpA
QCAtMzYxNSw2ICszNjE1LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXEV2ZW50TG9vcC5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRmlsZUNob29z
ZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM5MDYsNiArMzkxMCwxMCBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cd2luXEV2ZW50TG9vcFdpbi5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJ
PEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cd2luXEZpbGVDaG9vc2VyV2lu
LmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vRXZlbnRMb29wLmggYi9XZWJDb3JlL3BsYXRmb3JtL0V2ZW50TG9vcC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ODdjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0V2ZW50TG9vcC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV2ZW50TG9vcF9oCisjZGVm
aW5lIEV2ZW50TG9vcF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRXZlbnRMb29wIDogTm9uY29weWFibGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRXZlbnRMb29wKCkKKyAgICAgICAgICAgIDogbV9lbmRlZChmYWxz
ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjeWNsZSgpOworICAgICAg
ICBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmRlZDsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtX2VuZGVkOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEV2ZW50TG9vcF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9FdmVudExvb3BXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRXZlbnRMb29wV2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWUxMDdkCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRXZlbnRMb29wV2luLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgRXZlbnRMb29wOjpjeWNsZSgpCit7CisgICAgTVNHIG1zZzsKKyAgICBp
ZiAoIUdldE1lc3NhZ2UoJm1zZywgMCwgMCwgMCkpIHsKKyAgICAgICAgbV9lbmRlZCA9IHRydWU7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOwor
ICAgIERpc3BhdGNoTWVzc2FnZSgmbXNnKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
LSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19838</attachid>
            <date>2008-03-17 10:55:13 -0700</date>
            <delta_ts>2008-03-17 10:55:13 -0700</delta_ts>
            <desc>[WIP] Add Widget::isPluginView</desc>
            <filename>0001-Add-Widget-isPluginView.patch</filename>
            <type>text/plain</type>
            <size>1226</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAwMWRlZGI4OTUxMTY3Mjc0ZTI3ZGRiNjNjZWQ1MDRhZGI1ZDU2OWIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDcgTWFyIDIwMDggMTI6MTU6MjQgLTA1MDAKU3ViamVjdDogW1BGUl0gQWRkIFdpZGdldDo6
aXNQbHVnaW5WaWV3CgotLS0KIFdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgfCAgICAyICsr
CiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIHwgICAgMiArKwogMiBmaWxlcyBjaGFuZ2Vk
LCA0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggZTVjN2Fh
Yy4uN2NlMGFmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xNDEsNiArMTQxLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIHN1cHByZXNzSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oYm9vbCk7CiAKKyAgICAgICAgdmlydHVh
bCBib29sIGlzUGx1Z2luVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjUxYTdhNi4uOTI1ZWJi
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xMjgsNiArMTI4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVG9XaW5kb3coKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRldGFjaEZyb21XaW5kb3coKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQ
bHVnaW5WaWV3KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgICAgIExSRVNVTFQgd25k
UHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSk7CiAgICAgICAgIFdORFBST0MgcGx1Z2luV25kUHJvYygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luV25kUHJvYzsgfQogCi0tIAoxLjUuNC4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19839</attachid>
            <date>2008-03-17 10:59:05 -0700</date>
            <delta_ts>2008-03-17 10:59:05 -0700</delta_ts>
            <desc>[WIP] Make the Inspector able to pause/step JS code</desc>
            <filename>0004-WIP-JS-debugger-in-the-Inspector.patch</filename>
            <type>text/plain</type>
            <size>20960</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAwNmQwNmFkOGIwYmM4OTE5ZjY4NzAxOGRjNmFmZGZjN2MwNDE4NmRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDE3IE1hciAyMDA4IDEzOjQ2OjQwIC0wNDAwClN1YmplY3Q6IFtQRlJdIFtXSVBdIEpTIGRl
YnVnZ2VyIGluIHRoZSBJbnNwZWN0b3IKCi0tLQogV2ViQ29yZS9jc3Mvdmlldy1zb3VyY2UuY3Nz
ICAgICAgICAgICB8ICAgIDUgKwogV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
ICB8ICAyNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BhZ2Uv
SW5zcGVjdG9yQ29udHJvbGxlci5oICAgIHwgICAyOSArKysrLQogV2ViQ29yZS9wYWdlL2luc3Bl
Y3Rvci9Tb3VyY2VQYW5lbC5qcyB8ICAgMjggKysrKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9p
bnNwZWN0b3IuanMgICB8ICAgOTUgKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQyMyBp
bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL3Zp
ZXctc291cmNlLmNzcyBiL1dlYkNvcmUvY3NzL3ZpZXctc291cmNlLmNzcwppbmRleCA4ZDM0MjEx
Li42MzlmNTU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy92aWV3LXNvdXJjZS5jc3MKKysrIGIv
V2ViQ29yZS9jc3Mvdmlldy1zb3VyY2UuY3NzCkBAIC00MCw2ICs0MCwxMSBAQCB0ZCB7CiAgICAg
dmVydGljYWwtYWxpZ246IGJhc2VsaW5lCiB9CiAKK3RyLndlYmtpdC1jdXJyZW50LWxpbmUgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMTI4LCAwLjUpOworICAgIG91dGxpbmU6
IDFweCBzb2xpZCByZ2IoMCwgMCwgMTI4KTsKK30KKwogLndlYmtpdC1saW5lLWd1dHRlci1iYWNr
ZHJvcCwgLndlYmtpdC1saW5lLW51bWJlciB7CiAgICAgcGFkZGluZzogMCAycHggIWltcG9ydGFu
dDsKICAgICBtaW4td2lkdGg6IDIxcHg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggMDM2OTcyNi4uZWI4ODRhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQ3LDcgKzQ4LDExIEBACiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1JhbmdlLmgiCisjaW5j
bHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgor
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC01OCw2ICs2Myw3IEBACiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4ZWNT
dGF0ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWYuaD4KQEAgLTY4LDggKzc0LDEzIEBACiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgog
I2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBLSlM7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBIZWxwZXIgRnVuY3Rpb25zCisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGNhbGxTaW1wbGVGdW5jdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQogewogICAgIEFTU0VS
VF9BUkcoY29udGV4dCwgY29udGV4dCk7CkBAIC01NzcsNiArNTg4LDUxIEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIG1vdmVCeVVucmVzdHJpY3RlZChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAv
KmZ1bmN0aW9uKi8sCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIGlzUGF1c2VkKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9u
Ki8pCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW5zcGVjdG9yQ29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKKyAgICBwcmludGYoImlzUGF1c2VkXG4iKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VCb29sZWFuKGN0eCwgY29udHJvbGxlci0+cGF1c2VkKCkpOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBwYXVzZUphdmFTY3JpcHQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypm
dW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykK
K3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxJbnNwZWN0b3JDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOworCisgICAgcHJpbnRmKCJwYXVzZUphdmFTY3JpcHRcbiIpOworICAgIGNvbnRyb2xs
ZXItPnBhdXNlU2NyaXB0KCk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc3RlcEphdmFTY3JpcHQoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogLypleGNlcHRpb24qLykKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxJbnNwZWN0b3JDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2
YXRlKHRoaXNPYmplY3QpKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgcHJpbnRmKCJzdGVwSmF2YVNjcmlwdFxu
Iik7CisgICAgY29udHJvbGxlci0+c3RlcFNjcmlwdCgpOworCisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlc3VtZUphdmFTY3Jp
cHQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKK3sKKyAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxJbnNwZWN0b3JDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgcHJpbnRm
KCJyZXN1bWVKYXZhU2NyaXB0XG4iKTsKKyAgICBjb250cm9sbGVyLT5yZXN1bWVTY3JpcHQoKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworfQorCiAjcHJhZ21hIG1h
cmsgLQogI3ByYWdtYSBtYXJrIEluc3BlY3RvckNvbnRyb2xsZXIgQ2xhc3MKIApAQCAtNTg4LDYg
KzY0NCw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NvbnRyb2xsZXJTY3JpcHRP
YmplY3QoMCkKICAgICAsIG1fc2NyaXB0Q29udGV4dCgwKQogICAgICwgbV93aW5kb3dWaXNpYmxl
KGZhbHNlKQorICAgICwgbV9zY3JpcHRQYXVzZWQoZmFsc2UpCisgICAgLCBtX3NjcmlwdFN0ZXBw
aW5nKGZhbHNlKQogICAgICwgbV9zaG93QWZ0ZXJWaXNpYmxlKEZvY3VzZWROb2RlRG9jdW1lbnRQ
YW5lbCkKICAgICAsIG1fbmV4dElkZW50aWZpZXIoLTIpCiB7CkBAIC02MTQsNiArNjcyLDkwIEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBkZWxldGVB
bGxWYWx1ZXMobV9jb25zb2xlTWVzc2FnZXMpOwogfQogCisjcHJhZ21hIG1hcmsgLQorI3ByYWdt
YSBtYXJrIERlYnVnTGlzdGVuZXIgQ2FsbGJhY2tzCisKK3N0YXRpYyBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4ganNTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhzdHJpbmcuY2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkpKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRQYXJzZVNvdXJjZShFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGludCBzb3VyY2VJRCkKK3sKKyAgICBKU1ZhbHVlUmVmIHVybFZhbHVlID0gSlNWYWx1
ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCBqc1N0cmluZyhzb3VyY2VVUkwpLmdldCgpKTsK
KyAgICBKU1ZhbHVlUmVmIHNpZFZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250
ZXh0LCBzb3VyY2VJRCk7CisgICAgSlNWYWx1ZVJlZiBzdGFydExpbmVWYWx1ZSA9IEpTVmFsdWVN
YWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKKworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzb3VyY2VQYXJzZWRTdHJpbmcoQWRvcHQsIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJzb3VyY2VQYXJzZWQiKSk7CisgICAgSlNPYmplY3RSZWYg
c291cmNlUGFyc2VkRnVuY3Rpb24gPSBKU1ZhbHVlVG9PYmplY3QobV9zY3JpcHRDb250ZXh0LCBK
U09iamVjdEdldFByb3BlcnR5KG1fc2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QsIHNvdXJj
ZVBhcnNlZFN0cmluZy5nZXQoKSwgMCksIDApOworCisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSA9IHsgdXJsVmFsdWUsIHNpZFZhbHVlLCBzdGFydExpbmVWYWx1ZSB9OworICAgIEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24obV9zY3JpcHRDb250ZXh0LCBzb3VyY2VQYXJzZWRGdW5jdGlvbiwgbV9z
Y3JpcHRPYmplY3QsIDMsIGFyZ3VtZW50cywgMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJjZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBl
cnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworfQorCit2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZEVudGVyQ2FsbEZyYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIGludCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit7CisgICAgSlNWYWx1ZVJlZiBzaWRWYWx1ZSA9IEpT
VmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgc291cmNlSUQpOworICAgIEpTVmFsdWVS
ZWYgbGluZVZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0LCBsaW5lTnVt
YmVyKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzb3VyY2VQYXJzZWRTdHJpbmco
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlbnRlckZ1bmN0aW9uIikpOwor
ICAgIEpTT2JqZWN0UmVmIHNvdXJjZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KG1f
c2NyaXB0Q29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2Ny
aXB0T2JqZWN0LCBzb3VyY2VQYXJzZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKworICAgIEpTVmFs
dWVSZWYgYXJndW1lbnRzW10gPSB7IHNpZFZhbHVlLCBsaW5lVmFsdWUgfTsKKyAgICBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKG1fc2NyaXB0Q29udGV4dCwgc291cmNlUGFyc2VkRnVuY3Rpb24sIG1f
c2NyaXB0T2JqZWN0LCAzLCBhcmd1bWVudHMsIDApOworCisgICAgc3VzcGVuZE90aGVyUGFnZXNX
aGlsZVBhdXNlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxFeGVjdXRl
U3RhdGVtZW50KEV4ZWNTdGF0ZSogc3RhdGUsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
Cit7CisgICAgSlNWYWx1ZVJlZiBzaWRWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0
Q29udGV4dCwgc291cmNlSUQpOworICAgIEpTVmFsdWVSZWYgbGluZVZhbHVlID0gSlNWYWx1ZU1h
a2VOdW1iZXIobV9zY3JpcHRDb250ZXh0LCBsaW5lTnVtYmVyKTsKKworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzb3VyY2VQYXJzZWRTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJ3aWxsRXZhbHVhdGVMaW5lIikpOworICAgIEpTT2JqZWN0UmVmIHNvdXJj
ZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KG1fc2NyaXB0Q29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCBzb3VyY2VQYXJz
ZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKworICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7
IHNpZFZhbHVlLCBsaW5lVmFsdWUgfTsKKyAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKG1fc2Ny
aXB0Q29udGV4dCwgc291cmNlUGFyc2VkRnVuY3Rpb24sIG1fc2NyaXB0T2JqZWN0LCAzLCBhcmd1
bWVudHMsIDApOworCisgICAgc3VzcGVuZE90aGVyUGFnZXNXaGlsZVBhdXNlZCgpOworfQorCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxMZWF2ZUNhbGxGcmFtZShFeGVjU3RhdGUqIHN0
YXRlLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQoreworICAgIEpTVmFsdWVSZWYgc2lk
VmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIHNvdXJjZUlEKTsKKyAg
ICBKU1ZhbHVlUmVmIGxpbmVWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4
dCwgbGluZU51bWJlcik7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlUGFy
c2VkU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXhpdEZ1bmN0
aW9uIikpOworICAgIEpTT2JqZWN0UmVmIHNvdXJjZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRv
T2JqZWN0KG1fc2NyaXB0Q29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRl
eHQsIG1fc2NyaXB0T2JqZWN0LCBzb3VyY2VQYXJzZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKwor
ICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IHNpZFZhbHVlLCBsaW5lVmFsdWUgfTsKKyAg
ICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKG1fc2NyaXB0Q29udGV4dCwgc291cmNlUGFyc2VkRnVu
Y3Rpb24sIG1fc2NyaXB0T2JqZWN0LCAzLCBhcmd1bWVudHMsIDApOworCisgICAgc3VzcGVuZE90
aGVyUGFnZXNXaGlsZVBhdXNlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4
Y2VwdGlvbldhc1JhaXNlZChFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKQoreworICAgIEpTVmFsdWVSZWYgc2lkVmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJlciht
X3NjcmlwdENvbnRleHQsIHNvdXJjZUlEKTsKKyAgICBKU1ZhbHVlUmVmIGxpbmVWYWx1ZSA9IEpT
VmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgbGluZU51bWJlcik7CisgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb25WYWx1ZSA9IHRvUmVmKHN0YXRlLT5leGNlcHRpb24oKSk7CisKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlUGFyc2VkU3RyaW5nKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXhjZXB0aW9uUmFpc2VkIikpOworICAgIEpTT2JqZWN0
UmVmIHNvdXJjZVBhcnNlZEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KG1fc2NyaXB0Q29udGV4
dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCBz
b3VyY2VQYXJzZWRTdHJpbmcuZ2V0KCksIDApLCAwKTsKKworICAgIEpTVmFsdWVSZWYgYXJndW1l
bnRzW10gPSB7IHNpZFZhbHVlLCBsaW5lVmFsdWUsIGV4Y2VwdGlvblZhbHVlIH07CisgICAgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihtX3NjcmlwdENvbnRleHQsIHNvdXJjZVBhcnNlZEZ1bmN0aW9u
LCBtX3NjcmlwdE9iamVjdCwgMywgYXJndW1lbnRzLCAwKTsKKworICAgIHN1c3BlbmRPdGhlclBh
Z2VzV2hpbGVQYXVzZWQoKTsKK30KKworI3ByYWdtYSBtYXJrIC0KKwogYm9vbCBJbnNwZWN0b3JD
b250cm9sbGVyOjplbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdl
LT5zZXR0aW5ncygpLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CkBAIC03ODQsNiArOTI2LDEw
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxl
KCkKICAgICAgICAgeyAibG9jYWxpemVkU3RyaW5nc1VSTCIsIGxvY2FsaXplZFN0cmluZ3MsIGtK
U1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJwbGF0Zm9ybSIsIHBsYXRmb3Jt
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAibW92ZUJ5VW5yZXN0cmlj
dGVkIiwgbW92ZUJ5VW5yZXN0cmljdGVkLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAg
ICAgICAgeyAiaXNQYXVzZWQiLCBpc1BhdXNlZCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
CisgICAgICAgIHsgInBhdXNlU2NyaXB0IiwgcGF1c2VKYXZhU2NyaXB0LCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAic3RlcFNjcmlwdCIsIHN0ZXBKYXZhU2NyaXB0LCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAicmVzdW1lU2NyaXB0IiwgcmVz
dW1lSmF2YVNjcmlwdCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgMCwg
MCwgMCB9CiAgICAgfTsKIApAQCAtODMyLDYgKzk3OCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvdygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYWRkTGlzdGVuZXIodGhpcywgbV9pbnNw
ZWN0ZWRQYWdlKTsKKwogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIG1fcGFnZSA9IG1fY2xp
ZW50LT5jcmVhdGVQYWdlKCk7CiAgICAgICAgIGlmICghbV9wYWdlKQpAQCAtODgwLDYgKzEwMjgs
OCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5yZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworCiAgICAgbV9jbGllbnQt
PmNsb3NlV2luZG93KCk7CiAgICAgaWYgKG1fcGFnZSkKICAgICAgICAgbV9wYWdlLT5zZXRQYXJl
bnRJbnNwZWN0b3JDb250cm9sbGVyKDApOwpAQCAtMTYwMCw2ICsxNzUwLDEyNCBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAog
ICAgIG1fcGFnZS0+Y2hyb21lKCktPnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwYXVzZVNjcmlwdCgpCit7CisgICAgbV9zY3JpcHRQYXVz
ZWQgPSB0cnVlOworICAgIG1fc2NyaXB0U3RlcHBpbmcgPSBmYWxzZTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzdGVwU2NyaXB0KCkKK3sKKyAgICBtX3NjcmlwdFBhdXNlZCA9IGZh
bHNlOworICAgIG1fc2NyaXB0U3RlcHBpbmcgPSB0cnVlOworfQorCit2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnJlc3VtZVNjcmlwdCgpCit7CisgICAgbV9zY3JpcHRQYXVzZWQgPSBmYWxzZTsK
KyAgICBtX3NjcmlwdFN0ZXBwaW5nID0gZmFsc2U7Cit9CisKK2NsYXNzIFBhZ2VHcm91cEphdmFT
Y3JpcHRQYXVzZXIgOiBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgUGFnZUdyb3VwSmF2YVNj
cmlwdFBhdXNlcihQYWdlKik7CisgICAgflBhZ2VHcm91cEphdmFTY3JpcHRQYXVzZXIoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSosIGJvb2wpOworICAg
IHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSosIGJvb2wpOworICAgIHZvaWQgc2V0SmF2
YVNjcmlwdFBhdXNlZChGcmFtZVZpZXcqLCBib29sKTsKKworICAgIFBhZ2UqIG1fcGFnZTsKKyAg
ICBIYXNoTWFwPFJlZlB0cjxGcmFtZT4sIFBhdXNlZFRpbWVvdXRzKj4gbV9wYXVzZWRUaW1lb3V0
czsKK307CisKK1BhZ2VHcm91cEphdmFTY3JpcHRQYXVzZXI6OlBhZ2VHcm91cEphdmFTY3JpcHRQ
YXVzZXIoUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIEFTU0VSVF9BUkco
cGFnZSwgcGFnZSk7CisKKyAgICBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHRydWUpOwor
CisgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gbV9wYWdlLT5ncm91cCgpLnBhZ2Vz
KCk7CisKKyAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcGFnZXMuZW5k
KCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoKml0
LCB0cnVlKTsKK30KKworUGFnZUdyb3VwSmF2YVNjcmlwdFBhdXNlcjo6flBhZ2VHcm91cEphdmFT
Y3JpcHRQYXVzZXIoKQoreworICAgIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoZmFsc2Up
OworCisgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gbV9wYWdlLT5ncm91cCgpLnBh
Z2VzKCk7CisKKyAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcGFnZXMu
ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQo
Kml0LCBmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZUdyb3VwSmF2YVNjcmlwdFBhdXNlcjo6c2V0SmF2
YVNjcmlwdFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKK3sKKyAgICBBU1NFUlRfQVJH
KHBhZ2UsIHBhZ2UpOworCisgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOworCisg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQoZnJhbWUsIHBhdXNlZCk7Cit9CisKK3ZvaWQgUGFnZUdyb3VwSmF2YVNjcmlwdFBhdXNlcjo6
c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJvb2wgcGF1c2VkKQoreworICAgIEFT
U0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKKworICAgIGlmICghZnJhbWUtPnNjcmlwdFByb3h5KCkt
PmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+c2NyaXB0UHJveHko
KS0+c2V0UGF1c2VkKHBhdXNlZCk7CisKKyAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IHRv
SlNET01XaW5kb3coZnJhbWUpKSB7CisgICAgICAgIGlmIChwYXVzZWQpCisgICAgICAgICAgICBt
X3BhdXNlZFRpbWVvdXRzLnNldChmcmFtZSwgd2luZG93LT5wYXVzZVRpbWVvdXRzKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB3aW5kb3ctPnJlc3VtZVRpbWVvdXRzKG1fcGF1c2VkVGlt
ZW91dHMudGFrZShmcmFtZSkpOworICAgIH0KKworICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJh
bWUtPnZpZXcoKSwgcGF1c2VkKTsKK30KKwordm9pZCBQYWdlR3JvdXBKYXZhU2NyaXB0UGF1c2Vy
OjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyogdmlldywgYm9vbCBwYXVzZWQpCit7Cisg
ICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoU2V0PFdpZGdldCo+KiBj
aGlsZHJlbiA9IHN0YXRpY19jYXN0PFNjcm9sbFZpZXcqPih2aWV3KS0+Y2hpbGRyZW4oKTsKKyAg
ICBBU1NFUlQoY2hpbGRyZW4pOworCisgICAgSGFzaFNldDxXaWRnZXQqPjo6aXRlcmF0b3IgZW5k
ID0gY2hpbGRyZW4tPmVuZCgpOworICAgIGZvciAoSGFzaFNldDxXaWRnZXQqPjo6aXRlcmF0b3Ig
aXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gKml0OworICAgICAgICBpZiAoIXdpZGdldC0+aXNQbHVnaW5WaWV3KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHdp
ZGdldCktPnNldEphdmFTY3JpcHRQYXVzZWQocGF1c2VkKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c3VzcGVuZE90aGVyUGFnZXNXaGlsZVBhdXNlZCgpCit7CisgICAg
aWYgKG1fc2NyaXB0UGF1c2VkKSB7CisgICAgICAgIFBhZ2VHcm91cEphdmFTY3JpcHRQYXVzZXIg
cGF1c2VyKG1faW5zcGVjdGVkUGFnZSk7CisgICAgICAgIEV2ZW50TG9vcCBsb29wOworICAgICAg
ICB3aGlsZSAobV9zY3JpcHRQYXVzZWQgJiYgIWxvb3AuZW5kZWQoKSkKKyAgICAgICAgICAgIGxv
b3AuY3ljbGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9zY3JpcHRTdGVwcGluZykgeworICAgICAg
ICBtX3NjcmlwdFN0ZXBwaW5nID0gZmFsc2U7CisgICAgICAgIG1fc2NyaXB0UGF1c2VkID0gdHJ1
ZTsKKyAgICB9Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZHJhd05vZGVIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBD
b2xvciBvdmVybGF5RmlsbENvbG9yKDAsIDAsIDAsIDEyOCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA0NmE1ZGYzLi4yYWY3N2E3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTI5LDEyICsyOSwxOSBAQAogI2lmbmRlZiBJbnNwZWN0b3JDb250cm9sbGVyX2gK
ICNkZWZpbmUgSW5zcGVjdG9yQ29udHJvbGxlcl9oCiAKKyNpbmNsdWRlICJKYXZhU2NyaXB0RGVi
dWdMaXN0ZW5lci5oIgorCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKQEAgLTQzLDE0ICs1MCwxNCBA
QCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBO
b2RlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiAKIHN0cnVjdCBDb25zb2xlTWVzc2FnZTsKIHN0cnVjdCBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlOwogc3RydWN0IEluc3BlY3RvclJlc291cmNlOwotY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyIHsKK2NsYXNzIElu
c3BlY3RvckNvbnRyb2xsZXIgOiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcgbG9uZywgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiA+
IFJlc291cmNlc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwgUmVzb3Vy
Y2VzTWFwKj4gRnJhbWVSZXNvdXJjZXNNYXA7CkBAIC0xMjAsNiArMTI3LDE1IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwogCisgICAg
Ym9vbCBwYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFBhdXNlZDsgfQorICAgIGJvb2wg
c3RlcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0ZXBwaW5nOyB9CisKKyAgICB2b2lk
IHBhdXNlU2NyaXB0KCk7CisgICAgdm9pZCBzdGVwU2NyaXB0KCk7CisgICAgdm9pZCByZXN1bWVT
Y3JpcHQoKTsKKworICAgIHZvaWQgc3VzcGVuZE90aGVyUGFnZXNXaGlsZVBhdXNlZCgpOworCiAg
ICAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJp
dmF0ZToKQEAgLTE1Miw2ICsxNjgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURhdGFi
YXNlU2NyaXB0UmVzb3VyY2UoSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZSopOwogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGludCBzb3VyY2VJRCk7CisgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3Vy
Y2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJDYWxsRnJhbWUo
S0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbEV4ZWN1dGVTdGF0ZW1lbnQoS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExlYXZlQ2FsbEZyYW1l
KEtKUzo6RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdmly
dHVhbCB2b2lkIGV4Y2VwdGlvbldhc1JhaXNlZChLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpOworCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgUGFnZSogbV9wYWdlOwpAQCAtMTY3LDYgKzE5
MCw4IEBAIHByaXZhdGU6CiAgICAgSlNPYmplY3RSZWYgbV9jb250cm9sbGVyU2NyaXB0T2JqZWN0
OwogICAgIEpTQ29udGV4dFJlZiBtX3NjcmlwdENvbnRleHQ7CiAgICAgYm9vbCBtX3dpbmRvd1Zp
c2libGU7CisgICAgYm9vbCBtX3NjcmlwdFBhdXNlZDsKKyAgICBib29sIG1fc2NyaXB0U3RlcHBp
bmc7CiAgICAgU3BlY2lhbFBhbmVscyBtX3Nob3dBZnRlclZpc2libGU7CiAgICAgbG9uZyBsb25n
IG1fbmV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VQYW5lbC5qcyBiL1dlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvU291cmNlUGFuZWwuanMKaW5kZXggMzJkNzg5OS4uNDRkZjBjMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VQYW5lbC5qcworKysgYi9X
ZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1NvdXJjZVBhbmVsLmpzCkBAIC01Myw2ICs1MywzNCBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNldHVw
U291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgIH0sCiAKKwl1cGRhdGVUb29sYmFyOiBmdW5jdGlv
bigpCisJeworICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VQYW5lbC5wcm90b3R5cGUudXBk
YXRlVG9vbGJhci5jYWxsKHRoaXMpOworCisgICAgICAgIHZhciBidXR0b25Db250YWluZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhckJ1dHRvbnMiKTsKKworCQl2YXIgYnV0dG9u
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworCQlidXR0b25FbGVt
ZW50LnRpdGxlID0gIlBhdXNlIjsKKwkJYnV0dG9uRWxlbWVudC50ZXh0Q29udGVudCA9ICJQYXVz
ZSI7CisJCWJ1dHRvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBJbnNwZWN0b3JD
b250cm9sbGVyLnBhdXNlU2NyaXB0LmJpbmQoSW5zcGVjdG9yQ29udHJvbGxlciksIGZhbHNlKTsK
KworCQlidXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uRWxlbWVudCk7CisKKwkJYnV0
dG9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworCQlidXR0b25F
bGVtZW50LnRpdGxlID0gIlN0ZXAiOworCQlidXR0b25FbGVtZW50LnRleHRDb250ZW50ID0gIlN0
ZXAiOworCQlidXR0b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgSW5zcGVjdG9y
Q29udHJvbGxlci5zdGVwU2NyaXB0LmJpbmQoSW5zcGVjdG9yQ29udHJvbGxlciksIGZhbHNlKTsK
KworCQlidXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uRWxlbWVudCk7CisKKwkJYnV0
dG9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworCQlidXR0b25F
bGVtZW50LnRpdGxlID0gIlJlc3VtZSI7CisJCWJ1dHRvbkVsZW1lbnQudGV4dENvbnRlbnQgPSAi
UmVzdW1lIjsKKwkJYnV0dG9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIEluc3Bl
Y3RvckNvbnRyb2xsZXIucmVzdW1lU2NyaXB0LmJpbmQoSW5zcGVjdG9yQ29udHJvbGxlciksIGZh
bHNlKTsKKworCQlidXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uRWxlbWVudCk7CisJ
fSwKKwogICAgIHNldHVwU291cmNlRnJhbWVJZk5lZWRlZDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMudmlld3Muc291cmNlLmZyYW1lTmVlZHNTZXR1cCkgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL3BhZ2UvaW5z
cGVjdG9yL2luc3BlY3Rvci5qcwppbmRleCA1ZDcxODYyLi44YjVlNDZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL3BhZ2UvaW5z
cGVjdG9yL2luc3BlY3Rvci5qcwpAQCAtMzksNiArMzksNyBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7
CiB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgIHJlc291cmNlczogW10sCiAgICAgcmVzb3VyY2VV
UkxNYXA6IHt9LAorICAgIHJlc291cmNlU2NyaXB0SWRlbnRpZmllck1hcDoge30sCiAgICAgYmFj
a0ZvcndhcmRMaXN0OiBbXSwKICAgICBzZWFyY2hSZXN1bHRzSGVpZ2h0OiAxMDAsCiAgICAgbG9j
YWxpemVkU3RyaW5nczoge30sCkBAIC02ODAsNiArNjgxLDEwMCBAQCBXZWJJbnNwZWN0b3Iuc2hv
d1RpbWVsaW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMubmF2aWdhdGVUb1BhbmVsKFdlYkluc3Bl
Y3Rvci5uZXR3b3JrUGFuZWwpOwogfQogCitXZWJJbnNwZWN0b3Iuc291cmNlUGFyc2VkID0gZnVu
Y3Rpb24odXJsLCBzaWQsIHN0YXJ0TGluZSkKK3sKKwl2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291
cmNlVVJMTWFwW3VybF07CisJaWYgKCFyZXNvdXJjZSkKKwkJcmV0dXJuOworCisJaWYgKCEoInNj
cmlwdFNvdXJjZUlkZW50aWZpZXJzIiBpbiByZXNvdXJjZSkpCisJCXJlc291cmNlLnNjcmlwdFNv
dXJjZUlkZW50aWZpZXJzID0ge307CisJcmVzb3VyY2Uuc2NyaXB0U291cmNlSWRlbnRpZmllcnNb
c2lkXSA9IHN0YXJ0TGluZTsKKworCXRoaXMucmVzb3VyY2VTY3JpcHRJZGVudGlmaWVyTWFwW3Np
ZF0gPSByZXNvdXJjZTsKKworCWNvbnNvbGUubG9nKCJzb3VyY2VQYXJzZWQgIiArIHVybCArICIg
KCIgKyBzaWQgKyAiKSBsaW5lOiAiICsgc3RhcnRMaW5lKTsKK30KKworV2ViSW5zcGVjdG9yLmVu
dGVyRnVuY3Rpb24gPSBmdW5jdGlvbihzaWQsIGxpbmUpCit7CisJaWYgKCFJbnNwZWN0b3JDb250
cm9sbGVyLmlzUGF1c2VkKCkpCisJCXJldHVybjsKKworCXZhciByZXNvdXJjZSA9IHRoaXMucmVz
b3VyY2VTY3JpcHRJZGVudGlmaWVyTWFwW3NpZF07CisJaWYgKCFyZXNvdXJjZSkKKwkJcmV0dXJu
OworCisJdGhpcy5uYXZpZ2F0ZVRvUGFuZWwocmVzb3VyY2UucGFuZWwsICJzb3VyY2UiKTsKKwly
ZXNvdXJjZS5wYW5lbC5zaG93U291cmNlTGluZShsaW5lKTsKKworCWlmICh0aGlzLmN1cnJlbnRM
aW5lUm93KQorCQl0aGlzLmN1cnJlbnRMaW5lUm93LmNsYXNzTmFtZSA9ICIiOworCXRoaXMuY3Vy
cmVudExpbmVSb3cgPSByZXNvdXJjZS5wYW5lbC5zb3VyY2VSb3cobGluZSk7CisJdGhpcy5jdXJy
ZW50TGluZVJvdy5jbGFzc05hbWUgPSAid2Via2l0LWN1cnJlbnQtbGluZSI7CisKKy8vCWNvbnNv
bGUubG9nKCJlbnRlckZ1bmN0aW9uICIgKyByZXNvdXJjZS51cmwgKyAiIGxpbmU6ICIgKyBsaW5l
KTsKK30KKworV2ViSW5zcGVjdG9yLndpbGxFdmFsdWF0ZUxpbmUgPSBmdW5jdGlvbihzaWQsIGxp
bmUpCit7CisJaWYgKCFJbnNwZWN0b3JDb250cm9sbGVyLmlzUGF1c2VkKCkpCisJCXJldHVybjsK
KworCXZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VTY3JpcHRJZGVudGlmaWVyTWFwW3NpZF07
CisJaWYgKCFyZXNvdXJjZSkKKwkJcmV0dXJuOworCisJdGhpcy5uYXZpZ2F0ZVRvUGFuZWwocmVz
b3VyY2UucGFuZWwsICJzb3VyY2UiKTsKKwlyZXNvdXJjZS5wYW5lbC5zaG93U291cmNlTGluZShs
aW5lKTsKKworCWlmICh0aGlzLmN1cnJlbnRMaW5lUm93KQorCQl0aGlzLmN1cnJlbnRMaW5lUm93
LmNsYXNzTmFtZSA9ICIiOworCXRoaXMuY3VycmVudExpbmVSb3cgPSByZXNvdXJjZS5wYW5lbC5z
b3VyY2VSb3cobGluZSk7CisJdGhpcy5jdXJyZW50TGluZVJvdy5jbGFzc05hbWUgPSAid2Via2l0
LWN1cnJlbnQtbGluZSI7CisKKy8vCWNvbnNvbGUubG9nKCJ3aWxsRXZhbHVhdGVMaW5lICIgKyBy
ZXNvdXJjZS51cmwgKyAiIGxpbmU6ICIgKyBsaW5lKTsKK30KKworV2ViSW5zcGVjdG9yLmV4aXRG
dW5jdGlvbiA9IGZ1bmN0aW9uKHNpZCwgbGluZSkKK3sKKwlpZiAoIUluc3BlY3RvckNvbnRyb2xs
ZXIuaXNQYXVzZWQoKSkKKwkJcmV0dXJuOworCisJdmFyIHJlc291cmNlID0gdGhpcy5yZXNvdXJj
ZVNjcmlwdElkZW50aWZpZXJNYXBbc2lkXTsKKwlpZiAoIXJlc291cmNlKQorCQlyZXR1cm47CisK
Kwl0aGlzLm5hdmlnYXRlVG9QYW5lbChyZXNvdXJjZS5wYW5lbCwgInNvdXJjZSIpOworCXJlc291
cmNlLnBhbmVsLnNob3dTb3VyY2VMaW5lKGxpbmUpOworCisJaWYgKHRoaXMuY3VycmVudExpbmVS
b3cpCisJCXRoaXMuY3VycmVudExpbmVSb3cuY2xhc3NOYW1lID0gIiI7CisJdGhpcy5jdXJyZW50
TGluZVJvdyA9IHJlc291cmNlLnBhbmVsLnNvdXJjZVJvdyhsaW5lKTsKKwl0aGlzLmN1cnJlbnRM
aW5lUm93LmNsYXNzTmFtZSA9ICJ3ZWJraXQtY3VycmVudC1saW5lIjsKKworLy8JY29uc29sZS5s
b2coImV4aXRGdW5jdGlvbiAiICsgcmVzb3VyY2UudXJsICsgIiBsaW5lOiAiICsgbGluZSk7Cit9
CisKK1dlYkluc3BlY3Rvci5leGNlcHRpb25SYWlzZWQgPSBmdW5jdGlvbihzaWQsIGxpbmUsIGV4
Y2VwdGlvbikKK3sKKwl2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlU2NyaXB0SWRlbnRpZmll
ck1hcFtzaWRdOworCWlmICghcmVzb3VyY2UpCisJCXJldHVybjsKKworCXRoaXMubmF2aWdhdGVU
b1BhbmVsKHJlc291cmNlLnBhbmVsLCAic291cmNlIik7CisJcmVzb3VyY2UucGFuZWwuc2hvd1Nv
dXJjZUxpbmUobGluZSk7CisKKwlpZiAodGhpcy5jdXJyZW50TGluZVJvdykKKwkJdGhpcy5jdXJy
ZW50TGluZVJvdy5jbGFzc05hbWUgPSAiIjsKKwl0aGlzLmN1cnJlbnRMaW5lUm93ID0gcmVzb3Vy
Y2UucGFuZWwuc291cmNlUm93KGxpbmUpOworCXRoaXMuY3VycmVudExpbmVSb3cuY2xhc3NOYW1l
ID0gIndlYmtpdC1jdXJyZW50LWxpbmUiOworCisJSW5zcGVjdG9yQ29udHJvbGxlci5wYXVzZVNj
cmlwdCgpOworCisJY29uc29sZS5sb2coImV4Y2VwdGlvblJhaXNlZCAiICsgcmVzb3VyY2UudXJs
ICsgIiBsaW5lOiAiICsgbGluZSArICIgZXhjZXB0aW9uOiAiICsgZXhjZXB0aW9uKTsKK30KKwog
V2ViSW5zcGVjdG9yLmFkZFJlc291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB7CiAgICAgdGhp
cy5yZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7Ci0tIAoxLjUuNC4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20628</attachid>
            <date>2008-04-17 09:24:45 -0700</date>
            <delta_ts>2008-04-18 08:22:00 -0700</delta_ts>
            <desc>Add wrappers around showWindow/closeWindow</desc>
            <filename>0001--Add-wrappers-around-InspectorClient-show-c.patch</filename>
            <type>text/plain</type>
            <size>4173</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSA1MzA4NTdlYmMxOWVkMzI3NWQ2ZTUzYzQ2MDFkYzczOWVjYjkxM2RkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
aHUsIDE3IEFwciAyMDA4IDEyOjIwOjQ3IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgQWRk
IHdyYXBwZXJzIGFyb3VuZCBJbnNwZWN0b3JDbGllbnQ6OntzaG93LGNsb3NlfVdpbmRvdwoKICAg
ICAgICBUaGlzIHdpbGwgbGV0IHVzIHBlcmZvcm0gYWN0aW9ucyB3aGVuIHRoZSB3aW5kb3cgaXMg
YWN0dWFsbHkKICAgICAgICBzaG93aW5nL2Nsb3NpbmcgKEluc3BlY3RvckNvbnRyb2xsZXI6OnNo
b3cgZG9lc24ndCBhbHdheXMgZGlyZWN0bHkKICAgICAgICBzaG93IHRoZSB3aW5kb3cpLgoKICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBwYWdlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpz
Y3JpcHRPYmplY3RSZWFkeSk6IENhbGwgc2hvd1dpbmRvdygpCiAgICAgICAgaW5zdGVhZCBvZiBt
X2NsaWVudC0+c2hvd1dpbmRvdygpLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpzaG93KTogRGl0dG8uCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNsb3NlKTogRGl0dG8gZm9yIGNsb3NlV2luZG93KCkuCiAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNob3dXaW5kb3cpOgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpjbG9zZVdpbmRvdyk6CiAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsr
KysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCB8
ICAgMjAgKysrKysrKysrKysrKysrKy0tLS0KIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9s
bGVyLmggICB8ICAgIDMgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDQg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwN2E4ZWI2Li5jNDM3OWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDA4LTA0LTE3
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgd3JhcHBlcnMg
YXJvdW5kIEluc3BlY3RvckNsaWVudDo6e3Nob3csY2xvc2V9V2luZG93CisKKyAgICAgICAgVGhp
cyB3aWxsIGxldCB1cyBwZXJmb3JtIGFjdGlvbnMgd2hlbiB0aGUgd2luZG93IGlzIGFjdHVhbGx5
CisgICAgICAgIHNob3dpbmcvY2xvc2luZyAoSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyBkb2Vz
bid0IGFsd2F5cyBkaXJlY3RseQorICAgICAgICBzaG93IHRoZSB3aW5kb3cpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNj
cmlwdE9iamVjdFJlYWR5KTogQ2FsbCBzaG93V2luZG93KCkKKyAgICAgICAgaW5zdGVhZCBvZiBt
X2NsaWVudC0+c2hvd1dpbmRvdygpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvdyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y2xvc2UpOiBEaXR0byBmb3IgY2xvc2VXaW5kb3coKS4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnNob3dXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29u
dHJvbGxlci5oOgorCisyMDA4LTA0LTE3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4K
KwogICAgICAgICBSZW5hbWUgRXhlY1N0YXRlKiBpbnN0YW5jZXMgZnJvbSBzdGF0ZSB0byBleGVj
CiAKICAgICAgICAgUmVxdWVzdGVkIGJ5IERhcmluIEFkbGVyIGFuZCBTYW0gV2VpbmlnLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDcyNjY2NTUuLjc4OGY5NjkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0T2JqZWN0UmVhZHkoKQogICAgIEpTVmFsdWVQcm90
ZWN0KG1fc2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QpOwogCiAgICAgLy8gTWFrZSBzdXJl
IG91ciB3aW5kb3cgaXMgdmlzaWJsZSBub3cgdGhhdCB0aGUgcGFnZSBsb2FkZWQKLSAgICBtX2Ns
aWVudC0+c2hvd1dpbmRvdygpOworICAgIHNob3dXaW5kb3coKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzaG93KCkKQEAgLTEwMzAsMTEgKzEwMzAsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzaG93KCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9wYWdl
LT5zZXRQYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMpOwogCi0gICAgICAgIC8vIG1fY2xp
ZW50LT5zaG93V2luZG93KCkgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBhZ2UgbG9hZHMgaW4g
c2NyaXB0T2JqZWN0UmVhZHkoKQorICAgICAgICAvLyBzaG93V2luZG93KCkgd2lsbCBiZSBjYWxs
ZWQgYWZ0ZXIgdGhlIHBhZ2UgbG9hZHMgaW4gc2NyaXB0T2JqZWN0UmVhZHkoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnNob3dXaW5kb3coKTsKKyAgICBzaG93V2lu
ZG93KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd0NvbnNvbGUoKQpAQCAt
MTA3Miw3ICsxMDcyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiAgICAg
aWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LT5jbG9zZVdp
bmRvdygpOworICAgIGNsb3NlV2luZG93KCk7CiAgICAgaWYgKG1fcGFnZSkKICAgICAgICAgbV9w
YWdlLT5zZXRQYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKDApOwogCkBAIC0xMDg0LDYgKzEwODQs
MTggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiAgICAgbV9zY3JpcHRDb250
ZXh0ID0gMDsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93V2luZG93KCkKK3sK
KyAgICBBU1NFUlQoZW5hYmxlZCgpKTsKKworICAgIG1fY2xpZW50LT5zaG93V2luZG93KCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2VXaW5kb3coKQoreworICAgIG1fY2xp
ZW50LT5jbG9zZVdpbmRvdygpOworfQorCiBzdGF0aWMgdm9pZCBhZGRIZWFkZXJzKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQs
IGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZjRmNWZlZS4uMjE0
ZmQzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xNjEsNiArMTYxLDkgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTVmFsdWVSZWYgZXhjZXB0aW9u
LCB1bnNpZ25lZCBsaW5lTnVtYmVyKSBjb25zdDsKIAorICAgIHZvaWQgc2hvd1dpbmRvdygpOwor
ICAgIHZvaWQgY2xvc2VXaW5kb3coKTsKKwogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAg
ICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFBhZ2UqIG1fcGFnZTsKLS0gCjEuNS41
LjQ5Lmc5MTRhOQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20668</attachid>
            <date>2008-04-18 09:12:10 -0700</date>
            <delta_ts>2008-04-18 09:35:11 -0700</delta_ts>
            <desc>Make InspectorController a JavaScriptDebugListener</desc>
            <filename>0001--Make-InspectorController-a-JavaScriptDebugLi.patch</filename>
            <type>text/plain</type>
            <size>9755</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAxYTM1NGRhYjEwZjlmN2RhMGY3OWFkMTJiMGVjMDMyZmIxZmZkZDE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDE4IEFwciAyMDA4IDEyOjExOjIxIC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgTWFr
ZSBJbnNwZWN0b3JDb250cm9sbGVyIGEgSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIKCiAgICAgICAg
SSBhZGRlZCB0d28gbmV3IGZ1bmN0aW9ucyB0byB0aGUgSW5zcGVjdG9yQ29udHJvbGxlciBKUyBv
YmplY3Q6CiAgICAgICAgcmVsb2FkSW5zcGVjdGVkUGFnZUFuZFN0YXJ0RGVidWdnaW5nIGFuZCBz
dG9wRGVidWdnaW5nLiBUaGVzZSBjb250cm9sCiAgICAgICAgd2hlbiB0aGUgSW5zcGVjdG9yQ29u
dHJvbGxlciBhZGRzL3JlbW92ZXMgaXRzZWxmIHRvL2Zyb20gdGhlCiAgICAgICAgSmF2YVNjcmlw
dERlYnVnU2VydmVyLgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpyZWxv
YWRJbnNwZWN0ZWRQYWdlQW5kU3RhcnREZWJ1Z2dpbmcpOiBBZGRlZC4gSnVzdCBjYWxscwogICAg
ICAgIHRocm91Z2ggdG8gSW5zcGVjdG9yQ29udHJvbGxlci4KICAgICAgICAoV2ViQ29yZTo6c3Rv
cERlYnVnZ2luZyk6IERpdHRvLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Ojp+SW5zcGVjdG9yQ29udHJvbGxlcik6IE1ha2Ugc3VyZSB3ZQogICAgICAgIHN0b3AgZGVidWdn
aW5nIGJlZm9yZSB3ZSBhcmUgZGVzdHJveWVkIHNvIHRoZSBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIK
ICAgICAgICB3b24ndCBiZSBsZWZ0IHdpdGggYSBzdGFsZSBwb2ludGVyLgogICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUpOiBB
ZGRlZCB0d28KICAgICAgICBuZXcgZnVuY3Rpb25zIHRvIG91ciBKUyBvYmplY3QuCiAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlV2luZG93KTogU3RvcCBkZWJ1Z2dp
bmcgd2hlbiB0aGUKICAgICAgICB3aW5kb3cgY2xvc2VzLgogICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpyZWxvYWRJbnNwZWN0ZWRQYWdlQW5kU3RhcnREZWJ1Z2dpbmcpOgog
ICAgICAgIEFkZGVkLgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9w
RGVidWdnaW5nKTogQWRkZWQuCgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRQYXJzZVNvdXJjZSk6CiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmZhaWxlZFRvUGFyc2VTb3VyY2UpOgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRFbnRlckNhbGxGcmFtZSk6CiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OndpbGxFeGVjdXRlU3RhdGVtZW50KToKICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6d2lsbExlYXZlQ2FsbEZyYW1lKToKICAgICAgICBBZGRlZCBlbXB0eSBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyIGZ1bmN0aW9ucy4KCiAg
ICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9w
YWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIHwgICA2NiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oICAgfCAgIDE0
ICsrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2JhNmY1NC4uOTA4ZDlmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOC0wNC0xOCAgQWRhbSBS
b2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBJbnNwZWN0b3JDb250cm9s
bGVyIGEgSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIKKworICAgICAgICBJIGFkZGVkIHR3byBuZXcg
ZnVuY3Rpb25zIHRvIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyIEpTIG9iamVjdDoKKyAgICAgICAg
cmVsb2FkSW5zcGVjdGVkUGFnZUFuZFN0YXJ0RGVidWdnaW5nIGFuZCBzdG9wRGVidWdnaW5nLiBU
aGVzZSBjb250cm9sCisgICAgICAgIHdoZW4gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgYWRkcy9y
ZW1vdmVzIGl0c2VsZiB0by9mcm9tIHRoZQorICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVsb2FkSW5zcGVj
dGVkUGFnZUFuZFN0YXJ0RGVidWdnaW5nKTogQWRkZWQuIEp1c3QgY2FsbHMKKyAgICAgICAgdGhy
b3VnaCB0byBJbnNwZWN0b3JDb250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6c3RvcERlYnVn
Z2luZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fklu
c3BlY3RvckNvbnRyb2xsZXIpOiBNYWtlIHN1cmUgd2UKKyAgICAgICAgc3RvcCBkZWJ1Z2dpbmcg
YmVmb3JlIHdlIGFyZSBkZXN0cm95ZWQgc28gdGhlIEphdmFTY3JpcHREZWJ1Z1NlcnZlcgorICAg
ICAgICB3b24ndCBiZSBsZWZ0IHdpdGggYSBzdGFsZSBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKTogQWRk
ZWQgdHdvCisgICAgICAgIG5ldyBmdW5jdGlvbnMgdG8gb3VyIEpTIG9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlV2luZG93KTogU3RvcCBkZWJ1Z2dp
bmcgd2hlbiB0aGUKKyAgICAgICAgd2luZG93IGNsb3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZEluc3BlY3RlZFBhZ2VBbmRTdGFydERlYnVnZ2luZyk6
CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
c3RvcERlYnVnZ2luZyk6IEFkZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpmYWlsZWRUb1BhcnNlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZEVudGVyQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbGxFeGVjdXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxMZWF2ZUNhbGxGcmFtZSk6CisgICAgICAgIEFkZGVk
IGVtcHR5IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIgZnVu
Y3Rpb25zLgorCisgICAgICAgICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisKIDIwMDgt
MDQtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBF
eGVjU3RhdGUqIGluc3RhbmNlcyBmcm9tIHN0YXRlIHRvIGV4ZWMKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCBiNzZlZTNmLi5kMTJlOGJhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JD
YWxsYmFja1dyYXBwZXIuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1Jhbmdl
LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC03
MzIsNiArNzMzLDI4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHdyYXBDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqCiAgICAgcmV0dXJuIHRvUmVm
KEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjp3cmFwKHRvSlMoY3R4KSwgdG9KUyhhcmd1bWVu
dHNbMF0pKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlbG9hZEluc3BlY3RlZFBhZ2VBbmRT
dGFydERlYnVnZ2luZyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29uc3Qg
SlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCit7
CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SW5zcGVjdG9yQ29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKKworICAgIGNvbnRyb2xsZXItPnJlbG9hZEluc3BlY3RlZFBhZ2VBbmRTdGFydERlYnVn
Z2luZygpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIHN0b3BEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVu
dENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAv
KmV4Y2VwdGlvbiovKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBy
ZWludGVycHJldF9jYXN0PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBjb250cm9sbGVyLT5zdG9wRGVidWdnaW5nKCk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKK30KKwogI3ByYWdtYSBt
YXJrIC0KICNwcmFnbWEgbWFyayBJbnNwZWN0b3JDb250cm9sbGVyIENsYXNzCiAKQEAgLTc3MCw2
ICs3OTMsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAg
ICAgaWYgKG1fcGFnZSkKICAgICAgICAgbV9wYWdlLT5zZXRQYXJlbnRJbnNwZWN0b3JDb250cm9s
bGVyKDApOwogCisgICAgc3RvcERlYnVnZ2luZygpOworCiAgICAgZGVsZXRlQWxsVmFsdWVzKG1f
ZnJhbWVSZXNvdXJjZXMpOwogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2NvbnNvbGVNZXNzYWdlcyk7
CiB9CkBAIC05NzEsNiArOTk2LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dT
Y3JpcHRPYmplY3RBdmFpbGFibGUoKQogICAgICAgICB7ICJwbGF0Zm9ybSIsIHBsYXRmb3JtLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAibW92ZUJ5VW5yZXN0cmljdGVk
IiwgbW92ZUJ5VW5yZXN0cmljdGVkLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAg
ICAgeyAid3JhcENhbGxiYWNrIiwgd3JhcENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKKyAgICAgICAgeyAicmVsb2FkSW5zcGVjdGVkUGFnZUFuZFN0YXJ0RGVidWdnaW5nIiwg
V2ViQ29yZTo6cmVsb2FkSW5zcGVjdGVkUGFnZUFuZFN0YXJ0RGVidWdnaW5nLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAic3RvcERlYnVnZ2luZyIsIFdlYkNvcmU6OnN0
b3BEZWJ1Z2dpbmcsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQogICAgIH07CiAKQEAgLTEwOTMsNiArMTEyMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvd1dpbmRvdygpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2VXaW5k
b3coKQogeworICAgIHN0b3BEZWJ1Z2dpbmcoKTsKICAgICBtX2NsaWVudC0+Y2xvc2VXaW5kb3co
KTsKIH0KIApAQCAtMTg4MSw2ICsxOTA5LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgbV9wYWdlLT5jaHJvbWUo
KS0+c2V0V2luZG93UmVjdChmcmFtZVJlY3QpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnJlbG9hZEluc3BlY3RlZFBhZ2VBbmRTdGFydERlYnVnZ2luZygpCit7CisgICAgSmF2YVNj
cmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5hZGRMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBh
Z2UpOworICAgIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5yZWxvYWQo
KTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wRGVidWdnaW5nKCkKK3sKKyAg
ICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG1f
aW5zcGVjdGVkUGFnZSk7Cit9CisKIHN0YXRpYyB2b2lkIGRyYXdPdXRsaW5lZFJlY3QoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgZmls
bENvbG9yKQogewogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVRoaWNrbmVzcyA9IDE7CkBA
IC0xOTg0LDQgKzIwMjMsMzEgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYW5kbGVFeGNl
cHRpb24oSlNWYWx1ZVJlZiBleGNlcHRpb24sIHVuc2lnbmVkIGxpbmVOdW0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBKYXZhU2NyaXB0RGVidWdM
aXN0ZW5lciBmdW5jdGlvbnMKKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRQYXJzZVNv
dXJjZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIC8qc291cmNlKi8sIGludCAvKnN0YXJ0aW5n
TGluZU51bWJlciovLCBjb25zdCBTdHJpbmcmIC8qc291cmNlVVJMKi8sIGludCAvKnNvdXJjZUlE
Ki8pCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJj
ZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIC8qc291cmNlKi8sIGludCAvKnN0YXJ0aW5nTGlu
ZU51bWJlciovLCBjb25zdCBTdHJpbmcmIC8qc291cmNlVVJMKi8sIGludCAvKmVycm9yTGluZSov
LCBjb25zdCBTdHJpbmcmIC8qZXJyb3JNZXNzYWdlKi8pCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkRW50ZXJDYWxsRnJhbWUoRXhlY1N0YXRlKiwgaW50IC8qc291cmNlSUQq
LywgaW50IC8qbGluZU51bWJlciovKQoreworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxFeGVjdXRlU3RhdGVtZW50KEV4ZWNTdGF0ZSosIGludCAvKnNvdXJjZUlEKi8sIGludCAv
KmxpbmVOdW1iZXIqLykKK3sKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsTGVh
dmVDYWxsRnJhbWUoRXhlY1N0YXRlKiwgaW50IC8qc291cmNlSUQqLywgaW50IC8qbGluZU51bWJl
ciovKQoreworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4Y2VwdGlvbldhc1JhaXNl
ZChFeGVjU3RhdGUqLCBpbnQgLypzb3VyY2VJRCovLCBpbnQgLypsaW5lTnVtYmVyKi8pCit7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IDIxNGZkMzQuLjIwM2Y1YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
MjksNiArMjksOCBAQAogI2lmbmRlZiBJbnNwZWN0b3JDb250cm9sbGVyX2gKICNkZWZpbmUgSW5z
cGVjdG9yQ29udHJvbGxlcl9oCiAKKyNpbmNsdWRlICJKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5o
IgorCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dFJlZi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Niw3ICs1OCw3IEBAIHN0
cnVjdCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOwogc3RydWN0IEluc3BlY3RvclJlc291cmNl
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyIHsK
K2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgOiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcgbG9uZywgUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiA+IFJlc291cmNlc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1l
PiwgUmVzb3VyY2VzTWFwKj4gRnJhbWVSZXNvdXJjZXNNYXA7CkBAIC0xMjgsNiArMTMwLDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7
CiAKKyAgICB2b2lkIHJlbG9hZEluc3BlY3RlZFBhZ2VBbmRTdGFydERlYnVnZ2luZygpOworICAg
IHZvaWQgc3RvcERlYnVnZ2luZygpOworCiAgICAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTE2NCw2ICsxNjksMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNob3dXaW5kb3coKTsKICAgICB2b2lkIGNsb3NlV2luZG93KCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGludCBzb3VyY2VJRCk7CisgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3Vy
Y2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJDYWxsRnJhbWUo
S0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbEV4ZWN1dGVTdGF0ZW1lbnQoS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExlYXZlQ2FsbEZyYW1l
KEtKUzo6RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdmly
dHVhbCB2b2lkIGV4Y2VwdGlvbldhc1JhaXNlZChLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpOworCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgUGFnZSogbV9wYWdlOwotLSAKMS41LjUuNDku
ZzkxNGE5Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>