<?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>66280</bug_id>
          
          <creation_ts>2011-08-15 22:40:45 -0700</creation_ts>
          <short_desc>[GTK] requestAnimationFrame support for gtk port</short_desc>
          <delta_ts>2011-09-20 13:12:26 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>59146</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>joone.hur</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451504</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-08-15 22:40:45 -0700</bug_when>
    <thetext>This bug is for supporting requestAnimationFrame JS interface on webkit-gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459685</commentid>
    <comment_count>1</comment_count>
      <attachid>105786</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-08-31 10:00:08 -0700</bug_when>
    <thetext>Created attachment 105786
A draft patch

A draft patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461148</commentid>
    <comment_count>2</comment_count>
      <attachid>106114</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-09-02 04:07:22 -0700</bug_when>
    <thetext>Created attachment 106114
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464014</commentid>
    <comment_count>3</comment_count>
      <attachid>106114</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-08 06:26:40 -0700</bug_when>
    <thetext>Comment on attachment 106114
Proposed patch

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

Instead of duplicating the code between webkit1 and webkit2 it would be better to move common code to a new class in WebCore and share it between webkit1 and webkit2

&gt; configure.ac:935
&gt; +# check whether to enable requestAnimationFrame support
&gt; +AC_MSG_CHECKING([whether to enable requestAnimationFrame support])
&gt; +AC_ARG_ENABLE(request_animation_frame,
&gt; +              AC_HELP_STRING([--enable-request-animation-frame],
&gt; +                             [enable support for requestAnimationFrame [default=no]]),
&gt; +              [],[enable_request_animation_frame=&quot;no&quot;])
&gt; +AC_MSG_RESULT([$enable_request_animation_frame])
&gt; +

Why not enable it by default?

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:673
&gt; +#if ENABLE(REQUEST_ANIMATION_FRAME)
&gt; +void ChromeClient::scheduleAnimation()
&gt; +{
&gt; +    g_signal_emit_by_name(m_webView, &quot;schedule-animation&quot;);
&gt; +}

Maybe we could implement the animation stuff here, so that we don&apos;t need to add a new signal to web view.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:210
&gt; +#if ENABLE(REQUEST_ANIMATION_FRAME)
&gt; +    SCHEDULE_ANIMATION,
&gt; +#endif

I would avoid adding a new signal for this.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1365
&gt; +
&gt; +        g_main_context_wakeup(gMainContext);

Why do you need to wakeup the main context here?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1369
&gt; +        priv-&gt;requestAnimationFrameTimerSource = g_timeout_source_new(0);
&gt; +        ASSERT(priv-&gt;requestAnimationFrameTimerSource);
&gt; +

I don&apos;t understand this. The first time you create a timeout surce with 0, to be dispatched inmediately (I think you could use a g_idle_source() instead), but in the callback you check whether if elapsed time is 16ms, why not schedule a 16ms timeout here instead? I guess the first time timerFiredCallback is called it will always schedule a new timeout source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464064</commentid>
    <comment_count>4</comment_count>
      <attachid>106114</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-08 08:33:11 -0700</bug_when>
    <thetext>Comment on attachment 106114
Proposed patch

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

Nice work. Please fix all of Carlos&apos; points as well. They all look valid.

In general, I would like to the see the animation stuff put into a WebCore class. It should be shared between WebKit1 and WebKit2, as it&apos;s almost identical.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:634
&gt; +    double m_timeStamp;

I don&apos;t think the name &quot;m_timeStamp&quot; is specific enough. What is the timestamp for?

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:47
&gt; +static const double AnimationThrottleTimeInterval = 0.016;

This should be called gAnimationThrottleTimeInterval. It&apos;s a magic number too, so you should have a comment explaining why it&apos;s 0.016.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:154
&gt; +    WebPage* self = static_cast&lt;WebPage*&gt;(data);

You should probably call this &quot;page&quot; since this is a static method.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:161
&gt; +    double elapsedTime = AnimationThrottleTimeInterval;
&gt; +    if (timeStamp)
&gt; +        elapsedTime = now - timeStamp;

When is timestamp zero?

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:167
&gt; +        if (self-&gt;corePage()-&gt;mainFrame() &amp;&amp; self-&gt;corePage()-&gt;mainFrame()-&gt;view())
&gt; +            self-&gt;corePage()-&gt;mainFrame()-&gt;view()-&gt;serviceScriptedAnimations(convertSecondsToDOMTimeStamp(currentTime()));

You access self-&gt;corePage()-&gt;mainFrame() three times, so you should cache it.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:176
&gt; +    g_timeout_add_full(G_PRIORITY_DEFAULT, remainingTime * 1000, reinterpret_cast&lt;GSourceFunc&gt;(&amp;requestAnimationFrameRunLoopCallback), (gpointer)self, 0);

Please insert newlines into lines that extend beyond 120 characters.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:184
&gt; +    if (!m_requestAnimationFrameTimerSource) {
&gt; +        GMainContext* gMainContext = g_main_context_default();

Please use an early return here.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:186
&gt; +        g_main_context_ref(gMainContext);

Why ref and unref the main context? Is this happening on a thread other than the main thread?

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:190
&gt; +        m_requestAnimationFrameTimerSource = g_timeout_source_new(static_cast&lt;guint&gt;(0));

Do you really need to cast 0 to guint? I find that really surprising.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:195
&gt; +        // Or else some animations will be freezed while resizing window or scrolling.

freezed -&gt; frozen
resizing window -&gt; resizing the window

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:199
&gt; +        g_source_set_callback(m_requestAnimationFrameTimerSource.get(), reinterpret_cast&lt;GSourceFunc&gt;(&amp;requestAnimationFrameRunLoopCallback), (gpointer)this, 0);

You shouldn&apos;t need to cast to gpointer here.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:202
&gt; +        g_main_context_unref(gMainContext);

If you must ref and unref the main context, it&apos;s better to use a GRefPtr here. You&apos;ll need to add a specialization in JavaScriptCore/wtf/gobject/GRefPtr.h and JavaScriptCore/wtf/gobject/GRefPtr.cpp.

&gt; Source/WebKit/gtk/ChangeLog:12
&gt; +        Implement requestAnimationFrame for WebKit gtk port.
&gt; +        GSourceTimer is added to WebKitWebViewPriv and used to call callback function.
&gt; +        The timer limits to call callback function more than one time in every 16ms.
&gt; +        This timer has lower priority than G_PRIORITY_HIGH_IDLE + 20.
&gt; +        Because, or else some dirty rects will not be updated while resizing and scrolling.

Super nit! Please even out the line breaks here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1307
&gt; +static const double AnimationThrottleTimeInterval = 0.016; // For 60fps

This should be called gAnimationThrottleTimeInterval.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1311
&gt; +    if (!webView)
&gt; +        return;

I&apos;m pretty sure you want to use an ASSERT here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1315
&gt; +    WebKitWebViewPrivate* priv = webView-&gt;priv;
&gt; +    if (!priv || !priv-&gt;requestAnimationFrameTimerSource)
&gt; +        return;

You shouldn&apos;t really need to check if priv is null.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1342
&gt; +        if (webView &amp;&amp; core(webView)-&gt;mainFrame() &amp;&amp; core(webView)-&gt;mainFrame()-&gt;view())
&gt; +            core(webView)-&gt;mainFrame()-&gt;view()-&gt;serviceScriptedAnimations(convertSecondsToDOMTimeStamp(now));
&gt; +        return false;

Please cache core(webView)-&gt;mainFrame(). Might want to just use early return through this whole section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464157</commentid>
    <comment_count>5</comment_count>
      <attachid>106114</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-09-08 10:45:37 -0700</bug_when>
    <thetext>Comment on attachment 106114
Proposed patch

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

Thank you for review. :)
I&apos;m not convinced sharing code between WebKit1 &amp; WebKit2 is possible and better way. But let me consider more.

&gt;&gt; configure.ac:935
&gt;&gt; +
&gt; 
&gt; Why not enable it by default?

I think this feature is experimental yet. Formal spec is not fixed so that we may need to modify this later.
But I don&apos;t mind changing default = yes.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:634
&gt;&gt; +    double m_timeStamp;
&gt; 
&gt; I don&apos;t think the name &quot;m_timeStamp&quot; is specific enough. What is the timestamp for?

I&apos;ll change m_timeStampForPreviousScene.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:47
&gt;&gt; +static const double AnimationThrottleTimeInterval = 0.016;
&gt; 
&gt; This should be called gAnimationThrottleTimeInterval. It&apos;s a magic number too, so you should have a comment explaining why it&apos;s 0.016.

Done

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:154
&gt;&gt; +    WebPage* self = static_cast&lt;WebPage*&gt;(data);
&gt; 
&gt; You should probably call this &quot;page&quot; since this is a static method.

Done

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:161
&gt;&gt; +        elapsedTime = now - timeStamp;
&gt; 
&gt; When is timestamp zero?

First call for requestAnimationFrame.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:167
&gt;&gt; +            self-&gt;corePage()-&gt;mainFrame()-&gt;view()-&gt;serviceScriptedAnimations(convertSecondsToDOMTimeStamp(currentTime()));
&gt; 
&gt; You access self-&gt;corePage()-&gt;mainFrame() three times, so you should cache it.

Done

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:176
&gt;&gt; +    g_timeout_add_full(G_PRIORITY_DEFAULT, remainingTime * 1000, reinterpret_cast&lt;GSourceFunc&gt;(&amp;requestAnimationFrameRunLoopCallback), (gpointer)self, 0);
&gt; 
&gt; Please insert newlines into lines that extend beyond 120 characters.

Done

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:186
&gt;&gt; +        g_main_context_ref(gMainContext);
&gt; 
&gt; Why ref and unref the main context? Is this happening on a thread other than the main thread?

Maybe No. I&apos;ll remove ref, unref.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:190
&gt;&gt; +        m_requestAnimationFrameTimerSource = g_timeout_source_new(static_cast&lt;guint&gt;(0));
&gt; 
&gt; Do you really need to cast 0 to guint? I find that really surprising.

