<?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>17228</bug_id>
          
          <creation_ts>2008-02-08 13:50:51 -0800</creation_ts>
          <short_desc>console.{log,warn,info,error} should support format strings, variable arguments</short_desc>
          <delta_ts>2008-04-16 13:25:16 -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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>16837</dependson>
          <blocked>14354</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69800</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-08 13:50:51 -0800</bug_when>
    <thetext>Our implementation of console.{log,warn,info,error} should support format strings, like Firebug does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69829</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-08 14:17:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/5732828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74660</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 11:23:43 -0700</bug_when>
    <thetext>Firebug also lets you list more variables than you have format specifiers, and the remaining variables are appended to the string separated by spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74662</commentid>
    <comment_count>3</comment_count>
      <attachid>19931</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 11:26:09 -0700</bug_when>
    <thetext>Created attachment 19931
Step 1: Pass JSConsole&apos;s arguments to Console unmodified</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74676</commentid>
    <comment_count>4</comment_count>
      <attachid>19933</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 12:18:27 -0700</bug_when>
    <thetext>Created attachment 19933
Step 2: Route all Console-related activities through Console</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74683</commentid>
    <comment_count>5</comment_count>
      <attachid>19934</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 13:39:47 -0700</bug_when>
    <thetext>Created attachment 19934
Step 2: Route all Console-related activities through Console

Corrected a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74684</commentid>
    <comment_count>6</comment_count>
      <attachid>19935</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 13:40:46 -0700</bug_when>
    <thetext>Created attachment 19935
Step 2: Route all Console-related activities through Console

Uploaded the right patch this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74686</commentid>
    <comment_count>7</comment_count>
      <attachid>19937</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 14:06:40 -0700</bug_when>
    <thetext>Created attachment 19937
Step 3: Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74708</commentid>
    <comment_count>8</comment_count>
      <attachid>19946</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-21 15:47:46 -0700</bug_when>
    <thetext>Created attachment 19946
Step 3: Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS

We&apos;re now more careful in how we handle the arguments passed in from the inspected page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76130</commentid>
    <comment_count>9</comment_count>
      <attachid>19931</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-02 02:37:02 -0700</bug_when>
    <thetext>Comment on attachment 19931
Step 1: Pass JSConsole&apos;s arguments to Console unmodified

This is unconventional structure. It&apos;s not really a &quot;binding&quot; if we&apos;re passing the JavaScript arguments directly to the underlying DOM object.

I&apos;m going to say r=me, but if console is really going to be a pure JavaScript object, then maybe we shouldn&apos;t use .idl to create the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76131</commentid>
    <comment_count>10</comment_count>
      <attachid>19935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-02 02:41:58 -0700</bug_when>
    <thetext>Comment on attachment 19935
Step 2: Route all Console-related activities through Console

Why does the console() hang off domWindow()? Why not directly off Frame?

I think we should move the &quot;shouldPrintExceptions&quot; and printf stuff into the console object too.

+void FrameLoader::reportLocalLoadFailed(const Frame* frame, const String&amp; url)

The use of const Frame* here is strange. Just Frame* will do.

-        void addMessageToConsole(MessageSource, MessageLevel, const String&amp; message, unsigned lineNumber, const String&amp; sourceID);
+        // This method should only be called by Console
+        void addMessageToConsole(const String&amp; message, unsigned lineNumber, const String&amp; sourceID);

I think Console should talk directly to the ChromeClient. I don&apos;t think we need a Chrome function in between. Then you wouldn&apos;t need that comment. Also, please don&apos;t call C++ member functions &quot;methods&quot;.

It&apos;s extremely unconventional to use the name &quot;state&quot; for an ExecState* parameter. We use &quot;exec&quot; almost everywhere. I think &quot;state&quot; might be better if we did it everywhere, but I think it&apos;s not a great idea to start being original about this in the console code.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76135</commentid>
    <comment_count>11</comment_count>
      <attachid>19946</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-04-02 03:13:32 -0700</bug_when>
    <thetext>Comment on attachment 19946
Step 3: Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS

I think it could be unsafe to pass the actual JavaScript objects to the inspector. This allows a webpage to get the inspector to execute code on its behalf in the inspector&apos;s privileged context, for example if it supplies an object with a custom toString function.

+        JSValueRef messageValue = JSValueMakeString(m_scriptContext, messageString.get());
+        arguments.append(messageValue);

This is a problem. Once the local variable messageValue goes out of scope, the string could be garbage collected. Since you&apos;re using a Vector here, the values won&apos;t be on the stack and won&apos;t be seen by the garbage collector. Depending on how the optimizer optimizes the C++ code, this could be an issue for the other things like sourceValue as well; the compiler is not obligated to keep the value around on the stack or in a register once you&apos;ve made the last use of it.

Because of this, I think you need either not use a Vector or use something that calls JSValueProtect.

My suggestion is that you choose a fixed maximum number of arguments and use an array on the stack rather than a Vector.

review- because of the GC issue with the arguments Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76168</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-02 11:17:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 19931 [edit])
&gt; This is unconventional structure. It&apos;s not really a &quot;binding&quot; if we&apos;re passing
&gt; the JavaScript arguments directly to the underlying DOM object.

I suppose that&apos;s true. Sam was saying he thought we should leave the string-only versions of the functions as well so that they we can make them callable from, e.g., Obj-C. I decided not to leave them in this patch because we aren&apos;t currently using them, and I didn&apos;t want to leave in dead code.

&gt; I&apos;m going to say r=me, but if console is really going to be a pure JavaScript
&gt; object, then maybe we shouldn&apos;t use .idl to create the object.

I guess if we do add back the string-only versions of the functions then Console will be more of a &quot;true&quot; binding again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77704</commentid>
    <comment_count>13</comment_count>
      <attachid>20561</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 10:51:32 -0700</bug_when>
    <thetext>Created attachment 20561
Step 3 (v2): Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS

This patch addresses Darin&apos;s comments about security and garbage collection issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77743</commentid>
    <comment_count>14</comment_count>
      <attachid>20566</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 16:29:55 -0700</bug_when>
    <thetext>Created attachment 20566
Step 4: Separate out tokenizing of format strings

This is the first in a series of patches that refactors our string formatting code so that it can be used by the Console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77747</commentid>
    <comment_count>15</comment_count>
      <attachid>20569</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 16:57:59 -0700</bug_when>
    <thetext>Created attachment 20569
Step 5: Make the formatting functions used for each format specifier configurable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77748</commentid>
    <comment_count>16</comment_count>
      <attachid>20570</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 16:58:25 -0700</bug_when>
    <thetext>Created attachment 20570
Step 6: Make String.format able to produce objects other than strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77749</commentid>
    <comment_count>17</comment_count>
      <attachid>20571</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 16:58:47 -0700</bug_when>
    <thetext>Created attachment 20571
Step 7: Return the unused substitutions from String.format</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77751</commentid>
    <comment_count>18</comment_count>
      <attachid>20573</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-15 18:21:33 -0700</bug_when>
    <thetext>Created attachment 20573
testcase

Here&apos;s a test that you can run in Firebug or in the Inspector. It actually has turned up some bizarre behaviors in Firebug that we probably don&apos;t want to emulate (e.g., trying to format an object as an integer ends up printing &quot;[Object object]&quot;). I&apos;ll probably end up committing some variation of this in WebCore/manual-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77790</commentid>
    <comment_count>19</comment_count>
      <attachid>20571</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-04-16 08:33:44 -0700</bug_when>
    <thetext>Comment on attachment 20571
Step 7: Return the unused substitutions from String.format

As talked about on IRC, returning a anonymous object with two named properties would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77824</commentid>
    <comment_count>20</comment_count>
      <attachid>20592</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 11:17:20 -0700</bug_when>
    <thetext>Created attachment 20592
Final step: Treat the first argument as a format string, concatenate additional arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77838</commentid>
    <comment_count>21</comment_count>
      <attachid>19931</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:20:28 -0700</bug_when>
    <thetext>Comment on attachment 19931
Step 1: Pass JSConsole&apos;s arguments to Console unmodified

Committed in r31950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77839</commentid>
    <comment_count>22</comment_count>
      <attachid>19935</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:21:19 -0700</bug_when>
    <thetext>Comment on attachment 19935
Step 2: Route all Console-related activities through Console

Committed in r31951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77840</commentid>
    <comment_count>23</comment_count>
      <attachid>20561</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:21:43 -0700</bug_when>
    <thetext>Comment on attachment 20561
Step 3 (v2): Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS

Committed in r31952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77841</commentid>
    <comment_count>24</comment_count>
      <attachid>20566</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:22:16 -0700</bug_when>
    <thetext>Comment on attachment 20566
Step 4: Separate out tokenizing of format strings

Committed in r31953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77842</commentid>
    <comment_count>25</comment_count>
      <attachid>20569</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:22:44 -0700</bug_when>
    <thetext>Comment on attachment 20569
Step 5: Make the formatting functions used for each format specifier configurable

Committed in r31954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77845</commentid>
    <comment_count>26</comment_count>
      <attachid>20570</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:36:22 -0700</bug_when>
    <thetext>Comment on attachment 20570
Step 6: Make String.format able to produce objects other than strings

Committed in r31955</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77846</commentid>
    <comment_count>27</comment_count>
      <attachid>20571</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:36:45 -0700</bug_when>
    <thetext>Comment on attachment 20571
Step 7: Return the unused substitutions from String.format

Committed in r31956</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77847</commentid>
    <comment_count>28</comment_count>
      <attachid>20592</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:37:07 -0700</bug_when>
    <thetext>Comment on attachment 20592
Final step: Treat the first argument as a format string, concatenate additional arguments

Committed in r31957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77849</commentid>
    <comment_count>29</comment_count>
      <attachid>20600</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 12:45:19 -0700</bug_when>
    <thetext>Created attachment 20600
Fix a bug in the testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77854</commentid>
    <comment_count>30</comment_count>
      <attachid>20600</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 13:25:09 -0700</bug_when>
    <thetext>Comment on attachment 20600
Fix a bug in the testcase

Committed in r31959</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19931</attachid>
            <date>2008-03-21 11:26:09 -0700</date>
            <delta_ts>2008-04-16 12:20:28 -0700</delta_ts>
            <desc>Step 1: Pass JSConsole&apos;s arguments to Console unmodified</desc>
            <filename>0001-Pass-JSConsole-s-arguments-unmodified-to-Con.patch</filename>
            <type>text/plain</type>
            <size>13510</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAyODA1NDhiMmFjZjg5NzRlMTQ4OWE5ZGExNTZjMzgyZjU5MjUyYzU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE0OjI0OjI4IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUGFz
cyBKU0NvbnNvbGUncyBhcmd1bWVudHMgdW5tb2RpZmllZCB0byBDb25zb2xlCgogICAgICAgIFBh
cnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9yfSBzaG91bGQgc3Vw
cG9ydCBmb3JtYXQKICAgICAgICBzdHJpbmdzLCB2YXJpYWJsZSBhcmd1bWVudHMKICAgICAgICA8
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CiAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CgogICAgICAgIEFsbCBvZiBKU0NvbnNvbGUncyBtZXRob2Rz
IGFyZSBub3cgY3VzdG9tLCBzbyB0aGF0IHdlIGNhbiBwYXNzIHRoZQogICAgICAgIGFyZ3VtZW50
cyB1bm1vZGlmaWVkIHRvIENvbnNvbGUuIENvbnNvbGUgbm93IGhhbmRsZXMgY2FsbGluZwogICAg
ICAgIHRvU3RyaW5nKCkgb24gdGhlIGZpcnN0IGFyZ3VtZW50LiBMYXRlciBpdCB3aWxsIHBhc3Mg
dGhlIGFyZ3VtZW50cyBvZmYKICAgICAgICB0byBJbnNwZWN0b3JDb250cm9sbGVyLgoKICAgICAg
ICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFuZ2VzIGNhdXNlZCBieSB0aGlzIHBh
dGNoLgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSEFWRU4n
VCBBRERFRCBKU0NvbnNvbGVDdXN0b20uY3BwIFRPIFdlYkNvcmUueGNvZGVwcm9qIFlFVCAoT09Q
UyEpLgoKICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9saXN0Lmg6IEFkZGVkLgogICAg
ICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEpTQ29uc29sZUN1c3RvbS5jcHAgdG8gdGhlIHBy
b2plY3QuCiAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCiAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCiAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6
IERpdHRvLgogICAgICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDogQWRkZWQu
CiAgICAgICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6ZXJyb3IpOgogICAgICAgIChXZWJDb3JlOjpK
U0NvbnNvbGU6OmluZm8pOgogICAgICAgIChXZWJDb3JlOjpKU0NvbnNvbGU6OmxvZyk6CiAgICAg
ICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6d2Fybik6CiAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3Bw
OiBDaGFuZ2VkIGFsbCBtZXRob2RzIHRvIHRha2UgYW4gRXhlY1N0YXRlKiBhbmQgYQogICAgICAg
IGNvbnN0IExpc3QmLiBUaGUgZmlyc3QgaXRlbSBpbiB0aGUgTGlzdCBpcyB0b1N0cmluZygpZWQg
YW5kIHBhc3NlZCB0bwogICAgICAgIENocm9tZS4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
ZXJyb3IpOgogICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjppbmZvKToKICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6bG9nKToKICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CiAgICAg
ICAgKiBwYWdlL0NvbnNvbGUuaDoKICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6Ci0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrKysr
KysrKysrKysKIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL2xpc3QuaCAgICB8ICAgIDEg
KwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJD
b3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICB8ICAgIDggKysrKwogV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29uc29sZUN1c3RvbS5jcHAgfCAgIDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCAgICAgICAgICAgICAgICB8ICAgMzEgKysrKysrKysr
KysrLS0tLQogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysrKystLS0KIFdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCAgICAgICAgICAgICAgICB8ICAgMTAg
KysrLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvbGlz
dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0
b20uY3BwCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyYmYzZDMxLi43MjA5ZjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDA4LTAzLTIxICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXNzIEpTQ29uc29sZSdzIGFy
Z3VtZW50cyB1bm1vZGlmaWVkIHRvIENvbnNvbGUKKworICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIy
ODogY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0Cisg
ICAgICAgIHN0cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50cworICAgICAgICA8aHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzMyODI4PgorCisgICAgICAgIEFsbCBvZiBKU0NvbnNvbGUncyBtZXRob2RzIGFyZSBub3cg
Y3VzdG9tLCBzbyB0aGF0IHdlIGNhbiBwYXNzIHRoZQorICAgICAgICBhcmd1bWVudHMgdW5tb2Rp
ZmllZCB0byBDb25zb2xlLiBDb25zb2xlIG5vdyBoYW5kbGVzIGNhbGxpbmcKKyAgICAgICAgdG9T
dHJpbmcoKSBvbiB0aGUgZmlyc3QgYXJndW1lbnQuIExhdGVyIGl0IHdpbGwgcGFzcyB0aGUgYXJn
dW1lbnRzIG9mZgorICAgICAgICB0byBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgIFRo
ZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZXMgY2F1c2VkIGJ5IHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSEFWRU4n
VCBBRERFRCBKU0NvbnNvbGVDdXN0b20uY3BwIFRPIFdlYkNvcmUueGNvZGVwcm9qIFlFVCAoT09Q
UyEpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMva2pzL2xpc3QuaDogQWRkZWQuCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEpTQ29uc29sZUN1c3RvbS5jcHAgdG8gdGhl
IHByb2plY3QuCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjplcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NvbnNvbGU6OmluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjps
b2cpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjp3YXJuKToKKyAgICAgICAgKiBwYWdl
L0NvbnNvbGUuY3BwOiBDaGFuZ2VkIGFsbCBtZXRob2RzIHRvIHRha2UgYW4gRXhlY1N0YXRlKiBh
bmQgYQorICAgICAgICBjb25zdCBMaXN0Ji4gVGhlIGZpcnN0IGl0ZW0gaW4gdGhlIExpc3QgaXMg
dG9TdHJpbmcoKWVkIGFuZCBwYXNzZWQgdG8KKyAgICAgICAgQ2hyb21lLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6aW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgICogcGFnZS9D
b25zb2xlLmlkbDoKKworMjAwOC0wMy0yMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CisKICAgICAgICAgUmVuYW1lIHN0YXRpYyBpbmZvIG1lbWJlcnMgdG8gc19pbmZvCiAKICAgICAg
ICAgVGhpcyBhdm9pZHMgY29uZmxpY3RzIHdpdGggY3VzdG9tICJpbmZvIiBtZXRob2RzLCBzdWNo
IGFzIHRoZSBvbmUgdGhhdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9r
anMvbGlzdC5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvbGlzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlOTYxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9saXN0LmgKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL2xpc3QuaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGI2MzM4ZGQuLmJkMzAzNDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtNDcxLDYgKzQ3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDb25zb2xlQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
Njg2MTg2Yi4uZGM1NDRmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MDEsNiArNDAxLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
YmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9q
cy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L0pTQ1NTVmFsdWVDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDk4Njc2ZWIuLmNjNjU3MmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtOTczMCw2ICs5NzMwLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0NvbnNvbGVDdXN0b20u
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ1NTUnVsZUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCkBAIC0xMjI2Niw2ICsxMjI3MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNca2pzXGxp
c3QuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xranNcbG9va3VwLmgiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDQwMjYwMzUuLmQ2YjZlNmUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
CkBAIC0zOSw2ICszOSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBu
ZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgYmluZGluZ3MvanMvSlNDYW52YXNQaXhl
bEFycmF5Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20u
Y3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5NjQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQ29uc29sZS5oIgorCisjaW5jbHVkZSAiQ29uc29sZS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgS0pTOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUq
IEpTQ29uc29sZTo6ZXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRz
KQoreworICAgIGltcGwoKS0+ZXJyb3Ioc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTQ29uc29sZTo6aW5mbyhFeGVjU3RhdGUqIHN0
YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCit7CisgICAgaW1wbCgpLT5pbmZvKHN0YXRlLCBh
cmd1bWVudHMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0Nv
bnNvbGU6OmxvZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCit7Cisg
ICAgaW1wbCgpLT5sb2coc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUqIEpTQ29uc29sZTo6d2FybihFeGVjU3RhdGUqIHN0YXRlLCBjb25z
dCBMaXN0JiBhcmd1bWVudHMpCit7CisgICAgaW1wbCgpLT53YXJuKHN0YXRlLCBhcmd1bWVudHMp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKaW5kZXggZDQ1YWY2Mi4uZWEzOWI2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMzQsNiArMzQs
OSBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8a2pzL2xpc3QuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw4ICs1MCwxMSBAQCB2
b2lkIENvbnNvbGU6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKLXZv
aWQgQ29uc29sZTo6ZXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25zb2xlOjpl
cnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CisgICAgaWYg
KGFyZ3VtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01NiwxMSArNjIsMTQgQEAgdm9pZCBDb25zb2xlOjpl
cnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+
dXJsKCkucHJldHR5VVJMKCkpOworICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwog
fQogCi12b2lkIENvbnNvbGU6OmluZm8oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25z
b2xlOjppbmZvKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKIHsKKyAg
ICBpZiAoYXJndW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFt
X2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTY4LDExICs3NywxNCBAQCB2b2lkIENvbnNv
bGU6OmluZm8oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwog
fQogCi12b2lkIENvbnNvbGU6OmxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIENvbnNv
bGU6OmxvZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CisgICAg
aWYgKGFyZ3VtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9m
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04MCwxMSArOTIsMTQgQEAgdm9pZCBDb25zb2xl
Ojpsb2coY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigpLT51
cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJp
bmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwogfQog
Ci12b2lkIENvbnNvbGU6Ondhcm4oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25zb2xl
Ojp3YXJuKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKIHsKKyAgICBp
ZiAoYXJndW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTkyLDcgKzEwNyw3IEBAIHZvaWQgQ29uc29sZTo6
d2Fybihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHNbMF0t
PnRvU3RyaW5nKHN0YXRlKSwgMCwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKaW5kZXggMDYyY2ZkZC4uZTkzYjA2
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5oCkBAIC0zMCw3ICszMCwxMyBAQAogI2RlZmluZSBDb25zb2xlX2gKIAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKKyAgICBjbGFzcyBMaXN0OworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQyLDEwICs0OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNj
b25uZWN0RnJhbWUoKTsKIAotICAgICAgICB2b2lkIGVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7Ci0gICAgICAgIHZvaWQgaW5mbyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2
b2lkIGxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2b2lkIHdhcm4oY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBlcnJvcihLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6TGlzdCYgYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCBpbmZvKEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOworICAgICAgICB2b2lkIGxvZyhLSlM6
OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYgYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCB3
YXJuKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQ29uc29sZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaWRsIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCmluZGV4IDMzNTZjMGUu
LjEwMDQ2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAorKysgYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEwICsyOSwxMCBAQAogbW9kdWxlIHdpbmRvdyB7CiAK
ICAgICBpbnRlcmZhY2UgQ29uc29sZSB7Ci0gICAgICAgIHZvaWQgZXJyb3IoaW4gRE9NU3RyaW5n
IG1lc3NhZ2UpOwotICAgICAgICB2b2lkIGluZm8oaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOwotICAg
ICAgICB2b2lkIGxvZyhpbiBET01TdHJpbmcgbWVzc2FnZSk7Ci0gICAgICAgIHZvaWQgd2Fybihp
biBET01TdHJpbmcgbWVzc2FnZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZXJyb3IoKTsKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBpbmZvKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgbG9nKCk7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2FybigpOwogICAgIH07CiAKIH0KLS0gCjEuNS40LjMK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19933</attachid>
            <date>2008-03-21 12:18:27 -0700</date>
            <delta_ts>2008-03-21 13:39:47 -0700</delta_ts>
            <desc>Step 2: Route all Console-related activities through Console</desc>
            <filename>0001-Change-calls-to-Chrome-addMessageToConsole.patch</filename>
            <type>text/plain</type>
            <size>36402</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBiMDUwNTVkZDAwNDFjZmVhY2QzMzM2YzlhYTVkMjI3ODY1ZDYxYjk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE1OjE3OjM4IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgQ2hh
bmdlIGNhbGxzIHRvIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSB0byB1c2UgQ29uc29sZTo6
YWRkTWVzc2FnZQoKICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4s
aW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CiAgICAgICAgc3RyaW5ncywgdmFyaWFi
bGUgYXJndW1lbnRzCiAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjI4PgogICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzMyODI4PgoKICAgICAgICBDb25z
b2xlIG5vdyB0YWtlcyBjYXJlIG9mIGNhbGxpbmcgQ2hyb21lOjphZGRNZXNzYWdlVG9Db25zb2xl
IGZvciB0aGUKICAgICAgICBhcHByb3ByaWF0ZSBtZXNzYWdlcyAoaS5lLiwganVzdCBtZXNzYWdl
cyBmcm9tIEphdmFTY3JpcHQpLiBJZiB5b3UKICAgICAgICBldmVyIHdhbnQgdG8gYWRkIGEgbWVz
c2FnZSB0byB0aGUgY29uc29sZSwgQ29uc29sZSBpcyB0aGUgcGxhY2UgdG8gZG8KICAgICAgICBp
dC4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9D
aHJvbWUuY3BwOgogICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
OgogICAgICAgICAgLSBSZW1vdmVkIHRoZSBNZXNzYWdlU291cmNlIGFuZCBNZXNzYWdlTGV2ZWwg
cGFyYW1ldGVycwogICAgICAgICAgLSBOb3cgcGFzc2VzIGFsbCBtZXNzYWdlcyB1cCB0byB0aGUg
Q2hyb21lQ2xpZW50LiBDb25zb2xlIHRha2VzIGNhcmUKICAgICAgICAgICAgb2Ygb25seSBmZWVk
aW5nIHVzIEpTIG1lc3NhZ2VzLgogICAgICAgICAgLSBObyBsb25nZXIgY2FsbHMgSW5zcGVjdG9y
Q29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZS4gQ29uc29sZQogICAgICAgICAgICB0YWtl
cyBjYXJlIG9mIHRoYXQgbm93LgogICAgICAgICogcGFnZS9DaHJvbWUuaDogTW92ZWQgTWVzc2Fn
ZVNvdXJjZS9NZXNzYWdlTGV2ZWwgdG8gQ29uc29sZS5oLgogICAgICAgICogcGFnZS9Db25zb2xl
LmNwcDoKICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YWRkTWVzc2FnZSk6IEFkZGVkLiBDYWxs
cwogICAgICAgIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3IgSlMgbWVzc2FnZXMsIGFu
ZCBjYWxscwogICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUg
Zm9yIGFsbCBtZXNzYWdlcy4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOiBDaGFu
Z2VkIHRvIGNhbGwgZGlyZWN0bHkgdG8KICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyIGluIGFk
ZGl0aW9uIHRvIENocm9tZS4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6aW5mbyk6IERpdHRv
LgogICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpsb2cpOiBEaXR0by4KICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6d2Fybik6IERpdHRvLgogICAgICAgICogcGFnZS9Db25zb2xlLmg6IEFkZGVk
IE1lc3NhZ2VTb3VyY2UvTWVzc2FnZUxldmVsIGVudW1zIGZyb20gQ2hyb21lLmguCi0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM1ICsr
KysrKysrKysrKysrKysrCiAuLi4vYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxs
YmFjay5jcHAgICB8ICAgIDYgKy0KIC4uLi9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwICAgICAgIHwgICAgNiArLQogLi4uL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAgfCAgICA2ICstCiAuLi4vanMvSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suY3BwICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgICAgfCAgICA4ICstLQogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwICAgICAgICAgICAgfCAgICA1ICstCiBXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgICAgICAgICAgICB8ICAgIDYgKy0t
CiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwICAgICAgICAgICAgICAgICB8ICAg
IDYgKy0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKy0KIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArLS0tCiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKy0tLS0KIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0tLQogV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICst
LS0tLS0tLQogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQwICsrKysrKysrKysrKysrKysrKy0tCiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrKysrKysrCiBXZWJDb3JlL3BhZ2Uv
SW5zcGVjdG9yQ29udHJvbGxlci5oICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgICAgICAgICAgICAgIHwgICAgOSArKy0tCiBX
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcg
KystCiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTYgKysrKy0tLQogMjQgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDk0IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNzIwOWY3ZC4uNDEwNmRhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAwOC0wMy0yMSAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2hhbmdlIGNhbGxzIHRv
IENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSB0byB1c2UgQ29uc29sZTo6YWRkTWVzc2FnZQor
CisgICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9y
fSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKKyAgICAgICAgc3RyaW5ncywgdmFyaWFibGUgYXJndW1l
bnRzCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIy
OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CisKKyAgICAgICAgQ29uc29sZSBu
b3cgdGFrZXMgY2FyZSBvZiBjYWxsaW5nIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3Ig
dGhlCisgICAgICAgIGFwcHJvcHJpYXRlIG1lc3NhZ2VzIChpLmUuLCBqdXN0IG1lc3NhZ2VzIGZy
b20gSmF2YVNjcmlwdCkuIElmIHlvdQorICAgICAgICBldmVyIHdhbnQgdG8gYWRkIGEgbWVzc2Fn
ZSB0byB0aGUgY29uc29sZSwgQ29uc29sZSBpcyB0aGUgcGxhY2UgdG8gZG8KKyAgICAgICAgaXQu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAgIC0gUmVtb3ZlZCB0aGUgTWVzc2FnZVNvdXJjZSBhbmQgTWVzc2FnZUxl
dmVsIHBhcmFtZXRlcnMKKyAgICAgICAgICAtIE5vdyBwYXNzZXMgYWxsIG1lc3NhZ2VzIHVwIHRv
IHRoZSBDaHJvbWVDbGllbnQuIENvbnNvbGUgdGFrZXMgY2FyZQorICAgICAgICAgICAgb2Ygb25s
eSBmZWVkaW5nIHVzIEpTIG1lc3NhZ2VzLgorICAgICAgICAgIC0gTm8gbG9uZ2VyIGNhbGxzIElu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUuIENvbnNvbGUKKyAgICAgICAg
ICAgIHRha2VzIGNhcmUgb2YgdGhhdCBub3cuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDogTW92
ZWQgTWVzc2FnZVNvdXJjZS9NZXNzYWdlTGV2ZWwgdG8gQ29uc29sZS5oLgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKTog
QWRkZWQuIENhbGxzCisgICAgICAgIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3IgSlMg
bWVzc2FnZXMsIGFuZCBjYWxscworICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlIGZvciBhbGwgbWVzc2FnZXMuCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
OjplcnJvcik6IENoYW5nZWQgdG8gY2FsbCBkaXJlY3RseSB0bworICAgICAgICBJbnNwZWN0b3JD
b250cm9sbGVyIGluIGFkZGl0aW9uIHRvIENocm9tZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNv
bGU6OmluZm8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmxvZyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6IERpdHRvLgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5oOiBBZGRlZCBNZXNzYWdlU291cmNlL01lc3NhZ2VMZXZlbCBlbnVtcyBmcm9t
IENocm9tZS5oLgorCisyMDA4LTAzLTIxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4K
KwogICAgICAgICBQYXNzIEpTQ29uc29sZSdzIGFyZ3VtZW50cyB1bm1vZGlmaWVkIHRvIENvbnNv
bGUKIAogICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4saW5mbyxl
cnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAppbmRleCA3YWRhYjVmLi5jYTUwOGYx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2Fs
bGJhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRD
YWxsYmFjay5jcHAKQEAgLTMwLDExICszMCwxMiBAQAogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3Rh
dGVtZW50Q2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25z
b2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldC5oIgogI2luY2x1ZGUg
IkpTU1FMVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKQEAgLTkyLDggKzkzLDcgQEAgdm9pZCBKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrOjpoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIFNRTFIKICAg
ICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsICJzb3VyY2VVUkwi
KS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRF
eGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYoIlNRTFN0YXRlbWVudENhbGxiYWNrOiAl
c1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgIAogICAgICAgICByYWlzZWRFeGNl
cHRpb24gPSB0cnVlOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAppbmRleCA2MTUwODJkLi4z
OWVhOGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCkBAIC0zMCwxMSArMzAsMTIgQEAKICNpbmNsdWRl
ICJKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJKU1NRTEVy
cm9yLmgiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIlBhZ2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtOTMsOCArOTQsNyBAQCBib29sIEpTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLAogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gZXhjZXB0aW9uLT5nZXQo
ZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgaWYgKEludGVycHJl
dGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjazogJXNcbiIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogICAgICAg
ICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBz
cGVjIHNheXM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAKaW5kZXggY2Q1MGViZC4uOWE1ZTA0YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNw
cApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgor
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIK
ICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0xNDQsOCArMTQ1LDcgQEAgdm9pZCBKU0N1c3RvbVNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgYm8KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMs
ICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6
c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYoIlNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s6ICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZGF0YS0+ZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9kYXRh
LT5mcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICByYWlz
ZWRFeGNlcHRpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcAppbmRleCBmZjRkMWMxLi4z
YzgyYmEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5j
bHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKIAogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJK
U1NRTEVycm9yLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCkBAIC05MSw4ICs5Miw3IEBAIGJvb2wgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s6OmhhbmRsZUV2ZW50KFNRTEVycm9yKiBlcnJvcikKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcoZXhlYyk7
CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgICAgICBwcmludGYoIlNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazogJXNcbiIsIG1lc3Nh
Z2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0K
ICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENh
bGxiYWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3Bw
CmluZGV4IDhjNTA0ZjkuLmE1NzE4MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJKU0N1c3Rv
bVZvaWRDYWxsYmFjay5oIgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvbnNv
bGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgImtqc19iaW5k
aW5nLmgiCiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAKQEAgLTkxLDggKzkxLDcgQEAgdm9pZCBK
U0N1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgICAgICBTdHJpbmcgc291cmNl
VVJMID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsK
ICAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAg
ICAgICAgIHByaW50ZigiVm9pZENhbGxiYWNrOiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAg
ICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7ICAgICAgICAgICAgCiAgICAgfQogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAKaW5kZXggMmM3NWVlZi4uOGRjOTQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lmIEVOQUJM
RShYUEFUSCkKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1
ZGUgImtqc19wcm94eS5oIgogCkBAIC05MCw4ICs5MCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogCiAg
ICAgaWYgKCFsb29rdXBOYW1lc3BhY2VVUklGdW5jICYmICFtX2N1c3RvbVJlc29sdmVyLT5pbXBs
ZW1lbnRzQ2FsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwYXNzIGFjdHVhbCBsaW5lIG51bWJl
ciBhbmQgc291cmNlIFVSTC4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90
IGhhdmUgYSBsb29rdXBOYW1lc3BhY2VVUkkgbWV0aG9kLiIsIDAsIFN0cmluZygpKTsKKyAgICAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90IGhhdmUg
YSBsb29rdXBOYW1lc3BhY2VVUkkgbWV0aG9kLiIsIDAsIFN0cmluZygpKTsKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtMTE2LDggKzExNSw3IEBAIFN0cmluZyBKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4
KQogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJj
ZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQ
cmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiWFBhdGhOU1Jlc29sdmVyOiAl
c1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9u
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxs
KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNGJjYWNmNi4u
Y2IzMzBhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgot
I2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgpAQCAtODg0LDggKzg4NCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmludEVycm9yTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiAgICAgaWYgKEludGVycHJldGVyOjpz
aG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgcHJpbnRmKCIlcyIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsgLy8gRklYTUU6IHByb3Zp
ZGUgYSByZWFsIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgorICAgIGZyYW1lLT5kb21XaW5k
b3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsgLy8gRklYTUU6IHByb3ZpZGUgYSByZWFsIGxp
bmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgogfQogCiBFeGVjU3RhdGUqIEpTRE9NV2luZG93QmFz
ZTo6Z2xvYmFsRXhlYygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5k
ZXggZmVkMjcwYi4uNjYyNjAwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcApAQCAtMjQsMTMgKzI0LDEyIEBACiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAK
ICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ29u
c29sZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgS0pTOwpAQCAtODEsOCArODAsNyBAQCB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShKU0RPTVdpbmRvdyogd2luZG93KQogICAgICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgImxpbmUiKS0+dG9JbnQzMihleGVjKTsK
ICAgICAgICAgICAgICAgICBpZiAoSW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucygp
KQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIih0aW1lcik6JXNcbiIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcAppbmRleCBlNTUyMTUzLi5mYzYw
MzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNp
bmNsdWRlICJranNfZXZlbnRzLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNs
dWRlICJKU0V2ZW50VGFyZ2V0Tm9kZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJr
anNfcHJveHkuaCIKICNpbmNsdWRlIDxranMvZnVuY3Rpb25fb2JqZWN0Lmg+CiAKQEAgLTExMSw4
ICsxMTAsNyBAQCB2b2lkIEpTQWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVu
dCogZWxlLCBib29sIGlzV2luZG93RXZlbnQpCiAgICAgICAgICAgICBTdHJpbmcgc291cmNlVVJM
ID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAg
ICAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgICAgICAgICAgcHJpbnRmKCIoZXZlbnQgaGFuZGxlcik6JXNcbiIsIG1lc3NhZ2UudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0g
ICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKKyAgICAgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxs
KCkgJiYgZXZlbnQtPnN0b3Jlc1Jlc3VsdEFzU3RyaW5nKCkpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94
eS5jcHAKaW5kZXggMTgxOWFhNC4uYjQyNjliNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfcHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNw
cApAQCAtMjEsNyArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImtqc19w
cm94eS5oIgogCi0jaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC05OCw4ICs5OSw3IEBAIEpTVmFsdWUq
IEtKU1Byb3h5OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUs
IGNvbnN0IFN0cmluZyYKICAgICAgICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjb21wLnZhbHVl
KCktPnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IGNvbXAudmFsdWUo
KS0+dG9PYmplY3QoZXhlYyktPmdldChleGVjLCAibGluZSIpLT50b0ludDMyKGV4ZWMpOwogICAg
ICAgICBVU3RyaW5nIHNvdXJjZVVSTCA9IGNvbXAudmFsdWUoKS0+dG9PYmplY3QoZXhlYyktPmdl
dChleGVjLCAic291cmNlVVJMIiktPnRvU3RyaW5nKGV4ZWMpOwotICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRN
ZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2Fn
ZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfQogCiAg
ICAgbV9wcm9jZXNzaW5nSW5saW5lQ29kZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCmluZGV4IGM3
ZTQ0NGUuLjFiMmYzMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50VHlwZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00OCw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKIApAQCAtMTQ1MSwxMCArMTQ1Miw2
IEBAIHZvaWQgSFRNTFBhcnNlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNlckVycm9y
Q29kZSBlcnJvckNvZGUsIGNvbnN0IEF0b21pCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSFRNTFRva2VuaXplciogaHRtbFRva2VuaXplciA9
IHN0YXRpY19jYXN0PEhUTUxUb2tlbml6ZXIqPihkb2N1bWVudC0+dG9rZW5pemVyKCkpOwogICAg
IGludCBsaW5lTnVtYmVyID0gaHRtbFRva2VuaXplci0+bGluZU51bWJlcigpICsgMTsKIApAQCAt
MTQ4OCw3ICsxNDg1LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZShI
VE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgQXRvbWkKICAgICBtZXNzYWdlLnJl
cGxhY2UoIiV0YWcxIiwgdGFnMSk7CiAgICAgbWVzc2FnZS5yZXBsYWNlKCIldGFnMiIsIHRhZzIp
OwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSFRNTE1lc3NhZ2VT
b3VyY2UsCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsCiAgICAgICAgIGlzV2FybmluZyhlcnJvckNvZGUpID8gV2FybmluZ01l
c3NhZ2VMZXZlbCA6IEVycm9yTWVzc2FnZUxldmVsLAogICAgICAgICBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9s
b2FkZXIvQ2FjaGUuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCmluZGV4IGI3ZjVhNDgu
LjFlZDA0ZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9DYWNoZS5jcHAKQEAgLTEwNSwxNCArMTA1LDE0IEBAIENhY2hlZFJlc291cmNl
KiBDYWNoZTo6cmVxdWVzdFJlc291cmNlKERvY0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRSZXNv
dXJjZTo6VHlwCiAgICAgICAgIGlmICghc2tpcENhbkxvYWRDaGVjayAmJiBGcmFtZUxvYWRlcjo6
cmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkgJiYgIUZyYW1lTG9hZGVyOjpjYW5Mb2FkKCpyZXNvdXJj
ZSwgZG9jTG9hZGVyLT5kb2MoKSkpIHsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2MgPSBkb2NM
b2FkZXItPmRvYygpOwogICAgICAgICAgICAgaWYoZG9jICYmICFpc1ByZWxvYWQpCi0gICAgICAg
ICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChkb2MtPnBhZ2UoKSwg
cmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9j
YWxMb2FkRmFpbGVkKGRvYy0+ZnJhbWUoKSwgcmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFza2lwQ2Fu
TG9hZENoZWNrICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiAhRnJh
bWVMb2FkZXI6OmNhbkxvYWQodXJsLCBkb2NMb2FkZXItPmRvYygpKSkgewogICAgICAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IGRvY0xvYWRlci0+ZG9jKCk7CiAgICAgICAgICAgICBpZihkb2MgJiYg
IWlzUHJlbG9hZCkKLSAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKGRvYy0+cGFnZSgpLCB1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgIEZyYW1l
TG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jLT5mcmFtZSgpLCB1cmwuc3RyaW5nKCkp
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGE4NzcxZDEuLjQ1ODBmODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCkBAIC00NDgsNyArNDQ5LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjps
b2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtV
UkwKICAgICB9CiAKICAgICBpZiAoIWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAg
RnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVybC5z
dHJpbmcoKSk7CisgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9m
cmFtZSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNjI5
LDcgKzE2MzAsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKFJlbmRlclBhcnQqIHJl
bmRlcmVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKIAogICAg
ICAgICBpZiAoIWNhbkxvYWQodXJsLCBmcmFtZSgpLT5kb2N1bWVudCgpKSkgewotICAgICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVy
bC5zdHJpbmcoKSk7CisgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFp
bGVkKG1fZnJhbWUsIHVybC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMTk1OCw3ICsxOTU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXN0b3J5LCBib29sIHUK
ICAgICBBU1NFUlQoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKHVybC5wcm90b2NvbElz
KCJmaWxlIikpIHsKICAgICAgICAgaWYgKCFjYW5Mb2FkKHVybCwgZnJhbWUoKS0+ZG9jdW1lbnQo
KSkgJiYgIWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAgICAgIEZyYW1lTG9hZGVy
OjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwuc3RyaW5nKCkpOwor
ICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCB1
cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjE3MywxMSArMjE3NCwxMyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgRG9jdW1lbnQqIGRvYykKICAgICByZXR1cm4gZG9j
ICYmIGRvYy0+aXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0IFBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwuaXNF
bXB0eSgpKTsKLSAgICBpZiAocGFnZSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vdCBhbGxv
d2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6ICIgKyB1cmwsIDAsIFN0cmluZygpKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAi
Tm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVybCwgMCwgU3RyaW5nKCkp
OwogfQogCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQpAQCAtMjM3NSw4ICsyMzc4LDcgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSkgY29u
c3QKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8gdGhlIGNvbnNvbGUgb2YgdGhlIGFj
dGl2ZUZyYW1lIGFzIHdlbGw/Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gdGFyZ2V0RnJhbWUt
PnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygp
KTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5n
KCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCBkYWUwOTg1Li4xYWI1NWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE2MSw3ICsxNjEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIGNhbkxvYWQoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogICAgICAgICBzdGF0aWMgYm9vbCBjYW5M
b2FkKGNvbnN0IEtVUkwmLCBjb25zdCBEb2N1bWVudCopOwogICAgICAgICBzdGF0aWMgYm9vbCBj
YW5Mb2FkKGNvbnN0IENhY2hlZFJlc291cmNlJiwgY29uc3QgRG9jdW1lbnQqKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgcmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0IFBhZ2UqLCBjb25zdCBTdHJp
bmcmIHVybCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlcG9ydExvY2FsTG9hZEZhaWxlZChjb25z
dCBGcmFtZSosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBzaG91
bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDlmZTA3ZjQuLmMxNDJiMTYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFt
ZSogZnJhbWUsIFN1YnJlc291cmMKICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sKICAgICAgICAg
ICAgICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKQogICAgICAgICAgICAg
JiYgIUZyYW1lTG9hZGVyOjpjYW5Mb2FkKHJlcXVlc3QudXJsKCksIGZyYW1lLT5kb2N1bWVudCgp
KSkgewotICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLT5w
YWdlKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1MTE5YzQxLi45Njc1NmQ1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTkzLDEyICsxOTIs
OSBAQCB2b2lkIENocm9tZTo6c2V0UmVzaXphYmxlKGJvb2wgYikgY29uc3QKICAgICBtX2NsaWVu
dC0+c2V0UmVzaXphYmxlKGIpOwogfQogCi12b2lkIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit2
b2lkIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCiB7Ci0gICAgaWYgKHNv
dXJjZSA9PSBKU01lc3NhZ2VTb3VyY2UpCi0gICAgICAgIG1fY2xpZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKLQotICAgIG1fcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKKyAgICBtX2NsaWVudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAKIGJvb2wgQ2hyb21l
OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDliYzQyZTAuLjM1Y2Vm
OWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKQEAgLTQ2LDIxICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1
Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAgICAgCi0g
ICAgZW51bSBNZXNzYWdlU291cmNlIHsKLSAgICAgICAgSFRNTE1lc3NhZ2VTb3VyY2UsCi0gICAg
ICAgIFhNTE1lc3NhZ2VTb3VyY2UsCi0gICAgICAgIEpTTWVzc2FnZVNvdXJjZSwKLSAgICAgICAg
Q1NTTWVzc2FnZVNvdXJjZSwKLSAgICAgICAgT3RoZXJNZXNzYWdlU291cmNlCi0gICAgfTsKLQot
ICAgIGVudW0gTWVzc2FnZUxldmVsIHsKLSAgICAgICAgVGlwTWVzc2FnZUxldmVsLAotICAgICAg
ICBMb2dNZXNzYWdlTGV2ZWwsCi0gICAgICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCi0gICAgICAg
IEVycm9yTWVzc2FnZUxldmVsCi0gICAgfTsKLQogICAgIGNsYXNzIENocm9tZSA6IE5vbmNvcHlh
YmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENocm9tZShQYWdlKiwgQ2hyb21lQ2xpZW50Kik7
CkBAIC0xMDIsNyArODcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAg
ICB2b2lkIHNldFJlc2l6YWJsZShib29sKSBjb25zdDsKIAotICAgICAgICB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAg
ICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgQ29uc29sZQorICAg
ICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKIAogICAgICAgICBib29s
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwogICAgICAgICBib29sIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKaW5kZXggZWEzOWI2MS4uOTM0MzczMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8a2pzL2xp
c3QuaD4KQEAgLTUwLDYgKzUxLDIxIEBAIHZvaWQgQ29uc29sZTo6ZGlzY29ubmVjdEZyYW1lKCkK
ICAgICBtX2ZyYW1lID0gMDsKIH0KIAordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgaWYg
KCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNvdXJj
ZSA9PSBKU01lc3NhZ2VTb3VyY2UpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdl
VG9Db25zb2xlKG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisKKyAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogdm9pZCBDb25zb2xlOjplcnJv
cihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKGFy
Z3VtZW50cy5pc0VtcHR5KCkpCkBAIC02Miw3ICs3OCwxMSBAQCB2b2lkIENvbnNvbGU6OmVycm9y
KEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gYXJndW1lbnRzWzBdLT50b1N0cmluZyhzdGF0ZSk7CisgICAg
U3RyaW5nIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKTsKKworICAg
IHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7Cisg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3Rh
dGUpLCAwLCB1cmwpOwogfQogCiB2b2lkIENvbnNvbGU6OmluZm8oRXhlY1N0YXRlKiBzdGF0ZSwg
Y29uc3QgTGlzdCYgYXJndW1lbnRzKQpAQCAtNzcsNyArOTcsMTEgQEAgdm9pZCBDb25zb2xlOjpp
bmZvKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHNbMF0tPnRv
U3RyaW5nKHN0YXRlKSwgMCwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpKTsK
KyAgICBTdHJpbmcgbWVzc2FnZSA9IGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpOworICAg
IFN0cmluZyB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CisKKyAg
ICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOwor
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzWzBdLT50b1N0cmluZyhzdGF0
ZSksIDAsIHVybCk7CiB9CiAKIHZvaWQgQ29uc29sZTo6bG9nKEV4ZWNTdGF0ZSogc3RhdGUsIGNv
bnN0IExpc3QmIGFyZ3VtZW50cykKQEAgLTkyLDcgKzExNiwxMSBAQCB2b2lkIENvbnNvbGU6Omxv
ZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzWzBdLT50b1N0
cmluZyhzdGF0ZSksIDAsIG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKSk7Cisg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmd1bWVudHNbMF0tPnRvU3RyaW5nKHN0YXRlKTsKKyAgICBT
dHJpbmcgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpOworCisgICAg
cGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWVzc2FnZSwgMCwgdXJsKTsKKyAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUp
LCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwogfQogCiB2b2lkIENv
bnNvbGU6Ondhcm4oRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQpAQCAt
MTA3LDcgKzEzNSwxMSBAQCB2b2lkIENvbnNvbGU6Ondhcm4oRXhlY1N0YXRlKiBzdGF0ZSwgY29u
c3QgTGlzdCYgYXJndW1lbnRzKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBX
YXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHNbMF0tPnRvU3RyaW5nKHN0YXRlKSwgMCwgbV9m
cmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpKTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9
IGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpOworICAgIFN0cmluZyB1cmwgPSBtX2ZyYW1l
LT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CisKKyAgICBwYWdlLT5jaHJvbWUoKS0+YWRk
TWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOworICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIFdhcm5pbmdN
ZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuaAppbmRleCBlOTNiMDY1Li41OTMwZWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKQEAgLTQxLDYgKzQxLDIyIEBAIG5h
bWVzcGFjZSBLSlMgewogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWU7Cisg
ICAgY2xhc3MgU3RyaW5nOworCisgICAgZW51bSBNZXNzYWdlU291cmNlIHsKKyAgICAgICAgSFRN
TE1lc3NhZ2VTb3VyY2UsCisgICAgICAgIFhNTE1lc3NhZ2VTb3VyY2UsCisgICAgICAgIEpTTWVz
c2FnZVNvdXJjZSwKKyAgICAgICAgQ1NTTWVzc2FnZVNvdXJjZSwKKyAgICAgICAgT3RoZXJNZXNz
YWdlU291cmNlCisgICAgfTsKKworICAgIGVudW0gTWVzc2FnZUxldmVsIHsKKyAgICAgICAgVGlw
TWVzc2FnZUxldmVsLAorICAgICAgICBMb2dNZXNzYWdlTGV2ZWwsCisgICAgICAgIFdhcm5pbmdN
ZXNzYWdlTGV2ZWwsCisgICAgICAgIEVycm9yTWVzc2FnZUxldmVsCisgICAgfTsKIAogICAgIGNs
YXNzIENvbnNvbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDb25zb2xlPiB7CiAgICAgcHVibGljOgpA
QCAtNDgsNiArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNj
b25uZWN0RnJhbWUoKTsKIAorICAgICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgICAgICB2b2lkIGVycm9yKEtKUzo6RXhl
Y1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lkIGluZm8o
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3QmIGFyZ3VtZW50cyk7CiAgICAgICAgIHZv
aWQgbG9nKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFn
ZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNDZhNWRmMy4uZWNkYzU1NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIEluc3BlY3Rv
ckNvbnRyb2xsZXJfaAogI2RlZmluZSBJbnNwZWN0b3JDb250cm9sbGVyX2gKIAotI2luY2x1ZGUg
IkNocm9tZS5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgTm9kZTsK
K2NsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBi
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNDZhMjdjNy4uOGEw
Zjg0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAor
KysgYi9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0yNyw3ICsyNyw4
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgiCiAKICNpbmNsdWRlICJBdG9t
aWNTdHJpbmcuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTk3LDE1ICs5OCwxMyBAQCB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1hdGlvbnMoKQogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldh
cm5pbmc6ICIgKyBtZXNzYWdlLCBtX2RvYy0+dG9rZW5pemVyKCkgPyBtX2RvYy0+dG9rZW5pemVy
KCktPmxpbmVOdW1iZXIoKSA6IDEsIFN0cmluZygpKTsKKyAgICAgICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIldhcm5pbmc6ICIgKyBtZXNzYWdlLCBtX2RvYy0+dG9rZW5pemVyKCkgPyBtX2RvYy0+
dG9rZW5pemVyKCktPmxpbmVOdW1iZXIoKSA6IDEsIFN0cmluZygpKTsKIH0KIAogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydEVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kb2MtPmZyYW1lKCkpCi0gICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRN
ZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJv
cjogIiArIG1lc3NhZ2UsIG1fZG9jLT50b2tlbml6ZXIoKSA/IG1fZG9jLT50b2tlbml6ZXIoKS0+
bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCkt
PmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVs
LCAiRXJyb3I6ICIgKyBtZXNzYWdlLCBtX2RvYy0+dG9rZW5pemVyKCkgPyBtX2RvYy0+dG9rZW5p
emVyKCktPmxpbmVOdW1iZXIoKSA6IDEsIFN0cmluZygpKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBT
VkdTdHlsZWRFbGVtZW50KiBvYmopCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjYwODE4Ni4u
ZWM1ODgzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1
ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29uc29sZS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAgLTMwLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNl
cnMuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
QEAgLTU0OSw4ICs1NTAsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVy
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRQogICAgICAgICAKICAg
ICAvLyBBIHByaXZpbGVnZWQgc2NyaXB0IChlLmcuIGEgRGFzaGJvYXJkIHdpZGdldCkgY2FuIHNl
dCBhbnkgaGVhZGVycy4KICAgICBpZiAoIW1fZG9jLT5pc0FsbG93ZWRUb0xvYWRMb2NhbFJlc291
cmNlcygpICYmICFpc1NhZmVSZXF1ZXN0SGVhZGVyKG5hbWUpKSB7Ci0gICAgICAgIGlmIChtX2Rv
YyAmJiBtX2RvYy0+ZnJhbWUoKSAmJiBtX2RvYy0+ZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICAg
ICAgbV9kb2MtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
SlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlJlZnVzZWQgdG8gc2V0IHVuc2Fm
ZSBoZWFkZXIgIiArIG5hbWUsIDEsIFN0cmluZygpKTsKKyAgICAgICAgaWYgKG1fZG9jICYmIG1f
ZG9jLT5mcmFtZSgpKQorICAgICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IlJlZnVzZWQgdG8gc2V0IHVuc2FmZSBoZWFkZXIgIiArIG5hbWUsIDEsIFN0cmluZygpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAgYi9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBiOGNlN2YzLi5k
MGNhYzM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVk
ZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNhY2hlLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgog
I2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC03NSw4ICs3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyh2b2lkKiB1c2VyRGF0YSwgeG1sRXJy
b3IqIGVycm9yKQogewotICAgIENocm9tZSogY2hyb21lID0gc3RhdGljX2Nhc3Q8Q2hyb21lKj4o
dXNlckRhdGEpOwotICAgIGlmICghY2hyb21lKQorICAgIENvbnNvbGUqIGNvbnNvbGUgPSBzdGF0
aWNfY2FzdDxDb25zb2xlKj4odXNlckRhdGEpOworICAgIGlmICghY29uc29sZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTWVzc2FnZUxldmVsIGxldmVsOwpAQCAtOTQsNyArOTYsNyBAQCB2b2lk
IFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKHZvaWQqIHVzZXJEYXRhLCB4bWxFcnJvciog
ZXJyb3IpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjaHJvbWUtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoWE1MTWVzc2FnZVNvdXJjZSwgbGV2ZWwsIGVycm9yLT5tZXNzYWdlLCBlcnJv
ci0+bGluZSwgZXJyb3ItPmZpbGUpOworICAgIGNvbnNvbGUtPmFkZE1lc3NhZ2UoWE1MTWVzc2Fn
ZVNvdXJjZSwgbGV2ZWwsIGVycm9yLT5tZXNzYWdlLCBlcnJvci0+bGluZSwgZXJyb3ItPmZpbGUp
OwogfQogCiAvLyBGSVhNRTogVGhlcmUgc2VlbXMgdG8gYmUgbm8gd2F5IHRvIGNvbnRyb2wgdGhl
IGN0eHQgcG9pbnRlciBmb3IgbG9hZGluZyBoZXJlLCB0aHVzIHdlIGhhdmUgZ2xvYmFscy4KQEAg
LTEyMywxMCArMTI1LDEwIEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4
bWxDaGFyKiB1cmksCiAgICAgICAgICAgICBpZiAoZ2xvYmFsRG9jTG9hZGVyLT5mcmFtZSgpKSAK
ICAgICAgICAgICAgICAgICBnbG9iYWxEb2NMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5sb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHVybCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIAotICAg
ICAgICAgICAgQ2hyb21lKiBjaHJvbWUgPSAwOwotICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBnbG9iYWxQcm9jZXNzb3ItPnhzbFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5wYWdl
KCkpCi0gICAgICAgICAgICAgICAgY2hyb21lID0gcGFnZS0+Y2hyb21lKCk7Ci0gICAgICAgICAg
ICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKGNocm9tZSwgWFNMVFByb2Nlc3Nvcjo6cGFyc2VF
cnJvckZ1bmMpOworICAgICAgICAgICAgQ29uc29sZSogY29uc29sZSA9IDA7CisgICAgICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gZ2xvYmFsUHJvY2Vzc29yLT54c2xTdHlsZXNoZWV0KCktPm93
bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgICAgICBjb25zb2xlID0gZnJhbWUt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCk7CisgICAgICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJy
b3JGdW5jKGNvbnNvbGUsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsKIAogICAgICAg
ICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBhbiBlbmNvZGluZyBoZXJlLiBOZWl0aGVyIEdlY2tv
IG5vciBXaW5JRSByZXNwZWN0cwogICAgICAgICAgICAgLy8gdGhlIGVuY29kaW5nIHNwZWNpZmll
ZCBpbiB0aGUgSFRUUCBoZWFkZXJzLgotLSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19934</attachid>
            <date>2008-03-21 13:39:47 -0700</date>
            <delta_ts>2008-03-21 13:40:46 -0700</delta_ts>
            <desc>Step 2: Route all Console-related activities through Console</desc>
            <filename>0001-Pass-JSConsole-s-arguments-unmodified-to-Con.patch</filename>
            <type>text/plain</type>
            <size>13510</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAyODA1NDhiMmFjZjg5NzRlMTQ4OWE5ZGExNTZjMzgyZjU5MjUyYzU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE0OjI0OjI4IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUGFz
