<?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>80200</bug_id>
          
          <creation_ts>2012-03-02 15:51:21 -0800</creation_ts>
          <short_desc>Add transfer map argument to Intent constructor</short_desc>
          <delta_ts>2012-04-10 18:16:17 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81127</dependson>
    
    <dependson>83542</dependson>
          <blocked>75123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Greg Billock">gbillock</reporter>
          <assigned_to name="Greg Billock">gbillock</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>simonjam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wonsuk11.lee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>570008</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-02 15:51:21 -0800</bug_when>
    <thetext>Add transfer map argument to Intent constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570011</commentid>
    <comment_count>1</comment_count>
      <attachid>129973</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-02 15:53:23 -0800</bug_when>
    <thetext>Created attachment 129973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570013</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 15:57:16 -0800</bug_when>
    <thetext>Attachment 129973 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:63:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:78:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:89:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:101:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 5 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570035</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-02 16:42:20 -0800</bug_when>
    <thetext>You probably don&apos;t need custom bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570059</commentid>
    <comment_count>4</comment_count>
      <attachid>129973</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-02 17:28:12 -0800</bug_when>
    <thetext>Comment on attachment 129973
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:84
&gt; +        MessagePortArray messagePortArray;
&gt; +        ArrayBufferArray arrayBufferArray;
&gt; +        if (!extractTransferables(args[3], messagePortArray, arrayBufferArray))
&gt; +            return throwError(&quot;Transfer map must contain MessagePorts or ArrayBuffers&quot;);

You are using custom bindings just because you need to call extractTransferables(), right?

V8DOMWindowCustom.cpp, V8WorkerCustom.cpp, V8MessagePortCustom.cpp and V8DedicatedWorkerContextCustom.cpp are also using extractTransferables() in custom bindings. I think we can introduce a new IDL attribute [V8ExtractTransferables] and then remove those custom bindings + V8IntentCustom.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570075</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-02 18:43:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 129973 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129973&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:84
&gt; &gt; +        MessagePortArray messagePortArray;
&gt; &gt; +        ArrayBufferArray arrayBufferArray;
&gt; &gt; +        if (!extractTransferables(args[3], messagePortArray, arrayBufferArray))
&gt; &gt; +            return throwError(&quot;Transfer map must contain MessagePorts or ArrayBuffers&quot;);
&gt; 
&gt; You are using custom bindings just because you need to call extractTransferables(), right?
&gt; 
&gt; V8DOMWindowCustom.cpp, V8WorkerCustom.cpp, V8MessagePortCustom.cpp and V8DedicatedWorkerContextCustom.cpp are also using extractTransferables() in custom bindings. I think we can introduce a new IDL attribute [V8ExtractTransferables] and then remove those custom bindings + V8IntentCustom.cpp.

This is a good idea in principle, however if you look closely you will see that all those places extract transferables in not quite the same way due to postMessage/webkitPostMessage dichotomy. I do hope that will be resolved soon (ance the spec emerges from the strawman), and then we can do what you say - feel free to open a bug to add V8ExtractTransfrables attribute and assign it to me.
In the meanwhile, let&apos;s do custom bindings here for a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570313</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-04 17:22:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; This is a good idea in principle, however if you look closely you will see that all those places extract transferables in not quite the same way due to postMessage/webkitPostMessage dichotomy. I do hope that will be resolved soon (ance the spec emerges from the strawman), and then we can do what you say - feel free to open a bug to add V8ExtractTransfrables attribute and assign it to me.
&gt; In the meanwhile, let&apos;s do custom bindings here for a bit.

Then, shall we introduce the [V8ExtractTransfrables] IDL attribute so that it meets the usage in Intent.idl? After that, we can fix other IDL files so that they can also use the [V8ExtractTransfrables] IDL attribute.

BTW, if you do want to write V8IntentCustom.cpp, please do the following (At present, V8IntentCustom.cpp in the patch is full of bugs):

(1) Remove [CustomConstructor] IDL attribute
(2) Build
(3) In a few minutes, src/out/Release/obj/gen/webcore/bindings/V8Intent.cpp will be generated automatically
(4) Copy the generated V8Intent.cpp to WebCore/custom/v8/custom/V8IntentCustom.cpp
(5) Modify V8IntentCustom.cpp as you like</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570401</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-04 21:23:11 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; This is a good idea in principle, however if you look closely you will see that all those places extract transferables in not quite the same way due to postMessage/webkitPostMessage dichotomy. I do hope that will be resolved soon (ance the spec emerges from the strawman), and then we can do what you say - feel free to open a bug to add V8ExtractTransfrables attribute and assign it to me.
&gt; &gt; In the meanwhile, let&apos;s do custom bindings here for a bit.
&gt; 
&gt; Then, shall we introduce the [V8ExtractTransfrables] IDL attribute so that it meets the usage in Intent.idl? After that, we can fix other IDL files so that they can also use the [V8ExtractTransfrables] IDL attribute.

I am not sure what good purpose having a single attribute with a single use would serve? 
However if Greg feels comfortable doing that, I think it is ok. 

&gt; 
&gt; BTW, if you do want to write V8IntentCustom.cpp, please do the following (At present, V8IntentCustom.cpp in the patch is full of bugs):
&gt; 
&gt; (1) Remove [CustomConstructor] IDL attribute
&gt; (2) Build
&gt; (3) In a few minutes, src/out/Release/obj/gen/webcore/bindings/V8Intent.cpp will be generated automatically
&gt; (4) Copy the generated V8Intent.cpp to WebCore/custom/v8/custom/V8IntentCustom.cpp
&gt; (5) Modify V8IntentCustom.cpp as you like

This is a good recipe :) My understanding is that Greg put this patch up as a quick-and-dirty &quot;proof-of-concept&quot; - it shouldn&apos;t have been marked r? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570403</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-04 21:31:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I am not sure what good purpose having a single attribute with a single use would serve? 
&gt; However if Greg feels comfortable doing that, I think it is ok. 

But I guess we should eventually use [V8ExtractTransfrables] also in Worker.idl, DedicatedWorkerContext.idl, MessagePort.idl, etc and remove their custom bindings. It would make sense to introduce [V8ExtractTransfrables] to Intent.idl as a first use case. Anyway we do not want to increase the number of custom bindings since they are likely to be buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570405</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-04 21:44:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; I am not sure what good purpose having a single attribute with a single use would serve? 
&gt; &gt; However if Greg feels comfortable doing that, I think it is ok. 
&gt; 
&gt; But I guess we should eventually use [V8ExtractTransfrables] also in Worker.idl, DedicatedWorkerContext.idl, MessagePort.idl, etc and remove their custom bindings. It would make sense to introduce [V8ExtractTransfrables] to Intent.idl as a first use case. Anyway we do not want to increase the number of custom bindings since they are likely to be buggy.

I do hope this will happen; note btw that ExtractTransferables is not limited to V8 - the same concept exists in JSC as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570415</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-04 22:48:06 -0800</bug_when>
    <thetext>It&apos;s better to improve the code generator than to write custom bindings.  Many attributes started off being used in only a small number of places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570781</commentid>
    <comment_count>11</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-05 09:36:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 129973 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129973&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:84
&gt; &gt; +        MessagePortArray messagePortArray;
&gt; &gt; +        ArrayBufferArray arrayBufferArray;
&gt; &gt; +        if (!extractTransferables(args[3], messagePortArray, arrayBufferArray))
&gt; &gt; +            return throwError(&quot;Transfer map must contain MessagePorts or ArrayBuffers&quot;);
&gt; 
&gt; You are using custom bindings just because you need to call extractTransferables(), right?
&gt; 
&gt; V8DOMWindowCustom.cpp, V8WorkerCustom.cpp, V8MessagePortCustom.cpp and V8DedicatedWorkerContextCustom.cpp are also using extractTransferables() in custom bindings. I think we can introduce a new IDL attribute [V8ExtractTransferables] and then remove those custom bindings + V8IntentCustom.cpp.

That&apos;d be awesome. I think the reason I need custom here (Dmitry can confirm or deny) is that the &quot;Array&quot; type doesn&apos;t translate correctly. It&apos;d be much nicer to not have the custom bits. It&apos;d be really keen to code-gen the transferable support right into the creation of SerializedScriptValue so when the non-custom method is called, that&apos;s already magically happened. :-) I think this is the main use case, and as you point out, there are several parallel implementations of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570894</commentid>
    <comment_count>12</comment_count>
      <attachid>130170</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-05 11:46:01 -0800</bug_when>
    <thetext>Created attachment 130170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570905</commentid>
    <comment_count>13</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-05 11:50:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; This is a good idea in principle, however if you look closely you will see that all those places extract transferables in not quite the same way due to postMessage/webkitPostMessage dichotomy. I do hope that will be resolved soon (ance the spec emerges from the strawman), and then we can do what you say - feel free to open a bug to add V8ExtractTransfrables attribute and assign it to me.
&gt; &gt; In the meanwhile, let&apos;s do custom bindings here for a bit.
&gt; 
&gt; Then, shall we introduce the [V8ExtractTransfrables] IDL attribute so that it meets the usage in Intent.idl? After that, we can fix other IDL files so that they can also use the [V8ExtractTransfrables] IDL attribute.
&gt; 
&gt; BTW, if you do want to write V8IntentCustom.cpp, please do the following (At present, V8IntentCustom.cpp in the patch is full of bugs):
&gt; 
&gt; (1) Remove [CustomConstructor] IDL attribute
&gt; (2) Build
&gt; (3) In a few minutes, src/out/Release/obj/gen/webcore/bindings/V8Intent.cpp will be generated automatically
&gt; (4) Copy the generated V8Intent.cpp to WebCore/custom/v8/custom/V8IntentCustom.cpp
&gt; (5) Modify V8IntentCustom.cpp as you like

I did this, which helped: realized the 0-arg call that&apos;d been puzzling me was in wrap mode, and is now handled.

But really, I *don&apos;t* want this to be custom. What&apos;d be great is to be able to say &quot;in [Optional=TransferArrayArg] Array transferMap&quot; and have that get automagically handled by the code gen in making the SerializedScriptValue.