Oops. sorry.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:195
&gt;&gt; +        // Or else some animations will be freezed while resizing window or scrolling.
&gt; 
&gt; freezed -&gt; frozen
&gt; resizing window -&gt; resizing the window

Done.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:199
&gt;&gt; +        g_source_set_callback(m_requestAnimationFrameTimerSource.get(), reinterpret_cast&lt;GSourceFunc&gt;(&amp;requestAnimationFrameRunLoopCallback), (gpointer)this, 0);
&gt; 
&gt; You shouldn&apos;t need to cast to gpointer here.

Done

&gt;&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:202
&gt;&gt; +        g_main_context_unref(gMainContext);
&gt; 
&gt; If you must ref and unref the main context, it&apos;s better to use a GRefPtr here. You&apos;ll need to add a specialization in JavaScriptCore/wtf/gobject/GRefPtr.h and JavaScriptCore/wtf/gobject/GRefPtr.cpp.

Let me try again after removing ref, unref. If I find any issue. then I&apos;ll add changes for GRefPtr. :)

&gt;&gt; Source/WebKit/gtk/ChangeLog:12
&gt;&gt; +        Because, or else some dirty rects will not be updated while resizing and scrolling.
&gt; 
&gt; Super nit! Please even out the line breaks here.

Done

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:673
&gt;&gt; +}
&gt; 
&gt; Maybe we could implement the animation stuff here, so that we don&apos;t need to add a new signal to web view.

Yor&apos;re right. My first implementation was like you mentioned.
But I moved code from ChromeClient to webview after seeing cmarrin&apos;s patch for mac port (bug59146). Is it better maintaining consistency among ports?

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:210
&gt;&gt; +#endif
&gt; 
&gt; I would avoid adding a new signal for this.

ditto.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1307
&gt;&gt; +static const double AnimationThrottleTimeInterval = 0.016; // For 60fps
&gt; 
&gt; This should be called gAnimationThrottleTimeInterval.

Done

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1311
&gt;&gt; +        return;
&gt; 
&gt; I&apos;m pretty sure you want to use an ASSERT here.

Done.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1315
&gt;&gt; +        return;
&gt; 
&gt; You shouldn&apos;t really need to check if priv is null.

Done.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1342
&gt;&gt; +        return false;
&gt; 
&gt; Please cache core(webView)-&gt;mainFrame(). Might want to just use early return through this whole section.

Done.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1365
&gt;&gt; +        g_main_context_wakeup(gMainContext);
&gt; 
&gt; Why do you need to wakeup the main context here?

Oops. This line is useless in current implementation. I&apos;ll remove this.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1369
&gt;&gt; +
&gt; 
&gt; I don&apos;t understand this. The first time you create a timeout surce with 0, to be dispatched inmediately (I think you could use a g_idle_source() instead), but in the callback you check whether if elapsed time is 16ms, why not schedule a 16ms timeout here instead? I guess the first time timerFiredCallback is called it will always schedule a new timeout source.

There are some reasons.  
At the first time scheduleAnimation is called, we don&apos;t need to wait 16ms to update first scene. 
Using g_timeout_source_new(16) here is valid in the best case. However let&apos;s suppose that the content is too heavy or system performance is too low, so that the system can&apos;t support 60fps. It means it takes more time than 16ms to update next scene. In that case we have to call timerFiredCallback without extra delay to show better fps.
For instance, if it takes 30ms to be called scheduleAnimation again from first call, then next scene will be updated after 46ms(30 + 16)) from first update. Here we don&apos;t need to waste extra 16ms.

&gt; I guess the first time timerFiredCallback is called it will always schedule a new timeout source.
Actually it&apos;s not true. it depend on the content. If JS callback function call requestAnimationFrame again, scheduleAnimation is called back again, Or else it&apos;s just one-shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465519</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-12 00:46:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 106114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106114&amp;action=review
&gt; 
&gt; Thank you for review. :)
&gt; I&apos;m not convinced sharing code between WebKit1 &amp; WebKit2 is possible and better way. But let me consider more.

Yes, it should be possible.

&gt; &gt;&gt; configure.ac:935
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Why not enable it by default?
&gt; 
&gt; I think this feature is experimental yet. Formal spec is not fixed so that we may need to modify this later.
&gt; But I don&apos;t mind changing default = yes.

I think it&apos;s harmless, what do you think Martin?

&gt; &gt;&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:673
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; Maybe we could implement the animation stuff here, so that we don&apos;t need to add a new signal to web view.
&gt; 
&gt; Yor&apos;re right. My first implementation was like you mentioned.
&gt; But I moved code from ChromeClient to webview after seeing cmarrin&apos;s patch for mac port (bug59146). Is it better maintaining consistency among ports?

I think it&apos;s that important at this level, but if you still want the implementation in WebView, add a private method instead of adding an undocummented signal to the API.

&gt; &gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1369
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; I don&apos;t understand this. The first time you create a timeout surce with 0, to be dispatched inmediately (I think you could use a g_idle_source() instead), but in the callback you check whether if elapsed time is 16ms, why not schedule a 16ms timeout here instead? I guess the first time timerFiredCallback is called it will always schedule a new timeout source.
&gt; 
&gt; There are some reasons.  
&gt; At the first time scheduleAnimation is called, we don&apos;t need to wait 16ms to update first scene. 
&gt; Using g_timeout_source_new(16) here is valid in the best case. However let&apos;s suppose that the content is too heavy or system performance is too low, so that the system can&apos;t support 60fps. It means it takes more time than 16ms to update next scene. In that case we have to call timerFiredCallback without extra delay to show better fps.
&gt; For instance, if it takes 30ms to be called scheduleAnimation again from first call, then next scene will be updated after 46ms(30 + 16)) from first update. Here we don&apos;t need to waste extra 16ms.

I still don&apos;t see whay you need to create a new source and attach it to the context manually, instead of just using g_idle_add() or g_timeout add(). Would it be possible to use g_idle_add() for the first time and schedule a g_timeout callback that will be called every 16ms, so that you don&apos;t need to keep track of elapsed time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465610</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-12 08:15:48 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; There are some reasons.  
&gt; At the first time scheduleAnimation is called, we don&apos;t need to wait 16ms to update first scene. 
&gt; Using g_timeout_source_new(16) here is valid in the best case. However let&apos;s suppose that the content is too heavy or system performance is too low, so that the system can&apos;t support 60fps. It means it takes more time than 16ms to update next scene. In that case we have to call timerFiredCallback without extra delay to show better fps.
&gt; For instance, if it takes 30ms to be called scheduleAnimation again from first call, then next scene will be updated after 46ms(30 + 16)) from first update. Here we don&apos;t need to waste extra 16ms.

Isn&apos;t starving the main loop a problem if you use 0 second timeouts?

(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 106114 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106114&amp;action=review
&gt; &gt; 
&gt; &gt; Thank you for review. :)
&gt; &gt; I&apos;m not convinced sharing code between WebKit1 &amp; WebKit2 is possible and better way. But let me consider more.
&gt; 
&gt; Yes, it should be possible.

Please do! 

&gt; &gt; &gt;&gt; configure.ac:935
&gt; &gt; &gt;&gt; +
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not enable it by default?
&gt; &gt; 
&gt; &gt; I think this feature is experimental yet. Formal spec is not fixed so that we may need to modify this later.
&gt; &gt; But I don&apos;t mind changing default = yes.
&gt; 
&gt; I think it&apos;s harmless, what do you think Martin?

It&apos;s a bad idea to enable experimental features by default, because we might end up breaking ABI (of a sort) if the feature is removed or changed. Disabling it by default protects us a bit from that. Immature features are also less secure, I&apos;d say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469962</commentid>
    <comment_count>8</comment_count>
      <attachid>107978</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-09-20 02:12:15 -0700</bug_when>
    <thetext>Created attachment 107978
updated patch

cmarrin&apos;s patch submitted a few days ago moved timer implementation from webView to ScriptedAnimationController, so that makes time implementation be common code for WebKit1 &amp; 2. (I realized it after finishing revising my patch. :p). cmarrin&apos;s algorithm looks similar to mine. When I tested it on gtk port webkit, it worked well, so no reason not to accept it for GTK port.
Here is new smaller patch to just enable the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470024</commentid>
    <comment_count>9</comment_count>
      <attachid>107978</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-20 06:38:32 -0700</bug_when>
    <thetext>Comment on attachment 107978
updated patch

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

This is indeed a lot smaller! Looks good to me, except for one small thing.

&gt; configure.ac:892
&gt; +                             [enable support for requestAnimationFrame [default=no]]),

We typically postfix experimental feature descriptions with (experimental). Do you mind doing the same here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470049</commentid>
    <comment_count>10</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-09-20 07:19:50 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 107978 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107978&amp;action=review
&gt; 
&gt; This is indeed a lot smaller! Looks good to me, except for one small thing.
&gt; 
&gt; &gt; configure.ac:892
&gt; &gt; +                             [enable support for requestAnimationFrame [default=no]]),
&gt; 
&gt; We typically postfix experimental feature descriptions with (experimental). Do you mind doing the same here?

Sure :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470050</commentid>
    <comment_count>11</comment_count>
      <attachid>107999</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-09-20 07:20:41 -0700</bug_when>
    <thetext>Created attachment 107999
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470269</commentid>
    <comment_count>12</comment_count>
      <attachid>107999</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 13:12:21 -0700</bug_when>
    <thetext>Comment on attachment 107999
Updated patch

Clearing flags on attachment: 107999

Committed r95564: &lt;http://trac.webkit.org/changeset/95564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470270</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 13:12:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105786</attachid>
            <date>2011-08-31 10:00:08 -0700</date>
            <delta_ts>2011-09-02 04:07:52 -0700</delta_ts>
            <desc>A draft patch</desc>
            <filename>P66280.patch</filename>
            <type>text/plain</type>
            <size>18141</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk0MTkz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgt
MzEgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtd
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0IGZvciBndGsgcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQWRkIGFu
IG9wdGlvbiB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBndGsgcG9ydC4KKwog
MjAxMS0wOC0zMCAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgTWVkaWFTb3VyY2UgQVBJIHRvIEhUTUxNZWRpYUVsZW1lbnQKSW5kZXg6IGNvbmZp
Z3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuYWMJKHJldmlzaW9uIDk0MTkzKQorKysg
Y29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCkBAIC05MjUsNiArOTI1LDE0IEBAIEFDX0FSR19F
TkFCTEUoYW5pbWF0aW9uX2FwaSwKICAgICAgICAgICAgICAgW10sIFtlbmFibGVfYW5pbWF0aW9u
X2FwaT0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYW5pbWF0aW9uX2FwaV0pCiAKKyMg
Y2hlY2sgd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQKK0FD
X01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1
cHBvcnRdKQorQUNfQVJHX0VOQUJMRShyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSwKKyAgICAgICAg
ICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVf
cmVxdWVzdF9hbmltYXRpb25fZnJhbWU9Im5vIl0pCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3Jl
cXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSkKKwogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSB0b3Vj
aCBpY29uIGxvYWRpbmcgCiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIHRvdWNo
IGljb24gbG9hZGluZ10pCiBBQ19BUkdfRU5BQkxFKHRvdWNoX2ljb25fbG9hZGluZywKQEAgLTEy
MjEsNiArMTIyOSw3IEBAIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfV0VCS0lUMl0sW3Rlc3QgIiQK
IEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfUExVR0lOX1BST0NFU1NdLFt0ZXN0ICIkZW5hYmxlX3Bs
dWdpbl9wcm9jZXNzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfU1BFTExDSEVD
S10sW3Rlc3QgIiRlbmFibGVfc3BlbGxjaGVjayIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChb
RU5BQkxFX0FOSU1BVElPTl9BUEldLFt0ZXN0ICIkZW5hYmxlX2FuaW1hdGlvbl9hcGkiID0gInll
cyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV0sW3Rl
c3QgIiRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWUiID0gInllcyJdKQogQU1fQ09ORElU
SU9OQUwoW0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkddLFt0ZXN0ICIkZW5hYmxlX3RvdWNoX2lj
b25fbG9hZGluZyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1JFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVJdLFt0ZXN0ICIkZW5hYmxlX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIi
ID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT05dLFt0
ZXN0ICIkZW5hYmxlX2RldmljZV9vcmllbnRhdGlvbiIgPSAieWVzIl0pCkBAIC0xMzE3LDYgKzEz
MjYsNyBAQCBGZWF0dXJlczoKICBYU0xUIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfeHNsdAogIFNwZWxsY2hlY2sgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zcGVsbGNoZWNr
CiAgQW5pbWF0aW9uIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkZW5hYmxlX2FuaW1hdGlvbl9hcGkKKyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25f
ZnJhbWUKICBUb3VjaCBJY29uIExvYWRpbmcgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfdG91Y2hfaWNvbl9sb2FkaW5nCiAgUmVnaXN0ZXIgUHJvdG9jb2wg
SGFuZGxlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3JlZ2lzdGVy
X3Byb3RvY29sX2hhbmRsZXIKICBXZWJLaXQyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2Via2l0MgpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gOTQxOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOC0zMSAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0Bn
bWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQg
Zm9yIGd0ayBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzb21lIGZpbGVzIHRvIGJ1aWxkLXRhcmdldCAmIGFjdGl2YXRlIEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSBmbGFnCisgICAgICAgIHdoZW4gZW5hYmxpbmcgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lIG9wdGlvbi4KKworICAgICAgICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS1jYW5jZWwuaHRtbAorICAgICAgICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0
LWFuaW1hdGlvbi1mcmFtZS1jYW5jZWwyLmh0bWwKKyAgICAgICAgZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtZGlzcGxheS5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9u
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWR1cmluZy1tb2RhbC5odG1sCisgICAgICAgIGZhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRpbWVzdGFtcHMuaHRtbAorICAgICAg
ICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS13aXRoaW4tY2FsbGJhY2su
aHRtbAorICAgICAgICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS5odG1s
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorCiAyMDExLTA4LTMxICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBJbnZlc3RpZ2F0ZSBjdXJyZW50IHVzZXMgb2YgT1MoQU5EUk9JRCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5NDE5MykKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNiArNTg0LDE0IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gLURFTkFCTEVfQU5JTUFUSU9OX0EKIGVuZGlmICAjIEVORCBFTkFCTEVfQU5J
TUFUSU9OX0FQSQogCiAjIC0tLQorIyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydAorIyAt
LS0KK2lmIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQorRkVBVFVSRV9ERUZJTkVTICs9
IEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRT0xCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1E
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FPTEKK2VuZGlmICAjIEVORCBFTkFCTEVfUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUKKworIyAtLS0KICMgM0QgY2FudmFzIChXZWJHTCkgc3VwcG9y
dAogIyAtLS0KIGlmIEVOQUJMRV9XRUJHTApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiA5NDE5MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NDUsMyArNDg0NSwxNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAog
ZW5kaWYgICMgRU5EIEVOQUJMRV9NSFRNTAorCisjIC0tLQorIyBSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQord2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKKyAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIFwKKyAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaAord2ViY29yZV9zb3VyY2VzICs9
IFwKKyAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrQ3VzdG9tLmNwcCBcCisgICAgU291cmNlL1dlYkNvcmUvZG9tL1JlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmggXAorICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwIFwKKyAgICBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmgKK2VuZGlmICAjIEVORCBFTkFCTEVfUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MTkzKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMzEg
IENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdIHJl
cXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0IGZvciBndGsgcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGZvciBXZWJLaXQyIHdpdGggc2FtZSB3YXkgbGlrZSBXZWJLaXQxCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVuc2No
ZWR1bGVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QW5pbWF0
aW9uRnJhbWVSdW5Mb29wQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2hl
ZHVsZUFuaW1hdGlvbik6CisKIDIwMTEtMDgtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzE1MApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gOTQxOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTIgQEAgV2ViUGFn
ZTo6fldlYlBhZ2UoKQogICAgIEFTU0VSVCghbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSdW5Mb29w
T2JzZXJ2ZXIpOwogI2VuZGlmCiAKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgdW5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIEFT
U0VSVCghbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSk7CisjZW5kaWYKKwogI2Vu
ZGlmCiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDk0MTkzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDYgKzM2NCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXN0dXJlV2lsbEJlZ2luKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgYm9vbCYgY2FuQmVnaW5QYW5uaW5nKTsKICAgICB2b2lkIGdlc3R1cmVEaWRTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgZ2VzdHVyZURpZEVuZCgpOwor
I2VsaWYgUExBVEZPUk0oR1RLKQorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
KyAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdm9pZCB1bnNjaGVkdWxlQW5pbWF0
aW9uKCk7CisjZW5kaWYKKwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1l
c3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9u
J3QgcmVxdWlyZQpAQCAtNjIyLDYgKzYyOCwxMSBAQCBwcml2YXRlOgogICAgIEhXTkQgbV9uYXRp
dmVXaW5kb3c7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9nZXN0dXJlVGFyZ2V0Tm9k
ZTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpICAgIAorICAgIHN0YXRpYyBib29sIHJlcXVlc3RBbmltYXRpb25GcmFtZVJ1bkxvb3BDYWxs
YmFjayh2b2lkKiBjb250ZXh0KTsKKyAgICBHUmVmUHRyPEdTb3VyY2U+IG1fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGltZXJTb3VyY2U7CisjZW5kaWYKICNlbmRpZgogICAgIAogICAgIFJ1bkxvb3A6
OlRpbWVyPFdlYlBhZ2U+IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCShy
ZXZpc2lvbiA5NDE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aD4KQEAgLTEzMyw0ICsxMzQsNDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6
OmNhY2hlZAogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQordm9pZCBXZWJQYWdlOjp1bnNjaGVkdWxlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAo
IW1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBnX3NvdXJjZV9kZXN0cm95KG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3Vy
Y2UuZ2V0KCkpOworICAgIGdfc291cmNlX3VucmVmKG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGlt
ZXJTb3VyY2UuZ2V0KCkpOworICAgIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2Ug
PSAwOworfQorCitib29sIFdlYlBhZ2U6OnJlcXVlc3RBbmltYXRpb25GcmFtZVJ1bkxvb3BDYWxs
YmFjayh2b2lkKiBkYXRhKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBzdGF0aWNfY2FzdDxX
ZWJQYWdlKj4oZGF0YSk7CisgICAgCisgICAgd2ViUGFnZS0+dW5zY2hlZHVsZUFuaW1hdGlvbigp
OworCisgICAgaWYgKHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpICYmIHdlYlBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHdlYlBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29u
dmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFdlYlBhZ2U6OnNjaGVkdWxlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAo
IW1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UpIHsKKyAgICAgICAgR01haW5Db250
ZXh0KiBnTWFpbkNvbnRleHQgPSBnX21haW5fY29udGV4dF9kZWZhdWx0KCk7CisgICAgICAgIEFT
U0VSVChnTWFpbkNvbnRleHQpOworICAgICAgICBnX21haW5fY29udGV4dF9yZWYoZ01haW5Db250
ZXh0KTsKKworICAgICAgICBnX21haW5fY29udGV4dF93YWtldXAoZ01haW5Db250ZXh0KTsKKyAg
ICAgICAKKyAgICAgICAgbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSA9IGdfdGlt
ZW91dF9zb3VyY2VfbmV3KHN0YXRpY19jYXN0PGd1aW50PigwLjAxNiAqIDEwMDApKTsKKyAgICAg
ICAgQVNTRVJUKG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UpOworICAgICAgICBn
X3NvdXJjZV9zZXRfcHJpb3JpdHkobV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZS5n
ZXQoKSwgR19QUklPUklUWV9ISUdIKTsKKworICAgICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2so
bV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxHU291cmNlRnVuYz4oJnJlcXVlc3RBbmltYXRpb25GcmFtZVJ1bkxvb3BDYWxsYmFjayksIChn
cG9pbnRlcil0aGlzLCAwKTsKKyAgICAgICAgZ19zb3VyY2VfYXR0YWNoKG1fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGltZXJTb3VyY2UuZ2V0KCksIGdNYWluQ29udGV4dCk7CisKKyAgICAgICAgZ19t
YWluX2NvbnRleHRfdW5yZWYoZ01haW5Db250ZXh0KTsKKyAgICB9Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDE5MykK
KysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI2IEBACisyMDExLTA4LTMxICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4K
KworICAgICAgICBbR1RLXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydCBmb3IgZ3RrIHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mjgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgV2ViS2l0MSBndGsgcG9ydC4KKyAgICAgICAg
R1NvdXJjZVRpbWVyIGlzIGFkZGVkIHRvIFdlYktpdFdlYlZpZXdQcml2IGFuZCB1c2VkIHRvIGNh
bGwgY2FsbGJhY2sgZnVuY3Rpb24uCisgICAgICAgIFRoaXMgdGltZXIgcnVucyBldmVyeSAxNm1z
KGZvciB1cCB0byA2MGZwcyksIGlmIHNjaGVkdWxlQW5pbWF0aW9uKCkgaGFzIGJlZW4gY2FsbGVk
IGZyb20gV2ViQ29yZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHVuc2NoZWR1bGVBbmltYXRpb24p
OgorICAgICAgICAodGltZXJGaXJlZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19zY2hlZHVsZV9hbmltYXRpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmg6
CisKIDIwMTEtMDgtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NDE0Miwgcjk0MTQ0LCByOTQx
NDUsIGFuZCByOTQxNDguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDk0MTkzKQorKysgU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjY2LDYgKzY2NiwxMyBAQCB2b2lkIENocm9tZUNsaWVudDo6c2V0Q3Vyc29ySGlk
ZGVuVW50aWxNCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUFuaW1hdGlvbigp
Cit7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgInNjaGVkdWxlLWFuaW1h
dGlvbiIpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24pCiB7CiAgICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCShyZXZpc2lvbiA5NDE5MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDExIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJh
d2luZ1N5bmNocm9uaXphdGlvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyU3luYygpOwogICAgICAgICB2aXJ0dWFsIENvbXBvc2l0aW5nVHJpZ2dlckZs
YWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3Q7Ci0jZW5kaWYgCisjZW5kaWYK
KworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisjZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDk0MTkzKQorKysgU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0
LDkgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVT
X1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAot
CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIFNDSEVEVUxFX0FOSU1B
VElPTiwKKyNlbmRpZgogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0xMzAwLDYgKzEzMDIsNjAg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3NobwogICAgIHJldHVybiBU
UlVFOwogfQogCitzdGF0aWMgdm9pZCB1bnNjaGVkdWxlQW5pbWF0aW9uKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGlm
ICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIGlmICghcHJpdiB8fCAhcHJpdi0+cmVxdWVzdEFu
aW1hdGlvbkZyYW1lVGltZXJTb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBnX3Nv
dXJjZV9kZXN0cm95KHByaXYtPnJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlLmdldCgp
KTsKKyAgICBnX3NvdXJjZV91bnJlZihwcml2LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNv
dXJjZS5nZXQoKSk7CisgICAgcHJpdi0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2Ug
PSAwOworI2VuZGlmCit9CisKK3N0YXRpYyBnYm9vbGVhbiB0aW1lckZpcmVkQ2FsbGJhY2soZ3Bv
aW50ZXIgZGF0YSkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYlZpZXcqPihkYXRh
KTsKKyAgICAKKyAgICB1bnNjaGVkdWxlQW5pbWF0aW9uKHdlYlZpZXcpOworCisgICAgaWYgKHdl
YlZpZXcgJiYgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkgJiYgY29yZSh3ZWJWaWV3KS0+bWFp
bkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0
YW1wKGN1cnJlbnRUaW1lKCkpKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NjaGVkdWxlX2FuaW1hdGlvbihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgQVNTRVJUKHBy
aXYpOworCisgICAgaWYgKCFwcml2LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSkg
eworICAgICAgICBHTWFpbkNvbnRleHQqIGdNYWluQ29udGV4dCA9IGdfbWFpbl9jb250ZXh0X2Rl
ZmF1bHQoKTsKKyAgICAgICAgQVNTRVJUKGdNYWluQ29udGV4dCk7CisgICAgICAgIGdfbWFpbl9j
b250ZXh0X3JlZihnTWFpbkNvbnRleHQpOworCisgICAgICAgIGdfbWFpbl9jb250ZXh0X3dha2V1
cChnTWFpbkNvbnRleHQpOworICAgICAgIAorICAgICAgICBwcml2LT5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaW1lclNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KHN0YXRpY19jYXN0PGd1aW50
PigwLjAxNiAqIDEwMDApKTsKKyAgICAgICAgQVNTRVJUKHByaXYtPnJlcXVlc3RBbmltYXRpb25G
cmFtZVRpbWVyU291cmNlKTsKKyAgICAgICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KHByaXYtPnJl
cXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlLmdldCgpLCBHX1BSSU9SSVRZX0hJR0gpOwor
CisgICAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhwcml2LT5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWVUaW1lclNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oJnRpbWVy
RmlyZWRDYWxsYmFjayksIChncG9pbnRlcil3ZWJWaWV3LCAwKTsKKyAgICAgICAgZ19zb3VyY2Vf
YXR0YWNoKHByaXYtPnJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlLmdldCgpLCBnTWFp
bkNvbnRleHQpOworCisgICAgICAgIGdfbWFpbl9jb250ZXh0X3VucmVmKGdNYWluQ29udGV4dCk7
CisgICAgfQorI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3Nl
KEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKG9iamVjdCk7CkBAIC0yNzQ0LDYgKzI4MDAsMTQgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW1NDSEVEVUxFX0FOSU1BVElPTl0gPSBnX3NpZ25hbF9uZXcoInNj
aGVkdWxlLWFuaW1hdGlvbiIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3
Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncylHX1NJR05BTF9SVU5fTEFTVCwKKyAg
ICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBzY2hlZHVsZV9h
bmltYXRpb24pLAorICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOworCiAg
ICAgLyoKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICov
CkBAIC0yNzY1LDYgKzI4MjksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXCiAgICAgd2ViVmlld0NsYXNzLT5yZWRvID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcmVk
bzsKICAgICB3ZWJWaWV3Q2xhc3MtPm1vdmVfY3Vyc29yID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
bW92ZV9jdXJzb3I7CiAgICAgd2ViVmlld0NsYXNzLT5zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rp
b24gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb247Cisg
ICAgd2ViVmlld0NsYXNzLT5zY2hlZHVsZV9hbmltYXRpb24gPSB3ZWJraXRfd2ViX3ZpZXdfc2No
ZWR1bGVfYW5pbWF0aW9uOwogCiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZTsKQEAgLTM0MzksNiArMzUwNCwxMCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXCiAKICAgICBwcml2LT5zdWJSZXNvdXJjZXMgPSBh
ZG9wdEdSZWYoZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBn
X2ZyZWUsIGdfb2JqZWN0X3VucmVmKSk7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCisgICAgcHJpdi0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UgPSAwOwor
I2VuZGlmCisKICAgICBndGtfZHJhZ19kZXN0X3NldChHVEtfV0lER0VUKHdlYlZpZXcpLCBzdGF0
aWNfY2FzdDxHdGtEZXN0RGVmYXVsdHM+KDApLCAwLCAwLCBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0
aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUg
fCBHREtfQUNUSU9OX0xJTksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19k
ZXN0X3NldF90YXJnZXRfbGlzdChHVEtfV0lER0VUKHdlYlZpZXcpLCBQYXN0ZWJvYXJkSGVscGVy
OjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHJldmlzaW9uIDk0MTkzKQorKysg
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDYgKzE0Nyw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAoKiByZWRvKSAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAoKiBzaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24pIChXZWJLaXRXZWJWaWV3ICAgKndlYl92
aWV3KTsKIAorICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICgqc2NoZWR1bGVfYW5pbWF0
aW9uKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiAgICAgLyogUGFk
ZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpJbmRleDog
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgJKHJl
dmlzaW9uIDk0MTkzKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdw
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDEwIEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkgICAgCisgICAgR1JlZlB0cjxHU291cmNlPiByZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aW1lclNvdXJjZTsKKyNlbmRpZgorCiAgICAgLy8gVGhlc2UgYXJlIGhvc3RlZCBoZXJlIGJlY2F1
c2UgdGhlIERhdGFTb3VyY2Ugb2JqZWN0IGlzCiAgICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0
aGUgZnJhbWUgbG9hZGluZyBwcm9jZXNzLgogICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+
IG1haW5SZXNvdXJjZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106114</attachid>
            <date>2011-09-02 04:07:22 -0700</date>
            <delta_ts>2011-09-20 02:12:15 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>P66280.patch</filename>
            <type>text/plain</type>
            <size>22193</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzg2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDkt
MDEgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtd
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0IGZvciBndGsgcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQWRkIGFu
IG9wdGlvbiB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBndGsgcG9ydC4KKwog
MjAxMS0wOC0zMCAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgTWVkaWFTb3VyY2UgQVBJIHRvIEhUTUxNZWRpYUVsZW1lbnQKSW5kZXg6IGNvbmZp
Z3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuYWMJKHJldmlzaW9uIDk0MTU1KQorKysg
Y29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCkBAIC05MjUsNiArOTI1LDE0IEBAIEFDX0FSR19F
TkFCTEUoYW5pbWF0aW9uX2FwaSwKICAgICAgICAgICAgICAgW10sIFtlbmFibGVfYW5pbWF0aW9u
X2FwaT0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYW5pbWF0aW9uX2FwaV0pCiAKKyMg
Y2hlY2sgd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQKK0FD
X01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1
cHBvcnRdKQorQUNfQVJHX0VOQUJMRShyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSwKKyAgICAgICAg
ICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVf
cmVxdWVzdF9hbmltYXRpb25fZnJhbWU9Im5vIl0pCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3Jl
cXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSkKKwogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSB0b3Vj
aCBpY29uIGxvYWRpbmcgCiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIHRvdWNo
IGljb24gbG9hZGluZ10pCiBBQ19BUkdfRU5BQkxFKHRvdWNoX2ljb25fbG9hZGluZywKQEAgLTEy
MjEsNiArMTIyOSw3IEBAIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfV0VCS0lUMl0sW3Rlc3QgIiQK
IEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfUExVR0lOX1BST0NFU1NdLFt0ZXN0ICIkZW5hYmxlX3Bs
dWdpbl9wcm9jZXNzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfU1BFTExDSEVD
S10sW3Rlc3QgIiRlbmFibGVfc3BlbGxjaGVjayIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChb
RU5BQkxFX0FOSU1BVElPTl9BUEldLFt0ZXN0ICIkZW5hYmxlX2FuaW1hdGlvbl9hcGkiID0gInll
cyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV0sW3Rl
c3QgIiRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWUiID0gInllcyJdKQogQU1fQ09ORElU
SU9OQUwoW0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkddLFt0ZXN0ICIkZW5hYmxlX3RvdWNoX2lj
b25fbG9hZGluZyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1JFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVJdLFt0ZXN0ICIkZW5hYmxlX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIi
ID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT05dLFt0
ZXN0ICIkZW5hYmxlX2RldmljZV9vcmllbnRhdGlvbiIgPSAieWVzIl0pCkBAIC0xMzE3LDYgKzEz
MjYsNyBAQCBGZWF0dXJlczoKICBYU0xUIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfeHNsdAogIFNwZWxsY2hlY2sgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zcGVsbGNoZWNr
CiAgQW5pbWF0aW9uIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAkZW5hYmxlX2FuaW1hdGlvbl9hcGkKKyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25f
ZnJhbWUKICBUb3VjaCBJY29uIExvYWRpbmcgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfdG91Y2hfaWNvbl9sb2FkaW5nCiAgUmVnaXN0ZXIgUHJvdG9jb2wg
SGFuZGxlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3JlZ2lzdGVy
X3Byb3RvY29sX2hhbmRsZXIKICBXZWJLaXQyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2Via2l0MgpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gOTQzODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0wMSAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0Bn
bWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQg
Zm9yIGd0ayBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzb21lIGZpbGVzIHRvIGJ1aWxkLXRhcmdldCAmIGFjdGl2YXRlIEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSBmbGFnCisgICAgICAgIHdoZW4gZW5hYmxpbmcgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lIG9wdGlvbi4KKyAgICAgICAgCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3Jl
cXVlc3QtYW5pbWF0aW9uLWZyYW1lLWNhbmNlbC5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9u
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWNhbmNlbDIuaHRtbAorICAgICAgICBmYXN0L2FuaW1h
dGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1kaXNwbGF5Lmh0bWwKKyAgICAgICAgZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwKKyAgICAg
ICAgZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGltZXN0YW1wcy5odG1s
CisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXdpdGhpbi1j
YWxsYmFjay5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZy
YW1lLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisKIDIwMTEtMDktMDEgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggdGhlIGJ1aWxkIGJ5IGFkZGluZyBzb21lIG1vcmUgbWlzc2luZyByZXR1
cm4gdHlwZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTQxNTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTg0LDYgKzU4
NCwxNCBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX0FOSU1BVElPTl9BCiBlbmRpZiAg
IyBFTkQgRU5BQkxFX0FOSU1BVElPTl9BUEkKIAogIyAtLS0KKyMgUmVxdWVzdEFuaW1hdGlvbkZy
YW1lIHN1cHBvcnQKKyMgLS0tCitpZiBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUKK0ZF
QVRVUkVfREVGSU5FUyArPSBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUU9MQord2ViY29y
ZV9jcHBmbGFncyArPSAtREVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRT0xCitlbmRpZiAg
IyBFTkQgRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FCisKKyMgLS0tCiAjIDNEIGNhbnZh
cyAoV2ViR0wpIHN1cHBvcnQKICMgLS0tCiBpZiBFTkFCTEVfV0VCR0wKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTQxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC00ODQ1LDMgKzQ4NDUsMTcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmgKIGVuZGlmICAjIEVORCBFTkFCTEVfTUhUTUwKKworIyAtLS0KKyMgUmVx
dWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQKKyMgLS0tCitpZiBFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUKK3dlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCisgICAgRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBcCisgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgKK3dl
YmNvcmVfc291cmNlcyArPSBcCisgICAgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgXAorICAgIFNvdXJjZS9XZWJDb3Jl
L2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIFwKKyAgICBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBcCisgICAgU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCitlbmRpZiAgIyBFTkQgRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDM4NikK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIx
IEBACisyMDExLTA5LTAxICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKwor
ICAgICAgICBbR1RLXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydCBmb3IgZ3RrIHBvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgV2ViS2l0MiB3aXRoIHNhbWUgd2F5IGxpa2UgV2Vi
S2l0MS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
On5XZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVuc2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWVSdW5Mb29wQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY2hlZHVsZUFuaW1hdGlvbik6CisKIDIwMTEtMDktMDEgIEFkYSBD
aGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gdGhlIGlmZGVmcyBp
biBXZWJLaXQ6OmdldFdlYkNvcmVNZW1vcnlDYWNoZVN0YXRpc3RpY3MoKSBub3cgdGhhdCAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDk0MTU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDExIEBAIFdlYlBhZ2U6OldlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdAogICAgICwgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRl
cnByZXRlZCgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICwgbV9uYXRpdmVXaW5kb3cocGFy
YW1ldGVycy5uYXRpdmVXaW5kb3cpCisjZWxpZiBQTEFURk9STShHVEspCisjaWYgRU5BQkxFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgICwgbV90aW1lU3RhbXAoMCkKKyAgICAsIG1fcmVx
dWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UoMCkKKyNlbmRpZgogI2VuZGlmCiAgICAgLCBt
X3NldENhblN0YXJ0TWVkaWFUaW1lcihXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCksIHRo
aXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICAgICAsIG1fZmluZENv
bnRyb2xsZXIodGhpcykKQEAgLTI2OCw2ICsyNzMsMTIgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQog
ICAgIEFTU0VSVCghbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVSdW5Mb29wT2JzZXJ2ZXIpOwogI2Vu
ZGlmCiAKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCisgICAgdW5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIEFTU0VSVCghbV9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSk7CisjZW5kaWYKKwogI2VuZGlmCiAKICNpZm5kZWYg
TkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDk0MTU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDYgKzM2NCwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXN0dXJlV2lsbEJlZ2luKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCYg
Y2FuQmVnaW5QYW5uaW5nKTsKICAgICB2b2lkIGdlc3R1cmVEaWRTY3JvbGwoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgZ2VzdHVyZURpZEVuZCgpOworI2VsaWYgUExBVEZPUk0o
R1RLKQorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICB2b2lkIHNjaGVk
dWxlQW5pbWF0aW9uKCk7CisgICAgdm9pZCB1bnNjaGVkdWxlQW5pbWF0aW9uKCk7CisjZW5kaWYK
KwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lk
IGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQpAQCAt
NjIyLDYgKzYyOCwxMiBAQCBwcml2YXRlOgogICAgIEhXTkQgbV9uYXRpdmVXaW5kb3c7CiAKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9nZXN0dXJlVGFyZ2V0Tm9kZTsKKyNlbGlmIFBMQVRG
T1JNKEdUSykKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICAgIAorICAgIHN0
YXRpYyBib29sIHJlcXVlc3RBbmltYXRpb25GcmFtZVJ1bkxvb3BDYWxsYmFjayh2b2lkKiBjb250
ZXh0KTsKKyAgICBkb3VibGUgbV90aW1lU3RhbXA7CisgICAgR1JlZlB0cjxHU291cmNlPiBtX3Jl
cXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlOworI2VuZGlmCiAjZW5kaWYKICAgICAKICAg
ICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlPiBtX3NldENhblN0YXJ0TWVkaWFUaW1lcjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcAkocmV2aXNpb24gOTQxNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDExIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aD4KQEAgLTQyLDYgKzQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitzdGF0aWMgY29uc3QgZG91YmxlIEFuaW1hdGlvblRocm90dGxlVGltZUlu
dGVydmFsID0gMC4wMTY7CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTMzLDQgKzEzNyw3MSBAQCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkCiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCit2b2lkIFdlYlBhZ2U6OnVuc2NoZWR1bGVBbmlt
YXRpb24oKQoreworICAgIGlmICghbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGdfc291cmNlX2Rlc3Ryb3kobV9yZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaW1lclNvdXJjZS5nZXQoKSk7CisgICAgZ19zb3VyY2VfdW5yZWYobV9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZS5nZXQoKSk7CisgICAgbV9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVUaW1lclNvdXJjZSA9IDA7CisgICAgbV90aW1lU3RhbXAgPSAwLjA7Cit9CisKK2Jv
b2wgV2ViUGFnZTo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lUnVuTG9vcENhbGxiYWNrKHZvaWQqIGRh
dGEpCit7CisgICAgV2ViUGFnZSogc2VsZiA9IHN0YXRpY19jYXN0PFdlYlBhZ2UqPihkYXRhKTsK
KyAgICBBU1NFUlQoc2VsZik7CisgICAKKyAgICBkb3VibGUgdGltZVN0YW1wID0gc2VsZi0+bV90
aW1lU3RhbXA7CisgICAgZG91YmxlIG5vdyAgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBl
bGFwc2VkVGltZSA9IEFuaW1hdGlvblRocm90dGxlVGltZUludGVydmFsOworICAgIGlmICh0aW1l
U3RhbXApCisgICAgICAgIGVsYXBzZWRUaW1lID0gbm93IC0gdGltZVN0YW1wOworCisgICAgaWYg
KGVsYXBzZWRUaW1lID49IEFuaW1hdGlvblRocm90dGxlVGltZUludGVydmFsKSB7CisgICAgICAg
IHNlbGYtPnVuc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICAgICAgc2VsZi0+bV90aW1lU3RhbXAg
PSBub3c7CisgICAgICAgIGlmIChzZWxmLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKSAmJiBzZWxm
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICAgICAgc2VsZi0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhj
b252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGRvdWJsZSByZW1haW5pbmdUaW1lID0gQW5pbWF0aW9u
VGhyb3R0bGVUaW1lSW50ZXJ2YWwgLSBlbGFwc2VkVGltZTsKKyAgICBpZiAocmVtYWluaW5nVGlt
ZSA8IDAuMDAxKQorICAgICAgICByZW1haW5pbmdUaW1lID0gMC4wMDE7CisKKyAgICAvLyBUbyBl
bnN1cmUgdGhhdCBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gMTZtcywgaGVyZSBHX1BS
SU9SSVRZX0RFRkFVTFQgaXMuCisgICAgZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVG
QVVMVCwgcmVtYWluaW5nVGltZSAqIDEwMDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KCZyZXF1ZXN0QW5pbWF0aW9uRnJhbWVSdW5Mb29wQ2FsbGJhY2spLCAoZ3BvaW50ZXIpc2VsZiwg
MCk7CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlBhZ2U6OnNjaGVkdWxl
QW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3Vy
Y2UpIHsKKyAgICAgICAgR01haW5Db250ZXh0KiBnTWFpbkNvbnRleHQgPSBnX21haW5fY29udGV4
dF9kZWZhdWx0KCk7CisgICAgICAgIEFTU0VSVChnTWFpbkNvbnRleHQpOworICAgICAgICBnX21h
aW5fY29udGV4dF9yZWYoZ01haW5Db250ZXh0KTsKKworICAgICAgICBnX21haW5fY29udGV4dF93
YWtldXAoZ01haW5Db250ZXh0KTsKKyAgICAgICAKKyAgICAgICAgbV9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaW1lclNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KHN0YXRpY19jYXN0PGd1aW50
PigwKSk7CisgICAgICAgIEFTU0VSVChtX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNl
KTsKKworICAgICAgICAvLyBUaGUgcHJpb3JpdHkgb2YgUmVkcmF3aW5nIGlzIEdfUFJJT1JJVFlf
SElHSF9JRExFICsgMjAsCisgICAgICAgIC8vIHNvIHJlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91
bGQgYmUgbG93ZXIgcHJpb3JpdHkuCisgICAgICAgIC8vIE9yIGVsc2Ugc29tZSBhbmltYXRpb25z
IHdpbGwgYmUgZnJlZXplZCB3aGlsZSByZXNpemluZyB3aW5kb3cgb3Igc2Nyb2xsaW5nLgorICAg
ICAgICAvLyBTZWUgaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi8yLjI5L2dsaWItVGhl
LU1haW4tRXZlbnQtTG9vcC5odG1sI0ctUFJJT1JJVFktSElHSC1JRExFOkNBUFMuCisgICAgICAg
IGdfc291cmNlX3NldF9wcmlvcml0eShtX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNl
LmdldCgpLCBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIxKTsKKworICAgICAgICBnX3NvdXJjZV9z
ZXRfY2FsbGJhY2sobV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oJnJlcXVlc3RBbmltYXRpb25GcmFtZVJ1bkxvb3BD
YWxsYmFjayksIChncG9pbnRlcil0aGlzLCAwKTsKKyAgICAgICAgZ19zb3VyY2VfYXR0YWNoKG1f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UuZ2V0KCksIGdNYWluQ29udGV4dCk7CisK
KyAgICAgICAgZ19tYWluX2NvbnRleHRfdW5yZWYoZ01haW5Db250ZXh0KTsKKyAgICB9Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZp
c2lvbiA5NDM4NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTA5LTAxICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93
QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9y
dCBmb3IgZ3RrIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgV2ViS2l0IGd0ayBwb3J0
LgorICAgICAgICBHU291cmNlVGltZXIgaXMgYWRkZWQgdG8gV2ViS2l0V2ViVmlld1ByaXYgYW5k
IHVzZWQgdG8gY2FsbCBjYWxsYmFjayBmdW5jdGlvbi4KKyAgICAgICAgVGhlIHRpbWVyIGxpbWl0
cyB0byBjYWxsIGNhbGxiYWNrIGZ1bmN0aW9uIG1vcmUgdGhhbiBvbmUgdGltZSBpbiBldmVyeSAx
Nm1zLgorICAgICAgICBUaGlzIHRpbWVyIGhhcyBsb3dlciBwcmlvcml0eSB0aGFuIEdfUFJJT1JJ
VFlfSElHSF9JRExFICsgMjAuCisgICAgICAgIEJlY2F1c2UsIG9yIGVsc2Ugc29tZSBkaXJ0eSBy
ZWN0cyB3aWxsIG5vdCBiZSB1cGRhdGVkIHdoaWxlIHJlc2l6aW5nIGFuZCBzY3JvbGxpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHA6CisgICAgICAgICh1bnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKHRpbWVy
RmlyZWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2NoZWR1bGVfYW5pbWF0
aW9uKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgor
ICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOgorCiAyMDExLTA4LTMwICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByOTQxNDIsIHI5NDE0NCwgcjk0MTQ1LCBhbmQgcjk0MTQ4LgpJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiA5NDE1NSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2Niw2ICs2
NjYsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnNldEN1cnNvckhpZGRlblVudGlsTQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
Cit2b2lkIENocm9tZUNsaWVudDo6c2NoZWR1bGVBbmltYXRpb24oKQoreworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJzY2hlZHVsZS1hbmltYXRpb24iKTsKK30KKyNlbmRp
ZgorCiB2b2lkIENocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewogICAgIFdlYktp
dFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkocmV2aXNpb24gOTQx
NTUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRp
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMo
KTsKICAgICAgICAgdmlydHVhbCBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9z
aXRpbmdUcmlnZ2VycygpIGNvbnN0OwotI2VuZGlmIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1h
dGlvbigpOworI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBt
X3dlYlZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCShyZXZpc2lvbiA5NDE1NSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogICogIENvcHlyaWdo
dCAoQykgMjAwOSBNb3ZpYWwgQ3JlYXRpdmUgVGVjaG5vbG9naWVzIEluYy4KICAqICBDb3B5cmln
aHQgKEMpIDIwMDkgQm9iYnkgUG93ZXJzCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1
ciA8am9vbmVAa2xkcC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDExIENoYW5nU2VvayBPaCA8
c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMDQsNyArMjA1
LDkgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVT
X1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAot
CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIFNDSEVEVUxFX0FOSU1B
VElPTiwKKyNlbmRpZgogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0xMzAwLDYgKzEzMDMsODQg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3NobwogICAgIHJldHVybiBU
UlVFOwogfQogCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorc3RhdGljIGNv
bnN0IGRvdWJsZSBBbmltYXRpb25UaHJvdHRsZVRpbWVJbnRlcnZhbCA9IDAuMDE2OyAvLyBGb3Ig
NjBmcHMKK3N0YXRpYyB2b2lkIHVuc2NoZWR1bGVBbmltYXRpb24oV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAoIXByaXYgfHwg
IXByaXYtPnJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgZ19zb3VyY2VfZGVzdHJveShwcml2LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aW1lclNvdXJjZS5nZXQoKSk7CisgICAgZ19zb3VyY2VfdW5yZWYocHJpdi0+cmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGltZXJTb3VyY2UuZ2V0KCkpOworICAgIHByaXYtPnJlcXVlc3RBbmltYXRpb25G
cmFtZVRpbWVyU291cmNlID0gMDsKKyAgICBwcml2LT50aW1lU3RhbXAgPSAwLjA7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiB0aW1lckZpcmVkQ2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViVmlldyo+KGRhdGEp
OworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKKyAgICBBU1NFUlQocHJpdik7CisKKyAgICBnZG91YmxlIHRpbWVT
dGFtcCA9IHByaXYtPnRpbWVTdGFtcDsKKyAgICBnZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7
CisgICAgZ2RvdWJsZSBlbGFwc2VkVGltZSA9IEFuaW1hdGlvblRocm90dGxlVGltZUludGVydmFs
OworICAgIGlmICh0aW1lU3RhbXApCisgICAgICAgIGVsYXBzZWRUaW1lID0gbm93IC0gdGltZVN0
YW1wOworCisgICAgaWYgKGVsYXBzZWRUaW1lID49IEFuaW1hdGlvblRocm90dGxlVGltZUludGVy
dmFsKSB7CisgICAgICAgIHVuc2NoZWR1bGVBbmltYXRpb24od2ViVmlldyk7CisgICAgICAgIHBy
aXYtPnRpbWVTdGFtcCA9IG5vdzsKKyAgICAgICAgaWYgKHdlYlZpZXcgJiYgY29yZSh3ZWJWaWV3
KS0+bWFpbkZyYW1lKCkgJiYgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAg
ICAgICAgICAgIGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPnNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChub3cpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGdkb3VibGUgcmVtYWluaW5nVGltZSA9IEFu
aW1hdGlvblRocm90dGxlVGltZUludGVydmFsIC0gZWxhcHNlZFRpbWU7CisgICAgaWYgKHJlbWFp
bmluZ1RpbWUgPCAwLjAwMSkKKyAgICAgICAgcmVtYWluaW5nVGltZSA9IDAuMDAxOworCisgICAg
Ly8gVG8gZW5zdXJlIHRoYXQgY2FsbGJhY2sgZnVuY3Rpb24gaXMgY2FsbGVkIGluIDE2bXMsIGhl
cmUgR19QUklPUklUWV9ERUZBVUxUIGlzLgorICAgIGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9S
SVRZX0RFRkFVTFQsIHN0YXRpY19jYXN0PGd1aW50PihyZW1haW5pbmdUaW1lICogMTAwMCksIHJl
aW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KCZ0aW1lckZpcmVkQ2FsbGJhY2spLCAoZ3BvaW50
ZXIpd2ViVmlldywgMCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19zY2hlZHVsZV9hbmltYXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAg
QVNTRVJUKHByaXYpOworCisgICAgaWYgKCFwcml2LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1l
clNvdXJjZSkgeworICAgICAgICBHTWFpbkNvbnRleHQqIGdNYWluQ29udGV4dCA9IGdfbWFpbl9j
b250ZXh0X2RlZmF1bHQoKTsKKyAgICAgICAgQVNTRVJUKGdNYWluQ29udGV4dCk7CisgICAgICAg
IGdfbWFpbl9jb250ZXh0X3JlZihnTWFpbkNvbnRleHQpOworCisgICAgICAgIGdfbWFpbl9jb250
ZXh0X3dha2V1cChnTWFpbkNvbnRleHQpOworICAgICAgIAorICAgICAgICBwcml2LT5yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVUaW1lclNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KDApOworICAg
ICAgICBBU1NFUlQocHJpdi0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UpOworCisg
ICAgICAgIC8vIFRoZSBwcmlvcml0eSBvZiBSZWRyYXdpbmcgaXMgR19QUklPUklUWV9ISUdIX0lE
TEUgKyAyMCwKKyAgICAgICAgLy8gc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBiZSBs
b3dlciBwcmlvcml0eS4KKyAgICAgICAgLy8gT3IgZWxzZSBzb21lIGFuaW1hdGlvbnMgd2lsbCBi
ZSBmcmVlemVkIHdoaWxlIHJlc2l6aW5nIHdpbmRvdyBvciBzY3JvbGxpbmcuCisgICAgICAgIC8v
IFNlZSBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliLzIuMjkvZ2xpYi1UaGUtTWFpbi1F
dmVudC1Mb29wLmh0bWwjRy1QUklPUklUWS1ISUdILUlETEU6Q0FQUy4KKyAgICAgICAgZ19zb3Vy
Y2Vfc2V0X3ByaW9yaXR5KHByaXYtPnJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlLmdl
dCgpLCBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIxKTsKKworICAgICAgICBnX3NvdXJjZV9zZXRf
Y2FsbGJhY2socHJpdi0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXJTb3VyY2UuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KCZ0aW1lckZpcmVkQ2FsbGJhY2spLCAoZ3BvaW50
ZXIpd2ViVmlldywgMCk7CisgICAgICAgIGdfc291cmNlX2F0dGFjaChwcml2LT5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaW1lclNvdXJjZS5nZXQoKSwgZ01haW5Db250ZXh0KTsKKworICAgICAgICBn
X21haW5fY29udGV4dF91bnJlZihnTWFpbkNvbnRleHQpOworICAgIH0KK30KKyNlbmRpZgorCiBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAt
Mjc0NCw2ICsyODI1LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KFcKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAgV0VCS0lUX1RZUEVf
VklFV1BPUlRfQVRUUklCVVRFUyk7CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0NIRURVTEVfQU5JTUFUSU9OXSA9IGdf
c2lnbmFsX25ldygic2NoZWR1bGUtYW5pbWF0aW9uIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKUdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xh
c3MsIHNjaGVkdWxlX2FuaW1hdGlvbiksCisgICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAg
ICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVf
Tk9ORSwgMCk7CisjZW5kaWYKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZp
cnR1YWwgbWV0aG9kcwogICAgICAqLwpAQCAtMjc2NSw2ICsyODU2LDkgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAgIHdlYlZpZXdDbGFzcy0+cmVkbyA9IHdl
YmtpdF93ZWJfdmlld19yZWFsX3JlZG87CiAgICAgd2ViVmlld0NsYXNzLT5tb3ZlX2N1cnNvciA9
IHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29yOwogICAgIHdlYlZpZXdDbGFzcy0+c2hv
dWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvdWxkX2Fs
bG93X2VkaXRpbmdfYWN0aW9uOworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
KyAgICB3ZWJWaWV3Q2xhc3MtPnNjaGVkdWxlX2FuaW1hdGlvbiA9IHdlYmtpdF93ZWJfdmlld19z
Y2hlZHVsZV9hbmltYXRpb247CisjZW5kaWYKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5kaXNw
b3NlID0gd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2U7CkBAIC0zNDM5LDYgKzM1MzMsMTEgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0VwogCiAgICAgcHJpdi0+c3ViUmVz
b3VyY2VzID0gYWRvcHRHUmVmKGdfaGFzaF90YWJsZV9uZXdfZnVsbChnX3N0cl9oYXNoLCBnX3N0
cl9lcXVhbCwgZ19mcmVlLCBnX29iamVjdF91bnJlZikpOwogCisjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQorICAgIHByaXYtPnJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291
cmNlID0gMDsKKyAgICBwcml2LT50aW1lU3RhbXAgPSAwLjA7CisjZW5kaWYKKwogICAgIGd0a19k
cmFnX2Rlc3Rfc2V0KEdUS19XSURHRVQod2ViVmlldyksIHN0YXRpY19jYXN0PEd0a0Rlc3REZWZh
dWx0cz4oMCksIDAsIDAsIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09Q
WSB8IEdES19BQ1RJT05fQ09QWSB8IEdES19BQ1RJT05fTU9WRSB8IEdES19BQ1RJT05fTElOSyB8
IEdES19BQ1RJT05fUFJJVkFURSkpOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0
KEdUS19XSURHRVQod2ViVmlldyksIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJk
SGVscGVyKCktPnRhcmdldExpc3QoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaAkocmV2aXNpb24gOTQxNTUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDggQEAg
c3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICgqIHJlZG8pICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2Vi
X3ZpZXcpOwogICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIHNob3VsZF9hbGxvd19l
ZGl0aW5nX2FjdGlvbikgKFdlYktpdFdlYlZpZXcgICAqd2ViX3ZpZXcpOwogCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgKCpzY2hlZHVsZV9hbmltYXRpb24pICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJfdmlldyk7CisKICAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhw
YW5zaW9uICovCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAkocmV2aXNpb24gOTQxNTUpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsMTEgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAg
ICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAgICAKKyAgICBH
UmVmUHRyPEdTb3VyY2U+IHJlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyU291cmNlOworICAgIGdk
b3VibGUgdGltZVN0YW1wOworI2VuZGlmCisKICAgICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUg
YmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3QgaXMKICAgICAvLyBjcmVhdGVkIHRvbyBsYXRl
IGluIHRoZSBmcmFtZSBsb2FkaW5nIHByb2Nlc3MuCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJSZXNv
dXJjZT4gbWFpblJlc291cmNlOwo=
</data>
<flag name="review"
          id="102470"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107978</attachid>
            <date>2011-09-20 02:12:15 -0700</date>
            <delta_ts>2011-09-20 07:20:41 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>P66280.patch</filename>
            <type>text/plain</type>
            <size>6450</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTE5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDkt
MjAgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtd
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0IGZvciBndGsgcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQWRkIGFu
IG9wdGlvbiB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBndGsgcG9ydC4KKwog
MjAxMS0wOS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS41LjkwIHJl
bGVhc2UKSW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuYWMJKHJl
dmlzaW9uIDk1NDA1KQorKysgY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsNiAr
ODg1LDE0IEBAIEFDX0FSR19FTkFCTEUoYW5pbWF0aW9uX2FwaSwKICAgICAgICAgICAgICAgW10s
IFtlbmFibGVfYW5pbWF0aW9uX2FwaT0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYW5p
bWF0aW9uX2FwaV0pCiAKKyMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShyZXF1ZXN0X2FuaW1hdGlv
bl9mcmFtZSwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXJlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBz
dXBwb3J0IGZvciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgW2RlZmF1bHQ9bm9dXSksCisgICAgICAg
ICAgICAgIFtdLFtlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWU9Im5vIl0pCitBQ19NU0df
UkVTVUxUKFskZW5hYmxlX3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSkKKwogIyBjaGVjayB3aGV0
aGVyIHRvIGVuYWJsZSB0b3VjaCBpY29uIGxvYWRpbmcgCiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRo
ZXIgdG8gZW5hYmxlIHRvdWNoIGljb24gbG9hZGluZ10pCiBBQ19BUkdfRU5BQkxFKHRvdWNoX2lj
b25fbG9hZGluZywKQEAgLTExNzcsNiArMTE4NSw3IEBAIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVf
V0VCS0lUMl0sW3Rlc3QgIiQKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfUExVR0lOX1BST0NFU1Nd
LFt0ZXN0ICIkZW5hYmxlX3BsdWdpbl9wcm9jZXNzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFM
KFtFTkFCTEVfU1BFTExDSEVDS10sW3Rlc3QgIiRlbmFibGVfc3BlbGxjaGVjayIgPSAieWVzIl0p
CiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0FOSU1BVElPTl9BUEldLFt0ZXN0ICIkZW5hYmxlX2Fu
aW1hdGlvbl9hcGkiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV0sW3Rlc3QgIiRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWUiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkddLFt0ZXN0
ICIkZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChb
RU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVJdLFt0ZXN0ICIkZW5hYmxlX3JlZ2lzdGVy
X3Byb3RvY29sX2hhbmRsZXIiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT05dLFt0ZXN0ICIkZW5hYmxlX2RldmljZV9vcmllbnRhdGlvbiIgPSAieWVz
Il0pCkBAIC0xMjc4LDYgKzEyODcsNyBAQCBGZWF0dXJlczoKICBYU0xUIHN1cHBvcnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfeHNsdAogIFNw
ZWxsY2hlY2sgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
JGVuYWJsZV9zcGVsbGNoZWNrCiAgQW5pbWF0aW9uIEFQSSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2FuaW1hdGlvbl9hcGkKKyBSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
cmVxdWVzdF9hbmltYXRpb25fZnJhbWUKICBUb3VjaCBJY29uIExvYWRpbmcgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfdG91Y2hfaWNvbl9sb2FkaW5nCiAg
UmVnaXN0ZXIgUHJvdG9jb2wgSGFuZGxlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIKICBXZWJLaXQyIHN1cHBvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2Via2l0MgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTUxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wOS0yMCAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisKKyAgICAg
ICAgW0dUS10gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQgZm9yIGd0ayBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBHVEsgcG9ydCB1
c2UgUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKwogMjAxMS0wOS0xOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB0b1ByaW1pdGl2ZSBmcm9tIEpTQ2VsbApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gOTU0MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNTYsNyAr
MTE1Niw3IEBACiAjZGVmaW5lIFdURl9VU0VfQVZGT1VOREFUSU9OIDEKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQogI2RlZmlu
ZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5NTUxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTA5LTIwICBDaGFuZ1Nlb2sgT2gg
IDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUgc3VwcG9ydCBmb3IgZ3RrIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgZmlsZXMgdG8gYnVpbGQtdGFyZ2V0ICYgYWN0aXZh
dGUgRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FIGZsYWcKKyAgICAgICAgd2hlbiBlbmFi
bGluZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgb3B0aW9uLgorCisgICAgICAgIGZhc3QvYW5pbWF0
aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWNhbmNlbC5odG1sCisgICAgICAgIGZhc3QvYW5p
bWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWNhbmNlbDIuaHRtbAorICAgICAgICBmYXN0
L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1kaXNwbGF5Lmh0bWwKKyAgICAgICAg
ZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwK
KyAgICAgICAgZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGltZXN0YW1w
cy5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXdp
dGhpbi1jYWxsYmFjay5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0
aW9uLWZyYW1lLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisKIDIwMTEtMDktMTkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgTGVvcGFyZCBidWlsZC4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5NTQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNiArNTYwLDE0IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gLURFTkFCTEVfQU5JTUFUSU9OX0EKIGVuZGlmICAjIEVORCBFTkFCTEVfQU5J
TUFUSU9OX0FQSQogCiAjIC0tLQorIyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydAorIyAt
LS0KK2lmIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQorRkVBVFVSRV9ERUZJTkVTICs9
IEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRT0xCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1E
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FPTEKK2VuZGlmICAjIEVORCBFTkFCTEVfUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUKKworIyAtLS0KICMgM0QgY2FudmFzIChXZWJHTCkgc3VwcG9y
dAogIyAtLS0KIGlmIEVOQUJMRV9XRUJHTApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiA5NTQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4NTIsMyArNDg1MiwxNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAog
ZW5kaWYgICMgRU5EIEVOQUJMRV9NSFRNTAorCisjIC0tLQorIyBSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgc3VwcG9ydAorIyAtLS0KK2lmIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQord2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKKyAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIFwKKyAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaAord2ViY29yZV9zb3VyY2VzICs9
IFwKKyAgICBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrQ3VzdG9tLmNwcCBcCisgICAgU291cmNlL1dlYkNvcmUvZG9tL1JlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmggXAorICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwIFwKKyAgICBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmgKK2VuZGlmICAjIEVORCBFTkFCTEVfUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUK
</data>
<flag name="review"
          id="104820"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107999</attachid>
            <date>2011-09-20 07:20:41 -0700</date>
            <delta_ts>2011-09-20 13:12:21 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>P66280.patch</filename>
            <type>text/plain</type>
            <size>6542</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTM5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDkt
MjAgIENoYW5nU2VvayBPaCAgPHNoaXZhbWlkb3dAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtd
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0IGZvciBndGsgcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQWRkIGFu
IG9wdGlvbiB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBndGsgcG9ydC4KKwog
MjAxMS0wOS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS41LjkwIHJl
bGVhc2UKSW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuYWMJKHJl
dmlzaW9uIDk1NTM5KQorKysgY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCkBAIC04NzcsNiAr
ODc3LDE0IEBAIEFDX0FSR19FTkFCTEUoYW5pbWF0aW9uX2FwaSwKICAgICAgICAgICAgICAgW10s
IFtlbmFibGVfYW5pbWF0aW9uX2FwaT0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfYW5p
bWF0aW9uX2FwaV0pCiAKKyMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHN1cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShyZXF1ZXN0X2FuaW1hdGlv
bl9mcmFtZSwKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXJlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBz
dXBwb3J0IGZvciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKGV4cGVyaW1lbnRhbCkgW2RlZmF1bHQ9
bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWU9
Im5vIl0pCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSkK
KwogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSB0b3VjaCBpY29uIGxvYWRpbmcgCiBBQ19NU0df
Q0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIHRvdWNoIGljb24gbG9hZGluZ10pCiBBQ19BUkdf
RU5BQkxFKHRvdWNoX2ljb25fbG9hZGluZywKQEAgLTExNjgsNiArMTE3Niw3IEBAIEFNX0NPTkRJ
VElPTkFMKFtFTkFCTEVfV0VCS0lUMl0sW3Rlc3QgIiQKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVf
UExVR0lOX1BST0NFU1NdLFt0ZXN0ICIkZW5hYmxlX3BsdWdpbl9wcm9jZXNzIiA9ICJ5ZXMiXSkK
IEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfU1BFTExDSEVDS10sW3Rlc3QgIiRlbmFibGVfc3BlbGxj
aGVjayIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0FOSU1BVElPTl9BUEldLFt0
ZXN0ICIkZW5hYmxlX2FuaW1hdGlvbl9hcGkiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW0VO
QUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV0sW3Rlc3QgIiRlbmFibGVfcmVxdWVzdF9hbmlt
YXRpb25fZnJhbWUiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9UT1VDSF9JQ09O
X0xPQURJTkddLFt0ZXN0ICIkZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyIgPSAieWVzIl0pCiBB
TV9DT05ESVRJT05BTChbRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVJdLFt0ZXN0ICIk
ZW5hYmxlX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIiID0gInllcyJdKQogQU1fQ09ORElUSU9O
QUwoW0VOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT05dLFt0ZXN0ICIkZW5hYmxlX2RldmljZV9vcmll
bnRhdGlvbiIgPSAieWVzIl0pCkBAIC0xMjY4LDYgKzEyNzcsNyBAQCBGZWF0dXJlczoKICBYU0xU
IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRl
bmFibGVfeHNsdAogIFNwZWxsY2hlY2sgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogJGVuYWJsZV9zcGVsbGNoZWNrCiAgQW5pbWF0aW9uIEFQSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2FuaW1hdGlvbl9h
cGkKKyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICRlbmFibGVfcmVxdWVzdF9hbmltYXRpb25fZnJhbWUKICBUb3VjaCBJY29uIExvYWRp
bmcgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfdG91Y2hf
aWNvbl9sb2FkaW5nCiAgUmVnaXN0ZXIgUHJvdG9jb2wgSGFuZGxlciBzdXBwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX3JlZ2lzdGVyX3Byb3RvY29sX2hhbmRsZXIKICBXZWJL
aXQyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRl
bmFibGVfd2Via2l0MgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTUz
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0wOS0yMCAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFp
bC5jb20+CisKKyAgICAgICAgW0dUS10gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHN1cHBvcnQgZm9y
IGd0ayBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExldCBHVEsgcG9ydCB1c2UgUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIuCisKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wOS0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQgZG9lcyBub3Qgc3BlY3VsYXRlIGFnZ3Jlc3Np
dmVseSBlbm91Z2ggb24gR2V0QnlJZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gOTU1MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNDMsNyArMTE0Myw3IEBACiAjZGVmaW5lIFdURl9V
U0VfQVZGT1VOREFUSU9OIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI0IEBACisyMDExLTA5LTIwICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4K
KworICAgICAgICBbR1RLXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3VwcG9ydCBmb3IgZ3RrIHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mjgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNv
bWUgZmlsZXMgdG8gYnVpbGQtdGFyZ2V0ICYgYWN0aXZhdGUgRU5BQkxFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FIGZsYWcKKyAgICAgICAgd2hlbiBlbmFibGluZyByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgb3B0aW9uLgorCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZy
YW1lLWNhbmNlbC5odG1sCisgICAgICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWNhbmNlbDIuaHRtbAorICAgICAgICBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS1kaXNwbGF5Lmh0bWwKKyAgICAgICAgZmFzdC9hbmltYXRpb24vcmVxdWVzdC1h
bmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwKKyAgICAgICAgZmFzdC9hbmltYXRpb24v
cmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGltZXN0YW1wcy5odG1sCisgICAgICAgIGZhc3QvYW5p
bWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXdpdGhpbi1jYWxsYmFjay5odG1sCisgICAg
ICAgIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLmh0bWwKKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisKIDIw
MTEtMDktMTkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGRvY3VtZW50IERlYnVnZ2VyLnBhdXNlZCwgaW50cm9kdWNlIHR5cGVz
IGZvciBpZHMgaW4gRGVidWdnZXIgZG9tYWluLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDk1NTM5KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU1MCw2ICs1NTAsMTQgQEAgd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9B
TklNQVRJT05fQQogZW5kaWYgICMgRU5EIEVOQUJMRV9BTklNQVRJT05fQVBJCiAKICMgLS0tCisj
IFJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0CisjIC0tLQoraWYgRU5BQkxFX1JFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FPTEKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUU9MQorZW5kaWYgICMgRU5EIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQor
CisjIC0tLQogIyAzRCBjYW52YXMgKFdlYkdMKSBzdXBwb3J0CiAjIC0tLQogaWYgRU5BQkxFX1dF
QkdMCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
NDg1MywzICs0ODUzLDE3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCiBlbmRpZiAgIyBFTkQgRU5BQkxFX01I
VE1MCisKKyMgLS0tCisjIFJlcXVlc3RBbmltYXRpb25GcmFtZSBzdXBwb3J0CisjIC0tLQoraWYg
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FCit3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAorICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjay5jcHAgXAorICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFjay5oCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorICAgIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwIFwK
KyAgICBTb3VyY2UvV2ViQ29yZS9kb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBc
CisgICAgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAg
XAorICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAor
ZW5kaWYgICMgRU5EIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>