cyBKU0NvbnNvbGUncyBhcmd1bWVudHMgdW5tb2RpZmllZCB0byBDb25zb2xlCgogICAgICAgIFBh
cnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9yfSBzaG91bGQgc3Vw
cG9ydCBmb3JtYXQKICAgICAgICBzdHJpbmdzLCB2YXJpYWJsZSBhcmd1bWVudHMKICAgICAgICA8
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CiAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CgogICAgICAgIEFsbCBvZiBKU0NvbnNvbGUncyBtZXRob2Rz
IGFyZSBub3cgY3VzdG9tLCBzbyB0aGF0IHdlIGNhbiBwYXNzIHRoZQogICAgICAgIGFyZ3VtZW50
cyB1bm1vZGlmaWVkIHRvIENvbnNvbGUuIENvbnNvbGUgbm93IGhhbmRsZXMgY2FsbGluZwogICAg
ICAgIHRvU3RyaW5nKCkgb24gdGhlIGZpcnN0IGFyZ3VtZW50LiBMYXRlciBpdCB3aWxsIHBhc3Mg
dGhlIGFyZ3VtZW50cyBvZmYKICAgICAgICB0byBJbnNwZWN0b3JDb250cm9sbGVyLgoKICAgICAg
ICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFuZ2VzIGNhdXNlZCBieSB0aGlzIHBh
dGNoLgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSEFWRU4n
VCBBRERFRCBKU0NvbnNvbGVDdXN0b20uY3BwIFRPIFdlYkNvcmUueGNvZGVwcm9qIFlFVCAoT09Q
UyEpLgoKICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9saXN0Lmg6IEFkZGVkLgogICAg
ICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEpTQ29uc29sZUN1c3RvbS5jcHAgdG8gdGhlIHBy
b2plY3QuCiAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCiAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCiAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6
IERpdHRvLgogICAgICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDogQWRkZWQu
CiAgICAgICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6ZXJyb3IpOgogICAgICAgIChXZWJDb3JlOjpK
U0NvbnNvbGU6OmluZm8pOgogICAgICAgIChXZWJDb3JlOjpKU0NvbnNvbGU6OmxvZyk6CiAgICAg
ICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6d2Fybik6CiAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3Bw
OiBDaGFuZ2VkIGFsbCBtZXRob2RzIHRvIHRha2UgYW4gRXhlY1N0YXRlKiBhbmQgYQogICAgICAg
IGNvbnN0IExpc3QmLiBUaGUgZmlyc3QgaXRlbSBpbiB0aGUgTGlzdCBpcyB0b1N0cmluZygpZWQg
YW5kIHBhc3NlZCB0bwogICAgICAgIENocm9tZS4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
ZXJyb3IpOgogICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjppbmZvKToKICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6bG9nKToKICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CiAgICAg
ICAgKiBwYWdlL0NvbnNvbGUuaDoKICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6Ci0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrKysr
KysrKysrKysKIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL2xpc3QuaCAgICB8ICAgIDEg
KwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJD
b3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICB8ICAgIDggKysrKwogV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29uc29sZUN1c3RvbS5jcHAgfCAgIDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCAgICAgICAgICAgICAgICB8ICAgMzEgKysrKysrKysr
KysrLS0tLQogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysrKystLS0KIFdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCAgICAgICAgICAgICAgICB8ICAgMTAg
KysrLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvbGlz
dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0
b20uY3BwCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyYmYzZDMxLi43MjA5ZjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDA4LTAzLTIxICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXNzIEpTQ29uc29sZSdzIGFy
Z3VtZW50cyB1bm1vZGlmaWVkIHRvIENvbnNvbGUKKworICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIy
ODogY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0Cisg
ICAgICAgIHN0cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50cworICAgICAgICA8aHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzMyODI4PgorCisgICAgICAgIEFsbCBvZiBKU0NvbnNvbGUncyBtZXRob2RzIGFyZSBub3cg
Y3VzdG9tLCBzbyB0aGF0IHdlIGNhbiBwYXNzIHRoZQorICAgICAgICBhcmd1bWVudHMgdW5tb2Rp
ZmllZCB0byBDb25zb2xlLiBDb25zb2xlIG5vdyBoYW5kbGVzIGNhbGxpbmcKKyAgICAgICAgdG9T
dHJpbmcoKSBvbiB0aGUgZmlyc3QgYXJndW1lbnQuIExhdGVyIGl0IHdpbGwgcGFzcyB0aGUgYXJn
dW1lbnRzIG9mZgorICAgICAgICB0byBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgIFRo
ZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZXMgY2F1c2VkIGJ5IHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSEFWRU4n
VCBBRERFRCBKU0NvbnNvbGVDdXN0b20uY3BwIFRPIFdlYkNvcmUueGNvZGVwcm9qIFlFVCAoT09Q
UyEpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMva2pzL2xpc3QuaDogQWRkZWQuCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEpTQ29uc29sZUN1c3RvbS5jcHAgdG8gdGhl
IHByb2plY3QuCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjplcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NvbnNvbGU6OmluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjps
b2cpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb25zb2xlOjp3YXJuKToKKyAgICAgICAgKiBwYWdl
L0NvbnNvbGUuY3BwOiBDaGFuZ2VkIGFsbCBtZXRob2RzIHRvIHRha2UgYW4gRXhlY1N0YXRlKiBh
bmQgYQorICAgICAgICBjb25zdCBMaXN0Ji4gVGhlIGZpcnN0IGl0ZW0gaW4gdGhlIExpc3QgaXMg
dG9TdHJpbmcoKWVkIGFuZCBwYXNzZWQgdG8KKyAgICAgICAgQ2hyb21lLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6aW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgICogcGFnZS9D
b25zb2xlLmlkbDoKKworMjAwOC0wMy0yMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CisKICAgICAgICAgUmVuYW1lIHN0YXRpYyBpbmZvIG1lbWJlcnMgdG8gc19pbmZvCiAKICAgICAg
ICAgVGhpcyBhdm9pZHMgY29uZmxpY3RzIHdpdGggY3VzdG9tICJpbmZvIiBtZXRob2RzLCBzdWNo
IGFzIHRoZSBvbmUgdGhhdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9r
anMvbGlzdC5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvbGlzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlOTYxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9saXN0LmgKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL2xpc3QuaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGI2MzM4ZGQuLmJkMzAzNDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtNDcxLDYgKzQ3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJyYXlDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDb25zb2xlQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
Njg2MTg2Yi4uZGM1NDRmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MDEsNiArNDAxLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
YmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9q
cy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L0pTQ1NTVmFsdWVDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDk4Njc2ZWIuLmNjNjU3MmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtOTczMCw2ICs5NzMwLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0NvbnNvbGVDdXN0b20u
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ1NTUnVsZUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCkBAIC0xMjI2Niw2ICsxMjI3MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNca2pzXGxp
c3QuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xranNcbG9va3VwLmgiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDQwMjYwMzUuLmQ2YjZlNmUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
CkBAIC0zOSw2ICszOSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBu
ZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgYmluZGluZ3MvanMvSlNDYW52YXNQaXhl
bEFycmF5Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20u
Y3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5NjQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQ29uc29sZS5oIgorCisjaW5jbHVkZSAiQ29uc29sZS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgS0pTOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUq
IEpTQ29uc29sZTo6ZXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRz
KQoreworICAgIGltcGwoKS0+ZXJyb3Ioc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTQ29uc29sZTo6aW5mbyhFeGVjU3RhdGUqIHN0
YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCit7CisgICAgaW1wbCgpLT5pbmZvKHN0YXRlLCBh
cmd1bWVudHMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0Nv
bnNvbGU6OmxvZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCit7Cisg
ICAgaW1wbCgpLT5sb2coc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUqIEpTQ29uc29sZTo6d2FybihFeGVjU3RhdGUqIHN0YXRlLCBjb25z
dCBMaXN0JiBhcmd1bWVudHMpCit7CisgICAgaW1wbCgpLT53YXJuKHN0YXRlLCBhcmd1bWVudHMp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKaW5kZXggZDQ1YWY2Mi4uZWEzOWI2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMzQsNiArMzQs
OSBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8a2pzL2xpc3QuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw4ICs1MCwxMSBAQCB2
b2lkIENvbnNvbGU6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKLXZv
aWQgQ29uc29sZTo6ZXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25zb2xlOjpl
cnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CisgICAgaWYg
KGFyZ3VtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01NiwxMSArNjIsMTQgQEAgdm9pZCBDb25zb2xlOjpl
cnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+
dXJsKCkucHJldHR5VVJMKCkpOworICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwog
fQogCi12b2lkIENvbnNvbGU6OmluZm8oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25z
b2xlOjppbmZvKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKIHsKKyAg
ICBpZiAoYXJndW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFt
X2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTY4LDExICs3NywxNCBAQCB2b2lkIENvbnNv
bGU6OmluZm8oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwog
fQogCi12b2lkIENvbnNvbGU6OmxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIENvbnNv
bGU6OmxvZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CisgICAg
aWYgKGFyZ3VtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9m
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04MCwxMSArOTIsMTQgQEAgdm9pZCBDb25zb2xl
Ojpsb2coY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigpLT51
cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJp
bmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwogfQog
Ci12b2lkIENvbnNvbGU6Ondhcm4oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDb25zb2xl
Ojp3YXJuKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKIHsKKyAgICBp
ZiAoYXJndW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTkyLDcgKzEwNyw3IEBAIHZvaWQgQ29uc29sZTo6
d2Fybihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHNbMF0t
PnRvU3RyaW5nKHN0YXRlKSwgMCwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKaW5kZXggMDYyY2ZkZC4uZTkzYjA2
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5oCkBAIC0zMCw3ICszMCwxMyBAQAogI2RlZmluZSBDb25zb2xlX2gKIAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKKyAgICBjbGFzcyBMaXN0OworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQyLDEwICs0OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBkaXNj
b25uZWN0RnJhbWUoKTsKIAotICAgICAgICB2b2lkIGVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7Ci0gICAgICAgIHZvaWQgaW5mbyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2
b2lkIGxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2b2lkIHdhcm4oY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBlcnJvcihLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6TGlzdCYgYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCBpbmZvKEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOworICAgICAgICB2b2lkIGxvZyhLSlM6
OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYgYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCB3
YXJuKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQ29uc29sZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaWRsIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCmluZGV4IDMzNTZjMGUu
LjEwMDQ2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAorKysgYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEwICsyOSwxMCBAQAogbW9kdWxlIHdpbmRvdyB7CiAK
ICAgICBpbnRlcmZhY2UgQ29uc29sZSB7Ci0gICAgICAgIHZvaWQgZXJyb3IoaW4gRE9NU3RyaW5n
IG1lc3NhZ2UpOwotICAgICAgICB2b2lkIGluZm8oaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOwotICAg
ICAgICB2b2lkIGxvZyhpbiBET01TdHJpbmcgbWVzc2FnZSk7Ci0gICAgICAgIHZvaWQgd2Fybihp
biBET01TdHJpbmcgbWVzc2FnZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZXJyb3IoKTsKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBpbmZvKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgbG9nKCk7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2FybigpOwogICAgIH07CiAKIH0KLS0gCjEuNS40LjMK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19935</attachid>
            <date>2008-03-21 13:40:46 -0700</date>
            <delta_ts>2008-04-16 12:21:19 -0700</delta_ts>
            <desc>Step 2: Route all Console-related activities through Console</desc>
            <filename>0001-Change-calls-to-Chrome-addMessageToConsole.patch</filename>
            <type>text/plain</type>
            <size>36248</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSA0OTMyZTIyNjJjNDhhMTgwNjNjN2YwMzdlNjI5MzNhMTgyNTI1NWFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE1OjE3OjM4IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgQ2hh
bmdlIGNhbGxzIHRvIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSB0byB1c2UgQ29uc29sZTo6
YWRkTWVzc2FnZQoKICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4s
aW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CiAgICAgICAgc3RyaW5ncywgdmFyaWFi
bGUgYXJndW1lbnRzCiAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjI4PgogICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzMyODI4PgoKICAgICAgICBDb25z
b2xlIG5vdyB0YWtlcyBjYXJlIG9mIGNhbGxpbmcgQ2hyb21lOjphZGRNZXNzYWdlVG9Db25zb2xl
IGZvciB0aGUKICAgICAgICBhcHByb3ByaWF0ZSBtZXNzYWdlcyAoaS5lLiwganVzdCBtZXNzYWdl
cyBmcm9tIEphdmFTY3JpcHQpLiBJZiB5b3UKICAgICAgICBldmVyIHdhbnQgdG8gYWRkIGEgbWVz
c2FnZSB0byB0aGUgY29uc29sZSwgQ29uc29sZSBpcyB0aGUgcGxhY2UgdG8gZG8KICAgICAgICBp
dC4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9D
aHJvbWUuY3BwOgogICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
OgogICAgICAgICAgLSBSZW1vdmVkIHRoZSBNZXNzYWdlU291cmNlIGFuZCBNZXNzYWdlTGV2ZWwg
cGFyYW1ldGVycwogICAgICAgICAgLSBOb3cgcGFzc2VzIGFsbCBtZXNzYWdlcyB1cCB0byB0aGUg
Q2hyb21lQ2xpZW50LiBDb25zb2xlIHRha2VzIGNhcmUKICAgICAgICAgICAgb2Ygb25seSBmZWVk
aW5nIHVzIEpTIG1lc3NhZ2VzLgogICAgICAgICAgLSBObyBsb25nZXIgY2FsbHMgSW5zcGVjdG9y
Q29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZS4gQ29uc29sZQogICAgICAgICAgICB0YWtl
cyBjYXJlIG9mIHRoYXQgbm93LgogICAgICAgICogcGFnZS9DaHJvbWUuaDogTW92ZWQgTWVzc2Fn
ZVNvdXJjZS9NZXNzYWdlTGV2ZWwgdG8gQ29uc29sZS5oLgogICAgICAgICogcGFnZS9Db25zb2xl
LmNwcDoKICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YWRkTWVzc2FnZSk6IEFkZGVkLiBDYWxs
cwogICAgICAgIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3IgSlMgbWVzc2FnZXMsIGFu
ZCBjYWxscwogICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUg
Zm9yIGFsbCBtZXNzYWdlcy4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOiBDaGFu
Z2VkIHRvIGNhbGwgZGlyZWN0bHkgdG8KICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyIGluIGFk
ZGl0aW9uIHRvIENocm9tZS4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6aW5mbyk6IERpdHRv
LgogICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpsb2cpOiBEaXR0by4KICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6d2Fybik6IERpdHRvLgogICAgICAgICogcGFnZS9Db25zb2xlLmg6IEFkZGVk
IE1lc3NhZ2VTb3VyY2UvTWVzc2FnZUxldmVsIGVudW1zIGZyb20gQ2hyb21lLmguCi0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM1ICsr
KysrKysrKysrKysrKysrCiAuLi4vYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxs
YmFjay5jcHAgICB8ICAgIDYgKy0KIC4uLi9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwICAgICAgIHwgICAgNiArLQogLi4uL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAgfCAgICA2ICstCiAuLi4vanMvSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suY3BwICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgICAgfCAgICA4ICstLQogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwICAgICAgICAgICAgfCAgICA1ICstCiBXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgICAgICAgICAgICB8ICAgIDYgKy0t
CiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwICAgICAgICAgICAgICAgICB8ICAg
IDYgKy0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKy0KIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArLS0tCiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKy0tLS0KIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0tLQogV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICst
LS0tLS0tLQogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQwICsrKysrKysrKysrKysrKysrKy0tCiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrKysrKysrCiBXZWJDb3JlL3BhZ2Uv
SW5zcGVjdG9yQ29udHJvbGxlci5oICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgICAgICAgICAgICAgIHwgICAgOSArKy0tCiBX
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcg
KystCiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTYgKysrKy0tLQogMjQgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDk0IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNzIwOWY3ZC4uNDEwNmRhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAwOC0wMy0yMSAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2hhbmdlIGNhbGxzIHRv
IENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSB0byB1c2UgQ29uc29sZTo6YWRkTWVzc2FnZQor
CisgICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9y
fSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKKyAgICAgICAgc3RyaW5ncywgdmFyaWFibGUgYXJndW1l
bnRzCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIy
OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CisKKyAgICAgICAgQ29uc29sZSBu
b3cgdGFrZXMgY2FyZSBvZiBjYWxsaW5nIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3Ig
dGhlCisgICAgICAgIGFwcHJvcHJpYXRlIG1lc3NhZ2VzIChpLmUuLCBqdXN0IG1lc3NhZ2VzIGZy
b20gSmF2YVNjcmlwdCkuIElmIHlvdQorICAgICAgICBldmVyIHdhbnQgdG8gYWRkIGEgbWVzc2Fn
ZSB0byB0aGUgY29uc29sZSwgQ29uc29sZSBpcyB0aGUgcGxhY2UgdG8gZG8KKyAgICAgICAgaXQu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAgIC0gUmVtb3ZlZCB0aGUgTWVzc2FnZVNvdXJjZSBhbmQgTWVzc2FnZUxl
dmVsIHBhcmFtZXRlcnMKKyAgICAgICAgICAtIE5vdyBwYXNzZXMgYWxsIG1lc3NhZ2VzIHVwIHRv
IHRoZSBDaHJvbWVDbGllbnQuIENvbnNvbGUgdGFrZXMgY2FyZQorICAgICAgICAgICAgb2Ygb25s
eSBmZWVkaW5nIHVzIEpTIG1lc3NhZ2VzLgorICAgICAgICAgIC0gTm8gbG9uZ2VyIGNhbGxzIElu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUuIENvbnNvbGUKKyAgICAgICAg
ICAgIHRha2VzIGNhcmUgb2YgdGhhdCBub3cuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDogTW92
ZWQgTWVzc2FnZVNvdXJjZS9NZXNzYWdlTGV2ZWwgdG8gQ29uc29sZS5oLgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKTog
QWRkZWQuIENhbGxzCisgICAgICAgIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSBmb3IgSlMg
bWVzc2FnZXMsIGFuZCBjYWxscworICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlIGZvciBhbGwgbWVzc2FnZXMuCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
OjplcnJvcik6IENoYW5nZWQgdG8gY2FsbCBkaXJlY3RseSB0bworICAgICAgICBJbnNwZWN0b3JD
b250cm9sbGVyIGluIGFkZGl0aW9uIHRvIENocm9tZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNv
bGU6OmluZm8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmxvZyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6IERpdHRvLgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5oOiBBZGRlZCBNZXNzYWdlU291cmNlL01lc3NhZ2VMZXZlbCBlbnVtcyBmcm9t
IENocm9tZS5oLgorCisyMDA4LTAzLTIxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4K
KwogICAgICAgICBQYXNzIEpTQ29uc29sZSdzIGFyZ3VtZW50cyB1bm1vZGlmaWVkIHRvIENvbnNv
bGUKIAogICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4saW5mbyxl
cnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAppbmRleCA3YWRhYjVmLi5jYTUwOGYx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2Fs
bGJhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRD
YWxsYmFjay5jcHAKQEAgLTMwLDExICszMCwxMiBAQAogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3Rh
dGVtZW50Q2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25z
b2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldC5oIgogI2luY2x1ZGUg
IkpTU1FMVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKQEAgLTkyLDggKzkzLDcgQEAgdm9pZCBKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrOjpoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIFNRTFIKICAg
ICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsICJzb3VyY2VVUkwi
KS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRF
eGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYoIlNRTFN0YXRlbWVudENhbGxiYWNrOiAl
c1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgIAogICAgICAgICByYWlzZWRFeGNl
cHRpb24gPSB0cnVlOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAppbmRleCA2MTUwODJkLi4z
OWVhOGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCkBAIC0zMCwxMSArMzAsMTIgQEAKICNpbmNsdWRl
ICJKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJKU1NRTEVy
cm9yLmgiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIlBhZ2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtOTMsOCArOTQsNyBAQCBib29sIEpTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLAogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gZXhjZXB0aW9uLT5nZXQo
ZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgaWYgKEludGVycHJl
dGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjazogJXNcbiIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogICAgICAg
ICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBz
cGVjIHNheXM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAKaW5kZXggY2Q1MGViZC4uOWE1ZTA0YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNw
cApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgor
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIK
ICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0xNDQsOCArMTQ1LDcgQEAgdm9pZCBKU0N1c3RvbVNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgYm8KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMs
ICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6
c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYoIlNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s6ICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZGF0YS0+ZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9kYXRh
LT5mcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICByYWlz
ZWRFeGNlcHRpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcAppbmRleCBmZjRkMWMxLi4z
YzgyYmEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5j
bHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKIAogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJK
U1NRTEVycm9yLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCkBAIC05MSw4ICs5Miw3IEBAIGJvb2wgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s6OmhhbmRsZUV2ZW50KFNRTEVycm9yKiBlcnJvcikKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcoZXhlYyk7
CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgICAgICBwcmludGYoIlNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazogJXNcbiIsIG1lc3Nh
Z2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0K
ICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENh
bGxiYWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3Bw
CmluZGV4IDhjNTA0ZjkuLmE1NzE4MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJKU0N1c3Rv
bVZvaWRDYWxsYmFjay5oIgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvbnNv
bGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgImtqc19iaW5k
aW5nLmgiCiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAKQEAgLTkxLDggKzkxLDcgQEAgdm9pZCBK
U0N1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgICAgICBTdHJpbmcgc291cmNl
VVJMID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsK
ICAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAg
ICAgICAgIHByaW50ZigiVm9pZENhbGxiYWNrOiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAg
ICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7ICAgICAgICAgICAgCiAgICAgfQogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAKaW5kZXggMmM3NWVlZi4uOGRjOTQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lmIEVOQUJM
RShYUEFUSCkKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1
ZGUgImtqc19wcm94eS5oIgogCkBAIC05MCw4ICs5MCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogCiAg
ICAgaWYgKCFsb29rdXBOYW1lc3BhY2VVUklGdW5jICYmICFtX2N1c3RvbVJlc29sdmVyLT5pbXBs
ZW1lbnRzQ2FsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwYXNzIGFjdHVhbCBsaW5lIG51bWJl
ciBhbmQgc291cmNlIFVSTC4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90
IGhhdmUgYSBsb29rdXBOYW1lc3BhY2VVUkkgbWV0aG9kLiIsIDAsIFN0cmluZygpKTsKKyAgICAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90IGhhdmUg
YSBsb29rdXBOYW1lc3BhY2VVUkkgbWV0aG9kLiIsIDAsIFN0cmluZygpKTsKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtMTE2LDggKzExNSw3IEBAIFN0cmluZyBKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4
KQogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJj
ZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQ
cmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiWFBhdGhOU1Jlc29sdmVyOiAl
c1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9u
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxs
KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNGJjYWNmNi4u
Y2IzMzBhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgot
I2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgpAQCAtODg0LDggKzg4NCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmludEVycm9yTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiAgICAgaWYgKEludGVycHJldGVyOjpz
aG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgcHJpbnRmKCIlcyIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsgLy8gRklYTUU6IHByb3Zp
ZGUgYSByZWFsIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgorICAgIGZyYW1lLT5kb21XaW5k
b3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsgLy8gRklYTUU6IHByb3ZpZGUgYSByZWFsIGxp
bmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgogfQogCiBFeGVjU3RhdGUqIEpTRE9NV2luZG93QmFz
ZTo6Z2xvYmFsRXhlYygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5k
ZXggZmVkMjcwYi4uNjYyNjAwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcApAQCAtMjQsMTMgKzI0LDEyIEBACiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAK
ICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ29u
c29sZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgS0pTOwpAQCAtODEsOCArODAsNyBAQCB2b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShKU0RPTVdpbmRvdyogd2luZG93KQogICAgICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgImxpbmUiKS0+dG9JbnQzMihleGVjKTsK
ICAgICAgICAgICAgICAgICBpZiAoSW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucygp
KQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIih0aW1lcik6JXNcbiIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcAppbmRleCBlNTUyMTUzLi5mYzYw
MzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNp
bmNsdWRlICJranNfZXZlbnRzLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNs
dWRlICJKU0V2ZW50VGFyZ2V0Tm9kZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJr
anNfcHJveHkuaCIKICNpbmNsdWRlIDxranMvZnVuY3Rpb25fb2JqZWN0Lmg+CiAKQEAgLTExMSw4
ICsxMTAsNyBAQCB2b2lkIEpTQWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVu
dCogZWxlLCBib29sIGlzV2luZG93RXZlbnQpCiAgICAgICAgICAgICBTdHJpbmcgc291cmNlVVJM
ID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJjZVVSTCIpLT50b1N0cmluZyhleGVjKTsKICAg
ICAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgICAgICAgICAgcHJpbnRmKCIoZXZlbnQgaGFuZGxlcik6JXNcbiIsIG1lc3NhZ2UudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0g
ICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKKyAgICAgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxs
KCkgJiYgZXZlbnQtPnN0b3Jlc1Jlc3VsdEFzU3RyaW5nKCkpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94
eS5jcHAKaW5kZXggMTgxOWFhNC4uYjQyNjliNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfcHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNw
cApAQCAtMjEsNyArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImtqc19w
cm94eS5oIgogCi0jaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC05OCw4ICs5OSw3IEBAIEpTVmFsdWUq
IEtKU1Byb3h5OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUs
IGNvbnN0IFN0cmluZyYKICAgICAgICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBjb21wLnZhbHVl
KCktPnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IGNvbXAudmFsdWUo
KS0+dG9PYmplY3QoZXhlYyktPmdldChleGVjLCAibGluZSIpLT50b0ludDMyKGV4ZWMpOwogICAg
ICAgICBVU3RyaW5nIHNvdXJjZVVSTCA9IGNvbXAudmFsdWUoKS0+dG9PYmplY3QoZXhlYyktPmdl
dChleGVjLCAic291cmNlVVJMIiktPnRvU3RyaW5nKGV4ZWMpOwotICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRN
ZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2Fn
ZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgfQogCiAg
ICAgbV9wcm9jZXNzaW5nSW5saW5lQ29kZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCmluZGV4IGM3
ZTQ0NGUuLjFiMmYzMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkNvbW1lbnQuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50VHlwZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00OCw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKIApAQCAtMTQ1MSwxMCArMTQ1Miw2
IEBAIHZvaWQgSFRNTFBhcnNlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNlckVycm9y
Q29kZSBlcnJvckNvZGUsIGNvbnN0IEF0b21pCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSFRNTFRva2VuaXplciogaHRtbFRva2VuaXplciA9
IHN0YXRpY19jYXN0PEhUTUxUb2tlbml6ZXIqPihkb2N1bWVudC0+dG9rZW5pemVyKCkpOwogICAg
IGludCBsaW5lTnVtYmVyID0gaHRtbFRva2VuaXplci0+bGluZU51bWJlcigpICsgMTsKIApAQCAt
MTQ4OCw3ICsxNDg1LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZShI
VE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgQXRvbWkKICAgICBtZXNzYWdlLnJl
cGxhY2UoIiV0YWcxIiwgdGFnMSk7CiAgICAgbWVzc2FnZS5yZXBsYWNlKCIldGFnMiIsIHRhZzIp
OwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSFRNTE1lc3NhZ2VT
b3VyY2UsCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsCiAgICAgICAgIGlzV2FybmluZyhlcnJvckNvZGUpID8gV2FybmluZ01l
c3NhZ2VMZXZlbCA6IEVycm9yTWVzc2FnZUxldmVsLAogICAgICAgICBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9s
b2FkZXIvQ2FjaGUuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCmluZGV4IGI3ZjVhNDgu
LjFlZDA0ZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9DYWNoZS5jcHAKQEAgLTEwNSwxNCArMTA1LDE0IEBAIENhY2hlZFJlc291cmNl
KiBDYWNoZTo6cmVxdWVzdFJlc291cmNlKERvY0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRSZXNv
dXJjZTo6VHlwCiAgICAgICAgIGlmICghc2tpcENhbkxvYWRDaGVjayAmJiBGcmFtZUxvYWRlcjo6
cmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkgJiYgIUZyYW1lTG9hZGVyOjpjYW5Mb2FkKCpyZXNvdXJj
ZSwgZG9jTG9hZGVyLT5kb2MoKSkpIHsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2MgPSBkb2NM
b2FkZXItPmRvYygpOwogICAgICAgICAgICAgaWYoZG9jICYmICFpc1ByZWxvYWQpCi0gICAgICAg
ICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChkb2MtPnBhZ2UoKSwg
cmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9j
YWxMb2FkRmFpbGVkKGRvYy0+ZnJhbWUoKSwgcmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFza2lwQ2Fu
TG9hZENoZWNrICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiAhRnJh
bWVMb2FkZXI6OmNhbkxvYWQodXJsLCBkb2NMb2FkZXItPmRvYygpKSkgewogICAgICAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IGRvY0xvYWRlci0+ZG9jKCk7CiAgICAgICAgICAgICBpZihkb2MgJiYg
IWlzUHJlbG9hZCkKLSAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKGRvYy0+cGFnZSgpLCB1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgIEZyYW1l
TG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jLT5mcmFtZSgpLCB1cmwuc3RyaW5nKCkp
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGE4NzcxZDEuLjQ1ODBmODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCkBAIC00NDgsNyArNDQ5LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjps
b2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtV
UkwKICAgICB9CiAKICAgICBpZiAoIWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAg
RnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVybC5z
dHJpbmcoKSk7CisgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9m
cmFtZSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNjI5
LDcgKzE2MzAsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKFJlbmRlclBhcnQqIHJl
bmRlcmVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKIAogICAg
ICAgICBpZiAoIWNhbkxvYWQodXJsLCBmcmFtZSgpLT5kb2N1bWVudCgpKSkgewotICAgICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVy
bC5zdHJpbmcoKSk7CisgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFp
bGVkKG1fZnJhbWUsIHVybC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMTk1OCw3ICsxOTU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXN0b3J5LCBib29sIHUK
ICAgICBBU1NFUlQoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKHVybC5wcm90b2NvbElz
KCJmaWxlIikpIHsKICAgICAgICAgaWYgKCFjYW5Mb2FkKHVybCwgZnJhbWUoKS0+ZG9jdW1lbnQo
KSkgJiYgIWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAgICAgIEZyYW1lTG9hZGVy
OjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwuc3RyaW5nKCkpOwor
ICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCB1
cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjE3MywxMSArMjE3NCwxMyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgRG9jdW1lbnQqIGRvYykKICAgICByZXR1cm4gZG9j
ICYmIGRvYy0+aXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0IFBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwuaXNF
bXB0eSgpKTsKLSAgICBpZiAocGFnZSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vdCBhbGxv
d2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6ICIgKyB1cmwsIDAsIFN0cmluZygpKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAi
Tm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVybCwgMCwgU3RyaW5nKCkp
OwogfQogCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQpAQCAtMjM3NSw4ICsyMzc4LDcgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSkgY29u
c3QKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8gdGhlIGNvbnNvbGUgb2YgdGhlIGFj
dGl2ZUZyYW1lIGFzIHdlbGw/Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gdGFyZ2V0RnJhbWUt
PnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygp
KTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5n
KCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCBkYWUwOTg1Li4xYWI1NWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE2MSw3ICsxNjEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIGNhbkxvYWQoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogICAgICAgICBzdGF0aWMgYm9vbCBjYW5M
b2FkKGNvbnN0IEtVUkwmLCBjb25zdCBEb2N1bWVudCopOwogICAgICAgICBzdGF0aWMgYm9vbCBj
YW5Mb2FkKGNvbnN0IENhY2hlZFJlc291cmNlJiwgY29uc3QgRG9jdW1lbnQqKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgcmVwb3J0TG9jYWxMb2FkRmFpbGVkKGNvbnN0IFBhZ2UqLCBjb25zdCBTdHJp
bmcmIHVybCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlcG9ydExvY2FsTG9hZEZhaWxlZChjb25z
dCBGcmFtZSosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBzaG91
bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDlmZTA3ZjQuLmMxNDJiMTYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFt
ZSogZnJhbWUsIFN1YnJlc291cmMKICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sKICAgICAgICAg
ICAgICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKQogICAgICAgICAgICAg
JiYgIUZyYW1lTG9hZGVyOjpjYW5Mb2FkKHJlcXVlc3QudXJsKCksIGZyYW1lLT5kb2N1bWVudCgp
KSkgewotICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLT5w
YWdlKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA1MTE5YzQxLi45Njc1NmQ1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTkzLDEyICsxOTIs
OSBAQCB2b2lkIENocm9tZTo6c2V0UmVzaXphYmxlKGJvb2wgYikgY29uc3QKICAgICBtX2NsaWVu
dC0+c2V0UmVzaXphYmxlKGIpOwogfQogCi12b2lkIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit2
b2lkIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCiB7Ci0gICAgaWYgKHNv
dXJjZSA9PSBKU01lc3NhZ2VTb3VyY2UpCi0gICAgICAgIG1fY2xpZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKLQotICAgIG1fcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKKyAgICBtX2NsaWVudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAKIGJvb2wgQ2hyb21l
OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDliYzQyZTAuLjM1Y2Vm
OWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKQEAgLTQ2LDIxICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1
Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAgICAgCi0g
ICAgZW51bSBNZXNzYWdlU291cmNlIHsKLSAgICAgICAgSFRNTE1lc3NhZ2VTb3VyY2UsCi0gICAg
ICAgIFhNTE1lc3NhZ2VTb3VyY2UsCi0gICAgICAgIEpTTWVzc2FnZVNvdXJjZSwKLSAgICAgICAg
Q1NTTWVzc2FnZVNvdXJjZSwKLSAgICAgICAgT3RoZXJNZXNzYWdlU291cmNlCi0gICAgfTsKLQot
ICAgIGVudW0gTWVzc2FnZUxldmVsIHsKLSAgICAgICAgVGlwTWVzc2FnZUxldmVsLAotICAgICAg
ICBMb2dNZXNzYWdlTGV2ZWwsCi0gICAgICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCi0gICAgICAg
IEVycm9yTWVzc2FnZUxldmVsCi0gICAgfTsKLQogICAgIGNsYXNzIENocm9tZSA6IE5vbmNvcHlh
YmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENocm9tZShQYWdlKiwgQ2hyb21lQ2xpZW50Kik7
CkBAIC0xMDIsNyArODcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAg
ICB2b2lkIHNldFJlc2l6YWJsZShib29sKSBjb25zdDsKIAotICAgICAgICB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAg
ICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgQ29uc29sZQorICAg
ICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKIAogICAgICAgICBib29s
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwogICAgICAgICBib29sIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKaW5kZXggZWEzOWI2MS4uYzcwMTk0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8a2pzL2xp
c3QuaD4KQEAgLTUwLDYgKzUxLDIxIEBAIHZvaWQgQ29uc29sZTo6ZGlzY29ubmVjdEZyYW1lKCkK
ICAgICBtX2ZyYW1lID0gMDsKIH0KIAordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgaWYg
KCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNvdXJj
ZSA9PSBKU01lc3NhZ2VTb3VyY2UpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdl
VG9Db25zb2xlKG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisKKyAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogdm9pZCBDb25zb2xlOjplcnJv
cihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKGFy
Z3VtZW50cy5pc0VtcHR5KCkpCkBAIC02Miw3ICs3OCwxMSBAQCB2b2lkIENvbnNvbGU6OmVycm9y
KEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9T
dHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gYXJndW1lbnRzWzBdLT50b1N0cmluZyhzdGF0ZSk7CisgICAg
U3RyaW5nIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKTsKKworICAg
IHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7Cisg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIHVybCk7CiB9CiAKIHZv
aWQgQ29uc29sZTo6aW5mbyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMp
CkBAIC03Nyw3ICs5NywxMSBAQCB2b2lkIENvbnNvbGU6OmluZm8oRXhlY1N0YXRlKiBzdGF0ZSwg
Y29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpLCAwLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkpOworICAgIFN0cmluZyBtZXNzYWdlID0g
YXJndW1lbnRzWzBdLT50b1N0cmluZyhzdGF0ZSk7CisgICAgU3RyaW5nIHVybCA9IG1fZnJhbWUt
PmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKTsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRN
ZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCAwLCB1cmwpOwogfQogCiB2b2lkIENvbnNvbGU6OmxvZyhFeGVjU3Rh
dGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCkBAIC05Miw3ICsxMTYsMTEgQEAgdm9p
ZCBDb25zb2xlOjpsb2coRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3Vt
ZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpLCAwLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJl
dHR5VVJMKCkpOworICAgIFN0cmluZyBtZXNzYWdlID0gYXJndW1lbnRzWzBdLT50b1N0cmluZyhz
dGF0ZSk7CisgICAgU3RyaW5nIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlV
UkwoKTsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2Us
IDAsIHVybCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCB1cmwp
OwogfQogCiB2b2lkIENvbnNvbGU6Ondhcm4oRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYg
YXJndW1lbnRzKQpAQCAtMTA3LDcgKzEzNSwxMSBAQCB2b2lkIENvbnNvbGU6Ondhcm4oRXhlY1N0
YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHNbMF0tPnRvU3RyaW5n
KHN0YXRlKSwgMCwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpKTsKKyAgICBT
dHJpbmcgbWVzc2FnZSA9IGFyZ3VtZW50c1swXS0+dG9TdHJpbmcoc3RhdGUpOworICAgIFN0cmlu
ZyB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CisKKyAgICBwYWdl
LT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOworICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIHVybCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmggYi9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IGU5M2IwNjUuLjU5MzBlYzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaApAQCAt
NDEsNiArNDEsMjIgQEAgbmFtZXNwYWNlIEtKUyB7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAgICBlbnVtIE1lc3NhZ2VTb3Vy
Y2UgeworICAgICAgICBIVE1MTWVzc2FnZVNvdXJjZSwKKyAgICAgICAgWE1MTWVzc2FnZVNvdXJj
ZSwKKyAgICAgICAgSlNNZXNzYWdlU291cmNlLAorICAgICAgICBDU1NNZXNzYWdlU291cmNlLAor
ICAgICAgICBPdGhlck1lc3NhZ2VTb3VyY2UKKyAgICB9OworCisgICAgZW51bSBNZXNzYWdlTGV2
ZWwgeworICAgICAgICBUaXBNZXNzYWdlTGV2ZWwsCisgICAgICAgIExvZ01lc3NhZ2VMZXZlbCwK
KyAgICAgICAgV2FybmluZ01lc3NhZ2VMZXZlbCwKKyAgICAgICAgRXJyb3JNZXNzYWdlTGV2ZWwK
KyAgICB9OwogCiAgICAgY2xhc3MgQ29uc29sZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvbnNvbGU+
IHsKICAgICBwdWJsaWM6CkBAIC00OCw2ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwogCisgICAgICAgIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCiAgICAgICAgIHZv
aWQgZXJyb3IoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3QmIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHZvaWQgaW5mbyhLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYgYXJndW1l
bnRzKTsKICAgICAgICAgdm9pZCBsb2coS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3Qm
IGFyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxl
ci5oIGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA0NmE1ZGYzLi5l
Y2RjNTU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCisr
KyBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpZm5kZWYgSW5zcGVjdG9yQ29udHJvbGxlcl9oCiAjZGVmaW5lIEluc3BlY3RvckNvbnRyb2xs
ZXJfaAogCi0jaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CiBjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApp
bmRleCA0NmEyN2M3Li44YTBmODRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5j
cHAKQEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIK
IAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgotI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAt
OTcsMTUgKzk4LDEzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWF0
aW9ucygpCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyhjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgp
KQotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBw
YWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9y
TWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UsIG1fZG9jLT50b2tlbml6ZXIoKSA/
IG1fZG9jLT50b2tlbml6ZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAgICAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIEVycm9yTWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UsIG1fZG9jLT50b2tl
bml6ZXIoKSA/IG1fZG9jLT50b2tlbml6ZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkp
OwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkK
LSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIkVycm9yOiAiICsgbWVzc2FnZSwgbV9kb2MtPnRva2VuaXplcigpID8gbV9k
b2MtPnRva2VuaXplcigpLT5saW5lTnVtYmVyKCkgOiAxLCBTdHJpbmcoKSk7CisgICAgICAgIGZy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvcjogIiArIG1lc3NhZ2UsIG1fZG9jLT50b2tlbml6ZXIo
KSA/IG1fZG9jLT50b2tlbml6ZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOwogfQog
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIFNWR1N0eWxlZEVsZW1lbnQqIG9iaikKZGlmZiAtLWdpdCBhL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCAyNjA4MTg2Li5lYzU4ODM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMiw3
ICsyMiw5IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgpAQCAtMzAsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgpAQCAtNTQ5LDggKzU1MCw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBFCiAgICAgICAgIAogICAgIC8vIEEgcHJpdmlsZWdlZCBzY3JpcHQgKGUuZy4gYSBEYXNoYm9h
cmQgd2lkZ2V0KSBjYW4gc2V0IGFueSBoZWFkZXJzLgogICAgIGlmICghbV9kb2MtPmlzQWxsb3dl
ZFRvTG9hZExvY2FsUmVzb3VyY2VzKCkgJiYgIWlzU2FmZVJlcXVlc3RIZWFkZXIobmFtZSkpIHsK
LSAgICAgICAgaWYgKG1fZG9jICYmIG1fZG9jLT5mcmFtZSgpICYmIG1fZG9jLT5mcmFtZSgpLT5w
YWdlKCkpCi0gICAgICAgICAgICBtX2RvYy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+YWRk
TWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiUmVm
dXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciAiICsgbmFtZSwgMSwgU3RyaW5nKCkpOworICAgICAg
ICBpZiAobV9kb2MgJiYgbV9kb2MtPmZyYW1lKCkpCisgICAgICAgICAgICBtX2RvYy0+ZnJhbWUo
KS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciAiICsgbmFtZSwg
MSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
CmluZGV4IGI4Y2U3ZjMuLmQwY2FjMzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0yOCw3ICsy
OCw5IEBACiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2FjaGUuaCIKKyNpbmNs
dWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTc1LDggKzc3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKHZvaWQq
IHVzZXJEYXRhLCB4bWxFcnJvciogZXJyb3IpCiB7Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBzdGF0
aWNfY2FzdDxDaHJvbWUqPih1c2VyRGF0YSk7Ci0gICAgaWYgKCFjaHJvbWUpCisgICAgQ29uc29s
ZSogY29uc29sZSA9IHN0YXRpY19jYXN0PENvbnNvbGUqPih1c2VyRGF0YSk7CisgICAgaWYgKCFj
b25zb2xlKQogICAgICAgICByZXR1cm47CiAKICAgICBNZXNzYWdlTGV2ZWwgbGV2ZWw7CkBAIC05
NCw3ICs5Niw3IEBAIHZvaWQgWFNMVFByb2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmModm9pZCogdXNl
ckRhdGEsIHhtbEVycm9yKiBlcnJvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGNocm9tZS0+YWRkTWVzc2FnZVRvQ29uc29sZShYTUxNZXNzYWdlU291cmNlLCBsZXZlbCwgZXJy
b3ItPm1lc3NhZ2UsIGVycm9yLT5saW5lLCBlcnJvci0+ZmlsZSk7CisgICAgY29uc29sZS0+YWRk
TWVzc2FnZShYTUxNZXNzYWdlU291cmNlLCBsZXZlbCwgZXJyb3ItPm1lc3NhZ2UsIGVycm9yLT5s
aW5lLCBlcnJvci0+ZmlsZSk7CiB9CiAKIC8vIEZJWE1FOiBUaGVyZSBzZWVtcyB0byBiZSBubyB3
YXkgdG8gY29udHJvbCB0aGUgY3R4dCBwb2ludGVyIGZvciBsb2FkaW5nIGhlcmUsIHRodXMgd2Ug
aGF2ZSBnbG9iYWxzLgpAQCAtMTIzLDEwICsxMjUsMTAgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NM
b2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgICAgIGlmIChnbG9iYWxEb2NM
b2FkZXItPmZyYW1lKCkpIAogICAgICAgICAgICAgICAgIGdsb2JhbERvY0xvYWRlci0+ZnJhbWUo
KS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodXJsLCBlcnJvciwgcmVzcG9u
c2UsIGRhdGEpOwogCi0gICAgICAgICAgICBDaHJvbWUqIGNocm9tZSA9IDA7Ci0gICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IGdsb2JhbFByb2Nlc3Nvci0+eHNsU3R5bGVzaGVldCgpLT5vd25l
ckRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICBjaHJvbWUgPSBwYWdlLT5jaHJv
bWUoKTsKLSAgICAgICAgICAgIHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoY2hyb21lLCBYU0xU
UHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyk7CisgICAgICAgICAgICBDb25zb2xlKiBjb25zb2xl
ID0gMDsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBnbG9iYWxQcm9jZXNzb3ItPnhz
bFN0eWxlc2hlZXQoKS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgICAg
IGNvbnNvbGUgPSBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKTsKKyAgICAgICAgICAgIHht
bFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoY29uc29sZSwgWFNMVFByb2Nlc3Nvcjo6cGFyc2VFcnJv
ckZ1bmMpOwogCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVuY29kaW5nIGhl
cmUuIE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCiAgICAgICAgICAgICAvLyB0aGUg
ZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0tIAoxLjUuNC4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19937</attachid>
            <date>2008-03-21 14:06:40 -0700</date>
            <delta_ts>2008-03-21 15:47:46 -0700</delta_ts>
            <desc>Step 3: Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS</desc>
            <filename>0001-Pass-all-arguments-to-console.-log-warn-info.patch</filename>
            <type>text/plain</type>
            <size>13380</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBmNTViYzkxOThiODhlMjhkMDY2NmI4NzM5NmFlMmUwMjQwM2FlNTg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE3OjAzOjM5IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUGFz
cyBhbGwgYXJndW1lbnRzIHRvIGNvbnNvbGUue2xvZyx3YXJuLGluZm8sZXJyb3J9IGludG8gdGhl
IEluc3BlY3RvcidzIEpTCgogICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2cs
d2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKICAgICAgICBzdHJpbmdzLCB2
YXJpYWJsZSBhcmd1bWVudHMKICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMjg+CiAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CgogICAgICAg
IFdlIGRvbid0IHVzZSB0aGUgZXh0cmEgYXJndW1lbnRzIHlldC4KCiAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOiBQYXNzIHRoZSBhcmd1bWVudHMgbGlzdCB0bwogICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIuCiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8p
OiBEaXR0by4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKTogRGl0dG8uCiAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOiBEaXR0by4KICAgICAgICAqIHBhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xl
TWVzc2FnZSk6IEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yCiAgICAgICAgdGhhdCB0YWtlcyBhIGNv
bnN0IEtKUzo6TGlzdCYgaW5zdGVhZCBvZiBhIGNvbnN0IFN0cmluZyYuIFdlIHN0b3JlIHRoZQog
ICAgICAgIEpTVmFsdWUqcyBmcm9tIHRoZSBMaXN0IGluIGEgVmVjdG9yPFByb3RlY3RlZFB0cjxK
U1ZhbHVlPiA+LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlKTogQWRkZWQgYW4gb3ZlcmxvYWQKICAgICAgICB0aGF0IHRha2VzIGEgY29u
c3QgS0pTOjpMaXN0Ji4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRk
Q29uc29sZU1lc3NhZ2UpOiBNb3ZlZCBjb2RlIGhlcmUKICAgICAgICBmcm9tIGFkZE1lc3NhZ2VU
b0NvbnNvbGUuIEJvdGggb3ZlcmxvYWRzIG9mIGFkZE1lc3NhZ2VUb0NvbnNvbGUgbm93CiAgICAg
ICAgY2FsbCB0aGlzIGhlbHBlciBtZXRob2QuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKTogVXBkYXRlZCBmb3IKICAgICAgICB0
aGUgbmV3IHBhcmFtZXRlciBvcmRlciBvZiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuIElm
IHRoZQogICAgICAgIENvbnNvbGVNZXNzYWdlIGhhcyBhIG5vbi1lbXB0eSBhcmd1bWVudHMgVmVj
dG9yLCB3ZSB1c2UgdGhhdCBpbnN0ZWFkCiAgICAgICAgb2YgdGhlIENvbnNvbGVNZXNzYWdlJ3Mg
bWVzc2FnZSBTdHJpbmcuCiAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGVQYW5lbC5qczoKICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlKTogUmVtb3ZlZCB0aGUgZXhwbGljaXQgbWVzc2FnZSBwYXJhbWV0
ZXIuCiAgICAgICAgV2Ugbm93IGdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSB1bm5hbWVkIDV0aCBw
YXJhbWV0ZXIuCiAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qczogVXBkYXRlZCBm
b3IgdGhlIGNoYW5nZSB0bwogICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSdzIHBh
cmFtZXRlciBvcmRlci4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwICAgICAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCAgIHwgICA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBXZWJD
b3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oICAgICB8ICAgIDIgKwogV2ViQ29yZS9wYWdl
L2luc3BlY3Rvci9Db25zb2xlUGFuZWwuanMgfCAgICA1ICsrLQogV2ViQ29yZS9wYWdlL2luc3Bl
Y3Rvci9SZXNvdXJjZS5qcyAgICAgfCAgICA3ICsrLS0KIDYgZmlsZXMgY2hhbmdlZCwgOTUgaW5z
ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MTA2ZGEyLi5mMzAyOTllIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0
IEBACiAyMDA4LTAzLTIxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBQYXNzIGFsbCBhcmd1bWVudHMgdG8gY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gaW50
byB0aGUgSW5zcGVjdG9yJ3MgSlMKKworICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29s
ZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CisgICAgICAgIHN0
cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50cworICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzMyODI4
PgorCisgICAgICAgIFdlIGRvbid0IHVzZSB0aGUgZXh0cmEgYXJndW1lbnRzIHlldC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvQ29uc29s
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjplcnJvcik6IFBhc3MgdGhlIGFyZ3Vt
ZW50cyBsaXN0IHRvCisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuCisgICAgICAgIChXZWJD
b3JlOjpDb25zb2xlOjppbmZvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjps
b2cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOiBEaXR0by4KKyAg
ICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKTogQWRkZWQgYSBuZXcgY29uc3RydWN0b3IK
KyAgICAgICAgdGhhdCB0YWtlcyBhIGNvbnN0IEtKUzo6TGlzdCYgaW5zdGVhZCBvZiBhIGNvbnN0
IFN0cmluZyYuIFdlIHN0b3JlIHRoZQorICAgICAgICBKU1ZhbHVlKnMgZnJvbSB0aGUgTGlzdCBp
biBhIFZlY3RvcjxQcm90ZWN0ZWRQdHI8SlNWYWx1ZT4gPi4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOiBBZGRlZCBhbiBvdmVybG9h
ZAorICAgICAgICB0aGF0IHRha2VzIGEgY29uc3QgS0pTOjpMaXN0Ji4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogTW92ZWQgY29kZSBo
ZXJlCisgICAgICAgIGZyb20gYWRkTWVzc2FnZVRvQ29uc29sZS4gQm90aCBvdmVybG9hZHMgb2Yg
YWRkTWVzc2FnZVRvQ29uc29sZSBub3cKKyAgICAgICAgY2FsbCB0aGlzIGhlbHBlciBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTY3JpcHRDb25zb2xl
TWVzc2FnZSk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHRoZSBuZXcgcGFyYW1ldGVyIG9yZGVyIG9m
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS4gSWYgdGhlCisgICAgICAgIENvbnNvbGVNZXNz
YWdlIGhhcyBhIG5vbi1lbXB0eSBhcmd1bWVudHMgVmVjdG9yLCB3ZSB1c2UgdGhhdCBpbnN0ZWFk
CisgICAgICAgIG9mIHRoZSBDb25zb2xlTWVzc2FnZSdzIG1lc3NhZ2UgU3RyaW5nLgorICAgICAg
ICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9y
L0NvbnNvbGVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSk6
IFJlbW92ZWQgdGhlIGV4cGxpY2l0IG1lc3NhZ2UgcGFyYW1ldGVyLgorICAgICAgICBXZSBub3cg
Z2V0IHRoZSBtZXNzYWdlIGZyb20gdGhlIHVubmFtZWQgNXRoIHBhcmFtZXRlci4KKyAgICAgICAg
KiBwYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qczogVXBkYXRlZCBmb3IgdGhlIGNoYW5nZSB0bwor
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UncyBwYXJhbWV0ZXIgb3JkZXIuCisK
KzIwMDgtMDMtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIENo
YW5nZSBjYWxscyB0byBDaHJvbWU6OmFkZE1lc3NhZ2VUb0NvbnNvbGUgdG8gdXNlIENvbnNvbGU6
OmFkZE1lc3NhZ2UKIAogICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdh
cm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggYzcwMTk0
OS4uMDE2ZGYyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIENvbnNvbGU6OmVy
cm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKICAgICBTdHJpbmcg
dXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpOwogCiAgICAgcGFnZS0+
Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWVzc2FnZSwgMCwgdXJsKTsKLSAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291
cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgdXJsKTsKKyAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCAwLCB1cmwpOwogfQogCiB2b2lkIENvbnNvbGU6
OmluZm8oRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQpAQCAtMTAxLDcg
KzEwMSw3IEBAIHZvaWQgQ29uc29sZTo6aW5mbyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0
JiBhcmd1bWVudHMpCiAgICAgU3RyaW5nIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5w
cmV0dHlVUkwoKTsKIAogICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1l
c3NhZ2UsIDAsIHVybCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAw
LCB1cmwpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCAwLCB1cmwp
OwogfQogCiB2b2lkIENvbnNvbGU6OmxvZyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBh
cmd1bWVudHMpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDb25zb2xlOjpsb2coRXhlY1N0YXRl
KiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAgIFN0cmluZyB1cmwgPSBtX2ZyYW1l
LT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CiAKICAgICBwYWdlLT5jaHJvbWUoKS0+YWRk
TWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOwotICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgMCwgdXJsKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWws
IGFyZ3VtZW50cywgMCwgdXJsKTsKIH0KIAogdm9pZCBDb25zb2xlOjp3YXJuKEV4ZWNTdGF0ZSog
c3RhdGUsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENv
bnNvbGU6Ondhcm4oRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAg
IFN0cmluZyB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CiAKICAg
ICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIHVybCk7CisgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2Fn
ZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCAwLCB1cmwpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggY2M4YzlkYy4uYTk2N2Y3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtOTQsOSArOTQsMjEgQEAgc3RydWN0IENvbnNvbGVNZXNzYWdlIHsKICAgICB7CiAgICAgfQog
CisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlTGV2ZWwgbCwgY29u
c3QgS0pTOjpMaXN0JiBhcmdzLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1KQorICAgICAg
ICA6IHNvdXJjZShzKQorICAgICAgICAsIGxldmVsKGwpCisgICAgICAgICwgYXJndW1lbnRzKGFy
Z3Muc2l6ZSgpKQorICAgICAgICAsIGxpbmUobGkpCisgICAgICAgICwgdXJsKHUpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGFyZ3VtZW50c1tpXSA9IGFyZ3NbaV07CisgICAgfQorCiAgICAgTWVzc2FnZVNvdXJj
ZSBzb3VyY2U7CiAgICAgTWVzc2FnZUxldmVsIGxldmVsOwogICAgIFN0cmluZyBtZXNzYWdlOwor
ICAgIFZlY3RvcjxLSlM6OlByb3RlY3RlZFB0cjxLSlM6OkpTVmFsdWU+ID4gYXJndW1lbnRzOwog
ICAgIHVuc2lnbmVkIGxpbmU7CiAgICAgU3RyaW5nIHVybDsKIH07CkBAIC03MzEsMTIgKzc0Mywy
NyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFdpbmRvd1Zpc2libGUoYm9vbCB2aXNp
YmxlKQogICAgIG1fc2hvd0FmdGVyVmlzaWJsZSA9IEZvY3VzZWROb2RlRG9jdW1lbnRQYW5lbDsK
IH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IEtKUzo6TGlzdCYgYXJn
dW1lbnRzLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sK
KyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYWRkQ29uc29sZU1l
c3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGFyZ3VtZW50cywgbGluZU51
bWJlciwgc291cmNlVVJMKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlSUQpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnNvbGVNZXNzYWdlKiBjb25zb2xlTWVzc2FnZSA9IG5ldyBDb25zb2xlTWVzc2FnZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgYWRkQ29uc29s
ZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZUlEKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29u
c29sZU1lc3NhZ2UoQ29uc29sZU1lc3NhZ2UqIGNvbnNvbGVNZXNzYWdlKQoreworICAgIEFTU0VS
VChlbmFibGVkKCkpOworICAgIEFTU0VSVF9BUkcoY29uc29sZU1lc3NhZ2UsIGNvbnNvbGVNZXNz
YWdlKTsKKwogICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CiAK
ICAgICBpZiAod2luZG93VmlzaWJsZSgpKQpAQCAtMTI2MiwxNCArMTI4OSwyNiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IENvbnNvbGVN
ZXNzYWdlKiBtZXNzYWdlKQogCiAgICAgSlNWYWx1ZVJlZiBzb3VyY2VWYWx1ZSA9IEpTVmFsdWVN
YWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgbWVzc2FnZS0+c291cmNlKTsKICAgICBKU1ZhbHVl
UmVmIGxldmVsVmFsdWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIG1lc3Nh
Z2UtPmxldmVsKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZVN0cmluZyhB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNzYWdlLT5tZXNzYWdlLmNoYXJh
Y3RlcnMoKSwgbWVzc2FnZS0+bWVzc2FnZS5sZW5ndGgoKSkpOwotICAgIEpTVmFsdWVSZWYgbWVz
c2FnZVZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlU3Ry
aW5nLmdldCgpKTsKICAgICBKU1ZhbHVlUmVmIGxpbmVWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVy
KG1fc2NyaXB0Q29udGV4dCwgbWVzc2FnZS0+bGluZSk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHVybFN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNz
YWdlLT51cmwuY2hhcmFjdGVycygpLCBtZXNzYWdlLT51cmwubGVuZ3RoKCkpKTsKICAgICBKU1Zh
bHVlUmVmIHVybFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCB1cmxT
dHJpbmcuZ2V0KCkpOwogCi0gICAgSlNWYWx1ZVJlZiBhcmdzW10gPSB7IHNvdXJjZVZhbHVlLCBs
ZXZlbFZhbHVlLCBtZXNzYWdlVmFsdWUsIGxpbmVWYWx1ZSwgdXJsVmFsdWUgfTsKLSAgICBKU09i
amVjdFJlZiBtZXNzYWdlT2JqZWN0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihtX3Njcmlw
dENvbnRleHQsIG1lc3NhZ2VDb25zdHJ1Y3RvciwgNSwgYXJncywgMCk7CisgICAgVmVjdG9yPEpT
VmFsdWVSZWY+IGFyZ3VtZW50cyg0KTsKKyAgICBhcmd1bWVudHNbMF0gPSBzb3VyY2VWYWx1ZTsK
KyAgICBhcmd1bWVudHNbMV0gPSBsZXZlbFZhbHVlOworICAgIGFyZ3VtZW50c1syXSA9IGxpbmVW
YWx1ZTsKKyAgICBhcmd1bWVudHNbM10gPSB1cmxWYWx1ZTsKKworICAgIGlmICghbWVzc2FnZS0+
YXJndW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bWVzc2FnZS0+YXJndW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZCh0b1JlZihtZXNzYWdlLT5hcmd1bWVudHNbaV0pKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZVN0cmluZyhBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNzYWdlLT5tZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVzc2Fn
ZS0+bWVzc2FnZS5sZW5ndGgoKSkpOworICAgICAgICBKU1ZhbHVlUmVmIG1lc3NhZ2VWYWx1ZSA9
IEpTVmFsdWVNYWtlU3RyaW5nKG1fc2NyaXB0Q29udGV4dCwgbWVzc2FnZVN0cmluZy5nZXQoKSk7
CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobWVzc2FnZVZhbHVlKTsKKyAgICB9CisKKyAgICBK
U09iamVjdFJlZiBtZXNzYWdlT2JqZWN0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihtX3Nj
cmlwdENvbnRleHQsIG1lc3NhZ2VDb25zdHJ1Y3RvciwgYXJndW1lbnRzLnNpemUoKSwgYXJndW1l
bnRzLmRhdGEoKSwgMCk7CiAKICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKG1fc2NyaXB0Q29u
dGV4dCwgYWRkTWVzc2FnZSwgbV9zY3JpcHRPYmplY3QsIDEsICZtZXNzYWdlT2JqZWN0LCAwKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJD
b3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGVjZGM1NTYuLjdiYjFjMjIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB3aW5kb3dWaXNpYmxlKCk7CiAgICAgdm9pZCBzZXRXaW5kb3dWaXNpYmxlKGJvb2wg
dmlzaWJsZSA9IHRydWUpOwogCisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgS0pTOjpMaXN0JiBhcmd1bWVudHMsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogICAgIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAKICAg
ICB2b2lkIGF0dGFjaFdpbmRvdygpOwpAQCAtMTI2LDYgKzEyNyw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdm9pZCBmb2N1c05vZGUoKTsKIAorICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uo
Q29uc29sZU1lc3NhZ2UqKTsKICAgICB2b2lkIGFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0
IENvbnNvbGVNZXNzYWdlKik7CiAgICAgdm9pZCBjbGVhclNjcmlwdENvbnNvbGVNZXNzYWdlcygp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGVQYW5lbC5qcyBi
L1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZVBhbmVsLmpzCmluZGV4IGQwZmYwNTQuLmU3
NTcyMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZVBhbmVsLmpz
CisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZVBhbmVsLmpzCkBAIC02MzQsMTMg
KzYzNCwxNCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogV2Vi
SW5zcGVjdG9yLkNvbnNvbGVQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlBhbmVsLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rp
b24oc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZSwgdXJsKQorV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCBsZXZlbCwgbGluZSwgdXJsKQogewogICAgIHRo
aXMuc291cmNlID0gc291cmNlOwogICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKLSAgICB0aGlzLm1l
c3NhZ2UgPSBtZXNzYWdlOwogICAgIHRoaXMubGluZSA9IGxpbmU7CiAgICAgdGhpcy51cmwgPSB1
cmw7CisKKyAgICB0aGlzLm1lc3NhZ2UgPSBhcmd1bWVudHNbNF07CiB9CiAKIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5q
cwppbmRleCBlZDM1OTcwLi42MDlhZGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVj
dG9yL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMK
QEAgLTQyMCw3ICs0MjAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGZsb29kIHRoZSBDb25zb2xlIHdpdGggdG9vIG1hbnkg
dGlwcy4KICAgICAgICAgLyoKICAgICAgICAgdmFyIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3Ro
ZXIsCi0gICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuVGlwLCB0aXAubWVzc2FnZSwgLTEsIHRoaXMudXJsKTsKKyAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5UaXAsIC0xLCB0
aGlzLnVybCwgdGlwLm1lc3NhZ2UpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZVBhbmVs
LmFkZE1lc3NhZ2UobXNnKTsKICAgICAgICAgKi8KIApAQCAtNDgxLDEwICs0ODEsOSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuV2FybmluZ3MuSW5jb3JyZWN0TUlNRVR5cGUuaWQ6CiAgICAgICAgICAgICAgICAgaWYg
KCF0aGlzLl9taW1lVHlwZUlzQ29uc2lzdGVudFdpdGhUeXBlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2Fybmlu
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nLCAtMSwgdGhpcy51cmwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5XYXJuaW5ncy5J
bmNvcnJlY3RNSU1FVHlwZS5tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcodGhpcy50eXBlKSwgdGhp
cy5taW1lVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCB0aGlzLnVy
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotLSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19946</attachid>
            <date>2008-03-21 15:47:46 -0700</date>
            <delta_ts>2008-04-15 10:51:32 -0700</delta_ts>
            <desc>Step 3: Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS</desc>
            <filename>0001-Pass-all-arguments-to-console.-log-warn-info.patch</filename>
            <type>text/plain</type>
            <size>13559</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSA3YjJmNmIwZGQzNmQxOGE5ZWZlNWMyODQyZGE4NmQ5YTgxMzA2Njg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDIxIE1hciAyMDA4IDE3OjAzOjM5IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUGFz
cyBhbGwgYXJndW1lbnRzIHRvIGNvbnNvbGUue2xvZyx3YXJuLGluZm8sZXJyb3J9IGludG8gdGhl
IEluc3BlY3RvcidzIEpTCgogICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2cs
d2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKICAgICAgICBzdHJpbmdzLCB2
YXJpYWJsZSBhcmd1bWVudHMKICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMjg+CiAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CgogICAgICAg
IFdlIGRvbid0IHVzZSB0aGUgZXh0cmEgYXJndW1lbnRzIHlldC4KCiAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOiBQYXNzIHRoZSBhcmd1bWVudHMgbGlzdCB0bwogICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIuCiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8p
OiBEaXR0by4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKTogRGl0dG8uCiAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOiBEaXR0by4KICAgICAgICAqIHBhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xl
TWVzc2FnZSk6IEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yCiAgICAgICAgdGhhdCB0YWtlcyBhIGNv
bnN0IEtKUzo6TGlzdCYgaW5zdGVhZCBvZiBhIGNvbnN0IFN0cmluZyYuIFdlIHN0b3JlIHRoZQog
ICAgICAgIEpTVmFsdWUqcyBmcm9tIHRoZSBMaXN0IGluIGEgVmVjdG9yPFByb3RlY3RlZFB0cjxK
U1ZhbHVlPiA+LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlKTogQWRkZWQgYW4gb3ZlcmxvYWQKICAgICAgICB0aGF0IHRha2VzIGEgY29u
c3QgS0pTOjpMaXN0Ji4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRk
Q29uc29sZU1lc3NhZ2UpOiBNb3ZlZCBjb2RlIGhlcmUKICAgICAgICBmcm9tIGFkZE1lc3NhZ2VU
b0NvbnNvbGUuIEJvdGggb3ZlcmxvYWRzIG9mIGFkZE1lc3NhZ2VUb0NvbnNvbGUgbm93CiAgICAg
ICAgY2FsbCB0aGlzIGhlbHBlciBtZXRob2QuCiAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKTogVXBkYXRlZCBmb3IKICAgICAgICB0
aGUgbmV3IHBhcmFtZXRlciBvcmRlciBvZiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuIElm
IHRoZQogICAgICAgIENvbnNvbGVNZXNzYWdlIGhhcyBhIG5vbi1lbXB0eSBhcmd1bWVudHMgVmVj
dG9yLCB3ZSB1c2UgdGhhdCBpbnN0ZWFkCiAgICAgICAgb2YgdGhlIENvbnNvbGVNZXNzYWdlJ3Mg
bWVzc2FnZSBTdHJpbmcuCiAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGVQYW5lbC5qczoKICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlKTogUmVtb3ZlZCB0aGUgZXhwbGljaXQgbWVzc2FnZSBwYXJhbWV0
ZXIuCiAgICAgICAgV2Ugbm93IGdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSB1bm5hbWVkIDV0aCBw
YXJhbWV0ZXIuCiAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qczogVXBkYXRlZCBm
b3IgdGhlIGNoYW5nZSB0bwogICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSdzIHBh
cmFtZXRlciBvcmRlci4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwICAgICAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCAgIHwgICA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBXZWJD
b3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oICAgICB8ICAgIDIgKwogV2ViQ29yZS9wYWdl
L2luc3BlY3Rvci9Db25zb2xlUGFuZWwuanMgfCAgICA5ICsrKystCiBXZWJDb3JlL3BhZ2UvaW5z
cGVjdG9yL1Jlc291cmNlLmpzICAgICB8ICAgIDcgKystLQogNiBmaWxlcyBjaGFuZ2VkLCA5OSBp
bnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlmMTU4ZTIuLjBhYTU4M2UgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
NDQgQEAKIDIwMDgtMDMtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAg
ICAgIFBhc3MgYWxsIGFyZ3VtZW50cyB0byBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9yfSBp
bnRvIHRoZSBJbnNwZWN0b3IncyBKUworCisgICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25z
b2xlLntsb2csd2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKKyAgICAgICAg
c3RyaW5ncywgdmFyaWFibGUgYXJndW1lbnRzCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIyOD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4
Mjg+CisKKyAgICAgICAgV2UgZG9uJ3QgdXNlIHRoZSBleHRyYSBhcmd1bWVudHMgeWV0LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9Db25z
b2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmVycm9yKTogUGFzcyB0aGUgYXJn
dW1lbnRzIGxpc3QgdG8KKyAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnNvbGU6OmluZm8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OmxvZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6IERpdHRvLgor
ICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UpOiBBZGRlZCBhIG5ldyBjb25zdHJ1Y3Rv
cgorICAgICAgICB0aGF0IHRha2VzIGEgY29uc3QgS0pTOjpMaXN0JiBpbnN0ZWFkIG9mIGEgY29u
c3QgU3RyaW5nJi4gV2Ugc3RvcmUgdGhlCisgICAgICAgIEpTVmFsdWUqcyBmcm9tIHRoZSBMaXN0
IGluIGEgVmVjdG9yPFByb3RlY3RlZFB0cjxKU1ZhbHVlPiA+LgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6IEFkZGVkIGFuIG92ZXJs
b2FkCisgICAgICAgIHRoYXQgdGFrZXMgYSBjb25zdCBLSlM6Okxpc3QmLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3NhZ2UpOiBNb3ZlZCBjb2Rl
IGhlcmUKKyAgICAgICAgZnJvbSBhZGRNZXNzYWdlVG9Db25zb2xlLiBCb3RoIG92ZXJsb2FkcyBv
ZiBhZGRNZXNzYWdlVG9Db25zb2xlIG5vdworICAgICAgICBjYWxsIHRoaXMgaGVscGVyIG1ldGhv
ZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFNjcmlwdENvbnNv
bGVNZXNzYWdlKTogVXBkYXRlZCBmb3IKKyAgICAgICAgdGhlIG5ldyBwYXJhbWV0ZXIgb3JkZXIg
b2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLiBJZiB0aGUKKyAgICAgICAgQ29uc29sZU1l
c3NhZ2UgaGFzIGEgbm9uLWVtcHR5IGFyZ3VtZW50cyBWZWN0b3IsIHdlIHVzZSB0aGF0IGluc3Rl
YWQKKyAgICAgICAgb2YgdGhlIENvbnNvbGVNZXNzYWdlJ3MgbWVzc2FnZSBTdHJpbmcuCisgICAg
ICAgICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9pbnNwZWN0
b3IvQ29uc29sZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
KTogUmVtb3ZlZCB0aGUgZXhwbGljaXQgbWVzc2FnZSBwYXJhbWV0ZXIuCisgICAgICAgIFdlIG5v
dyBnZXQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgdW5uYW1lZCA1dGggcGFyYW1ldGVyLgorICAgICAg
ICAqIHBhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzOiBVcGRhdGVkIGZvciB0aGUgY2hhbmdlIHRv
CisgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSdzIHBhcmFtZXRlciBvcmRlci4K
KworMjAwOC0wMy0yMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAg
Q2hhbmdlIGNhbGxzIHRvIENocm9tZTo6YWRkTWVzc2FnZVRvQ29uc29sZSB0byB1c2UgQ29uc29s
ZTo6YWRkTWVzc2FnZQogCiAgICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2cs
d2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCBjNzAx
OTQ5Li4wMTZkZjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ29uc29sZTo6
ZXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAgIFN0cmlu
ZyB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CiAKICAgICBwYWdl
LT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShtZXNzYWdlLCAwLCB1cmwpOwotICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCB1cmwpOworICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2Us
IEVycm9yTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIDAsIHVybCk7CiB9CiAKIHZvaWQgQ29uc29s
ZTo6aW5mbyhFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBDb25zb2xlOjppbmZvKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExp
c3QmIGFyZ3VtZW50cykKICAgICBTdHJpbmcgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgp
LnByZXR0eVVSTCgpOwogCiAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWVzc2FnZSwgMCwgdXJsKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IDAsIHVybCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIDAsIHVy
bCk7CiB9CiAKIHZvaWQgQ29uc29sZTo6bG9nKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IExpc3Qm
IGFyZ3VtZW50cykKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENvbnNvbGU6OmxvZyhFeGVjU3Rh
dGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiAgICAgU3RyaW5nIHVybCA9IG1fZnJh
bWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKTsKIAogICAgIHBhZ2UtPmNocm9tZSgpLT5h
ZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZUxldmVsLCBtZXNzYWdlLCAwLCB1cmwpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZl
bCwgYXJndW1lbnRzLCAwLCB1cmwpOwogfQogCiB2b2lkIENvbnNvbGU6Ondhcm4oRXhlY1N0YXRl
KiBzdGF0ZSwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
Q29uc29sZTo6d2FybihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCiAg
ICAgU3RyaW5nIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKTsKIAog
ICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7
Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpT
TWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgdXJsKTsKKyAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIDAsIHVybCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCAyYzQ1OGNjLi4zZWNlZjI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC05NCw5ICs5NCwyMSBAQCBzdHJ1Y3QgQ29uc29sZU1lc3NhZ2UgewogICAgIHsKICAgICB9
CiAKKyAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VMZXZlbCBsLCBj
b25zdCBLSlM6Okxpc3QmIGFyZ3MsIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUpCisgICAg
ICAgIDogc291cmNlKHMpCisgICAgICAgICwgbGV2ZWwobCkKKyAgICAgICAgLCBhcmd1bWVudHMo
YXJncy5zaXplKCkpCisgICAgICAgICwgbGluZShsaSkKKyAgICAgICAgLCB1cmwodSkKKyAgICB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgYXJndW1lbnRzW2ldID0gYXJnc1tpXTsKKyAgICB9CisKICAgICBNZXNzYWdlU291
cmNlIHNvdXJjZTsKICAgICBNZXNzYWdlTGV2ZWwgbGV2ZWw7CiAgICAgU3RyaW5nIG1lc3NhZ2U7
CisgICAgVmVjdG9yPEtKUzo6UHJvdGVjdGVkUHRyPEtKUzo6SlNWYWx1ZT4gPiBhcmd1bWVudHM7
CiAgICAgdW5zaWduZWQgbGluZTsKICAgICBTdHJpbmcgdXJsOwogfTsKQEAgLTc2MiwxMiArNzc0
LDI3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZShib29sIHZp
c2libGUpCiAgICAgbV9zaG93QWZ0ZXJWaXNpYmxlID0gRm9jdXNlZE5vZGVEb2N1bWVudFBhbmVs
OwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgS0pTOjpMaXN0JiBh
cmd1bWVudHMsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgYXJndW1lbnRzLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ29uc29sZU1lc3NhZ2UqIGNvbnNvbGVNZXNzYWdlID0gbmV3IENvbnNvbGVNZXNzYWdlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKKyAgICBhZGRDb25z
b2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlSUQpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRD
b25zb2xlTWVzc2FnZShDb25zb2xlTWVzc2FnZSogY29uc29sZU1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKGVuYWJsZWQoKSk7CisgICAgQVNTRVJUX0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29sZU1l
c3NhZ2UpOworCiAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNvbnNvbGVNZXNzYWdlKTsK
IAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCkBAIC0xMjkzLDE0ICsxMzIwLDI2IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgQ29uc29s
ZU1lc3NhZ2UqIG1lc3NhZ2UpCiAKICAgICBKU1ZhbHVlUmVmIHNvdXJjZVZhbHVlID0gSlNWYWx1
ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlLT5zb3VyY2UpOwogICAgIEpTVmFs
dWVSZWYgbGV2ZWxWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgbWVz
c2FnZS0+bGV2ZWwpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNzYWdlU3RyaW5n
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG1lc3NhZ2UtPm1lc3NhZ2UuY2hh
cmFjdGVycygpLCBtZXNzYWdlLT5tZXNzYWdlLmxlbmd0aCgpKSk7Ci0gICAgSlNWYWx1ZVJlZiBt
ZXNzYWdlVmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhtX3NjcmlwdENvbnRleHQsIG1lc3NhZ2VT
dHJpbmcuZ2V0KCkpOwogICAgIEpTVmFsdWVSZWYgbGluZVZhbHVlID0gSlNWYWx1ZU1ha2VOdW1i
ZXIobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlLT5saW5lKTsKICAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG1l
c3NhZ2UtPnVybC5jaGFyYWN0ZXJzKCksIG1lc3NhZ2UtPnVybC5sZW5ndGgoKSkpOwogICAgIEpT
VmFsdWVSZWYgdXJsVmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhtX3NjcmlwdENvbnRleHQsIHVy
bFN0cmluZy5nZXQoKSk7CiAKLSAgICBKU1ZhbHVlUmVmIGFyZ3NbXSA9IHsgc291cmNlVmFsdWUs
IGxldmVsVmFsdWUsIG1lc3NhZ2VWYWx1ZSwgbGluZVZhbHVlLCB1cmxWYWx1ZSB9OwotICAgIEpT
T2JqZWN0UmVmIG1lc3NhZ2VPYmplY3QgPSBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKG1fc2Ny
aXB0Q29udGV4dCwgbWVzc2FnZUNvbnN0cnVjdG9yLCA1LCBhcmdzLCAwKTsKKyAgICBWZWN0b3I8
SlNWYWx1ZVJlZj4gYXJndW1lbnRzKDQpOworICAgIGFyZ3VtZW50c1swXSA9IHNvdXJjZVZhbHVl
OworICAgIGFyZ3VtZW50c1sxXSA9IGxldmVsVmFsdWU7CisgICAgYXJndW1lbnRzWzJdID0gbGlu
ZVZhbHVlOworICAgIGFyZ3VtZW50c1szXSA9IHVybFZhbHVlOworCisgICAgaWYgKCFtZXNzYWdl
LT5hcmd1bWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtZXNzYWdlLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKHRvUmVmKG1lc3NhZ2UtPmFyZ3VtZW50c1tpXSkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNzYWdlU3RyaW5nKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG1lc3NhZ2UtPm1lc3NhZ2UuY2hhcmFjdGVycygpLCBtZXNz
YWdlLT5tZXNzYWdlLmxlbmd0aCgpKSk7CisgICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVl
ID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlU3RyaW5nLmdldCgp
KTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChtZXNzYWdlVmFsdWUpOworICAgIH0KKworICAg
IEpTT2JqZWN0UmVmIG1lc3NhZ2VPYmplY3QgPSBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKG1f
c2NyaXB0Q29udGV4dCwgbWVzc2FnZUNvbnN0cnVjdG9yLCBhcmd1bWVudHMuc2l6ZSgpLCBhcmd1
bWVudHMuZGF0YSgpLCAwKTsKIAogICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24obV9zY3JpcHRD
b250ZXh0LCBhZGRNZXNzYWdlLCBtX3NjcmlwdE9iamVjdCwgMSwgJm1lc3NhZ2VPYmplY3QsIDAp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dl
YkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZWNkYzU1Ni4uN2JiMWMyMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJD
b3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHdpbmRvd1Zpc2libGUoKTsKICAgICB2b2lkIHNldFdpbmRvd1Zpc2libGUoYm9v
bCB2aXNpYmxlID0gdHJ1ZSk7CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBLSlM6Okxpc3QmIGFyZ3VtZW50cywgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAgICAgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKIAog
ICAgIHZvaWQgYXR0YWNoV2luZG93KCk7CkBAIC0xMjYsNiArMTI3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGZvY3VzTm9kZSgpOwogCisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShDb25zb2xlTWVzc2FnZSopOwogICAgIHZvaWQgYWRkU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29u
c3QgQ29uc29sZU1lc3NhZ2UqKTsKICAgICB2b2lkIGNsZWFyU2NyaXB0Q29uc29sZU1lc3NhZ2Vz
KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZVBhbmVsLmpz
IGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlUGFuZWwuanMKaW5kZXggZDBmZjA1NC4u
ZGJlM2M5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlUGFuZWwu
anMKKysrIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlUGFuZWwuanMKQEAgLTYzNCwx
MyArNjM0LDE4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwucHJvdG90eXBlID0gewogCiBX
ZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuUGFuZWwucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5j
dGlvbihzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lLCB1cmwpCitXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBsaW5lLCB1cmwpCiB7CiAgICAg
dGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgICAgdGhpcy5sZXZlbCA9IGxldmVsOwotICAgIHRoaXMu
bWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgdGhpcy5saW5lID0gbGluZTsKICAgICB0aGlzLnVybCA9
IHVybDsKKworICAgIHZhciBtZXNzYWdlID0gYXJndW1lbnRzWzRdOworICAgIGlmICh0eXBlb2Yg
bWVzc2FnZSA9PT0gInN0cmluZyIpCisgICAgICAgIHRoaXMubWVzc2FnZSA9IFN0cmluZy5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMubWVz
c2FnZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtZXNzYWdlKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Jl
c291cmNlLmpzCmluZGV4IGVkMzU5NzAuLjYwOWFkYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9SZXNv
dXJjZS5qcwpAQCAtNDIwLDcgKzQyMCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgZmxvb2QgdGhlIENvbnNvbGUgd2l0aCB0
b28gbWFueSB0aXBzLgogICAgICAgICAvKgogICAgICAgICB2YXIgbXNnID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5PdGhlciwKLSAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5UaXAsIHRpcC5tZXNzYWdlLCAtMSwgdGhpcy51cmwpOworICAgICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLlRp
cCwgLTEsIHRoaXMudXJsLCB0aXAubWVzc2FnZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb25z
b2xlUGFuZWwuYWRkTWVzc2FnZShtc2cpOwogICAgICAgICAqLwogCkBAIC00ODEsMTAgKzQ4MSw5
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5pZDoKICAgICAgICAgICAg
ICAgICBpZiAoIXRoaXMuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5cGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgbXNnID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcsIC0xLCB0aGlzLnVybCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLldh
cm5pbmdzLkluY29ycmVjdE1JTUVUeXBlLm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyh0aGlzLnR5
cGUpLCB0aGlzLm1pbWVUeXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEs
IHRoaXMudXJsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHRoaXMudHlwZSksIHRoaXMubWltZVR5cGUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0tIAoxLjUuNC4zCgo=
</data>
<flag name="review"
          id="8731"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20561</attachid>
            <date>2008-04-15 10:51:32 -0700</date>
            <delta_ts>2008-04-16 12:21:43 -0700</delta_ts>
            <desc>Step 3 (v2): Pass all arguments to console.{log,warn,info,error} down to the Inspector&apos;s JS</desc>
            <filename>0001--Pass-all-arguments-to-console.-log-warn-info.patch</filename>
            <type>text/plain</type>
            <size>13990</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAxMjIxMDAyNTNjM2M4ZTgwNjg4YTc2ZmI5YTQ3MjU4YmE1MTY3Mjg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDE1IEFwciAyMDA4IDEzOjIwOjQ5IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUGFz
cyBhbGwgYXJndW1lbnRzIHRvIGNvbnNvbGUue2xvZyx3YXJuLGluZm8sZXJyb3J9IGludG8gdGhl
IEluc3BlY3RvcidzIEpTCgogICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLntsb2cs
d2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKICAgICAgICBzdHJpbmdzLCB2
YXJpYWJsZSBhcmd1bWVudHMKICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMjg+CiAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzI4Mjg+CgogICAgICAg
IFdlIGRvbid0IHVzZSB0aGUgZXh0cmEgYXJndW1lbnRzIHlldC4KCiAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6ZXJyb3IpOiBQYXNzIHRoZSBhcmd1bWVudHMgbGlzdCB0bwogICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIuCiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8p
OiBEaXR0by4KICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKTogRGl0dG8uCiAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOiBEaXR0by4KICAgICAgICAqIHBhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xl
TWVzc2FnZSk6IEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yCiAgICAgICAgdGhhdCB0YWtlcyBhbiBF
eGVjU3RhdGUgYW5kIGEgTGlzdCBpbnN0ZWFkIG9mIGEgU3RyaW5nLiBXZSB3cmFwIGFuZAogICAg
ICAgIHN0b3JlIHRoZSBKU1ZhbHVlcyBmcm9tIHRoZSBMaXN0IGluIGEgVmVjdG9yPFByb3RlY3Rl
ZFB0cjxKU1ZhbHVlPiA+LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRNZXNzYWdlVG9Db25zb2xlKTogQWRkZWQgYW4gb3ZlcmxvYWQKICAgICAgICB0aGF0IHRha2Vz
IGFuIEV4ZWNTdGF0ZSBhbmQgYSBMaXN0LgogICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjphZGRDb25zb2xlTWVzc2FnZSk6IE1vdmVkIGNvZGUgaGVyZQogICAgICAgIGZyb20g
YWRkTWVzc2FnZVRvQ29uc29sZS4gQm90aCBvdmVybG9hZHMgb2YgYWRkTWVzc2FnZVRvQ29uc29s
ZSBub3cKICAgICAgICBjYWxsIHRoaXMgaGVscGVyIG1ldGhvZC4KICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0Q29uc29sZU1lc3NhZ2UpOiBVcGRhdGVkIGZv
cgogICAgICAgIHRoZSBuZXcgcGFyYW1ldGVyIG9yZGVyIG9mIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS4gSWYgdGhlCiAgICAgICAgQ29uc29sZU1lc3NhZ2UgaGFzIGEgbm9uLWVtcHR5IHdy
YXBwZWRBcmd1bWVudHMgVmVjdG9yLCB3ZSB1c2UgdGhhdAogICAgICAgIGluc3RlYWQgb2YgdGhl
IENvbnNvbGVNZXNzYWdlJ3MgbWVzc2FnZSBTdHJpbmcuCiAgICAgICAgKiBwYWdlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanM6CiAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSk6IFJlbW92ZWQgdGhlIGV4cGxpY2l0IG1l
c3NhZ2UgcGFyYW1ldGVyLgogICAgICAgIFdlIG5vdyBnZXQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUg
dW5uYW1lZCA1dGggcGFyYW1ldGVyLgogICAgICAgICogcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2Uu
anM6IFVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2UgdG8KICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UncyBwYXJhbWV0ZXIgb3JkZXIuCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgIHwgICAzOSArKysrKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcCAgICAgICAgICAgICB8ICAgIDggKystLQogV2ViQ29yZS9wYWdlL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIHwgICA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst
LS0KIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmggICB8ICAgIDIgKwogV2ViQ29y
ZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzICAgIHwgICAgNSArKy0KIFdlYkNvcmUvcGFnZS9p
bnNwZWN0b3IvUmVzb3VyY2UuanMgICB8ICAgIDcgKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMDEg
aW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTg5YWMwLi5lZmNhOWRhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDQ0IEBACiAyMDA4LTA0LTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAg
ICAgICBQYXNzIGFsbCBhcmd1bWVudHMgdG8gY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0g
aW50byB0aGUgSW5zcGVjdG9yJ3MgSlMKKworICAgICAgICBQYXJ0IG9mIEJ1ZyAxNzIyODogY29u
c29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQgZm9ybWF0CisgICAgICAg
IHN0cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50cworICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzMy
ODI4PgorCisgICAgICAgIFdlIGRvbid0IHVzZSB0aGUgZXh0cmEgYXJndW1lbnRzIHlldC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvQ29u
c29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjplcnJvcik6IFBhc3MgdGhlIGFy
Z3VtZW50cyBsaXN0IHRvCisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuCisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjppbmZvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
Ojpsb2cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKTogQWRkZWQgYSBuZXcgY29uc3RydWN0
b3IKKyAgICAgICAgdGhhdCB0YWtlcyBhbiBFeGVjU3RhdGUgYW5kIGEgTGlzdCBpbnN0ZWFkIG9m
IGEgU3RyaW5nLiBXZSB3cmFwIGFuZAorICAgICAgICBzdG9yZSB0aGUgSlNWYWx1ZXMgZnJvbSB0
aGUgTGlzdCBpbiBhIFZlY3RvcjxQcm90ZWN0ZWRQdHI8SlNWYWx1ZT4gPi4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOiBBZGRlZCBh
biBvdmVybG9hZAorICAgICAgICB0aGF0IHRha2VzIGFuIEV4ZWNTdGF0ZSBhbmQgYSBMaXN0Lgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3NhZ2Up
OiBNb3ZlZCBjb2RlIGhlcmUKKyAgICAgICAgZnJvbSBhZGRNZXNzYWdlVG9Db25zb2xlLiBCb3Ro
IG92ZXJsb2FkcyBvZiBhZGRNZXNzYWdlVG9Db25zb2xlIG5vdworICAgICAgICBjYWxsIHRoaXMg
aGVscGVyIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFk
ZFNjcmlwdENvbnNvbGVNZXNzYWdlKTogVXBkYXRlZCBmb3IKKyAgICAgICAgdGhlIG5ldyBwYXJh
bWV0ZXIgb3JkZXIgb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLiBJZiB0aGUKKyAgICAg
ICAgQ29uc29sZU1lc3NhZ2UgaGFzIGEgbm9uLWVtcHR5IHdyYXBwZWRBcmd1bWVudHMgVmVjdG9y
LCB3ZSB1c2UgdGhhdAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBDb25zb2xlTWVzc2FnZSdzIG1l
c3NhZ2UgU3RyaW5nLgorICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UpOiBSZW1vdmVkIHRoZSBleHBsaWNpdCBtZXNzYWdlIHBhcmFtZXRlci4K
KyAgICAgICAgV2Ugbm93IGdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSB1bm5hbWVkIDV0aCBwYXJh
bWV0ZXIuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanM6IFVwZGF0ZWQgZm9y
IHRoZSBjaGFuZ2UgdG8KKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlJ3MgcGFy
YW1ldGVyIG9yZGVyLgorCisyMDA4LTA0LTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KKwogICAgICAgICBDaGFuZ2UgY2FsbHMgdG8gQ2hyb21lOjphZGRNZXNzYWdlVG9Db25zb2xl
IHRvIHVzZSBDb25zb2xlOjphZGRNZXNzYWdlCiAKICAgICAgICAgUGFydCBvZiBCdWcgMTcyMjg6
IGNvbnNvbGUue2xvZyx3YXJuLGluZm8sZXJyb3J9IHNob3VsZCBzdXBwb3J0IGZvcm1hdApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwCmluZGV4IDg2NDEwMjMuLjIzMWY5ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25z
b2xlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBDb25zb2xlOjplcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3VtZW50
cykKICAgICBTdHJpbmcgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgp
OwogCiAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1l
c3NhZ2UsIDAsIHVybCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IDAsIHVybCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGV4ZWMsIGFyZ3VtZW50
cywgMCwgdXJsKTsKIH0KIAogdm9pZCBDb25zb2xlOjppbmZvKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTGlzdCYgYXJndW1lbnRzKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQ29uc29sZTo6aW5m
byhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKICAgICBTdHJpbmcgdXJs
ID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVSTCgpOwogCiAgICAgcGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7Ci0g
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCB1cmwpOworICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VMZXZlbCwgZXhlYywgYXJndW1lbnRzLCAwLCB1cmwpOwogfQogCiB2b2lk
IENvbnNvbGU6OmxvZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKQEAg
LTEyMCw3ICsxMjAsNyBAQCB2b2lkIENvbnNvbGU6OmxvZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IExpc3QmIGFyZ3VtZW50cykKICAgICBTdHJpbmcgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVy
bCgpLnByZXR0eVVSTCgpOwogCiAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1lc3NhZ2UsIDAsIHVybCk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCAwLCB1cmwpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgZXhl
YywgYXJndW1lbnRzLCAwLCB1cmwpOwogfQogCiB2b2lkIENvbnNvbGU6Ondhcm4oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBD
b25zb2xlOjp3YXJuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJndW1lbnRzKQogICAg
IFN0cmluZyB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCk7CiAKICAg
ICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWVzc2FnZSwg
MCwgdXJsKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCB1
cmwpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29s
ZShKU01lc3NhZ2VTb3VyY2UsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGV4ZWMsIGFyZ3VtZW50cywg
MCwgdXJsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGMzODljNjUuLmQ3ZmJkYTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMTUsOSArMTE2LDIyIEBAIHN0cnVjdCBDb25zb2xlTWVzc2FnZSB7CiAgICAgewogICAgIH0K
IAorICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZUxldmVsIGwsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgdW5zaWduZWQgbGksIGNvbnN0IFN0cmlu
ZyYgdSkKKyAgICAgICAgOiBzb3VyY2UocykKKyAgICAgICAgLCBsZXZlbChsKQorICAgICAgICAs
IHdyYXBwZWRBcmd1bWVudHMoYXJncy5zaXplKCkpCisgICAgICAgICwgbGluZShsaSkKKyAgICAg
ICAgLCB1cmwodSkKKyAgICB7CisgICAgICAgIEpTTG9jayBsb2NrOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdyYXBwZWRB
cmd1bWVudHNbaV0gPSBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZXhlYywgYXJnc1tp
XSk7CisgICAgfQorCiAgICAgTWVzc2FnZVNvdXJjZSBzb3VyY2U7CiAgICAgTWVzc2FnZUxldmVs
IGxldmVsOwogICAgIFN0cmluZyBtZXNzYWdlOworICAgIFZlY3RvcjxQcm90ZWN0ZWRQdHI8SlNW
YWx1ZT4gPiB3cmFwcGVkQXJndW1lbnRzOwogICAgIHVuc2lnbmVkIGxpbmU7CiAgICAgU3RyaW5n
IHVybDsKIH07CkBAIC04ODgsMTIgKzkwMiwyNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnNldFdpbmRvd1Zpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fc2hvd0FmdGVyVmlzaWJsZSA9
IEZvY3VzZWROb2RlRG9jdW1lbnRQYW5lbDsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJndW1lbnRzLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBpZiAoIWVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVN
ZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGV4ZWMsIGFyZ3VtZW50cywgbGluZU51bWJlciwgc291cmNl
VVJMKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCiB7
CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnNvbGVNZXNz
YWdlKiBjb25zb2xlTWVzc2FnZSA9IG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3
IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZUlEKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3NhZ2Uo
Q29uc29sZU1lc3NhZ2UqIGNvbnNvbGVNZXNzYWdlKQoreworICAgIEFTU0VSVChlbmFibGVkKCkp
OworICAgIEFTU0VSVF9BUkcoY29uc29sZU1lc3NhZ2UsIGNvbnNvbGVNZXNzYWdlKTsKKwogICAg
IG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CiAKICAgICBpZiAod2lu
ZG93VmlzaWJsZSgpKQpAQCAtMTU1OSwxNCArMTU4OCwzMCBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IENvbnNvbGVNZXNzYWdlKiBtZXNz
YWdlKQogCiAgICAgSlNWYWx1ZVJlZiBzb3VyY2VWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1f
c2NyaXB0Q29udGV4dCwgbWVzc2FnZS0+c291cmNlKTsKICAgICBKU1ZhbHVlUmVmIGxldmVsVmFs
dWUgPSBKU1ZhbHVlTWFrZU51bWJlcihtX3NjcmlwdENvbnRleHQsIG1lc3NhZ2UtPmxldmVsKTsK
LSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZVN0cmluZyhBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNzYWdlLT5tZXNzYWdlLmNoYXJhY3RlcnMoKSwgbWVz
c2FnZS0+bWVzc2FnZS5sZW5ndGgoKSkpOwotICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0g
SlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlU3RyaW5nLmdldCgpKTsK
ICAgICBKU1ZhbHVlUmVmIGxpbmVWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29u
dGV4dCwgbWVzc2FnZS0+bGluZSk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVybFN0
cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNzYWdlLT51cmwuY2hh
cmFjdGVycygpLCBtZXNzYWdlLT51cmwubGVuZ3RoKCkpKTsKICAgICBKU1ZhbHVlUmVmIHVybFZh
bHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCB1cmxTdHJpbmcuZ2V0KCkp
OwogCi0gICAgSlNWYWx1ZVJlZiBhcmdzW10gPSB7IHNvdXJjZVZhbHVlLCBsZXZlbFZhbHVlLCBt
ZXNzYWdlVmFsdWUsIGxpbmVWYWx1ZSwgdXJsVmFsdWUgfTsKLSAgICBKU09iamVjdFJlZiBtZXNz
YWdlT2JqZWN0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihtX3NjcmlwdENvbnRleHQsIG1l
c3NhZ2VDb25zdHJ1Y3RvciwgNSwgYXJncywgJmV4Y2VwdGlvbik7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heGltdW1NZXNzYWdlQXJndW1lbnRzID0gMjU2OworICAgIEpTVmFsdWVSZWYg
YXJndW1lbnRzW21heGltdW1NZXNzYWdlQXJndW1lbnRzXTsKKyAgICB1bnNpZ25lZCBhcmd1bWVu
dENvdW50ID0gMDsKKyAgICBhcmd1bWVudHNbYXJndW1lbnRDb3VudCsrXSA9IHNvdXJjZVZhbHVl
OworICAgIGFyZ3VtZW50c1thcmd1bWVudENvdW50KytdID0gbGV2ZWxWYWx1ZTsKKyAgICBhcmd1
bWVudHNbYXJndW1lbnRDb3VudCsrXSA9IGxpbmVWYWx1ZTsKKyAgICBhcmd1bWVudHNbYXJndW1l
bnRDb3VudCsrXSA9IHVybFZhbHVlOworCisgICAgaWYgKCFtZXNzYWdlLT53cmFwcGVkQXJndW1l
bnRzLmlzRW1wdHkoKSkgeworICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdTcGFjZUluQXJndW1l
bnRzID0gbWF4aW11bU1lc3NhZ2VBcmd1bWVudHMgLSBhcmd1bWVudENvdW50OworICAgICAgICB1
bnNpZ25lZCBhcmd1bWVudHNUb0FkZCA9IG1pbihyZW1haW5pbmdTcGFjZUluQXJndW1lbnRzLCBt
ZXNzYWdlLT53cmFwcGVkQXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhcmd1bWVudHNUb0FkZDsgKytpKQorICAgICAgICAgICAgYXJndW1lbnRzW2Fy
Z3VtZW50Q291bnQrK10gPSB0b1JlZihtZXNzYWdlLT53cmFwcGVkQXJndW1lbnRzW2ldKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZVN0cmlu
ZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhtZXNzYWdlLT5tZXNzYWdlLmNo
YXJhY3RlcnMoKSwgbWVzc2FnZS0+bWVzc2FnZS5sZW5ndGgoKSkpOworICAgICAgICBKU1ZhbHVl
UmVmIG1lc3NhZ2VWYWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKG1fc2NyaXB0Q29udGV4dCwgbWVz
c2FnZVN0cmluZy5nZXQoKSk7CisgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudENvdW50KytdID0g
bWVzc2FnZVZhbHVlOworICAgIH0KKworICAgIEpTT2JqZWN0UmVmIG1lc3NhZ2VPYmplY3QgPSBK
U09iamVjdENhbGxBc0NvbnN0cnVjdG9yKG1fc2NyaXB0Q29udGV4dCwgbWVzc2FnZUNvbnN0cnVj
dG9yLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOwogICAgIGlmIChIQU5E
TEVfRVhDRVBUSU9OKGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0
b3JDb250cm9sbGVyLmgKaW5kZXggYTUwNzZlOS4uZjRmNWZlZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbmRvd1Zp
c2libGUoKTsKICAgICB2b2lkIHNldFdpbmRvd1Zpc2libGUoYm9vbCB2aXNpYmxlID0gdHJ1ZSk7
CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxl
dmVsLCBLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYgYXJndW1lbnRzLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKICAgICB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogCiAg
ICAgdm9pZCBhdHRhY2hXaW5kb3coKTsKQEAgLTEzMiw2ICsxMzMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZm9jdXNOb2RlKCk7CiAKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdl
KENvbnNvbGVNZXNzYWdlKik7CiAgICAgdm9pZCBhZGRTY3JpcHRDb25zb2xlTWVzc2FnZShjb25z
dCBDb25zb2xlTWVzc2FnZSopOwogCiAgICAgdm9pZCBhZGRSZXNvdXJjZShJbnNwZWN0b3JSZXNv
dXJjZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzIGIv
V2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCmluZGV4IGY4MWE4YjguLjgyODA2NTIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcworKysgYi9XZWJD
b3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMKQEAgLTQzNCwxMyArNDM0LDE0IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKIAotV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCBsZXZlbCwgbWVzc2FnZSwg
bGluZSwgdXJsKQorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNl
LCBsZXZlbCwgbGluZSwgdXJsKQogewogICAgIHRoaXMuc291cmNlID0gc291cmNlOwogICAgIHRo
aXMubGV2ZWwgPSBsZXZlbDsKLSAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgIHRoaXMu
bGluZSA9IGxpbmU7CiAgICAgdGhpcy51cmwgPSB1cmw7CisKKyAgICB0aGlzLm1lc3NhZ2UgPSBh
cmd1bWVudHNbNF07CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUg
PSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzIGIvV2Vi
Q29yZS9wYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qcwppbmRleCAwYTNiN2JkLi5kZWE0NjM4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzCisrKyBiL1dlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMKQEAgLTQzMCw3ICs0MzAsNyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGZs
b29kIHRoZSBDb25zb2xlIHdpdGggdG9vIG1hbnkgdGlwcy4KICAgICAgICAgLyoKICAgICAgICAg
dmFyIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCi0gICAgICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuVGlwLCB0aXAubWVzc2FnZSwg
LTEsIHRoaXMudXJsKTsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5UaXAsIC0xLCB0aGlzLnVybCwgdGlwLm1lc3NhZ2UpOwogICAg
ICAgICBXZWJJbnNwZWN0b3IuY29uc29sZVBhbmVsLmFkZE1lc3NhZ2UobXNnKTsKICAgICAgICAg
Ki8KICAgICB9LApAQCAtNDg4LDEwICs0ODgsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5jb3Jy
ZWN0TUlNRVR5cGUuaWQ6CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9taW1lVHlwZUlzQ29u
c2lzdGVudFdpdGhUeXBlKCkpCiAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VT
b3VyY2UuT3RoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5X
YXJuaW5nLCAtMSwgdGhpcy51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5tZXNz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsIHRoaXMudXJsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHRoaXMu
dHlwZSksIHRoaXMubWltZVR5cGUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0tIAoxLjUuNS40OS5nOTE0YTkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20566</attachid>
            <date>2008-04-15 16:29:55 -0700</date>
            <delta_ts>2008-04-16 12:22:16 -0700</delta_ts>
            <desc>Step 4: Separate out tokenizing of format strings</desc>
            <filename>0001--Refactor-String.vsprintf-to-separate-tokeniz.patch</filename>
            <type>text/plain</type>
            <size>7172</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSA4YjU2ODZkMjNkNWVjMDNkNWNhYzc3ZTM4YWM1YmQwMDQ0NTViMTIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDE1IEFwciAyMDA4IDE1OjE4OjE0IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgUmVm
YWN0b3IgU3RyaW5nLnZzcHJpbnRmIHRvIHNlcGFyYXRlIHRva2VuaXppbmcgYW5kIHN1YnN0aXR1
dGluZwoKICAgICAgICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSB1c2VmdWwgZm9yIHRoZSB2YXJp
b3VzIGNvbnNvbGUgbWV0aG9kcyB0aGF0CiAgICAgICAgdGFrZSBhIGZvcm1hdCBzdHJpbmcuCgog
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIHBhZ2UvaW5zcGVj
dG9yL3V0aWxpdGllcy5qczoKICAgICAgICAoU3RyaW5nLnRva2VuaXplRm9ybWF0U3RyaW5nKTog
QWRkZWQuIFRoaXMgdXNlcyB0aGUgZm9ybWF0IHBhcnNpbmcKICAgICAgICBjb2RlIGZyb20gU3Ry
aW5nLnZzcHJpbnRmIGJ1dCBqdXN0IHJldHVybnMgYW4gYXJyYXkgb2YgInN0cmluZyIgYW5kCiAg
ICAgICAgInNwZWNpZmllciIgdG9rZW5zLgogICAgICAgIChTdHJpbmcudnNwcmludGYpOiBOb3cg
Y2FsbHMgU3RyaW5nLnRva2VuaXplRm9ybWF0U3RyaW5nIGFuZCBwcm9jZXNzZXMKICAgICAgICB0
aGUgdG9rZW5zIG9uZSBhdCBhIHRpbWUuCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgfCAgIDE2ICsrKysrKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMu
anMgfCAgIDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAyIGZpbGVzIGNo
YW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjYTlkYS4uYjlhYmE1
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwyMSBAQAogMjAwOC0wNC0xNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgUmVmYWN0b3IgU3RyaW5nLnZzcHJpbnRmIHRvIHNlcGFyYXRlIHRva2Vu
aXppbmcgYW5kIHN1YnN0aXR1dGluZworCisgICAgICAgIFRoaXMgd2lsbCBldmVudHVhbGx5IGJl
IHVzZWZ1bCBmb3IgdGhlIHZhcmlvdXMgY29uc29sZSBtZXRob2RzIHRoYXQKKyAgICAgICAgdGFr
ZSBhIGZvcm1hdCBzdHJpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanM6CisgICAgICAgIChTdHJp
bmcudG9rZW5pemVGb3JtYXRTdHJpbmcpOiBBZGRlZC4gVGhpcyB1c2VzIHRoZSBmb3JtYXQgcGFy
c2luZworICAgICAgICBjb2RlIGZyb20gU3RyaW5nLnZzcHJpbnRmIGJ1dCBqdXN0IHJldHVybnMg
YW4gYXJyYXkgb2YgInN0cmluZyIgYW5kCisgICAgICAgICJzcGVjaWZpZXIiIHRva2Vucy4KKyAg
ICAgICAgKFN0cmluZy52c3ByaW50Zik6IE5vdyBjYWxscyBTdHJpbmcudG9rZW5pemVGb3JtYXRT
dHJpbmcgYW5kIHByb2Nlc3NlcworICAgICAgICB0aGUgdG9rZW5zIG9uZSBhdCBhIHRpbWUuCisK
KzIwMDgtMDQtMTUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFBh
c3MgYWxsIGFyZ3VtZW50cyB0byBjb25zb2xlLntsb2csd2FybixpbmZvLGVycm9yfSBpbnRvIHRo
ZSBJbnNwZWN0b3IncyBKUwogCiAgICAgICAgIFBhcnQgb2YgQnVnIDE3MjI4OiBjb25zb2xlLnts
b2csd2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rv
ci91dGlsaXRpZXMuanMKaW5kZXggODkwZjBhYi4uOWI3MDk3ZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMKKysrIGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rv
ci91dGlsaXRpZXMuanMKQEAgLTc1MiwyMSArNzUyLDI4IEBAIFN0cmluZy5zcHJpbnRmID0gZnVu
Y3Rpb24oZm9ybWF0KQogICAgIHJldHVybiBTdHJpbmcudnNwcmludGYoZm9ybWF0LCBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKIH0KIAotU3RyaW5nLnZzcHJpbnRm
ID0gZnVuY3Rpb24oZm9ybWF0LCBzdWJzdGl0dXRpb25zKQorU3RyaW5nLnRva2VuaXplRm9ybWF0
U3RyaW5nID0gZnVuY3Rpb24oZm9ybWF0KQogewotICAgIGlmICghZm9ybWF0IHx8ICFzdWJzdGl0
dXRpb25zIHx8ICFzdWJzdGl0dXRpb25zLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZvcm1hdDsK
LQotICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICB2YXIgdG9rZW5zID0gW107CiAgICAgdmFyIHN1
YnN0aXR1dGlvbkluZGV4ID0gMDsKIAorICAgIGZ1bmN0aW9uIGFkZFN0cmluZ1Rva2VuKHN0cikK
KyAgICB7CisgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogInN0cmluZyIsIHZhbHVlOiBzdHIg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkU3BlY2lmaWVyVG9rZW4oc3BlY2lmaWVyLCBw
cmVjaXNpb24sIHN1YnN0aXR1dGlvbkluZGV4KQorICAgIHsKKyAgICAgICAgdG9rZW5zLnB1c2go
eyB0eXBlOiAic3BlY2lmaWVyIiwgc3BlY2lmaWVyOiBzcGVjaWZpZXIsIHByZWNpc2lvbjogcHJl
Y2lzaW9uLCBzdWJzdGl0dXRpb25JbmRleDogc3Vic3RpdHV0aW9uSW5kZXggfSk7CisgICAgfQor
CiAgICAgdmFyIGluZGV4ID0gMDsKICAgICBmb3IgKHZhciBwcmVjZW50SW5kZXggPSBmb3JtYXQu
aW5kZXhPZigiJSIsIGluZGV4KTsgcHJlY2VudEluZGV4ICE9PSAtMTsgcHJlY2VudEluZGV4ID0g
Zm9ybWF0LmluZGV4T2YoIiUiLCBpbmRleCkpIHsKLSAgICAgICAgcmVzdWx0ICs9IGZvcm1hdC5z
dWJzdHJpbmcoaW5kZXgsIHByZWNlbnRJbmRleCk7CisgICAgICAgIGFkZFN0cmluZ1Rva2VuKGZv
cm1hdC5zdWJzdHJpbmcoaW5kZXgsIHByZWNlbnRJbmRleCkpOwogICAgICAgICBpbmRleCA9IHBy
ZWNlbnRJbmRleCArIDE7CiAKICAgICAgICAgaWYgKGZvcm1hdFtpbmRleF0gPT09ICIlIikgewot
ICAgICAgICAgICAgcmVzdWx0ICs9ICIlIjsKKyAgICAgICAgICAgIGFkZFN0cmluZ1Rva2VuKCIl
Iik7CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KQEAgLTc5Niw0MCArODAzLDgxIEBAIFN0cmluZy52c3ByaW50ZiA9IGZ1bmN0aW9uKGZvcm1h
dCwgc3Vic3RpdHV0aW9ucykKICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKHN1YnN0aXR1dGlvbkluZGV4ID49IHN1YnN0aXR1dGlvbnMubGVuZ3RoKSB7
CisgICAgICAgIGFkZFNwZWNpZmllclRva2VuKGZvcm1hdFtpbmRleF0sIHByZWNpc2lvbiwgc3Vi
c3RpdHV0aW9uSW5kZXgpOworCisgICAgICAgICsrc3Vic3RpdHV0aW9uSW5kZXg7CisgICAgICAg
ICsraW5kZXg7CisgICAgfQorCisgICAgYWRkU3RyaW5nVG9rZW4oZm9ybWF0LnN1YnN0cmluZyhp
bmRleCkpOworCisgICAgcmV0dXJuIHRva2VuczsKK30KKworU3RyaW5nLnZzcHJpbnRmID0gZnVu
Y3Rpb24oZm9ybWF0LCBzdWJzdGl0dXRpb25zKQoreworICAgIGlmICghZm9ybWF0IHx8ICFzdWJz
dGl0dXRpb25zIHx8ICFzdWJzdGl0dXRpb25zLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZvcm1h
dDsKKworICAgIGZ1bmN0aW9uIHByZXR0eUZ1bmN0aW9uTmFtZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gIlN0cmluZy52c3ByaW50ZihcIiIgKyBmb3JtYXQgKyAiXCIsIFwiIiArIHN1YnN0aXR1
dGlvbnMuam9pbigiXCIsIFwiIikgKyAiXCIpIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3YXJu
KG1zZykKKyAgICB7CisgICAgICAgIGNvbnNvbGUud2FybihwcmV0dHlGdW5jdGlvbk5hbWUoKSAr
ICI6ICIgKyBtc2cpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVycm9yKG1zZykKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuZXJyb3IocHJldHR5RnVuY3Rpb25OYW1lKCkgKyAiOiAiICsgbXNnKTsK
KyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgdmFyIHRva2VucyA9IFN0cmluZy50
b2tlbml6ZUZvcm1hdFN0cmluZyhmb3JtYXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
b2tlbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldOworCisg
ICAgICAgIGlmICh0b2tlbi50eXBlID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgcmVzdWx0
ICs9IHRva2VuLnZhbHVlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodG9rZW4udHlwZSAhPT0gInNwZWNpZmllciIpIHsKKyAgICAgICAgICAgIGVycm9y
KCJVbmtub3duIHRva2VuIHR5cGUgXCIiICsgdG9rZW4udHlwZSArICJcIiBmb3VuZC4iKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRva2VuLnN1YnN0
aXR1dGlvbkluZGV4ID49IHN1YnN0aXR1dGlvbnMubGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBhcmUgbm90IGVub3VnaCBzdWJzdGl0dXRpb25zIGZvciB0aGUgY3VycmVudCBzdWJz
dGl0dXRpb25JbmRleAogICAgICAgICAgICAgLy8ganVzdCBvdXRwdXQgdGhlIGZvcm1hdCBzcGVj
aWZpZXIgbGl0ZXJhbGx5IGFuZCBtb3ZlIG9uLgotICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
U3RyaW5nLnZzcHJpbnRmKFwiIiArIGZvcm1hdCArICJcIiwgXCIiICsgc3Vic3RpdHV0aW9ucy5q
b2luKCJcIiwgXCIiKSArICJcIik6IG5vdCBlbm91Z2ggc3Vic3RpdHV0aW9uIGFyZ3VtZW50cy4g
SGFkICIgKyBzdWJzdGl0dXRpb25zLmxlbmd0aCArICIgYnV0IG5lZWRlZCAiICsgKHN1YnN0aXR1
dGlvbkluZGV4ICsgMSkgKyAiLCBzbyBzdWJzdGl0dXRpb24gd2FzIHNraXBwZWQuIik7Ci0gICAg
ICAgICAgICBpbmRleCA9IHByZWNlbnRJbmRleCArIDE7Ci0gICAgICAgICAgICByZXN1bHQgKz0g
IiUiOworICAgICAgICAgICAgZXJyb3IoIm5vdCBlbm91Z2ggc3Vic3RpdHV0aW9uIGFyZ3VtZW50
cy4gSGFkICIgKyBzdWJzdGl0dXRpb25zLmxlbmd0aCArICIgYnV0IG5lZWRlZCAiICsgKHRva2Vu
LnN1YnN0aXR1dGlvbkluZGV4ICsgMSkgKyAiLCBzbyBzdWJzdGl0dXRpb24gd2FzIHNraXBwZWQu
Iik7CisgICAgICAgICAgICByZXN1bHQgKz0gIiUiICsgKHRva2VuLnByZWNpc2lvbiA+IC0xID8g
dG9rZW4ucHJlY2lzaW9uIDogIiIpICsgdG9rZW4uc3BlY2lmaWVyOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdFtpbmRleF0pIHsKKyAg
ICAgICAgc3dpdGNoICh0b2tlbi5zcGVjaWZpZXIpIHsKICAgICAgICAgY2FzZSAiZCI6Ci0gICAg
ICAgICAgICB2YXIgc3Vic3RpdHV0aW9uID0gcGFyc2VJbnQoc3Vic3RpdHV0aW9uc1tzdWJzdGl0
dXRpb25JbmRleF0pOworICAgICAgICAgICAgdmFyIHN1YnN0aXR1dGlvbiA9IHBhcnNlSW50KHN1
YnN0aXR1dGlvbnNbdG9rZW4uc3Vic3RpdHV0aW9uSW5kZXhdKTsKICAgICAgICAgICAgIHJlc3Vs
dCArPSAoIWlzTmFOKHN1YnN0aXR1dGlvbikgPyBzdWJzdGl0dXRpb24gOiAwKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlICJmIjoKLSAgICAgICAgICAgIHZhciBzdWJzdGl0dXRp
b24gPSBwYXJzZUZsb2F0KHN1YnN0aXR1dGlvbnNbc3Vic3RpdHV0aW9uSW5kZXhdKTsKLSAgICAg
ICAgICAgIGlmIChzdWJzdGl0dXRpb24gJiYgcHJlY2lzaW9uID4gLTEpCi0gICAgICAgICAgICAg
ICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRvRml4ZWQocHJlY2lzaW9uKTsKLSAgICAg
ICAgICAgIHJlc3VsdCArPSAoIWlzTmFOKHN1YnN0aXR1dGlvbikgPyBzdWJzdGl0dXRpb24gOiAo
cHJlY2lzaW9uID4gLTEgPyBOdW1iZXIoMCkudG9GaXhlZChwcmVjaXNpb24pIDogMCkpOworICAg
ICAgICAgICAgdmFyIHN1YnN0aXR1dGlvbiA9IHBhcnNlRmxvYXQoc3Vic3RpdHV0aW9uc1t0b2tl
bi5zdWJzdGl0dXRpb25JbmRleF0pOworICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbiAmJiB0
b2tlbi5wcmVjaXNpb24gPiAtMSkKKyAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJz
dGl0dXRpb24udG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pOworICAgICAgICAgICAgcmVzdWx0ICs9
ICghaXNOYU4oc3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6ICh0b2tlbi5wcmVjaXNpb24g
PiAtMSA/IE51bWJlcigwKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbikgOiAwKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIEVuY291bnRlcmVk
IGFuIHVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIsIHRyZWF0IGFzIGEgc3RyaW5nLgotICAg
ICAgICAgICAgY29uc29sZS53YXJuKCJTdHJpbmcudnNwcmludGYoXCIiICsgZm9ybWF0ICsgIlwi
LCBcIiIgKyBzdWJzdGl0dXRpb25zLmpvaW4oIlwiLCBcIiIpICsgIlwiKTogdW5zdXBwb3J0ZWQg
Zm9ybWF0IGNoYXJhY3RlciBcdTIwMUMiICsgZm9ybWF0W2luZGV4XSArICJcdTIwMUQuIFRyZWF0
aW5nIGFzIGEgc3RyaW5nLiIpOworICAgICAgICAgICAgd2FybigidW5zdXBwb3J0ZWQgZm9ybWF0
IGNoYXJhY3RlciBcdTIwMUMiICsgdG9rZW4uc3BlY2lmaWVyICsgIlx1MjAxRC4gVHJlYXRpbmcg
YXMgYSBzdHJpbmcuIik7CiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gdHJlYXQgdGhp
cyBsaWtlIGEgc3RyaW5nLgogICAgICAgICBjYXNlICJzIjoKLSAgICAgICAgICAgIHJlc3VsdCAr
PSBzdWJzdGl0dXRpb25zW3N1YnN0aXR1dGlvbkluZGV4XTsKKyAgICAgICAgICAgIHJlc3VsdCAr
PSBzdWJzdGl0dXRpb25zW3Rva2VuLnN1YnN0aXR1dGlvbkluZGV4XTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgKytzdWJzdGl0dXRpb25JbmRleDsKLSAgICAgICAg
KytpbmRleDsKICAgICB9CiAKLSAgICByZXN1bHQgKz0gZm9ybWF0LnN1YnN0cmluZyhpbmRleCk7
Ci0KICAgICByZXR1cm4gcmVzdWx0OwogfQotLSAKMS41LjUuNDkuZzkxNGE5Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20569</attachid>
            <date>2008-04-15 16:57:59 -0700</date>
            <delta_ts>2008-04-16 12:22:44 -0700</delta_ts>
            <desc>Step 5: Make the formatting functions used for each format specifier configurable</desc>
            <filename>0001--Add-String.format.patch</filename>
            <type>text/plain</type>
            <size>4990</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBjYWNmMTk5ZGI4OWFhMzZiNzQ5N2VhMWFiZmIwYjgzMjQ4YThhZjU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDE1IEFwciAyMDA4IDE1OjMyOjI1IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgQWRk
IFN0cmluZy5mb3JtYXQKCiAgICAgICAgU3RyaW5nLmZvcm1hdCBpcyBhIG1vcmUgZ2VuZXJpYyBm
b3JtIG9mIFN0cmluZy52c3ByaW50ZiB0aGF0IHRha2VzIGEKICAgICAgICBzZXQgb2YgZm9ybWF0
dGVyIGZ1bmN0aW9ucywgb25lIGZvciBlYWNoIHN1cHBvcnRlZCBmb3JtYXQgc3BlY2lmaWVyLgog
ICAgICAgIEVhY2ggZm9ybWF0dGVyIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgcmVsZXZhbnQgdG9r
ZW4gYW5kIHN1YnN0aXR1dGlvbgogICAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyB0aGUgZm9ybWF0
dGVkIHJlc3VsdC4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
ICogcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzOgogICAgICAgIChTdHJpbmcuc3RhbmRhcmRG
b3JtYXR0ZXJzKTogQWRkZWQuCiAgICAgICAgKFN0cmluZy52c3ByaW50Zik6IENoYW5nZWQgdG8g
Y2FsbCB0aHJvdWdoIHRvIFN0cmluZy5mb3JtYXQuCiAgICAgICAgKFN0cmluZy5mb3JtYXQpOiBB
ZGRlZC4gTW9zdCBvZiB0aGUgY29kZSBjYW1lIGZyb20gU3RyaW5nLnZzcHJpbnRmLAogICAgICAg
IGV4Y2VwdCB0aGF0IHdlIHVzZSB0aGUgcGFzc2VkLWluIGZvcm1hdHRlcnMgdG8gZm9ybWF0IHRo
ZQogICAgICAgIHN1YnN0aXR1dGlvbnMgcmF0aGVyIHRoYW4gaGFyZC1jb2RpbmcgaG93IHRvIGhh
bmRsZSBlYWNoIGZvcm1hdAogICAgICAgIHNwZWNpZmllci4KLS0tCiBXZWJDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9p
bnNwZWN0b3IvdXRpbGl0aWVzLmpzIHwgICA0NyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGI5YWJhNTQuLjMwYmUxYWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMDgtMDQtMTUgIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBTdHJpbmcuZm9ybWF0CisKKyAg
ICAgICAgU3RyaW5nLmZvcm1hdCBpcyBhIG1vcmUgZ2VuZXJpYyBmb3JtIG9mIFN0cmluZy52c3By
aW50ZiB0aGF0IHRha2VzIGEKKyAgICAgICAgc2V0IG9mIGZvcm1hdHRlciBmdW5jdGlvbnMsIG9u
ZSBmb3IgZWFjaCBzdXBwb3J0ZWQgZm9ybWF0IHNwZWNpZmllci4KKyAgICAgICAgRWFjaCBmb3Jt
YXR0ZXIgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSByZWxldmFudCB0b2tlbiBhbmQgc3Vic3RpdHV0
aW9uCisgICAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyB0aGUgZm9ybWF0dGVkIHJlc3VsdC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvaW5z
cGVjdG9yL3V0aWxpdGllcy5qczoKKyAgICAgICAgKFN0cmluZy5zdGFuZGFyZEZvcm1hdHRlcnMp
OiBBZGRlZC4KKyAgICAgICAgKFN0cmluZy52c3ByaW50Zik6IENoYW5nZWQgdG8gY2FsbCB0aHJv
dWdoIHRvIFN0cmluZy5mb3JtYXQuCisgICAgICAgIChTdHJpbmcuZm9ybWF0KTogQWRkZWQuIE1v
c3Qgb2YgdGhlIGNvZGUgY2FtZSBmcm9tIFN0cmluZy52c3ByaW50ZiwKKyAgICAgICAgZXhjZXB0
IHRoYXQgd2UgdXNlIHRoZSBwYXNzZWQtaW4gZm9ybWF0dGVycyB0byBmb3JtYXQgdGhlCisgICAg
ICAgIHN1YnN0aXR1dGlvbnMgcmF0aGVyIHRoYW4gaGFyZC1jb2RpbmcgaG93IHRvIGhhbmRsZSBl
YWNoIGZvcm1hdAorICAgICAgICBzcGVjaWZpZXIuCisKKzIwMDgtMDQtMTUgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJlZmFjdG9yIFN0cmluZy52c3ByaW50ZiB0
byBzZXBhcmF0ZSB0b2tlbml6aW5nIGFuZCBzdWJzdGl0dXRpbmcKIAogICAgICAgICBUaGlzIHdp
bGwgZXZlbnR1YWxseSBiZSB1c2VmdWwgZm9yIHRoZSB2YXJpb3VzIGNvbnNvbGUgbWV0aG9kcyB0
aGF0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcyBiL1dl
YkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzCmluZGV4IDliNzA5N2QuLmMyNmFlMDMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzCisrKyBiL1dl
YkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzCkBAIC04MTQsMTQgKzgxNCw0MCBAQCBT
dHJpbmcudG9rZW5pemVGb3JtYXRTdHJpbmcgPSBmdW5jdGlvbihmb3JtYXQpCiAgICAgcmV0dXJu
IHRva2VuczsKIH0KIAorU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9IHsKKyAgICBkOiBmdW5j
dGlvbihzdWJzdGl0dXRpb24pCisgICAgeworICAgICAgICBzdWJzdGl0dXRpb24gPSBwYXJzZUlu
dChzdWJzdGl0dXRpb24pOworICAgICAgICByZXR1cm4gIWlzTmFOKHN1YnN0aXR1dGlvbikgPyBz
dWJzdGl0dXRpb24gOiAwOworICAgIH0sCisKKyAgICBmOiBmdW5jdGlvbihzdWJzdGl0dXRpb24s
IHRva2VuKQorICAgIHsKKyAgICAgICAgc3Vic3RpdHV0aW9uID0gcGFyc2VGbG9hdChzdWJzdGl0
dXRpb24pOworICAgICAgICBpZiAoc3Vic3RpdHV0aW9uICYmIHRva2VuLnByZWNpc2lvbiA+IC0x
KQorICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRvRml4ZWQodG9rZW4u
cHJlY2lzaW9uKTsKKyAgICAgICAgcmV0dXJuICFpc05hTihzdWJzdGl0dXRpb24pID8gc3Vic3Rp
dHV0aW9uIDogKHRva2VuLnByZWNpc2lvbiA+IC0xID8gTnVtYmVyKDApLnRvRml4ZWQodG9rZW4u
cHJlY2lzaW9uKSA6IDApOworICAgIH0sCisKKyAgICBzOiBmdW5jdGlvbihzdWJzdGl0dXRpb24p
CisgICAgeworICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uOworICAgIH0sCit9OworCiBTdHJp
bmcudnNwcmludGYgPSBmdW5jdGlvbihmb3JtYXQsIHN1YnN0aXR1dGlvbnMpCiB7CisgICAgcmV0
dXJuIFN0cmluZy5mb3JtYXQoZm9ybWF0LCBzdWJzdGl0dXRpb25zLCBTdHJpbmcuc3RhbmRhcmRG
b3JtYXR0ZXJzKTsKK30KKworU3RyaW5nLmZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCwgc3Vic3Rp
dHV0aW9ucywgZm9ybWF0dGVycykKK3sKICAgICBpZiAoIWZvcm1hdCB8fCAhc3Vic3RpdHV0aW9u
cyB8fCAhc3Vic3RpdHV0aW9ucy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmb3JtYXQ7CiAKICAg
ICBmdW5jdGlvbiBwcmV0dHlGdW5jdGlvbk5hbWUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICJT
dHJpbmcudnNwcmludGYoXCIiICsgZm9ybWF0ICsgIlwiLCBcIiIgKyBzdWJzdGl0dXRpb25zLmpv
aW4oIlwiLCBcIiIpICsgIlwiKSI7CisgICAgICAgIHJldHVybiAiU3RyaW5nLmZvcm1hdChcIiIg
KyBmb3JtYXQgKyAiXCIsIFwiIiArIHN1YnN0aXR1dGlvbnMuam9pbigiXCIsIFwiIikgKyAiXCIp
IjsKICAgICB9CiAKICAgICBmdW5jdGlvbiB3YXJuKG1zZykKQEAgLTg1OCwyNSArODg0LDE0IEBA
IFN0cmluZy52c3ByaW50ZiA9IGZ1bmN0aW9uKGZvcm1hdCwgc3Vic3RpdHV0aW9ucykKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoICh0b2tlbi5zcGVj
aWZpZXIpIHsKLSAgICAgICAgY2FzZSAiZCI6Ci0gICAgICAgICAgICB2YXIgc3Vic3RpdHV0aW9u
ID0gcGFyc2VJbnQoc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0pOwotICAg
ICAgICAgICAgcmVzdWx0ICs9ICghaXNOYU4oc3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6
IDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgImYiOgotICAgICAgICAgICAg
dmFyIHN1YnN0aXR1dGlvbiA9IHBhcnNlRmxvYXQoc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0
dXRpb25JbmRleF0pOwotICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbiAmJiB0b2tlbi5wcmVj
aXNpb24gPiAtMSkKLSAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24u
dG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pOwotICAgICAgICAgICAgcmVzdWx0ICs9ICghaXNOYU4o
c3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6ICh0b2tlbi5wcmVjaXNpb24gPiAtMSA/IE51
bWJlcigwKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbikgOiAwKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKCEodG9rZW4uc3BlY2lmaWVyIGluIGZv
cm1hdHRlcnMpKSB7CiAgICAgICAgICAgICAvLyBFbmNvdW50ZXJlZCBhbiB1bnN1cHBvcnRlZCBm
b3JtYXQgY2hhcmFjdGVyLCB0cmVhdCBhcyBhIHN0cmluZy4KICAgICAgICAgICAgIHdhcm4oInVu
c3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgXHUyMDFDIiArIHRva2VuLnNwZWNpZmllciArICJc
dTIwMUQuIFRyZWF0aW5nIGFzIGEgc3RyaW5nLiIpOwotICAgICAgICAgICAgLy8gRmFsbCB0aHJv
dWdoIHRvIHRyZWF0IHRoaXMgbGlrZSBhIHN0cmluZy4KLSAgICAgICAgY2FzZSAicyI6CiAgICAg
ICAgICAgICByZXN1bHQgKz0gc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF07
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisK
KyAgICAgICAgcmVzdWx0ICs9IGZvcm1hdHRlcnNbdG9rZW4uc3BlY2lmaWVyXShzdWJzdGl0dXRp
b25zW3Rva2VuLnN1YnN0aXR1dGlvbkluZGV4XSwgdG9rZW4pOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7Ci0tIAoxLjUuNS40OS5nOTE0YTkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20570</attachid>
            <date>2008-04-15 16:58:25 -0700</date>
            <delta_ts>2008-04-16 12:36:22 -0700</delta_ts>
            <desc>Step 6: Make String.format able to produce objects other than strings</desc>
            <filename>0002--Generalize-String.format-some-more.patch</filename>
            <type>text/plain</type>
            <size>4429</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSA2Yjk1MDBhZmE2NzVkOTAwMDQ2YzFjMTM4NzI4YTE0MWU5ZmEyMzVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDE1IEFwciAyMDA4IDE4OjQ3OjQ4IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgR2Vu
ZXJhbGl6ZSBTdHJpbmcuZm9ybWF0IHNvbWUgbW9yZQoKICAgICAgICBTdHJpbmcuZm9ybWF0IG5v
dyB0YWtlcyBhbiBpbml0aWFsIHZhbHVlIGFuZCBhbiBhcHBlbmQgZnVuY3Rpb24gd2hpY2gKICAg
ICAgICBpdCB1c2VzIHRvIGJ1aWxkIHRoZSByZXN1bHQuIEVhY2ggdGltZSBhIHRva2VuIGlzIHBy
b2Nlc3NlZCwKICAgICAgICBhcHBlbmQodmFsdWVTb0ZhciwgbmV3VmFsdWUpIGlzIGNhbGxlZC4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogcGFnZS9pbnNw
ZWN0b3IvdXRpbGl0aWVzLmpzOgogICAgICAgIChTdHJpbmcudnNwcmludGYpOiBQYXNzIHRoZSBl
bXB0eSBzdHJpbmcgZm9yIHRoZSBpbml0aWFsIHZhbHVlLCBhbmQKICAgICAgICBhIGZ1bmN0aW9u
IHRoYXQgY29uY2F0ZW5hdGVzIHR3byBzdHJpbmdzIGFzIHRoZSBhcHBlbmQgZnVuY3Rpb24uCiAg
ICAgICAgKFN0cmluZy5mb3JtYXQpOiBVc2UgaW5pdGlhbFZhbHVlIGFuZCBhcHBlbmQgdG8gYnVp
bGQgdGhlIHJlc3VsdAogICAgICAgIGluc3RlYWQgb2Ygb25seSB3b3JraW5nIHdpdGggc3RyaW5n
cy4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysr
KysrKysrKysrKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMgfCAgIDE0ICsr
KysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDcgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzMGJlMWFjLi4zM2UyY2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDA4LTA0LTE1ICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAgICBHZW5lcmFsaXplIFN0cmluZy5m
b3JtYXQgc29tZSBtb3JlCisKKyAgICAgICAgU3RyaW5nLmZvcm1hdCBub3cgdGFrZXMgYW4gaW5p
dGlhbCB2YWx1ZSBhbmQgYW4gYXBwZW5kIGZ1bmN0aW9uIHdoaWNoCisgICAgICAgIGl0IHVzZXMg
dG8gYnVpbGQgdGhlIHJlc3VsdC4gRWFjaCB0aW1lIGEgdG9rZW4gaXMgcHJvY2Vzc2VkLAorICAg
ICAgICBhcHBlbmQodmFsdWVTb0ZhciwgbmV3VmFsdWUpIGlzIGNhbGxlZC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL3V0
aWxpdGllcy5qczoKKyAgICAgICAgKFN0cmluZy52c3ByaW50Zik6IFBhc3MgdGhlIGVtcHR5IHN0
cmluZyBmb3IgdGhlIGluaXRpYWwgdmFsdWUsIGFuZAorICAgICAgICBhIGZ1bmN0aW9uIHRoYXQg
Y29uY2F0ZW5hdGVzIHR3byBzdHJpbmdzIGFzIHRoZSBhcHBlbmQgZnVuY3Rpb24uCisgICAgICAg
IChTdHJpbmcuZm9ybWF0KTogVXNlIGluaXRpYWxWYWx1ZSBhbmQgYXBwZW5kIHRvIGJ1aWxkIHRo
ZSByZXN1bHQKKyAgICAgICAgaW5zdGVhZCBvZiBvbmx5IHdvcmtpbmcgd2l0aCBzdHJpbmdzLgor
CisyMDA4LTA0LTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwogICAgICAgICBB
ZGQgU3RyaW5nLmZvcm1hdAogCiAgICAgICAgIFN0cmluZy5mb3JtYXQgaXMgYSBtb3JlIGdlbmVy
aWMgZm9ybSBvZiBTdHJpbmcudnNwcmludGYgdGhhdCB0YWtlcyBhCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3Iv
dXRpbGl0aWVzLmpzCmluZGV4IGMyNmFlMDMuLjM0YzNkNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3Iv
dXRpbGl0aWVzLmpzCkBAIC04MzcsMTAgKzgzNywxMCBAQCBTdHJpbmcuc3RhbmRhcmRGb3JtYXR0
ZXJzID0gewogCiBTdHJpbmcudnNwcmludGYgPSBmdW5jdGlvbihmb3JtYXQsIHN1YnN0aXR1dGlv
bnMpCiB7Ci0gICAgcmV0dXJuIFN0cmluZy5mb3JtYXQoZm9ybWF0LCBzdWJzdGl0dXRpb25zLCBT
dHJpbmcuc3RhbmRhcmRGb3JtYXR0ZXJzKTsKKyAgICByZXR1cm4gU3RyaW5nLmZvcm1hdChmb3Jt
YXQsIHN1YnN0aXR1dGlvbnMsIFN0cmluZy5zdGFuZGFyZEZvcm1hdHRlcnMsICIiLCBmdW5jdGlv
bihhLCBiKSB7IHJldHVybiBhICsgYjsgfSk7CiB9CiAKLVN0cmluZy5mb3JtYXQgPSBmdW5jdGlv
bihmb3JtYXQsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMpCitTdHJpbmcuZm9ybWF0ID0gZnVu
Y3Rpb24oZm9ybWF0LCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCBpbml0aWFsVmFsdWUsIGFw
cGVuZCkKIHsKICAgICBpZiAoIWZvcm1hdCB8fCAhc3Vic3RpdHV0aW9ucyB8fCAhc3Vic3RpdHV0
aW9ucy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmb3JtYXQ7CkBAIC04NjAsMTQgKzg2MCwxNCBA
QCBTdHJpbmcuZm9ybWF0ID0gZnVuY3Rpb24oZm9ybWF0LCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0
ZXJzKQogICAgICAgICBjb25zb2xlLmVycm9yKHByZXR0eUZ1bmN0aW9uTmFtZSgpICsgIjogIiAr
IG1zZyk7CiAgICAgfQogCi0gICAgdmFyIHJlc3VsdCA9ICIiOworICAgIHZhciByZXN1bHQgPSBp
bml0aWFsVmFsdWU7CiAgICAgdmFyIHRva2VucyA9IFN0cmluZy50b2tlbml6ZUZvcm1hdFN0cmlu
Zyhmb3JtYXQpOwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyArK2kp
IHsKICAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldOwogCiAgICAgICAgIGlmICh0b2tlbi50
eXBlID09PSAic3RyaW5nIikgewotICAgICAgICAgICAgcmVzdWx0ICs9IHRva2VuLnZhbHVlOwor
ICAgICAgICAgICAgcmVzdWx0ID0gYXBwZW5kKHJlc3VsdCwgdG9rZW4udmFsdWUpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtODgwLDE4ICs4ODAsMTggQEAgU3RyaW5n
LmZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycykKICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHN1YnN0aXR1dGlvbnMgZm9yIHRo
ZSBjdXJyZW50IHN1YnN0aXR1dGlvbkluZGV4CiAgICAgICAgICAgICAvLyBqdXN0IG91dHB1dCB0
aGUgZm9ybWF0IHNwZWNpZmllciBsaXRlcmFsbHkgYW5kIG1vdmUgb24uCiAgICAgICAgICAgICBl
cnJvcigibm90IGVub3VnaCBzdWJzdGl0dXRpb24gYXJndW1lbnRzLiBIYWQgIiArIHN1YnN0aXR1
dGlvbnMubGVuZ3RoICsgIiBidXQgbmVlZGVkICIgKyAodG9rZW4uc3Vic3RpdHV0aW9uSW5kZXgg
KyAxKSArICIsIHNvIHN1YnN0aXR1dGlvbiB3YXMgc2tpcHBlZC4iKTsKLSAgICAgICAgICAgIHJl
c3VsdCArPSAiJSIgKyAodG9rZW4ucHJlY2lzaW9uID4gLTEgPyB0b2tlbi5wcmVjaXNpb24gOiAi
IikgKyB0b2tlbi5zcGVjaWZpZXI7CisgICAgICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0
LCAiJSIgKyAodG9rZW4ucHJlY2lzaW9uID4gLTEgPyB0b2tlbi5wcmVjaXNpb24gOiAiIikgKyB0
b2tlbi5zcGVjaWZpZXIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoISh0b2tlbi5zcGVjaWZpZXIgaW4gZm9ybWF0dGVycykpIHsKICAgICAgICAgICAg
IC8vIEVuY291bnRlcmVkIGFuIHVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIsIHRyZWF0IGFz
IGEgc3RyaW5nLgogICAgICAgICAgICAgd2FybigidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3Rl
ciBcdTIwMUMiICsgdG9rZW4uc3BlY2lmaWVyICsgIlx1MjAxRC4gVHJlYXRpbmcgYXMgYSBzdHJp
bmcuIik7Ci0gICAgICAgICAgICByZXN1bHQgKz0gc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0
dXRpb25JbmRleF07CisgICAgICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBzdWJzdGl0
dXRpb25zW3Rva2VuLnN1YnN0aXR1dGlvbkluZGV4XSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdCArPSBmb3JtYXR0ZXJzW3Rva2VuLnNwZWNpZmll
cl0oc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0sIHRva2VuKTsKKyAgICAg
ICAgcmVzdWx0ID0gYXBwZW5kKHJlc3VsdCwgZm9ybWF0dGVyc1t0b2tlbi5zcGVjaWZpZXJdKHN1
YnN0aXR1dGlvbnNbdG9rZW4uc3Vic3RpdHV0aW9uSW5kZXhdLCB0b2tlbikpOwogICAgIH0KIAog
ICAgIHJldHVybiByZXN1bHQ7Ci0tIAoxLjUuNS40OS5nOTE0YTkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20571</attachid>
            <date>2008-04-15 16:58:47 -0700</date>
            <delta_ts>2008-04-16 12:36:45 -0700</delta_ts>
            <desc>Step 7: Return the unused substitutions from String.format</desc>
            <filename>0003--Make-String.format-return-an-array-of-unused.patch</filename>
            <type>text/plain</type>
            <size>4070</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBhMGJiNDQyZTZkNTFlMmU0YThmZmI2MGExMmEyNDc1OGFiZjE2MTEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBU
dWUsIDE1IEFwciAyMDA4IDE5OjI2OjM5IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgTWFr
ZSBTdHJpbmcuZm9ybWF0IHJldHVybiBhbiBhcnJheSBvZiB1bnVzZWQgc3Vic3RpdHV0aW9ucwoK
ICAgICAgICBTdHJpbmcuZm9ybWF0IG5vdyByZXR1cm5zIGEgMi1lbGVtZW50IGFycmF5LiBUaGUg
Zmlyc3QgaW5kZXggY29udGFpbnMKICAgICAgICB0aGUgZm9ybWF0dGVkIHJlc3VsdC4gVGhlIHNl
Y29uZCBpbmRleCBjb250YWlucyBhbiBhcnJheSBvZiB1bnVzZWQKICAgICAgICBzdWJzdGl0dXRp
b25zLgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBwYWdl
L2luc3BlY3Rvci91dGlsaXRpZXMuanM6CiAgICAgICAgKFN0cmluZy52c3ByaW50Zik6IFVwZGF0
ZWQgZm9yIGNoYW5nZXMgdG8gU3RyaW5nLmZvcm1hdC4gV2UgdGhyb3cgYXdheQogICAgICAgIHRo
ZSBhcnJheSBvZiB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KICAgICAgICAoU3RyaW5nLmZvcm1hdCk6
IENoYW5nZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBzdWJzdGl0dXRpb25zIGFyZSB1c2VkCiAg
ICAgICAgd2hlbiBmb3JtYXR0aW5nLiBXZSB0aGVuIHJldHVybiBib3RoIHRoZSBmb3JtYXR0ZWQg
cmVzdWx0IGFuZCB0aGUKICAgICAgICBhcnJheSBvZiB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrKysr
KysrKysKIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzIHwgICAxNiArKysrKysr
KysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzM2UyY2VjLi5hMjY5M2NhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDA4LTA0LTE1ICBBZGFtIFJv
YmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIFN0cmluZy5mb3JtYXQgcmV0
dXJuIGFuIGFycmF5IG9mIHVudXNlZCBzdWJzdGl0dXRpb25zCisKKyAgICAgICAgU3RyaW5nLmZv
cm1hdCBub3cgcmV0dXJucyBhIDItZWxlbWVudCBhcnJheS4gVGhlIGZpcnN0IGluZGV4IGNvbnRh
aW5zCisgICAgICAgIHRoZSBmb3JtYXR0ZWQgcmVzdWx0LiBUaGUgc2Vjb25kIGluZGV4IGNvbnRh
aW5zIGFuIGFycmF5IG9mIHVudXNlZAorICAgICAgICBzdWJzdGl0dXRpb25zLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9pbnNwZWN0b3Iv
dXRpbGl0aWVzLmpzOgorICAgICAgICAoU3RyaW5nLnZzcHJpbnRmKTogVXBkYXRlZCBmb3IgY2hh
bmdlcyB0byBTdHJpbmcuZm9ybWF0LiBXZSB0aHJvdyBhd2F5CisgICAgICAgIHRoZSBhcnJheSBv
ZiB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KKyAgICAgICAgKFN0cmluZy5mb3JtYXQpOiBDaGFuZ2Vk
IHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggc3Vic3RpdHV0aW9ucyBhcmUgdXNlZAorICAgICAgICB3
aGVuIGZvcm1hdHRpbmcuIFdlIHRoZW4gcmV0dXJuIGJvdGggdGhlIGZvcm1hdHRlZCByZXN1bHQg
YW5kIHRoZQorICAgICAgICBhcnJheSBvZiB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KKworMjAwOC0w
NC0xNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAgR2VuZXJhbGl6
ZSBTdHJpbmcuZm9ybWF0IHNvbWUgbW9yZQogCiAgICAgICAgIFN0cmluZy5mb3JtYXQgbm93IHRh
a2VzIGFuIGluaXRpYWwgdmFsdWUgYW5kIGFuIGFwcGVuZCBmdW5jdGlvbiB3aGljaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMgYi9XZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL3V0aWxpdGllcy5qcwppbmRleCAzNGMzZDQwLi5hNmRlY2RmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL3V0aWxpdGllcy5qcwpAQCAtODM3LDEzICs4MzcsMTMgQEAgU3RyaW5nLnN0YW5k
YXJkRm9ybWF0dGVycyA9IHsKIAogU3RyaW5nLnZzcHJpbnRmID0gZnVuY3Rpb24oZm9ybWF0LCBz
dWJzdGl0dXRpb25zKQogewotICAgIHJldHVybiBTdHJpbmcuZm9ybWF0KGZvcm1hdCwgc3Vic3Rp
dHV0aW9ucywgU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycywgIiIsIGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEgKyBiOyB9KTsKKyAgICByZXR1cm4gU3RyaW5nLmZvcm1hdChmb3JtYXQsIHN1YnN0
aXR1dGlvbnMsIFN0cmluZy5zdGFuZGFyZEZvcm1hdHRlcnMsICIiLCBmdW5jdGlvbihhLCBiKSB7
IHJldHVybiBhICsgYjsgfSlbMF07CiB9CiAKIFN0cmluZy5mb3JtYXQgPSBmdW5jdGlvbihmb3Jt
YXQsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsIGluaXRpYWxWYWx1ZSwgYXBwZW5kKQogewog
ICAgIGlmICghZm9ybWF0IHx8ICFzdWJzdGl0dXRpb25zIHx8ICFzdWJzdGl0dXRpb25zLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgcmV0dXJuIFtmb3JtYXQsIHN1YnN0
aXR1dGlvbnNdOwogCiAgICAgZnVuY3Rpb24gcHJldHR5RnVuY3Rpb25OYW1lKCkKICAgICB7CkBA
IC04NjIsNiArODYyLDcgQEAgU3RyaW5nLmZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCwgc3Vic3Rp
dHV0aW9ucywgZm9ybWF0dGVycywgaW5pdGlhbFZhbHVlLCBhcHBlbmQKIAogICAgIHZhciByZXN1
bHQgPSBpbml0aWFsVmFsdWU7CiAgICAgdmFyIHRva2VucyA9IFN0cmluZy50b2tlbml6ZUZvcm1h
dFN0cmluZyhmb3JtYXQpOworICAgIHZhciB1c2VkU3Vic3RpdHV0aW9uSW5kZXhlcyA9IHt9Owog
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
dmFyIHRva2VuID0gdG9rZW5zW2ldOwpAQCAtODg0LDYgKzg4NSw4IEBAIFN0cmluZy5mb3JtYXQg
PSBmdW5jdGlvbihmb3JtYXQsIHN1YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsIGluaXRpYWxWYWx1
ZSwgYXBwZW5kCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCisgICAgICAgIHVz
ZWRTdWJzdGl0dXRpb25JbmRleGVzW3Rva2VuLnN1YnN0aXR1dGlvbkluZGV4XSA9IHRydWU7CisK
ICAgICAgICAgaWYgKCEodG9rZW4uc3BlY2lmaWVyIGluIGZvcm1hdHRlcnMpKSB7CiAgICAgICAg
ICAgICAvLyBFbmNvdW50ZXJlZCBhbiB1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyLCB0cmVh
dCBhcyBhIHN0cmluZy4KICAgICAgICAgICAgIHdhcm4oInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFy
YWN0ZXIgXHUyMDFDIiArIHRva2VuLnNwZWNpZmllciArICJcdTIwMUQuIFRyZWF0aW5nIGFzIGEg
c3RyaW5nLiIpOwpAQCAtODk0LDUgKzg5NywxMiBAQCBTdHJpbmcuZm9ybWF0ID0gZnVuY3Rpb24o
Zm9ybWF0LCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCBpbml0aWFsVmFsdWUsIGFwcGVuZAog
ICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBmb3JtYXR0ZXJzW3Rva2VuLnNwZWNpZmll
cl0oc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0sIHRva2VuKSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICB2YXIgdW51c2VkU3Vic3RpdHV0aW9ucyA9IFtd
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic3RpdHV0aW9ucy5sZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAoaSBpbiB1c2VkU3Vic3RpdHV0aW9uSW5kZXhlcykKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB1bnVzZWRTdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uc1tp
XSk7CisgICAgfQorCisgICAgcmV0dXJuIFtyZXN1bHQsIHVudXNlZFN1YnN0aXR1dGlvbnNdOwog
fQotLSAKMS41LjUuNDkuZzkxNGE5Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20573</attachid>
            <date>2008-04-15 18:21:33 -0700</date>
            <delta_ts>2008-04-15 18:21:33 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>console-log-formatting.html</filename>
            <type>text/html</type>
            <size>2135</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KICAgIHZhciBzID0gInRoaXMgaXMgYSBzdHJpbmciOwogICAgdmFyIGkgPSA1Owog