Especially because now I&apos;m getting errors from V8Utilities that apparently I need to massage this value somehow, as it isn&apos;t an object. :-( There&apos;s quite a bit of parallel code here and there about this, so it&apos;d be great to have a re-usable way to expose this clone/transfer operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571046</commentid>
    <comment_count>14</comment_count>
      <attachid>130170</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 14:20:08 -0800</bug_when>
    <thetext>Comment on attachment 130170
Patch

Attachment 130170 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11807999

New failing tests:
webintents/web-intents-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571171</commentid>
    <comment_count>15</comment_count>
      <attachid>130170</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-05 16:40:01 -0800</bug_when>
    <thetext>Comment on attachment 130170
Patch

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

&gt; Source/WebCore/Modules/intents/Intent.idl:30
&gt; +      Constructor(in DOMString action, in DOMString type, in [Optional=DefaultIsNullString] SerializedScriptValue data, in [Optional] Array transferMap),

[Optional=DefaultIsNullString] can be specified on DOMString only (https://trac.webkit.org/wiki/WebKitIDL#Optional). Maybe it should be [Optional=DefaultIsUndefined].

&gt; But really, I *don&apos;t* want this to be custom. What&apos;d be great is to be able to say &quot;in [Optional=TransferArrayArg] Array transferMap&quot; and have that get automagically handled by the code gen in making the SerializedScriptValue.

Agreed. Shall we introduce it?

&gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:60
&gt; +    if (args.Length() &gt; 4)
&gt; +        return throwError(&quot;Too many arguments to intent constructor&quot;, V8Proxy::TypeError);

Is this behavior speced? Normally we do not throw an error for too much arguments.

&gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:89
&gt; +        return throwError(&quot;Could not serialize intent data&quot;);

Is this behavior speced? Normally we return v8::Undefined() in such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571194</commentid>
    <comment_count>16</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-05 16:53:31 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 130170 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130170&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/intents/Intent.idl:30
&gt; &gt; +      Constructor(in DOMString action, in DOMString type, in [Optional=DefaultIsNullString] SerializedScriptValue data, in [Optional] Array transferMap),
&gt; 
&gt; [Optional=DefaultIsNullString] can be specified on DOMString only (https://trac.webkit.org/wiki/WebKitIDL#Optional). Maybe it should be [Optional=DefaultIsUndefined].
&gt; 
&gt; &gt; But really, I *don&apos;t* want this to be custom. What&apos;d be great is to be able to say &quot;in [Optional=TransferArrayArg] Array transferMap&quot; and have that get automagically handled by the code gen in making the SerializedScriptValue.
&gt; 
&gt; Agreed. Shall we introduce it?

FWIW, I am still split on this one. It feels too early to do this, and not very useful for this single case.
Note that that transfer array attribute (it is a _list_, not a map) should in reality specify a _pair_ of arguments (in this case &apos;transfer&apos; is a transfer list for &apos;intentData&apos; argument). So it should be something like:

   [Optional=TransferArray(intentData)] Array trasferList

I would prefer not polluting WebkitIDL further with single-use-case V8-specific attributes though (until they are non-single use-case and apply to JSC too).

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:60
&gt; &gt; +    if (args.Length() &gt; 4)
&gt; &gt; +        return throwError(&quot;Too many arguments to intent constructor&quot;, V8Proxy::TypeError);
&gt; 
&gt; Is this behavior speced? Normally we do not throw an error for too much arguments.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp:89
&gt; &gt; +        return throwError(&quot;Could not serialize intent data&quot;);
&gt; 
&gt; Is this behavior speced? Normally we return v8::Undefined() in such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576452</commentid>
    <comment_count>17</comment_count>
      <attachid>131394</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-12 13:22:03 -0700</bug_when>
    <thetext>Created attachment 131394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576590</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 15:07:45 -0700</bug_when>
    <thetext>I feel like I&apos;m missing something in this bug.  Maybe it would be better to talk by voice or chat?  If this API is expressible in WebIDL, then we should be able to express it in WebKitIDL by improving the code generator.  If it&apos;s not expressible in WebIDL, then we should probably choose a different design that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576619</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-12 15:31:07 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I feel like I&apos;m missing something in this bug.  Maybe it would be better to talk by voice or chat?  If this API is expressible in WebIDL, then we should be able to express it in WebKitIDL by improving the code generator.  If it&apos;s not expressible in WebIDL, then we should probably choose a different design that is.

Adam, API is expressible in WebIDL, it is similar to what happens in postMessage. 
With luck, we will be able to codegen more of the bindings. I know that Greg is working on this for Intents, and I&apos;ll be taking a look at adapting that code gen to cover other use cases. The patch is a work-in-progress at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576622</commentid>
    <comment_count>20</comment_count>
      <attachid>131394</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-12 15:32:49 -0700</bug_when>
    <thetext>Comment on attachment 131394
Patch

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

&gt; Source/WebCore/Modules/intents/Intent.cpp:87
&gt; +        m_data = SerializedScriptValue::createFromWire(data-&gt;toWireString());

Why do you need these conversions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576623</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 15:34:59 -0700</bug_when>
    <thetext>&gt; Adam, API is expressible in WebIDL, it is similar to what happens in postMessage. 

Ok, great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576724</commentid>
    <comment_count>22</comment_count>
      <attachid>131394</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-12 16:48:57 -0700</bug_when>
    <thetext>Comment on attachment 131394
Patch

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

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:87
&gt;&gt; +        m_data = SerializedScriptValue::createFromWire(data-&gt;toWireString());
&gt; 
&gt; Why do you need these conversions?

I&apos;m basically taking a copy, which will get passed out to the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576752</commentid>
    <comment_count>23</comment_count>
      <attachid>131394</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-12 17:05:04 -0700</bug_when>
    <thetext>Comment on attachment 131394
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:87
&gt;&gt;&gt; +        m_data = SerializedScriptValue::createFromWire(data-&gt;toWireString());
&gt;&gt; 
&gt;&gt; Why do you need these conversions?
&gt; 
&gt; I&apos;m basically taking a copy, which will get passed out to the embedder.

I think it is not needed - you can just keep a RefPtr to SSV. SSV is not mutable once created, so no danger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576775</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 17:25:34 -0700</bug_when>
    <thetext>&gt; API is expressible in WebIDL

I talked this over with Greg, and he seems to think the coupling between these two parameters isn&apos;t expressible in WebIDL.  If there&apos;s a way to express it, that would be good to know so we can model the WebKitIDL syntax off the WebIDL syntax.

Greg suggested that we use the following syntax:

  [...] foo(in [TransferMap=transfers] any data, in [Optional] transfers)

which seems reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576782</commentid>
    <comment_count>25</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-12 17:30:08 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; API is expressible in WebIDL
&gt; 
&gt; I talked this over with Greg, and he seems to think the coupling between these two parameters isn&apos;t expressible in WebIDL.  If there&apos;s a way to express it, that would be good to know so we can model the WebKitIDL syntax off the WebIDL syntax.
&gt; 
&gt; Greg suggested that we use the following syntax:
&gt; 
&gt;   [...] foo(in [TransferMap=transfers] any data, in [Optional] transfers)
&gt; 
&gt; which seems reasonable.

1. s/TransferMap/TransferList/ (or Transfer).
2. No strong preference, but why the attribute on &apos;data&apos;, not on &apos;transfers&apos;. Any precdents here?
3. Need to imply optionality. I.e. for intents, data is optional, and transfers is optional. Valid combinations are (...), (...,data), (...,data, transfer). Can we express that in WebIDL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576799</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 17:42:52 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; &gt; API is expressible in WebIDL
&gt; &gt; 
&gt; &gt; I talked this over with Greg, and he seems to think the coupling between these two parameters isn&apos;t expressible in WebIDL.  If there&apos;s a way to express it, that would be good to know so we can model the WebKitIDL syntax off the WebIDL syntax.
&gt; &gt; 
&gt; &gt; Greg suggested that we use the following syntax:
&gt; &gt; 
&gt; &gt;   [...] foo(in [TransferMap=transfers] any data, in [Optional] transfers)
&gt; &gt; 
&gt; &gt; which seems reasonable.
&gt; 
&gt; 1. s/TransferMap/TransferList/ (or Transfer).
&gt; 2. No strong preference, but why the attribute on &apos;data&apos;, not on &apos;transfers&apos;. Any precdents here?

I suggested the reverse, but Greg seemed to prefer this way.  Either is probably fine.

&gt; 3. Need to imply optionality. I.e. for intents, data is optional, and transfers is optional. Valid combinations are (...), (...,data), (...,data, transfer). Can we express that in WebIDL?

As far as I can tell, none of this is expressible in WebIDL (i.e., http://www.w3.org/TR/WebIDL/ ).  We&apos;re discussing WebKitIDL.  If you&apos;d like both to be optional, you can write the following:

[...] foo(in [Optional, TransferList=transfers] any data, in [Optional] transfers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576811</commentid>
    <comment_count>27</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-12 17:49:08 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; &gt; API is expressible in WebIDL
&gt; &gt; &gt; 
&gt; &gt; &gt; I talked this over with Greg, and he seems to think the coupling between these two parameters isn&apos;t expressible in WebIDL.  If there&apos;s a way to express it, that would be good to know so we can model the WebKitIDL syntax off the WebIDL syntax.
&gt; &gt; &gt; 
&gt; &gt; &gt; Greg suggested that we use the following syntax:
&gt; &gt; &gt; 
&gt; &gt; &gt;   [...] foo(in [TransferMap=transfers] any data, in [Optional] transfers)
&gt; &gt; &gt; 
&gt; &gt; &gt; which seems reasonable.
&gt; &gt; 
&gt; &gt; 1. s/TransferMap/TransferList/ (or Transfer).
&gt; &gt; 2. No strong preference, but why the attribute on &apos;data&apos;, not on &apos;transfers&apos;. Any precdents here?
&gt; 
&gt; I suggested the reverse, but Greg seemed to prefer this way.  Either is probably fine.

Ok.

&gt; 
&gt; &gt; 3. Need to imply optionality. I.e. for intents, data is optional, and transfers is optional. Valid combinations are (...), (...,data), (...,data, transfer). Can we express that in WebIDL?
&gt; 
&gt; As far as I can tell, none of this is expressible in WebIDL (i.e., http://www.w3.org/TR/WebIDL/ ).  We&apos;re discussing WebKitIDL.  

Right, sorry that is what I meant.

&gt; If you&apos;d like both to be optional, you can write the following:
&gt; 
&gt; [...] foo(in [Optional, TransferList=transfers] any data, in [Optional] transfers)

TransferList should imply the correct &quot;optionality&quot; for transfers. (Maybe it happens automatically with Optional now though?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588325</commentid>
    <comment_count>28</comment_count>
      <attachid>133932</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-26 16:57:48 -0700</bug_when>
    <thetext>Created attachment 133932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588330</commentid>
    <comment_count>29</comment_count>
      <attachid>133932</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-26 17:01:47 -0700</bug_when>
    <thetext>Comment on attachment 133932
Patch

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

Comments below

&gt; Source/WebCore/Modules/intents/Intent.cpp:51
&gt; +    fprintf(stderr, &quot;Data is %s\n&quot;, data-&gt;toWireString().utf8().data());

Stale debug print

&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt; +    fprintf(stderr, &quot;Data is %s\n&quot;, data-&gt;toWireString().utf8().data());

Stale debug print

&gt; Source/WebCore/Modules/intents/Intent.cpp:91
&gt; +        m_data = SerializedScriptValue::createFromWire(data-&gt;toWireString());

No need for toWire/fromWire conversion. Just assign m_data = data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588332</commentid>
    <comment_count>30</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-26 17:04:14 -0700</bug_when>
    <thetext>OK, back from the W3C meeting now. I&apos;ve updated this CL to use the new codegen (and fixed the include stanza there). Compiles now! So that should be happy news for codegen.

I was going to make the updates on https://trac.webkit.org/wiki/WebKitIDL, but it looks like someone with more permissions needs to add the new &quot;TransferList&quot; IDL modifier. (Or get me set up with the right access.)

Filed https://bugs.webkit.org/show_bug.cgi?id=82264 for JSC support for this modifier. Shall I file another for refitting existing postMessage implementation to use it? I suppose we should wait for JSC support, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588348</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-26 17:15:09 -0700</bug_when>
    <thetext>&gt; I was going to make the updates on https://trac.webkit.org/wiki/WebKitIDL, but it looks like someone with more permissions needs to add the new &quot;TransferList&quot; IDL modifier. (Or get me set up with the right access.)

If you email me the text, I&apos;m happy to add it for you.

&gt; Filed https://bugs.webkit.org/show_bug.cgi?id=82264 for JSC support for this modifier. Shall I file another for refitting existing postMessage implementation to use it?

Sure.

&gt; I suppose we should wait for JSC support, right?

Yeah, you probably want to mark the JSC bug as blocking the postMessage bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588506</commentid>
    <comment_count>32</comment_count>
      <attachid>133932</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 19:59:06 -0700</bug_when>
    <thetext>Comment on attachment 133932
Patch

Attachment 133932 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12142260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589048</commentid>
    <comment_count>33</comment_count>
      <attachid>133932</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 10:59:44 -0700</bug_when>
    <thetext>Comment on attachment 133932
Patch

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

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:51
&gt;&gt; +    fprintf(stderr, &quot;Data is %s\n&quot;, data-&gt;toWireString().utf8().data());
&gt; 
&gt; Stale debug print

Removed

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt;&gt; +    fprintf(stderr, &quot;Data is %s\n&quot;, data-&gt;toWireString().utf8().data());
&gt; 
&gt; Stale debug print

Removed

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:91
&gt;&gt; +        m_data = SerializedScriptValue::createFromWire(data-&gt;toWireString());
&gt; 
&gt; No need for toWire/fromWire conversion. Just assign m_data = data

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589059</commentid>
    <comment_count>34</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 11:07:06 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; I was going to make the updates on https://trac.webkit.org/wiki/WebKitIDL, but it looks like someone with more permissions needs to add the new &quot;TransferList&quot; IDL modifier. (Or get me set up with the right access.)
&gt; 
&gt; If you email me the text, I&apos;m happy to add it for you.

Will do off-thread.

&gt; 
&gt; &gt; Filed https://bugs.webkit.org/show_bug.cgi?id=82264 for JSC support for this modifier. Shall I file another for refitting existing postMessage implementation to use it?
&gt; 
&gt; Sure.
&gt; 
&gt; &gt; I suppose we should wait for JSC support, right?
&gt; 
&gt; Yeah, you probably want to mark the JSC bug as blocking the postMessage bug.

https://bugs.webkit.org/show_bug.cgi?id=82356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589064</commentid>
    <comment_count>35</comment_count>
      <attachid>134102</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 11:18:52 -0700</bug_when>
    <thetext>Created attachment 134102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589072</commentid>
    <comment_count>36</comment_count>
      <attachid>134102</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-27 11:27:03 -0700</bug_when>
    <thetext>Comment on attachment 134102
Patch

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

What are your plans for testing this?

&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt; +    OwnPtr&lt;MessagePortArray&gt; entangledPorts = MessagePort::entanglePorts(*context, channels.release());

This is wrong (sorry for missing this in my previous review).
You want to entanglePorts _in the context of the reciever_, not in the context of sender.

The right thing to do would be to keep the disentangled MessagePortChannelArray in the Intent class, and  entangle ports on the receiving side. 
See DOMWindow.cpp for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589088</commentid>
    <comment_count>37</comment_count>
      <attachid>134102</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 11:41:32 -0700</bug_when>
    <thetext>Comment on attachment 134102
Patch

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

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt;&gt; +    OwnPtr&lt;MessagePortArray&gt; entangledPorts = MessagePort::entanglePorts(*context, channels.release());
&gt; 
&gt; This is wrong (sorry for missing this in my previous review).
&gt; You want to entanglePorts _in the context of the reciever_, not in the context of sender.
&gt; 
&gt; The right thing to do would be to keep the disentangled MessagePortChannelArray in the Intent class, and  entangle ports on the receiving side. 
&gt; See DOMWindow.cpp for an example.

Yeah, this is confusing to me. In DOMWindow.cpp:795 the disentanglePorts call gets made as part of postMessage(). What I thought I understood off-line, and read in DOMWindow.cpp, was that this MessagePortChannelArray then gets passed to the PostMessageTimer, which upon execution proceeds to call entanglePorts (line 126) as it creates the event to be dispatched. Or am I misreading this, and this timer is actually in the receiving DOMWindow? I was assuming there was some safety reason for the first disentangle having to do with lazy initialization or passing ports through workers or some such why it was needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589105</commentid>
    <comment_count>38</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-27 11:55:09 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 134102 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134102&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt; &gt;&gt; +    OwnPtr&lt;MessagePortArray&gt; entangledPorts = MessagePort::entanglePorts(*context, channels.release());
&gt; &gt; 
&gt; &gt; This is wrong (sorry for missing this in my previous review).
&gt; &gt; You want to entanglePorts _in the context of the reciever_, not in the context of sender.
&gt; &gt; 
&gt; &gt; The right thing to do would be to keep the disentangled MessagePortChannelArray in the Intent class, and  entangle ports on the receiving side. 
&gt; &gt; See DOMWindow.cpp for an example.
&gt; 
&gt; Yeah, this is confusing to me. In DOMWindow.cpp:795 the disentanglePorts call gets made as part of postMessage(). What I thought I understood off-line, and read in DOMWindow.cpp, was that this MessagePortChannelArray then gets passed to the PostMessageTimer, which upon execution proceeds to call entanglePorts (line 126) as it creates the event to be dispatched. Or am I misreading this, and this timer is actually in the receiving DOMWindow? 

The call on line 126 is in PostMessageTimer::event, which happens when the message gets received. Note how the context is passed into PostMessageTimer::event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589123</commentid>
    <comment_count>39</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 12:12:11 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; (From update of attachment 134102 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134102&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt; &gt; &gt;&gt; +    OwnPtr&lt;MessagePortArray&gt; entangledPorts = MessagePort::entanglePorts(*context, channels.release());
&gt; &gt; &gt; 
&gt; &gt; &gt; This is wrong (sorry for missing this in my previous review).
&gt; &gt; &gt; You want to entanglePorts _in the context of the reciever_, not in the context of sender.
&gt; &gt; &gt; 
&gt; &gt; &gt; The right thing to do would be to keep the disentangled MessagePortChannelArray in the Intent class, and  entangle ports on the receiving side. 
&gt; &gt; &gt; See DOMWindow.cpp for an example.
&gt; &gt; 
&gt; &gt; Yeah, this is confusing to me. In DOMWindow.cpp:795 the disentanglePorts call gets made as part of postMessage(). What I thought I understood off-line, and read in DOMWindow.cpp, was that this MessagePortChannelArray then gets passed to the PostMessageTimer, which upon execution proceeds to call entanglePorts (line 126) as it creates the event to be dispatched. Or am I misreading this, and this timer is actually in the receiving DOMWindow? 
&gt; 
&gt; The call on line 126 is in PostMessageTimer::event, which happens when the message gets received. Note how the context is passed into PostMessageTimer::event.

Got it. I was reading the code in postMessage like this:

PostMessageTimer* timer = new PostMessageTimer(this, message, sourceOrigin, source, channels.release(), target.get(), stackTrace.release());

Gets the disentangled ports

    timer-&gt;startOneShot(0);

Runs the timer, causes postMessageTimerFired in that same window, which (line 822) does:
   RefPtr&lt;MessageEvent&gt; event = timer-&gt;event(document());

which then calls entanglePorts, and then the event is dispatched to the destination at the bottom of postMessageTimerFired. But I take it that&apos;s not right and the timer must fire on the destination window? (Just want to make sure I have the right mental model.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589198</commentid>
    <comment_count>40</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-27 13:15:14 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (In reply to comment #37)
&gt; &gt; &gt; (From update of attachment 134102 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134102&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:67
&gt; &gt; &gt; &gt;&gt; +    OwnPtr&lt;MessagePortArray&gt; entangledPorts = MessagePort::entanglePorts(*context, channels.release());
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is wrong (sorry for missing this in my previous review).
&gt; &gt; &gt; &gt; You want to entanglePorts _in the context of the reciever_, not in the context of sender.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; The right thing to do would be to keep the disentangled MessagePortChannelArray in the Intent class, and  entangle ports on the receiving side. 
&gt; &gt; &gt; &gt; See DOMWindow.cpp for an example.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yeah, this is confusing to me. In DOMWindow.cpp:795 the disentanglePorts call gets made as part of postMessage(). What I thought I understood off-line, and read in DOMWindow.cpp, was that this MessagePortChannelArray then gets passed to the PostMessageTimer, which upon execution proceeds to call entanglePorts (line 126) as it creates the event to be dispatched. Or am I misreading this, and this timer is actually in the receiving DOMWindow? 
&gt; &gt; 
&gt; &gt; The call on line 126 is in PostMessageTimer::event, which happens when the message gets received. Note how the context is passed into PostMessageTimer::event.
&gt; 
&gt; Got it. I was reading the code in postMessage like this:
&gt; 
&gt; PostMessageTimer* timer = new PostMessageTimer(this, message, sourceOrigin, source, channels.release(), target.get(), stackTrace.release());
&gt; 
&gt; Gets the disentangled ports
&gt; 
&gt;     timer-&gt;startOneShot(0);
&gt; 
&gt; Runs the timer, causes postMessageTimerFired in that same window, which (line 822) does:
&gt;    RefPtr&lt;MessageEvent&gt; event = timer-&gt;event(document());
&gt; 
&gt; which then calls entanglePorts, and then the event is dispatched to the destination at the bottom of postMessageTimerFired. But I take it that&apos;s not right and the timer must fire on the destination window? (Just want to make sure I have the right mental model.)

Ok let me try to make in clear: so you are in some context. say inside a my-awesome-window.html.
That page is shown in some window, call it awesomeWindow. The javascript executing in my-awesome-window.html gets a hold on *another* window, let us call it destinationWindow. When javascript executing in my-awesome-window.html calls:
destinationWindow.postMessage(...)
the context in which this invocation happens is the context associated with awesomeWindow, i.e. with a my-awesome-window.html.

Ok now the response to that message needs to happen in destinationWindow&apos;s context, right? In terms of DOMWindow.cpp code, destinationWindow is &apos;this&apos;. Henceforth what happens is that DOMWindow::postMessage (executing in the context of awesomeWindow) starts a timer, and a timer fires immediately (postMessageTimerFired) and uses *destinationWindow* context, a.k.a. this-&gt;doucment() to entangle ports (line 822):
   RefPtr&lt;MessageEvent&gt; event = timer-&gt;event(document());

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589260</commentid>
    <comment_count>41</comment_count>
      <attachid>134132</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 14:11:59 -0700</bug_when>
    <thetext>Created attachment 134132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589272</commentid>
    <comment_count>42</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-27 14:16:56 -0700</bug_when>
    <thetext>(In reply to comment #40)

Thanks! Sounds like I have the right image, then. (I uploaded a new patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589310</commentid>
    <comment_count>43</comment_count>
      <attachid>134132</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-27 14:44:32 -0700</bug_when>
    <thetext>Comment on attachment 134132
Patch

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

Looks good to me, with a nit (below).
What are the plans for testing this? Will you have a layout test with transfer?

&gt; Source/WebCore/Modules/intents/Intent.idl:29
&gt; +      Constructor(in DOMString action, in DOMString type, in [Optional=DefaultIsNullString, TransferList=transferMap] SerializedScriptValue data, in [Optional=DefaultIsUndefined] Array transferMap),

s/transferMap/transferList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589312</commentid>
    <comment_count>44</comment_count>
      <attachid>134132</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 14:46:10 -0700</bug_when>
    <thetext>Comment on attachment 134132
Patch

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

This looks good, but please add a test that calls these new constructors.

&gt; Source/WebCore/ChangeLog:7
&gt; +        Add transfer map argument to Intent constructor
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=80200
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Can you add more information to this ChangeLog?  There was a thread on webkit-dev recently requesting that folks put more information in their ChangeLogs.  For example, you might add a link to the line of the spec you&apos;re implementing and/or explain why adding transfer map argument to Intent constructor is useful.

&gt; Source/WebCore/Modules/intents/Intent.cpp:66
&gt; +    OwnPtr&lt;MessagePortChannelArray&gt; channels = MessagePort::disentanglePorts(&amp;ports, ec);

I&apos;m slightly unsure about this line, but Comment #36 seems to indiciate that this is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590149</commentid>
    <comment_count>45</comment_count>
      <attachid>134338</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-28 11:03:46 -0700</bug_when>
    <thetext>Created attachment 134338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590153</commentid>
    <comment_count>46</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-28 11:07:23 -0700</bug_when>
    <thetext>Now with test and chromium API accessor. I&apos;m a bit unsure about that, BTW. The only way I could find to really return something meaningful ends up calling webChannelRelease. I&apos;m not sure what the implications of that are. Does the caller then own the channel, and needs to maintain it? If I get the message port IDs out, can I then delete those references and the ports will still function? I&apos;m not sure what the refcounting semantics are for these objects... Perhaps I need to hang on to a ref in the IntentRequest object as well, if Intent is going to need to release them?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590154</commentid>
    <comment_count>47</comment_count>
      <attachid>134338</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 11:08:13 -0700</bug_when>
    <thetext>Comment on attachment 134338
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +	http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html
&gt; +	This adds the ability to pass transferables (i.e. MessagePorts)
&gt; +	through web intents, and puts the calling convention in line
&gt; +	with the Web Messaging spec:
&gt; +	http://dev.w3.org/html5/postmsg/

Looks like you&apos;ve got some indentation problems here.

&gt; Source/WebCore/Modules/intents/Intent.h:61
&gt; +    // Make an accessor for PlatformMessagePortChannel instead?

Technically we prefer comments to be complete sentences.

&gt; Source/WebKit/chromium/public/WebIntent.h:69
&gt; +    // Caller takes ownership of the ports.
&gt; +    WEBKIT_EXPORT WebMessagePortChannelArray* ports() const;

Should we pick a name here that makes it more clear when reading the caller that it needs to take ownership of the ports?  I&apos;m not sure if there&apos;s already a convention for such names in the WebKit API.  As written, this seems likely to lead to memory leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590156</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 11:08:47 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590157</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 11:09:08 -0700</bug_when>
    <thetext>Attachment 134338 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/webintents/web-intents-invoke-...&quot; exit_code: 1
Source/WebCore/ChangeLog:4:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590158</commentid>
    <comment_count>50</comment_count>
      <attachid>134338</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-28 11:10:30 -0700</bug_when>
    <thetext>Comment on attachment 134338
Patch

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

A few more comments.
Darin Fisher will need to look at changes in WebKit/chromium/public/

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1325
&gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());

Debug print.

&gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));

Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590159</commentid>
    <comment_count>51</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 11:10:40 -0700</bug_when>
    <thetext>&gt; I&apos;m a bit unsure about that, BTW.

Maybe it would be easier to just expose the number of ports?  Are you planning to use this for anything beyond testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590160</commentid>
    <comment_count>52</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-28 11:11:52 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 134338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; 
&gt; A few more comments.
&gt; Darin Fisher will need to look at changes in WebKit/chromium/public/

Oh ok it looks like it is not Darin only anymore :) (a welcome change!)

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1325
&gt; &gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; 
&gt; Debug print.
&gt; 
&gt; &gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt; &gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));
&gt; 
&gt; Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590168</commentid>
    <comment_count>53</comment_count>
      <attachid>134343</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-28 11:14:50 -0700</bug_when>
    <thetext>Created attachment 134343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590180</commentid>
    <comment_count>54</comment_count>
      <attachid>134338</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-28 11:21:01 -0700</bug_when>
    <thetext>Comment on attachment 134338
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt;&gt; +	http://dev.w3.org/html5/postmsg/
&gt;&gt; 
&gt;&gt; Looks like you&apos;ve got some indentation problems here.
&gt; 
&gt; Line contains tab character.  [whitespace/tab] [5]

Yeah. Fixed up. :-/

&gt;&gt; Source/WebCore/Modules/intents/Intent.h:61
&gt;&gt; +    // Make an accessor for PlatformMessagePortChannel instead?
&gt; 
&gt; Technically we prefer comments to be complete sentences.

Yeah, this is a plea for help more than something intended to make it to checkin. :-) I&apos;m not sure what to do about exposing these ports; I don&apos;t think I understand the ownership and implications of the port vs. channel vs. platform well enough to know what to do. In the Chromium API, I basically need to expose the platform channel in order to get the port IDs to pass through the IPC system. The only way I can see to do that involves webChannelRelease in the platform code. I don&apos;t have a clear sense as to what that really means, and what the implications are for which references I need to keep tucked away here in WebCore to make sure everything works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590186</commentid>
    <comment_count>55</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-28 11:25:45 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; &gt; I&apos;m a bit unsure about that, BTW.
&gt; 
&gt; Maybe it would be easier to just expose the number of ports?  Are you planning to use this for anything beyond testing?

When this gets into the chromium-side code, I&apos;ll need to do the WebMessagePortChannelImpl thing and get the port ID out to send through the IPC  to the browser and then service context. I played about with exposing that API down here, but Dmitry talked me out of it. :-) I&apos;m left not really knowing what&apos;s going on with the platform message channels, though, and if this is the right way to expose the API, whether that has implications for WebCore I need to account for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590345</commentid>
    <comment_count>56</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 13:26:14 -0700</bug_when>
    <thetext>@dslomov: Any insights as to what we should do here?  Did we used to do something similar when workers were out of process?  If so, should we copy the pattern from that code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590356</commentid>
    <comment_count>57</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-28 13:37:01 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; @dslomov: Any insights as to what we should do here?  Did we used to do something similar when workers were out of process?  If so, should we copy the pattern from that code?

The model code to look at is chromium MessagePort implementation. I can have a look later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591554</commentid>
    <comment_count>58</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-03-29 14:19:56 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 134338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; 
&gt; A few more comments.
&gt; Darin Fisher will need to look at changes in WebKit/chromium/public/
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1325
&gt; &gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; 
&gt; Debug print.
&gt; 
&gt; &gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt; &gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));
&gt; 
&gt; Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)

The exceptional tests there (shouldFail) are for unsupported data types, it looks like to me. Did you have any particular port failure cases in mind? Or do you mean the neutered ArrayBuffer?

WRT model MessagePort code, I&apos;m not sure I&apos;m looking in the right place. All the chromium API does is access WebMessagPortChannel (which is purely an interface) and PlatformMessagePortChannel (which is what I&apos;m trying to expose correctly in the CL).

On the chromium side, the code only uses the WebMessagePortChannelImpl class. It grabs the IDs out of there and sends the message on, but I&apos;m not sure of the protocol on the receiving end of how to actually hook it up after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592252</commentid>
    <comment_count>59</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-30 10:17:34 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #50)
&gt; &gt; (From update of attachment 134338 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; &gt; 
&gt; &gt; A few more comments.
&gt; &gt; Darin Fisher will need to look at changes in WebKit/chromium/public/
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1325
&gt; &gt; &gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; &gt; 
&gt; &gt; Debug print.

Sorry for a bad comment here, I somehow missed that it is in DumpRenderTree
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt; &gt; &gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));
&gt; &gt; 
&gt; &gt; Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)
&gt; 
&gt; The exceptional tests there (shouldFail) are for unsupported data types, it looks like to me. Did you have any particular port failure cases in mind? Or do you mean the neutered ArrayBuffer?
&gt;

Just unsupported data types, to make sure the exception is propagated correctly (I think it is, looking at the code, but it&apos;s nice to make sure)
 
&gt; WRT model MessagePort code, I&apos;m not sure I&apos;m looking in the right place. All the chromium API does is access WebMessagPortChannel (which is purely an interface) and PlatformMessagePortChannel (which is what I&apos;m trying to expose correctly in the CL).
&gt; 
&gt; On the chromium side, the code only uses the WebMessagePortChannelImpl class. It grabs the IDs out of there and sends the message on, but I&apos;m not sure of the protocol on the receiving end of how to actually hook it up after that.

tl;dr: This is a reasonable interface for WebIntent, although I suggets renaming ports to 

Alright, let&apos;s focus on what you actually need to do :)
The key thing that Intent class provides (AFAIU) is a package of &quot;stuff&quot; that needs to be transferred to the intent handler, possibly over to the other side of IPC boundary. The similar code currently exists in PlatformMessagePortChannel::postMessageToRemote in Source/WebKit/chromium/src/PlatformMessagePortChannel.cpp. (MessagePortChannel::EventData is in fact a pretty similar package of SSV+MessagePortChannels). You will have to write similar code somewhere where intents are already being IPCd over. 

What happens in PlatformMessagePortChannel::postMessageToRemote is that WebCore data types are being transferred into chromium-port-specific datatypes, namely SSV goes to WebString (=wire string) and each MessagePortChannel becomes and WebMessagePortChannel. So the transformations is from SSV+MessagePortChannelArray to WebString+WebMessagePortChannelArray. The latter pair is the suitable message to send over the IPC. 

The API on WebIntent should facilitate doing the same. The user of WebIntent class should be able to obtain a suitable WebString+WebMessagePortChannelArray pair out of it to send down the wire. So the combination of data() + ports() methods on WebIntent looks right. Maybe rename &apos;ports&apos; into &apos;messagePortChannels&apos; though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593636</commentid>
    <comment_count>60</comment_count>
      <attachid>134338</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-02 11:39:11 -0700</bug_when>
    <thetext>Comment on attachment 134338
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:69
&gt;&gt; +    WEBKIT_EXPORT WebMessagePortChannelArray* ports() const;
&gt; 
&gt; Should we pick a name here that makes it more clear when reading the caller that it needs to take ownership of the ports?  I&apos;m not sure if there&apos;s already a convention for such names in the WebKit API.  As written, this seems likely to lead to memory leaks.

