<?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>66756</bug_id>
          
          <creation_ts>2011-08-23 03:56:25 -0700</creation_ts>
          <short_desc>Implement an Event constructor in V8</short_desc>
          <delta_ts>2011-09-08 18:05:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>67824</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>levin</cc>
    
    <cc>morrita</cc>
    
    <cc>peter</cc>
    
    <cc>podivilov</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455292</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 03:56:25 -0700</bug_when>
    <thetext>Event should have a constructor: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#event

We are planning to implement constructors for all Events in V8. In order to avoid a regression, we are going to commit the patch for each Event one by one with unit tests. This is the first patch and trying to implement the constructor for Event. 

We need to implement them using WebCore/bindings/generic/EventConstructors.h proposed in the bug 63878, so that we can finally merge the JavaScriptCore implementation in the bug 63878 after all the planned patches are landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455298</commentid>
    <comment_count>1</comment_count>
      <attachid>104812</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 04:07:27 -0700</bug_when>
    <thetext>Created attachment 104812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455301</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 04:10:22 -0700</bug_when>
    <thetext>Attachment 104812 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:83:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 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>455462</commentid>
    <comment_count>3</comment_count>
      <attachid>104812</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 10:09:47 -0700</bug_when>
    <thetext>Comment on attachment 104812
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:52
&gt; +template&lt;typename EventType, typename EventInitType&gt;
&gt; +static v8::Handle&lt;v8::Value&gt; constructV8Event(const v8::Arguments&amp; args, bool (*filler)(EventInitType&amp;, const OptionsObject&amp;), WrapperTypeInfo* info)

Why is there a V8 custom implementation but no custom JSC implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455830</commentid>
    <comment_count>4</comment_count>
      <attachid>104812</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 17:01:09 -0700</bug_when>
    <thetext>Comment on attachment 104812
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:52
&gt;&gt; +static v8::Handle&lt;v8::Value&gt; constructV8Event(const v8::Arguments&amp; args, bool (*filler)(EventInitType&amp;, const OptionsObject&amp;), WrapperTypeInfo* info)
&gt; 
&gt; Why is there a V8 custom implementation but no custom JSC implementation?

Sam has been writing a patch for JSC in the bug 63878. My plan is to implement all Event constructors for V8 one by one using EventConstructors.h proposed in the bug 63878, and then merge the patch for JSC. In any case, we would like to split the patch for V8 and that for JSC in order to avoid hard regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455858</commentid>
    <comment_count>5</comment_count>
      <attachid>104812</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 17:24:41 -0700</bug_when>
    <thetext>Comment on attachment 104812
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:52
&gt;&gt;&gt; +template&lt;typename EventType, typename EventInitType&gt;
&gt;&gt;&gt; +static v8::Handle&lt;v8::Value&gt; constructV8Event(const v8::Arguments&amp; args, bool (*filler)(EventInitType&amp;, const OptionsObject&amp;), WrapperTypeInfo* info)
&gt;&gt; 
&gt;&gt; Why is there a V8 custom implementation but no custom JSC implementation?
&gt; 
&gt; Sam has been writing a patch for JSC in the bug 63878. My plan is to implement all Event constructors for V8 one by one using EventConstructors.h proposed in the bug 63878, and then merge the patch for JSC. In any case, we would like to split the patch for V8 and that for JSC in order to avoid hard regression.

Make sense.  (This is good information to put in the ChangeLog entry, BTW.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455860</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 17:25:07 -0700</bug_when>
    <thetext>Would you like me to review the patch, or did you have someone else lined up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455864</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 17:27:10 -0700</bug_when>
    <thetext>&gt; Would you like me to review the patch, or did you have someone else lined up?

Abarth, thank you very much! I would be really happy if you could review this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455900</commentid>
    <comment_count>8</comment_count>
      <attachid>104812</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 18:14:59 -0700</bug_when>
    <thetext>Comment on attachment 104812
Patch

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

This looks pretty solid, but I&apos;d like to see one more iteration.  A bunch of minor comments below.

&gt; LayoutTests/ChangeLog:15
&gt; +        * fast/events/event-constructors-expected.txt: Added.
&gt; +        * fast/events/event-constructors.html: Added.

Do we need to skip this test on JSC until Sam writes his half of the patch?

&gt; LayoutTests/fast/events/event-constructors.html:16
&gt; +try {
&gt; +    new Event();
&gt; +} catch (e) {
&gt; +    debug(&quot;PASS new Event() throws Exception.&quot;);
&gt; +}

Why not use the shouldThrow function?  That will record the type of exception as well.

&gt; Source/WebCore/bindings/generic/EventConstructors.h:2
&gt; + * Copyright (C) 2011 Apple Inc. All rights reserved.

Apple =&gt; Google, right?

&gt; Source/WebCore/bindings/generic/EventConstructors.h:40
&gt; +#define EVENTINIT_CONSTRUCTORS(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
&gt; +    EVENTINIT_CONSTRUCTOR_FOR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY)

I don&apos;t fully understand what EVENTINIT_CONSTRUCTORS buys you, but I&apos;ll keep reading.

&gt; Source/WebCore/bindings/v8/OptionsObject.h:49
&gt;      bool getKeyBool(const String&amp; key, bool&amp; value) const;
&gt;      bool getKeyInt32(const String&amp; key, int32_t&amp; value) const;
&gt; +    bool getKeyDouble(const String&amp; key, double&amp; value) const;
&gt;      bool getKeyString(const String&amp; key, String&amp; value) const;

Normal WebKit style would not have the &quot;get&quot; here.  Maybe toDouble ?  I would keep this consistent for now and write a follow-up patch to change the names.

&gt; Source/WebCore/bindings/v8/OptionsObject.h:60
&gt; +    bool getKeyValue(const String&amp; key, bool&amp; value) const
&gt; +    {
&gt; +        return getKeyBool(key, value);
&gt; +    }
&gt; +    bool getKeyValue(const String&amp; key, double&amp; value) const
&gt; +    {
&gt; +        return getKeyDouble(key, value);
&gt; +    }

Should we have these for all the types?

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:57
&gt; +    if (!args.IsConstructCall())
&gt; +        return throwError(&quot;DOM object constructor cannot be called as a function.&quot;);

Which type of exception should we through in this case?

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:63
&gt; +    EventInitType eventInit;

eventInit =&gt; eventInitializer ?  I&apos;m not sure what exactly eventInit means.  We usually try to use complete words in variable names.

&gt; Source/WebCore/dom/Event.cpp:71
&gt; +Event::Event(const AtomicString&amp; eventType, const EventInit&amp; eventInit)

I see.  This is like EventConfiguration or something.

&gt; Source/WebCore/dom/Event.h:191
&gt; -        Event(const AtomicString&amp; type, bool canBubble, bool cancelable);
&gt; +        Event(const AtomicString&amp;, bool, bool);

I would keep these parameter names.  It&apos;s not clear that the first bool is canBubble and the second is cancelable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455960</commentid>
    <comment_count>9</comment_count>
      <attachid>104812</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 21:34:07 -0700</bug_when>
    <thetext>Comment on attachment 104812
Patch

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

&gt;&gt; LayoutTests/ChangeLog:15
&gt;&gt; +        * fast/events/event-constructors.html: Added.
&gt; 
&gt; Do we need to skip this test on JSC until Sam writes his half of the patch?

Done. Added event-constructors.html to Skipped of mac, win, qt, wk2 and gtk.

&gt;&gt; LayoutTests/fast/events/event-constructors.html:16
&gt;&gt; +}
&gt; 
&gt; Why not use the shouldThrow function?  That will record the type of exception as well.

Done.

&gt;&gt; Source/WebCore/bindings/generic/EventConstructors.h:2
&gt;&gt; + * Copyright (C) 2011 Apple Inc. All rights reserved.
&gt; 
&gt; Apple =&gt; Google, right?

I think that this should be Apple. Actually, we are almost copying EventConstructors.h written by Sam in the bug 63878 (, so that we can finally merge the JSC implementation in the bug 63878).

&gt;&gt; Source/WebCore/bindings/generic/EventConstructors.h:40
&gt;&gt; +    EVENTINIT_CONSTRUCTOR_FOR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY)
&gt; 
&gt; I don&apos;t fully understand what EVENTINIT_CONSTRUCTORS buys you, but I&apos;ll keep reading.

Renamed to SETUP_EVENT_CONFIGURATION_FOR_ALL_EVENTS.

&gt;&gt; Source/WebCore/bindings/v8/OptionsObject.h:49
&gt;&gt;      bool getKeyString(const String&amp; key, String&amp; value) const;
&gt; 
&gt; Normal WebKit style would not have the &quot;get&quot; here.  Maybe toDouble ?  I would keep this consistent for now and write a follow-up patch to change the names.

I see. For now, I would keep it.

&gt;&gt; Source/WebCore/bindings/v8/OptionsObject.h:60
&gt;&gt; +    }
&gt; 
&gt; Should we have these for all the types?

Added getKeyValue() for Int32 and String (, although they are not used in this patch).

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:57
&gt;&gt; +        return throwError(&quot;DOM object constructor cannot be called as a function.&quot;);
&gt; 
&gt; Which type of exception should we through in this case?

I explicitly wrote V8Proxy::TypeError here. The spec is here (http://www.w3.org/TR/WebIDL/#es-interface-call).

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:63
&gt;&gt; +    EventInitType eventInit;
&gt; 
&gt; eventInit =&gt; eventInitializer ?  I&apos;m not sure what exactly eventInit means.  We usually try to use complete words in variable names.

Renamed to eventConfiguration.

&gt;&gt; Source/WebCore/dom/Event.cpp:71
&gt;&gt; +Event::Event(const AtomicString&amp; eventType, const EventInit&amp; eventInit)
&gt; 
&gt; I see.  This is like EventConfiguration or something.

Done. Renamed EventInit =&gt; EventConfiguration.

&gt;&gt; Source/WebCore/dom/Event.h:191
&gt;&gt; +        Event(const AtomicString&amp;, bool, bool);
&gt; 
&gt; I would keep these parameter names.  It&apos;s not clear that the first bool is canBubble and the second is cancelable.

OK. Reverted it back to keep the parameter names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455961</commentid>
    <comment_count>10</comment_count>
      <attachid>104960</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 21:34:58 -0700</bug_when>
    <thetext>Created attachment 104960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455962</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 21:37:39 -0700</bug_when>
    <thetext>Attachment 104960 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:83:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 18 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>455966</commentid>
    <comment_count>12</comment_count>
      <attachid>104960</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 21:42:48 -0700</bug_when>
    <thetext>Comment on attachment 104960
Patch

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

&gt; Source/WebCore/bindings/generic/EventConstructors.h:40
&gt; +#define SETUP_EVENT_CONFIGURATION_FOR_ALL_EVENTS(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY) \
&gt; +    SETUP_EVENT_CONFIGURATION_FOR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY)

I still don&apos;t fully understand why SETUP_EVENT_CONFIGURATION_FOR_ALL_EVENTS is any different from SETUP_EVENT_CONFIGURATION_FOR_EVENT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455967</commentid>
    <comment_count>13</comment_count>
      <attachid>104960</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-23 21:47:04 -0700</bug_when>
    <thetext>Comment on attachment 104960
Patch

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

&gt;&gt; Source/WebCore/bindings/generic/EventConstructors.h:40
&gt;&gt; +    SETUP_EVENT_CONFIGURATION_FOR_EVENT(DICTIONARY_START, DICTIONARY_END, FILL_PARENT_PROPERTIES, FILL_PROPERTY)
&gt; 
&gt; I still don&apos;t fully understand why SETUP_EVENT_CONFIGURATION_FOR_ALL_EVENTS is any different from SETUP_EVENT_CONFIGURATION_FOR_EVENT.

From the next patch, we are going to add SETUP_EVENT_CONFIGURATION_FOR_******_EVENT to SETUP_EVENT_CONFIGURATION_FOR_ALL_EVENTS. Please see EventConstructors.h in https://bugs.webkit.org/attachment.cgi?id=101345&amp;action=review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455968</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-23 21:51:24 -0700</bug_when>
    <thetext>Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456657</commentid>
    <comment_count>15</comment_count>
      <attachid>104960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 23:00:14 -0700</bug_when>
    <thetext>Comment on attachment 104960
Patch

Rejecting attachment 104960 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
hing file Source/WebCore/bindings/v8/OptionsObject.h
Hunk #1 FAILED at 45.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/bindings/v8/OptionsObject.h.rej
patching file Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp
patching file Source/WebCore/dom/Event.cpp
patching file Source/WebCore/dom/Event.h
patching file Source/WebCore/dom/Event.idl

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

Full output: http://queues.webkit.org/results/9511231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456680</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-24 23:58:53 -0700</bug_when>
    <thetext>Committed r93762: &lt;http://trac.webkit.org/changeset/93762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456699</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-25 01:13:48 -0700</bug_when>
    <thetext>Reverted r93762 for reason:

IndexedDb tests crash

Committed r93764: &lt;http://trac.webkit.org/changeset/93764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458025</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-28 15:48:54 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; Source/WebCore/dom/Event.cpp:71
&gt; &gt; +Event::Event(const AtomicString&amp; eventType, const EventInit&amp; eventInit)
&gt; 
&gt; I see.  This is like EventConfiguration or something.
&gt; 

I prefer EventInit to match the spec.  I will probably change this back when I land my part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458029</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-28 16:34:55 -0700</bug_when>
    <thetext>The spec doesn&apos;t include &quot;defaultPrevented&quot; or &quot;timestamp&quot; as far as I can tell.  Have you discussed this with the spec author?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458034</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-28 17:25:02 -0700</bug_when>
    <thetext>I landed the initial structural and JSC support in &lt;http://trac.webkit.org/changeset/93951&gt;, I don&apos;t think it should conflict too bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458109</commentid>
    <comment_count>21</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-29 00:44:26 -0700</bug_when>
    <thetext>&quot;new Event()&quot; doesn&apos;t throw exception in chromium anymore, adding custom expectation for dom-constructors.html until this bug is resolved (see r93958).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458136</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-29 02:02:30 -0700</bug_when>
    <thetext>&gt; I landed the initial structural and JSC support in &lt;http://trac.webkit.org/changeset/93951&gt;, I don&apos;t think it should conflict too bad.

Sam: Thank you very much for landing your patch! I will try to land the patch for V8 based on your landed patch. By the way, what would your plan be about implementing Event constructors? I am going to implement them for V8 one by one, according to EventConstructors.h that you landed. However, if you are planning to implement them sometime soon, I would like to wait for your patches for JSC. 