ICAgdmFyIG5pID0gLTU7CiAgICB2YXIgZiA9IDMuMTQxNTk7CiAgICB2YXIgbyA9IHsgcHJvcDE6
IDEsIHByb3AyOiAyIH07CgogICAgZnVuY3Rpb24gdGVzdChjb21tYW5kKSB7CiAgICAgICAgY29u
c29sZS5pbmZvKCJUZXN0aW5nICIgKyBjb21tYW5kKTsKICAgICAgICBldmFsKGNvbW1hbmQpOwog
ICAgfQoKICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgICAgIHZhciB0ZXN0cyA9IFsKICAg
ICAgICAgICAgImNvbnNvbGUubG9nKCdzaW1wbGUgdGVzdCcpIiwKICAgICAgICAgICAgImNvbnNv
bGUubG9nKCdtdWx0aXBsZScsICdwYXJhbWV0ZXJzJywgJ3Nob3VsZCcsICdiZScsICdjb25jYXRl
bmF0ZWQnKSIsCiAgICAgICAgICAgICJjb25zb2xlLmxvZyhkb2N1bWVudCkiLAogICAgICAgICAg
ICAiY29uc29sZS5sb2coJ0luc2VydCBhIHN0cmluZyB3aXRoICUlczogJXMnLCBzKSIsCiAgICAg
ICAgICAgICJjb25zb2xlLmxvZygnSW5zZXJ0IHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbnRlZ2Vy
cyB3aXRoICUlZDogJWQsICVkJywgaSwgbmkpIiwKICAgICAgICAgICAgImNvbnNvbGUubG9nKCdJ
bnNlcnQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGludGVnZXJzIHdpdGggJSVpOiAlaSwgJWknLCBp
LCBuaSkiLAogICAgICAgICAgICAiY29uc29sZS5sb2coJ0luc2VydCBhIGZsb2F0IHdpdGggJSVm
OiAlZicsIGYpIiwKICAgICAgICAgICAgImNvbnNvbGUubG9nKCdJbnNlcnQgYSBmbG9hdCB3aXRo
ICUlMC4zZjogJTAuM2YnLCBmKSIsCiAgICAgICAgICAgICJjb25zb2xlLmxvZygnSW5zZXJ0IGFu
IG9iamVjdCB3aXRoICUlbzogJW8nLCBvKSIsCiAgICAgICAgICAgICJjb25zb2xlLmxvZygnSW5z
ZXJ0IGEgUmVnRXhwIHdpdGggJSVvOiAlbycsIC90ZXN0LykiLAogICAgICAgICAgICAiY29uc29s
ZS5sb2coJ0luc2VydCBhIG5vZGUgd2l0aCAlJW86ICVvJywgZG9jdW1lbnQuYm9keSkiLAogICAg
ICAgICAgICAiY29uc29sZS5sb2coJ0Zvcm1hdCBzdHJpbmcgd2l0aCBmZXdlciBzcGVjaWZpZXJz
IHRoYW4gcGFyYW1ldGVyczogJWkgJWkgJWYnLCBpLCBpLCBmLCBuaSwgbykiLAogICAgICAgICAg
ICAiY29uc29sZS5sb2coJ0Zvcm1hdCBzdHJpbmcgd2l0aCBtb3JlIHNwZWNpZmllcnMgdGhhbiBw
YXJhbWV0ZXJzOiAlaSAlaSAlZiAlaSAlbycsIGksIGksIGYpIiwKICAgICAgICAgICAgImNvbnNv
bGUubG9nKCdGb3JtYXQgc3RyaW5nIHdpdGggdW5zdXBwb3J0ZWQgc3BlY2lmaWVyczogJXogJXgg
JXknLCBpLCBpLCBmKSIsCiAgICAgICAgICAgICJjb25zb2xlLmxvZygnT2JqZWN0IGZvcm1hdHRl
ZCBhcyBzdHJpbmc6ICVzJywgbykiLAogICAgICAgICAgICAiY29uc29sZS5sb2coJ09iamVjdCBm
b3JtYXR0ZWQgYXMgaW50ZWdlcjogJWQnLCBvKSIsCiAgICAgICAgICAgICJjb25zb2xlLmxvZygn
T2JqZWN0IGZvcm1hdHRlZCBhcyBmbG9hdDogJWYnLCBvKSIsCiAgICAgICAgICAgICJjb25zb2xl
LmxvZygnU3RyaW5nIGZvcm1hdHRlZCBhcyBvYmplY3Q6ICVvJywgcykiLAogICAgICAgICAgICAi
Y29uc29sZS5sb2coJ0ludGVnZXIgZm9ybWF0dGVkIGFzIG9iamVjdDogJW8nLCBpKSIsCiAgICAg
ICAgICAgICJjb25zb2xlLmxvZygnRmxvYXQgZm9ybWF0dGVkIGFzIG9iamVjdDogJW8nLCBmKSIs
CiAgICAgICAgXTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgdGVzdCh0ZXN0c1tpXSk7CiAgICB9Cjwvc2NyaXB0Pgo8cD5UZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMjgi
PkJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQg
Zm9ybWF0IHN0cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50czwvYT4uPC9wPgo8cD5PcGVuIHRoZSBJ
bnNwZWN0b3IgKHJpZ2h0LWNsaWNrIGFuZCBjaG9vc2UgIkluc3BlY3QgRWxlbWVudCIpLCB0aGVu
IGNsaWNrIHRoZSAiUnVuIFRlc3RzIiBidXR0b24uPC9wPgo8YnV0dG9uIG9uY2xpY2s9InJ1blRl
c3RzKCkiPlJ1biBUZXN0czwvYnV0dG9uPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20592</attachid>
            <date>2008-04-16 11:17:20 -0700</date>
            <delta_ts>2008-04-16 12:37:07 -0700</delta_ts>
            <desc>Final step: Treat the first argument as a format string, concatenate additional arguments</desc>
            <filename>0001--Fix-Bug-17228-console.-log-warn-info-error.patch</filename>
            <type>text/plain</type>
            <size>8298</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAwZTFjZjU0ZDgwZjY3OTUwNjc5ZTBhNWExNTcxMjc5NzlkOTBmOGVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBX
ZWQsIDE2IEFwciAyMDA4IDE0OjE1OjI3IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgRml4
IEJ1ZyAxNzIyODogY29uc29sZS57bG9nLHdhcm4saW5mbyxlcnJvcn0gc2hvdWxkIHN1cHBvcnQg
Zm9ybWF0IHN0cmluZ3MsIHZhcmlhYmxlIGFyZ3VtZW50cwoKICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjI4PgogICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzMyODI4PgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAg
VGVzdDogbWFudWFsLXRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWxvZy1mb3JtYXR0aW5nLmh0bWwK
CiAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzOgogICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UpOiBQYXNzIGFueSBleHRyYSBhcmd1bWVudHMgZG93biB0bwogICAg
ICAgIF9mb3JtYXQuCiAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5fZm9ybWF0
KTogVGhpcyBtZXRob2QgY29uc3RydWN0cwogICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZS4g
V2UgdHJlYXQgdGhlIGZpcnN0IHBhcmFtZXRlciBhcyBhIGZvcm1hdAogICAgICAgIHN0cmluZy4g
QW55IHBhcmFtZXRlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHVzZWQgYWZ0ZXIgc3Vic3RpdHV0aW5n
IGludG8KICAgICAgICB0aGUgZm9ybWF0IHN0cmluZyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVy
LCBzZXBhcmF0ZWQgYnkgc3BhY2VzLgogICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UudG9NZXNzYWdlRWxlbWVudCk6IFVwZGF0ZWQgdG8gdXNlCiAgICAgICAgdGhpcy5mb3JtYXR0
ZWRNZXNzYWdlLgogICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UudG9TdHJpbmcp
OiBEaXR0by4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjMgKysrKysrKwogLi4uL2luc3BlY3Rvci9jb25zb2xlLWxvZy1mb3JtYXR0
aW5nLmh0bWwgICAgICAgICAgfCAgIDY1ICsrKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3Bh
Z2UvaW5zcGVjdG9yL0NvbnNvbGUuanMgICAgICAgICAgICAgICAgICB8ICAgNDggKysrKysrKysr
KysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvbWFudWFsLXRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLWxvZy1mb3JtYXR0aW5nLmh0bWwKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVhOTFkMzUuLmVjMjA2MDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMDgtMDQtMTYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZp
eCBCdWcgMTcyMjg6IGNvbnNvbGUue2xvZyx3YXJuLGluZm8sZXJyb3J9IHNob3VsZCBzdXBwb3J0
IGZvcm1hdAorICAgICAgICBzdHJpbmdzLCB2YXJpYWJsZSBhcmd1bWVudHMKKworICAgICAgICA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjI4PgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTczMjgyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBtYW51YWwtdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtbG9n
LWZvcm1hdHRpbmcuaHRtbAorCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSk6IFBhc3MgYW55IGV4dHJhIGFy
Z3VtZW50cyBkb3duIHRvCisgICAgICAgIF9mb3JtYXQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuX2Zvcm1hdCk6IFRoaXMgbWV0aG9kIGNvbnN0cnVjdHMKKyAgICAgICAg
dGhpcy5mb3JtYXR0ZWRNZXNzYWdlLiBXZSB0cmVhdCB0aGUgZmlyc3QgcGFyYW1ldGVyIGFzIGEg
Zm9ybWF0CisgICAgICAgIHN0cmluZy4gQW55IHBhcmFtZXRlcnMgdGhhdCBoYXZlIG5vdCBiZWVu
IHVzZWQgYWZ0ZXIgc3Vic3RpdHV0aW5nIGludG8KKyAgICAgICAgdGhlIGZvcm1hdCBzdHJpbmcg
YXJlIGNvbmNhdGVuYXRlZCB0b2dldGhlciwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS50b01lc3NhZ2VFbGVtZW50KTogVXBkYXRlZCB0
byB1c2UKKyAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnRvU3RyaW5nKTogRGl0dG8uCisKIDIwMDgtMDQtMTUgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgU3RyaW5nLmZvcm1hdCBy
ZXR1cm4gYW4gYXJyYXkgb2YgdW51c2VkIHN1YnN0aXR1dGlvbnMKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbWFudWFsLXRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWxvZy1mb3JtYXR0aW5nLmh0bWwgYi9X
ZWJDb3JlL21hbnVhbC10ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1sb2ctZm9ybWF0dGluZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NWJlYzIKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1sb2ctZm9ybWF0
dGluZy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxzY3JpcHQ+CisgICAgdmFyIHMgPSAidGhpcyBp
cyBhIHN0cmluZyI7CisgICAgdmFyIGkgPSA1OworICAgIHZhciBuaSA9IC01OworICAgIHZhciBm
ID0gMy4xNDE1OTsKKyAgICB2YXIgbyA9IHsgcHJvcDE6IDEsIHByb3AyOiAyIH07CisgICAgdmFy
IHNwZWNpZmllcnMgPSB7CisgICAgICAgIHM6ICJzdHJpbmciLAorICAgICAgICBpOiAiaW50ZWdl
ciIsCisgICAgICAgIGQ6ICJpbnRlZ2VyIiwKKyAgICAgICAgZjogImZsb2F0IiwKKyAgICAgICAg
IjAuM2YiOiAiZmxvYXQgd2l0aCBwcmVjaXNpb24iLAorICAgICAgICBvOiAib2JqZWN0IiwKKyAg
ICAgICAgejogInVuc3VwcG9ydGVkIiwKKyAgICB9OworCisgICAgZnVuY3Rpb24gdGVzdChhcmdz
KSB7CisgICAgICAgIGNvbnNvbGUuaW5mbygiY29uc29sZS5sb2coJXMpIiwgYXJncyk7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBldmFsKCJjb25zb2xlLmxvZygiICsgYXJncyArICIpIik7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCIlbyIsIGUp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEFsbFNwZWNpZmllcnModmFs
dWUsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIGZvciAodmFyIHNwZWNpZmllciBpbiBzcGVjaWZp
ZXJzKQorICAgICAgICAgICAgdGVzdCgiJ0Zvcm1hdCAiICsgZGVzY3JpcHRpb24gKyAiIGFzICIg
KyBzcGVjaWZpZXJzW3NwZWNpZmllcl0gKyAiOiAlIiArIHNwZWNpZmllciArICInLCAiICsgdmFs
dWUgKyAiIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgICAgIHZh
ciB2YWx1ZXMgPSBbCisgICAgICAgICAgICB7IHZhbHVlOiAibm9TdWNoVmFyaWFibGUiLCBkZXNj
cmlwdGlvbjogInVuZGVmaW5lZCIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJzIiwgZGVzY3Jp
cHRpb246ICJzdHJpbmciIH0sCisgICAgICAgICAgICB7IHZhbHVlOiAiaSIsIGRlc2NyaXB0aW9u
OiAicG9zaXRpdmUgaW50ZWdlciIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJuaSIsIGRlc2Ny
aXB0aW9uOiAibmVnYXRpdmUgaW50ZWdlciIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJmIiwg
ZGVzY3JpcHRpb246ICJmbG9hdCIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJvIiwgZGVzY3Jp
cHRpb246ICJvYmplY3QiIH0sCisgICAgICAgICAgICB7IHZhbHVlOiAiZG9jdW1lbnQuYm9keSIs
IGRlc2NyaXB0aW9uOiAiYm9keSIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICIvdGVzdC8iLCBk
ZXNjcmlwdGlvbjogIlJlZ0V4cCIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJ0cnVlIiwgZGVz
Y3JpcHRpb246ICJib29sZWFuIiB9LAorICAgICAgICAgICAgeyB2YWx1ZTogIm51bGwiLCBkZXNj
cmlwdGlvbjogIm51bGwiIH0sCisgICAgICAgIF07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2YWx1ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0ZXN0QWxsU3BlY2lmaWVycyh2
YWx1ZXNbaV0udmFsdWUsIHZhbHVlc1tpXS5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgdmFyIHRl
c3RzID0gWworICAgICAgICAgICAgIidzaW1wbGUgdGVzdCciLAorICAgICAgICAgICAgIidtdWx0
aXBsZScsICdwYXJhbWV0ZXJzJywgJ3Nob3VsZCcsICdiZScsICdjb25jYXRlbmF0ZWQnIiwKKyAg
ICAgICAgICAgICJkb2N1bWVudCIsCisgICAgICAgICAgICAiZG9jdW1lbnQsIGRvY3VtZW50LmJv
ZHksIHdpbmRvdywgd2luZG93LmxvY2F0aW9uIiwKKyAgICAgICAgICAgICJkb2N1bWVudCwgZG9j
dW1lbnQuYm9keSwgJ2hlbGxvJywgJ2dvb2RieWUnLCB3aW5kb3cubG9jYXRpb24iLAorICAgICAg
ICAgICAgIidGb3JtYXQgc3RyaW5nIHdpdGggZmV3ZXIgc3BlY2lmaWVycyB0aGFuIHBhcmFtZXRl
cnM6ICVvICVpICVmJywgZG9jdW1lbnQuYm9keSwgaSwgZiwgbmksIG8iLAorICAgICAgICAgICAg
IidGb3JtYXQgc3RyaW5nIHdpdGggbW9yZSBzcGVjaWZpZXJzIHRoYW4gcGFyYW1ldGVyczogJW8g
JWkgJWYgJWkgJW8nLCBkb2N1bWVudC5ib2R5LCBpLCBmIiwKKyAgICAgICAgXTsKKworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGVz
dCh0ZXN0c1tpXSk7CisKKyAgICB9Cis8L3NjcmlwdD4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIyOCI+QnVnIDE3MjI4OiBj
b25zb2xlLntsb2csd2FybixpbmZvLGVycm9yfSBzaG91bGQgc3VwcG9ydCBmb3JtYXQgc3RyaW5n
cywgdmFyaWFibGUgYXJndW1lbnRzPC9hPi48L3A+Cis8cD5PcGVuIHRoZSBJbnNwZWN0b3IgKHJp
Z2h0LWNsaWNrIGFuZCBjaG9vc2UgIkluc3BlY3QgRWxlbWVudCIpLCB0aGVuIGNsaWNrIHRoZSAi
UnVuIFRlc3RzIiBidXR0b24uPC9wPgorPGJ1dHRvbiBvbmNsaWNrPSJydW5UZXN0cygpIj5SdW4g
VGVzdHM8L2J1dHRvbj4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29s
ZS5qcyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcwppbmRleCA4MjE2MjMxLi4z
OWNkMmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMKKysr
IGIvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCkBAIC00MjEsMTAgKzQyMSw1MiBA
QCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBs
aW5lLCB1cmwpCiAgICAgdGhpcy5saW5lID0gbGluZTsKICAgICB0aGlzLnVybCA9IHVybDsKIAot
ICAgIHRoaXMubWVzc2FnZSA9IGFyZ3VtZW50c1s0XTsKKyAgICB0aGlzLl9mb3JtYXQoQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCA0KSk7CiB9CiAKIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CisgICAgX2Zvcm1hdDogZnVuY3Rpb24ocGFyYW1l
dGVycykKKyAgICB7CisgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKworICAgICAgICBpZiAoIXBhcmFtZXRlcnMubGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmb3JtYXRGb3JDb25zb2xlID0gV2Vi
SW5zcGVjdG9yLmNvbnNvbGUuX2Zvcm1hdC5iaW5kKFdlYkluc3BlY3Rvci5jb25zb2xlKTsKKwor
ICAgICAgICBpZiAoT2JqZWN0LnR5cGUocGFyYW1ldGVyc1swXSwgSW5zcGVjdG9yQ29udHJvbGxl
ci5pbnNwZWN0ZWRXaW5kb3coKSkgPT09ICJzdHJpbmciKSB7CisgICAgICAgICAgICB2YXIgZm9y
bWF0dGVycyA9IHt9CisgICAgICAgICAgICBmb3IgKHZhciBpIGluIFN0cmluZy5zdGFuZGFyZEZv
cm1hdHRlcnMpCisgICAgICAgICAgICAgICAgZm9ybWF0dGVyc1tpXSA9IFN0cmluZy5zdGFuZGFy
ZEZvcm1hdHRlcnNbaV07CisKKyAgICAgICAgICAgIC8vIEZpcmVidWcgdXNlcyAlbyBmb3IgZm9y
bWF0dGluZyBvYmplY3RzLgorICAgICAgICAgICAgZm9ybWF0dGVycy5vID0gZm9ybWF0Rm9yQ29u
c29sZTsKKyAgICAgICAgICAgIC8vIEZpcmVidWcgYWxsb3dzIGJvdGggJWkgYW5kICVkIGZvciBm
b3JtYXR0aW5nIGludGVnZXJzLgorICAgICAgICAgICAgZm9ybWF0dGVycy5pID0gZm9ybWF0dGVy
cy5kOworCisgICAgICAgICAgICBmdW5jdGlvbiBhcHBlbmQoYSwgYikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgTm9kZSkpCisgICAgICAgICAgICAg
ICAgICAgIGIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKTsKKworICAgICAgICAgICAgICAg
IGEuYXBwZW5kQ2hpbGQoYik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBTdHJpbmcuZm9ybWF0KHBhcmFtZXRlcnNb
MF0sIHBhcmFtZXRlcnMuc2xpY2UoMSksIGZvcm1hdHRlcnMsIHRoaXMuZm9ybWF0dGVkTWVzc2Fn
ZSwgYXBwZW5kKTsKKyAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHJlc3VsdC5m
b3JtYXR0ZWRSZXN1bHQ7CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcmVzdWx0LnVudXNlZFN1
YnN0aXR1dGlvbnM7CisgICAgICAgICAgICBpZiAocGFyYW1ldGVycy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCIgIikpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1l
c3NhZ2UuYXBwZW5kQ2hpbGQoZm9ybWF0Rm9yQ29uc29sZShwYXJhbWV0ZXJzW2ldKSk7CisgICAg
ICAgICAgICBpZiAoaSA8IHBhcmFtZXRlcnMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICB0
aGlzLmZvcm1hdHRlZE1lc3NhZ2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
IiAiKSk7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgZ2V0IHNob3J0VVJMKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLnJlc291cmNlKQpAQCAtNDcyLDcgKzUxNCw3IEBAIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIG1lc3NhZ2VUZXh0
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgbWVzc2Fn
ZVRleHRFbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCI7Ci0gICAgICAg
IG1lc3NhZ2VUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMubWVzc2FnZTsKKyAgICAgICAg
bWVzc2FnZVRleHRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CiAg
ICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHRFbGVtZW50KTsKIAogICAgICAg
ICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikpOwpAQCAt
NTMxLDcgKzU3Myw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gc291
cmNlU3RyaW5nICsgIiAiICsgbGV2ZWxTdHJpbmcgKyAiOiAiICsgdGhpcy5tZXNzYWdlICsgIlxu
IiArIHRoaXMudXJsICsgIiBsaW5lICIgKyB0aGlzLmxpbmU7CisgICAgICAgIHJldHVybiBzb3Vy
Y2VTdHJpbmcgKyAiICIgKyBsZXZlbFN0cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1lc3Nh
Z2UudGV4dENvbnRlbnQgKyAiXG4iICsgdGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGluZTsK
ICAgICB9CiB9CiAKLS0gCjEuNS41LjQ5Lmc5MTRhOQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20600</attachid>
            <date>2008-04-16 12:45:19 -0700</date>
            <delta_ts>2008-04-16 13:25:09 -0700</delta_ts>
            <desc>Fix a bug in the testcase</desc>
            <filename>0001--Fix-console-log-formatting-to-truly-test-for.patch</filename>
            <type>text/plain</type>
            <size>2445</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAzZGYwMjU4NmUyNjE5NWZiM2ViZTcwMzA3ZjYxN2U1YjM0ZDgyZDg5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBX
ZWQsIDE2IEFwciAyMDA4IDE1OjQ1OjA3IC0wNDAwClN1YmplY3Q6IFtQRlJdICAgICAgICAgRml4
IGNvbnNvbGUtbG9nLWZvcm1hdHRpbmcgdG8gdHJ1bHkgdGVzdCBmb3JtYXR0aW5nIGFuIHVuZGVm
aW5lZCB2YWx1ZQoKICAgICAgICBFeGNlcHRpb25zIHRocm93biBieSB0aGUgdGVzdCB3aWxsIGFs
c28gbm93IGJlIHNob3duIGFzIGVycm9ycy4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgogICAgICAgICogbWFudWFsLXRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWxvZy1mb3Jt
YXR0aW5nLmh0bWw6CiAgICAgICAgKHRlc3QpOiBVc2UgY29uc29sZS5lcnJvciB0byByZXBvcnQg
ZXhjZXB0aW9ucy4KICAgICAgICAocnVuVGVzdHMpOiBVc2Ugd2luZG93Lm5vU3VjaFZhcmlhYmxl
IGluc3RlYWQgb2YganVzdCBub1N1Y2hWYXJpYWJsZQogICAgICAgIHRvIGF2b2lkIGFuIGV4Y2Vw
dGlvbi4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTMgKysrKysrKysrKysrKwogLi4uL2luc3BlY3Rvci9jb25zb2xlLWxvZy1mb3Jt
YXR0aW5nLmh0bWwgICAgICAgICAgfCAgICA0ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5z
ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM1NDhiOTYuLjJhNDU3MDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTgg
QEAKIDIwMDgtMDQtMTYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAg
IEZpeCBjb25zb2xlLWxvZy1mb3JtYXR0aW5nIHRvIHRydWx5IHRlc3QgZm9ybWF0dGluZyBhbiB1
bmRlZmluZWQgdmFsdWUKKworICAgICAgICBFeGNlcHRpb25zIHRocm93biBieSB0aGUgdGVzdCB3
aWxsIGFsc28gbm93IGJlIHNob3duIGFzIGVycm9ycy4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnVhbC10ZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS1sb2ctZm9ybWF0dGluZy5odG1sOgorICAgICAgICAodGVzdCk6IFVzZSBjb25zb2xlLmVycm9y
IHRvIHJlcG9ydCBleGNlcHRpb25zLgorICAgICAgICAocnVuVGVzdHMpOiBVc2Ugd2luZG93Lm5v
U3VjaFZhcmlhYmxlIGluc3RlYWQgb2YganVzdCBub1N1Y2hWYXJpYWJsZQorICAgICAgICB0byBh
dm9pZCBhbiBleGNlcHRpb24uCisKKzIwMDgtMDQtMTYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgorCiAgICAgICAgIEZpeCBCdWcgMTcyMjg6IGNvbnNvbGUue2xvZyx3YXJuLGluZm8s
ZXJyb3J9IHNob3VsZCBzdXBwb3J0IGZvcm1hdAogICAgICAgICBzdHJpbmdzLCB2YXJpYWJsZSBh
cmd1bWVudHMKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtbG9nLWZvcm1hdHRpbmcuaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWxvZy1mb3JtYXR0aW5nLmh0bWwKaW5kZXggZDc1YmVjMi4uNGQ0YmQ5OCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtbG9nLWZvcm1h
dHRpbmcuaHRtbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1s
b2ctZm9ybWF0dGluZy5odG1sCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICBldmFsKCJjb25zb2xlLmxvZygiICsgYXJncyArICIpIik7CiAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCIlbyIsIGUpOworICAgICAgICAgICAg
Y29uc29sZS5lcnJvcihlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzAsNyArMzAsNyBAQAog
CiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgICAgIHZhciB2YWx1ZXMgPSBbCi0gICAg
ICAgICAgICB7IHZhbHVlOiAibm9TdWNoVmFyaWFibGUiLCBkZXNjcmlwdGlvbjogInVuZGVmaW5l
ZCIgfSwKKyAgICAgICAgICAgIHsgdmFsdWU6ICJ3aW5kb3cubm9TdWNoVmFyaWFibGUiLCBkZXNj
cmlwdGlvbjogInVuZGVmaW5lZCIgfSwKICAgICAgICAgICAgIHsgdmFsdWU6ICJzIiwgZGVzY3Jp
cHRpb246ICJzdHJpbmciIH0sCiAgICAgICAgICAgICB7IHZhbHVlOiAiaSIsIGRlc2NyaXB0aW9u
OiAicG9zaXRpdmUgaW50ZWdlciIgfSwKICAgICAgICAgICAgIHsgdmFsdWU6ICJuaSIsIGRlc2Ny
aXB0aW9uOiAibmVnYXRpdmUgaW50ZWdlciIgfSwKLS0gCjEuNS41LjQ5Lmc5MTRhOQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>