Renamed to messagePortChannels, but yes, a name like &quot;adoptMessagePortChannelArrays&quot; is what we want. In PlatformMessagePortChannel it has a &quot;release&quot; suffix. Shall I use that?

&gt;&gt;&gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt;&gt;&gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));
&gt;&gt; 
&gt;&gt; Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)
&gt; 
&gt; Just unsupported data types, to make sure the exception is propagated correctly (I think it is, looking at the code, but it&apos;s nice to make sure)

OK, Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593646</commentid>
    <comment_count>61</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 11:50:00 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; (From update of attachment 134338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/public/WebIntent.h:69
&gt; &gt;&gt; +    WEBKIT_EXPORT WebMessagePortChannelArray* ports() const;
&gt; &gt; 
&gt; &gt; Should we pick a name here that makes it more clear when reading the caller that it needs to take ownership of the ports?  I&apos;m not sure if there&apos;s already a convention for such names in the WebKit API.  As written, this seems likely to lead to memory leaks.
&gt; 
&gt; Renamed to messagePortChannels, but yes, a name like &quot;adoptMessagePortChannelArrays&quot; is what we want. In PlatformMessagePortChannel it has a &quot;release&quot; suffix. Shall I use that?

Release can be a good word to indicate transfer of ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593666</commentid>
    <comment_count>62</comment_count>
      <attachid>135151</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-02 12:08:04 -0700</bug_when>
    <thetext>Created attachment 135151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593669</commentid>
    <comment_count>63</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-02 12:12:10 -0700</bug_when>
    <thetext>OK, The impl in WebIntent is now very parallel to the PlatformMessagePortChannel code (and references it; perhaps that&apos;ll help any changes made there propagate).

I used Dmitry&apos;s suggested API method name in this patch, but I agree it might be error-prone. Shall I change it to *release?

(In reply to comment #59)
&gt; (In reply to comment #58)
&gt; &gt; (In reply to comment #50)
&gt; &gt; &gt; (From update of attachment 134338 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; A few more comments.
&gt; &gt; &gt; Darin Fisher will need to look at changes in WebKit/chromium/public/
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1325
&gt; &gt; &gt; &gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; &gt; &gt; 
&gt; &gt; &gt; Debug print.
&gt; 
&gt; Sorry for a bad comment here, I somehow missed that it is in DumpRenderTree
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/webintents/web-intents-invoke-port.html:12
&gt; &gt; &gt; &gt; +        navigator.startActivity(new Intent(&quot;action1&quot;, &quot;mime/type1&quot;, channel.port1, [channel.port1]));
&gt; &gt; &gt; 
&gt; &gt; &gt; Tests for exceptional behavior (see LayoutTests/fast/dom/Window/window-postmessage-args.html for some inspiration)
&gt; &gt; 
&gt; &gt; The exceptional tests there (shouldFail) are for unsupported data types, it looks like to me. Did you have any particular port failure cases in mind? Or do you mean the neutered ArrayBuffer?
&gt; &gt;
&gt; 
&gt; Just unsupported data types, to make sure the exception is propagated correctly (I think it is, looking at the code, but it&apos;s nice to make sure)
&gt; 
&gt; &gt; WRT model MessagePort code, I&apos;m not sure I&apos;m looking in the right place. All the chromium API does is access WebMessagPortChannel (which is purely an interface) and PlatformMessagePortChannel (which is what I&apos;m trying to expose correctly in the CL).
&gt; &gt; 
&gt; &gt; On the chromium side, the code only uses the WebMessagePortChannelImpl class. It grabs the IDs out of there and sends the message on, but I&apos;m not sure of the protocol on the receiving end of how to actually hook it up after that.
&gt; 
&gt; tl;dr: This is a reasonable interface for WebIntent, although I suggets renaming ports to 
&gt; 
&gt; Alright, let&apos;s focus on what you actually need to do :)
&gt; The key thing that Intent class provides (AFAIU) is a package of &quot;stuff&quot; that needs to be transferred to the intent handler, possibly over to the other side of IPC boundary. The similar code currently exists in PlatformMessagePortChannel::postMessageToRemote in Source/WebKit/chromium/src/PlatformMessagePortChannel.cpp. (MessagePortChannel::EventData is in fact a pretty similar package of SSV+MessagePortChannels). You will have to write similar code somewhere where intents are already being IPCd over. 
&gt; 
&gt; What happens in PlatformMessagePortChannel::postMessageToRemote is that WebCore data types are being transferred into chromium-port-specific datatypes, namely SSV goes to WebString (=wire string) and each MessagePortChannel becomes and WebMessagePortChannel. So the transformations is from SSV+MessagePortChannelArray to WebString+WebMessagePortChannelArray. The latter pair is the suitable message to send over the IPC. 
&gt; 
&gt; The API on WebIntent should facilitate doing the same. The user of WebIntent class should be able to obtain a suitable WebString+WebMessagePortChannelArray pair out of it to send down the wire. So the combination of data() + ports() methods on WebIntent looks right. Maybe rename &apos;ports&apos; into &apos;messagePortChannels&apos; though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597008</commentid>
    <comment_count>64</comment_count>
      <attachid>135932</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-05 16:30:47 -0700</bug_when>
    <thetext>Created attachment 135932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597009</commentid>
    <comment_count>65</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-05 16:31:19 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; (In reply to comment #60)
&gt; &gt; (From update of attachment 134338 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134338&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/chromium/public/WebIntent.h:69
&gt; &gt; &gt;&gt; +    WEBKIT_EXPORT WebMessagePortChannelArray* ports() const;
&gt; &gt; &gt; 
&gt; &gt; &gt; Should we pick a name here that makes it more clear when reading the caller that it needs to take ownership of the ports?  I&apos;m not sure if there&apos;s already a convention for such names in the WebKit API.  As written, this seems likely to lead to memory leaks.
&gt; &gt; 
&gt; &gt; Renamed to messagePortChannels, but yes, a name like &quot;adoptMessagePortChannelArrays&quot; is what we want. In PlatformMessagePortChannel it has a &quot;release&quot; suffix. Shall I use that?
&gt; 
&gt; Release can be a good word to indicate transfer of ownership.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597012</commentid>
    <comment_count>66</comment_count>
      <attachid>135932</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-05 16:36:25 -0700</bug_when>
    <thetext>Comment on attachment 135932
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597220</commentid>
    <comment_count>67</comment_count>
      <attachid>135932</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-05 23:20:19 -0700</bug_when>
    <thetext>Comment on attachment 135932
Patch

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

&gt; Source/WebCore/Modules/intents/Intent.cpp:36
&gt; +#include &quot;ScriptExecutionContext.h&quot;

Remove this

&gt; Source/WebCore/Modules/intents/Intent.cpp:41
&gt; +PassRefPtr&lt;Intent&gt; Intent::create(ScriptExecutionContext* context, const String&amp; action, const String&amp; type, PassRefPtr&lt;SerializedScriptValue&gt; data, ExceptionCode&amp; ec)

Why do you need ScriptExecutionContext here? It seems it is not used.

&gt; Source/WebCore/Modules/intents/Intent.cpp:55
&gt; +PassRefPtr&lt;Intent&gt; Intent::create(ScriptExecutionContext* context, const String&amp; action, const String&amp; type, PassRefPtr&lt;SerializedScriptValue&gt; data, const MessagePortArray&amp; ports, ExceptionCode&amp; ec)

Ditto.

&gt; Source/WebCore/Modules/intents/Intent.h:44
&gt; +class ScriptExecutionContext;

Ditto.

&gt; Source/WebCore/Modules/intents/Intent.h:52
&gt; +    static PassRefPtr&lt;Intent&gt; create(ScriptExecutionContext*, const String&amp; action, const String&amp; type, PassRefPtr&lt;SerializedScriptValue&gt; data, ExceptionCode&amp;);
&gt; +    static PassRefPtr&lt;Intent&gt; create(ScriptExecutionContext*, const String&amp; action, const String&amp; type, PassRefPtr&lt;SerializedScriptValue&gt; data, const MessagePortArray&amp; ports, ExceptionCode&amp;);

Ditto.

&gt; Source/WebCore/Modules/intents/Intent.idl:30
&gt; +      CallWith=ScriptExecutionContext,

Remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597227</commentid>
    <comment_count>68</comment_count>
      <attachid>135932</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-05 23:42:42 -0700</bug_when>
    <thetext>Comment on attachment 135932
Patch

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

&gt;&gt; Source/WebCore/Modules/intents/Intent.cpp:41
&gt;&gt; +PassRefPtr&lt;Intent&gt; Intent::create(ScriptExecutionContext* context, const String&amp; action, const String&amp; type, PassRefPtr&lt;SerializedScriptValue&gt; data, ExceptionCode&amp; ec)
&gt; 
&gt; Why do you need ScriptExecutionContext here? It seems it is not used.

You&apos;re totally right. This got fossilized pre-codegen and never removed. Thanks for the catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597396</commentid>
    <comment_count>69</comment_count>
      <attachid>136031</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 09:09:51 -0700</bug_when>
    <thetext>Created attachment 136031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597435</commentid>
    <comment_count>70</comment_count>
      <attachid>136031</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-06 10:08:31 -0700</bug_when>
    <thetext>Comment on attachment 136031
Patch

r+ for the IDL and binding change. I am not familiar with the Intent part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597592</commentid>
    <comment_count>71</comment_count>
      <attachid>136031</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-06 13:14:40 -0700</bug_when>
    <thetext>Comment on attachment 136031
Patch

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

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt; +    delete ports;

This cleans up all the channels in the array?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597602</commentid>
    <comment_count>72</comment_count>
      <attachid>136031</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 13:23:19 -0700</bug_when>
    <thetext>Comment on attachment 136031
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt;&gt; +    delete ports;
&gt; 
&gt; This cleans up all the channels in the array?

I believe so. WebVector::destroy destructs the contents, which ends up in this case calling through to content::~WebMessagePortChannelImpl. There&apos;s not really any other artifacts around to destroy, but if I&apos;m missing something, please let me know. Dmitry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597610</commentid>
    <comment_count>73</comment_count>
      <attachid>136031</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-06 13:28:26 -0700</bug_when>
    <thetext>Comment on attachment 136031
Patch

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

&gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt;&gt;&gt; +    delete ports;
&gt;&gt; 
&gt;&gt; This cleans up all the channels in the array?
&gt; 
&gt; I believe so. WebVector::destroy destructs the contents, which ends up in this case calling through to content::~WebMessagePortChannelImpl. There&apos;s not really any other artifacts around to destroy, but if I&apos;m missing something, please let me know. Dmitry?

WebMessagePortChannelArray is 
   typedef WebVector&lt;class WebMessagePortChannel*&gt; WebMessagePortChannelArray;
i.e. an array of _pointers_ to WebMessagePortChannel. Destroying a vector of pointers does not delete them (does not call the destructors of pointees, only the destructors of pointers themsleves).
Good catch Adam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597616</commentid>
    <comment_count>74</comment_count>
      <attachid>136031</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 13:37:41 -0700</bug_when>
    <thetext>Comment on attachment 136031
Patch

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

&gt;&gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt;&gt;&gt;&gt; +    delete ports;
&gt;&gt;&gt; 
&gt;&gt;&gt; This cleans up all the channels in the array?
&gt;&gt; 
&gt;&gt; I believe so. WebVector::destroy destructs the contents, which ends up in this case calling through to content::~WebMessagePortChannelImpl. There&apos;s not really any other artifacts around to destroy, but if I&apos;m missing something, please let me know. Dmitry?
&gt; 
&gt; WebMessagePortChannelArray is 
&gt;    typedef WebVector&lt;class WebMessagePortChannel*&gt; WebMessagePortChannelArray;
&gt; i.e. an array of _pointers_ to WebMessagePortChannel. Destroying a vector of pointers does not delete them (does not call the destructors of pointees, only the destructors of pointers themsleves).
&gt; Good catch Adam!

Ah, ok. So this really needs to walk the vector and destroy each port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597619</commentid>
    <comment_count>75</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-06 13:41:00 -0700</bug_when>
    <thetext>(In reply to comment #74)
&gt; (From update of attachment 136031 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136031&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt; &gt;&gt;&gt;&gt; +    delete ports;
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This cleans up all the channels in the array?
&gt; &gt;&gt; 
&gt; &gt;&gt; I believe so. WebVector::destroy destructs the contents, which ends up in this case calling through to content::~WebMessagePortChannelImpl. There&apos;s not really any other artifacts around to destroy, but if I&apos;m missing something, please let me know. Dmitry?
&gt; &gt; 
&gt; &gt; WebMessagePortChannelArray is 
&gt; &gt;    typedef WebVector&lt;class WebMessagePortChannel*&gt; WebMessagePortChannelArray;
&gt; &gt; i.e. an array of _pointers_ to WebMessagePortChannel. Destroying a vector of pointers does not delete them (does not call the destructors of pointees, only the destructors of pointers themsleves).
&gt; &gt; Good catch Adam!
&gt; 
&gt; Ah, ok. So this really needs to walk the vector and destroy each port?

Yes :(
(I wish we used RefPtrs in chromium...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597680</commentid>
    <comment_count>76</comment_count>
      <attachid>136068</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 14:50:35 -0700</bug_when>
    <thetext>Created attachment 136068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597683</commentid>
    <comment_count>77</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 14:52:04 -0700</bug_when>
    <thetext>OK, I think this is fixed up. :-/

(In reply to comment #75)
&gt; (In reply to comment #74)
&gt; &gt; (From update of attachment 136031 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136031&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1334
&gt; &gt; &gt;&gt;&gt;&gt; +    delete ports;
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; This cleans up all the channels in the array?
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; I believe so. WebVector::destroy destructs the contents, which ends up in this case calling through to content::~WebMessagePortChannelImpl. There&apos;s not really any other artifacts around to destroy, but if I&apos;m missing something, please let me know. Dmitry?
&gt; &gt; &gt; 
&gt; &gt; &gt; WebMessagePortChannelArray is 
&gt; &gt; &gt;    typedef WebVector&lt;class WebMessagePortChannel*&gt; WebMessagePortChannelArray;
&gt; &gt; &gt; i.e. an array of _pointers_ to WebMessagePortChannel. Destroying a vector of pointers does not delete them (does not call the destructors of pointees, only the destructors of pointers themsleves).
&gt; &gt; &gt; Good catch Adam!
&gt; &gt; 
&gt; &gt; Ah, ok. So this really needs to walk the vector and destroy each port?
&gt; 
&gt; Yes :(
&gt; (I wish we used RefPtrs in chromium...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597688</commentid>
    <comment_count>78</comment_count>
      <attachid>136068</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-06 14:55:30 -0700</bug_when>
    <thetext>Comment on attachment 136068
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597700</commentid>
    <comment_count>79</comment_count>
      <attachid>136068</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-06 15:04:55 -0700</bug_when>
    <thetext>Comment on attachment 136068
Patch

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

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1335
&gt; +    WebMessagePortChannelArray* ports = request.intent().messagePortChannelsRelease();
&gt;      m_currentRequest = request;
&gt; +    if (ports) {
&gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; +        for (size_t i = 0; i &lt; ports-&gt;size(); ++i)
&gt; +            (*ports)[i]-&gt;destroy();

I&apos;m still slightly worried that other clients of this function will have memory leaks, but I&apos;m not sure what we can do about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597702</commentid>
    <comment_count>80</comment_count>
      <attachid>136068</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-06 15:06:22 -0700</bug_when>
    <thetext>Comment on attachment 136068
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1335
&gt;&gt; +            (*ports)[i]-&gt;destroy();
&gt; 
&gt; I&apos;m still slightly worried that other clients of this function will have memory leaks, but I&apos;m not sure what we can do about it.

agree on both counts. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597708</commentid>
    <comment_count>81</comment_count>
      <attachid>136068</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-06 15:10:38 -0700</bug_when>
    <thetext>Comment on attachment 136068
Patch

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

&gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1335
&gt;&gt;&gt; +            (*ports)[i]-&gt;destroy();
&gt;&gt; 
&gt;&gt; I&apos;m still slightly worried that other clients of this function will have memory leaks, but I&apos;m not sure what we can do about it.
&gt; 
&gt; agree on both counts. :-(

Is WebMessagePortChannelArray just a typedef of WebArray?  Can we add a destroy() function to WebMessagePortChannelArray?  Anyway, these are things to consider for future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597713</commentid>
    <comment_count>82</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-06 15:18:14 -0700</bug_when>
    <thetext>(In reply to comment #79)
&gt; (From update of attachment 136068 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136068&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1335
&gt; &gt; +    WebMessagePortChannelArray* ports = request.intent().messagePortChannelsRelease();
&gt; &gt;      m_currentRequest = request;
&gt; &gt; +    if (ports) {
&gt; &gt; +        printf(&quot;Have %zu ports\n&quot;, ports-&gt;size());
&gt; &gt; +        for (size_t i = 0; i &lt; ports-&gt;size(); ++i)
&gt; &gt; +            (*ports)[i]-&gt;destroy();
&gt; 
&gt; I&apos;m still slightly worried that other clients of this function will have memory leaks, but I&apos;m not sure what we can do about it.

It is a worry, but in a typical scenario WebMessagePortChannels contained in an array get entangled with their appropriate MessagePorts and then take care of themselves (delete themselves on destroy). I.e. in a typical scenario, the code that deletes only the array but does not delete the channels will be exactly what is called for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597729</commentid>
    <comment_count>83</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-06 15:26:27 -0700</bug_when>
    <thetext>(In reply to comment #81)
&gt; (From update of attachment 136068 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136068&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1335
&gt; &gt;&gt;&gt; +            (*ports)[i]-&gt;destroy();
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;m still slightly worried that other clients of this function will have memory leaks, but I&apos;m not sure what we can do about it.
&gt; &gt; 
&gt; &gt; agree on both counts. :-(
&gt; 
&gt; Is WebMessagePortChannelArray just a typedef of WebArray?  Can we add a destroy() function to WebMessagePortChannelArray?  Anyway, these are things to consider for future patches.

Yes it is a typedef for WebVector. 
I assume we might want to have something like deleteAll:

    void WebVector&lt;T&gt;::deleteAll() const
    {
        for (size_t i = 0; i &lt; m_size; i++) {
            delete *m_ptr[i];
        }
    }
Only works if T is a pointer.

However it won&apos;t help here because WebMessagePortChannel is a special kind of object that deletes itself. Its destructor is protected. 

Is &apos;destroy&apos; method a typical pattern in chromium? If so, we can have a &apos;destroyAll&apos; method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598858</commentid>
    <comment_count>84</comment_count>
      <attachid>136068</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 18:46:58 -0700</bug_when>
    <thetext>Comment on attachment 136068
Patch

Clearing flags on attachment: 136068

Committed r113656: &lt;http://trac.webkit.org/changeset/113656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598861</commentid>
    <comment_count>85</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 18:47:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598949</commentid>
    <comment_count>86</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2012-04-09 20:26:09 -0700</bug_when>
    <thetext>FYI, this broke Chromium-win. It&apos;s late, so I&apos;m just rolling it out. Please fix it and re-land when you get a chance.

Looks like %zu isn&apos;t supported on Windows:

--- e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-expected.txt 
+++ e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-actual.txt 
@@ -1,5 +1,5 @@
 Received Web Intent: action=action1 type=mime/type1
-Have 1 ports
+Have zu ports
 PASS successfullyParsed is true
 
 TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598981</commentid>
    <comment_count>87</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-09 21:11:29 -0700</bug_when>
    <thetext>Rats. Sorry, James. Will fix.

(In reply to comment #86)
&gt; FYI, this broke Chromium-win. It&apos;s late, so I&apos;m just rolling it out. Please fix it and re-land when you get a chance.
&gt; 
&gt; Looks like %zu isn&apos;t supported on Windows:
&gt; 
&gt; --- e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-expected.txt 
&gt; +++ e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-actual.txt 
&gt; @@ -1,5 +1,5 @@
&gt;  Received Web Intent: action=action1 type=mime/type1
&gt; -Have 1 ports
&gt; +Have zu ports
&gt;  PASS successfullyParsed is true
&gt; 
&gt;  TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599597</commentid>
    <comment_count>88</comment_count>
      <attachid>136533</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-10 13:52:47 -0700</bug_when>
    <thetext>Created attachment 136533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599598</commentid>
    <comment_count>89</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-04-10 13:54:28 -0700</bug_when>
    <thetext>Added an int typecast which should be more printf-cross-platform.

(In reply to comment #87)
&gt; Rats. Sorry, James. Will fix.
&gt; 
&gt; (In reply to comment #86)
&gt; &gt; FYI, this broke Chromium-win. It&apos;s late, so I&apos;m just rolling it out. Please fix it and re-land when you get a chance.
&gt; &gt; 
&gt; &gt; Looks like %zu isn&apos;t supported on Windows:
&gt; &gt; 
&gt; &gt; --- e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-expected.txt 
&gt; &gt; +++ e:\b\build\slave\Webkit_Vista\build\layout-test-results\webintents/web-intents-invoke-port-actual.txt 
&gt; &gt; @@ -1,5 +1,5 @@
&gt; &gt;  Received Web Intent: action=action1 type=mime/type1
&gt; &gt; -Have 1 ports
&gt; &gt; +Have zu ports
&gt; &gt;  PASS successfullyParsed is true
&gt; &gt; 
&gt; &gt;  TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599887</commentid>
    <comment_count>90</comment_count>
      <attachid>136533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 18:15:45 -0700</bug_when>
    <thetext>Comment on attachment 136533
Patch

Clearing flags on attachment: 136533

Committed r113799: &lt;http://trac.webkit.org/changeset/113799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599888</commentid>
    <comment_count>91</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 18:16:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129973</attachid>
            <date>2012-03-02 15:53:23 -0800</date>
            <delta_ts>2012-03-05 11:45:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120302155322.patch</filename>
            <type>text/plain</type>
            <size>7714</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDljYjM5NmU2ZmVlZmZm
OGQ5YWI4MjZjMWZkYTE3MWZjODZkZjFjYi4uMmNhM2UxMGQ2YzkzMzg4MTliOWFkNDhkNTNiMzYx
YWYyYWM3YmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTItMDMtMDEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbGFzdCBFTkFCTEVEKElOREVY
RURfREFUQUJBU0UpIGlmZGVmIGZyb20gV2ViQ29yZSBwcm9wZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0ludGVudC5jcHAKaW5kZXggNjBhMzI0OGIwNzI3NmM4OTIxZWMzNTQyNGQ3
YTdhMWVhYWYyOWM0Yy4uZGNjMjA2ZDE4ZjBiZDVjMjY1MTBkYmRiNWY1NDRhNDFkZDQ3MWNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKQEAgLTM4LDExICsz
OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgZnByaW50ZihzdGRlcnIsICJJbnRlbnQ6OmNyZWF0ZVxuIik7CiAgICAgaWYgKGFjdGlvbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbXB0eSBhY3Rpb25cbiIpOwog
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBp
ZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbXB0eSB0eXBl
XG4iKTsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCmluZGV4IGIzZTIzNjky
YzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLjQ0YmRiZDJjYmUxNDEyYWMyZTBjMTI4
MTNlMjRmM2ExMjNjMGM5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgd2luZG93IHsKICAgaW50ZXJmYWNlIFsK
ICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAgICAgQ29uc3RydWN0b3IoaW4gRE9N
U3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNO
dWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSksCisgICAgICBDdXN0b21Db25z
dHJ1Y3RvciwKKyAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBhY3Rpb24sIGluIERPTVN0
cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gU2VyaWFsaXplZFNj
cmlwdFZhbHVlIGRhdGEsIGluIE9wdGlvbmFsIEFycmF5IHRyYW5zZmVyTWFwKSwKICAgICAgIENv
bnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiAgIF0gSW50ZW50IHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTk4OGVmZTc3
ZmZjM2U1Y2E0NGIwN2JkMzVkNmM1OTllMDI1OWNjMS4uNjI2ZDlkM2FkZjVkMTliN2I4ZjM4ZmJl
ODljMjQ3MWNhZmFmNDcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTkzMCw2ICsxOTMwLDcgQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVs
Q29uc3RydWN0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjY0YTgzMjllZGZiYzhiN2Qy
YmYzMWQxODc0M2E2YWQyZDRiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUsIElu
Yy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGVudC5oIgorCisjaW5jbHVkZSAiQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQu
aCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKKyNpbmNsdWRlICJWOEludGVudC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNs
dWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlbnQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBmcHJpbnRmKHN0ZGVy
ciwgIkNvbnN0cnVjdG9yIGZvciBpbnRlbnRcbiIpOworICAgIElOQ19TVEFUUygiSW50ZW50LkNv
bnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJJbnRlbnQgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBh
cyBhIGZ1bmN0aW9uIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJJbnRlbnQgY29uc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgd2l0aCBh
dCBsZWFzdCBhY3Rpb24gYW5kIHR5cGUiKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gNCkK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyB0byBpbnRlbnQg
Y29uc3RydWN0b3IiKTsKKworICAgIFN0cmluZyBhY3Rpb24gPSB2OFZhbHVlVG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgIFN0cmluZyB0eXBlID0gdjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhh
cmdzWzFdKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbnRlbnREYXRhOwor
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMikKKyAgICB7CisgICAgICAgIC8vIE9ubHkgYWN0
aW9uL3R5cGUuIE5lZWQgZW1wdHkgcGF5bG9hZCBkYXRhLgorICAgICAgICBpbnRlbnREYXRhID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSA9PSAzKQorICAgIHsKKyAgICAgICAgLy8gSGF2ZSBwYXlsb2FkIGRhdGEuCisgICAg
ICAgIGJvb2wgZGlkVGhyb3c7CisgICAgICAgIGludGVudERhdGEgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShhcmdzWzJdLCAwLCAwLCBkaWRUaHJvdyk7CisgICAgICAgIGlmIChkaWRU
aHJvdykKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJDb3VsZCBub3Qgc2VyaWFsaXpl
IGludGVudCBkYXRhIik7CisgICAgfQorCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gNCkKKyAg
ICB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiNCBhcmdzXG4iKTsKKyAgICAgICAgLy8gV2Ug
aGF2ZSBhIHRyYW5zZmVyIG1hcC4KKyAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9y
dEFycmF5OworICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CisgICAg
ICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1szXSwgbWVzc2FnZVBvcnRBcnJheSwg
YXJyYXlCdWZmZXJBcnJheSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNm
ZXIgbWFwIG11c3QgY29udGFpbiBNZXNzYWdlUG9ydHMgb3IgQXJyYXlCdWZmZXJzIik7CisKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJHb3QgJXp1IHBvcnRcbiIsIG1lc3NhZ2VQb3J0QXJyYXku
c2l6ZSgpKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJHb3QgJXp1IGFycmJ1ZlxuIiwgYXJy
YXlCdWZmZXJBcnJheS5zaXplKCkpOworICAgICAgICBib29sIGRpZFRocm93OworICAgICAgICAv
L2ludGVudERhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzJdLCAmbWVz
c2FnZVBvcnRBcnJheSwgJmFycmF5QnVmZmVyQXJyYXksIGRpZFRocm93KTsKKyAgICAgICAgaW50
ZW50RGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMl0sICZtZXNzYWdl
UG9ydEFycmF5LCAwLCBkaWRUaHJvdyk7CisgICAgICAgIGlmIChkaWRUaHJvdykgeworICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUiBTRVJJQUxJWklOR1xuIik7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigiQ291bGQgbm90IHNlcmlhbGl6ZSBpbnRlbnQgZGF0YSIpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZnByaW50ZihzdGRlcnIsICJNYWtpbmcgaW50ZW50XG4i
KTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRhdGEgJXNcbiIsIGludGVudERhdGEtPnRvV2lyZVN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJl
ZlB0cjxJbnRlbnQ+IGludGVudCA9IEludGVudDo6Y3JlYXRlKGFjdGlvbiwgdHlwZSwgaW50ZW50
RGF0YSwgZWMpOworICAgIGlmIChlYyAhPSAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
V2hhPz8/XG4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOworICAgIH0KKworICAg
IHJldHVybiB0b1Y4KGludGVudC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130170</attachid>
            <date>2012-03-05 11:46:01 -0800</date>
            <delta_ts>2012-03-12 13:21:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120305114559.patch</filename>
            <type>text/plain</type>
            <size>6857</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3MzEzOGRjYTg4ZGY4
MzMzYjhlN2Y5ZmYwZDYyNmUyZTk3NmY3MC4uYzkzYmNiMWIxMTg5NTA2MmM3Nzk1ZjVmMDdjYzcw
OGE0NTA4OWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTItMDMtMDEgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIENocm9tZSAxOCBmYWlscyBodG1sNXRlc3Qu
Y29tIFhIUiBCbG9iIHJlc3BvbnNlIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5pZGwKaW5kZXggYjNlMjM2OTJjMGUwODg0MWRlMTM3NTVmNWUyNWFlZTA0M2Q3M2Ey
Zi4uNzBlYTgzOGRhZTdhNmE2MzBlZjE4Y2IwYWE0ZWQxODRhNjA3YmE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKQEAgLTI2LDcgKzI2LDggQEAKIG1vZHVs
ZSB3aW5kb3cgewogICBpbnRlcmZhY2UgWwogICAgICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMs
Ci0gICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlw
ZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBkYXRhKSwKKyAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgQ29uc3RydWN0b3IoaW4g
RE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0
SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSwgaW4gW09wdGlvbmFsXSBB
cnJheSB0cmFuc2Zlck1hcCksCiAgICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICBd
IEludGVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDY0ZDA0ZWNmNTU2ZWZmM2I3ZjA1MjJiMDFjM2NlODgyZDNjYTI5
MTcuLmY3NDAwOTNjNjkxZTBkNTNmNWEwZjQzNGJjZTQ0MWNjMWY2YmNjZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwMDIsNiArMjAwMiw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNDVhNmY0MzYwZjRkMzQ0NDVjMTEzYzljZDUzYWJjNWM2Y2FiZmRjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3Vz
dG9tLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOElu
dGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSW50ZW50LmgiCisj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIK
KyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVk
ZSAiVjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
SW50ZW50LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5v
dCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAg
aWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4
aXN0aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiA0
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIHRvIGludGVu
dCBjb25zdHJ1Y3RvciIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFy
YW1ldGVyPD4sIGFjdGlvbiwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFBhcmFtZXRlcjw+LCB0eXBlLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGludGVudERhdGE7CisgICAgYm9vbCBkYXRhRGlkVGhyb3cgPSBmYWxzZTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA9PSAyKSB7CisgICAgICAgIC8vIE9ubHkgYWN0aW9uL3R5cGUuIE5lZWQgZW1w
dHkgcGF5bG9hZCBkYXRhLgorICAgICAgICBpbnRlbnREYXRhID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAzKSB7Cisg
ICAgICAgIC8vIEhhdmUgcGF5bG9hZCBkYXRhLgorICAgICAgICBpbnRlbnREYXRhID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1syXSwgMCwgMCwgZGF0YURpZFRocm93KTsKKyAg
ICB9CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSA0KSB7CisgICAgICAgIC8vIFdlIGhhdmUg
YSB0cmFuc2ZlciBtYXAuCisgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgbWVzc2FnZVBvcnRBcnJh
eTsKKyAgICAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlckFycmF5OworICAgICAgICBp
ZiAoIWV4dHJhY3RUcmFuc2ZlcmFibGVzKGFyZ3NbM10sIG1lc3NhZ2VQb3J0QXJyYXksIGFycmF5
QnVmZmVyQXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zZmVyIG1h
cCBtdXN0IGNvbnRhaW4gTWVzc2FnZVBvcnRzIG9yIEFycmF5QnVmZmVycyIpOworCisgICAgICAg
IGludGVudERhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzJdLCAmbWVz
c2FnZVBvcnRBcnJheSwgJmFycmF5QnVmZmVyQXJyYXksIGRhdGFEaWRUaHJvdyk7CisgICAgfQor
CisgICAgaWYgKGRhdGFEaWRUaHJvdykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkNvdWxk
IG5vdCBzZXJpYWxpemUgaW50ZW50IGRhdGEiKTsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGltcGwg
PSBJbnRlbnQ6OmNyZWF0ZShhY3Rpb24sIHR5cGUsIGludGVudERhdGEsIGVjKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRE
T01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpbXBsLT5yZWYoKTsK
KyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLmdldCgpLCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsKKyAgICByZXR1cm4gYXJn
cy5Ib2xkZXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9JTlRFTlRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131394</attachid>
            <date>2012-03-12 13:22:03 -0700</date>
            <delta_ts>2012-03-26 16:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120312132202.patch</filename>
            <type>text/plain</type>
            <size>10238</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ3ZGVhNDA5OGEwYzQ2
ODVhNGQwMDBlMmNhNTVhZWM5NTAwYTNmOC4uN2NkNmRhYTY2NTdiMDc2ZWI5OGFhZDI3YmY3NzU1
ZGMxYzkwNjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTItMDMtMTEgIFZpY3RvciBDYXJi
dW5lICA8dmNhcmJ1bmVAYWRvYmUuY29tPgogCiAgICAgICAgIFRoZSBtYWluIGNvZGUgc3RydWN0
dXJlIGZvciBwbGFjaW5nIGZ1dHVyZSB0ZXh0IHRyYWNrIGN1ZSByZW5kZXJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKaW5kZXggNjBhMzI0OGIwNzI3NmM4OTIx
ZWMzNTQyNGQ3YTdhMWVhYWYyOWM0Yy4uYzdkNDczZDNmMDg2YWRjNjlhYTc1NGVlZWViNGU1OTIw
NTkyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKQEAg
LTQ3LDkgKzQ3LDI3IEBAIFBhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAorICAgIGZwcmludGYoc3RkZXJyLCAiRGF0YSBpcyAlc1xuIiwgZGF0YS0+dG9X
aXJlU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
dGVudChhY3Rpb24sIHR5cGUsIGRhdGEpKTsKIH0KIAorUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+IHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYWN0aW9uLmlzRW1w
dHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkRhdGEgaXMg
JXNcbiIsIGRhdGEtPnRvV2lyZVN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhLCBwb3J0cykpOworfQorCiBJ
bnRlbnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKICAgICA6IG1fYWN0aW9uKGFj
dGlvbikKICAgICAsIG1fdHlwZSh0eXBlKQpAQCAtNjAsNiArNzgsMTcgQEAgSW50ZW50OjpJbnRl
bnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2MKICAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxs
VmFsdWUoKTsKIH0KIAorSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCisgICAgOiBtX2FjdGlvbihhY3Rpb24p
CisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fcG9ydHMocG9ydHMpCit7CisgICAgaWYgKGRh
dGEpCisgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdp
cmUoZGF0YS0+dG9XaXJlU3RyaW5nKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKK30KKwogY29uc3QgU3RyaW5nJiBJbnRl
bnQ6OmFjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCmluZGV4IDk2YmViZDZlNTY3YWJmMTRmMTBjMTFmNjA3
MzMzZDk2MzllNmU2YzguLmQwNTFjYWNlNjhlZDBmZWNhMzdhNzA2NGI1MGRiYmEyNTVmNTU2YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Niw2ICs0Nyw3IEBAIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiBjbGFzcyBJbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlbnQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnRlbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEludGVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IHBvcnRzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBjb25zdCBTdHJpbmcm
IGFjdGlvbigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0OwpAQCAtNTYs
MTAgKzU4LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnRlbnQoY29uc3QgU3RyaW5n
JiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEpOworICAgIEludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyk7CiAKICAgICBTdHJpbmcgbV9hY3Rpb247CiAg
ICAgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2Rh
dGE7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVu
dHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRs
CmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLjcwZWE4Mzhk
YWU3YTZhNjMwZWYxOGNiMGFhNGVkMTg0YTYwN2JhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgd2luZG93IHsK
ICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAgICAgQ29u
c3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSksCisg
ICAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBh
Y3Rpb24sIGluIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmlu
Z10gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIGluIFtPcHRpb25hbF0gQXJyYXkgdHJhbnNm
ZXJNYXApLAogICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA3Njg1NzI2NzRmMTVlYjNjOWEwMDIxMzFiZDA3M2ZlYzExMTRkZTdlLi45NzYxZmZl
Yzk4Y2I0ZWVjYzdlMDA1NjI2YTRhNDczYTE4ZTI2NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
MDY2LDYgKzIwNjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2
QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQz
MkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50
OEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50
ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQx
MTU5ZTNlNDI0NjRlOGJjNWNjMzkyZjAzYzRiNjYxNzQ5OTY5YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbnRlbnQuaCIKKwor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkludGVudC5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCisjaW5jbHVkZSAi
VjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0
aWVzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkludGVudC5Db25z
dHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVk
IGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIGlmIChDb25zdHJ1
Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVj
dCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gNCkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyB0byBpbnRlbnQgY29uc3RydWN0
b3IiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBh
Y3Rpb24sIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8PiwgdHlwZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbnRlbnREYXRh
OworICAgIGJvb2wgZGF0YURpZFRocm93ID0gZmFsc2U7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PT0gMikgeworICAgICAgICAvLyBPbmx5IGFjdGlvbi90eXBlLiBOZWVkIGVtcHR5IHBheWxvYWQg
ZGF0YS4KKyAgICAgICAgaW50ZW50RGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCk7CisgICAgfQorCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMykgeworICAgICAgICAvLyBI
YXZlIHBheWxvYWQgZGF0YS4KKyAgICAgICAgaW50ZW50RGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGFyZ3NbMl0sIDAsIDAsIGRhdGFEaWRUaHJvdyk7CisgICAgfQorCisgICAg
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzOworICAgIGlmIChhcmdzLkxlbmd0aCgpID09
IDQpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSBhIHRyYW5zZmVyIG1hcC4KKyAgICAgICAgTWVzc2Fn
ZVBvcnRBcnJheSBtZXNzYWdlUG9ydEFycmF5OworICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFy
cmF5QnVmZmVyQXJyYXk7CisgICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1sz
XSwgbWVzc2FnZVBvcnRBcnJheSwgYXJyYXlCdWZmZXJBcnJheSkpCisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiVHJhbnNmZXIgbWFwIG11c3QgY29udGFpbiBNZXNzYWdlUG9ydHMgb3Ig
QXJyYXlCdWZmZXJzIik7CisKKyAgICAgICAgaW50ZW50RGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGFyZ3NbMl0sICZtZXNzYWdlUG9ydEFycmF5LCAmYXJyYXlCdWZmZXJBcnJh
eSwgZGF0YURpZFRocm93KTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKCZtZXNzYWdlUG9ydEFy
cmF5LCBlYyk7CisgICAgICAgIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKihn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgIH0K
KworICAgIGlmIChkYXRhRGlkVGhyb3cpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJDb3Vs
ZCBub3Qgc2VyaWFsaXplIGludGVudCBkYXRhIik7CisKKyAgICBSZWZQdHI8SW50ZW50PiBpbXBs
ID0gSW50ZW50OjpjcmVhdGUoYWN0aW9uLCB0eXBlLCBpbnRlbnREYXRhLCBwb3J0cy5yZWxlYXNl
KCksIGVjKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRl
cigpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOworCisgICAg
VjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsK
KyAgICBpbXBsLT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9i
amVjdChpbXBsLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIp
KTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133932</attachid>
            <date>2012-03-26 16:57:48 -0700</date>
            <delta_ts>2012-03-27 11:18:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120326165747.patch</filename>
            <type>text/plain</type>
            <size>6822</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MTJjYWVkYTViOWI4
ZWJkYjE4MWJlNGUxZWU5Zjk3N2ZiNDQwZi4uZjk4MDViY2I5ODQ4ZDI5MzIwNjMzODIwMDBhN2Zm
NjgxYjFmM2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRl
bnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisK
IDIwMTItMDMtMjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUkVHUkVTU0lPTl0gV29ya2Fyb3VuZHMgZm9yIHNlY3Vy
aXR5IGNoZWNrcyB3aGVuIHJldHJpZXZpbmcgc3R5bGVzaGVldCBydWxlIGxpc3RzIGFyZSBicm9r
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKaW5kZXggNjBhMzI0
OGIwNzI3NmM4OTIxZWMzNTQyNGQ3YTdhMWVhYWYyOWM0Yy4uMzRhNzhhMTk2MGRmMDEwNTRhYTU3
MjBhZTRmNzM5NGU4OTAyZTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDcsOSArNDgsMzAgQEAgUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3MKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCisgICAgZnByaW50ZihzdGRlcnIsICJEYXRhIGlzICVzXG4iLCBkYXRhLT50b1dp
cmVTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50
ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSkpOwogfQogCitQYXNzUmVmUHRyPEludGVudD4gSW50ZW50
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkm
IHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkg
eworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkRhdGEgaXMgJXNcbiIs
IGRhdGEtPnRvV2lyZVN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBv
cnRzKCZwb3J0cywgZWMpOworICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBlbnRhbmdsZWRQ
b3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCooZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSwgZW50YW5nbGVkUG9ydHMucmVsZWFzZSgpKSk7Cit9
CisKIEludGVudDo6SW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKQogICAgIDogbV9hY3Rp
b24oYWN0aW9uKQogICAgICwgbV90eXBlKHR5cGUpCkBAIC02MCw2ICs4MiwxNyBAQCBJbnRlbnQ6
OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTYwogICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bGxWYWx1ZSgpOwogfQogCitJbnRlbnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKKyAgICA6IG1fYWN0aW9uKGFj
dGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9wb3J0cyhwb3J0cykKK3sKKyAgICBp
ZiAoZGF0YSkKKyAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVG
cm9tV2lyZShkYXRhLT50b1dpcmVTdHJpbmcoKSk7CisgICAgZWxzZQorICAgICAgICBtX2RhdGEg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOworfQorCiBjb25zdCBTdHJpbmcm
IEludGVudDo6YWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKaW5kZXggOTZiZWJkNmU1NjdhYmYxNGYxMGMx
MWY2MDczMzNkOTYzOWU2ZTZjOC4uM2YzZTlkYTY3ZmE4OGJlYjA1Yjc3NDQ5ODY5MjMwZGRlMzk5
MTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaApAQCAtMzEsNiAr
MzEsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCisjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ2LDYgKzQ3LDcgQEAgdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIGNsYXNzIEludGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPElu
dGVudD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVudD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW50ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYg
dHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IE1lc3Nh
Z2VQb3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBjb25zdCBTdHJpbmcm
IGFjdGlvbigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0OwpAQCAtNTYs
MTAgKzU4LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnRlbnQoY29uc3QgU3RyaW5n
JiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEpOworICAgIEludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyk7CiAKICAgICBTdHJpbmcgbV9hY3Rpb247CiAg
ICAgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2Rh
dGE7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVu
dHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRs
CmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLmUxNmQ4ZDgz
ZmQ3NTQxMGY2MDFjNzRhMDQ1ZmNjZWQzMzBkOWExYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBtb2R1bGUgd2luZG93IHsK
ICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAgICAgQ29u
c3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSksCisg
ICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlwZSwg
aW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmcsIFRyYW5zZmVyTGlzdD10cmFuc2Zlck1h
cF0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWRdIEFycmF5IHRyYW5zZmVyTWFwKSwKICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0
aW9uCiAgIF0gSW50ZW50IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBh
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IDM0ZWRkOTA2NjAzMjQyM2ViMGQwZWU1MmMxMmUyYmIxMWUyMTEwZGQu
LjE2MzBhNDdjZDI2YzgwNzkzMWRjNWY5Yjc3OGE3ZjRiYmIyMzcxYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNjAx
LDcgKzE2MDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICAgICAgZGllICJJREwgZXJyb3I6IFRyYW5zZmVyTGlzdCByZWZlcnMgdG8gYSBub25leGlzdGVu
dCBhcmd1bWVudCI7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkFycmF5QnVmZmVyLmgiKTsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygid3RmL0FycmF5QnVmZmVyLmgiKTsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwogICAgICAgICAgICAgICAgICRUcmFuc2Zlckxpc3RO
YW1lID0gdWNmaXJzdCgkdHJhbnNmZXJMaXN0TmFtZSk7CiAgICAgICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydEFycmF5
JFRyYW5zZmVyTGlzdE5hbWU7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAyZjdlODVjMWY0YzBlZGUxNWVjZTRl
ODU2OGVkNTIyM2ExZmI0ODYwLi41ZmQ0NTAyMzI5NjA1NzUyYTY0ZjI3ODg4ZWM3OGE4NTFjYmU0
MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAi
VjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134102</attachid>
            <date>2012-03-27 11:18:52 -0700</date>
            <delta_ts>2012-03-27 14:11:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120327111851.patch</filename>
            <type>text/plain</type>
            <size>7289</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MTJjYWVkYTViOWI4
ZWJkYjE4MWJlNGUxZWU5Zjk3N2ZiNDQwZi4uZjk4MDViY2I5ODQ4ZDI5MzIwNjMzODIwMDBhN2Zm
NjgxYjFmM2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRl
bnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisK
IDIwMTItMDMtMjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUkVHUkVTU0lPTl0gV29ya2Fyb3VuZHMgZm9yIHNlY3Vy
aXR5IGNoZWNrcyB3aGVuIHJldHJpZXZpbmcgc3R5bGVzaGVldCBydWxlIGxpc3RzIGFyZSBicm9r
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKaW5kZXggNjBhMzI0
OGIwNzI3NmM4OTIxZWMzNTQyNGQ3YTdhMWVhYWYyOWM0Yy4uZWY1NmUxNmE1YmZlYzgzMzU3Zjc2
YzJlYzA1YTJhNmFjZjQ1YzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5jcHAKQEAgLTMyLDExICszMiwxMyBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEludGVudD4g
SW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CkBAIC01MCwxMiArNTIsNDAgQEAgUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3MKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRhdGEpKTsKIH0KIAorUGFzc1JlZlB0
cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHR5
cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKCZwb3J0cywgZWMpOworICAgIE93blB0
cjxNZXNzYWdlUG9ydEFycmF5PiBlbnRhbmdsZWRQb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKCpjb250ZXh0LCBjaGFubmVscy5yZWxlYXNlKCkpOworCisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhLCBlbnRhbmdsZWRQb3J0cy5yZWxlYXNl
KCkpKTsKK30KKwogSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCiAgICAg
OiBtX2FjdGlvbihhY3Rpb24pCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShk
YXRhLT50b1dpcmVTdHJpbmcoKSk7CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgZWxzZQor
ICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOworfQor
CitJbnRlbnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cykKKyAgICA6IG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdHlw
ZSh0eXBlKQorICAgICwgbV9wb3J0cyhwb3J0cykKK3sKKyAgICBpZiAoZGF0YSkKKyAgICAgICAg
bV9kYXRhID0gZGF0YTsKICAgICBlbHNlCiAgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVsbFZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50
ZW50LmgKaW5kZXggOTZiZWJkNmU1NjdhYmYxNGYxMGMxMWY2MDczMzNkOTYzOWU2ZTZjOC4uMzBl
NGM4ZjY1ODY2MTUxODk2ODA0ZGQ1ZWU4YTdmZTZjYWE4N2NiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnQuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTM5LDEzICs0MCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEludGVudCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEludGVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVu
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdDsKICAgICBjb25zdCBT
dHJpbmcmIHR5cGUoKSBjb25zdDsKQEAgLTU2LDEwICs1OSwxMiBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICBJbnRlbnQoY29u
c3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMp
OwogCiAgICAgU3RyaW5nIG1fYWN0aW9uOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhOworICAgIE93blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBtX3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbAppbmRleCBiM2UyMzY5MmMwZTA4ODQxZGUxMzc1
NWY1ZTI1YWVlMDQzZDczYTJmLi5hOGQ0YjJlMzI1YWFhNjQ4MWEzNTAwMGFjMTAzZDYwMzZlMTlk
MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbApAQCAtMjYs
NyArMjYsOCBAQAogbW9kdWxlIHdpbmRvdyB7CiAgIGludGVyZmFjZSBbCiAgICAgICBDb25kaXRp
b25hbD1XRUJfSU5URU5UUywKLSAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBhY3Rpb24s
IGluIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGRhdGEpLAorICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5n
IGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3Ry
aW5nLCBUcmFuc2Zlckxpc3Q9dHJhbnNmZXJNYXBdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRh
LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlck1hcCksCisg
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgQ29uc3RydWN0b3JS
YWlzZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzRlZGQ5MDY2MDMyNDIzZWIwZDBlZTUyYzEyZTJi
YjExZTIxMTBkZC4uMTYzMGE0N2NkMjZjODA3OTMxZGM1ZjliNzc4YTdmNGJiYjIzNzFjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KQEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBh
IG5vbmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRy
YW5zZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3Nh
Z2VQb3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDJmN2U4NWMxZjRj
MGVkZTE1ZWNlNGU4NTY4ZWQ1MjIzYTFmYjQ4NjAuLjVmZDQ1MDIzMjk2MDU3NTJhNjRmMjc4ODhl
Yzc4YTg1MWNiZTQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134132</attachid>
            <date>2012-03-27 14:11:59 -0700</date>
            <delta_ts>2012-03-28 11:03:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120327141158.patch</filename>
            <type>text/plain</type>
            <size>7232</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MTJjYWVkYTViOWI4
ZWJkYjE4MWJlNGUxZWU5Zjk3N2ZiNDQwZi4uZjk4MDViY2I5ODQ4ZDI5MzIwNjMzODIwMDBhN2Zm
NjgxYjFmM2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRl
bnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisK
IDIwMTItMDMtMjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUkVHUkVTU0lPTl0gV29ya2Fyb3VuZHMgZm9yIHNlY3Vy
aXR5IGNoZWNrcyB3aGVuIHJldHJpZXZpbmcgc3R5bGVzaGVldCBydWxlIGxpc3RzIGFyZSBicm9r
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKaW5kZXggNjBhMzI0
OGIwNzI3NmM4OTIxZWMzNTQyNGQ3YTdhMWVhYWYyOWM0Yy4uZTAzOTJlYjU3YmUwZTM1MzZlNGEy
ZWMyZmU3MjFiM2UyOTkwZjllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5jcHAKQEAgLTMyLDExICszMiwxMyBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEludGVudD4g
SW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CkBAIC01MCwxMiArNTIsMzkgQEAgUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3MKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRhdGEpKTsKIH0KIAorUGFzc1JlZlB0
cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHR5
cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKCZwb3J0cywgZWMpOworCisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhLCBjaGFubmVscy5yZWxl
YXNlKCkpKTsKK30KKwogSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCiAg
ICAgOiBtX2FjdGlvbihhY3Rpb24pCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICBpZiAoZGF0
YSkKLSAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZShkYXRhLT50b1dpcmVTdHJpbmcoKSk7CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgZWxz
ZQorICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwor
fQorCitJbnRlbnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydHMpCisgICAgOiBtX2FjdGlvbihhY3Rpb24pCisg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fcG9ydHMocG9ydHMpCit7CisgICAgaWYgKGRhdGEp
CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgZWxzZQogICAgICAgICBtX2RhdGEgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5oCmluZGV4IDk2YmViZDZlNTY3YWJmMTRmMTBjMTFmNjA3MzMzZDk2Mzll
NmU2YzguLjEzMjViNzA4MzNkNDNkMGVkZjFlYWZmMzdlMDY5ZWYxMzkyN2U2MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKQEAgLTMxLDYgKzMxLDggQEAKIAogI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0z
OSwxMyArNDEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRl
bnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnRlbnQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEludGVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVu
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkg
Y29uc3Q7CkBAIC01NiwxMCArNjAsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEludGVu
dChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7CisgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cyk7CiAKICAg
ICBTdHJpbmcgbV9hY3Rpb247CiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBtX3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbAppbmRleCBiM2UyMzY5MmMwZTA4ODQxZGUxMzc1
NWY1ZTI1YWVlMDQzZDczYTJmLi5hOGQ0YjJlMzI1YWFhNjQ4MWEzNTAwMGFjMTAzZDYwMzZlMTlk
MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbApAQCAtMjYs
NyArMjYsOCBAQAogbW9kdWxlIHdpbmRvdyB7CiAgIGludGVyZmFjZSBbCiAgICAgICBDb25kaXRp
b25hbD1XRUJfSU5URU5UUywKLSAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBhY3Rpb24s
IGluIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGRhdGEpLAorICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5n
IGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3Ry
aW5nLCBUcmFuc2Zlckxpc3Q9dHJhbnNmZXJNYXBdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRh
LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlck1hcCksCisg
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgQ29uc3RydWN0b3JS
YWlzZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzRlZGQ5MDY2MDMyNDIzZWIwZDBlZTUyYzEyZTJi
YjExZTIxMTBkZC4uMTYzMGE0N2NkMjZjODA3OTMxZGM1ZjliNzc4YTdmNGJiYjIzNzFjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KQEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBh
IG5vbmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRy
YW5zZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3Nh
Z2VQb3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDJmN2U4NWMxZjRj
MGVkZTE1ZWNlNGU4NTY4ZWQ1MjIzYTFmYjQ4NjAuLjVmZDQ1MDIzMjk2MDU3NTJhNjRmMjc4ODhl
Yzc4YTg1MWNiZTQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134338</attachid>
            <date>2012-03-28 11:03:46 -0700</date>
            <delta_ts>2012-04-02 11:39:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120328110345.patch</filename>
            <type>text/plain</type>
            <size>12426</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MTJjYWVkYTViOWI4
ZWJkYjE4MWJlNGUxZWU5Zjk3N2ZiNDQwZi4uYzM4ZmYxODBhZjFkMTdjYWU1ODYxNzA1NDVhOWYx
YmIyZDQwMzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yLgorCWh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisJVGhpcyBhZGRz
IHRoZSBhYmlsaXR5IHRvIHBhc3MgdHJhbnNmZXJhYmxlcyAoaS5lLiBNZXNzYWdlUG9ydHMpCisJ
dGhyb3VnaCB3ZWIgaW50ZW50cywgYW5kIHB1dHMgdGhlIGNhbGxpbmcgY29udmVudGlvbiBpbiBs
aW5lCisJd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBzcGVjOgorCWh0dHA6Ly9kZXYudzMub3JnL2h0
bWw1L3Bvc3Rtc2cvCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbDoKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50
ZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKwogMjAxMi0wMy0yNiAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtSRUdSRVNTSU9OXSBXb3JrYXJvdW5kcyBmb3Igc2VjdXJpdHkgY2hlY2tzIHdoZW4gcmV0
cmlldmluZyBzdHlsZXNoZWV0IHJ1bGUgbGlzdHMgYXJlIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ludGVudHMvSW50ZW50LmNwcAppbmRleCA2MGEzMjQ4YjA3Mjc2Yzg5MjFlYzM1NDI0
ZDdhN2ExZWFhZjI5YzRjLi42YjE2OTkwMzJlNDI3OGU3ZWIzODU4YWY4MjIxODMyYjQ2ZThjMzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcApAQCAtMzIsMTEg
KzMyLDEzIEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEludGVu
dD4gSW50ZW50OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChhY3Rpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTUwLDEyICs1MiwzOSBA
QCBQYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzcwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50ZW50
KGFjdGlvbiwgdHlwZSwgZGF0YSkpOwogfQogCitQYXNzUmVmUHRyPEludGVudD4gSW50ZW50Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRp
c2VudGFuZ2xlUG9ydHMoJnBvcnRzLCBlYyk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
dGVudChhY3Rpb24sIHR5cGUsIGRhdGEsIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworfQorCiBJbnRl
bnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKICAgICA6IG1fYWN0aW9uKGFjdGlv
bikKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAgIGlmIChkYXRhKQotICAgICAgICBtX2RhdGEg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEtPnRvV2lyZVN0cmlu
ZygpKTsKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7Cit9CisKK0ludGVudDo6SW50ZW50
KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBwb3J0cykKKyAgICA6IG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQor
ICAgICwgbV9wb3J0cyhwb3J0cykKK3sKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9kYXRhID0g
ZGF0YTsKICAgICBlbHNlCiAgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
bnVsbFZhbHVlKCk7CiB9CkBAIC03NSw2ICsxMDQsMTEgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBJbnRlbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiB9CiAKK01l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBJbnRlbnQ6Om1lc3NhZ2VQb3J0cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcG9ydHMuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50
cy9JbnRlbnQuaAppbmRleCA5NmJlYmQ2ZTU2N2FiZjE0ZjEwYzExZjYwNzMzM2Q5NjM5ZTZlNmM4
Li5kOTg3YzQ4MmI1M2UyYmQ2ODFjM2I4NmQxMWU0ZTY5MTA4ZTIyMGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCiAKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzksMTMg
KzQxLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKIAogY2xhc3MgSW50ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnRlbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnRlbnQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNv
bnN0IE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBjb25z
dCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0
OwpAQCAtNTQsMTIgKzU4LDE3IEBAIHB1YmxpYzoKICAgICBpbnQgaWRlbnRpZmllcigpIGNvbnN0
OwogICAgIHZvaWQgc2V0SWRlbnRpZmllcihpbnQpOwogCisgICAgLy8gTWFrZSBhbiBhY2Nlc3Nv
ciBmb3IgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgaW5zdGVhZD8KKyAgICBNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW50
ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKTsKIAog
ICAgIFN0cmluZyBtX2FjdGlvbjsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YTsKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEz
NzU1ZjVlMjVhZWUwNDNkNzNhMmYuLjIyMTQ5MzdiNzQxODczZTZhM2MwOTQ1OTUyZDkyOGE4MTJk
ZDEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0y
Niw3ICsyNiw4IEBACiBtb2R1bGUgd2luZG93IHsKICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRp
dGlvbmFsPVdFQl9JTlRFTlRTLAotICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlv
biwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSksCisgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJp
bmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxT
dHJpbmcsIFRyYW5zZmVyTGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3Qp
LAorICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAgIENvbnN0cnVj
dG9yUmFpc2VzRXhjZXB0aW9uCiAgIF0gSW50ZW50IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDM0ZWRkOTA2NjAzMjQyM2ViMGQwZWU1MmMx
MmUyYmIxMWUyMTEwZGQuLjE2MzBhNDdjZDI2YzgwNzkzMWRjNWY5Yjc3OGE3ZjRiYmIyMzcxYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
ICAgICAgICAgICAgICAgICAgICAgZGllICJJREwgZXJyb3I6IFRyYW5zZmVyTGlzdCByZWZlcnMg
dG8gYSBub25leGlzdGVudCBhcmd1bWVudCI7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkFycmF5QnVmZmVyLmgiKTsKKyAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygid3RmL0FycmF5QnVmZmVyLmgiKTsKICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwogICAgICAgICAgICAgICAg
ICRUcmFuc2Zlckxpc3ROYW1lID0gdWNmaXJzdCgkdHJhbnNmZXJMaXN0TmFtZSk7CiAgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgTWVzc2FnZVBvcnRBcnJheSBt
ZXNzYWdlUG9ydEFycmF5JFRyYW5zZmVyTGlzdE5hbWU7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAyZjdlODVj
MWY0YzBlZGUxNWVjZTRlODU2OGVkNTIyM2ExZmI0ODYwLi41ZmQ0NTAyMzI5NjA1NzUyYTY0ZjI3
ODg4ZWM3OGE4NTFjYmU0MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi0jaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC0zNCw2ICszMyw3
IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRl
eHQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKaW5kZXggZDAxMDk4ZmU1NWM5
Mjc2YzMzZGViZTcyN2VkZGIwYTA0OTg3ZTI4Ny4uZWM0NGUzZTFhOGNhODNmNTBmMzI4YmY1Y2Y0
MTJkOGM0NTQ1Y2Y2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW50ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50
LmgKQEAgLTMxLDE0ICszMSwxNyBAQAogI2lmbmRlZiBXZWJJbnRlbnRfaAogI2RlZmluZSBXZWJJ
bnRlbnRfaAogCisjaW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudDsgfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorCiAvLyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJvdWdoIGEgV2ViIElu
dGVudHMgaW52b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQKIC8vIEludGVudCBvYmpl
Y3QuCiAvLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rl
c2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQpAQCAtNjIsNiArNjUsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIGRhdGEoKSBjb25zdDsKIAorICAgIC8vIENhbGxlciB0YWtlcyBvd25lcnNo
aXAgb2YgdGhlIHBvcnRzLgorICAgIFdFQktJVF9FWFBPUlQgV2ViTWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkqIHBvcnRzKCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBX
ZWJJbnRlbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXggNzdkNzY2ZDc2
MzczODhmNjM4Y2UyNzk3ODRhNjNjNGRkYWQ0NTQxOC4uMjJiNjI1N2E0NzEzYTc0NjI3NDQ3MTAx
M2M5Nzk0YTc5MzFkNDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAKICNpbmNsdWRl
ICJJbnRlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTEwMiw0ICsxMDMsMTkgQEAgV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiAjZW5k
aWYKIH0KIAorV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIFdlYkludGVudDo6cG9ydHMoKSBj
b25zdAoreworICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0cyA9IDA7CisgICAg
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0cyA9IG1fcHJpdmF0
ZS0+bWVzc2FnZVBvcnRzKCk7CisgICAgaWYgKG1lc3NhZ2VQb3J0cykgeworICAgICAgICBwb3J0
cyA9IG5ldyBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheShtZXNzYWdlUG9ydHMtPnNpemUoKSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRzLT5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIGNo
YW5uZWwgPSBtZXNzYWdlUG9ydHMtPmF0KGkpLT5jaGFubmVsKCk7CisgICAgICAgICAgICAoKnBv
cnRzKVtpXSA9IGNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gcG9ydHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGZkZTJkNjgw
MTZhMDkzNmVmZGZjNDMxMzkxNjhmYjk3NDZiZTRiNjMuLjY2MGU4NTRjYjljNDViNWQ0NWIxNjE2
ZDJmZWE5ODA1NzZjZjFkMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKQEAgLTEzMjAsNyArMTMyMCwxMSBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpk
aXNwYXRjaEludGVudChXZWJGcmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBy
ZXF1ZQogICAgIHByaW50ZigiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNc
biIsCiAgICAgICAgICAgIHJlcXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwK
ICAgICAgICAgICAgcmVxdWVzdC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5wb3J0
cygpOworICAgIGlmIChwb3J0cykKKyAgICAgICAgcHJpbnRmKCJIYXZlICV6dSBwb3J0c1xuIiwg
cG9ydHMtPnNpemUoKSk7CiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgZGVs
ZXRlIHBvcnRzOwogfQogCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQxYjNhOTIzZjM4ZmMwY2ZiYTVlZGM5M2I1ZTU4MTU2OTJmZjFlOWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWlu
dm9rZS1wb3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1JlY2VpdmVkIFdlYiBJbnRl
bnQ6IGFjdGlvbj1hY3Rpb24xIHR5cGU9bWltZS90eXBlMQorSGF2ZSAxIHBvcnRzCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyogc2VudCBpbnRlbnQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2Ut
cG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9y
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlZTc4MjUzZjI0YjhlMDQ3NDRhMDY1NjBlOWQ5Mzk3ZDY1Nzk5
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LWludm9rZS1wb3J0Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy10ZXN0aW5nLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWwoKTsKKyAgICAgIGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVuY3Rpb24oZSkgewor
ICAgICAgICBkZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOworICAgICAgfTsKKworICAgICAgZnVuY3Rp
b24gYnV0dG9uQ2xpY2tlZCgpIHsKKyAgICAgICAgbmF2aWdhdG9yLnN0YXJ0QWN0aXZpdHkobmV3
IEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5cGUxIiwgY2hhbm5lbC5wb3J0MSwgW2NoYW5uZWwu
cG9ydDFdKSk7CisgICAgICAgIGRlYnVnKCIqIHNlbnQgaW50ZW50Iik7CisgICAgICB9CisgICAg
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygp
Ij4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50
ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134343</attachid>
            <date>2012-03-28 11:14:50 -0700</date>
            <delta_ts>2012-04-02 12:07:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120328111449.patch</filename>
            <type>text/plain</type>
            <size>12461</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3MTJjYWVkYTViOWI4
ZWJkYjE4MWJlNGUxZWU5Zjk3N2ZiNDQwZi4uZTRiMmVmOTRjNGMzMDY2OTI3OGY1NDY4ZTlhOTBj
MzkyZmE5ZjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yLgorICAgICAgICBodHRwOi8vZHZjcy53
My5vcmcvaGcvd2ViLWludGVudHMvcmF3LWZpbGUvdGlwL3NwZWMvT3ZlcnZpZXcuaHRtbAorICAg
ICAgICBUaGlzIGFkZHMgdGhlIGFiaWxpdHkgdG8gcGFzcyB0cmFuc2ZlcmFibGVzIChpLmUuIE1l
c3NhZ2VQb3J0cykKKyAgICAgICAgdGhyb3VnaCB3ZWIgaW50ZW50cywgYW5kIHB1dHMgdGhlIGNh
bGxpbmcgY29udmVudGlvbiBpbiBsaW5lCisgICAgICAgIHdpdGggdGhlIFdlYiBNZXNzYWdpbmcg
c3BlYzoKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvcG9zdG1zZy8KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAyMDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW50ZW50
cy9JbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50OjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlbnQ6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorCiAyMDEyLTAzLTI2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1JFR1JFU1NJT05dIFdvcmth
cm91bmRzIGZvciBzZWN1cml0eSBjaGVja3Mgd2hlbiByZXRyaWV2aW5nIHN0eWxlc2hlZXQgcnVs
ZSBsaXN0cyBhcmUgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQu
Y3BwCmluZGV4IDYwYTMyNDhiMDcyNzZjODkyMWVjMzU0MjRkN2E3YTFlYWFmMjljNGMuLjZiMTY5
OTAzMmU0Mjc4ZTdlYjM4NThhZjgyMjE4MzJiNDZlOGMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwpAQCAtNTAsMTIgKzUyLDM5IEBAIFBhc3NSZWZQdHI8SW50ZW50PiBJ
bnRlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhKSk7
CiB9CiAKK1Bhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBv
cnRBcnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChhY3Rpb24uaXNF
bXB0eSgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cygmcG9ydHMs
IGVjKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0
YSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7Cit9CisKIEludGVudDo6SW50ZW50KGNvbnN0IFN0cmlu
ZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhKQogICAgIDogbV9hY3Rpb24oYWN0aW9uKQogICAgICwgbV90eXBlKHR5cGUp
CiB7CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUoZGF0YS0+dG9XaXJlU3RyaW5nKCkpOworICAgICAgICBtX2RhdGEg
PSBkYXRhOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpudWxsVmFsdWUoKTsKK30KKworSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKQorICAgIDogbV9h
Y3Rpb24oYWN0aW9uKQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3BvcnRzKHBvcnRzKQor
eworICAgIGlmIChkYXRhKQorICAgICAgICBtX2RhdGEgPSBkYXRhOwogICAgIGVsc2UKICAgICAg
ICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKIH0KQEAgLTc1
LDYgKzEwNCwxMSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIEludGVudDo6ZGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGF0YS5nZXQoKTsKIH0KIAorTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkq
IEludGVudDo6bWVzc2FnZVBvcnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wb3J0cy5nZXQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9J
TlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCmluZGV4IDk2YmVi
ZDZlNTY3YWJmMTRmMTBjMTFmNjA3MzMzZDk2MzllNmU2YzguLmQ5ODdjNDgyYjUzZTJiZDY4MWMz
Yjg2ZDExZTRlNjkxMDhlMjIwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW50ZW50cy9JbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50
ZW50LmgKQEAgLTMxLDYgKzMxLDggQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAorI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOSwxMyArNDEsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJ
bnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnRlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVudD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYg
cG9ydHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29u
c3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3Q7CkBAIC01NCwxMiArNTgsMTcgQEAg
cHVibGljOgogICAgIGludCBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJZGVudGlm
aWVyKGludCk7CiAKKyAgICAvLyBNYWtlIGFuIGFjY2Vzc29yIGZvciBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbCBpbnN0ZWFkPworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdl
UG9ydHMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEpOworICAgIEludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydHMpOwogCiAgICAgU3RyaW5nIG1fYWN0aW9uOwog
ICAgIFN0cmluZyBtX3R5cGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9k
YXRhOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9wb3J0czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5pZGwKaW5kZXggYjNlMjM2OTJjMGUwODg0MWRlMTM3NTVmNWUyNWFlZTA0M2Q3M2EyZi4u
MjIxNDkzN2I3NDE4NzNlNmEzYzA5NDU5NTJkOTI4YTgxMmRkMTM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKQEAgLTI2LDcgKzI2LDggQEAKIG1vZHVsZSB3
aW5kb3cgewogICBpbnRlcmZhY2UgWwogICAgICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMsCi0g
ICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlwZSwg
aW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhKSwKKyAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBhY3Rpb24sIGluIERPTVN0cmlu
ZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZywgVHJhbnNmZXJMaXN0PXRy
YW5zZmVyTGlzdF0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIEFycmF5IHRyYW5zZmVyTGlzdCksCisgICAgICBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAg
XSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggMzRlZGQ5MDY2MDMyNDIzZWIwZDBlZTUyYzEyZTJiYjExZTIxMTBkZC4uMTYzMGE0
N2NkMjZjODA3OTMxZGM1ZjliNzc4YTdmNGJiYjIzNzFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE2MDEsNyArMTYw
MSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICBk
aWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBhIG5vbmV4aXN0ZW50IGFyZ3Vt
ZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRyYW5zZmVyTGlzdE5hbWUgPSB1
Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0QXJyYXkkVHJhbnNm
ZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDJmN2U4NWMxZjRjMGVkZTE1ZWNlNGU4NTY4ZWQ1
MjIzYTFmYjQ4NjAuLjVmZDQ1MDIzMjk2MDU3NTJhNjRmMjc4ODhlYzc4YTg1MWNiZTQwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAKICNpbmNsdWRlICJWOERPTVdy
YXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJbnRlbnQuaAppbmRleCBkMDEwOThmZTU1YzkyNzZjMzNkZWJlNzI3ZWRkYjBhMDQ5
ODdlMjg3Li5lYzQ0ZTNlMWE4Y2E4M2Y1MGYzMjhiZjVjZjQxMmQ4YzQ1NDVjZjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzEsMTQgKzMxLDE3IEBA
CiAjaWZuZGVmIFdlYkludGVudF9oCiAjZGVmaW5lIFdlYkludGVudF9oCiAKKyNpbmNsdWRlICJX
ZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50OyB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisKIC8v
IEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50ZW50cyBpbnZvY2F0aW9uIGNhbGwg
ZnJvbSB0aGUgSmF2YXNjcmlwdAogLy8gSW50ZW50IG9iamVjdC4KIC8vIFNlZSBzcGVjIGF0IGh0
dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy93ZWJpbnRl
bnRzYXBpCkBAIC02Miw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0
cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZGF0YSgpIGNv
bnN0OwogCisgICAgLy8gQ2FsbGVyIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcG9ydHMuCisgICAg
V0VCS0lUX0VYUE9SVCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogcG9ydHMoKSBjb25zdDsK
KwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkludGVudChjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW50ZW50LmNwcAppbmRleCA3N2Q3NjZkNzYzNzM4OGY2MzhjZTI3OTc4NGE2M2M0
ZGRhZDQ1NDE4Li4yMmI2MjU3YTQ3MTNhNzQ2Mjc0NDcxMDEzYzk3OTRhNzkzMWQ0MDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJXZWJJbnRlbnQuaCIKIAogI2luY2x1ZGUgIkludGVudC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTAyLDQgKzEwMywxOSBAQCBXZWJT
dHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKICNlbmRpZgogfQogCitXZWJNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSogV2ViSW50ZW50Ojpwb3J0cygpIGNvbnN0Cit7CisgICAgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkqIHBvcnRzID0gMDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSogbWVzc2FnZVBvcnRzID0gbV9wcml2YXRlLT5tZXNzYWdlUG9ydHMoKTsKKyAg
ICBpZiAobWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHBvcnRzID0gbmV3IFdlYk1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5KG1lc3NhZ2VQb3J0cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBXZWJD
b3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogY2hhbm5lbCA9IG1lc3NhZ2VQb3J0cy0+
YXQoaSktPmNoYW5uZWwoKTsKKyAgICAgICAgICAgICgqcG9ydHMpW2ldID0gY2hhbm5lbC0+d2Vi
Q2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBwb3J0czsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmRlMmQ2ODAxNmEwOTM2ZWZkZmM0MzEzOTE2OGZi
OTc0NmJlNGI2My4uNjYwZTg1NGNiOWM0NWI1ZDQ1YjE2MTZkMmZlYTk4MDU3NmNmMWQyZCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTMy
MCw3ICsxMzIwLDExIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1l
KiBzb3VyY2UsIGNvbnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVlCiAgICAgcHJpbnRmKCJSZWNl
aXZlZCBXZWIgSW50ZW50OiBhY3Rpb249JXMgdHlwZT0lc1xuIiwKICAgICAgICAgICAgcmVxdWVz
dC5pbnRlbnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICByZXF1ZXN0Lmlu
dGVudCgpLnR5cGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSogcG9ydHMgPSByZXF1ZXN0LmludGVudCgpLnBvcnRzKCk7CisgICAgaWYgKHBvcnRzKQor
ICAgICAgICBwcmludGYoIkhhdmUgJXp1IHBvcnRzXG4iLCBwb3J0cy0+c2l6ZSgpKTsKICAgICBt
X2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBkZWxldGUgcG9ydHM7CiB9CiAKIC8vIFB1
YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2Vi
LWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50
cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFiM2E5
MjNmMzhmYzBjZmJhNWVkYzkzYjVlNTgxNTY5MmZmMWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlvbjEgdHlw
ZT1taW1lL3R5cGUxCitIYXZlIDEgcG9ydHMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorKiBzZW50IGludGVudAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVl
NzgyNTNmMjRiOGUwNDc0NGEwNjU2MGU5ZDkzOTdkNjU3OTk2NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbApAQCAt
MCwwICsxLDIxIEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgICAgY2hhbm5l
bC5wb3J0Mi5vbk1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGRlYnVnKCIqIGdvdCBt
ZXNzYWdlIik7CisgICAgICB9OworCisgICAgICBmdW5jdGlvbiBidXR0b25DbGlja2VkKCkgewor
ICAgICAgICBuYXZpZ2F0b3Iuc3RhcnRBY3Rpdml0eShuZXcgSW50ZW50KCJhY3Rpb24xIiwgIm1p
bWUvdHlwZTEiLCBjaGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0MV0pKTsKKyAgICAgICAgZGVi
dWcoIiogc2VudCBpbnRlbnQiKTsKKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCkiPgorPGlucHV0IHR5cGU9ImJ1dHRv
biIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9ubW91c2V1cD0iYnV0dG9u
Q2xpY2tlZCgpIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135151</attachid>
            <date>2012-04-02 12:08:04 -0700</date>
            <delta_ts>2012-04-05 16:30:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120402120803.patch</filename>
            <type>text/plain</type>
            <size>13026</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJmNDdhZjRlYzdjY2Zk
YWFhMWNjMzRlZGIxMzU5ZmI3OWE0OGNjOC4uNTNkMjc3MTU2NWJhZDQzYTVkODQyMDlmN2QxZGUy
ZWY2M2FlMTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisgICAg
ICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBwYXNzIHRyYW5zZmVyYWJsZXMgKGkuZS4gTWVz
c2FnZVBvcnRzKQorICAgICAgICB0aHJvdWdoIHdlYiBpbnRlbnRzLCBhbmQgcHV0cyB0aGUgY2Fs
bGluZyBjb252ZW50aW9uIGluIGxpbmUKKyAgICAgICAgd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBz
cGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9wb3N0bXNnLworCisgICAgICAg
IEltcGxlbWVudGF0aW9uIGluIGNocm9taXVtIEFQSSBmb2xsb3dzIHRoZSBwb3J0LXBhc3Npbmcg
bWV0aG9kCisgICAgICAgIG9mIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisKIDIwMTItMDMtMzAgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwu
Y29tPgogCiAgICAgICAgIEZpeCBkZWZlY3RpdmUgc2l6ZV90IG92ZXJmbG93IGluIEdlc3R1cmVU
YXBIaWdobGlnaHRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50
cy9JbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAK
aW5kZXggNjBhMzI0OGIwNzI3NmM4OTIxZWMzNTQyNGQ3YTdhMWVhYWYyOWM0Yy4uNmIxNjk5MDMy
ZTQyNzhlN2ViMzg1OGFmODIyMTgzMmI0NmU4YzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbnRlbnRzL0ludGVudC5jcHAKQEAgLTMyLDExICszMiwxMyBAQAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CkBAIC01MCwxMiArNTIsMzkgQEAgUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVu
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3MK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRhdGEpKTsKIH0K
IAorUGFzc1JlZlB0cjxJbnRlbnQ+IEludGVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFy
cmF5JiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGFjdGlvbi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKCZwb3J0cywgZWMp
OworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhLCBj
aGFubmVscy5yZWxlYXNlKCkpKTsKK30KKwogSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEpCiAgICAgOiBtX2FjdGlvbihhY3Rpb24pCiAgICAgLCBtX3R5cGUodHlwZSkKIHsK
ICAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZShkYXRhLT50b1dpcmVTdHJpbmcoKSk7CisgICAgICAgIG1fZGF0YSA9IGRh
dGE7CisgICAgZWxzZQorICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51
bGxWYWx1ZSgpOworfQorCitJbnRlbnQ6OkludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydHMpCisgICAgOiBtX2FjdGlv
bihhY3Rpb24pCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fcG9ydHMocG9ydHMpCit7Cisg
ICAgaWYgKGRhdGEpCisgICAgICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgZWxzZQogICAgICAgICBt
X2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwogfQpAQCAtNzUsNiAr
MTA0LDExIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogSW50ZW50OjpkYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbV9kYXRhLmdldCgpOwogfQogCitNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogSW50
ZW50OjptZXNzYWdlUG9ydHMoKSBjb25zdAoreworICAgIHJldHVybiBtX3BvcnRzLmdldCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVO
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKaW5kZXggOTZiZWJkNmU1
NjdhYmYxNGYxMGMxMWY2MDczMzNkOTYzOWU2ZTZjOC4uNjYwOTg0MzA4MTM4OWM1MzQ2NDk5YzM1
ODFiODAyYzcyMTlmNWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0ludGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQu
aApAQCAtMzEsNiArMzEsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM5LDEzICs0MSwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEludGVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEludGVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25D
b2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0
cywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdDsK
ICAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdDsKQEAgLTU0LDEyICs1OCwxNiBAQCBwdWJs
aWM6CiAgICAgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2b2lkIHNldElkZW50aWZpZXIo
aW50KTsKIAorICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdlUG9ydHMoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpOworICAg
IEludGVudChjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gcG9ydHMpOwogCiAgICAgU3RyaW5nIG1fYWN0aW9uOwogICAgIFN0cmluZyBt
X3R5cGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhOworICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9wb3J0czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9J
bnRlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKaW5k
ZXggYjNlMjM2OTJjMGUwODg0MWRlMTM3NTVmNWUyNWFlZTA0M2Q3M2EyZi4uMjIxNDkzN2I3NDE4
NzNlNmEzYzA5NDU5NTJkOTI4YTgxMmRkMTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudC5pZGwKQEAgLTI2LDcgKzI2LDggQEAKIG1vZHVsZSB3aW5kb3cgewogICBp
bnRlcmZhY2UgWwogICAgICAgQ29uZGl0aW9uYWw9V0VCX0lOVEVOVFMsCi0gICAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlvbmFs
PURlZmF1bHRJc051bGxTdHJpbmddIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhKSwKKyAgICAg
IENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBhY3Rpb24sIGluIERPTVN0cmluZyB0eXBlLCBpbiBb
T3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZywgVHJhbnNmZXJMaXN0PXRyYW5zZmVyTGlzdF0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIEFycmF5IHRyYW5zZmVyTGlzdCksCisgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LAogICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYzk0
ZjhkNGMxYmIwYjk5YmQ2MmMwMzU4M2FlZGUyMDg1MzU1YTg0Mi4uNGMxMzNkZjNiNzRmZDJjMzI3
MGY1YzVjM2ViY2Y5NjVjYWUxMWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICBkaWUgIklETCBlcnJv
cjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBhIG5vbmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlC
dWZmZXIuaCIpOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlC
dWZmZXIuaCIpOwogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9y
dC5oIik7CiAgICAgICAgICAgICAgICAgJFRyYW5zZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFu
c2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtc
biI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCmluZGV4IDM0MTE3ZmFlYzkxMTllODRiM2FkODZjNTc3MGM1N2I4N2EzZGYzNzgu
Ljk1N2FhZGRmNDVlM2M4M2UwY2FmZWZlZGFiNWJhZjU0YTMyNzcxNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0y
Myw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNp
bmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRl
bnQuaAppbmRleCBkMDEwOThmZTU1YzkyNzZjMzNkZWJlNzI3ZWRkYjBhMDQ5ODdlMjg3Li4yMDJm
ZGNkYjBiMDVkNjMzOTk1ODZkMGI2ZjYwMjAzZjczM2FjNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2Vi
SW50ZW50X2gKICNkZWZpbmUgV2ViSW50ZW50X2gKIAorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBJbnRlbnQ7IH0KIApAQCAtNjIsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGRhdGEoKSBjb25zdDsKIAorICAgIC8vIENhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBv
cnRzLgorICAgIFdFQktJVF9FWFBPUlQgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3Nh
Z2VQb3J0Q2hhbm5lbHMoKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAg
IFdlYkludGVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiYpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAppbmRleCA3N2Q3NjZk
NzYzNzM4OGY2MzhjZTI3OTc4NGE2M2M0ZGRhZDQ1NDE4Li4yYzgyNjk5ZTA5OWE3M2U5YTBlZGRk
OGNiMWY0MzRhZmFlOWFmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVu
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJJbnRlbnQuaCIKIAogI2luY2x1
ZGUgIkludGVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTAyLDQgKzEwMywyMSBAQCBXZWJTdHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKICNl
bmRpZgogfQogCitXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogV2ViSW50ZW50OjptZXNzYWdl
UG9ydENoYW5uZWxzKCkgY29uc3QKK3sKKyAgICAvLyBOb3RlOiBzZWUgUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUuCisgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHdlYkNoYW5uZWxzID0gMDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSogbWVzc2FnZVBvcnRzID0gbV9wcml2YXRlLT5tZXNzYWdlUG9ydHMoKTsKKyAgICBp
ZiAobWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHdlYkNoYW5uZWxzID0gbmV3IFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5KG1lc3NhZ2VQb3J0cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0gbWVz
c2FnZVBvcnRzLT5hdChpKS0+Y2hhbm5lbCgpOworICAgICAgICAgICAgKCp3ZWJDaGFubmVscylb
aV0gPSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgICAgICAo
KndlYkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHdlYkNoYW5uZWxzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBiM2U5ZGRhMDE2
NDkwMGQwZGVhODllMWM3N2FjNzhkNTMwOWExZGFjLi4xZWI1Y2Q4YzVjMjUyMDk4NTg0MWI2MGFi
ZWFjZjA1YzIxMmQ2NDZjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCkBAIC0xMzI3LDcgKzEzMjcsMTEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlz
cGF0Y2hJbnRlbnQoV2ViRnJhbWUqIHNvdXJjZSwgY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgcmVx
dWUKICAgICBwcmludGYoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0lcyB0eXBlPSVzXG4i
LAogICAgICAgICAgICByZXF1ZXN0LmludGVudCgpLmFjdGlvbigpLnV0ZjgoKS5kYXRhKCksCiAg
ICAgICAgICAgIHJlcXVlc3QuaW50ZW50KCkudHlwZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0cyA9IHJlcXVlc3QuaW50ZW50KCkubWVzc2Fn
ZVBvcnRDaGFubmVscygpOworICAgIGlmIChwb3J0cykKKyAgICAgICAgcHJpbnRmKCJIYXZlICV6
dSBwb3J0c1xuIiwgcG9ydHMtPnNpemUoKSk7CiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVl
c3Q7CisgICAgZGVsZXRlIHBvcnRzOwogfQogCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBv
cnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxYjNhOTIzZjM4ZmMwY2ZiYTVlZGM5M2I1ZTU4
MTU2OTJmZjFlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1JlY2Vp
dmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj1hY3Rpb24xIHR5cGU9bWltZS90eXBlMQorSGF2ZSAxIHBv
cnRzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyog
c2VudCBpbnRlbnQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50
ZW50cy1pbnZva2UtcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50
cy1pbnZva2UtcG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYTdhYWY2YWExYzRlODg0ZmU2ZDQzM2Iz
MTAwODg5MWJkZTY5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRz
L3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cisg
IDxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy10
ZXN0aW5nLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICAgIGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVu
Y3Rpb24oZSkgeworICAgICAgICBkZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOworICAgICAgfTsKKwor
ICAgICAgZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICB2YXIgaW50ZW50MSA9IG5ldyBJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsIGNoYW5u
ZWwucG9ydDEsICJub3QgYSBwb3J0Iik7CisgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhh
dmUgdGhyb3duIFR5cGVFcnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNob3VsZCB0aHJvdyB0
eXBlIGVycm9yIG9uIG5vbi1wb3J0IGFyZyIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgdmFyIGludGVudDEgPSBuZXcgSW50ZW50KCJhY3Rpb24xIiwgIm1pbWUvdHlwZTEi
LCBjaGFubmVsLnBvcnQxLCBbIm5vdCBhIHBvcnQiXSk7CisgICAgICAgICAgdGVzdEZhaWxlZCgi
U2hvdWxkIGhhdmUgdGhyb3duIFR5cGVFcnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNob3Vs
ZCB0aHJvdyB0eXBlIGVycm9yIG9uIG5vbi1wb3J0IGFyZyIpOworICAgICAgICB9CisKKyAgICAg
ICAgbmF2aWdhdG9yLnN0YXJ0QWN0aXZpdHkobmV3IEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5
cGUxIiwgY2hhbm5lbC5wb3J0MSwgW2NoYW5uZWwucG9ydDFdKSk7CisgICAgICAgIGRlYnVnKCIq
IHNlbnQgaW50ZW50Iik7CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygpIj4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlk
PSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNr
ZWQoKSI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135932</attachid>
            <date>2012-04-05 16:30:47 -0700</date>
            <delta_ts>2012-04-06 09:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120405163046.patch</filename>
            <type>text/plain</type>
            <size>13057</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMjcxYTg0ZDJmNzky
MWRmYjk2MTcxNjBkMTc5NTA5M2UwZTdjMS4uMGU4NjM0YTk4MTk2ZmJhZTJjZGYxMzdkYzk1ZWUz
MzY2NGNmYTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisgICAg
ICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBwYXNzIHRyYW5zZmVyYWJsZXMgKGkuZS4gTWVz
c2FnZVBvcnRzKQorICAgICAgICB0aHJvdWdoIHdlYiBpbnRlbnRzLCBhbmQgcHV0cyB0aGUgY2Fs
bGluZyBjb252ZW50aW9uIGluIGxpbmUKKyAgICAgICAgd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBz
cGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9wb3N0bXNnLworCisgICAgICAg
IEltcGxlbWVudGF0aW9uIGluIGNocm9taXVtIEFQSSBmb2xsb3dzIHRoZSBwb3J0LXBhc3Npbmcg
bWV0aG9kCisgICAgICAgIG9mIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisKIDIwMTItMDQtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTMyNDEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCmluZGV4IDYwYTMyNDhi
MDcyNzZjODkyMWVjMzU0MjRkN2E3YTFlYWFmMjljNGMuLjZiMTY5OTAzMmU0Mjc4ZTdlYjM4NThh
ZjgyMjE4MzJiNDZlOGMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuY3BwCkBAIC0zMiwxMSArMzIsMTMgQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbnRlbnQ+IElu
dGVudDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
K1Bhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpA
QCAtNTAsMTIgKzUyLDM5IEBAIFBhc3NSZWZQdHI8SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnRlbnQoYWN0aW9uLCB0eXBlLCBkYXRhKSk7CiB9CiAKK1Bhc3NSZWZQdHI8
SW50ZW50PiBJbnRlbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpKSB7CisgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICh0eXBl
LmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMg
PSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cygmcG9ydHMsIGVjKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSwgY2hhbm5lbHMucmVsZWFz
ZSgpKSk7Cit9CisKIEludGVudDo6SW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKQogICAg
IDogbV9hY3Rpb24oYWN0aW9uKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiAgICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUo
ZGF0YS0+dG9XaXJlU3RyaW5nKCkpOworICAgICAgICBtX2RhdGEgPSBkYXRhOworICAgIGVsc2UK
KyAgICAgICAgbV9kYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKK30K
KworSW50ZW50OjpJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKQorICAgIDogbV9hY3Rpb24oYWN0aW9uKQorICAg
ICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3BvcnRzKHBvcnRzKQoreworICAgIGlmIChkYXRhKQor
ICAgICAgICBtX2RhdGEgPSBkYXRhOwogICAgIGVsc2UKICAgICAgICAgbV9kYXRhID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKIH0KQEAgLTc1LDYgKzEwNCwxMSBAQCBTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIEludGVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0
YS5nZXQoKTsKIH0KIAorTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIEludGVudDo6bWVzc2FnZVBv
cnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wb3J0cy5nZXQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudC5oCmluZGV4IDk2YmViZDZlNTY3YWJmMTRmMTBjMTFm
NjA3MzMzZDk2MzllNmU2YzguLjY2MDk4NDMwODEzODljNTM0NjQ5OWMzNTgxYjgwMmM3MjE5ZjVj
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmgKQEAgLTMxLDYgKzMx
LDggQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0zOSwxMyArNDEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwog
CiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJbnRlbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbnRlbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnRlbnQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEludGVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEludGVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3Q7CiAgICAgY29uc3QgU3Ry
aW5nJiB0eXBlKCkgY29uc3Q7CkBAIC01NCwxMiArNTgsMTYgQEAgcHVibGljOgogICAgIGludCBp
ZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKGludCk7CiAKKyAgICBN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRzKCkgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICBJbnRlbnQoY29uc3Qg
U3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBv
cnRzKTsKIAogICAgIFN0cmluZyBtX2FjdGlvbjsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YTsKKyAgICBPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCmluZGV4IGIzZTIzNjkyYzBl
MDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLjIyMTQ5MzdiNzQxODczZTZhM2MwOTQ1OTUy
ZDkyOGE4MTJkZDEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50
cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQu
aWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgd2luZG93IHsKICAgaW50ZXJmYWNlIFsKICAg
ICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3Ry
aW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxs
U3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSksCisgICAgICBDb25zdHJ1Y3Rvcihp
biBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlvbmFsPURlZmF1
bHRJc051bGxTdHJpbmcsIFRyYW5zZmVyTGlzdD10cmFuc2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBkYXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBBcnJheSB0cmFu
c2Zlckxpc3QpLAorICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAg
IENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiAgIF0gSW50ZW50IHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDk3MWNmYTYyOTgyYTdkYzc0
OWFhMDczMWUwMTgwZDk1MGM1ZGFmN2QuLmE1NDEyMjY2ZDU0OTc2MDU1ZDAwYWY5YjQzMWM5NzZk
NzBmYjc2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgZGllICJJREwgZXJyb3I6IFRyYW5zZmVyTGlz
dCByZWZlcnMgdG8gYSBub25leGlzdGVudCBhcmd1bWVudCI7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkFycmF5QnVmZmVyLmgiKTsKKyAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygid3RmL0FycmF5QnVmZmVyLmgiKTsKICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwogICAgICAg
ICAgICAgICAgICRUcmFuc2Zlckxpc3ROYW1lID0gdWNmaXJzdCgkdHJhbnNmZXJMaXN0TmFtZSk7
CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgTWVzc2FnZVBv
cnRBcnJheSBtZXNzYWdlUG9ydEFycmF5JFRyYW5zZmVyTGlzdE5hbWU7XG4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRl
eCAyZjdlODVjMWY0YzBlZGUxNWVjZTRlODU2OGVkNTIyM2ExZmI0ODYwLi41ZmQ0NTAyMzI5NjA1
NzUyYTY0ZjI3ODg4ZWM3OGE4NTFjYmU0MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAog
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi0jaW5jbHVk
ZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC0z
NCw2ICszMyw3IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhJc29s
YXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVu
dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKaW5kZXggZDAx
MDk4ZmU1NWM5Mjc2YzMzZGViZTcyN2VkZGIwYTA0OTg3ZTI4Ny4uNzNhNjIxMzJhZDYzMzljNTZk
NDU2M2U0MjRkYjZmNThkZmQwMzM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW50ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW50ZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWZuZGVmIFdlYkludGVudF9oCiAjZGVm
aW5lIFdlYkludGVudF9oCiAKKyNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2
YXRlUHRyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50OyB9
CiAKQEAgLTYyLDYgKzY0LDkgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IHR5cGUoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhKCkgY29uc3Q7
CiAKKyAgICAvLyBDYWxsZXIgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBwb3J0cy4KKyAgICBXRUJL
SVRfRVhQT1JUIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdlUG9ydENoYW5uZWxz
UmVsZWFzZSgpIGNvbnN0OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSW50
ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+Jik7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCmluZGV4IDc3ZDc2NmQ3NjM3Mzg4
ZjYzOGNlMjc5Nzg0YTYzYzRkZGFkNDU0MTguLjhhN2Q2YWFjNTQzYmQ5OTk5OWI4ZmE3OTg0M2Ez
NDAzYWU1NjdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
dGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkludGVudC5oIgogCiAjaW5jbHVkZSAiSW50
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDIs
NCArMTAzLDIxIEBAIFdlYlN0cmluZyBXZWJJbnRlbnQ6OmRhdGEoKSBjb25zdAogI2VuZGlmCiB9
CiAKK1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBXZWJJbnRlbnQ6Om1lc3NhZ2VQb3J0Q2hh
bm5lbHNSZWxlYXNlKCkgY29uc3QKK3sKKyAgICAvLyBOb3RlOiBzZWUgUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUuCisgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHdlYkNoYW5uZWxzID0gMDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSogbWVzc2FnZVBvcnRzID0gbV9wcml2YXRlLT5tZXNzYWdlUG9ydHMoKTsKKyAgICBp
ZiAobWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHdlYkNoYW5uZWxzID0gbmV3IFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5KG1lc3NhZ2VQb3J0cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogcGxhdGZvcm1DaGFubmVsID0gbWVz
c2FnZVBvcnRzLT5hdChpKS0+Y2hhbm5lbCgpOworICAgICAgICAgICAgKCp3ZWJDaGFubmVscylb
aV0gPSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgICAgICAo
KndlYkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHdlYkNoYW5uZWxzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBiM2U5ZGRhMDE2
NDkwMGQwZGVhODllMWM3N2FjNzhkNTMwOWExZGFjLi41NGRlNDM5YzQ5NDkzZDI1MjZhNGMwZDZj
NzJhMTM5MGZkZGM1ZWZkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCkBAIC0xMzI3LDcgKzEzMjcsMTEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlz
cGF0Y2hJbnRlbnQoV2ViRnJhbWUqIHNvdXJjZSwgY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgcmVx
dWUKICAgICBwcmludGYoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0lcyB0eXBlPSVzXG4i
LAogICAgICAgICAgICByZXF1ZXN0LmludGVudCgpLmFjdGlvbigpLnV0ZjgoKS5kYXRhKCksCiAg
ICAgICAgICAgIHJlcXVlc3QuaW50ZW50KCkudHlwZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0cyA9IHJlcXVlc3QuaW50ZW50KCkubWVzc2Fn
ZVBvcnRDaGFubmVsc1JlbGVhc2UoKTsKKyAgICBpZiAocG9ydHMpCisgICAgICAgIHByaW50Zigi
SGF2ZSAlenUgcG9ydHNcbiIsIHBvcnRzLT5zaXplKCkpOwogICAgIG1fY3VycmVudFJlcXVlc3Qg
PSByZXF1ZXN0OworICAgIGRlbGV0ZSBwb3J0czsKIH0KIAogLy8gUHVibGljIGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2Ut
cG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWlu
dm9rZS1wb3J0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWIzYTkyM2YzOGZjMGNmYmE1ZWRj
OTNiNWU1ODE1NjkyZmYxZTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBA
CitSZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uMSB0eXBlPW1pbWUvdHlwZTEKK0hh
dmUgMSBwb3J0cworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisqIHNlbnQgaW50ZW50CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMv
d2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2Vi
LWludGVudHMtaW52b2tlLXBvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjcyYjFhZjM0MGFiNGYwNDcx
M2QxOThkMjViZTBhOTVhYjllN2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViLWlu
dGVudHMtdGVzdGluZy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgIHZhciBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgICBjaGFubmVsLnBvcnQyLm9uTWVzc2Fn
ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVidWcoIiogZ290IG1lc3NhZ2UiKTsKKyAgICAg
IH07CisKKyAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgdmFyIGludGVudDEgPSBuZXcgV2ViS2l0SW50ZW50KCJhY3Rpb24xIiwgIm1pbWUv
dHlwZTEiLCBjaGFubmVsLnBvcnQxLCAibm90IGEgcG9ydCIpOworICAgICAgICAgIHRlc3RGYWls
ZWQoIlNob3VsZCBoYXZlIHRocm93biBUeXBlRXJyb3IiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpKSB0ZXN0RmFpbGVkKCJT
aG91bGQgdGhyb3cgdHlwZSBlcnJvciBvbiBub24tcG9ydCBhcmciKTsKKyAgICAgICAgfQorICAg
ICAgICB0cnkgeworICAgICAgICAgIHZhciBpbnRlbnQxID0gbmV3IFdlYktpdEludGVudCgiYWN0
aW9uMSIsICJtaW1lL3R5cGUxIiwgY2hhbm5lbC5wb3J0MSwgWyJub3QgYSBwb3J0Il0pOworICAg
ICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIHRocm93biBUeXBlRXJyb3IiKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3Ip
KSB0ZXN0RmFpbGVkKCJTaG91bGQgdGhyb3cgdHlwZSBlcnJvciBvbiBub24tcG9ydCBhcmciKTsK
KyAgICAgICAgfQorCisgICAgICAgIG5hdmlnYXRvci53ZWJraXRTdGFydEFjdGl2aXR5KG5ldyBX
ZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsIGNoYW5uZWwucG9ydDEsIFtjaGFu
bmVsLnBvcnQxXSkpOworICAgICAgICBkZWJ1ZygiKiBzZW50IGludGVudCIpOworICAgICAgfQor
ICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlQnV0dG9uUHJl
c3MoKSI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uIiB2YWx1ZT0iU3RhcnQgV2Vi
IEludGVudCIgb25tb3VzZXVwPSJidXR0b25DbGlja2VkKCkiPgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136031</attachid>
            <date>2012-04-06 09:09:51 -0700</date>
            <delta_ts>2012-04-06 14:50:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120406090950.patch</filename>
            <type>text/plain</type>
            <size>12300</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMjcxYTg0ZDJmNzky
MWRmYjk2MTcxNjBkMTc5NTA5M2UwZTdjMS4uMGU4NjM0YTk4MTk2ZmJhZTJjZGYxMzdkYzk1ZWUz
MzY2NGNmYTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisgICAg
ICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBwYXNzIHRyYW5zZmVyYWJsZXMgKGkuZS4gTWVz
c2FnZVBvcnRzKQorICAgICAgICB0aHJvdWdoIHdlYiBpbnRlbnRzLCBhbmQgcHV0cyB0aGUgY2Fs
bGluZyBjb252ZW50aW9uIGluIGxpbmUKKyAgICAgICAgd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBz
cGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9wb3N0bXNnLworCisgICAgICAg
IEltcGxlbWVudGF0aW9uIGluIGNocm9taXVtIEFQSSBmb2xsb3dzIHRoZSBwb3J0LXBhc3Npbmcg
bWV0aG9kCisgICAgICAgIG9mIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisKIDIwMTItMDQtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTMyNDEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCmluZGV4IDYwYTMyNDhi
MDcyNzZjODkyMWVjMzU0MjRkN2E3YTFlYWFmMjljNGMuLjA1M2Q0MjljZmExYzk3MjNmOTYzNmMz
NzlmM2EzOTE4NWRkNDk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDEyICs1MSwzOSBAQCBQYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzcwogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSkpOwogfQogCitQYXNzUmVmUHRyPEludGVu
dD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IE1lc3NhZ2VQ
b3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYWN0aW9uLmlz
RW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoJnBvcnRz
LCBlYyk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRh
dGEsIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworfQorCiBJbnRlbnQ6OkludGVudChjb25zdCBTdHJp
bmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSkKICAgICA6IG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1fdHlwZSh0eXBl
KQogewogICAgIGlmIChkYXRhKQotICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEtPnRvV2lyZVN0cmluZygpKTsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVsbFZhbHVlKCk7Cit9CisKK0ludGVudDo6SW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cykKKyAgICA6IG1f
YWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9wb3J0cyhwb3J0cykK
K3sKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKICAgICBlbHNlCiAgICAg
ICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7CiB9CkBAIC03
NSw2ICsxMDMsMTEgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBJbnRlbnQ6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KiBJbnRlbnQ6Om1lc3NhZ2VQb3J0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9ydHMuZ2V0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
SU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAppbmRleCA5NmJl
YmQ2ZTU2N2FiZjE0ZjEwYzExZjYwNzMzM2Q5NjM5ZTZlNmM4Li4zM2VmNjllMDQ0MTA1OTZlMjQx
NTMzNDg1ZWZiYzlmNWM0ZTZiNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsNiArNDgsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogY2xhc3MgSW50ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50PiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnRlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9u
KCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3Q7CkBAIC01NCwxMiArNTcs
MTYgQEAgcHVibGljOgogICAgIGludCBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
ZGVudGlmaWVyKGludCk7CiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBv
cnRzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhKTsKKyAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKTsKIAogICAgIFN0cmluZyBtX2FjdGlvbjsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0
YTsKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaWRsCmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLmVm
MDgyNTA3MzRmZmM3OWIxOTQ5ODBlYzgyNDNlZWIzNDQ4YWM1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBtb2R1bGUgd2lu
ZG93IHsKICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAg
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0
YSksCisgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmcsIFRyYW5zZmVyTGlzdD10cmFu
c2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAogICAgICAgQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggOTcxY2ZhNjI5ODJhN2RjNzQ5YWEwNzMxZTAxODBkOTUw
YzVkYWY3ZC4uYTU0MTIyNjZkNTQ5NzYwNTVkMDBhZjliNDMxYzk3NmQ3MGZiNzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAg
ICAgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBhIG5v
bmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRyYW5z
ZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQ
b3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDJmN2U4NWMxZjRjMGVk
ZTE1ZWNlNGU4NTY4ZWQ1MjIzYTFmYjQ4NjAuLjVmZDQ1MDIzMjk2MDU3NTJhNjRmMjc4ODhlYzc4
YTg1MWNiZTQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAKICNp
bmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCBkMDEwOThmZTU1YzkyNzZjMzNk
ZWJlNzI3ZWRkYjBhMDQ5ODdlMjg3Li43M2E2MjEzMmFkNjMzOWM1NmQ0NTYzZTQyNGRiNmY1OGRm
ZDAzMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAt
MzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViSW50ZW50X2gKICNkZWZpbmUgV2ViSW50ZW50X2gK
IAorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KIApAQCAtNjIsNiArNjQs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRhdGEoKSBjb25zdDsKIAorICAgIC8vIENhbGxl
ciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBvcnRzLgorICAgIFdFQktJVF9FWFBPUlQgV2ViTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0Q2hhbm5lbHNSZWxlYXNlKCkgY29uc3Q7
CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJJbnRlbnQoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXggNzdkNzY2ZDc2MzczODhmNjM4Y2UyNzk3ODRhNjNj
NGRkYWQ0NTQxOC4uOGE3ZDZhYWM1NDNiZDk5OTk5YjhmYTc5ODQzYTM0MDNhZTU2N2M5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAKICNpbmNsdWRlICJJbnRlbnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwMiw0ICsxMDMsMjEgQEAgV2Vi
U3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiAjZW5kaWYKIH0KIAorV2ViTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkqIFdlYkludGVudDo6bWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKSBj
b25zdAoreworICAgIC8vIE5vdGU6IHNlZSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2VUb1JlbW90ZS4KKyAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogd2ViQ2hh
bm5lbHMgPSAwOworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdl
UG9ydHMgPSBtX3ByaXZhdGUtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChtZXNzYWdlUG9ydHMp
IHsKKyAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXko
bWVzc2FnZVBvcnRzLT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1l
c3NhZ2VQb3J0cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSBtZXNzYWdlUG9ydHMtPmF0KGkp
LT5jaGFubmVsKCk7CisgICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXSA9IHBsYXRmb3JtQ2hh
bm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgICAgICgqd2ViQ2hhbm5lbHMpW2ld
LT5zZXRDbGllbnQoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gd2ViQ2hhbm5l
bHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGIzZTlkZGEwMTY0OTAwZDBkZWE4OWUxYzc3
YWM3OGQ1MzA5YTFkYWMuLjU0ZGU0MzljNDk0OTNkMjUyNmE0YzBkNmM3MmExMzkwZmRkYzVlZmQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTEzMjcsNyArMTMyNywxMSBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaXNwYXRjaEludGVudChXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiByZXF1ZQogICAgIHByaW50Zigi
UmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNcbiIsCiAgICAgICAgICAgIHJl
cXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgcmVxdWVz
dC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxzUmVs
ZWFzZSgpOworICAgIGlmIChwb3J0cykKKyAgICAgICAgcHJpbnRmKCJIYXZlICV6dSBwb3J0c1xu
IiwgcG9ydHMtPnNpemUoKSk7CiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAg
ZGVsZXRlIHBvcnRzOwogfQogCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQxYjNhOTIzZjM4ZmMwY2ZiYTVlZGM5M2I1ZTU4MTU2OTJmZjFl
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LWludm9rZS1wb3J0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1JlY2VpdmVkIFdlYiBJ
bnRlbnQ6IGFjdGlvbj1hY3Rpb24xIHR5cGU9bWltZS90eXBlMQorSGF2ZSAxIHBvcnRzCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyogc2VudCBpbnRl
bnQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZv
a2UtcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2Ut
cG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNzJiMWFmMzQwYWI0ZjA0NzEzZDE5OGQyNWJlMGE5NWFi
OWU3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRl
bnRzLWludm9rZS1wb3J0Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+CisgIDxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy10ZXN0aW5nLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTsKKyAgICAgIGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVuY3Rpb24oZSkg
eworICAgICAgICBkZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOworICAgICAgfTsKKworICAgICAgZnVu
Y3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB2YXIgaW50
ZW50MSA9IG5ldyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsIGNoYW5uZWwu
cG9ydDEsICJub3QgYSBwb3J0Iik7CisgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUg
dGhyb3duIFR5cGVFcnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNob3VsZCB0aHJvdyB0eXBl
IGVycm9yIG9uIG5vbi1wb3J0IGFyZyIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgdmFyIGludGVudDEgPSBuZXcgV2ViS2l0SW50ZW50KCJhY3Rpb24xIiwgIm1pbWUvdHlw
ZTEiLCBjaGFubmVsLnBvcnQxLCBbIm5vdCBhIHBvcnQiXSk7CisgICAgICAgICAgdGVzdEZhaWxl
ZCgiU2hvdWxkIGhhdmUgdGhyb3duIFR5cGVFcnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNo
b3VsZCB0aHJvdyB0eXBlIGVycm9yIG9uIG5vbi1wb3J0IGFyZyIpOworICAgICAgICB9CisKKyAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkobmV3IFdlYktpdEludGVudCgiYWN0
aW9uMSIsICJtaW1lL3R5cGUxIiwgY2hhbm5lbC5wb3J0MSwgW2NoYW5uZWwucG9ydDFdKSk7Cisg
ICAgICAgIGRlYnVnKCIqIHNlbnQgaW50ZW50Iik7CisgICAgICB9CisgICAgPC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygpIj4KKzxpbnB1dCB0
eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNl
dXA9ImJ1dHRvbkNsaWNrZWQoKSI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136068</attachid>
            <date>2012-04-06 14:50:35 -0700</date>
            <delta_ts>2012-04-10 13:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120406145034.patch</filename>
            <type>text/plain</type>
            <size>12402</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMjcxYTg0ZDJmNzky
MWRmYjk2MTcxNjBkMTc5NTA5M2UwZTdjMS4uMGU4NjM0YTk4MTk2ZmJhZTJjZGYxMzdkYzk1ZWUz
MzY2NGNmYTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisgICAg
ICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBwYXNzIHRyYW5zZmVyYWJsZXMgKGkuZS4gTWVz
c2FnZVBvcnRzKQorICAgICAgICB0aHJvdWdoIHdlYiBpbnRlbnRzLCBhbmQgcHV0cyB0aGUgY2Fs
bGluZyBjb252ZW50aW9uIGluIGxpbmUKKyAgICAgICAgd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBz
cGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9wb3N0bXNnLworCisgICAgICAg
IEltcGxlbWVudGF0aW9uIGluIGNocm9taXVtIEFQSSBmb2xsb3dzIHRoZSBwb3J0LXBhc3Npbmcg
bWV0aG9kCisgICAgICAgIG9mIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisKIDIwMTItMDQtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTMyNDEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCmluZGV4IDYwYTMyNDhi
MDcyNzZjODkyMWVjMzU0MjRkN2E3YTFlYWFmMjljNGMuLjA1M2Q0MjljZmExYzk3MjNmOTYzNmMz
NzlmM2EzOTE4NWRkNDk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDEyICs1MSwzOSBAQCBQYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzcwogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSkpOwogfQogCitQYXNzUmVmUHRyPEludGVu
dD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IE1lc3NhZ2VQ
b3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYWN0aW9uLmlz
RW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoJnBvcnRz
LCBlYyk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRh
dGEsIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworfQorCiBJbnRlbnQ6OkludGVudChjb25zdCBTdHJp
bmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSkKICAgICA6IG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1fdHlwZSh0eXBl
KQogewogICAgIGlmIChkYXRhKQotICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEtPnRvV2lyZVN0cmluZygpKTsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVsbFZhbHVlKCk7Cit9CisKK0ludGVudDo6SW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cykKKyAgICA6IG1f
YWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9wb3J0cyhwb3J0cykK
K3sKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKICAgICBlbHNlCiAgICAg
ICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7CiB9CkBAIC03
NSw2ICsxMDMsMTEgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBJbnRlbnQ6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KiBJbnRlbnQ6Om1lc3NhZ2VQb3J0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9ydHMuZ2V0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
SU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAppbmRleCA5NmJl
YmQ2ZTU2N2FiZjE0ZjEwYzExZjYwNzMzM2Q5NjM5ZTZlNmM4Li4zM2VmNjllMDQ0MTA1OTZlMjQx
NTMzNDg1ZWZiYzlmNWM0ZTZiNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsNiArNDgsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogY2xhc3MgSW50ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50PiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnRlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9u
KCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3Q7CkBAIC01NCwxMiArNTcs
MTYgQEAgcHVibGljOgogICAgIGludCBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
ZGVudGlmaWVyKGludCk7CiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBv
cnRzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhKTsKKyAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKTsKIAogICAgIFN0cmluZyBtX2FjdGlvbjsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0
YTsKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaWRsCmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLmVm
MDgyNTA3MzRmZmM3OWIxOTQ5ODBlYzgyNDNlZWIzNDQ4YWM1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBtb2R1bGUgd2lu
ZG93IHsKICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAg
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0
YSksCisgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmcsIFRyYW5zZmVyTGlzdD10cmFu
c2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAogICAgICAgQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggOTcxY2ZhNjI5ODJhN2RjNzQ5YWEwNzMxZTAxODBkOTUw
YzVkYWY3ZC4uYTU0MTIyNjZkNTQ5NzYwNTVkMDBhZjliNDMxYzk3NmQ3MGZiNzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAg
ICAgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBhIG5v
bmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRyYW5z
ZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQ
b3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDJmN2U4NWMxZjRjMGVk
ZTE1ZWNlNGU4NTY4ZWQ1MjIzYTFmYjQ4NjAuLjVmZDQ1MDIzMjk2MDU3NTJhNjRmMjc4ODhlYzc4
YTg1MWNiZTQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAKICNp
bmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCBkMDEwOThmZTU1YzkyNzZjMzNk
ZWJlNzI3ZWRkYjBhMDQ5ODdlMjg3Li43M2E2MjEzMmFkNjMzOWM1NmQ0NTYzZTQyNGRiNmY1OGRm
ZDAzMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAt
MzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViSW50ZW50X2gKICNkZWZpbmUgV2ViSW50ZW50X2gK
IAorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KIApAQCAtNjIsNiArNjQs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRhdGEoKSBjb25zdDsKIAorICAgIC8vIENhbGxl
ciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBvcnRzLgorICAgIFdFQktJVF9FWFBPUlQgV2ViTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0Q2hhbm5lbHNSZWxlYXNlKCkgY29uc3Q7
CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJJbnRlbnQoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXggNzdkNzY2ZDc2MzczODhmNjM4Y2UyNzk3ODRhNjNj
NGRkYWQ0NTQxOC4uOGE3ZDZhYWM1NDNiZDk5OTk5YjhmYTc5ODQzYTM0MDNhZTU2N2M5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAKICNpbmNsdWRlICJJbnRlbnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwMiw0ICsxMDMsMjEgQEAgV2Vi
U3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiAjZW5kaWYKIH0KIAorV2ViTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkqIFdlYkludGVudDo6bWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKSBj
b25zdAoreworICAgIC8vIE5vdGU6IHNlZSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2VUb1JlbW90ZS4KKyAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogd2ViQ2hh
bm5lbHMgPSAwOworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdl
UG9ydHMgPSBtX3ByaXZhdGUtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChtZXNzYWdlUG9ydHMp
IHsKKyAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXko
bWVzc2FnZVBvcnRzLT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1l
c3NhZ2VQb3J0cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSBtZXNzYWdlUG9ydHMtPmF0KGkp
LT5jaGFubmVsKCk7CisgICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXSA9IHBsYXRmb3JtQ2hh
bm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgICAgICgqd2ViQ2hhbm5lbHMpW2ld
LT5zZXRDbGllbnQoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gd2ViQ2hhbm5l
bHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGIzZTlkZGEwMTY0OTAwZDBkZWE4OWUxYzc3
YWM3OGQ1MzA5YTFkYWMuLjYwYWY0MTYyYWYyODdlNWI3ODEyMWJhMmFhMTczODJkNTQ1YThiZTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTEzMjcsNyArMTMyNywxNCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaXNwYXRjaEludGVudChXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiByZXF1ZQogICAgIHByaW50Zigi
UmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNcbiIsCiAgICAgICAgICAgIHJl
cXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgcmVxdWVz
dC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxzUmVs
ZWFzZSgpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OworICAgIGlmIChwb3J0cykg
eworICAgICAgICBwcmludGYoIkhhdmUgJXp1IHBvcnRzXG4iLCBwb3J0cy0+c2l6ZSgpKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICAoKnBvcnRzKVtpXS0+ZGVzdHJveSgpOworICAgICAgICBkZWxldGUgcG9ydHM7CisgICAg
fQogfQogCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxYjNhOTIzZjM4ZmMwY2ZiYTVlZGM5M2I1ZTU4MTU2OTJmZjFlOWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1JlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlv
bj1hY3Rpb24xIHR5cGU9bWltZS90eXBlMQorSGF2ZSAxIHBvcnRzCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyogc2VudCBpbnRlbnQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhiNzJiMWFmMzQwYWI0ZjA0NzEzZDE5OGQyNWJlMGE5NWFiOWU3ZDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1w
b3J0Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy10ZXN0aW5nLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsK
KyAgICAgIGNoYW5uZWwucG9ydDIub25NZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgICAgICBk
ZWJ1ZygiKiBnb3QgbWVzc2FnZSIpOworICAgICAgfTsKKworICAgICAgZnVuY3Rpb24gYnV0dG9u
Q2xpY2tlZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB2YXIgaW50ZW50MSA9IG5ldyBX
ZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWltZS90eXBlMSIsIGNoYW5uZWwucG9ydDEsICJub3Qg
YSBwb3J0Iik7CisgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgdGhyb3duIFR5cGVF
cnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNob3VsZCB0aHJvdyB0eXBlIGVycm9yIG9uIG5v
bi1wb3J0IGFyZyIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgdmFyIGlu
dGVudDEgPSBuZXcgV2ViS2l0SW50ZW50KCJhY3Rpb24xIiwgIm1pbWUvdHlwZTEiLCBjaGFubmVs
LnBvcnQxLCBbIm5vdCBhIHBvcnQiXSk7CisgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhh
dmUgdGhyb3duIFR5cGVFcnJvciIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRlc3RGYWlsZWQoIlNob3VsZCB0aHJvdyB0
eXBlIGVycm9yIG9uIG5vbi1wb3J0IGFyZyIpOworICAgICAgICB9CisKKyAgICAgICAgbmF2aWdh
dG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkobmV3IFdlYktpdEludGVudCgiYWN0aW9uMSIsICJtaW1l
L3R5cGUxIiwgY2hhbm5lbC5wb3J0MSwgW2NoYW5uZWwucG9ydDFdKSk7CisgICAgICAgIGRlYnVn
KCIqIHNlbnQgaW50ZW50Iik7CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0ic2ltdWxhdGVCdXR0b25QcmVzcygpIj4KKzxpbnB1dCB0eXBlPSJidXR0b24i
IGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNs
aWNrZWQoKSI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136533</attachid>
            <date>2012-04-10 13:52:47 -0700</date>
            <delta_ts>2012-04-10 18:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80200-20120410135246.patch</filename>
            <type>text/plain</type>
            <size>12419</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBjZTM2NGUxNTJlZTM2
YTA2MjMxN2ZlM2Y3OWNiMjc4YTIzZTdkOC4uYTYyYmQyYzJkYmE4MmU1NjM0YmM2ZjIzMGFjYmU5
MmRlMTg5N2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCB0cmFuc2ZlciBt
YXAgYXJndW1lbnQgdG8gSW50ZW50IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWItaW50ZW50cy9yYXctZmlsZS90aXAvc3BlYy9PdmVydmlldy5odG1sCisgICAg
ICAgIFRoaXMgYWRkcyB0aGUgYWJpbGl0eSB0byBwYXNzIHRyYW5zZmVyYWJsZXMgKGkuZS4gTWVz
c2FnZVBvcnRzKQorICAgICAgICB0aHJvdWdoIHdlYiBpbnRlbnRzLCBhbmQgcHV0cyB0aGUgY2Fs
bGluZyBjb252ZW50aW9uIGluIGxpbmUKKyAgICAgICAgd2l0aCB0aGUgV2ViIE1lc3NhZ2luZyBz
cGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9wb3N0bXNnLworCisgICAgICAg
IEltcGxlbWVudGF0aW9uIGluIGNocm9taXVtIEFQSSBmb2xsb3dzIHRoZSBwb3J0LXBhc3Npbmcg
bWV0aG9kCisgICAgICAgIG9mIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudC5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0
b3JDYWxsYmFjayk6CisKIDIwMTItMDQtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTM1NjEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuY3BwCmluZGV4IDYwYTMyNDhi
MDcyNzZjODkyMWVjMzU0MjRkN2E3YTFlYWFmMjljNGMuLjA1M2Q0MjljZmExYzk3MjNmOTYzNmMz
NzlmM2EzOTE4NWRkNDk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDEyICs1MSwzOSBAQCBQYXNzUmVmUHRyPEludGVudD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzcwogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW50ZW50KGFjdGlvbiwgdHlwZSwgZGF0YSkpOwogfQogCitQYXNzUmVmUHRyPEludGVu
dD4gSW50ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IE1lc3NhZ2VQ
b3J0QXJyYXkmIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYWN0aW9uLmlz
RW1wdHkoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoJnBvcnRz
LCBlYyk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudChhY3Rpb24sIHR5cGUsIGRh
dGEsIGNoYW5uZWxzLnJlbGVhc2UoKSkpOworfQorCiBJbnRlbnQ6OkludGVudChjb25zdCBTdHJp
bmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSkKICAgICA6IG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1fdHlwZSh0eXBl
KQogewogICAgIGlmIChkYXRhKQotICAgICAgICBtX2RhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEtPnRvV2lyZVN0cmluZygpKTsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVsbFZhbHVlKCk7Cit9CisKK0ludGVudDo6SW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cykKKyAgICA6IG1f
YWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9wb3J0cyhwb3J0cykK
K3sKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKICAgICBlbHNlCiAgICAg
ICAgIG1fZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7CiB9CkBAIC03
NSw2ICsxMDMsMTEgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBJbnRlbnQ6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KiBJbnRlbnQ6Om1lc3NhZ2VQb3J0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9ydHMuZ2V0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJf
SU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaAppbmRleCA5NmJl
YmQ2ZTU2N2FiZjE0ZjEwYzExZjYwNzMzM2Q5NjM5ZTZlNmM4Li4zM2VmNjllMDQ0MTA1OTZlMjQx
NTMzNDg1ZWZiYzlmNWM0ZTZiNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0lu
dGVudC5oCkBAIC0zMSw2ICszMSw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsNiArNDgsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogY2xhc3MgSW50ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZW50PiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZW50PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnRlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSYgcG9ydHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9u
KCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3Q7CkBAIC01NCwxMiArNTcs
MTYgQEAgcHVibGljOgogICAgIGludCBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
ZGVudGlmaWVyKGludCk7CiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBv
cnRzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW50ZW50KGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhKTsKKyAgICBJbnRlbnQoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKTsKIAogICAgIFN0cmluZyBtX2FjdGlvbjsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0
YTsKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fcG9ydHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnQuaWRsCmluZGV4IGIzZTIzNjkyYzBlMDg4NDFkZTEzNzU1ZjVlMjVhZWUwNDNkNzNhMmYuLmVm
MDgyNTA3MzRmZmM3OWIxOTQ5ODBlYzgyNDNlZWIzNDQ4YWM1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBtb2R1bGUgd2lu
ZG93IHsKICAgaW50ZXJmYWNlIFsKICAgICAgIENvbmRpdGlvbmFsPVdFQl9JTlRFTlRTLAotICAg
ICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGFjdGlvbiwgaW4gRE9NU3RyaW5nIHR5cGUsIGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0
YSksCisgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgYWN0aW9uLCBpbiBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmcsIFRyYW5zZmVyTGlzdD10cmFu
c2Zlckxpc3RdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBBcnJheSB0cmFuc2Zlckxpc3QpLAogICAgICAgQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24KICAgXSBJbnRlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggOTcxY2ZhNjI5ODJhN2RjNzQ5YWEwNzMxZTAxODBkOTUw
YzVkYWY3ZC4uYTU0MTIyNjZkNTQ5NzYwNTVkMDBhZjliNDMxYzk3NmQ3MGZiNzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTE2MDEsNyArMTYwMSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAg
ICAgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogVHJhbnNmZXJMaXN0IHJlZmVycyB0byBhIG5v
bmV4aXN0ZW50IGFyZ3VtZW50IjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiQXJyYXlCdWZmZXIuaCIpOworICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJ3dGYvQXJyYXlCdWZmZXIuaCIpOwogICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgICAgICAgICAgJFRyYW5z
ZmVyTGlzdE5hbWUgPSB1Y2ZpcnN0KCR0cmFuc2Zlckxpc3ROYW1lKTsKICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQ
b3J0QXJyYXkkVHJhbnNmZXJMaXN0TmFtZTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDIyZmUyODhmMTEyNTM5
YjA1M2FhMjliNmVhMTJhNTFlOTJjNDEzZmQuLmJkMzBiNjI5OTNiNzFjYWIzNWVmN2UzM2EzY2Nm
MzA3ODM2YTMxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTM0LDYgKzMzLDcgQEAKICNp
bmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCBkMDEwOThmZTU1YzkyNzZjMzNk
ZWJlNzI3ZWRkYjBhMDQ5ODdlMjg3Li43M2E2MjEzMmFkNjMzOWM1NmQ0NTYzZTQyNGRiNmY1OGRm
ZDAzMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAt
MzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViSW50ZW50X2gKICNkZWZpbmUgV2ViSW50ZW50X2gK
IAorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KIApAQCAtNjIsNiArNjQs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRhdGEoKSBjb25zdDsKIAorICAgIC8vIENhbGxl
ciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBvcnRzLgorICAgIFdFQktJVF9FWFBPUlQgV2ViTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0Q2hhbm5lbHNSZWxlYXNlKCkgY29uc3Q7
CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJJbnRlbnQoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXggNzdkNzY2ZDc2MzczODhmNjM4Y2UyNzk3ODRhNjNj
NGRkYWQ0NTQxOC4uOGE3ZDZhYWM1NDNiZDk5OTk5YjhmYTc5ODQzYTM0MDNhZTU2N2M5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAKICNpbmNsdWRlICJJbnRlbnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwMiw0ICsxMDMsMjEgQEAgV2Vi
U3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiAjZW5kaWYKIH0KIAorV2ViTWVzc2FnZVBv
cnRDaGFubmVsQXJyYXkqIFdlYkludGVudDo6bWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKSBj
b25zdAoreworICAgIC8vIE5vdGU6IHNlZSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2VUb1JlbW90ZS4KKyAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogd2ViQ2hh
bm5lbHMgPSAwOworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdl
UG9ydHMgPSBtX3ByaXZhdGUtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChtZXNzYWdlUG9ydHMp
IHsKKyAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXko
bWVzc2FnZVBvcnRzLT5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1l
c3NhZ2VQb3J0cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSBtZXNzYWdlUG9ydHMtPmF0KGkp
LT5jaGFubmVsKCk7CisgICAgICAgICAgICAoKndlYkNoYW5uZWxzKVtpXSA9IHBsYXRmb3JtQ2hh
bm5lbC0+d2ViQ2hhbm5lbFJlbGVhc2UoKTsKKyAgICAgICAgICAgICgqd2ViQ2hhbm5lbHMpW2ld
LT5zZXRDbGllbnQoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gd2ViQ2hhbm5l
bHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGIzZTlkZGEwMTY0OTAwZDBkZWE4OWUxYzc3
YWM3OGQ1MzA5YTFkYWMuLmI2NWU2YjAxMDhhZjNiYTZkMDM5YzQwODQ4YzM4MDAwMDY0MzI0ZTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTEzMjcsNyArMTMyNywxNCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaXNwYXRjaEludGVudChXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiByZXF1ZQogICAgIHByaW50Zigi
UmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNcbiIsCiAgICAgICAgICAgIHJl
cXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgcmVxdWVz
dC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxzUmVs
ZWFzZSgpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OworICAgIGlmIChwb3J0cykg
eworICAgICAgICBwcmludGYoIkhhdmUgJWQgcG9ydHNcbiIsIHN0YXRpY19jYXN0PGludD4ocG9y
dHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzLT5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgICgqcG9ydHMpW2ldLT5kZXN0cm95KCk7CisgICAgICAgIGRl
bGV0ZSBwb3J0czsKKyAgICB9CiB9CiAKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFiM2E5MjNmMzhmYzBjZmJhNWVkYzkzYjVlNTgxNTY5
MmZmMWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWlu
dGVudHMtaW52b2tlLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorUmVjZWl2ZWQg
V2ViIEludGVudDogYWN0aW9uPWFjdGlvbjEgdHlwZT1taW1lL3R5cGUxCitIYXZlIDEgcG9ydHMK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorKiBzZW50
IGludGVudAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LWludm9rZS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWlu
dm9rZS1wb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3MmIxYWYzNDBhYjRmMDQ3MTNkMTk4ZDI1YmUw
YTk1YWI5ZTdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2Vi
LWludGVudHMtaW52b2tlLXBvcnQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXRlc3Rp
bmcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbCgpOworICAgICAgY2hhbm5lbC5wb3J0Mi5vbk1lc3NhZ2UgPSBmdW5jdGlv
bihlKSB7CisgICAgICAgIGRlYnVnKCIqIGdvdCBtZXNzYWdlIik7CisgICAgICB9OworCisgICAg
ICBmdW5jdGlvbiBidXR0b25DbGlja2VkKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIHZh
ciBpbnRlbnQxID0gbmV3IFdlYktpdEludGVudCgiYWN0aW9uMSIsICJtaW1lL3R5cGUxIiwgY2hh
bm5lbC5wb3J0MSwgIm5vdCBhIHBvcnQiKTsKKyAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQg
aGF2ZSB0aHJvd24gVHlwZUVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGVzdEZhaWxlZCgiU2hvdWxkIHRocm93
IHR5cGUgZXJyb3Igb24gbm9uLXBvcnQgYXJnIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICB2YXIgaW50ZW50MSA9IG5ldyBXZWJLaXRJbnRlbnQoImFjdGlvbjEiLCAibWlt
ZS90eXBlMSIsIGNoYW5uZWwucG9ydDEsIFsibm90IGEgcG9ydCJdKTsKKyAgICAgICAgICB0ZXN0
RmFpbGVkKCJTaG91bGQgaGF2ZSB0aHJvd24gVHlwZUVycm9yIik7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGVzdEZhaWxl
ZCgiU2hvdWxkIHRocm93IHR5cGUgZXJyb3Igb24gbm9uLXBvcnQgYXJnIik7CisgICAgICAgIH0K
KworICAgICAgICBuYXZpZ2F0b3Iud2Via2l0U3RhcnRBY3Rpdml0eShuZXcgV2ViS2l0SW50ZW50
KCJhY3Rpb24xIiwgIm1pbWUvdHlwZTEiLCBjaGFubmVsLnBvcnQxLCBbY2hhbm5lbC5wb3J0MV0p
KTsKKyAgICAgICAgZGVidWcoIiogc2VudCBpbnRlbnQiKTsKKyAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKyAgPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0ZUJ1dHRvblByZXNzKCkiPgorPGlu
cHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9u
bW91c2V1cD0iYnV0dG9uQ2xpY2tlZCgpIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>