CustomEvent and ProgressEvent have the spec for their constructors. (CustomEvent: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-customevent, ProgressEvent: http://www.w3.org/TR/progress-events/#interface-progressevent). However, there seems to be no spec for constructors of other events. We may need to discuss the spec before landing patches. 


&gt; The spec doesn&apos;t include &quot;defaultPrevented&quot; or &quot;timestamp&quot; as far as I can tell.  Have you discussed this with the spec author?

Sorry, I was misunderstanding the spec. You are right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458723</commentid>
    <comment_count>23</comment_count>
      <attachid>105584</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-29 23:16:24 -0700</bug_when>
    <thetext>Created attachment 105584
WIP patch

WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458922</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 08:42:32 -0700</bug_when>
    <thetext>Attachment 105584 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:82:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 18 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>459312</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-30 16:27:56 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; I landed the initial structural and JSC support in &lt;http://trac.webkit.org/changeset/93951&gt;, I don&apos;t think it should conflict too bad.
&gt; 
&gt; Sam: Thank you very much for landing your patch! I will try to land the patch for V8 based on your landed patch. By the way, what would your plan be about implementing Event constructors? I am going to implement them for V8 one by one, according to EventConstructors.h that you landed. However, if you are planning to implement them sometime soon, I would like to wait for your patches for JSC. 
&gt; 

I don&apos;t have any immediate plans to implement more (I may do a bit more just to work out the kinks of the system).  I am not sure one at a time is necessary, you could probably do it in chunks.

&gt; CustomEvent and ProgressEvent have the spec for their constructors. (CustomEvent: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-customevent, ProgressEvent: http://www.w3.org/TR/progress-events/#interface-progressevent). However, there seems to be no spec for constructors of other events. We may need to discuss the spec before landing patches. 

For now, I would just add items for each value that was in the initFoo function on the interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459336</commentid>
    <comment_count>26</comment_count>
      <attachid>105720</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-30 17:02:10 -0700</bug_when>
    <thetext>Created attachment 105720
WIP patch

WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459350</commentid>
    <comment_count>27</comment_count>
      <attachid>105720</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-30 17:23:10 -0700</bug_when>
    <thetext>Comment on attachment 105720
WIP patch

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

I love it.

&gt; LayoutTests/ChangeLog:9
&gt; +        since the Event consructor is now available in V8.

Spelling: constructor

You probably don’t need this paragraph anyway. Just say &quot;unskip fast/events/constructors/event-constructors.html&quot; in on the comment line for test_expectations.

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:37
&gt; +

Delete this blank line.

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:58
&gt; +    if (AllowAllocation::current())

Yes, this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459358</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 17:34:10 -0700</bug_when>
    <thetext>Attachment 105720 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:85:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 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>459362</commentid>
    <comment_count>29</comment_count>
      <attachid>105724</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-30 17:36:58 -0700</bug_when>
    <thetext>Created attachment 105724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459363</commentid>
    <comment_count>30</comment_count>
      <attachid>105720</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-30 17:37:47 -0700</bug_when>
    <thetext>Comment on attachment 105720
WIP patch

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

&gt;&gt; LayoutTests/ChangeLog:9

&gt; 
&gt; Spelling: constructor
&gt; 
&gt; You probably don’t need this paragraph anyway. Just say &quot;unskip fast/events/constructors/event-constructors.html&quot; in on the comment line for test_expectations.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:37
&gt;&gt; +
&gt; 
&gt; Delete this blank line.

As far as I see other codes in WebCore/bindings/v8/custom/, the convention seems to add the blank line here, and describe WebCore headers above the blank line and V8-specific headers below the blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459366</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 17:40:37 -0700</bug_when>
    <thetext>Attachment 105724 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:85:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 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>459419</commentid>
    <comment_count>32</comment_count>
      <attachid>105724</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 21:26:15 -0700</bug_when>
    <thetext>Comment on attachment 105724
Patch

Attachment 105724 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9558805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459438</commentid>
    <comment_count>33</comment_count>
      <attachid>105720</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 22:02:13 -0700</bug_when>
    <thetext>Comment on attachment 105720
WIP patch

Attachment 105720 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9570505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459460</commentid>
    <comment_count>34</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-30 23:06:43 -0700</bug_when>
    <thetext>Note that you&apos;ll need to update the results checked in here http://trac.webkit.org/changeset/94151 as you implement this.

(In retrospec I probably should have just added a line to test_expectations.txt instead of adding these baselines, but I&apos;m getting tired and making mistakes I guess.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459505</commentid>
    <comment_count>35</comment_count>
      <attachid>105756</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 01:09:18 -0700</bug_when>
    <thetext>Created attachment 105756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459677</commentid>
    <comment_count>36</comment_count>
      <attachid>105756</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-31 09:45:05 -0700</bug_when>
    <thetext>Comment on attachment 105756
Patch

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

Only minor formatting comments remain.

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::OptionsObject::getKeyValue): Returns a value corresnponding to a given key.

nit: corresponding

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:37
&gt; +

Why is this blank line still here? :P

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:85
&gt; +     \

Did Sam’s patch indent the equivalent line one space less? What does check-webkit-style say?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459692</commentid>
    <comment_count>37</comment_count>
      <attachid>105787</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 10:13:12 -0700</bug_when>
    <thetext>Created attachment 105787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459693</commentid>
    <comment_count>38</comment_count>
      <attachid>105756</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 10:13:44 -0700</bug_when>
    <thetext>Comment on attachment 105756
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        (WebCore::OptionsObject::getKeyValue): Returns a value corresnponding to a given key.
&gt; 
&gt; nit: corresponding

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:37
&gt;&gt; +
&gt; 
&gt; Why is this blank line still here? :P

As I replied in the previous patch, as far as I looked at other files around this file, this blank line is a separator between WebCore headers and V8-specific headers.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:85
&gt;&gt; +     \
&gt; 
&gt; Did Sam’s patch indent the equivalent line one space less? What does check-webkit-style say?

Removed the space. However, check-webkit-style still complains &quot;Code inside a namespace should not be indented.  [whitespace/indent] [4]&quot;, even if I remove this blank line. To convince check-webkit-style, we need to remove the leading spaces in the next line (&quot;v8::Handle&lt;v8::Value&gt; V8##EventType::constructorCallback(const v8::Arguments&amp; args) \&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459743</commentid>
    <comment_count>39</comment_count>
      <attachid>105787</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-31 11:01:17 -0700</bug_when>
    <thetext>Comment on attachment 105787
Patch

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

This looks great.

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:59
&gt; +    if (AllowAllocation::current())
&gt; +        return args.Holder();

Crazy.  Is this a v8 function?  Why does it not require the v8 namespace?  Are we using namespace v8 somewhere?  (We shouldn&apos;t be.)

&gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:75
&gt; +    return toV8(event.release(), args.Holder());

The holder is always the global object.  I guess that makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459756</commentid>
    <comment_count>40</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-31 11:18:02 -0700</bug_when>
    <thetext>Adam: Thank you for the review. 

&gt; &gt; Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp:59
&gt; &gt; +    if (AllowAllocation::current())
&gt; &gt; +        return args.Holder();
&gt; 
&gt; Crazy.  Is this a v8 function?  Why does it not require the v8 namespace?  Are we using namespace v8 somewhere?  (We shouldn&apos;t be.)

AllowAllocation::current() is in the WebCore namespace. (http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/v8/V8Binding.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459833</commentid>
    <comment_count>41</comment_count>
      <attachid>105787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 12:47:34 -0700</bug_when>
    <thetext>Comment on attachment 105787
Patch

Rejecting attachment 105787 from commit-queue.

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

Last 500 characters of output:
ratorV8.pm
Hunk #1 FAILED at 2049.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/bindings/scripts/CodeGeneratorV8.pm.rej
patching file Source/WebCore/bindings/v8/OptionsObject.cpp
patching file Source/WebCore/bindings/v8/OptionsObject.h
patching file Source/WebCore/bindings/v8/custom/V8EventConstructors.cpp
patching file Source/WebCore/dom/Event.idl

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

Full output: http://queues.webkit.org/results/9578016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459847</commentid>
    <comment_count>42</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-31 13:10:58 -0700</bug_when>
    <thetext>I will land this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461277</commentid>
    <comment_count>43</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-09-02 09:58:57 -0700</bug_when>
    <thetext>Committed r94424: &lt;http://trac.webkit.org/changeset/94424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104812</attachid>
            <date>2011-08-23 04:07:27 -0700</date>
            <delta_ts>2011-08-23 21:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66756-20110823200725.patch</filename>
            <type>text/plain</type>
            <size>19839</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0OTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjk3MjIxOTYyMWNjYWI4NTFlODU2
OTk0NDVjNWVjMTMzMGY2NWZhLi41ZDg0NDAzZjRlZjNiZjU5OTUyZWFlMDFjMzBkMDIwY2UzYjFj
MDA1IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMjMgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYW4gRXZlbnQgY29uc3RydWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBz
cGVjIG9mIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBpcyBoZXJlOgorICAgICAgICBodHRwOi8vZHZj
cy53My5vcmcvaGcvZG9tY29yZS9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCNjb25jZXB0LWV2
ZW50LWNvbnN0cnVjdG9yKS4KKyAgICAgICAgVGhpcyBwYXRjaCBhZGRlZCB0aGUgRXZlbnQgY29u
c3RydWN0b3IgdG8gRXZlbnRDb25zdHJ1Y3RvcnMuaCB1c2luZworICAgICAgICBKYXZhU2NyaXB0
IGltcGxlbWVudGF0aW9uLWluZGVwZW5kZW50IG1hY3Jvcy4gVGhpcyBwYXRjaCBhbHNvIGFkZGVk
IHRoZSBWOAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSBtYWNyb3MgdG8gVjhFdmVu
dENvbnN0cnVjdG9ycy5jcHAuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9ldmVudC1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9ldmVudC1j
b25zdHJ1Y3RvcnMuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgtMjEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSByZXN1bHRzIGZvciBtb3JlIHRlc3RzIGFm
ZmVjdGVkIGJ5IHRoZSBhZGRpdGlvbiBvZiB0aGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9ldmVudC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJi
MmFhN2QxYzlkOWRjMmIyZTUxMThiNDYwOTg2OTg3MTdhMzgyOTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjEgQEAKK1RoaXMgdGVzdHMgdGhlIGNvbnN0cnVjdG9ycyBmb3IgYWxsIHRo
ZSBldmVudCBET00gY2xhc3NlcyB0aGF0IGhhdmUgdGhlbS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgbmV3IEV2ZW50KCkgdGhyb3dzIEV4Y2VwdGlvbi4KK1BBU1MgbmV3
IEV2ZW50KG51bGwpLnR5cGUgaXMgJ251bGwnCitQQVNTIG5ldyBFdmVudCh1bmRlZmluZWQpLnR5
cGUgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgbmV3IEV2ZW50KCdmb28nKS50eXBlIGlzICdmb28nCitQ
QVNTIG5ldyBFdmVudCgnZm9vJywge30pLnR5cGUgaXMgJ2ZvbycKK1BBU1MgbmV3IEV2ZW50KCdm
b28nLCB7J2J1YmJsZXMnOiBmYWxzZX0pLmJ1YmJsZXMgaXMgZmFsc2UKK1BBU1MgbmV3IEV2ZW50
KCdmb28nLCB7J2J1YmJsZXMnOiB0cnVlfSkuYnViYmxlcyBpcyB0cnVlCitQQVNTIG5ldyBFdmVu
dCgnZm9vJywgeydjYW5jZWxhYmxlJzogZmFsc2V9KS5jYW5jZWxhYmxlIGlzIGZhbHNlCitQQVNT
IG5ldyBFdmVudCgnZm9vJywgeydjYW5jZWxhYmxlJzogdHJ1ZX0pLmNhbmNlbGFibGUgaXMgdHJ1
ZQorUEFTUyBuZXcgRXZlbnQoJ2ZvbycsIHsnZGVmYXVsdFByZXZlbnRlZCc6IGZhbHNlfSkuZGVm
YXVsdFByZXZlbnRlZCBpcyBmYWxzZQorUEFTUyBuZXcgRXZlbnQoJ2ZvbycsIHsnZGVmYXVsdFBy
ZXZlbnRlZCc6IHRydWV9KS5kZWZhdWx0UHJldmVudGVkIGlzIHRydWUKK1BBU1MgbmV3IEV2ZW50
KCdmb28nLCB7J3RpbWVTdGFtcCc6IDEyMzR9KS50aW1lU3RhbXAgaXMgMTIzNAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk2NDMz
OTVmZGM0ZTc5ZDk1YWI5NTJkNzQ0ZjE3YTcxN2QyZTIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGUgY29uc3RydWN0b3JzIGZvciBhbGwgdGhlIGV2ZW50IERPTSBjbGFzc2VzIHRoYXQgaGF2
ZSB0aGVtLiIpOworCit0cnkgeworICAgIG5ldyBFdmVudCgpOworfSBjYXRjaCAoZSkgeworICAg
IGRlYnVnKCJQQVNTIG5ldyBFdmVudCgpIHRocm93cyBFeGNlcHRpb24uIik7Cit9CitzaG91bGRC
ZSgibmV3IEV2ZW50KG51bGwpLnR5cGUiLCAiJ251bGwnIik7CitzaG91bGRCZSgibmV3IEV2ZW50
KHVuZGVmaW5lZCkudHlwZSIsICIndW5kZWZpbmVkJyIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgn
Zm9vJykudHlwZSIsICInZm9vJyIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgnZm9vJywge30pLnR5
cGUiLCAiJ2ZvbyciKTsKK3Nob3VsZEJlKCJuZXcgRXZlbnQoJ2ZvbycsIHsnYnViYmxlcyc6IGZh
bHNlfSkuYnViYmxlcyIsICJmYWxzZSIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgnZm9vJywgeydi
dWJibGVzJzogdHJ1ZX0pLmJ1YmJsZXMiLCAidHJ1ZSIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgn
Zm9vJywgeydjYW5jZWxhYmxlJzogZmFsc2V9KS5jYW5jZWxhYmxlIiwgImZhbHNlIik7CitzaG91
bGRCZSgibmV3IEV2ZW50KCdmb28nLCB7J2NhbmNlbGFibGUnOiB0cnVlfSkuY2FuY2VsYWJsZSIs
ICJ0cnVlIik7CitzaG91bGRCZSgibmV3IEV2ZW50KCdmb28nLCB7J2RlZmF1bHRQcmV2ZW50ZWQn
OiBmYWxzZX0pLmRlZmF1bHRQcmV2ZW50ZWQiLCAiZmFsc2UiKTsKK3Nob3VsZEJlKCJuZXcgRXZl
bnQoJ2ZvbycsIHsnZGVmYXVsdFByZXZlbnRlZCc6IHRydWV9KS5kZWZhdWx0UHJldmVudGVkIiwg
InRydWUiKTsKK3Nob3VsZEJlKCJuZXcgRXZlbnQoJ2ZvbycsIHsndGltZVN0YW1wJzogMTIzNH0p
LnRpbWVTdGFtcCIsICIxMjM0Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI2M2YwYWNmYzVkZjMx
NDk0Y2IyMzIwMTQyMGVlZjMxOThhNzE3OC4uNzBlYjYxYWE4YjU2Mjk5NTJlNDI5MWNhODgzOGVl
NjMyZTI4YjY2NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTA4LTIzICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGFuIEV2
ZW50IGNvbnN0cnVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjY3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgc3BlYyBvZiB0aGUgRXZlbnQgY29uc3RydWN0b3IgaXMgaGVyZToKKyAgICAg
ICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2RvbWNvcmUvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0
bWwjY29uY2VwdC1ldmVudC1jb25zdHJ1Y3RvcikuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkZWQg
dGhlIEV2ZW50IGNvbnN0cnVjdG9yIHRvIEV2ZW50Q29uc3RydWN0b3JzLmggdXNpbmcKKyAgICAg
ICAgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbi1pbmRlcGVuZGVudCBtYWNyb3MuIFRoaXMgcGF0
Y2ggYWxzbyBhZGRlZCB0aGUgVjgKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgbWFj
cm9zIHRvIFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZl
bnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFk
ZGVkIFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBBZGRl
ZCBWOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0V2
ZW50Q29uc3RydWN0b3JzLmg6IEFkZGVkLiBUaGUgRXZlbnQgY29uc3RydWN0b3IuIFRoaXMgaXMg
d3JpdHRlbiB1c2luZyBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uLWluZGVwZW5kZW50IG1hY3Jv
cy4gVGhlIFY4IGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIG1hY3JvcyBpcyB3cml0dGVuIGluIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmpl
Y3Q6OmdldEtleURvdWJsZSk6IFJldHVybnMgdGhlIHZhbHVlIG9mIGEgZ2l2ZW4ga2V5IG9mIHR5
cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uc09iamVjdDo6Z2V0S2V5KTogUmV0
dXJucyB0cnVlIHdoZW5ldmVyIHRoZSBnaXZlbiBrZXkgaXMgZm91bmQsIGV2ZW4gaWYgdGhlIHZh
bHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L09wdGlvbnNP
YmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVlKTog
UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleS4gV2UgbmVlZCB0byBvdmVybG9hZCBn
ZXRLZXlWYWx1ZSgpIGZvciBhbGwgdHlwZXMgcmVxdWlyZWQgdG8gRXZlbnRJbml0IG1lbWJlcnMu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwOiBB
ZGRlZC4gSW1wbGVtZW50ZWQgbWFjcm9zIHVzZWQgaW4gRXZlbnRDb25zdHJ1Y3RvcnMuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFY4RXZlbnQpOiBUaGUgRXZlbnQgY29uc3RydWN0b3Iu
CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SW5pdDo6
RXZlbnRJbml0KTogQSBjb25zdHJ1Y3RvciBvZiBFdmVudEluaXQuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudDo6RXZlbnQpOiBBIGNvbnN0cnVjdG9yIG9mIHRoZSBFdmVudCBjbGFzcy4KKyAgICAg
ICAgKiBkb20vRXZlbnQuaDogQWRkZWQgRXZlbnRJbml0LCB3aGljaCBtYW5hZ2VzIGF0dHJpYnV0
ZXMgb2YgdGhlIEV2ZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZSk6
IEEgZmFjdG9yeSBtZXRob2Qgb2YgdGhlIEV2ZW50IGNsYXNzIHdpdGggRXZlbnRJbml0LgorICAg
ICAgICAqIGRvbS9FdmVudC5pZGw6IEFkZGVkICdDYW5CZUNvbnN0cnVjdGVkJyBhbmQgJ1Y4Q3Vz
dG9tQ29uc3RydWN0b3InLgorCiAyMDExLTA4LTIwICBOZWJvanNhIENpcmljICA8Y2lyYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUG9pbnQgYnVpbGQgc3lzdGVtIGFuZCAjaW5jbHVkZSBoZWFk
ZXJzIHRvIHY4LWkxOG4gbGlicmFyeSBpbnN0ZWFkIG9mIHY4IGxpYnJhcnkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMmViZDQ1MGE0MjQwNDcwYjE1MTdiY2M3ZWJjMzdkNTgyYWE4ODFhZi4uZTAzZDEx
NDE4YzEzNWIxYjA4NDFkYzcyMGU1YWNkZDA0MWIzYTczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTcyOSw2ICsxNzI5LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdT
ZWN1cml0eS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0
eUJhc2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0
eUJhc2UuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9y
cy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL0dlbmVyaWNCaW5kaW5nLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
JywKQEAgLTIxNDEsNiArMjE0Miw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50
cnlTeW5jQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZl
bnRDb25zdHJ1Y3RvcnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhF
dmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
U291cmNlQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGE5NGMyNTI0ZWI3OTcw
MDRlZjY4MWMzYzI0Mzg0MGFlMDgzMDRjYTUuLjhhN2RkMWNhMDA2ZGU3Mzk1MzYyMGIxOWE5YzBh
MWFjZTFjNWM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNjQsNiArMTY0LDcgQEAgdjggewogICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGYyYjcwMDdiYjhj
N2M1MTMwYzgwOGNiODBjMzg5MDAzNzEwYmUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFdmVudENvbnN0cnVjdG9yc19oCisjZGVmaW5lIEV2
ZW50Q29uc3RydWN0b3JzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIEVWRU5U
SU5JVF9DT05TVFJVQ1RPUl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9F
TkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKKyAgICBESUNUSU9O
QVJZX1NUQVJUKEV2ZW50KSBcCisgICAgRklMTF9QUk9QRVJUWShidWJibGVzKSBcCisgICAgRklM
TF9QUk9QRVJUWShjYW5jZWxhYmxlKSBcCisgICAgRklMTF9QUk9QRVJUWShkZWZhdWx0UHJldmVu
dGVkKSBcCisgICAgRklMTF9QUk9QRVJUWSh0aW1lU3RhbXApIFwKKyAgICBESUNUSU9OQVJZX0VO
RChFdmVudCkKKworI2RlZmluZSBFVkVOVElOSVRfQ09OU1RSVUNUT1JTKERJQ1RJT05BUllfU1RB
UlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZ
KSBcCisgICAgRVZFTlRJTklUX0NPTlNUUlVDVE9SX0ZPUl9FVkVOVChESUNUSU9OQVJZX1NUQVJU
LCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRXZlbnRDb25zdHJ1Y3RvcnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAppbmRleCBj
ZTkxODlhNDI1YWEyODBlYjA2NTJmMjM2ZjllN2U4YTM3YjhhZjUxLi4xM2M1MjQ4MjAwOTU5NGQz
MzkzNWZhZmExOTM5ZWI1YWFmYWJkMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9PcHRpb25zT2JqZWN0LmNwcApAQCAtODksNiArODksMTkgQEAgYm9vbCBPcHRpb25zT2JqZWN0
OjpnZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpOdW1iZXI+IHY4TnVtYmVyID0g
djhWYWx1ZS0+VG9OdW1iZXIoKTsKKyAgICBpZiAodjhOdW1iZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdmFsdWUgPSB2OE51bWJlci0+VmFsdWUoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlTdHJpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhWYWx1ZTsKQEAgLTE0OCw5ICsxNjEsNyBAQCBib29sIE9wdGlvbnNPYmplY3Q6OmdldEtl
eShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mIHZhbHVlKSBjb25zdAog
ICAgIGlmICghb3B0aW9ucy0+SGFzKHY4S2V5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHZhbHVlID0gb3B0aW9ucy0+R2V0KHY4S2V5KTsKLSAgICBpZiAodmFsdWUuSXNFbXB0eSgpKSAK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhdmFsdWUtPklzVW5kZWZpbmVkKCk7
IC8vIEZJWE1FOiBJcyB0aGUgdW5kZWZpbmVkIGNoZWNrIG5lY2Vzc2FyeT8KKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvT3B0aW9uc09iamVjdC5oCmluZGV4IGIwMDY5MjdjMmZkOTM4OTVmYTdkYTYzNjM5ZTE5
MDkyMzUxZmYzZjEuLjBmNjg2NTMzNWZiMjJlZGQzZjMwMTAzMmE1OTc0ZmNlNTdmNzVhODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKQEAgLTQ1LDEwICs0
NSwyMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwogICAg
IGJvb2wgZ2V0S2V5Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFsdWUpIGNvbnN0Owog
ICAgIGJvb2wgZ2V0S2V5SW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBj
b25zdDsKKyAgICBib29sIGdldEtleURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2
YWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBnZXRLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0
cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0S2V5
RE9NU3RyaW5nTGlzdChjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gZ2V0S2V5S2V5UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCisg
ICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFsdWUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5Qm9vbChrZXksIHZhbHVlKTsKKyAgICB9Cisg
ICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRLZXlEb3VibGUoa2V5LCB2YWx1ZSk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIGJvb2wgZ2V0S2V5KGNvbnN0IFN0cmluZyYga2V5LCB2ODo6TG9j
YWw8djg6OlZhbHVlPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJj
ZWQ1Y2ZiNGJmMWVhNGRjMjdmMWJkNWEzNGM4YzBjZTBlNTE5OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNw
cApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50Q29u
c3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNpbmNsdWRlICJPcHRpb25zT2JqZWN0
LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgi
CisjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgorI2luY2x1ZGUgIlY4RXZlbnQuaCIKKyNpbmNsdWRl
ICJWOE5vZGUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFR5
cGUsIHR5cGVuYW1lIEV2ZW50SW5pdFR5cGU+CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnN0cnVjdFY4RXZlbnQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCAoKmZpbGxl
cikoRXZlbnRJbml0VHlwZSYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKSwgV3JhcHBlclR5cGVJbmZv
KiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkV2ZW50LkNvbnN0cnVjdG9yIik7CisKKyAg
ICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4i
KTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIFNU
UklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8PiwgdHlwZSwg
YXJnc1swXSk7CisgICAgRXZlbnRJbml0VHlwZSBldmVudEluaXQ7CisgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPj0gMikgeworICAgICAgICBFWENFUFRJT05fQkxPQ0soT3B0aW9uc09iamVjdCwgb3B0
aW9ucywgYXJnc1sxXSk7CisgICAgICAgIGlmICghZmlsbGVyKGV2ZW50SW5pdCwgb3B0aW9ucykp
CisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0
cjxFdmVudFR5cGU+IGV2ZW50ID0gRXZlbnRUeXBlOjpjcmVhdGUodHlwZSwgZXZlbnRJbml0KTsK
KworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCBpbmZvLCBl
dmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgoZXZlbnQucmVsZWFzZSgpLCBhcmdzLkhvbGRl
cigpKTsKK30KKworI2RlZmluZSBESUNUSU9OQVJZX1NUQVJUKEV2ZW50VHlwZSkgXAorICAgIHN0
YXRpYyBib29sIGZpbGwjI0V2ZW50VHlwZSMjSW5pdChFdmVudCMjSW5pdCYgZXZlbnRJbml0LCBj
b25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zKSBcCisgICAgeworCisjZGVmaW5lIERJQ1RJT05B
UllfRU5EKEV2ZW50VHlwZSkgXAorICAgICAgICByZXR1cm4gdHJ1ZTsgXAorICAgIH0gXAorICAg
ICBcCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4IyNFdmVudFR5cGU6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgXAorICAgIHsgXAorICAgICAgcmV0
dXJuIGNvbnN0cnVjdFY4RXZlbnQ8RXZlbnRUeXBlLCBFdmVudFR5cGUjI0luaXQ+KGFyZ3MsIGZp
bGwjI0V2ZW50VHlwZSMjSW5pdCwgJmluZm8pOyBcCisgICAgfQorCisjZGVmaW5lIEZJTExfUEFS
RU5UX1BST1BFUlRJRVMocGFyZW50RXZlbnRUeXBlKSBcCisgICAgaWYgKCFmaWxsIyNwYXJlbnRF
dmVudFR5cGUjI0luaXQoZXZlbnRJbml0KSkgXAorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNk
ZWZpbmUgRklMTF9QUk9QRVJUWShwcm9wZXJ0eU5hbWUpIFwKKyAgICBvcHRpb25zLmdldEtleVZh
bHVlKCNwcm9wZXJ0eU5hbWUsIGV2ZW50SW5pdC5wcm9wZXJ0eU5hbWUpOyAvLyBUaGlzIGNhbiBm
YWlsIGJ1dCBpdCBpcyBPSy4KKworRVZFTlRJTklUX0NPTlNUUlVDVE9SUyhESUNUSU9OQVJZX1NU
QVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJU
WSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggNmZjMWQ0
ZTQ3YzBlMDM2ODMzOTRkYjVjZGVlNzA2YWQzMjExYmY3Ny4uZDRhNTg3NTBjZGY5NjM4ZTkwMTkx
MjBjMGY4NTA0YzY3YzM4MWYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0zMSw2ICszMSwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0V2ZW50SW5pdDo6RXZlbnRJbml0KCkKKyAgICA6
IGJ1YmJsZXMoZmFsc2UpCisgICAgLCBjYW5jZWxhYmxlKGZhbHNlKQorICAgICwgZGVmYXVsdFBy
ZXZlbnRlZChmYWxzZSkKKyAgICAsIHRpbWVTdGFtcCgwKQoreworfQorCiBFdmVudDo6RXZlbnQo
KQogICAgIDogbV9jYW5CdWJibGUoZmFsc2UpCiAgICAgLCBtX2NhbmNlbGFibGUoZmFsc2UpCkBA
IC02MCw2ICs2OCwyMSBAQCBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcgogewogfQogCitFdmVudDo6
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50SW5pdCYgZXZl
bnRJbml0KQorICAgIDogbV90eXBlKGV2ZW50VHlwZSkKKyAgICAsIG1fY2FuQnViYmxlKGV2ZW50
SW5pdC5idWJibGVzKQorICAgICwgbV9jYW5jZWxhYmxlKGV2ZW50SW5pdC5jYW5jZWxhYmxlKQor
ICAgICwgbV9wcm9wYWdhdGlvblN0b3BwZWQoZmFsc2UpCisgICAgLCBtX2ltbWVkaWF0ZVByb3Bh
Z2F0aW9uU3RvcHBlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFByZXZlbnRlZChldmVudEluaXQu
ZGVmYXVsdFByZXZlbnRlZCkKKyAgICAsIG1fZGVmYXVsdEhhbmRsZWQoZmFsc2UpCisgICAgLCBt
X2NhbmNlbEJ1YmJsZShmYWxzZSkKKyAgICAsIG1fZXZlbnRQaGFzZSgwKQorICAgICwgbV9jdXJy
ZW50VGFyZ2V0KDApCisgICAgLCBtX2NyZWF0ZVRpbWUoc3RhdGljX2Nhc3Q8RE9NVGltZVN0YW1w
PihldmVudEluaXQudGltZVN0YW1wKSkKK3sKK30KKwogRXZlbnQ6On5FdmVudCgpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5oCmluZGV4IDBkMGJlMDZkZjdhZGQxYTFiOTkyMDdlYzY5MzkwMjRiMWJjNTljNDIu
LmI4NDdjYzliNTllZDMwNjVhNWRjZTY2MTVlNGU4MTBjNDVhZGY0ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5o
CkBAIC0zNCw2ICszNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRU
YXJnZXQ7CiAgICAgY2xhc3MgRXZlbnREaXNwYXRjaGVyOwogCisgICAgc3RydWN0IEV2ZW50SW5p
dCB7CisgICAgICAgIEV2ZW50SW5pdCgpOworCisgICAgICAgIGJvb2wgYnViYmxlczsKKyAgICAg
ICAgYm9vbCBjYW5jZWxhYmxlOworICAgICAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQ7CisgICAg
ICAgIGRvdWJsZSB0aW1lU3RhbXA7CisgICAgfTsKKwogICAgIGNsYXNzIEV2ZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8RXZlbnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gUGhhc2VUeXBl
IHsgCkBAIC02OSw2ICs3OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlKSk7CiAgICAgICAgIH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEV2ZW50SW5pdCYgZXZlbnRJbml0
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV2ZW50KHR5cGUs
IGV2ZW50SW5pdCkpOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkV2ZW50KCk7CiAKICAg
ICAgICAgdm9pZCBpbml0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlKTsKQEAgLTE3NSw3ICsxODgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV2ZW50KCk7Ci0gICAgICAgIEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSk7CisgICAgICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGJvb2wsIGJvb2wpOworICAg
ICAgICBFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBFdmVudEluaXQmKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRUYXJnZXQoKTsKICAgICAgICAgYm9vbCBkaXNwYXRj
aGVkKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCmluZGV4IDcy
N2E4MzNiNzZmMmVlNGJlODYzOWNkOWNjN2M3ZGFiZmIzNTVjNDguLjkzMjYzNDM2N2I4NjFlYmQ2
ODI1NTQ0MGUxZmFiOTVmMTM3Y2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNCw3
ICsyNCw5IEBAIG1vZHVsZSBldmVudHMgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3Rv
bVRvSlMsCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAotICAgICAgICBQb2x5bW9ycGhpYworICAg
ICAgICBQb2x5bW9ycGhpYywKKyAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgVjhD
dXN0b21Db25zdHJ1Y3RvcgogICAgIF0gRXZlbnQgewogCiAgICAgICAgIC8vIERPTSBQaGFzZVR5
cGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104960</attachid>
            <date>2011-08-23 21:34:58 -0700</date>
            <delta_ts>2011-08-30 17:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66756-20110824133456.patch</filename>
            <type>text/plain</type>
            <size>24473</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2NzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MTBlNzQ2YmM0MGFmMTcxNzgxNjM4
NzViNWYwMTUzMzRkNWI4NWIwLi44OGUwZmZhMzA0OWQ3YmM4YmUyYWE3NzE2ZGI3YzIyMjc4ZDM0
NjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMjMgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYW4gRXZlbnQgY29uc3RydWN0
b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBz
cGVjIG9mIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBpcyBoZXJlOgorICAgICAgICBodHRwOi8vZHZj
cy53My5vcmcvaGcvZG9tY29yZS9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCNjb25jZXB0LWV2
ZW50LWNvbnN0cnVjdG9yLgorICAgICAgICBUaGlzIHBhdGNoIGFkZGVkIHRoZSBFdmVudCBjb25z
dHJ1Y3RvciB0byBFdmVudENvbnN0cnVjdG9ycy5oIHVzaW5nCisgICAgICAgIEphdmFTY3JpcHQg
aW1wbGVtZW50YXRpb24taW5kZXBlbmRlbnQgbWFjcm9zLiBUaGlzIHBhdGNoIGFsc28gYWRkZWQg
dGhlIFY4CisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIG1hY3JvcyB0byBWOEV2ZW50
Q29uc3RydWN0b3JzLmNwcC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2V2ZW50LWNv
bnN0cnVjdG9ycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDog
U2tpcHBlZCBldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCwgc2luY2UgRXZlbnQgY29uc3RydWN0b3Jz
IGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluIEpTQy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2tpcHBlZDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L3drMi9Ta2lwcGVkOiBEaXR0by4KKwogMjAxMS0wOC0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBiYXNlbGluZXMgZm9yIGZhc3QvYmxvY2svZmxvYXQv
Zml0X2xpbmVfYmVsb3dfZmxvYXRzLmh0bWwuICBJIGZvcmdvdCBXaW5kb3dzIGluIG15IHByZXZp
b3VzIHBhdGNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtY29u
c3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI5YjBjMWFlZDdkY2U0MzY4YzMw
N2Y2ZWFjMmM0ZDI0MDY3YjFjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAor
VGhpcyB0ZXN0cyB0aGUgY29uc3RydWN0b3JzIGZvciBhbGwgdGhlIGV2ZW50IERPTSBjbGFzc2Vz
IHRoYXQgaGF2ZSB0aGVtLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
ZXcgRXZlbnQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KK1BBU1MgbmV3IEV2ZW50KG51bGwpLnR5cGUgaXMgJ251bGwnCitQQVNTIG5ldyBFdmVudCh1
bmRlZmluZWQpLnR5cGUgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgbmV3IEV2ZW50KCdmb28nKS50eXBl
IGlzICdmb28nCitQQVNTIG5ldyBFdmVudCgnZm9vJywge30pLnR5cGUgaXMgJ2ZvbycKK1BBU1Mg
bmV3IEV2ZW50KCdmb28nLCB7J2J1YmJsZXMnOiBmYWxzZX0pLmJ1YmJsZXMgaXMgZmFsc2UKK1BB
U1MgbmV3IEV2ZW50KCdmb28nLCB7J2J1YmJsZXMnOiB0cnVlfSkuYnViYmxlcyBpcyB0cnVlCitQ
QVNTIG5ldyBFdmVudCgnZm9vJywgeydjYW5jZWxhYmxlJzogZmFsc2V9KS5jYW5jZWxhYmxlIGlz
IGZhbHNlCitQQVNTIG5ldyBFdmVudCgnZm9vJywgeydjYW5jZWxhYmxlJzogdHJ1ZX0pLmNhbmNl
bGFibGUgaXMgdHJ1ZQorUEFTUyBuZXcgRXZlbnQoJ2ZvbycsIHsnZGVmYXVsdFByZXZlbnRlZCc6
IGZhbHNlfSkuZGVmYXVsdFByZXZlbnRlZCBpcyBmYWxzZQorUEFTUyBuZXcgRXZlbnQoJ2Zvbycs
IHsnZGVmYXVsdFByZXZlbnRlZCc6IHRydWV9KS5kZWZhdWx0UHJldmVudGVkIGlzIHRydWUKK1BB
U1MgbmV3IEV2ZW50KCdmb28nLCB7J3RpbWVTdGFtcCc6IDEyMzR9KS50aW1lU3RhbXAgaXMgMTIz
NAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2E4ZmRiZGYyNWZkNWZjMmI2ZGRhMzQ3Njc2MGVhZWUxNGNhMjcwMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1s
CkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGUgY29uc3RydWN0b3JzIGZvciBhbGwgdGhlIGV2ZW50IERPTSBjbGFz
c2VzIHRoYXQgaGF2ZSB0aGVtLiIpOworCitzaG91bGRUaHJvdygibmV3IEV2ZW50KCkiKTsKK3No
b3VsZEJlKCJuZXcgRXZlbnQobnVsbCkudHlwZSIsICInbnVsbCciKTsKK3Nob3VsZEJlKCJuZXcg
RXZlbnQodW5kZWZpbmVkKS50eXBlIiwgIid1bmRlZmluZWQnIik7CitzaG91bGRCZSgibmV3IEV2
ZW50KCdmb28nKS50eXBlIiwgIidmb28nIik7CitzaG91bGRCZSgibmV3IEV2ZW50KCdmb28nLCB7
fSkudHlwZSIsICInZm9vJyIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgnZm9vJywgeydidWJibGVz
JzogZmFsc2V9KS5idWJibGVzIiwgImZhbHNlIik7CitzaG91bGRCZSgibmV3IEV2ZW50KCdmb28n
LCB7J2J1YmJsZXMnOiB0cnVlfSkuYnViYmxlcyIsICJ0cnVlIik7CitzaG91bGRCZSgibmV3IEV2
ZW50KCdmb28nLCB7J2NhbmNlbGFibGUnOiBmYWxzZX0pLmNhbmNlbGFibGUiLCAiZmFsc2UiKTsK
K3Nob3VsZEJlKCJuZXcgRXZlbnQoJ2ZvbycsIHsnY2FuY2VsYWJsZSc6IHRydWV9KS5jYW5jZWxh
YmxlIiwgInRydWUiKTsKK3Nob3VsZEJlKCJuZXcgRXZlbnQoJ2ZvbycsIHsnZGVmYXVsdFByZXZl
bnRlZCc6IGZhbHNlfSkuZGVmYXVsdFByZXZlbnRlZCIsICJmYWxzZSIpOworc2hvdWxkQmUoIm5l
dyBFdmVudCgnZm9vJywgeydkZWZhdWx0UHJldmVudGVkJzogdHJ1ZX0pLmRlZmF1bHRQcmV2ZW50
ZWQiLCAidHJ1ZSIpOworc2hvdWxkQmUoIm5ldyBFdmVudCgnZm9vJywgeyd0aW1lU3RhbXAnOiAx
MjM0fSkudGltZVN0YW1wIiwgIjEyMzQiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQK
aW5kZXggODgxYjNlNzJhMDFmYTYxMzNlMTczZWYzOGU5ZGQwZjE2MjAzNjBmOC4uMDliZGNkMDRj
YjI0NjdhMWY4NTQ0YjQ4OTBiMjE3M2UwMDc2YTNmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQKQEAgLTQ5Miw2ICs0OTIsMTAgQEAgZmFzdC9mb3Jtcy9zZWxlY3QtZG91YmxlLW9uY2hhbmdl
Lmh0bWwKIGZhc3QvZm9ybXMvc2VsZWN0LXNjcmlwdC1vbmNoYW5nZS5odG1sCiBmYXN0L2h0bWwv
dGFiLW9yZGVyLmh0bWwKIAorIyBUaGVzZSB0ZXN0cyByZXF1aXJlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBFdmVudCBjb25zdHJ1Y3RvcnMuCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Mzg3OAorZmFzdC9ldmVudHMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwKKwog
IyBUaGUgYm94IGlzbid0IGVtcHR5IGFmdGVyIGEgdGVzdCBydW4gd2l0aCB0aGlzIHRlc3QuCiAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY0NAogIGVkaXRpbmcv
ZGVsZXRpbmcvNTQwODI1NS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDY0Y2Jl
NTZiYTE4ZWVkMDdkZjNjZjk1ZDZkMWVjODU4ZjNhODY2MjQuLjc4NzdiNGMzYmM1NTc4NTZhY2Qz
MjYwNmYwOGNiNzQ4ZTRlMWQ1NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC04OCw2
ICs4OCwxMCBAQCBmYXN0L2V2ZW50cy90b3VjaAogIyBObyBidXR0b24gdHJhY2tlZAogZmFzdC9l
dmVudHMvbW91c2VvdmVyLWJ1dHRvbi5odG1sCiAKKyMgVGhlc2UgdGVzdHMgcmVxdWlyZSB0aGUg
SlNDIGltcGxlbWVudGF0aW9uIG9mIEV2ZW50IGNvbnN0cnVjdG9ycy4KKyMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODc4CitmYXN0L2V2ZW50cy9ldmVudC1jb25z
dHJ1Y3RvcnMuaHRtbAorCiAjIFNraXBwZWQgdW50aWwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzOTIzIGlzIHJlc29sdmVkLgogcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvY2hhbmdlLW5vdGlmaWNhdGlvbi1vbi1zY3JvbGwuaHRtbAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAppbmRleCAxNTk2MmZkZWMxOGY1ZjEwN2ZjOTFkM2VjMjFkNjM1YTRlZTQ4OWQ2Li4w
MjU0NzFlM2E4N2UxNzQzYjliZGZhYjI1N2Q1NWVlMDQ3ZmI1YzBiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKQEAgLTIwMiw2ICsyMDIsMTAgQEAgbWVkaWEvdHJhY2svCiAjIEZvbnQgZmVhdHVy
ZSBzZXR0aW5ncyBpcyBub3QgaW1wbGVtZW50ZWQuCiBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5n
cy1yZW5kZXJpbmcuaHRtbAogCisjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdGhlIEpTQyBpbXBsZW1l
bnRhdGlvbiBvZiBFdmVudCBjb25zdHJ1Y3RvcnMuCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02Mzg3OAorZmFzdC9ldmVudHMvZXZlbnQtY29uc3RydWN0b3JzLmh0
bWwKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBv
cnQgaW4gRFJULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0gIwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA0NWNjYTFi
NWRjMjY4OThmMzA4MTc3Y2E1YzJjNGFkZmI4MzI1ZDc3Li43ZjQ3MTcwNmFiM2RlNGRjYTIwOGVk
ODFjYzZlNWQ3NGY1ODc3MjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ4LDYg
KzE0OCwxMCBAQCBmYXN0L2V2ZW50cy9rZXlkb3duLW51bXBhZC1rZXlzLmh0bWwKICMgTm8gYnV0
dG9uIHRyYWNrZWQKIGZhc3QvZXZlbnRzL21vdXNlb3Zlci1idXR0b24uaHRtbAogCisjIFRoZXNl
IHRlc3RzIHJlcXVpcmUgdGhlIEpTQyBpbXBsZW1lbnRhdGlvbiBvZiBFdmVudCBjb25zdHJ1Y3Rv
cnMuCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzg3OAorZmFz
dC9ldmVudHMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwKKwogIyBUaGUgZXFxaXZhbGVudCBvZiBv
cHRpb24tdGFiIGRvZXNuIG5vdCBleGlzdCBpbiBCb29tZXIgPHJkYXI6Ly9wcm9ibGVtLzUxMzcy
MzA+CiBmYXN0L2V2ZW50cy9mcmFtZS10YWItZm9jdXMuaHRtbAogZmFzdC9ldmVudHMvb3B0aW9u
LXRhYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDA5NjA1MWZlNDczMmEzNDA1
NmI5Y2NlOWI3YTYwY2EzZmMyNDkyYmEuLjgwYTllN2VlYWFkNGRjOTBkOWY0ZmNkZjNmZWNjODQz
MmUwMTZhN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xNTk2LDYgKzE1OTYsMTAg
QEAgcGx1Z2lucy9wbHVnaW4taW5pdGlhdGUtcG9wdXAtd2luZG93Lmh0bWwKIHBsYXRmb3JtL21h
Yy9mYXN0L3RleHQvcm91bmRpbmctaGFja3MuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9y
b3VuZGluZy1oYWNrcy1leHBhbnNpb24uaHRtbAogCisjIFRoZXNlIHRlc3RzIHJlcXVpcmUgdGhl
IGltcGxlbWVudGF0aW9uIG9mIEV2ZW50IGNvbnN0cnVjdG9ycy4KKyMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODc4CitmYXN0L2V2ZW50cy9ldmVudC1jb25zdHJ1
Y3RvcnMuaHRtbAorCiAjIFNvbWV0aW1lcyBmYWlscwogIyBodHRwOi8vd2Via2l0Lm9yZy9iLzU4
OTkwCiBlZGl0aW5nL3VuZG8vdW5kby1pZnJhbWUtbG9jYXRpb24tY2hhbmdlLmh0bWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBiYmMyNjQ2YjM0ZjNlZTBjNmIwYTJiY2EyYmQ5ZTVmMGJiM2I4Y2ZjLi5lZjlhOTll
Yzk1MTQ4ZDVmNzg5MDg1OGRmNWI4YzQ4MGFjZGUxYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMTEtMDgtMjMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgYW4gRXZlbnQgY29uc3RydWN0b3IuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc1NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzcGVjIG9mIHRoZSBFdmVudCBjb25z
dHJ1Y3RvciBpcyBoZXJlOgorICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvZG9tY29yZS9y
YXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCNjb25jZXB0LWV2ZW50LWNvbnN0cnVjdG9yLgorICAg
ICAgICBUaGlzIHBhdGNoIGFkZGVkIHRoZSBFdmVudCBjb25zdHJ1Y3RvciB0byBFdmVudENvbnN0
cnVjdG9ycy5oIHVzaW5nCisgICAgICAgIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24taW5kZXBl
bmRlbnQgbWFjcm9zLiBUaGlzIHBhdGNoIGFsc28gYWRkZWQgdGhlIFY4CisgICAgICAgIGltcGxl
bWVudGF0aW9uIG9mIHRoZXNlIG1hY3JvcyB0byBWOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4KKwor
ICAgICAgICBUaGUgYnVnIDYzODc4IGhhcyBiZWVuIGltcGxlbWVudGluZyB0aGUgRXZlbnQgY29u
c3RydWN0b3JzIGZvciBKU0MuCisgICAgICAgIE91ciBwbGFuIGlzIHRvIGZpcnN0IGltcGxlbWVu
dCBhbGwgdGhlIEV2ZW50IGNvbnN0cnVjdG9ycyBmb3IgVjgKKyAgICAgICAgdXNpbmcgRXZlbnRD
b25zdHJ1Y3RvcnMuaCBwcm9wb3NlZCBpbiB0aGUgSlNDIHBhdGNoLCBhbmQgdGhlbiBtZXJnZQor
ICAgICAgICB0aGUgSlNDIHBhdGNoIHdpdGggdGhlc2UgVjggcGF0Y2hlcy4gSW4gYW55IGNhc2Us
IHdlIGFyZSBnb2luZyB0byBzcGxpdAorICAgICAgICB0aGUgcGF0Y2hlcyBmb3IgVjggYW5kIHRo
b3NlIGZvciBKU0MgaW4gb3JkZXIgdG8gYXZvaWQgaGFyZCByZWdyZXNzaW9uLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZXZlbnRzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IEFkZGVkIFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFdl
YkNvcmUucHJvOiBBZGRlZCBWOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4KKyAgICAgICAgKiBiaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg6IEFkZGVkLiBUaGUgRXZlbnQgY29uc3Ry
dWN0b3IuIFRoaXMgaXMgd3JpdHRlbiB1c2luZyBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uLWlu
ZGVwZW5kZW50IG1hY3Jvcy4gVGhlIFY4IGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIG1hY3JvcyBp
cyB3cml0dGVuIGluIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleURvdWJsZSk6IFJldHVybnMgdGhlIHZhbHVlIG9mIGEg
Z2l2ZW4ga2V5IG9mIHR5cGUgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uc09iamVj
dDo6Z2V0S2V5KTogUmV0dXJucyB0cnVlIHdoZW5ldmVyIHRoZSBnaXZlbiBrZXkgaXMgZm91bmQs
IGV2ZW4gaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6
OmdldEtleVZhbHVlKTogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleS4gV2UgbmVl
ZCB0byBvdmVybG9hZCBnZXRLZXlWYWx1ZSgpIGZvciBhbGwgdHlwZXMgcmVxdWlyZWQgdG8gRXZl
bnRDb25maWd1cmF0aW9uIG1lbWJlcnMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRDb25zdHJ1Y3RvcnMuY3BwOiBBZGRlZC4gSW1wbGVtZW50ZWQgbWFjcm9zIHVzZWQgaW4g
RXZlbnRDb25zdHJ1Y3RvcnMuaC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFY4RXZlbnQp
OiBUaGUgRXZlbnQgY29uc3RydWN0b3IuCisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50Q29uZmlndXJhdGlvbjo6RXZlbnRDb25maWd1cmF0aW9uKTogQSBj
b25zdHJ1Y3RvciBvZiBFdmVudENvbmZpZ3VyYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpFdmVu
dDo6RXZlbnQpOiBBIGNvbnN0cnVjdG9yIG9mIHRoZSBFdmVudCBjbGFzcy4KKyAgICAgICAgKiBk
b20vRXZlbnQuaDogQWRkZWQgRXZlbnRDb25maWd1cmF0aW9uLCB3aGljaCBtYW5hZ2VzIGF0dHJp
YnV0ZXMgb2YgdGhlIEV2ZW50IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0
ZSk6IEEgZmFjdG9yeSBtZXRob2Qgb2YgdGhlIEV2ZW50IGNsYXNzIHdpdGggRXZlbnRDb25maWd1
cmF0aW9uLgorICAgICAgICAqIGRvbS9FdmVudC5pZGw6IEFkZGVkICdDYW5CZUNvbnN0cnVjdGVk
JyBhbmQgJ1Y4Q3VzdG9tQ29uc3RydWN0b3InLgorCiAyMDExLTA4LTIzICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjYyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1YWJmZGJiNGJhOWFmYTA1MzRk
OTFjZjdkNjk1YmVmMDNhOGJkN2I1Li4yOTA3NDgzNzg3YjAyZjZkODJhNDQ1ZjFhMWY1NjFmNjE0
MjkzYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNzI5LDYgKzE3MjksNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5oJywKKyAgICAgICAgICAgICdiaW5k
aW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2dlbmVyaWMvR2VuZXJpY0JpbmRpbmcuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJp
Yy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgnLApAQCAtMjE0MSw2ICsyMTQyLDcgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeVN5bmNDdXN0b20uY3BwJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KaW5kZXggYTk0YzI1MjRlYjc5NzAwNGVmNjgxYzNjMjQzODQwYWUwODMwNGNhNS4u
OGE3ZGQxY2EwMDZkZTczOTUzNjIwYjE5YTljMGExYWNlMWM1YzU3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTE2NCw2ICsxNjQsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERv
Y3VtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50
TG9jYXRpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVu
dEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVj
dG9ycy5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3Rv
cnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYWYwNzg3MDhiZTZiZWMwMGVlYTJhZTY0ZTdkZDQ0NmIxNDc0Y2E0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVu
dENvbnN0cnVjdG9ycy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV2
ZW50Q29uc3RydWN0b3JzX2gKKyNkZWZpbmUgRXZlbnRDb25zdHJ1Y3RvcnNfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgU0VUVVBfRVZFTlRfQ09ORklHVVJBVElPTl9GT1JfRVZF
TlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJ
RVMsIEZJTExfUFJPUEVSVFkpIFwKKyAgICBESUNUSU9OQVJZX1NUQVJUKEV2ZW50KSBcCisgICAg
RklMTF9QUk9QRVJUWShidWJibGVzKSBcCisgICAgRklMTF9QUk9QRVJUWShjYW5jZWxhYmxlKSBc
CisgICAgRklMTF9QUk9QRVJUWShkZWZhdWx0UHJldmVudGVkKSBcCisgICAgRklMTF9QUk9QRVJU
WSh0aW1lU3RhbXApIFwKKyAgICBESUNUSU9OQVJZX0VORChFdmVudCkKKworI2RlZmluZSBTRVRV
UF9FVkVOVF9DT05GSUdVUkFUSU9OX0ZPUl9BTExfRVZFTlRTKERJQ1RJT05BUllfU1RBUlQsIERJ
Q1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCisg
ICAgU0VUVVBfRVZFTlRfQ09ORklHVVJBVElPTl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwg
RElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEV2ZW50Q29uc3RydWN0b3JzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAKaW5kZXggY2U5
MTg5YTQyNWFhMjgwZWIwNjUyZjIzNmY5ZTdlOGEzN2I4YWY1MS4uMTNjNTI0ODIwMDk1OTRkMzM5
MzVmYWZhMTkzOWViNWFhZmFiZDEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvT3B0aW9uc09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
T3B0aW9uc09iamVjdC5jcHAKQEAgLTg5LDYgKzg5LDE5IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6
Z2V0S2V5SW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleURvdWJsZShjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6TnVtYmVyPiB2OE51bWJlciA9IHY4
VmFsdWUtPlRvTnVtYmVyKCk7CisgICAgaWYgKHY4TnVtYmVyLklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHZhbHVlID0gdjhOdW1iZXItPlZhbHVlKCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5U3RyaW5nKGNvbnN0IFN0cmlu
ZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHY4VmFsdWU7CkBAIC0xNDgsOSArMTYxLDcgQEAgYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXko
Y29uc3QgU3RyaW5nJiBrZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JiB2YWx1ZSkgY29uc3QKICAg
ICBpZiAoIW9wdGlvbnMtPkhhcyh2OEtleSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2
YWx1ZSA9IG9wdGlvbnMtPkdldCh2OEtleSk7Ci0gICAgaWYgKHZhbHVlLklzRW1wdHkoKSkgCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXZhbHVlLT5Jc1VuZGVmaW5lZCgpOyAv
LyBGSVhNRTogSXMgdGhlIHVuZGVmaW5lZCBjaGVjayBuZWNlc3Nhcnk/CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L09wdGlvbnNPYmplY3QuaAppbmRleCBiMDA2OTI3YzJmZDkzODk1ZmE3ZGE2MzYzOWUxOTA5
MjM1MWZmM2YxLi44NjI2OGVhZmU5NjdjYzViYzQ3ZjRiYzFmZGFhYmNmZTEzMTBlOWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCkBAIC00NSwxMCArNDUs
MjggQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBi
b29sIGdldEtleUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdDsKICAg
ICBib29sIGdldEtleUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29u
c3Q7CisgICAgYm9vbCBnZXRLZXlEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFs
dWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJp
bmcmIHZhbHVlKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldEtleURP
TVN0cmluZ0xpc3QoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGdldEtleUtleVJhbmdlKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAorICAg
IGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEtleUJvb2woa2V5LCB2YWx1ZSk7CisgICAgfQorICAg
IGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEtleUludDMyKGtleSwgdmFsdWUpOworICAgIH0K
KyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEtleURvdWJsZShrZXksIHZhbHVlKTsKKyAg
ICB9CisgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRLZXlTdHJpbmcoa2V5LCB2YWx1ZSk7
CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgZ2V0S2V5KGNvbnN0IFN0cmluZyYga2V5LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmMyMGRiNzI0ODE2YjFkZDFhN2Y1OGNkYmU4YzBlNDViNTg3ODIyMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0
b3JzLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2
ZW50Q29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNpbmNsdWRlICJPcHRpb25z
T2JqZWN0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFj
cm9zLmgiCisjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgorI2luY2x1ZGUgIlY4RXZlbnQuaCIKKyNp
bmNsdWRlICJWOE5vZGUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
dmVudFR5cGUsIHR5cGVuYW1lIEV2ZW50Q29uZmlndXJhdGlvblR5cGU+CitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFY4RXZlbnQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cywgYm9vbCAoKmZpbGxlcikoRXZlbnRDb25maWd1cmF0aW9uVHlwZSYsIGNvbnN0IE9wdGlvbnNP
YmplY3QmKSwgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkV2
ZW50LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3Vn
aCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCB0eXBlLCBhcmdzWzBdKTsKKyAg
ICBFdmVudENvbmZpZ3VyYXRpb25UeXBlIGV2ZW50Q29uZmlndXJhdGlvbjsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+PSAyKSB7CisgICAgICAgIEVYQ0VQVElPTl9CTE9DSyhPcHRpb25zT2JqZWN0
LCBvcHRpb25zLCBhcmdzWzFdKTsKKyAgICAgICAgaWYgKCFmaWxsZXIoZXZlbnRDb25maWd1cmF0
aW9uLCBvcHRpb25zKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
fQorCisgICAgUmVmUHRyPEV2ZW50VHlwZT4gZXZlbnQgPSBFdmVudFR5cGU6OmNyZWF0ZSh0eXBl
LCBldmVudENvbmZpZ3VyYXRpb24pOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KGFyZ3MuSG9sZGVyKCksIGluZm8sIGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChldmVu
dC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCisjZGVmaW5lIERJQ1RJT05BUllfU1RB
UlQoRXZlbnRUeXBlKSBcCisgICAgc3RhdGljIGJvb2wgZmlsbCMjRXZlbnRUeXBlIyNDb25maWd1
cmF0aW9uKEV2ZW50IyNDb25maWd1cmF0aW9uJiBldmVudENvbmZpZ3VyYXRpb24sIGNvbnN0IE9w
dGlvbnNPYmplY3QmIG9wdGlvbnMpIFwKKyAgICB7CisKKyNkZWZpbmUgRElDVElPTkFSWV9FTkQo
RXZlbnRUeXBlKSBcCisgICAgICAgIHJldHVybiB0cnVlOyBcCisgICAgfSBcCisgICAgIFwKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgjI0V2ZW50VHlwZTo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSBcCisgICAgeyBcCisgICAgICByZXR1cm4gY29u
c3RydWN0VjhFdmVudDxFdmVudFR5cGUsIEV2ZW50VHlwZSMjQ29uZmlndXJhdGlvbj4oYXJncywg
ZmlsbCMjRXZlbnRUeXBlIyNDb25maWd1cmF0aW9uLCAmaW5mbyk7IFwKKyAgICB9CisKKyNkZWZp
bmUgRklMTF9QQVJFTlRfUFJPUEVSVElFUyhwYXJlbnRFdmVudFR5cGUpIFwKKyAgICBpZiAoIWZp
bGwjI3BhcmVudEV2ZW50VHlwZSMjQ29uZmlndXJhdGlvbihldmVudENvbmZpZ3VyYXRpb24pKSBc
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2RlZmluZSBGSUxMX1BST1BFUlRZKHByb3BlcnR5
TmFtZSkgXAorICAgIG9wdGlvbnMuZ2V0S2V5VmFsdWUoI3Byb3BlcnR5TmFtZSwgZXZlbnRDb25m
aWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7IC8vIFRoaXMgY2FuIGZhaWwgYnV0IGl0IGlzIE9LLgor
CitTRVRVUF9FVkVOVF9DT05GSUdVUkFUSU9OX0ZPUl9BTExfRVZFTlRTKERJQ1RJT05BUllfU1RB
UlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZ
KQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCA2ZmMxZDRl
NDdjMGUwMzY4MzM5NGRiNWNkZWU3MDZhZDMyMTFiZjc3Li5lZWRlOTM2ZWRiZDJjYjY1YzJjNTU4
NjI5OWZlNzVmY2RkNGRiNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTMxLDYgKzMxLDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRXZlbnRDb25maWd1cmF0aW9uOjpFdmVudENvbmZp
Z3VyYXRpb24oKQorICAgIDogYnViYmxlcyhmYWxzZSkKKyAgICAsIGNhbmNlbGFibGUoZmFsc2Up
CisgICAgLCBkZWZhdWx0UHJldmVudGVkKGZhbHNlKQorICAgICwgdGltZVN0YW1wKDApCit7Cit9
CisKIEV2ZW50OjpFdmVudCgpCiAgICAgOiBtX2NhbkJ1YmJsZShmYWxzZSkKICAgICAsIG1fY2Fu
Y2VsYWJsZShmYWxzZSkKQEAgLTYwLDYgKzY4LDIxIEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFy
CiB7CiB9CiAKK0V2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgRXZlbnRDb25maWd1cmF0aW9uJiBldmVudENvbmZpZ3VyYXRpb24pCisgICAgOiBtX3R5cGUo
ZXZlbnRUeXBlKQorICAgICwgbV9jYW5CdWJibGUoZXZlbnRDb25maWd1cmF0aW9uLmJ1YmJsZXMp
CisgICAgLCBtX2NhbmNlbGFibGUoZXZlbnRDb25maWd1cmF0aW9uLmNhbmNlbGFibGUpCisgICAg
LCBtX3Byb3BhZ2F0aW9uU3RvcHBlZChmYWxzZSkKKyAgICAsIG1faW1tZWRpYXRlUHJvcGFnYXRp
b25TdG9wcGVkKGZhbHNlKQorICAgICwgbV9kZWZhdWx0UHJldmVudGVkKGV2ZW50Q29uZmlndXJh
dGlvbi5kZWZhdWx0UHJldmVudGVkKQorICAgICwgbV9kZWZhdWx0SGFuZGxlZChmYWxzZSkKKyAg
ICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQorICAgICwgbV9ldmVudFBoYXNlKDApCisgICAgLCBt
X2N1cnJlbnRUYXJnZXQoMCkKKyAgICAsIG1fY3JlYXRlVGltZShzdGF0aWNfY2FzdDxET01UaW1l
U3RhbXA+KGV2ZW50Q29uZmlndXJhdGlvbi50aW1lU3RhbXApKQoreworfQorCiBFdmVudDo6fkV2
ZW50KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKaW5kZXggMGQwYmUwNmRmN2FkZDFhMWI5OTIwN2VjNjkz
OTAyNGIxYmM1OWM0Mi4uNTFjYjM3ODlhOTI4MDZiN2YyYTEyNzEzMDBmNmI4YWJiYTEwMjFkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgKQEAgLTM0LDYgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBFdmVudFRhcmdldDsKICAgICBjbGFzcyBFdmVudERpc3BhdGNoZXI7CiAKKyAgICBz
dHJ1Y3QgRXZlbnRDb25maWd1cmF0aW9uIHsKKyAgICAgICAgRXZlbnRDb25maWd1cmF0aW9uKCk7
CisKKyAgICAgICAgYm9vbCBidWJibGVzOworICAgICAgICBib29sIGNhbmNlbGFibGU7CisgICAg
ICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZDsKKyAgICAgICAgZG91YmxlIHRpbWVTdGFtcDsKKyAg
ICB9OworCiAgICAgY2xhc3MgRXZlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudD4gewogICAg
IHB1YmxpYzoKICAgICAgICAgZW51bSBQaGFzZVR5cGUgeyAKQEAgLTY5LDYgKzc4LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpKTsKICAgICAgICAgfQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgRXZlbnRDb25maWd1cmF0aW9uJiBldmVudENvbmZpZ3VyYXRpb24pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnQodHlwZSwgZXZlbnRD
b25maWd1cmF0aW9uKSk7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+RXZlbnQoKTsKIAog
ICAgICAgICB2b2lkIGluaXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUpOwpAQCAtMTc2LDYgKzE4OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV2ZW50KCk7CiAgICAgICAgIEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSk7CisgICAgICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEV2ZW50Q29uZmln
dXJhdGlvbiYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFRhcmdldCgpOwogICAg
ICAgICBib29sIGRpc3BhdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5pZGwKaW5kZXggNzI3YTgzM2I3NmYyZWU0YmU4NjM5Y2Q5Y2M3YzdkYWJmYjM1NWM0OC4u
OTMyNjM0MzY3Yjg2MWViZDY4MjU1NDQwZTFmYWI5NWYxMzdjZGVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTI0LDcgKzI0LDkgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNl
IFsKICAgICAgICAgQ3VzdG9tVG9KUywKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCi0gICAgICAg
IFBvbHltb3JwaGljCisgICAgICAgIFBvbHltb3JwaGljLAorICAgICAgICBDYW5CZUNvbnN0cnVj
dGVkLAorICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yCiAgICAgXSBFdmVudCB7CiAKICAgICAg
ICAgLy8gRE9NIFBoYXNlVHlwZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105584</attachid>
            <date>2011-08-29 23:16:24 -0700</date>
            <delta_ts>2011-08-30 17:36:48 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>27120</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MzA1NmM4Li5hNjllMmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MjkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIGZhc3QvZXZlbnRzL2Nv
bnN0cnVjdG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCwKKyAgICAgICAgc2luY2UgdGhlIEV2
ZW50IGNvbnNydWN0b3IgaXMgbm93IGF2YWlsYWJsZSBpbiBWOC4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMS0wOC0yOSAgVG9tIFph
a3JhanNlayAgPHRvbXpAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgY2FudmFzIGFyYygpIG1p
c3NpbmcgbGluZSB0byBzdGFydCBvZiBhcmMgaWYgc3dpbmcgaXMgemVybwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGQ1
ZTMwZGEuLjkwYmJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM2NjksOCArMzY2OSw1IEBAIEJVR1dLNjcwMDcg
REVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2Vz
bnQtY3Jhc2guaHRtCiBCVUdXSzY3MDc0IFdJTiBMSU5VWCBERUJVRyA6IGZhc3QvcmVwbGFjZWQv
ZnJhbWUtcmVtb3ZlZC1kdXJpbmctcmVzaXplLmh0bWwgPSBDUkFTSAogQlVHV0s2NzA3NCBXSU4g
TElOVVggREVCVUcgOiBzY3JvbGxiYXJzL3Njcm9sbGJhci1idXR0b25zLmh0bWwgPSBDUkFTSAog
Ci0vLyBJbXBsZW1lbnQgYW4gRXZlbnQgY29uc3RydWN0b3IgaW4gVjguCi1CVUdXSzY2NzU2IDog
ZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sID0gVEVYVAot
CiAvLyBTdGFydGVkIHRvIGZhaWwgb24gYWxsIGJvdHMgYWZ0ZXIgcjkzOTUxLgogQlVHV0s2Mzg3
OCA6IGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMuaHRtbCA9IFRFWFQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzQxZGM5Li45YTJmY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDgtMjkg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIEV2ZW50IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBUaGUgc3BlYyBvZiB0aGUgRXZlbnQgY29uc3RydWN0b3Ig
aXMgaGVyZToKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2RvbWNvcmUvcmF3LWZpbGUv
dGlwL092ZXJ2aWV3Lmh0bWwjY29uY2VwdC1ldmVudC1jb25zdHJ1Y3RvcgorICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGZvciBWOCBpbiBWOEV2ZW50
Q29uc3RydWN0b3JzLmNwcCwKKyAgICAgICAgc2ltaWxhciB0byB0aGUgaW1wbGVtZW50YXRpb24g
Zm9yIEpTQyBpbiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcC4KKworICAgICAgICAtIFRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBhIHxjb25zdHJ1Y3RlZEJ5SlNOZXd8IGZsYWcgaW50byBWOERPTVdyYXBw
ZXI6OmdldENvbnN0cnVjdG9yKCkuCisgICAgICAgIFRoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhl
ciBhIERPTSBvYmplY3QgaXMgZ29pbmcgdG8gYmUgY3JlYXRlZCBieSBhIHxuZXd8IHN0YXRlbWVu
dAorICAgICAgICBpbiBKYXZhU2NyaXB0IG9yIGEgRE9NIG9iamVjdCBpcyBnb2luZyB0byBiZSBj
cmVhdGVkIGJ5IFdlYkNvcmUuIEluIHRoZSBmb3JtZXIgY2FzZSwKKyAgICAgICAgd2UgbmVlZCB0
byBleGVjdXRlIGNvbnN0cnVjdG9yQ2FsbGJhY2soKS4gT24gdGhlIG90aGVyIGhhbmQsIGluIHRo
ZSBsYXR0ZXIgY2FzZSwKKyAgICAgICAgd2Ugc2hvdWxkIG5vdCBleGVjdXRlIGNvbnN0cnVjdG9y
Q2FsbGJhY2soKSBhbmQgaW5zdGVhZCBzaG91bGQganVzdCB3cmFwIHRoZQorICAgICAgICBXZWJD
b3JlIG9iamVjdCBpbnRvIGEgVjggb2JqZWN0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRz
L2NvbnN0cnVjdG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBBZGRlZCBWOEV2ZW50Q29uc3RydWN0b3JzLmNwcC4KKyAgICAgICAgKiBXZWJDb3Jl
LnBybzogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06IEFkZGVkIGEgfGNvbnN0cnVjdGVkQnlKU05ld3wgZmxhZy4gV2UgZXhlY3V0ZSBkZXNjLT5T
ZXRDYWxsSGFuZGxlcihWOEV2ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKSBvbmx5IHdoZW4gdGhl
IGZsYWcgaXMgb24uCisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleURvdWJsZSk6IFJl
dHVybnMgYSB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4ga2V5
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVlKTogUmV0dXJucyBhIHZhbHVlIGNvcnJlc25w
b25kaW5nIHRvIGEgZ2l2ZW4ga2V5LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldENvbnN0cnVjdG9yKTog
QWRkZWQgYSB8Y29uc3RydWN0ZWRCeUpTTmV3fCBmbGFnLgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvckZvckNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvdjgv
V3JhcHBlclR5cGVJbmZvLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlclR5cGVJ
bmZvOjpnZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRD
b25zdHJ1Y3RvcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFY4RXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25z
dHJ1Y3Rvci5jcHA6IEFkZGVkIGEgfGNvbnN0cnVjdGVkQnlKU05ld3wgZmxhZy4KKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9y
Lmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVs
ZW1lbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOiBBZGRl
ZCB8VjhDdXN0b21Db25zdHJ1Y3RvcnwuCisKIDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0
b216QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIGNhbnZhcyBhcmMoKSBtaXNzaW5nIGxpbmUg
dG8gc3RhcnQgb2YgYXJjIGlmIHN3aW5nIGlzIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMDZj
ZTRiLi4yNGY0M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3RvbS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA4YjZjOTA2Li43NzgyNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzksNiAr
NzksNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9u
RXZlbnRDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25z
dHJ1Y3RvcnMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20u
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggZjNjNjQ0MS4uNzE0NTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMxMiw3ICszMTIsNyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAg
ICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKTsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1Rl
bXBsYXRlKCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBHZXRUZW1wbGF0ZSgpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0VGVtcGxhdGUoYm9vbCBjb25zdHJ1Y3RlZEJ5SlNOZXcgPSBmYWxzZSk7CiAg
ICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVU
eXBlfSo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9i
amVjdEluZGV4KSk7CkBAIC03MDAsMTEgKzcwMCwxMSBAQCBFTkQKICAgICAvLyBHZXQgdGhlIHBy
b3h5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIERPTVdpbmRvdyBpZiBwb3NzaWJsZSB0bwogICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBpcyBjb25zdHJ1Y3RlZCBp
biB0aGUKICAgICAvLyBjb250ZXh0IG9mIHRoZSBET01XaW5kb3cgYW5kIG5vdCBpbiB0aGUgY29u
dGV4dCBvZiB0aGUgY2FsbGVyLgotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmdldENvbnN0cnVj
dG9yKHR5cGUsIFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKSk7CisgICAgcmV0
dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IodHlwZSwgVjhET01XaW5kb3c6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpLCB0cnVlKTsKIEVORAogICAgIH0gZWxzaWYgKCRpbXBsQ2xhc3NO
YW1lIGVxICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IiBvciAkaW1wbENsYXNzTmFtZSBlcSAiV29y
a2VyQ29udGV4dCIgb3IgJGltcGxDbGFzc05hbWUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiKSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICByZXR1cm4gVjhE
T01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcih0eXBlLCBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpKTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rv
cih0eXBlLCBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLCB0cnVlKTsK
IEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOyIpOwpAQCAtMjAxOCw3ICsyMDE4LDcgQEAg
RU5ECiAKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIG1ldGhvZAog
ICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZSh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKK3N0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUodjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIGJvb2wgY29uc3RydWN0ZWRC
eUpTTmV3KQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKQEAgLTIwNDksNiAr
MjA0OSw3IEBAIEVORAogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbkJlQ29uc3RydWN0ZWQifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OworICAgIGlmIChjb25zdHJ1Y3RlZEJ5SlNOZXcpCiAgICAgICAgIGRlc2MtPlNldENhbGxIYW5k
bGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiBFTkQKICAgICB9
CkBAIC0yMjMxLDcgKzIyMzIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gJHtjbGFzc05hbWV9OjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgcmV0dXJuIHRlbXBsOwogfQog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpHZXRU
ZW1wbGF0ZSgpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05h
bWV9OjpHZXRUZW1wbGF0ZShib29sIGNvbnN0cnVjdGVkQnlKU05ldykKIHsKICAgICBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50
KCk7CiAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciBy
ZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwpAQCAtMjI0MCw3ICsyMjQx
LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6
R2V0VGVtcGxhdGUoKQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZp
Z3VyZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOworICAgICAgICBDb25m
aWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpLCBjb25zdHJ1Y3RlZEJ5
SlNOZXcpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
T3B0aW9uc09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmNwcAppbmRleCBjNTZkODg1Li44MGZhN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcApAQCAtODksNiArODksMTkgQEAgYm9vbCBPcHRpb25z
T2JqZWN0OjpnZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91
YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAoreworICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpOdW1iZXI+IHY4TnVt
YmVyID0gdjhWYWx1ZS0+VG9OdW1iZXIoKTsKKyAgICBpZiAodjhOdW1iZXIuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFsdWUgPSB2OE51bWJlci0+VmFsdWUoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdjhWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L09wdGlvbnNPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmpl
Y3QuaAppbmRleCBjYzAwYzg3Li5kMWJlMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvT3B0aW9uc09iamVjdC5oCkBAIC00NSwxMSArNDUsMjkgQEAgcHVibGljOgogICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGdldEtleUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdDsKICAgICBib29sIGdldEtleUludDMyKGNvbnN0
IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBnZXRLZXlEb3Vi
bGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0
S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKICAgICBi
b29sIGdldEtleVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIGtl
eSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBn
ZXRLZXlET01TdHJpbmdMaXN0KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBnZXRLZXlLZXlSYW5nZShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7
CiAKKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB2YWx1ZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRLZXlCb29sKGtleSwgdmFsdWUpOworICAg
IH0KKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRLZXlJbnQzMihrZXksIHZhbHVlKTsK
KyAgICB9CisgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRLZXlEb3VibGUoa2V5LCB2YWx1
ZSk7CisgICAgfQorICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5U3RyaW5nKGtleSwg
dmFsdWUpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBib29sIGdldEtleShjb25zdCBTdHJpbmcm
IGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDg2YTNhMi4uZjEzMGRiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoTm9kZSogbm9k
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4KICAgICBnZXRET01Ob2RlTWFwKCkuc2V0KG5v
ZGUsIHdyYXBwZXIpOwogfQogCi12ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6
OmdldENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG9iamVjdFByb3RvdHlwZSkKK3Y4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4RE9NV3JhcHBl
cjo6Z2V0Q29uc3RydWN0b3IoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gb2JqZWN0UHJvdG90eXBlLCBib29sIGNvbnN0cnVjdGVkQnlKU05ldykKIHsKICAgICAv
LyBBIERPTSBjb25zdHJ1Y3RvciBpcyBhIGZ1bmN0aW9uIGluc3RhbmNlIGNyZWF0ZWQgZnJvbSBh
IERPTSBjb25zdHJ1Y3RvcgogICAgIC8vIHRlbXBsYXRlLiBUaGVyZSBpcyBvbmUgaW5zdGFuY2Ug
cGVyIGNvbnRleHQuIEEgRE9NIGNvbnN0cnVjdG9yIGlzCkBAIC0xMzgsNyArMTM4LDcgQEAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihXcmFwcGVy
VHlwZUluZm8qIHR5cGUsIHY4OjoKICAgICAvLyBUaGUgcmVhc29uIGZvciAyKSBpcyB0aGF0LCBp
biBTYWZhcmksIGEgRE9NIGNvbnN0cnVjdG9yIGlzIGEgbm9ybWFsIEpTCiAgICAgLy8gb2JqZWN0
LCBidXQgbm90IGEgZnVuY3Rpb24uIEhvdG1haWwgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQsIGlu
IFNhZmFyaSwKICAgICAvLyBIVE1MRWxlbWVudC5fX3Byb3RvX18gPT0gT2JqZWN0LnByb3RvdHlw
ZS4KLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRl
ID0gdHlwZS0+Z2V0VGVtcGxhdGUoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBmdW5jdGlvblRlbXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxhdGUoY29uc3RydWN0ZWRCeUpT
TmV3KTsKICAgICAvLyBHZXR0aW5nIHRoZSBmdW5jdGlvbiBtaWdodCBmYWlsIGlmIHdlJ3JlIHJ1
bm5pbmcgb3V0IG9mCiAgICAgLy8gc3RhY2sgb3IgbWVtb3J5LgogICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKQEAgLTE1MSwxNSArMTUxLDE1IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4
RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2ODo6CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi12ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBw
ZXI6OmdldENvbnN0cnVjdG9yRm9yQ29udGV4dChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERP
TVdyYXBwZXI6OmdldENvbnN0cnVjdG9yRm9yQ29udGV4dChXcmFwcGVyVHlwZUluZm8qIHR5cGUs
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIGJvb2wgY29uc3RydWN0ZWRCeUpTTmV3
KQogewogICAgIC8vIEVudGVyIHRoZSBzY29wZSBmb3IgdGhpcyBjb250ZXh0IHRvIGdldCB0aGUg
Y29ycmVjdCBjb25zdHJ1Y3Rvci4KICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4
dCk7CiAKLSAgICByZXR1cm4gZ2V0Q29uc3RydWN0b3IodHlwZSwgVjhET01XaW5kb3dTaGVsbDo6
Z2V0SGlkZGVuT2JqZWN0UHJvdG90eXBlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gZ2V0Q29uc3Ry
dWN0b3IodHlwZSwgVjhET01XaW5kb3dTaGVsbDo6Z2V0SGlkZGVuT2JqZWN0UHJvdG90eXBlKGNv
bnRleHQpLCBjb25zdHJ1Y3RlZEJ5SlNOZXcpOwogfQogCi12ODo6TG9jYWw8djg6OkZ1bmN0aW9u
PiBWOERPTVdyYXBwZXI6OmdldENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgRE9N
V2luZG93KiB3aW5kb3cpCit2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6Omdl
dENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgRE9NV2luZG93KiB3aW5kb3csIGJv
b2wgY29uc3RydWN0ZWRCeUpTTmV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+ZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTY5LDExICsxNjksMTEgQEAgdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihXcmFwcGVyVHlwZUluZm8q
IHR5cGUsIERPTVcKICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPigpOwogCi0gICAgcmV0dXJuIGdldENvbnN0cnVjdG9yRm9y
Q29udGV4dCh0eXBlLCBjb250ZXh0KTsKKyAgICByZXR1cm4gZ2V0Q29uc3RydWN0b3JGb3JDb250
ZXh0KHR5cGUsIGNvbnRleHQsIGNvbnN0cnVjdGVkQnlKU05ldyk7CiB9CiAKICNpZiBFTkFCTEUo
V09SS0VSUykKLXY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3Ry
dWN0b3IoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCBXb3JrZXJDb250ZXh0KikKK3Y4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+IFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoV3JhcHBlclR5cGVJbmZv
KiB0eXBlLCBXb3JrZXJDb250ZXh0KiwgYm9vbCBjb25zdHJ1Y3RlZEJ5SlNOZXcpCiB7CiAgICAg
V29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5KiBwcm94eSA9IGNvbnRyb2xsZXIgPyBjb250cm9sbGVyLT5wcm94eSgpIDogMDsKQEAgLTE4
NCw3ICsxODQsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6OmdldENv
bnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgV29yawogICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7CiAKLSAg
ICByZXR1cm4gZ2V0Q29uc3RydWN0b3JGb3JDb250ZXh0KHR5cGUsIGNvbnRleHQpOworICAgIHJl
dHVybiBnZXRDb25zdHJ1Y3RvckZvckNvbnRleHQodHlwZSwgY29udGV4dCwgY29uc3RydWN0ZWRC
eUpTTmV3KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oCmluZGV4IGViMjIwNTEuLjM0YzBmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC05OCwxMSArOTgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBXcmFwIEpTIG5vZGUgZmlsdGVyIGluIEMrKy4KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gd3JhcE5hdGl2ZU5vZGVGaWx0ZXIodjg6OkhhbmRsZTx2
ODo6VmFsdWU+KTsKIAotICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZ2V0
Q29uc3RydWN0b3JGb3JDb250ZXh0KFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+KTsKLSAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGdldENvbnN0
cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmplY3RQcm90
b3R5cGUpOwotICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZ2V0Q29uc3Ry
dWN0b3IoV3JhcHBlclR5cGVJbmZvKiwgRE9NV2luZG93Kik7CisgICAgICAgIHN0YXRpYyB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBnZXRDb25zdHJ1Y3RvckZvckNvbnRleHQoV3JhcHBlclR5cGVJ
bmZvKiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGJvb2wgY29uc3RydWN0ZWRCeUpTTmV3ID0g
ZmFsc2UpOworICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZ2V0Q29uc3Ry
dWN0b3IoV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iamVjdFByb3Rv
dHlwZSwgYm9vbCBjb25zdHJ1Y3RlZEJ5SlNOZXcgPSBmYWxzZSk7CisgICAgICAgIHN0YXRpYyB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBnZXRDb25zdHJ1Y3RvcihXcmFwcGVyVHlwZUluZm8qLCBE
T01XaW5kb3cqLCBib29sIGNvbnN0cnVjdGVkQnlKU05ldyA9IGZhbHNlKTsKICNpZiBFTkFCTEUo
V09SS0VSUykKLSAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGdldENvbnN0
cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyosIFdvcmtlckNvbnRleHQqKTsKKyAgICAgICAgc3RhdGlj
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGdldENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyos
IFdvcmtlckNvbnRleHQqLCBib29sIGNvbnN0cnVjdGVkQnlKU05ldyA9IGZhbHNlKTsKICNlbmRp
ZgogCiAgICAgICAgIC8vIFNldCBKUyB3cmFwcGVyIG9mIGEgRE9NIG9iamVjdCwgdGhlIGNhbGxl
ciBpbiBjaGFyZ2Ugb2YgaW5jcmVhc2UgcmVmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCBjMjY4NGQ2Li4zYWMzNjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgdjhET01TdWJ0
cmVlQ2xhc3NJZCA9IDE7CiAKLSAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKCk7CisgICAgdHlwZWRlZiB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKShib29s
IGNvbnN0cnVjdGVkQnlKU05ldyk7CiAgICAgdHlwZWRlZiB2b2lkICgqRGVyZWZPYmplY3RGdW5j
dGlvbikodm9pZCopOwogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9N
T2JqZWN0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIApAQCAtNzMsNyAr
NzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBnZXRUZW1wbGF0ZSgpIHsgcmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oKTsgfQor
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUo
Ym9vbCBjb25zdHJ1Y3RlZEJ5SlNOZXcgPSBmYWxzZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5j
dGlvbihjb25zdHJ1Y3RlZEJ5SlNOZXcpOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlcmVm
T2JqZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNDBhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudENvbnN0
cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCisjaW5jbHVkZSAiT3B0aW9uc09iamVjdC5o
IgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgor
I2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOEV2ZW50LmgiCisjaW5jbHVkZSAi
VjhOb2RlLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VHlwZSwg
dHlwZW5hbWUgRXZlbnRJbml0VHlwZT4KK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
c3RydWN0VjhFdmVudChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sICgqZmlsbGVyKShF
dmVudEluaXRUeXBlJiwgY29uc3QgT3B0aW9uc09iamVjdCYpLCBXcmFwcGVyVHlwZUluZm8qIGlu
Zm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uRXZlbnQuQ29uc3RydWN0b3IiKTsKKworICAgIGlm
ICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRP
TSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4
UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVF
cnJvcik7CisKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFy
YW1ldGVyPD4sIHR5cGUsIGFyZ3NbMF0pOworICAgIEV2ZW50SW5pdFR5cGUgZXZlbnRJbml0Owor
ICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKE9w
dGlvbnNPYmplY3QsIG9wdGlvbnMsIGFyZ3NbMV0pOworICAgICAgICBpZiAoIWZpbGxlcihldmVu
dEluaXQsIG9wdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICB9CisKKyAgICBSZWZQdHI8RXZlbnRUeXBlPiBldmVudCA9IEV2ZW50VHlwZTo6Y3JlYXRlKHR5
cGUsIGV2ZW50SW5pdCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5I
b2xkZXIoKSwgaW5mbywgZXZlbnQuZ2V0KCkpOworICAgIHJldHVybiB0b1Y4KGV2ZW50LnJlbGVh
c2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisKKyNkZWZpbmUgRElDVElPTkFSWV9TVEFSVChFdmVu
dFR5cGUpIFwKKyAgICBzdGF0aWMgYm9vbCBmaWxsIyNFdmVudFR5cGUjI0luaXQoRXZlbnQjI0lu
aXQmIGV2ZW50SW5pdCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucykgXAorICAgIHsKKwor
I2RlZmluZSBESUNUSU9OQVJZX0VORChFdmVudFR5cGUpIFwKKyAgICAgICAgcmV0dXJuIHRydWU7
IFwKKyAgICB9IFwKKyAgICAgXAorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCMjRXZlbnRU
eXBlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIFwKKyAg
ICB7IFwKKyAgICAgIHJldHVybiBjb25zdHJ1Y3RWOEV2ZW50PEV2ZW50VHlwZSwgRXZlbnRUeXBl
IyNJbml0PihhcmdzLCBmaWxsIyNFdmVudFR5cGUjI0luaXQsICZpbmZvKTsgXAorICAgIH0KKwor
I2RlZmluZSBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKHBhcmVudEV2ZW50VHlwZSkgXAorICAgIGlm
ICghZmlsbCMjcGFyZW50RXZlbnRUeXBlIyNJbml0KGV2ZW50SW5pdCkpIFwKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisjZGVmaW5lIEZJTExfUFJPUEVSVFkocHJvcGVydHlOYW1lKSBcCisgICAg
b3B0aW9ucy5nZXRLZXlWYWx1ZSgjcHJvcGVydHlOYW1lLCBldmVudEluaXQucHJvcGVydHlOYW1l
KTsgLy8gVGhpcyBjYW4gZmFpbCBidXQgaXQgaXMgT0suCisKK0lOU1RBTlRJQVRFX0FMTF9FVkVO
VF9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JTKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllf
RU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBm
MTA0NGNhLi4wNzhiODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxBdWRp
b0VsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmcKICAgICByZXR1cm4gYXJn
cy5Ib2xkZXIoKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgpCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlKGJvb2wgY29uc3RydWN0ZWRCeUpTTmV3KQogewogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAgICAgaWYgKCFj
YWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC04OSw3ICs4OSw3IEBAIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGxhdGUoCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBy
ZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVs
ZENvdW50KFY4SFRNTEF1ZGlvRWxlbWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICByZXN1
bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXcoIkhUTUxBdWRpb0VsZW1lbnQiKSk7Ci0g
ICAgcmVzdWx0LT5Jbmhlcml0KFY4SFRNTEF1ZGlvRWxlbWVudDo6R2V0VGVtcGxhdGUoKSk7Cisg
ICAgcmVzdWx0LT5Jbmhlcml0KFY4SFRNTEF1ZGlvRWxlbWVudDo6R2V0VGVtcGxhdGUoY29uc3Ry
dWN0ZWRCeUpTTmV3KSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBs
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA4YmM1ZjJjLi4xMjkz
MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
QXVkaW9FbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFY4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVj
dG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFRlbXBsYXRlKCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZShib29sIGNvbnN0cnVjdGVkQnlKU05ldyA9IGZhbHNl
KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCA2MjNmNmI4Li4zMGIyMDMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmcKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSgpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKGJvb2wgY29uc3RydWN0ZWRC
eUpTTmV3KQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gY2FjaGVkVGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBA
IC0xMDAsNyArMTAwLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgp
OwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MSW1hZ2VFbGVtZW50
OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJp
bmc6Ok5ldygiSFRNTEltYWdlRWxlbWVudCIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1M
SW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZSgpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1M
SW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShjb25zdHJ1Y3RlZEJ5SlNOZXcpKTsKIAogICAgIGNh
Y2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
cmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5oCmluZGV4IDVkYjQ5NDYuLjQ0NDllNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IgewogcHVibGljOgotICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUoKTsKKyAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRl
KGJvb2wgY29uc3RydWN0ZWRCeUpTTmV3ID0gZmFsc2UpOwogICAgIHN0YXRpYyBXcmFwcGVyVHlw
ZUluZm8gaW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMmI1OWI3NC4uZDllOTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICBy
ZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTE9wdGlvbkVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoYm9vbCBjb25zdHJ1Y3RlZEJ5SlNOZXcpCiB7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsK
ICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAgLTk4LDcgKzk4LDcgQEAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTE9wdGlvbkVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBp
bnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJ
bnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MT3B0aW9uRWxlbWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXcoIkhUTUxPcHRpb25F
bGVtZW50IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxPcHRpb25FbGVtZW50OjpHZXRU
ZW1wbGF0ZSgpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1MT3B0aW9uRWxlbWVudDo6R2V0
VGVtcGxhdGUoY29uc3RydWN0ZWRCeUpTTmV3KSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHJlc3VsdCk7CiAgICAgcmV0
dXJuIGNhY2hlZFRlbXBsYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5oCmlu
ZGV4IDJhZGYwZmUuLjkyMmViYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rv
ci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVjhIVE1M
T3B0aW9uRWxlbWVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKCk7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZShib29sIGNvbnN0
cnVjdGVkQnlKU05ldyA9IGZhbHNlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRleCBjNjdlNTk2Li5lYzkxYTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5pZGwKQEAgLTI1LDYgKzI1LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIEN1c3Rv
bVRvSlMsCiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVj
dEZ1bmN0aW9uLAorICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAogICAgICAgICBOb1N0YXRp
Y1RhYmxlcywKICAgICAgICAgUG9seW1vcnBoaWMKICAgICBdIEV2ZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105720</attachid>
            <date>2011-08-30 17:02:10 -0700</date>
            <delta_ts>2011-08-31 01:09:08 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>11396</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MzA1NmM4Li5kZjc4YTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MzAgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIGZhc3QvZXZlbnRzL2Nv
bnN0cnVjdG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCwKKyAgICAgICAgc2luY2UgdGhlIEV2
ZW50IGNvbnNydWN0b3IgaXMgbm93IGF2YWlsYWJsZSBpbiBWOC4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMS0wOC0yOSAgVG9tIFph
a3JhanNlayAgPHRvbXpAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgY2FudmFzIGFyYygpIG1p
c3NpbmcgbGluZSB0byBzdGFydCBvZiBhcmMgaWYgc3dpbmcgaXMgemVybwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGQ1
ZTMwZGEuLjkwYmJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM2NjksOCArMzY2OSw1IEBAIEJVR1dLNjcwMDcg
REVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2Vz
bnQtY3Jhc2guaHRtCiBCVUdXSzY3MDc0IFdJTiBMSU5VWCBERUJVRyA6IGZhc3QvcmVwbGFjZWQv
ZnJhbWUtcmVtb3ZlZC1kdXJpbmctcmVzaXplLmh0bWwgPSBDUkFTSAogQlVHV0s2NzA3NCBXSU4g
TElOVVggREVCVUcgOiBzY3JvbGxiYXJzL3Njcm9sbGJhci1idXR0b25zLmh0bWwgPSBDUkFTSAog
Ci0vLyBJbXBsZW1lbnQgYW4gRXZlbnQgY29uc3RydWN0b3IgaW4gVjguCi1CVUdXSzY2NzU2IDog
ZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2V2ZW50LWNvbnN0cnVjdG9ycy5odG1sID0gVEVYVAot
CiAvLyBTdGFydGVkIHRvIGZhaWwgb24gYWxsIGJvdHMgYWZ0ZXIgcjkzOTUxLgogQlVHV0s2Mzg3
OCA6IGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMuaHRtbCA9IFRFWFQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzQxZGM5Li45MmQ0MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMzAg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIEV2ZW50IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHNwZWMgb2YgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGlz
IGhlcmU6CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3Rp
cC9PdmVydmlldy5odG1sI2NvbmNlcHQtZXZlbnQtY29uc3RydWN0b3IKKyAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBmb3IgVjggaW4gVjhFdmVudENv
bnN0cnVjdG9ycy5jcHAsCisgICAgICAgIHNpbWlsYXIgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZv
ciBKU0MgaW4gSlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6IEFkZGVkIFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFdlYkNvcmUucHJv
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleURvdWJsZSk6IFJldHVybnMgYSB2YWx1ZSBvZiB0eXBl
IGRvdWJsZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4ga2V5LgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L09wdGlvbnNPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6Omdl
dEtleVZhbHVlKTogUmV0dXJucyBhIHZhbHVlIGNvcnJlc25wb25kaW5nIHRvIGEgZ2l2ZW4ga2V5
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RWOEV2ZW50KTogQWxsb3dBbGxvY2F0
aW9uOjpjdXJyZW50KCkgbWVhbnMgdGhhdCBhIERPTSBvYmplY3QgY3JlYXRlZCBieSBXZWJDb3Jl
IGlzIGdvaW5nIHRvIGJlIGp1c3Qgd3JhcHBlZCBpbnRvIGEgVjggb2JqZWN0LiBJbiB0aGlzIGNh
c2UsIHdlIHNraXAgdGhlIGNvZGUgb2YgY29uc3RydWN0b3JDYWxsYmFjaygpLgorICAgICAgICAq
IGRvbS9FdmVudC5pZGw6IEFkZGVkIHxWOEN1c3RvbUNvbnN0cnVjdG9yfC4KKwogMjAxMS0wOC0y
OSAgVG9tIFpha3JhanNlayAgPHRvbXpAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgY2FudmFz
IGFyYygpIG1pc3NpbmcgbGluZSB0byBzdGFydCBvZiBhcmMgaWYgc3dpbmcgaXMgemVybwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGMwNmNlNGIuLjI0ZjQzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIx
NDQsNiArMjE0NCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVu
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlTeW5jQ3Vz
dG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1
Y3RvcnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29u
c3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVh
ZGVyQ3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDhiNmM5MDYuLjc3ODI3ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC03OSw2ICs3OSw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEludDhBcnJheUN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQxLi5kYTIyYWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtMjA0OSw3ICsyMDQ5LDcgQEAgRU5ECiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gICAgICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZh
Y2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIo
Vjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKIEVORAogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAppbmRleCBjNTZk
ODg1Li44MGZhN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRp
b25zT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmNwcApAQCAtODksNiArODksMTkgQEAgYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlJbnQz
Mihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4
VmFsdWU7CisgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpOdW1iZXI+IHY4TnVtYmVyID0gdjhWYWx1ZS0+VG9O
dW1iZXIoKTsKKyAgICBpZiAodjhOdW1iZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgdmFsdWUgPSB2OE51bWJlci0+VmFsdWUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0
cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaAppbmRleCBjYzAwYzg3
Li5kMWJlMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25z
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5o
CkBAIC00NSwxMSArNDUsMjkgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwo
KSBjb25zdDsKICAgICBib29sIGdldEtleUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZh
bHVlKSBjb25zdDsKICAgICBib29sIGdldEtleUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQz
Ml90JiB2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBnZXRLZXlEb3VibGUoY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5U3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKICAgICBib29sIGdldEtleVN0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRLZXlET01TdHJpbmdMaXN0
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBn
ZXRLZXlLZXlSYW5nZShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAKKyAgICBib29sIGdldEtl
eVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBnZXRLZXlCb29sKGtleSwgdmFsdWUpOworICAgIH0KKyAgICBib29sIGdldEtl
eVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnZXRLZXlJbnQzMihrZXksIHZhbHVlKTsKKyAgICB9CisgICAgYm9vbCBn
ZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBnZXRLZXlEb3VibGUoa2V5LCB2YWx1ZSk7CisgICAgfQorICAgIGJv
b2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5U3RyaW5nKGtleSwgdmFsdWUpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBib29sIGdldEtleShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE3Y2YyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRDb25zdHJ1Y3RvcnMuaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgor
I2luY2x1ZGUgIk5vZGUuaCIKKworI2luY2x1ZGUgIk9wdGlvbnNPYmplY3QuaCIKKyNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKKyNpbmNsdWRlICJW
OERvY3VtZW50LmgiCisjaW5jbHVkZSAiVjhFdmVudC5oIgorI2luY2x1ZGUgIlY4Tm9kZS5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFR5cGUsIHR5cGVuYW1lIEV2
ZW50SW5pdFR5cGU+CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFY4RXZl
bnQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCAoKmZpbGxlcikoRXZlbnRJbml0VHlw
ZSYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKSwgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQoreworICAg
IElOQ19TVEFUUygiRE9NLkV2ZW50LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNv
bnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBl
RXJyb3IpOworCisgICAgaWYgKEFsbG93QWxsb2NhdGlvbjo6Y3VycmVudCgpKQorICAgICAgICBy
ZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlw
ZUVycm9yKTsKKworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgRXZlbnRJbml0VHlwZSBldmVudEluaXQ7
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMikgeworICAgICAgICBFWENFUFRJT05fQkxPQ0so
T3B0aW9uc09iamVjdCwgb3B0aW9ucywgYXJnc1sxXSk7CisgICAgICAgIGlmICghZmlsbGVyKGV2
ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIFJlZlB0cjxFdmVudFR5cGU+IGV2ZW50ID0gRXZlbnRUeXBlOjpjcmVhdGUo
dHlwZSwgZXZlbnRJbml0KTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdz
LkhvbGRlcigpLCBpbmZvLCBldmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgoZXZlbnQucmVs
ZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKK30KKworI2RlZmluZSBESUNUSU9OQVJZX1NUQVJUKEV2
ZW50VHlwZSkgXAorICAgIHN0YXRpYyBib29sIGZpbGwjI0V2ZW50VHlwZSMjSW5pdChFdmVudCMj
SW5pdCYgZXZlbnRJbml0LCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zKSBcCisgICAgewor
CisjZGVmaW5lIERJQ1RJT05BUllfRU5EKEV2ZW50VHlwZSkgXAorICAgICAgICByZXR1cm4gdHJ1
ZTsgXAorICAgIH0gXAorICAgICBcCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4IyNFdmVu
dFR5cGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgXAor
ICAgIHsgXAorICAgICAgcmV0dXJuIGNvbnN0cnVjdFY4RXZlbnQ8RXZlbnRUeXBlLCBFdmVudFR5
cGUjI0luaXQ+KGFyZ3MsIGZpbGwjI0V2ZW50VHlwZSMjSW5pdCwgJmluZm8pOyBcCisgICAgfQor
CisjZGVmaW5lIEZJTExfUEFSRU5UX1BST1BFUlRJRVMocGFyZW50RXZlbnRUeXBlKSBcCisgICAg
aWYgKCFmaWxsIyNwYXJlbnRFdmVudFR5cGUjI0luaXQoZXZlbnRJbml0KSkgXAorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUgRklMTF9QUk9QRVJUWShwcm9wZXJ0eU5hbWUpIFwKKyAg
ICBvcHRpb25zLmdldEtleVZhbHVlKCNwcm9wZXJ0eU5hbWUsIGV2ZW50SW5pdC5wcm9wZXJ0eU5h
bWUpOyAvLyBUaGlzIGNhbiBmYWlsIGJ1dCBpdCBpcyBPSy4KKworSU5TVEFOVElBVEVfQUxMX0VW
RU5UX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFS
WV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCmluZGV4IGM2N2U1OTYuLmVjOTFhMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmlkbApAQCAtMjUsNiArMjUsNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAg
ICAgQ3VzdG9tVG9KUywKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9t
Q29uc3RydWN0RnVuY3Rpb24sCisgICAgICAgIFY4Q3VzdG9tQ29uc3RydWN0b3IsCiAgICAgICAg
IE5vU3RhdGljVGFibGVzLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0gRXZlbnQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105724</attachid>
            <date>2011-08-30 17:36:58 -0700</date>
            <delta_ts>2011-08-31 01:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66756-20110830173657.patch</filename>
            <type>text/plain</type>
            <size>12000</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM5ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MzA1NmM4ZTNkZTU3MmYxNzE4MzYz
NGQ4ZjhlNzY5ZTg0ZmM2ODMxLi40YTIxYmIyMWI4NDU4ZjNiY2NhNjQ5ZDNlYzg5ZjhlZGRiMjFj
NWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgtMzAgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIEV2ZW50IGNvbnN0cnVj
dG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IFVuc2tpcCBmYXN0
L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwuCisKIDIwMTEtMDgt
MjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIGNhbnZh
cyBhcmMoKSBtaXNzaW5nIGxpbmUgdG8gc3RhcnQgb2YgYXJjIGlmIHN3aW5nIGlzIHplcm8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAppbmRleCBkNWUzMGRhNDY4ODNhNjJkNmRhMDEzNTA2MGUyOGZkMTNlMDFkYjM4Li45MGJiYTE1
ZGNmYmJkY2IzYWEzOTA0ODA5YzEwYmQwOWQwODYzOTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zNjY5LDggKzM2
NjksNSBAQCBCVUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2dlbmVyYXRlZC1iZWZvcmUtYW5k
LWFmdGVyLWNvdW50ZXItZG9lc250LWNyYXNoLmh0bQogQlVHV0s2NzA3NCBXSU4gTElOVVggREVC
VUcgOiBmYXN0L3JlcGxhY2VkL2ZyYW1lLXJlbW92ZWQtZHVyaW5nLXJlc2l6ZS5odG1sID0gQ1JB
U0gKIEJVR1dLNjcwNzQgV0lOIExJTlVYIERFQlVHIDogc2Nyb2xsYmFycy9zY3JvbGxiYXItYnV0
dG9ucy5odG1sID0gQ1JBU0gKIAotLy8gSW1wbGVtZW50IGFuIEV2ZW50IGNvbnN0cnVjdG9yIGlu
IFY4LgotQlVHV0s2Njc1NiA6IGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9ldmVudC1jb25zdHJ1
Y3RvcnMuaHRtbCA9IFRFWFQKLQogLy8gU3RhcnRlZCB0byBmYWlsIG9uIGFsbCBib3RzIGFmdGVy
IHI5Mzk1MS4KIEJVR1dLNjM4NzggOiBmYXN0L2RvbS9kb20tY29uc3RydWN0b3JzLmh0bWwgPSBU
RVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNWM0MWRjOWI2NzA3YjQ0MGYzYzJhNGE0OGI0NTMwMDRlZGJlMjky
Mi4uOTJkNDBkYzIyMTc3ZDQ4ZGU2ZjdhMDY1NTZlZjAwMmZkZDA4MTU2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDExLTA4LTMwICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBFdmVudCBjb25zdHJ1Y3RvciBmb3IgVjgu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzcGVj
IG9mIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBpcyBoZXJlOgorICAgICAgICBodHRwOi8vZHZjcy53
My5vcmcvaGcvZG9tY29yZS9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCNjb25jZXB0LWV2ZW50
LWNvbnN0cnVjdG9yCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgRXZlbnQgY29u
c3RydWN0b3IgZm9yIFY4IGluIFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLAorICAgICAgICBzaW1p
bGFyIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgSlNDIGluIEpTRXZlbnRDb25zdHJ1Y3RvcnMu
Y3BwLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBWOEV2ZW50Q29uc3RydWN0b3Jz
LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25zT2JqZWN0OjpnZXRLZXlEb3Vi
bGUpOiBSZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBkb3VibGUgY29ycmVzcG9uZGluZyB0byBhIGdp
dmVuIGtleS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpPcHRpb25zT2JqZWN0OjpnZXRLZXlWYWx1ZSk6IFJldHVybnMgYSB2YWx1ZSBj
b3JyZXNucG9uZGluZyB0byBhIGdpdmVuIGtleS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0VjhFdmVudCk6IEFsbG93QWxsb2NhdGlvbjo6Y3VycmVudCgpIG1lYW5zIHRoYXQgYSBE
T00gb2JqZWN0IGNyZWF0ZWQgYnkgV2ViQ29yZSBpcyBnb2luZyB0byBiZSBqdXN0IHdyYXBwZWQg
aW50byBhIFY4IG9iamVjdC4gSW4gdGhpcyBjYXNlLCB3ZSBza2lwIHRoZSBjb2RlIG9mIGNvbnN0
cnVjdG9yQ2FsbGJhY2soKS4KKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOiBBZGRlZCB8VjhDdXN0
b21Db25zdHJ1Y3RvcnwuCisKIDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVh
dXJvcmEub3JnPgogCiAgICAgICAgIGNhbnZhcyBhcmMoKSBtaXNzaW5nIGxpbmUgdG8gc3RhcnQg
b2YgYXJjIGlmIHN3aW5nIGlzIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMDZjZTRiNjMyZWI1
MmUyZWI2MTQ1MzFiYjZmYjhmNTAzNjc4NjUwLi4yNGY0M2E5ZTY4ZWM1MDM1NmQ4Y2ZjOTFjM2Y1
NjBlZmQyYmJiNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3RvbS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA4YjZjOTA2MzU5MGUyN2NmNDQ3YmRhNmZiOGI0YTI0MGQ4NjU2YjFhLi43
NzgyNzgwZjlhZWYxNGJkZTBjZDI5NzRlNjBmM2Y0MjQzY2VmZDdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNzksNiArNzksNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFW
aWV3Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlv
bkV2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9y
aWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRDb25zdHJ1Y3RvcnMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Rmxv
YXQzMkFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0
NjRBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJy
YXlDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZjNjNjQ0MThmNzkxZmM3MGQ3ZjcxZDY5YjhlODhmMjNm
MzZkNmEyMC4uZGEyMmFlM2NlOGQ4ZjEzNWQxYzVhNDExMTlmMThkNjllOGIwYWFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTIwNDksNyArMjA0OSw3IEBAIEVORAogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwotICAgICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNl
TmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4
JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiBFTkQKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAKaW5kZXggYzU2ZDg4
NWQ0ODM1YmMyZTlmYzMxMGJlYWFhOGY0MGUxMGUwOTVmMC4uODBmYTdmZWFmYjUwMTAxMDA2MzFi
OWRhN2VlMmI2M2Q4MDE2OWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvT3B0aW9uc09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0
aW9uc09iamVjdC5jcHAKQEAgLTg5LDYgKzg5LDE5IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0
S2V5SW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleURvdWJsZShjb25zdCBT
dHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QKK3sKKyAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6TnVtYmVyPiB2OE51bWJlciA9IHY4VmFs
dWUtPlRvTnVtYmVyKCk7CisgICAgaWYgKHY4TnVtYmVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHZhbHVlID0gdjhOdW1iZXItPlZhbHVlKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4
VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKaW5kZXgg
Y2MwMGM4NzhkMDU2NGM2ODJiZWIzM2U4ZjM4ZGYxMzIxNGNhNjY3Yy4uZDFiZTBiNDY5ODg5ODE1
ZWUzZjU1ZjdhMzZjOTJjMGMxODY0Njc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L09wdGlvbnNPYmplY3QuaApAQCAtNDUsMTEgKzQ1LDI5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBnZXRLZXlCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sJiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBnZXRLZXlJbnQzMihjb25zdCBT
dHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZ2V0S2V5RG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdDsKICAgICBib29sIGdldEtl
eVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9v
bCBnZXRLZXlTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiBrZXks
IFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0
S2V5RE9NU3RyaW5nTGlzdChjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gZ2V0S2V5S2V5UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Owog
CisgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFsdWUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5Qm9vbChrZXksIHZhbHVlKTsKKyAgICB9
CisgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5SW50MzIoa2V5LCB2YWx1ZSk7Cisg
ICAgfQorICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFs
dWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5RG91YmxlKGtleSwgdmFsdWUp
OworICAgIH0KKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcm
IHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEtleVN0cmluZyhrZXksIHZh
bHVlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBnZXRLZXkoY29uc3QgU3RyaW5nJiBr
ZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hN2NmMmJhZTZkYjIxYmQxZWNkOTVlNDQ3NTQ1YWQzOWM0NzY4NjA1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25z
dHJ1Y3RvcnMuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkV2ZW50Q29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNpbmNsdWRlICJP
cHRpb25zT2JqZWN0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nTWFjcm9zLmgiCisjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgorI2luY2x1ZGUgIlY4RXZlbnQu
aCIKKyNpbmNsdWRlICJWOE5vZGUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgRXZlbnRUeXBlLCB0eXBlbmFtZSBFdmVudEluaXRUeXBlPgorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RWOEV2ZW50KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJv
b2wgKCpmaWxsZXIpKEV2ZW50SW5pdFR5cGUmLCBjb25zdCBPcHRpb25zT2JqZWN0JiksIFdyYXBw
ZXJUeXBlSW5mbyogaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5FdmVudC5Db25zdHJ1Y3Rv
ciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEg
ZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIGlmIChBbGxvd0FsbG9jYXRp
b246OmN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdo
IGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5cGUsIGFyZ3NbMF0pOworICAg
IEV2ZW50SW5pdFR5cGUgZXZlbnRJbml0OworICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsK
KyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKE9wdGlvbnNPYmplY3QsIG9wdGlvbnMsIGFyZ3NbMV0p
OworICAgICAgICBpZiAoIWZpbGxlcihldmVudEluaXQsIG9wdGlvbnMpKQorICAgICAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8RXZlbnRUeXBlPiBl
dmVudCA9IEV2ZW50VHlwZTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CisKKyAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgaW5mbywgZXZlbnQuZ2V0KCkpOwor
ICAgIHJldHVybiB0b1Y4KGV2ZW50LnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisKKyNk
ZWZpbmUgRElDVElPTkFSWV9TVEFSVChFdmVudFR5cGUpIFwKKyAgICBzdGF0aWMgYm9vbCBmaWxs
IyNFdmVudFR5cGUjI0luaXQoRXZlbnQjI0luaXQmIGV2ZW50SW5pdCwgY29uc3QgT3B0aW9uc09i
amVjdCYgb3B0aW9ucykgXAorICAgIHsKKworI2RlZmluZSBESUNUSU9OQVJZX0VORChFdmVudFR5
cGUpIFwKKyAgICAgICAgcmV0dXJuIHRydWU7IFwKKyAgICB9IFwKKyAgICAgXAorICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOCMjRXZlbnRUeXBlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpIFwKKyAgICB7IFwKKyAgICAgIHJldHVybiBjb25zdHJ1Y3RW
OEV2ZW50PEV2ZW50VHlwZSwgRXZlbnRUeXBlIyNJbml0PihhcmdzLCBmaWxsIyNFdmVudFR5cGUj
I0luaXQsICZpbmZvKTsgXAorICAgIH0KKworI2RlZmluZSBGSUxMX1BBUkVOVF9QUk9QRVJUSUVT
KHBhcmVudEV2ZW50VHlwZSkgXAorICAgIGlmICghZmlsbCMjcGFyZW50RXZlbnRUeXBlIyNJbml0
KGV2ZW50SW5pdCkpIFwKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjZGVmaW5lIEZJTExfUFJP
UEVSVFkocHJvcGVydHlOYW1lKSBcCisgICAgb3B0aW9ucy5nZXRLZXlWYWx1ZSgjcHJvcGVydHlO
YW1lLCBldmVudEluaXQucHJvcGVydHlOYW1lKTsgLy8gVGhpcyBjYW4gZmFpbCBidXQgaXQgaXMg
T0suCisKK0lOU1RBTlRJQVRFX0FMTF9FVkVOVF9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JTKERJ
Q1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBG
SUxMX1BST1BFUlRZKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbApp
bmRleCBjNjdlNTk2YWU1YmE2MzQxZmMzZmM5MjU3OGJmOTJmZTYyYTc0YWQ5Li5lYzkxYTE1ZWZj
YTkzOGQwYjNjNTQ3OWQwYmMzN2FiYTcxZTIwZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTI1
LDYgKzI1LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIEN1c3RvbVRvSlMsCiAgICAgICAg
IENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAorICAg
ICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAogICAgICAgICBOb1N0YXRpY1RhYmxlcywKICAgICAg
ICAgUG9seW1vcnBoaWMKICAgICBdIEV2ZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105756</attachid>
            <date>2011-08-31 01:09:18 -0700</date>
            <delta_ts>2011-08-31 10:13:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66756-20110831010917.patch</filename>
            <type>text/plain</type>
            <size>11985</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjcyMDk2NzE5YTQzMzkyMWQ4ZGI2
M2Y0ZjhjZTJhYWU5YTJiMGRiLi45MTVlNTA1YTBkYTAxNjY0OGMyY2VmZGFlOWE0ZjZiMDczYzFj
NGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgtMzAgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIEV2ZW50IGNvbnN0cnVj
dG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IFVuc2tpcCBmYXN0
L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwuCisKIDIwMTEtMDgt
MzAgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVXBkYXRlIHJlc3VsdCBkdWUgdG8gcjk0MTE0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDMwMDkwNzJjMzU3NWJj
ZTk5OGU2MTg1NjcxMjRlMjE1Y2RlYWY0YmYuLjhkYTBlYmYwNGFlZDVhMDM2ZjljNjVkY2ZmNjI2
YTFiZjM0NGQ4ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM2NzUsOSArMzY3NSw2IEBAIEJVR1dLNjcwMDcgREVC
VUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2VzbnQt
Y3Jhc2guaHRtCiBCVUdXSzY3MjA0IDogZmFzdC9tdWx0aWNvbC9pbmhlcml0LWNvbHVtbi12YWx1
ZXMuaHRtbCA9IE1JU1NJTkcgRkFJTAogQlVHV0s2NzIwNCA6IGZhc3QvbXVsdGljb2wvaW5pdGlh
bC1jb2x1bW4tdmFsdWVzLmh0bWwgPSBNSVNTSU5HIEZBSUwKIAotLy8gSW1wbGVtZW50IGFuIEV2
ZW50IGNvbnN0cnVjdG9yIGluIFY4LgotQlVHV0s2Njc1NiA6IGZhc3QvZXZlbnRzL2NvbnN0cnVj
dG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCA9IFRFWFQKLQogLy8gU3RhcnRlZCB0byBmYWls
IG9uIGFsbCBib3RzIGFmdGVyIHI5Mzk1MS4KIEJVR1dLNjM4NzggOiBmYXN0L2RvbS9kb20tY29u
c3RydWN0b3JzLmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTI4NDhjYjAzNWQ5OWExZjFi
MjViNjk5NjFmMTUwMjE3MTJjMWJjLi42OGI4YjNiYjkxYzdkN2ExMjNlN2E1NGY4YWZlYzU2MWEy
N2IyNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMzAgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIEV2ZW50
IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHNwZWMgb2YgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGlzIGhlcmU6Cisg
ICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmll
dy5odG1sI2NvbmNlcHQtZXZlbnQtY29uc3RydWN0b3IKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBmb3IgVjggaW4gVjhFdmVudENvbnN0cnVjdG9y
cy5jcHAsCisgICAgICAgIHNpbWlsYXIgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZvciBKU0MgaW4g
SlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZGVk
IFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlv
bnNPYmplY3Q6OmdldEtleURvdWJsZSk6IFJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBj
b3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4ga2V5LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L09wdGlv
bnNPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
KTogUmV0dXJucyBhIHZhbHVlIGNvcnJlc25wb25kaW5nIHRvIGEgZ2l2ZW4ga2V5LgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RWOEV2ZW50KTogQWxsb3dBbGxvY2F0aW9uOjpjdXJy
ZW50KCkgbWVhbnMgdGhhdCBhIERPTSBvYmplY3QgY3JlYXRlZCBieSBXZWJDb3JlIGlzIGdvaW5n
IHRvIGJlIGp1c3Qgd3JhcHBlZCBpbnRvIGEgVjggb2JqZWN0LiBJbiB0aGlzIGNhc2UsIHdlIHNr
aXAgdGhlIGNvZGUgb2YgY29uc3RydWN0b3JDYWxsYmFjaygpLgorICAgICAgICAqIGRvbS9FdmVu
dC5pZGw6IEFkZGVkIHxWOEN1c3RvbUNvbnN0cnVjdG9yfC4KKwogMjAxMS0wOC0zMCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gZ3N0cmVh
bWVyLyBmaWxlcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBNZWRpYVBsYXllciBuZWVkIFZJREVP
IGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGU5MzQxZWRiNmFiMzdlYjI4ODQwYzNjODFjMDFk
NWQzZDhkNjU0NTYuLmJhNzIyZGNiZjZlOTE2ZTcwZTAwNmY5NDVlOTM1YzkwNzcxODdjNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTIxNDYsNiArMjE0Niw3IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDMw
MGVjYzczNWVlNDBlZDZkNmIzYWU3MTBlYjM0NGY1OWZkMjdlNWUuLjNhNGVhMTIyYzc4M2MxOGY5
MThlNTYxNzY3NjA1MjIyMmEyNmQxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03OSw2ICs3OSw3IEBA
IHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9y
cy5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCBmM2M2NDQxOGY3OTFmYzcwZDdmNzFkNjliOGU4OGYyM2YzNmQ2YTIwLi5kYTIyYWUz
Y2U4ZDhmMTM1ZDFjNWE0MTExOWYxOGQ2OWU4YjBhYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjA0OSw3ICsyMDQ5
LDcgQEAgRU5ECiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fu
QmVDb25zdHJ1Y3RlZCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0g
ICAgICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0
b3JDYWxsYmFjayk7CisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKIEVORAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAppbmRleCBjNTZkODg1ZDQ4MzViYzJlOWZjMzEw
YmVhYWE4ZjQwZTEwZTA5NWYwLi44MGZhN2ZlYWZiNTAxMDEwMDYzMWI5ZGE3ZWUyYjYzZDgwMTY5
ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcApA
QCAtODksNiArODksMTkgQEAgYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlJbnQzMihjb25zdCBT
dHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3Vi
bGUmIHZhbHVlKSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7Cisg
ICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdjg6OkxvY2FsPHY4OjpOdW1iZXI+IHY4TnVtYmVyID0gdjhWYWx1ZS0+VG9OdW1iZXIoKTsK
KyAgICBpZiAodjhOdW1iZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
dmFsdWUgPSB2OE51bWJlci0+VmFsdWUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBP
cHRpb25zT2JqZWN0OjpnZXRLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaAppbmRleCBjYzAwYzg3OGQwNTY0YzY4
MmJlYjMzZThmMzhkZjEzMjE0Y2E2NjdjLi5kMWJlMGI0Njk4ODk4MTVlZTNmNTVmN2EzNmM5MmMw
YzE4NjQ2NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25z
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5o
CkBAIC00NSwxMSArNDUsMjkgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwo
KSBjb25zdDsKICAgICBib29sIGdldEtleUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZh
bHVlKSBjb25zdDsKICAgICBib29sIGdldEtleUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQz
Ml90JiB2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBnZXRLZXlEb3VibGUoY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5U3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKICAgICBib29sIGdldEtleVN0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRLZXlET01TdHJpbmdMaXN0
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBn
ZXRLZXlLZXlSYW5nZShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAKKyAgICBib29sIGdldEtl
eVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBnZXRLZXlCb29sKGtleSwgdmFsdWUpOworICAgIH0KKyAgICBib29sIGdldEtl
eVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnZXRLZXlJbnQzMihrZXksIHZhbHVlKTsKKyAgICB9CisgICAgYm9vbCBn
ZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBnZXRLZXlEb3VibGUoa2V5LCB2YWx1ZSk7CisgICAgfQorICAgIGJv
b2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0S2V5U3RyaW5nKGtleSwgdmFsdWUpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBib29sIGdldEtleShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNGY5MzU0
NTE2NGU0NDAxYWY2MzRlNDVhNWVlZjRlNzcwOTQ1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKQEAg
LTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRDb25zdHJ1
Y3RvcnMuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKworI2luY2x1ZGUgIk9wdGlvbnNPYmplY3QuaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKKyNp
bmNsdWRlICJWOERvY3VtZW50LmgiCisjaW5jbHVkZSAiVjhFdmVudC5oIgorI2luY2x1ZGUgIlY4
Tm9kZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFdmVudFR5cGUsIHR5
cGVuYW1lIEV2ZW50SW5pdFR5cGU+CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdFY4RXZlbnQoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCAoKmZpbGxlcikoRXZl
bnRJbml0VHlwZSYsIGNvbnN0IE9wdGlvbnNPYmplY3QmKSwgV3JhcHBlclR5cGVJbmZvKiBpbmZv
KQoreworICAgIElOQ19TVEFUUygiRE9NLkV2ZW50LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAo
IWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00g
b2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFBy
b3h5OjpUeXBlRXJyb3IpOworCisgICAgaWYgKEFsbG93QWxsb2NhdGlvbjo6Y3VycmVudCgpKQor
ICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQ
cm94eTo6VHlwZUVycm9yKTsKKworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgRXZlbnRJbml0VHlwZSBl
dmVudEluaXQ7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMikgeworICAgICAgICBFWENFUFRJ
T05fQkxPQ0soT3B0aW9uc09iamVjdCwgb3B0aW9ucywgYXJnc1sxXSk7CisgICAgICAgIGlmICgh
ZmlsbGVyKGV2ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjxFdmVudFR5cGU+IGV2ZW50ID0gRXZlbnRUeXBl
OjpjcmVhdGUodHlwZSwgZXZlbnRJbml0KTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcihhcmdzLkhvbGRlcigpLCBpbmZvLCBldmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgo
ZXZlbnQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKK30KKworI2RlZmluZSBESUNUSU9OQVJZ
X1NUQVJUKEV2ZW50VHlwZSkgXAorICAgIHN0YXRpYyBib29sIGZpbGwjI0V2ZW50VHlwZSMjSW5p
dChFdmVudCMjSW5pdCYgZXZlbnRJbml0LCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zKSBc
CisgICAgeworCisjZGVmaW5lIERJQ1RJT05BUllfRU5EKEV2ZW50VHlwZSkgXAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsgXAorICAgIH0gXAorICAgICBcCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4IyNFdmVudFR5cGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykgXAorICAgIHsgXAorICAgICAgcmV0dXJuIGNvbnN0cnVjdFY4RXZlbnQ8RXZlbnRUeXBl
LCBFdmVudFR5cGUjI0luaXQ+KGFyZ3MsIGZpbGwjI0V2ZW50VHlwZSMjSW5pdCwgJmluZm8pOyBc
CisgICAgfQorCisjZGVmaW5lIEZJTExfUEFSRU5UX1BST1BFUlRJRVMocGFyZW50RXZlbnRUeXBl
KSBcCisgICAgaWYgKCFmaWxsIyNwYXJlbnRFdmVudFR5cGUjI0luaXQoZXZlbnRJbml0KSkgXAor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUgRklMTF9QUk9QRVJUWShwcm9wZXJ0eU5h
bWUpIFwKKyAgICBvcHRpb25zLmdldEtleVZhbHVlKCNwcm9wZXJ0eU5hbWUsIGV2ZW50SW5pdC5w
cm9wZXJ0eU5hbWUpOyAvLyBUaGlzIGNhbiBmYWlsIGJ1dCBpdCBpcyBPSy4KKworSU5TVEFOVElB
VEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBE
SUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkKKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRleCBjNjdlNTk2YWU1
YmE2MzQxZmMzZmM5MjU3OGJmOTJmZTYyYTc0YWQ5Li5lYzkxYTE1ZWZjYTkzOGQwYjNjNTQ3OWQw
YmMzN2FiYTcxZTIwZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTI1LDYgKzI1LDcgQEAgbW9k
dWxlIGV2ZW50cyB7CiAgICAgICAgIEN1c3RvbVRvSlMsCiAgICAgICAgIENhbkJlQ29uc3RydWN0
ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAorICAgICAgICBWOEN1c3RvbUNv
bnN0cnVjdG9yLAogICAgICAgICBOb1N0YXRpY1RhYmxlcywKICAgICAgICAgUG9seW1vcnBoaWMK
ICAgICBdIEV2ZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105787</attachid>
            <date>2011-08-31 10:13:12 -0700</date>
            <delta_ts>2011-08-31 12:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66756-20110831101311.patch</filename>
            <type>text/plain</type>
            <size>11983</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjcyMDk2NzE5YTQzMzkyMWQ4ZGI2
M2Y0ZjhjZTJhYWU5YTJiMGRiLi45MTVlNTA1YTBkYTAxNjY0OGMyY2VmZGFlOWE0ZjZiMDczYzFj
NGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgtMzAgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIEV2ZW50IGNvbnN0cnVj
dG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IFVuc2tpcCBmYXN0
L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZXZlbnQtY29uc3RydWN0b3JzLmh0bWwuCisKIDIwMTEtMDgt
MzAgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVXBkYXRlIHJlc3VsdCBkdWUgdG8gcjk0MTE0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDMwMDkwNzJjMzU3NWJj
ZTk5OGU2MTg1NjcxMjRlMjE1Y2RlYWY0YmYuLjhkYTBlYmYwNGFlZDVhMDM2ZjljNjVkY2ZmNjI2
YTFiZjM0NGQ4ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM2NzUsOSArMzY3NSw2IEBAIEJVR1dLNjcwMDcgREVC
VUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2VzbnQt
Y3Jhc2guaHRtCiBCVUdXSzY3MjA0IDogZmFzdC9tdWx0aWNvbC9pbmhlcml0LWNvbHVtbi12YWx1
ZXMuaHRtbCA9IE1JU1NJTkcgRkFJTAogQlVHV0s2NzIwNCA6IGZhc3QvbXVsdGljb2wvaW5pdGlh
bC1jb2x1bW4tdmFsdWVzLmh0bWwgPSBNSVNTSU5HIEZBSUwKIAotLy8gSW1wbGVtZW50IGFuIEV2
ZW50IGNvbnN0cnVjdG9yIGluIFY4LgotQlVHV0s2Njc1NiA6IGZhc3QvZXZlbnRzL2NvbnN0cnVj
dG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbCA9IFRFWFQKLQogLy8gU3RhcnRlZCB0byBmYWls
IG9uIGFsbCBib3RzIGFmdGVyIHI5Mzk1MS4KIEJVR1dLNjM4NzggOiBmYXN0L2RvbS9kb20tY29u
c3RydWN0b3JzLmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTI4NDhjYjAzNWQ5OWExZjFi
MjViNjk5NjFmMTUwMjE3MTJjMWJjLi5iMTAyYjhmYzJhMjU1ZmJiNWEzZmJiYjc1MTlkZmNhN2Y1
ODFkN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMzAgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIEV2ZW50
IGNvbnN0cnVjdG9yIGZvciBWOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHNwZWMgb2YgdGhlIEV2ZW50IGNvbnN0cnVjdG9yIGlzIGhlcmU6Cisg
ICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmll
dy5odG1sI2NvbmNlcHQtZXZlbnQtY29uc3RydWN0b3IKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRoZSBFdmVudCBjb25zdHJ1Y3RvciBmb3IgVjggaW4gVjhFdmVudENvbnN0cnVjdG9y
cy5jcHAsCisgICAgICAgIHNpbWlsYXIgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZvciBKU0MgaW4g
SlNFdmVudENvbnN0cnVjdG9ycy5jcHAuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZGVk
IFY4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlv
bnNPYmplY3Q6OmdldEtleURvdWJsZSk6IFJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBj
b3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4ga2V5LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L09wdGlv
bnNPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
KTogUmV0dXJucyBhIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBrZXkuCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFY4RXZlbnQpOiBBbGxvd0FsbG9jYXRpb246OmN1cnJl
bnQoKSBtZWFucyB0aGF0IGEgRE9NIG9iamVjdCBjcmVhdGVkIGJ5IFdlYkNvcmUgaXMgZ29pbmcg
dG8gYmUganVzdCB3cmFwcGVkIGludG8gYSBWOCBvYmplY3QuIEluIHRoaXMgY2FzZSwgd2Ugc2tp
cCB0aGUgY29kZSBvZiBjb25zdHJ1Y3RvckNhbGxiYWNrKCkuCisgICAgICAgICogZG9tL0V2ZW50
LmlkbDogQWRkZWQgfFY4Q3VzdG9tQ29uc3RydWN0b3J8LgorCiAyMDExLTA4LTMwICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBnc3RyZWFt
ZXIvIGZpbGVzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIE1lZGlhUGxheWVyIG5lZWQgVklERU8g
Z3VhcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTkzNDFlZGI2YWIzN2ViMjg4NDBjM2M4MWMwMWQ1
ZDNkOGQ2NTQ1Ni4uYmE3MjJkY2JmNmU5MTZlNzBlMDA2Zjk0NWU5MzVjOTA3NzE4N2M2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjE0Niw2ICsyMTQ2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhFbnRyeVN5bmNDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzAw
ZWNjNzM1ZWU0MGVkNmQ2YjNhZTcxMGViMzQ0ZjU5ZmQyN2U1ZS4uM2E0ZWExMjJjNzgzYzE4Zjkx
OGU1NjE3Njc2MDUyMjIyYTI2ZDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTc5LDYgKzc5LDcgQEAg
djggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3Jz
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0MzJBcnJheUN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CmluZGV4IGYzYzY0NDE4Zjc5MWZjNzBkN2Y3MWQ2OWI4ZTg4ZjIzZjM2ZDZhMjAuLmRhMjJhZTNj
ZThkOGYxMzVkMWM1YTQxMTE5ZjE4ZDY5ZThiMGFhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMDQ5LDcgKzIwNDks
NyBAQCBFTkQKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5C
ZUNvbnN0cnVjdGVkIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAg
ICAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKTsKKyAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06
OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogRU5ECiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCmluZGV4IGM1NmQ4ODVkNDgzNWJjMmU5ZmMzMTBi
ZWFhYThmNDBlMTBlMDk1ZjAuLjgwZmE3ZmVhZmI1MDEwMTAwNjMxYjlkYTdlZTJiNjNkODAxNjlm
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCkBA
IC04OSw2ICs4OSwxOSBAQCBib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleUludDMyKGNvbnN0IFN0
cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJs
ZSYgdmFsdWUpIGNvbnN0Cit7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAg
ICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB2ODo6TG9jYWw8djg6Ok51bWJlcj4gdjhOdW1iZXIgPSB2OFZhbHVlLT5Ub051bWJlcigpOwor
ICAgIGlmICh2OE51bWJlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2
YWx1ZSA9IHY4TnVtYmVyLT5WYWx1ZSgpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIE9w
dGlvbnNPYmplY3Q6OmdldEtleVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCmluZGV4IGNjMDBjODc4ZDA1NjRjNjgy
YmViMzNlOGYzOGRmMTMyMTRjYTY2N2MuLmQxYmUwYjQ2OTg4OTgxNWVlM2Y1NWY3YTM2YzkyYzBj
MTg2NDY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgK
QEAgLTQ1LDExICs0NSwyOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgp
IGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFs
dWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5SW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMy
X3QmIHZhbHVlKSBjb25zdDsKKyAgICBib29sIGdldEtleURvdWJsZShjb25zdCBTdHJpbmcmIGtl
eSwgZG91YmxlJiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBnZXRLZXlTdHJpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5U3RyaW5nV2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldEtleURPTVN0cmluZ0xpc3Qo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGdl
dEtleUtleVJhbmdlKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAorICAgIGJvb2wgZ2V0S2V5
VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdldEtleUJvb2woa2V5LCB2YWx1ZSk7CisgICAgfQorICAgIGJvb2wgZ2V0S2V5
VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdldEtleUludDMyKGtleSwgdmFsdWUpOworICAgIH0KKyAgICBib29sIGdl
dEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdldEtleURvdWJsZShrZXksIHZhbHVlKTsKKyAgICB9CisgICAgYm9v
bCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBnZXRLZXlTdHJpbmcoa2V5LCB2YWx1ZSk7CisgICAgfQorCiBw
cml2YXRlOgogICAgIGJvb2wgZ2V0S2V5KGNvbnN0IFN0cmluZyYga2V5LCB2ODo6TG9jYWw8djg6
OlZhbHVlPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY2ZGUzZTAw
ZWY4OGZiN2MzNzY5NTdjYTNkNjRjNmRhOWYxYjFmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudENvbnN0cnVj
dG9ycy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdt
ZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCisjaW5jbHVkZSAiT3B0aW9uc09iamVjdC5oIgor
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2lu
Y2x1ZGUgIlY4RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOEV2ZW50LmgiCisjaW5jbHVkZSAiVjhO
b2RlLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlw
ZW5hbWUgRXZlbnRJbml0VHlwZT4KK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3Ry
dWN0VjhFdmVudChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sICgqZmlsbGVyKShFdmVu
dEluaXRUeXBlJiwgY29uc3QgT3B0aW9uc09iamVjdCYpLCBXcmFwcGVyVHlwZUluZm8qIGluZm8p
Cit7CisgICAgSU5DX1NUQVRTKCJET00uRXZlbnQuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICgh
YXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBv
YmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJv
eHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQWxsb3dBbGxvY2F0aW9uOjpjdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAx
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFBy
b3h5OjpUeXBlRXJyb3IpOworCisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DSyhWOFBhcmFtZXRlcjw+LCB0eXBlLCBhcmdzWzBdKTsKKyAgICBFdmVudEluaXRUeXBlIGV2
ZW50SW5pdDsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAyKSB7CisgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvcHRpb25zLCBhcmdzWzFdKTsKKyAgICAgICAgaWYgKCFm
aWxsZXIoZXZlbnRJbml0LCBvcHRpb25zKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPEV2ZW50VHlwZT4gZXZlbnQgPSBFdmVudFR5cGU6
OmNyZWF0ZSh0eXBlLCBldmVudEluaXQpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFw
cGVyKGFyZ3MuSG9sZGVyKCksIGluZm8sIGV2ZW50LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChl
dmVudC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCisjZGVmaW5lIERJQ1RJT05BUllf
U1RBUlQoRXZlbnRUeXBlKSBcCisgICAgc3RhdGljIGJvb2wgZmlsbCMjRXZlbnRUeXBlIyNJbml0
KEV2ZW50IyNJbml0JiBldmVudEluaXQsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMpIFwK
KyAgICB7CisKKyNkZWZpbmUgRElDVElPTkFSWV9FTkQoRXZlbnRUeXBlKSBcCisgICAgICAgIHJl
dHVybiB0cnVlOyBcCisgICAgfSBcCisgICAgXAorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OCMjRXZlbnRUeXBlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpIFwKKyAgICB7IFwKKyAgICAgIHJldHVybiBjb25zdHJ1Y3RWOEV2ZW50PEV2ZW50VHlwZSwg
RXZlbnRUeXBlIyNJbml0PihhcmdzLCBmaWxsIyNFdmVudFR5cGUjI0luaXQsICZpbmZvKTsgXAor
ICAgIH0KKworI2RlZmluZSBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKHBhcmVudEV2ZW50VHlwZSkg
XAorICAgIGlmICghZmlsbCMjcGFyZW50RXZlbnRUeXBlIyNJbml0KGV2ZW50SW5pdCkpIFwKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisjZGVmaW5lIEZJTExfUFJPUEVSVFkocHJvcGVydHlOYW1l
KSBcCisgICAgb3B0aW9ucy5nZXRLZXlWYWx1ZSgjcHJvcGVydHlOYW1lLCBldmVudEluaXQucHJv
cGVydHlOYW1lKTsgLy8gVGhpcyBjYW4gZmFpbCBidXQgaXQgaXMgT0suCisKK0lOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElD
VElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKaW5kZXggYzY3ZTU5NmFlNWJh
NjM0MWZjM2ZjOTI1NzhiZjkyZmU2MmE3NGFkOS4uZWM5MWExNWVmY2E5MzhkMGIzYzU0NzlkMGJj
MzdhYmE3MWUyMGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCkBAIC0yNSw2ICsyNSw3IEBAIG1vZHVs
ZSBldmVudHMgewogICAgICAgICBDdXN0b21Ub0pTLAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVk
LAogICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlvbiwKKyAgICAgICAgVjhDdXN0b21Db25z
dHJ1Y3RvciwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIFBvbHltb3JwaGljCiAg
ICAgXSBFdmVudCB7Cg==
</data>
<flag name="review"
          id="102035"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="102052"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>