<?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>94925</bug_id>
          
          <creation_ts>2012-08-24 05:18:03 -0700</creation_ts>
          <short_desc>[EFL][UT]Refactoring an implementation of testing framework for wk1.</short_desc>
          <delta_ts>2012-10-02 08:59:46 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>97114</dependson>
          <blocked>86091</blocked>
    
    <blocked>95984</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Krzysztof Czech">k.czech</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704006</commentid>
    <comment_count>0</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-08-24 05:18:03 -0700</bug_when>
    <thetext>Refactoring an implementation of testing framework for wk1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704008</commentid>
    <comment_count>1</comment_count>
      <attachid>160401</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-08-24 05:20:11 -0700</bug_when>
    <thetext>Created attachment 160401
Updating ut framework for wk1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704009</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-24 05:23:01 -0700</bug_when>
    <thetext>Attachment 160401 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:35:  The parameter name &quot;viewType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704139</commentid>
    <comment_count>3</comment_count>
      <attachid>160433</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-08-24 09:00:01 -0700</bug_when>
    <thetext>Created attachment 160433
Updating ut framework for wk1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704703</commentid>
    <comment_count>4</comment_count>
      <attachid>160433</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-25 10:43:36 -0700</bug_when>
    <thetext>Comment on attachment 160433
Updating ut framework for wk1

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

&gt; Source/WebKit/efl/ChangeLog:4
&gt; +        [EFL][UT]Refactoring an implementation of testing framework for wk1.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=94925

Bug title and change log are different.

&gt; Source/WebKit/efl/ChangeLog:10
&gt; +        and lastly to make framework simplier and easier to use.

I am not good english speaker, so I am not sure whether `simplier` is correct.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:78
&gt; +    UNUSED_PARAM(webView);
&gt; +    UNUSED_PARAM(eventInfo);

I think that we can just remove parameter name because this is cpp.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:84
&gt; -bool EWKTestBase::runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
&gt; +void EWKTestBase::runTest(const char* url)

In my two cents, runTest looks ambiguous.
WebKit2/Efl uses loadUrlSync (although I want to suggest waitUntilLoadFinished with ewk_view_uri_set like waitUntilTitleChanged approach)

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:80
&gt; -Evas* EWKTestView::evas()
&gt; +bool EWKTestView::loadUrl(const char* url)

I think that this wrapper is not necessary.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:90
&gt; +Evas_Object* EWKTestView::mainFrame()
&gt;  {
&gt; -    if (!m_webView.get())
&gt; -        return;
&gt; -
&gt; -    evas_object_smart_callback_del(m_webView.get(), eventName, callback);
&gt; -    evas_object_smart_callback_add(m_webView.get(), eventName, callback, ptr);
&gt; +    return ewk_view_frame_main_get(m_webView);
&gt;  }

Ditto.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:-66
&gt; -    OwnPtr&lt;Evas_Object&gt; m_webView;

Can I know why you change OwnPtr&lt;Evas_Object&gt; to Evas_Object* ?

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:35
&gt; +    EXPECT_EQ(EINA_FALSE, ewk_view_editable_get(webView()));

ASSERT_FALSE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710429</commentid>
    <comment_count>5</comment_count>
      <attachid>160433</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-02 22:54:06 -0700</bug_when>
    <thetext>Comment on attachment 160433
Updating ut framework for wk1

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

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:46
&gt;      EWKTestView(const EWKTestView&amp;);

Please add explicit.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:49
&gt; +    int m_useX11Window;

why int ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718134</commentid>
    <comment_count>6</comment_count>
      <attachid>160433</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-12 03:12:47 -0700</bug_when>
    <thetext>Comment on attachment 160433
Updating ut framework for wk1

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

&gt; Source/WebKit/efl/ChangeLog:5
&gt; +

Will correct

&gt; Source/WebKit/efl/ChangeLog:11
&gt; +

You&apos;re right

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:79
&gt; +

Providing extra parameters of detailed warnings like (-Wunused-parameter) to gcc/g++ the warning will occur, despite it&apos;s a cpp file.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:85
&gt;  {

I agree with you, runTest() might be a little ambiguous.
Having something like waitUntilLoadFinished will assure that page loading is completed.
Generally this method is addressed for testing like getters/setters, but yes
to void some potential problems your suggestion is good.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:81
&gt;  {

Ok, ewk_view_uri_set can be used directly.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:91
&gt;  

Will correct

&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:46
&gt;&gt;      EWKTestView(const EWKTestView&amp;);
&gt; 
&gt; Please add explicit.

I think adding explicit to private copy constructor is not needed.

&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:-66
&gt;&gt; -    OwnPtr&lt;Evas_Object&gt; m_webView;
&gt; 
&gt; Can I know why you change OwnPtr&lt;Evas_Object&gt; to Evas_Object* ?

I wanna make sure m_webView and m_ecoreEvas are deleted before ecore_evas_shutdown.
Despite the fact test view is destructed before ecore_evas_shutdown having OwnPtr
I had some strange assertion from efl. That&apos;s way I don&apos;t use OwnPtr in this case.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:50
&gt;      int m_width, m_height;

to have compatibility with getopt_long</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718149</commentid>
    <comment_count>7</comment_count>
      <attachid>163572</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-12 03:39:49 -0700</bug_when>
    <thetext>Created attachment 163572
[EFL][UT]Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718151</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 03:42:32 -0700</bug_when>
    <thetext>Attachment 163572 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:79:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718156</commentid>
    <comment_count>9</comment_count>
      <attachid>163576</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-12 03:52:11 -0700</bug_when>
    <thetext>Created attachment 163576
[EFL][UT]Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718237</commentid>
    <comment_count>10</comment_count>
      <attachid>163576</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-12 05:27:31 -0700</bug_when>
    <thetext>Comment on attachment 163576
[EFL][UT]Refactoring an implementation of testing framework for wk1.

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

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:69
&gt; +void EWKTestBase::onLoadFinished(void* data, Evas_Object* webView, void* eventInfo)
&gt;  {
&gt; -    return createTest(Config::defaultTestPage, event_callback, event_name, event_data);
&gt; +    UNUSED_PARAM(data);
&gt; +    UNUSED_PARAM(webView);
&gt; +    UNUSED_PARAM(eventInfo);

Could you check whether compiler complains with void EWKTestBase::onLoadFinished(void*, Evas_Object*, void*) ?

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:44
&gt; +bool EWKTestView::init()

Isn&apos;t it better to pass viewtype, width, height instead of keeping them ?

and initialize looks better.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:76
&gt; +    evas_object_focus_set(m_webView, EINA_TRUE);

true ?

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:42
&gt; +    void viewTypeSet(EwkViewType testViewType) { m_viewType = testViewType; }

I think that it looks meaningless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718258</commentid>
    <comment_count>11</comment_count>
      <attachid>163576</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-12 05:43:29 -0700</bug_when>
    <thetext>Comment on attachment 163576
[EFL][UT]Refactoring an implementation of testing framework for wk1.

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

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:33
&gt; +    runTest();

Could you explain why WK1 unit test should call runTest() unlike WK2 unit test ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718407</commentid>
    <comment_count>12</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-12 08:40:13 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 163576 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163576&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:69
&gt; &gt; +void EWKTestBase::onLoadFinished(void* data, Evas_Object* webView, void* eventInfo)
&gt; &gt;  {
&gt; &gt; -    return createTest(Config::defaultTestPage, event_callback, event_name, event_data);
&gt; &gt; +    UNUSED_PARAM(data);
&gt; &gt; +    UNUSED_PARAM(webView);
&gt; &gt; +    UNUSED_PARAM(eventInfo);
&gt; 
&gt; Could you check whether compiler complains with void EWKTestBase::onLoadFinished(void*, Evas_Object*, void*) ?

I checked and this build configuration (it might be changed someday to be more restrictive) doesn&apos;t complain.
Ok, I will correct this.

&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:44
&gt; &gt; +bool EWKTestView::init()
&gt; 
&gt; Isn&apos;t it better to pass viewtype, width, height instead of keeping them ?
&gt; 
&gt; and initialize looks better.

You mean passing from command line ?
I proposed EWKTestConfig.h to keep constants in terms of readability.

&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:76
&gt; &gt; +    evas_object_focus_set(m_webView, EINA_TRUE);
&gt; 
&gt; true ?

You mean true as boolean value ?. Well I wanted to be coherent with function&apos;s declaration. It declares Eina_Bool.

&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:42
&gt; &gt; +    void viewTypeSet(EwkViewType testViewType) { m_viewType = testViewType; }
&gt; 
&gt; I think that it looks meaningless.

Let me explain, why I proposed this method.
This method gives possibility to test Tiled and Single backing store even in one test&apos;s translation unit.
By default Tiled backingstore is created. viewTypeSet gives possibility to change this to SingleView in other test case before runTest (btw. runTest is a bit ambiguous, rather should be loadTest) is calling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718408</commentid>
    <comment_count>13</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-12 08:41:02 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 163576 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163576&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_ewk_view.cpp:33
&gt; &gt; +    runTest();
&gt; 
&gt; Could you explain why WK1 unit test should call runTest() unlike WK2 unit test ?

I think this method&apos;s name is a bit ambiguous. Should be rather loadUrl.
Generally, every time new test case is created, webkit should be properly initialized and test page should be loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718453</commentid>
    <comment_count>14</comment_count>
      <attachid>163576</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-12 09:28:17 -0700</bug_when>
    <thetext>Comment on attachment 163576
[EFL][UT]Refactoring an implementation of testing framework for wk1.

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

&gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:44
&gt;&gt;&gt; +bool EWKTestView::init()
&gt;&gt; 
&gt;&gt; Isn&apos;t it better to pass viewtype, width, height instead of keeping them ?
&gt;&gt; 
&gt;&gt; and initialize looks better.
&gt; 
&gt; You mean passing from command line ?
&gt; I proposed EWKTestConfig.h to keep constants in terms of readability.

I just mean passing them as argument of init() instead of argument of constructor.

&gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:76
&gt;&gt;&gt; +    evas_object_focus_set(m_webView, EINA_TRUE);
&gt;&gt; 
&gt;&gt; true ?
&gt; 
&gt; You mean true as boolean value ?. Well I wanted to be coherent with function&apos;s declaration. It declares Eina_Bool.

As following http://trac.webkit.org/wiki/EFLWebKitCodingStyle, we use true instead of EINA_TRUE in webkit internal.

&gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:42
&gt;&gt;&gt; +    void viewTypeSet(EwkViewType testViewType) { m_viewType = testViewType; }
&gt;&gt; 
&gt;&gt; I think that it looks meaningless.
&gt; 
&gt; Let me explain, why I proposed this method.
&gt; This method gives possibility to test Tiled and Single backing store even in one test&apos;s translation unit.
&gt; By default Tiled backingstore is created. viewTypeSet gives possibility to change this to SingleView in other test case before runTest (btw. runTest is a bit ambiguous, rather should be loadTest) is calling.

After called viewTypeSet, we should call init to really change the type of view.(and it is not used in other areas.
So, I think that we can just pass  type to init as a parameter.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:-66
&gt; -    OwnPtr&lt;Evas_Object&gt; m_webView;

I will check which warning is generated.

But I believe that we can ensure destructor of members will be called in order.
We can just add comment like http://trac.webkit.org/browser/trunk/Source/WebCore/platform/efl/RenderThemeEfl.h#L251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719405</commentid>
    <comment_count>15</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 06:33:50 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 163576 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163576&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:44
&gt; &gt;&gt;&gt; +bool EWKTestView::init()
&gt; &gt;&gt; 
&gt; &gt;&gt; Isn&apos;t it better to pass viewtype, width, height instead of keeping them ?
&gt; &gt;&gt; 
&gt; &gt;&gt; and initialize looks better.
&gt; &gt; 
&gt; &gt; You mean passing from command line ?
&gt; &gt; I proposed EWKTestConfig.h to keep constants in terms of readability.
&gt; 
&gt; I just mean passing them as argument of init() instead of argument of constructor.
I agree with this idea. Corrected.
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:76
&gt; &gt;&gt;&gt; +    evas_object_focus_set(m_webView, EINA_TRUE);
&gt; &gt;&gt; 
&gt; &gt;&gt; true ?
&gt; &gt; 
&gt; &gt; You mean true as boolean value ?. Well I wanted to be coherent with function&apos;s declaration. It declares Eina_Bool.
&gt; 
&gt; As following http://trac.webkit.org/wiki/EFLWebKitCodingStyle, we use true instead of EINA_TRUE in webkit internal.
Corrected.
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:42
&gt; &gt;&gt;&gt; +    void viewTypeSet(EwkViewType testViewType) { m_viewType = testViewType; }
&gt; &gt;&gt; 
&gt; &gt;&gt; I think that it looks meaningless.
&gt; &gt; 
&gt; &gt; Let me explain, why I proposed this method.
&gt; &gt; This method gives possibility to test Tiled and Single backing store even in one test&apos;s translation unit.
&gt; &gt; By default Tiled backingstore is created. viewTypeSet gives possibility to change this to SingleView in other test case before runTest (btw. runTest is a bit ambiguous, rather should be loadTest) is calling.
&gt; 
&gt; After called viewTypeSet, we should call init to really change the type of view.(and it is not used in other areas.
&gt; So, I think that we can just pass  type to init as a parameter.
Corrected.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:-66
&gt; &gt; -    OwnPtr&lt;Evas_Object&gt; m_webView;
&gt; 
&gt; I will check which warning is generated.
&gt; 
&gt; But I believe that we can ensure destructor of members will be called in order.
&gt; We can just add comment like http://trac.webkit.org/browser/trunk/Source/WebCore/platform/efl/RenderThemeEfl.h#L251
Thanks for the tip. Indeed, ordering members helped. I used OwnPtrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719406</commentid>
    <comment_count>16</comment_count>
      <attachid>163859</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 06:34:17 -0700</bug_when>
    <thetext>Created attachment 163859
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719426</commentid>
    <comment_count>17</comment_count>
      <attachid>163859</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-13 07:04:36 -0700</bug_when>
    <thetext>Comment on attachment 163859
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

Cool, quite better than before.
thank you.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:43
&gt; +Evas_Object* EWKTestBase::mainFrame()
&gt;  {
&gt; -    ecore_main_loop_quit();
&gt; +    return ewk_view_frame_main_get(webView());
&gt;  }

mainFrame looks not used now.

what do you think about adding this when it is really needed?

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:32
&gt; +bool EWKTestView::init(int useX11Window, EwkViewType testViewType, int width, int height)

gyuyoung asked why useX11Window is int.
Did you answer it?

And when this function is called, I think that we should set webview to 0 first.
If not, when we create new ecore_evas, previous ecore_evas will be removed before cleaning webview.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:39
&gt; +    if (!m_ecoreEvas.get())

.get() is not required here.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:58
&gt;          return false;

if (!m_webView)
    return false;

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:34
&gt; +    ewk_view_editable_set(webView(), EINA_FALSE);

s/EINA_FALSE/false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719520</commentid>
    <comment_count>18</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 08:22:59 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 163859 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163859&amp;action=review
&gt; 
&gt; Cool, quite better than before.
&gt; thank you.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:43
&gt; &gt; +Evas_Object* EWKTestBase::mainFrame()
&gt; &gt;  {
&gt; &gt; -    ecore_main_loop_quit();
&gt; &gt; +    return ewk_view_frame_main_get(webView());
&gt; &gt;  }
&gt; 
&gt; mainFrame looks not used now.
&gt; 
&gt; what do you think about adding this when it is really needed?
Alright.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:32
&gt; &gt; +bool EWKTestView::init(int useX11Window, EwkViewType testViewType, int width, int height)
&gt; 
&gt; gyuyoung asked why useX11Window is int.
&gt; Did you answer it?
Yes, I did it. int is used to have compatibility with getopt_long.
&gt; 
&gt; And when this function is called, I think that we should set webview to 0 first.
&gt; If not, when we create new ecore_evas, previous ecore_evas will be removed before cleaning webview.
Generally this function should be called once per test case, then destruction is handled properly. If test case requires another page loading instead of loadUrl, ewk_view_uri_set(...) and waintUntilLoadFinished() should be called.
Initialization (init()) should be done only once per test case.
I thought about to move init() from loadUrl() and call it separately as a first statement of each new test. It might more readable.
What do you think ?
&gt;  
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:39
&gt; &gt; +    if (!m_ecoreEvas.get())
&gt; 
&gt; .get() is not required here.
Indeed.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:58
&gt; &gt;          return false;
&gt; 
&gt; if (!m_webView)
&gt;     return false;
Indeed.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_ewk_view.cpp:34
&gt; &gt; +    ewk_view_editable_set(webView(), EINA_FALSE);
Ups :), I haven&apos;t noticed, thanks.
&gt; 
&gt; s/EINA_FALSE/false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719540</commentid>
    <comment_count>19</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 08:38:09 -0700</bug_when>
    <thetext>&gt; And when this function is called, I think that we should set webview to 0 first.
&gt; If not, when we create new ecore_evas, previous ecore_evas will be removed before cleaning webview.

Yes, I think setting webview to 0 before ecore_evas is created sounds very good.
It resolves issue with clearing. Nice :). Ignore my last comment regarding this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719555</commentid>
    <comment_count>20</comment_count>
      <attachid>163885</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 08:50:02 -0700</bug_when>
    <thetext>Created attachment 163885
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719574</commentid>
    <comment_count>21</comment_count>
      <attachid>163888</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-13 09:17:21 -0700</bug_when>
    <thetext>Created attachment 163888
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720755</commentid>
    <comment_count>22</comment_count>
      <attachid>163888</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-14 07:35:07 -0700</bug_when>
    <thetext>Comment on attachment 163888
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:49
&gt; +    m_ewkTestView = new EWKTestView();

You could use an OwnPtr here so you do not need to delete this pointer manually later.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:46
&gt;      OwnPtr&lt;Evas_Object&gt; m_webView;

Evas_Objects should be wrapped inside RefPtrs now.

&gt; Source/WebKit/efl/tests/test_runner.cpp:18
&gt;  */
&gt; +#include &quot;config.h&quot;

Very minor nit: I would add an empty line before this #include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722742</commentid>
    <comment_count>23</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-18 06:50:25 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 163888 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163888&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:49
&gt; &gt; +    m_ewkTestView = new EWKTestView();
&gt; 
&gt; You could use an OwnPtr here so you do not need to delete this pointer manually later.
I wanna be sure m_ewkTestView is destroyed before ecore_evas_shutdown() and ewk_shutdown(), this is the reason I don&apos;t use OwnPtr in this particular case.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h:46
&gt; &gt;      OwnPtr&lt;Evas_Object&gt; m_webView;
&gt; 
&gt; Evas_Objects should be wrapped inside RefPtrs now.
Thanks, I will correct.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_runner.cpp:18
&gt; &gt;  */
&gt; &gt; +#include &quot;config.h&quot;
&gt; 
&gt; Very minor nit: I would add an empty line before this #include.
Thanks, I will correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722759</commentid>
    <comment_count>24</comment_count>
      <attachid>164556</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-18 07:24:13 -0700</bug_when>
    <thetext>Created attachment 164556
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723112</commentid>
    <comment_count>25</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-18 16:00:09 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=164556) [details]
&gt; [EFL][UT] Refactoring an implementation of testing framework for wk1.

Patch itself is good to me.
please rebase the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723181</commentid>
    <comment_count>26</comment_count>
      <attachid>164556</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-18 18:43:34 -0700</bug_when>
    <thetext>Comment on attachment 164556
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:66
&gt; +    evas_object_focus_set(m_webView.get(), true);

In public API case, I think it is better to use EINA_FALSE | _TRUE to test for public API. Because, this API will be used by EFL application. So, awk2 test case also uses EINA_TRUE | FALSE.

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:37
&gt; +    ewk_view_editable_set(webView(), false);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723372</commentid>
    <comment_count>27</comment_count>
      <attachid>164685</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-19 01:12:54 -0700</bug_when>
    <thetext>Created attachment 164685
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723404</commentid>
    <comment_count>28</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-19 02:24:18 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 164556 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164556&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp:66
&gt; &gt; +    evas_object_focus_set(m_webView.get(), true);
&gt; 
&gt; In public API case, I think it is better to use EINA_FALSE | _TRUE to test for public API. Because, this API will be used by EFL application. So, awk2 test case also uses EINA_TRUE | FALSE.
Done.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_ewk_view.cpp:37
&gt; &gt; +    ewk_view_editable_set(webView(), false);
&gt; 
&gt; ditto.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723481</commentid>
    <comment_count>29</comment_count>
      <attachid>164685</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-19 05:57:21 -0700</bug_when>
    <thetext>Comment on attachment 164685
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

LGTM.
nit below.

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:26
&gt; +#include &lt;Ecore.h&gt;
&gt; +
&gt; +#include &lt;wtf/OwnPtr.h&gt;

unnecessary empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723495</commentid>
    <comment_count>30</comment_count>
      <attachid>164685</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-19 06:12:41 -0700</bug_when>
    <thetext>Comment on attachment 164685
[EFL][UT] Refactoring an implementation of testing framework for wk1.

Please land after fixing the nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723509</commentid>
    <comment_count>31</comment_count>
      <attachid>164727</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-19 06:28:56 -0700</bug_when>
    <thetext>Created attachment 164727
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723511</commentid>
    <comment_count>32</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-19 06:29:23 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 164685 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164685&amp;action=review
&gt; 
&gt; LGTM.
&gt; nit below.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_ewk_view.cpp:26
&gt; &gt; +#include &lt;Ecore.h&gt;
&gt; &gt; +
&gt; &gt; +#include &lt;wtf/OwnPtr.h&gt;
&gt; 
&gt; unnecessary empty line
Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723517</commentid>
    <comment_count>33</comment_count>
      <attachid>164727</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-19 06:32:35 -0700</bug_when>
    <thetext>Comment on attachment 164727
[EFL][UT] Refactoring an implementation of testing framework for wk1.

thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723527</commentid>
    <comment_count>34</comment_count>
      <attachid>164727</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 06:53:23 -0700</bug_when>
    <thetext>Comment on attachment 164727
[EFL][UT] Refactoring an implementation of testing framework for wk1.

Clearing flags on attachment: 164727

Committed r128995: &lt;http://trac.webkit.org/changeset/128995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723528</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 06:53:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723579</commentid>
    <comment_count>36</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-19 08:26:02 -0700</bug_when>
    <thetext>Made the bot red:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6108

test_ewk_view is segfaulting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723580</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-19 08:27:20 -0700</bug_when>
    <thetext>[ RUN      ] EWKTestBase.ewk_view_editable_get
[       OK ] EWKTestBase.ewk_view_editable_get (64 ms)
[ RUN      ] EWKTestBase.ewk_view_uri_get
ASSERTION FAILED: platformStrategies != s_platformStrategies
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebCore/platform/PlatformStrategies.cpp(52) : void WebCore::setPlatformStrategies(WebCore::PlatformStrategies*)
1   0x2b19780aae62 WebCore::setPlatformStrategies(WebCore::PlatformStrategies*)
2   0x2b19748a313d
3   0x2b19748baaad
4   0x2b19748ba8db ewk_init
5   0x4090d7 EWKUnitTests::EWKTestBase::SetUp()
6   0x2b1974b94f5f testing::Test::Run()
7   0x2b1974b955c1 testing::internal::TestInfoImpl::Run()
8   0x2b1974b95b32 testing::TestCase::Run()
9   0x2b1974b9a4fe testing::internal::UnitTestImpl::RunAllTests()
10  0x2b1974b9927c testing::UnitTest::Run()
11  0x407b9d main
12  0x2b197b66476d __libc_start_main
13  0x406c59</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723596</commentid>
    <comment_count>38</comment_count>
      <attachid>164727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-19 09:00:07 -0700</bug_when>
    <thetext>Comment on attachment 164727
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:42
&gt; +    ASSERT_GT(ecore_evas_init(), 0);

It is already called in ewk_init(), it is not needed here.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:43
&gt; +    ASSERT_GT(ewk_init(), 0);

We cannot let the ewk_main ref count go to 0 during the program execution or we will do WebCore initializations more than once, which will cause assertions. With your patch, the ref count goes down to 0 after each unit test and ewk_init() will therefore initialize WebCore again next time it is called. You probably need to call ewk_init() / ewk_shutdown() in the EWKTestBase constructor / destructor as well, so that ref count stays 1 between tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723598</commentid>
    <comment_count>39</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-19 09:02:58 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 164727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164727&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:42
&gt; &gt; +    ASSERT_GT(ecore_evas_init(), 0);
&gt; 
&gt; It is already called in ewk_init(), it is not needed here.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp:43
&gt; &gt; +    ASSERT_GT(ewk_init(), 0);
&gt; 
&gt; We cannot let the ewk_main ref count go to 0 during the program execution or we will do WebCore initializations more than once, which will cause assertions. With your patch, the ref count goes down to 0 after each unit test and ewk_init() will therefore initialize WebCore again next time it is called. You probably need to call ewk_init() / ewk_shutdown() in the EWKTestBase constructor / destructor as well, so that ref count stays 1 between tests.

I actually don&apos;t believe we need to call ewk_init() / ewk_shutdown() before and after each test. It is probably just enough to call them once in the ctr/dtor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723616</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 09:41:43 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 97114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724051</commentid>
    <comment_count>41</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-19 18:37:45 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Made the bot red:
&gt; http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6108
&gt; 
&gt; test_ewk_view is segfaulting.

Oops, I&apos;m sorry. spank spank spank !! To avoid problem like this, I will check this further when patch touches unit test and APIs. Especially, in debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730378</commentid>
    <comment_count>42</comment_count>
      <attachid>166178</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-28 02:12:43 -0700</bug_when>
    <thetext>Created attachment 166178
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730391</commentid>
    <comment_count>43</comment_count>
      <attachid>166178</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-28 02:20:08 -0700</bug_when>
    <thetext>Comment on attachment 166178
[EFL][UT] Refactoring an implementation of testing framework for wk1.

Attachment 166178 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14059241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730396</commentid>
    <comment_count>44</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-28 02:25:02 -0700</bug_when>
    <thetext>Due to the problems of multiple initializations of ewk_main(), I&apos;ve made some modifications to the patch. I added global SetUp and TearDown methods and respectively added ewk_init() and ewk_shutdown(). These methods are executed only once which means at the beginning of process execution and before it is finally closed. These two methods are part of EWKTestEnvironemnt class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730401</commentid>
    <comment_count>45</comment_count>
      <attachid>166185</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-09-28 02:33:12 -0700</bug_when>
    <thetext>Created attachment 166185
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730445</commentid>
    <comment_count>46</comment_count>
      <attachid>166185</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-28 03:33:05 -0700</bug_when>
    <thetext>Comment on attachment 166185
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

Please verify this patch won&apos;t influence on both release and debug build.

&gt; Source/WebKit/PlatformEfl.cmake:324
&gt; +    ${WEBKIT_DIR}/efl/tests/UnitTestUtils/EWKTestEnvironment.cpp

Wrong alphabetical order.

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:27
&gt; +    EWKTestEnvironment(bool useX11Window);

Missing explicit keyword

&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:36
&gt; +    ewk_view_editable_set(webView(), EINA_FALSE);

Please use true instead of EINA_FALSE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730450</commentid>
    <comment_count>47</comment_count>
      <attachid>166185</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-28 03:38:23 -0700</bug_when>
    <thetext>Comment on attachment 166185
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

&gt;&gt; Source/WebKit/efl/tests/test_ewk_view.cpp:36
&gt;&gt; +    ewk_view_editable_set(webView(), EINA_FALSE);
&gt; 
&gt; Please use true instead of EINA_FALSE

true -&gt; false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731613</commentid>
    <comment_count>48</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-10-01 05:40:36 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 166185 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166185&amp;action=review
&gt; 
&gt; Please verify this patch won&apos;t influence on both release and debug build.
&gt;
I verified, tests are working properly on both release and debug
&gt; &gt; Source/WebKit/PlatformEfl.cmake:324
&gt; &gt; +    ${WEBKIT_DIR}/efl/tests/UnitTestUtils/EWKTestEnvironment.cpp
&gt; 
&gt; Wrong alphabetical order.
Done.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:27
&gt; &gt; +    EWKTestEnvironment(bool useX11Window);
&gt; 
&gt; Missing explicit keyword
Done.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/test_ewk_view.cpp:36
&gt; &gt; +    ewk_view_editable_set(webView(), EINA_FALSE);
&gt; 
&gt; Please use true instead of EINA_FALSE
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731614</commentid>
    <comment_count>49</comment_count>
      <attachid>166457</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-10-01 05:41:12 -0700</bug_when>
    <thetext>Created attachment 166457
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732577</commentid>
    <comment_count>50</comment_count>
      <attachid>166677</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-10-02 05:41:14 -0700</bug_when>
    <thetext>Created attachment 166677
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732598</commentid>
    <comment_count>51</comment_count>
      <attachid>166677</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-02 06:12:52 -0700</bug_when>
    <thetext>Comment on attachment 166677
[EFL][UT] Refactoring an implementation of testing framework for wk1.

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

Please fix them I point out, then I really hope this patch won&apos;t roll out again. (Please check this before landing again. :-) )

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:17
&gt; +*/

new line ?

&gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:27
&gt; +    EWKTestEnvironment(bool useX11Window);

Missing explicit keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732639</commentid>
    <comment_count>52</comment_count>
      <attachid>166687</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-10-02 07:35:03 -0700</bug_when>
    <thetext>Created attachment 166687
[EFL][UT] Refactoring an implementation of testing framework for wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732640</commentid>
    <comment_count>53</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-10-02 07:36:14 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; (From update of attachment 166677 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166677&amp;action=review
&gt; 
&gt; Please fix them I point out, then I really hope this patch won&apos;t roll out again. (Please check this before landing again. :-) )
&gt; 
Checked on both debug and release. Seems fine.
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:17
&gt; &gt; +*/
&gt; 
&gt; new line ?
Done.
&gt; 
&gt; &gt; Source/WebKit/efl/tests/UnitTestUtils/EWKTestEnvironment.h:27
&gt; &gt; +    EWKTestEnvironment(bool useX11Window);
&gt; 
&gt; Missing explicit keyword.
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732685</commentid>
    <comment_count>54</comment_count>
      <attachid>166687</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 08:59:40 -0700</bug_when>
    <thetext>Comment on attachment 166687
[EFL][UT] Refactoring an implementation of testing framework for wk1.

Clearing flags on attachment: 166687

Committed r130175: &lt;http://trac.webkit.org/changeset/130175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732686</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 08:59:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160401</attachid>
            <date>2012-08-24 05:20:11 -0700</date>
            <delta_ts>2012-08-24 09:00:01 -0700</delta_ts>
            <desc>Updating ut framework for wk1</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>16913</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjYzY1NTczLi4zZGEzMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTItMDgtMjQgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlYXNvbiBvZiBjaGFuZ2luZywgd2FzIHRvIGFk
anVzdCBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRvIHVzZSBndGVzdCBmZWF0dXJlcworICAgICAg
ICByZWxhdGVkIHRvIGNsZWFuaW5nIChTZXRVcCwgVGVhckRvd24pLCBjbGVhbmluZyBjb2RlIGlu
IHRlcm1zIG9mIHVzZWxlc3MgbWV0aG9kcworICAgICAgICBhbmQgbGFzdGx5IHRvIG1ha2UgZnJh
bWV3b3JrIHNpbXBsaWVyIGFuZCBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RCYXNlOjpFV0tUZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVu
dCB3ZWJ2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6bWFpbkZyYW1l
KTogUmV0dXJucyBtYWluIGZyYW1lLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFz
ZTo6U2V0VXApOgorICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxs
ZWQuCisgICAgICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBU
ZWFyRG93biBpcyBjYWxsZWQgYXMgc29vbiBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAg
VXNlZCB0aGlzIHRvIHByb3Blcmx5IHNodXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6cnVuVGVzdCk6CisgICAgICAgIENoYW5n
ZWQgYSB3YXkgb2YgcnVubmluZyB0ZXN0LgorICAgICAgICBJbnN0ZWFkIG9mIHN0YXJpbmcgYW5k
IGNsb3NpbmcgZWNvcmUgbG9vcCwKKyAgICAgICAgZXZlbnRzIGFyZSBwcm9jZXNzZWQgaW4gYSB3
aGlsZSBsb29wLgorICAgICAgICBUaGUgc2FtZSBzb2x1dGlvbiBhcyBpbiB3azIgdGVzdHMuCisg
ICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oOgorICAgICAgICAqIHRl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgorICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0Vmlldzo6fkVXS1Rlc3RWaWV3KTogQWRkZWQgZm9yIGNsZWFuaW5nIHRlc3Qgdmlldy4KKyAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0Vmlldzo6bG9hZFVybCk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVX
S1Rlc3RWaWV3OjptYWluRnJhbWUpOgorICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
VGVzdFZpZXcuaDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OndlYlZpZXcp
OgorICAgICAgICAoRVdLVGVzdFZpZXcpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
Vmlldzo6dmlld1R5cGUpOgorICAgICAgICBVc2VkIHRvIHNldCB1cCBhIGRpZmZlcmVudCB2aWV3
IHR5cGUsCisgICAgICAgIGluIGNhc2Ugb2YgdGVzdGluZyBzaW5nbGUgYmFja2luZyBzdG9yZS4K
KyAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKKyAgICAgICAgKFRFU1RfRik6Cisg
ICAgICAgICogdGVzdHMvdGVzdF9ydW5uZXIuY3BwOgorICAgICAgICAobWFpbik6CisKIDIwMTIt
MDgtMjMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIFJlbW92ZSBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCmluZGV4IDJk
M2UyYWUuLjI5YTUwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSw0MyArMTksMTggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0QmFzZS5oIgogCi0jaW5jbHVkZSAiRVdLVGVz
dENvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8RVdlYktpdC5o
PgotCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFX
aW5kb3c7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjpp
bml0KCkKLXsKLSAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWVkamVfaW5pdCgpKSB7Ci0gICAgICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCByZXQgPSBld2tf
aW5pdCgpOwotICAgIGNvbnN0IGNoYXIqIHByb3h5VXJpID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7
Ci0KLSAgICBpZiAocmV0ICYmIHByb3h5VXJpKQotICAgICAgICBld2tfbmV0d29ya19wcm94eV91
cmlfc2V0KHByb3h5VXJpKTsKLQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXZvaWQgRVdLVGVzdEJh
c2U6OnNodXRkb3duQWxsKCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3
a1Rlc3RWaWV3KDApCiB7Ci0gICAgaW50IGNvdW50ID0gMDsKLQotICAgIHdoaWxlICgoY291bnQg
PSBlY29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9IGVk
amVfc2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAoKGNvdW50ID0gZXdrX3NodXRkb3du
KCkpID4gMCkgeyB9CiB9CiAKIHZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCkBAIC02OCwz
NSArNDMsNTYgQEAgdm9pZCBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpCiAgICAgZWNvcmVfbWFpbl9s
b29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6Y3JlYXRlVGVzdChjb25zdCBjaGFy
KiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCop
LCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQorRXZhc19PYmplY3Qq
IEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKIHsKLSAgICBFRkxfSU5JVF9SRVQoKTsKKyAgICByZXR1
cm4gbV9ld2tUZXN0Vmlldy0+d2ViVmlldygpOworfQogCi0gICAgRVdLVGVzdEVjb3JlRXZhcyBl
dmFzKHVzZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGV2YXMuc2hvdygpOworRXZhc19PYmplY3QqIEVXS1Rlc3RCYXNlOjptYWlu
RnJhbWUoKQoreworICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LT5tYWluRnJhbWUoKTsKK30KIAot
ICAgIEVXS1Rlc3RWaWV3IHZpZXcoZXZhcy5ldmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3Lmlu
aXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwordm9pZCBFV0tUZXN0QmFzZTo6U2V0VXAoKQor
eworICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CisgICAgQVNTRVJUX0dUKGV3
a19pbml0KCksIDApOwogCi0gICAgdmlldy5iaW5kRXZlbnRzKGV2ZW50X2NhbGxiYWNrLCBldmVu
dF9uYW1lLCBldmVudF9kYXRhKTsKLSAgICB2aWV3LnNob3coKTsKKyAgICBjb25zdCBjaGFyKiBw
cm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkKKyAgICAg
ICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7CiAKLSAgICBTVEFSVF9URVNU
KCk7CisgICAgbV9ld2tUZXN0VmlldyA9IG5ldyBFV0tUZXN0Vmlldyh1c2VYMTFXaW5kb3cpOwor
fQogCi0gICAgcmV0dXJuIHRydWU7Cit2b2lkIEVXS1Rlc3RCYXNlOjpUZWFyRG93bigpCit7Cisg
ICAgZGVsZXRlIG1fZXdrVGVzdFZpZXc7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAg
IGV3a19zaHV0ZG93bigpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KHZvaWQgKCpl
dmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBl
dmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2FkRmlu
aXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbykK
IHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSwgZXZlbnRf
Y2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEpOworICAgIFVOVVNFRF9QQVJBTSh3ZWJW
aWV3KTsKKyAgICBVTlVTRURfUEFSQU0oZXZlbnRJbmZvKTsKKworICAgIGJvb2wqIGxvYWRGaW5p
c2hlZCA9IHN0YXRpY19jYXN0PGJvb2wqPihkYXRhKTsKKyAgICAqbG9hZEZpbmlzaGVkID0gdHJ1
ZTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQg
KCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFy
KiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6cnVuVGVz
dChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVudF9j
YWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RSVUUobV9ld2tU
ZXN0Vmlldy0+aW5pdCgpKTsKKyAgICBBU1NFUlRfVFJVRShtX2V3a1Rlc3RWaWV3LT5sb2FkVXJs
KHVybCkpOworCisgICAgYm9vbCBsb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQobV9ld2tUZXN0Vmlldy0+d2ViVmlldygpLCAibG9hZCxmaW5p
c2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAmbG9hZEZpbmlzaGVkKTsKKworICAgIHdoaWxlICghbG9h
ZEZpbmlzaGVkKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fZXdrVGVzdFZpZXctPndlYlZpZXcoKSwgImxv
YWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAppbmRleCBlYzc1MTMy
Li43YzNlMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0QmFzZS5oCkBAIC0xOSw0OSArMTksMzEgQEAKICNpZm5kZWYgRVdLVGVzdEJh
c2VfaAogI2RlZmluZSBFV0tUZXN0QmFzZV9oCiAKLSNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSAiRVdLVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KIAotI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKLSAgICBkbyB7
ICAgIFwKLSAgICAgICAgQVNTRVJUX0VRKHRydWUsIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGFyZ3Mp
KTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgU1RBUlRfVEVTVCgpICAgIFwKLSAg
ICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpOyAgIFwKLSAgICB9
IHdoaWxlICgwKQotCi0jZGVmaW5lIEVORF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAg
ICAgICBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmlu
ZSBFRkxfSU5JVF9SRVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBpZiAoIUVXS1Rlc3RC
YXNlOjppbml0KCkpICAgXAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICBcCi0gICAgfSB3
aGlsZSAoMCkKLQotI2RlZmluZSBFRkxfSU5JVCgpICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjppbml0KCk7ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2Ug
RVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBib29sIGNy
ZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRf
ZGF0YSk7CitjbGFzcyBFV0tUZXN0QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxs
KCk7CisgICAgc3RhdGljIGludCB1c2VYMTFXaW5kb3c7CisKICAgICBzdGF0aWMgdm9pZCBzdGFy
dFRlc3QoKTsKICAgICBzdGF0aWMgdm9pZCBlbmRUZXN0KCk7CisgICAgc3RhdGljIHZvaWQgb25M
b2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50
SW5mbyk7CiAKLSAgICBzdGF0aWMgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAo
KmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIq
IGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEgPSAwKTsKLSAg
ICBzdGF0aWMgYm9vbCBydW5UZXN0KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNf
T2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQi
LCB2b2lkKiBldmVudF9kYXRhID0gMCk7CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKKyAg
ICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2Uo
KTsKIAotICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93OworICAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgICAgdm9pZCBydW5UZXN0KGNv
bnN0IGNoYXIqIHVybCA9IENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKKworICAgIEVXS1Rlc3RW
aWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAppbmRleCBmZDI5YjgxLi4yMGJm
MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksMTMwICsxOSw3NCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgi
CiAjaW5jbHVkZSA8RVdlYktpdC5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQog
bmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29y
ZUV2YXMoaW50IHVzZVgxMVdpbmRvdykKLXsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7Ci19
Ci0KLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5l
X25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGlu
dCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93
KQotewotICAgIGlmICh1c2VYMTFXaW5kb3cpCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQ
dHIoZWNvcmVfZXZhc19uZXcoZW5naW5lX25hbWUsIHZpZXdwb3J0X3gsIHZpZXdwb3J0X3ksIHZp
ZXdwb3J0X3csIHZpZXdwb3J0X2gsIGV4dHJhX29wdGlvbnMpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gs
IHZpZXdwb3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVzdEVjb3JlRXZhczo6ZXZhcygpCi17Ci0g
ICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQo
bV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RFY29y
ZUV2YXM6OnNob3coKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAgICAgICAgZWNv
cmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rl
c3RWaWV3KEV2YXMqIGV2YXMpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKENvbmZp
Zzo6ZGVmYXVsdFRlc3RQYWdlKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQot
ICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChD
b25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQorRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KGludCB1
c2VYMTFXaW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgRXdrVmlld1R5cGUgdmlld1R5cGUp
CisgICAgOiBtX3VzZVgxMVdpbmRvdyh1c2VYMTFXaW5kb3cpCisgICAgLCBtX3dpZHRoKHdpZHRo
KQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV92aWV3VHlwZSh2aWV3VHlwZSkKKyAg
ICAsIG1fd2ViVmlldygwKQorICAgICwgbV9lY29yZUV2YXMoMCkKIHsKIH0KIAotRVdLVGVzdFZp
ZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZh
cyhldmFzKQotICAgICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRW
aWV3KQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hl
aWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQorRVdLVGVzdFZpZXc6On5FV0tUZXN0Vmll
dygpCiB7CisgICAgaWYgKG1fd2ViVmlldykKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG1fd2Vi
Vmlldyk7CisgICAgaWYgKG1fZWNvcmVFdmFzKQorICAgICAgICBlY29yZV9ldmFzX2ZyZWUobV9l
Y29yZUV2YXMpOwogfQogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdr
Vmlld1R5cGUgdHlwZSwgY29uc3QgY2hhciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAg
LCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0
aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1
bHRWaWV3SGVpZ2h0KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCiB7Ci19CisgICAgaWYgKG1f
dXNlWDExV2luZG93KQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3JlX2V2YXNfbmV3KDAsIDAs
IDAsIG1fd2lkdGgsIG1faGVpZ2h0LCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFz
ID0gZWNvcmVfZXZhc19idWZmZXJfbmV3KG1fd2lkdGgsIG1faGVpZ2h0KTsKIAotRVdLVGVzdFZp
ZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIq
IHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBt
X3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3
aWR0aCkKLSAgICAsIG1faGVpZ2h0KGhlaWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFz
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewot
ICAgIGlmICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1f
ZWNvcmVFdmFzKTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMp
OworICAgIGlmICghZXZhcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoICht
X2RlZmF1bHRWaWV3VHlwZSkgeworICAgIHN3aXRjaCAobV92aWV3VHlwZSkgewogICAgIGNhc2Ug
U2luZ2xlVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfc2luZ2xl
X2FkZChtX2V2YXMpKTsKKyAgICAgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc2luZ2xlX2FkZChl
dmFzKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93
ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBt
X3dlYlZpZXcgPSBld2tfdmlld190aWxlZF9hZGQoZXZhcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgIGlmICghbV93ZWJWaWV3KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBld2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3Lmdl
dCgpLCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3a192aWV3X3VyaV9zZXQobV93
ZWJWaWV3LmdldCgpLCBtX3VybC5jX3N0cigpKTsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6c2hv
dygpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBl
dmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0g
ICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwotICAgIGV2YXNfb2JqZWN0X2Zv
Y3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19CisgICAgZXdrX3ZpZXdfdGhl
bWVfc2V0KG1fd2ViVmlldywgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsKIAotRXZhc19PYmpl
Y3QqIEVXS1Rlc3RWaWV3OjptYWluRnJhbWUoKQotewotICAgIGlmIChtX3dlYlZpZXcuZ2V0KCkp
Ci0gICAgICAgIHJldHVybiBld2tfdmlld19mcmFtZV9tYWluX2dldChtX3dlYlZpZXcuZ2V0KCkp
OwotICAgIHJldHVybiAwOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcsIG1fd2lk
dGgsIG1faGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9zaG93KG1fd2ViVmlldyk7CisgICAgZXZh
c19vYmplY3RfZm9jdXNfc2V0KG1fd2ViVmlldywgRUlOQV9UUlVFKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotRXZhcyogRVdLVGVzdFZpZXc6OmV2YXMoKQorYm9vbCBFV0tUZXN0Vmlldzo6bG9h
ZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAgICAg
ICAgcmV0dXJuIGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgcmV0
dXJuIDA7CisgICAgaWYgKHVybCkKKyAgICAgICAgcmV0dXJuIGV3a192aWV3X3VyaV9zZXQobV93
ZWJWaWV3LCB1cmwpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBFV0tUZXN0Vmlldzo6
YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwg
Y29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCitFdmFzX09iamVjdCogRVdLVGVzdFZp
ZXc6Om1haW5GcmFtZSgpCiB7Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0
KCksIGV2ZW50TmFtZSwgY2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHB0cik7CisgICAgcmV0
dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmlldyk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAppbmRl
eCA2ZDE1ZDBkLi5iMjAzMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCkBAIC0xOSw1NSArMTksNDAgQEAKICNpZm5kZWYg
RVdLVGVzdFZpZXdfaAogI2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tUZXN0
Q29uZmlnLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KLSNp
bmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgRVdL
VW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEVjb3JlRXZhcyB7Ci1wdWJsaWM6Ci0gICAgRVdL
VGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KTsKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGNv
bnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGlu
dCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywg
aW50IHVzZVgxMVdpbmRvdyk7Ci0KLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7
Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFzOwotfTsKLQog
Y2xhc3MgRVdLVGVzdFZpZXcgewogcHVibGljOgogICAgIGVudW0gRXdrVmlld1R5cGUgewogICAg
ICAgICBTaW5nbGVWaWV3ID0gMCwKLSAgICAgICAgVGlsZWRWaWV3LAorICAgICAgICBUaWxlZFZp
ZXcKICAgICB9OwogCi0gICAgZXhwbGljaXQgRVdLVGVzdFZpZXcoRXZhcyopOwotICAgIEVXS1Rl
c3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBF
d2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgRXdr
Vmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBF
V0tUZXN0VmlldyhpbnQgdXNlWDExV2luZG93ID0gMCwgaW50IHdpZHRoID0gQ29uZmlnOjpkZWZh
dWx0Vmlld1dpZHRoLCBpbnQgaGVpZ2h0ID0gQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgRXdr
Vmlld1R5cGUgdmlld1R5cGUgPSBUaWxlZFZpZXcpOworICAgIH5FV0tUZXN0VmlldygpOwogCi0g
ICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KKyAg
ICBFdmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQogICAgIEV2YXNf
T2JqZWN0KiBtYWluRnJhbWUoKTsKLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7
CiAKICAgICBib29sIGluaXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNr
KSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9p
ZCogcHRyKTsKKyAgICBib29sIGxvYWRVcmwoY29uc3QgY2hhciogdXJsKTsKIAorICAgIHZvaWQg
dmlld1R5cGVTZXQoRXdrVmlld1R5cGUgdmlld1R5cGUpIHsgbV92aWV3VHlwZSA9IHZpZXdUeXBl
OyB9CiBwcml2YXRlOgogICAgIEVXS1Rlc3RWaWV3KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0gICAg
RVdLVGVzdFZpZXcgb3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0KLSAgICBFdmFzKiBt
X2V2YXM7Ci0gICAgT3duUHRyPEV2YXNfT2JqZWN0PiBtX3dlYlZpZXc7CisgICAgRVdLVGVzdFZp
ZXcmIG9wZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOwogCisgICAgaW50IG1fdXNlWDExV2lu
ZG93OwogICAgIGludCBtX3dpZHRoLCBtX2hlaWdodDsKLSAgICBFd2tWaWV3VHlwZSBtX2RlZmF1
bHRWaWV3VHlwZTsKLSAgICBzdGQ6OnN0cmluZyBtX3VybDsKKworICAgIEV3a1ZpZXdUeXBlIG1f
dmlld1R5cGU7CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworICAgIEVjb3JlX0V2YXMq
IG1fZWNvcmVFdmFzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvdGVzdF9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192
aWV3LmNwcAppbmRleCAyZDQ5MDc5Li4zZDA1ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy90ZXN0X2V3a192aWV3LmNwcApAQCAtMTksMzYgKzE5LDI3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgiCisjaW5jbHVkZSAi
VW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktpdC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0
aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBld2tW
aWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBk
YXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19lZGl0YWJsZV9nZXQpCiB7Ci0gICAg
ZXdrX3ZpZXdfZWRpdGFibGVfc2V0KG8sIEVJTkFfRkFMU0UpOwotICAgIEVYUEVDVF9FUShFSU5B
X0ZBTFNFLCBld2tfdmlld19lZGl0YWJsZV9nZXQobykpOwotICAgIEVORF9URVNUKCk7Ci19Ci0K
LVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQotewotICAgIFJVTl9U
RVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBydW5UZXN0KCk7CisgICAgZXdrX3ZpZXdf
ZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVhQRUNUX0VRKEVJTkFf
RkFMU0UsIGV3a192aWV3X2VkaXRhYmxlX2dldCh3ZWJWaWV3KCkpKTsKIH0KIAogLyoqCiAqIEBi
cmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdCB1cmkgc3RyaW5n
LgogKi8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdVcmlHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBkYXRhKQotewotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3dy53
ZWJraXQub3JnLyIsIGV3a192aWV3X3VyaV9nZXQobykpOwotICAgIEVORF9URVNUKCk7Ci19Ci0K
LVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfdXJpX2dldCkKK1RFU1RfRihFV0tUZXN0QmFz
ZSwgZXdrX3ZpZXdfdXJpX2dldCkKIHsKLSAgICBSVU5fVEVTVCgiaHR0cDovL3d3dy53ZWJraXQu
b3JnIiwgZXdrVmlld1VyaUdldENiKTsKKyAgICBydW5UZXN0KCk7CisgICAgRVhQRUNUX1NUUkVR
KGV3a192aWV3X3VyaV9nZXQod2ViVmlldygpKSwgQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCmluZGV4IDcwMmE2MWYuLjAw
MjM1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAgc3RhdGljIHZvaWQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgYXRleGl0
KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxsKTsKICAgICBwYXJzZUN1c3Rv
bUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKICAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160433</attachid>
            <date>2012-08-24 09:00:01 -0700</date>
            <delta_ts>2012-09-12 03:39:49 -0700</delta_ts>
            <desc>Updating ut framework for wk1</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>16933</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjYzY1NTczLi5kNzdhMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTItMDgtMjQgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlYXNvbiBvZiBjaGFuZ2luZywgd2FzIHRvIGFk
anVzdCBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRvIHVzZSBndGVzdCBmZWF0dXJlcworICAgICAg
ICByZWxhdGVkIHRvIGNsZWFuaW5nIChTZXRVcCwgVGVhckRvd24pLCBjbGVhbmluZyBjb2RlIGlu
IHRlcm1zIG9mIHVzZWxlc3MgbWV0aG9kcworICAgICAgICBhbmQgbGFzdGx5IHRvIG1ha2UgZnJh
bWV3b3JrIHNpbXBsaWVyIGFuZCBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RCYXNlOjpFV0tUZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVu
dCB3ZWJ2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6bWFpbkZyYW1l
KTogUmV0dXJucyBtYWluIGZyYW1lLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFz
ZTo6U2V0VXApOgorICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxs
ZWQuCisgICAgICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBU
ZWFyRG93biBpcyBjYWxsZWQgYXMgc29vbiBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAg
VXNlZCB0aGlzIHRvIHByb3Blcmx5IHNodXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAg
ICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6cnVuVGVzdCk6CisgICAgICAgIENoYW5n
ZWQgYSB3YXkgb2YgcnVubmluZyB0ZXN0LgorICAgICAgICBJbnN0ZWFkIG9mIHN0YXJpbmcgYW5k
IGNsb3NpbmcgZWNvcmUgbG9vcCwKKyAgICAgICAgZXZlbnRzIGFyZSBwcm9jZXNzZWQgaW4gYSB3
aGlsZSBsb29wLgorICAgICAgICBUaGUgc2FtZSBzb2x1dGlvbiBhcyBpbiB3azIgdGVzdHMuCisg
ICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oOgorICAgICAgICAqIHRl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwOgorICAgICAgICAoRVdLVW5pdFRlc3Rz
OjpFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0Vmlldzo6fkVXS1Rlc3RWaWV3KTogQWRkZWQgZm9yIGNsZWFuaW5nIHRlc3Qgdmlldy4KKyAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQpOgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0Vmlldzo6bG9hZFVybCk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVX
S1Rlc3RWaWV3OjptYWluRnJhbWUpOgorICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
VGVzdFZpZXcuaDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OndlYlZpZXcp
OgorICAgICAgICAoRVdLVGVzdFZpZXcpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
Vmlldzo6dmlld1R5cGUpOgorICAgICAgICBVc2VkIHRvIHNldCB1cCBhIGRpZmZlcmVudCB2aWV3
IHR5cGUsCisgICAgICAgIGluIGNhc2Ugb2YgdGVzdGluZyBzaW5nbGUgYmFja2luZyBzdG9yZS4K
KyAgICAgICAgKiB0ZXN0cy90ZXN0X2V3a192aWV3LmNwcDoKKyAgICAgICAgKFRFU1RfRik6Cisg
ICAgICAgICogdGVzdHMvdGVzdF9ydW5uZXIuY3BwOgorICAgICAgICAobWFpbik6CisKIDIwMTIt
MDgtMjMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIFJlbW92ZSBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCmluZGV4IDJk
M2UyYWUuLjI5YTUwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSw0MyArMTksMTggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0QmFzZS5oIgogCi0jaW5jbHVkZSAiRVdLVGVz
dENvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8RVdlYktpdC5o
PgotCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFX
aW5kb3c7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjpp
bml0KCkKLXsKLSAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWVkamVfaW5pdCgpKSB7Ci0gICAgICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCByZXQgPSBld2tf
aW5pdCgpOwotICAgIGNvbnN0IGNoYXIqIHByb3h5VXJpID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7
Ci0KLSAgICBpZiAocmV0ICYmIHByb3h5VXJpKQotICAgICAgICBld2tfbmV0d29ya19wcm94eV91
cmlfc2V0KHByb3h5VXJpKTsKLQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXZvaWQgRVdLVGVzdEJh
c2U6OnNodXRkb3duQWxsKCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3
a1Rlc3RWaWV3KDApCiB7Ci0gICAgaW50IGNvdW50ID0gMDsKLQotICAgIHdoaWxlICgoY291bnQg
PSBlY29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9IGVk
amVfc2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAoKGNvdW50ID0gZXdrX3NodXRkb3du
KCkpID4gMCkgeyB9CiB9CiAKIHZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCkBAIC02OCwz
NSArNDMsNTYgQEAgdm9pZCBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpCiAgICAgZWNvcmVfbWFpbl9s
b29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6Y3JlYXRlVGVzdChjb25zdCBjaGFy
KiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCop
LCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQorRXZhc19PYmplY3Qq
IEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKIHsKLSAgICBFRkxfSU5JVF9SRVQoKTsKKyAgICByZXR1
cm4gbV9ld2tUZXN0Vmlldy0+d2ViVmlldygpOworfQogCi0gICAgRVdLVGVzdEVjb3JlRXZhcyBl
dmFzKHVzZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGV2YXMuc2hvdygpOworRXZhc19PYmplY3QqIEVXS1Rlc3RCYXNlOjptYWlu
RnJhbWUoKQoreworICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LT5tYWluRnJhbWUoKTsKK30KIAot
ICAgIEVXS1Rlc3RWaWV3IHZpZXcoZXZhcy5ldmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3Lmlu
aXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwordm9pZCBFV0tUZXN0QmFzZTo6U2V0VXAoKQor
eworICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CisgICAgQVNTRVJUX0dUKGV3
a19pbml0KCksIDApOwogCi0gICAgdmlldy5iaW5kRXZlbnRzKGV2ZW50X2NhbGxiYWNrLCBldmVu
dF9uYW1lLCBldmVudF9kYXRhKTsKLSAgICB2aWV3LnNob3coKTsKKyAgICBjb25zdCBjaGFyKiBw
cm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkKKyAgICAg
ICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7CiAKLSAgICBTVEFSVF9URVNU
KCk7CisgICAgbV9ld2tUZXN0VmlldyA9IG5ldyBFV0tUZXN0Vmlldyh1c2VYMTFXaW5kb3cpOwor
fQogCi0gICAgcmV0dXJuIHRydWU7Cit2b2lkIEVXS1Rlc3RCYXNlOjpUZWFyRG93bigpCit7Cisg
ICAgZGVsZXRlIG1fZXdrVGVzdFZpZXc7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAg
IGV3a19zaHV0ZG93bigpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KHZvaWQgKCpl
dmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBl
dmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2FkRmlu
aXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbykK
IHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSwgZXZlbnRf
Y2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEpOworICAgIFVOVVNFRF9QQVJBTSh3ZWJW
aWV3KTsKKyAgICBVTlVTRURfUEFSQU0oZXZlbnRJbmZvKTsKKworICAgIGJvb2wqIGxvYWRGaW5p
c2hlZCA9IHN0YXRpY19jYXN0PGJvb2wqPihkYXRhKTsKKyAgICAqbG9hZEZpbmlzaGVkID0gdHJ1
ZTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQg
KCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFy
KiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6cnVuVGVz
dChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVudF9j
YWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RSVUUobV9ld2tU
ZXN0Vmlldy0+aW5pdCgpKTsKKyAgICBBU1NFUlRfVFJVRShtX2V3a1Rlc3RWaWV3LT5sb2FkVXJs
KHVybCkpOworCisgICAgYm9vbCBsb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQobV9ld2tUZXN0Vmlldy0+d2ViVmlldygpLCAibG9hZCxmaW5p
c2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAmbG9hZEZpbmlzaGVkKTsKKworICAgIHdoaWxlICghbG9h
ZEZpbmlzaGVkKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fZXdrVGVzdFZpZXctPndlYlZpZXcoKSwgImxv
YWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAppbmRleCBlYzc1MTMy
Li43YzNlMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0QmFzZS5oCkBAIC0xOSw0OSArMTksMzEgQEAKICNpZm5kZWYgRVdLVGVzdEJh
c2VfaAogI2RlZmluZSBFV0tUZXN0QmFzZV9oCiAKLSNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSAiRVdLVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KIAotI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKLSAgICBkbyB7
ICAgIFwKLSAgICAgICAgQVNTRVJUX0VRKHRydWUsIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGFyZ3Mp
KTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgU1RBUlRfVEVTVCgpICAgIFwKLSAg
ICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpOyAgIFwKLSAgICB9
IHdoaWxlICgwKQotCi0jZGVmaW5lIEVORF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAg
ICAgICBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmlu
ZSBFRkxfSU5JVF9SRVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBpZiAoIUVXS1Rlc3RC
YXNlOjppbml0KCkpICAgXAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICBcCi0gICAgfSB3
aGlsZSAoMCkKLQotI2RlZmluZSBFRkxfSU5JVCgpICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjppbml0KCk7ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2Ug
RVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBib29sIGNy
ZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRf
ZGF0YSk7CitjbGFzcyBFV0tUZXN0QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxs
KCk7CisgICAgc3RhdGljIGludCB1c2VYMTFXaW5kb3c7CisKICAgICBzdGF0aWMgdm9pZCBzdGFy
dFRlc3QoKTsKICAgICBzdGF0aWMgdm9pZCBlbmRUZXN0KCk7CisgICAgc3RhdGljIHZvaWQgb25M
b2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50
SW5mbyk7CiAKLSAgICBzdGF0aWMgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAo
KmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIq
IGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEgPSAwKTsKLSAg
ICBzdGF0aWMgYm9vbCBydW5UZXN0KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNf
T2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQi
LCB2b2lkKiBldmVudF9kYXRhID0gMCk7CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKKyAg
ICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2Uo
KTsKIAotICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93OworICAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgICAgdm9pZCBydW5UZXN0KGNv
bnN0IGNoYXIqIHVybCA9IENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKKworICAgIEVXS1Rlc3RW
aWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAppbmRleCBmZDI5YjgxLi44YTQ3
ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksMTMwICsxOSw3NCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgi
CiAjaW5jbHVkZSA8RVdlYktpdC5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQog
bmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29y
ZUV2YXMoaW50IHVzZVgxMVdpbmRvdykKLXsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7Ci19
Ci0KLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5l
X25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGlu
dCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93
KQotewotICAgIGlmICh1c2VYMTFXaW5kb3cpCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQ
dHIoZWNvcmVfZXZhc19uZXcoZW5naW5lX25hbWUsIHZpZXdwb3J0X3gsIHZpZXdwb3J0X3ksIHZp
ZXdwb3J0X3csIHZpZXdwb3J0X2gsIGV4dHJhX29wdGlvbnMpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gs
IHZpZXdwb3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVzdEVjb3JlRXZhczo6ZXZhcygpCi17Ci0g
ICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQo
bV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RFY29y
ZUV2YXM6OnNob3coKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAgICAgICAgZWNv
cmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rl
c3RWaWV3KEV2YXMqIGV2YXMpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKENvbmZp
Zzo6ZGVmYXVsdFRlc3RQYWdlKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQot
ICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChD
b25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQorRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KGludCB1
c2VYMTFXaW5kb3csIGludCB3aWR0aCwgaW50IGhlaWdodCwgRXdrVmlld1R5cGUgdGVzdFZpZXdU
eXBlKQorICAgIDogbV91c2VYMTFXaW5kb3codXNlWDExV2luZG93KQorICAgICwgbV93aWR0aCh3
aWR0aCkKKyAgICAsIG1faGVpZ2h0KGhlaWdodCkKKyAgICAsIG1fdmlld1R5cGUodGVzdFZpZXdU
eXBlKQorICAgICwgbV93ZWJWaWV3KDApCisgICAgLCBtX2Vjb3JlRXZhcygwKQogewogfQogCi1F
V0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hhciogdXJsKQotICAg
IDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlw
ZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAg
ICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCitFV0tUZXN0Vmlldzo6fkVX
S1Rlc3RWaWV3KCkKIHsKKyAgICBpZiAobV93ZWJWaWV3KQorICAgICAgICBldmFzX29iamVjdF9k
ZWwobV93ZWJWaWV3KTsKKyAgICBpZiAobV9lY29yZUV2YXMpCisgICAgICAgIGVjb3JlX2V2YXNf
ZnJlZShtX2Vjb3JlRXZhcyk7CiB9CiAKLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBl
dmFzLCBFd2tWaWV3VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZh
cykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAg
LCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZp
Zzo6ZGVmYXVsdFZpZXdIZWlnaHQpCitib29sIEVXS1Rlc3RWaWV3Ojppbml0KCkKIHsKLX0KKyAg
ICBpZiAobV91c2VYMTFXaW5kb3cpCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVfZXZhc19u
ZXcoMCwgMCwgMCwgbV93aWR0aCwgbV9oZWlnaHQsIDApOworICAgIGVsc2UKKyAgICAgICAgbV9l
Y29yZUV2YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcobV93aWR0aCwgbV9oZWlnaHQpOwogCi1F
V0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlwZSwgY29u
c3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0gICAgOiBtX2V2YXMoZXZhcykK
LSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBt
X3dpZHRoKHdpZHRoKQotICAgICwgbV9oZWlnaHQoaGVpZ2h0KQotewotfQorICAgIGlmICghbV9l
Y29yZUV2YXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBFV0tUZXN0Vmlldzo6aW5p
dCgpCi17Ci0gICAgaWYgKCFtX2V2YXMgfHwgbV91cmwuZW1wdHkoKSkKKyAgICBlY29yZV9ldmFz
X3Nob3cobV9lY29yZUV2YXMpOworICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vj
b3JlRXZhcyk7CisgICAgaWYgKCFldmFzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBz
d2l0Y2ggKG1fZGVmYXVsdFZpZXdUeXBlKSB7CisgICAgc3dpdGNoIChtX3ZpZXdUeXBlKSB7CiAg
ICAgY2FzZSBTaW5nbGVWaWV3OgotICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmll
d19zaW5nbGVfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zaW5n
bGVfYWRkKGV2YXMpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGlsZWRWaWV3OgotICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld190aWxlZF9hZGQobV9ldmFzKSk7Cisg
ICAgICAgIG1fd2ViVmlldyA9IGV3a192aWV3X3RpbGVkX2FkZChldmFzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgaWYgKCFtX3dlYlZp
ZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dl
YlZpZXcuZ2V0KCksIENvbmZpZzo6ZGVmYXVsdFRoZW1lUGF0aCk7Ci0gICAgZXdrX3ZpZXdfdXJp
X3NldChtX3dlYlZpZXcuZ2V0KCksIG1fdXJsLmNfc3RyKCkpOwotfQotCi12b2lkIEVXS1Rlc3RW
aWV3OjpzaG93KCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIG1fd2lkdGgsIG1faGVp
Z2h0KTsKLSAgICBldmFzX29iamVjdF9zaG93KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgZXZhc19v
YmplY3RfZm9jdXNfc2V0KG1fd2ViVmlldy5nZXQoKSwgRUlOQV9UUlVFKTsKLX0KKyAgICBld2tf
dmlld190aGVtZV9zZXQobV93ZWJWaWV3LCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwogCi1F
dmFzX09iamVjdCogRVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViVmll
dy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmll
dy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmll
dywgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3KTsK
KyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LCBFSU5BX1RSVUUpOworICAgIHJl
dHVybiB0cnVlOwogfQogCi1FdmFzKiBFV0tUZXN0Vmlldzo6ZXZhcygpCitib29sIEVXS1Rlc3RW
aWV3Ojpsb2FkVXJsKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgp
KQotICAgICAgICByZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93ZWJWaWV3LmdldCgpKTsK
LSAgICByZXR1cm4gMDsKKyAgICBpZiAodXJsKQorICAgICAgICByZXR1cm4gZXdrX3ZpZXdfdXJp
X3NldChtX3dlYlZpZXcsIHVybCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEVXS1Rl
c3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cikKK0V2YXNfT2JqZWN0KiBF
V0tUZXN0Vmlldzo6bWFpbkZyYW1lKCkKIHsKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fd2Vi
Vmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjaywgcHRyKTsK
KyAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93ZWJWaWV3KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
Vmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmll
dy5oCmluZGV4IDZkMTVkMGQuLmI2ZTI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU1ICsxOSw0MCBAQAog
I2lmbmRlZiBFV0tUZXN0Vmlld19oCiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUg
IkVXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZh
cy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBFV0tVbml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNvcmVFdmFzIHsKLXB1YmxpYzoK
LSAgICBFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpOwotICAgIEVXS1Rlc3RFY29y
ZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3Bv
cnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9v
cHRpb25zLCBpbnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lk
IHNob3coKTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7
Ci19OwotCiBjbGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBFd2tWaWV3VHlw
ZSB7CiAgICAgICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBUaWxlZFZpZXcsCisgICAgICAg
IFRpbGVkVmlldwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tUZXN0VmlldyhFdmFzKik7Ci0g
ICAgRVdLVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdLVGVzdFZpZXco
RXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2
YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OworICAgIEVXS1Rlc3RWaWV3KGludCB1c2VYMTFXaW5kb3cgPSAwLCBpbnQgd2lkdGggPSBDb25m
aWc6OmRlZmF1bHRWaWV3V2lkdGgsIGludCBoZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVp
Z2h0LCBFd2tWaWV3VHlwZSB0ZXN0Vmlld1R5cGUgPSBUaWxlZFZpZXcpOworICAgIH5FV0tUZXN0
VmlldygpOwogCi0gICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcu
Z2V0KCk7IH0KKyAgICBFdmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsg
fQogICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUoKTsKLSAgICBFdmFzKiBldmFzKCk7Ci0gICAg
dm9pZCBzaG93KCk7CiAKICAgICBib29sIGluaXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9p
ZCAoKmNhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2
ZW50TmFtZSwgdm9pZCogcHRyKTsKKyAgICBib29sIGxvYWRVcmwoY29uc3QgY2hhciogdXJsKTsK
IAorICAgIHZvaWQgdmlld1R5cGVTZXQoRXdrVmlld1R5cGUgdGVzdFZpZXdUeXBlKSB7IG1fdmll
d1R5cGUgPSB0ZXN0Vmlld1R5cGU7IH0KIHByaXZhdGU6CiAgICAgRVdLVGVzdFZpZXcoY29uc3Qg
RVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVyYXRvcj0oY29uc3QgRVdLVGVzdFZp
ZXcmKTsKLQotICAgIEV2YXMqIG1fZXZhczsKLSAgICBPd25QdHI8RXZhc19PYmplY3Q+IG1fd2Vi
VmlldzsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3Jik7CiAK
KyAgICBpbnQgbV91c2VYMTFXaW5kb3c7CiAgICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwotICAg
IEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwotICAgIHN0ZDo6c3RyaW5nIG1fdXJsOwor
CisgICAgRXdrVmlld1R5cGUgbV92aWV3VHlwZTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZp
ZXc7CisgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IDJkNDkwNzkuLjNkMDVlNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBAIC0xOSwzNiArMTksMjcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVz
dEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaCIKICNpbmNs
dWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxFY29y
ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAvKioKICogQGJyaWVmIENo
ZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBjb3JyZWN0IHZhbHVlLgog
Ki8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQqIGV2ZW50SW5mbywgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X2Vk
aXRhYmxlX2dldCkKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQobywgRUlOQV9GQUxTRSk7
Ci0gICAgRVhQRUNUX0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRhYmxlX2dldChvKSk7Ci0g
ICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19lZGl0YWJs
ZV9nZXQpCi17Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0Q2IpOworICAgIHJ1blRl
c3QoKTsKKyAgICBld2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygpLCBFSU5BX0ZBTFNFKTsK
KyAgICBFWFBFQ1RfRVEoRUlOQV9GQUxTRSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdlYlZpZXco
KSkpOwogfQogCiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJu
cyBjb3JyZWN0IHVyaSBzdHJpbmcuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdldENiKHZv
aWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCi17Ci0gICAgRVhQRUNU
X1NUUkVRKCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIiwgZXdrX3ZpZXdfdXJpX2dldChvKSk7Ci0g
ICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld191cmlfZ2V0
KQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld191cmlfZ2V0KQogewotICAgIFJVTl9URVNU
KCJodHRwOi8vd3d3LndlYmtpdC5vcmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIHJ1blRlc3Qo
KTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBDb25maWc6
OmRlZmF1bHRUZXN0UGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5j
cHAKaW5kZXggNzAyYTYxZi4uMDAyMzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
dGVzdHMvdGVzdF9ydW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3Rf
cnVubmVyLmNwcApAQCAtMzMsNyArMzMsNiBAQCBzdGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFyZ3Vt
ZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKIHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6c2h1dGRvd25B
bGwpOwogICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwogICAgIDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICAgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cg==
</data>
<flag name="review"
          id="170997"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163572</attachid>
            <date>2012-09-12 03:39:49 -0700</date>
            <delta_ts>2012-09-12 03:52:11 -0700</delta_ts>
            <desc>[EFL][UT]Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>16426</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi4zNjNjNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDktMTIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlYXNvbiBvZiBjaGFuZ2luZywgd2FzIHRvIGFk
anVzdCBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRvIHVzZSBndGVzdCBmZWF0dXJlcworICAgICAg
ICByZWxhdGVkIHRvIGNsZWFuaW5nIChTZXRVcCwgVGVhckRvd24pLCBjbGVhbmluZyBjb2RlIGlu
IHRlcm1zIG9mIHVzZWxlc3MgbWV0aG9kcworICAgICAgICBhbmQgbGFzdGx5IHRvIG1ha2UgZnJh
bWV3b3JrIGVhc2llciB0byB1c2UuCisKKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RCYXNlLmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OkVXS1Rl
c3RCYXNlKTogQWRkZWQgdG8gaW5pdGlhbGl6ZSB0ZXN0IHZpZXcuCisgICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RCYXNlOjp3ZWJWaWV3KTogICBSZXR1cm5zIGN1cnJlbnQgd2Vidmlldy4K
KyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om1haW5GcmFtZSk6IFJldHVybnMg
bWFpbiBmcmFtZS4KKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlNldFVwKToK
KyAgICAgICAgQmVmb3JlIHRlc3QgaXMgc3RhcnRlZCwgU2V0VXAgaXMgY2FsbGVkLgorICAgICAg
ICBVc2VkIHRoaXMgdG8gaW5pdGlhbGl6ZSBlZmwgYW5kIHRlc3Qgdmlldy4KKyAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlRlYXJEb3duKToKKyAgICAgICAgVGVhckRvd24gaXMg
Y2FsbGVkIGFzIHNvb24gYXMgdGVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAgIFVzZWQgdGhpcyB0
byBwcm9wZXJseSBzaHV0ZG93biBlZmwgYW5kIGNsZWFuIHRlc3Qgdmlldy4KKyAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEJhc2U6OnJ1blRlc3QpOgorICAgICAgICBQcm9wZXJseSBsb2FkcyB0
ZXN0IHBhZ2UsIHRpbGwgdGhlICJsb2FkLGZpbmlzaGVkIiBldmVudCBjb21lcy4KKyAgICAgICAg
KiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RWaWV3OjpFV0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3
Ojp+RVdLVGVzdFZpZXcpOiBBZGRlZCBmb3IgY2xlYW5pbmcgdGVzdCB2aWV3LgorICAgICAgICAo
RVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6CisgICAgICAgICogdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0Vmlldy5oOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmll
dzo6d2ViVmlldyk6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RWaWV3Ojp2aWV3VHlwZVNldCk6CisgICAgICAgIFVzZWQgdG8gc2V0IHVwIGEg
ZGlmZmVyZW50IHZpZXcgdHlwZSwKKyAgICAgICAgaW4gY2FzZSBvZiB0ZXN0aW5nIHNpbmdsZSBi
YWNraW5nIHN0b3JlLgorICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy90ZXN0X3J1bm5lci5jcHA6CisgICAgICAgICht
YWluKToKKwogMjAxMi0wOS0xMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIENyZWF0ZSBhIHRvZ2dsZSBidXR0b24gZm9yIGNs
b3NlZCBjYXB0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAppbmRleCAyZDNlMmFlLi4yMjk3NTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNw
cApAQCAtMTksODQgKzE5LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdL
VGVzdEJhc2UuaCIKIAotI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKLSNpbmNsdWRlICJFV0tU
ZXN0Vmlldy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLQogI2luY2x1ZGUgPEVjb3JlLmg+CiAj
aW5jbHVkZSA8RWRqZS5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBpbnQgRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6dXNlWDExV2luZG93OwogCiBuYW1lc3BhY2UgRVdLVW5p
dFRlc3RzIHsKIAotYm9vbCBFV0tUZXN0QmFzZTo6aW5pdCgpCitFV0tUZXN0QmFzZTo6RVdLVGVz
dEJhc2UoKQorICAgIDogbV9ld2tUZXN0VmlldygwKQogewotICAgIGlmICghZWNvcmVfZXZhc19p
bml0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWRqZV9pbml0KCkpIHsK
LSAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaW50IHJldCA9IGV3a19pbml0KCk7Ci0gICAgY29uc3QgY2hhciogcHJveHlV
cmkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLQotICAgIGlmIChyZXQgJiYgcHJveHlVcmkpCi0g
ICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlVcmkpOwotCi0gICAgcmV0dXJu
IHJldDsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c2h1dGRvd25BbGwoKQorRXZhc19PYmplY3Qq
IEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKIHsKLSAgICBpbnQgY291bnQgPSAwOwotCi0gICAgd2hp
bGUgKChjb3VudCA9IGVjb3JlX2V2YXNfc2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAo
KGNvdW50ID0gZWRqZV9zaHV0ZG93bigpKSA+IDApIHsgfQotICAgIHdoaWxlICgoY291bnQgPSBl
d2tfc2h1dGRvd24oKSkgPiAwKSB7IH0KKyAgICByZXR1cm4gbV9ld2tUZXN0Vmlldy0+d2ViVmll
dygpOwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKQorRXZhc19PYmplY3QqIEVX
S1Rlc3RCYXNlOjptYWluRnJhbWUoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwor
ICAgIHJldHVybiBld2tfdmlld19mcmFtZV9tYWluX2dldCh3ZWJWaWV3KCkpOwogfQogCi12b2lk
IEVXS1Rlc3RCYXNlOjplbmRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJhc2U6OlNldFVwKCkKIHsKLSAg
ICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwotfQorICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2lu
aXQoKSwgMCk7CisgICAgQVNTRVJUX0dUKGV3a19pbml0KCksIDApOwogCi1ib29sIEVXS1Rlc3RC
YXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQq
IGV2ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7CisgICAgY29uc3QgY2hhciogcHJv
eHlVcmwgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKKyAgICBpZiAocHJveHlVcmwpCisgICAgICAg
IGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlVcmwpOwogCi0gICAgRVdLVGVzdEVjb3Jl
RXZhcyBldmFzKHVzZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGV2YXMuc2hvdygpOwotCi0gICAgRVdLVGVzdFZpZXcgdmlldyhl
dmFzLmV2YXMoKSwgdXJsKTsKLSAgICBpZiAoIXZpZXcuaW5pdCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUs
IGV2ZW50X2RhdGEpOwotICAgIHZpZXcuc2hvdygpOwotCi0gICAgU1RBUlRfVEVTVCgpOworICAg
IG1fZXdrVGVzdFZpZXcgPSBuZXcgRVdLVGVzdFZpZXcodXNlWDExV2luZG93KTsKK30KIAotICAg
IHJldHVybiB0cnVlOwordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRvd24oKQoreworICAgIGRlbGV0
ZSBtX2V3a1Rlc3RWaWV3OworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBld2tfc2h1
dGRvd24oKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRfY2Fs
bGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFt
ZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKHZv
aWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8pCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNr
LCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAg
VU5VU0VEX1BBUkFNKHdlYlZpZXcpOworICAgIFVOVVNFRF9QQVJBTShldmVudEluZm8pOworCisg
ICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVz
dChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQor
dm9pZCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVRlc3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7
CisgICAgQVNTRVJUX1RSVUUobV9ld2tUZXN0Vmlldy0+aW5pdCgpKTsKKyAgICBBU1NFUlRfVFJV
RShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7CisKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQobV9ld2tUZXN0Vmlldy0+d2ViVmlldygpLCAibG9hZCxmaW5pc2hl
ZCIsIG9uTG9hZEZpbmlzaGVkLCBOVUxMKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV9ld2tUZXN0Vmlldy0+d2ViVmll
dygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCmluZGV4
IGVjNzUxMzIuLjA4YjE3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKQEAgLTE5LDQ5ICsxOSwyOSBAQAogI2lmbmRlZiBF
V0tUZXN0QmFzZV9oCiAjZGVmaW5lIEVXS1Rlc3RCYXNlX2gKIAotI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi0jZGVmaW5lIFJVTl9URVNUKGFyZ3MuLi4pICAgXAot
ICAgIGRvIHsgICAgXAotICAgICAgICBBU1NFUlRfRVEodHJ1ZSwgRVdLVGVzdEJhc2U6OnJ1blRl
c3QoYXJncykpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBTVEFSVF9URVNUKCkg
ICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCk7ICAg
XAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRU5EX1RFU1QoKSAgICBcCi0gICAgZG8geyAg
ICBcCi0gICAgICAgIEVXS1Rlc3RCYXNlOjplbmRUZXN0KCk7IFwKLSAgICB9IHdoaWxlICgwKQor
bmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLSNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwKLSAg
ICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAgIFwKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCitjbGFzcyBFV0tUZXN0
QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCB1
c2VYMTFXaW5kb3c7CiAKLSNkZWZpbmUgRUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAg
ICAgICBFV0tUZXN0QmFzZTo6aW5pdCgpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKKyAgICBzdGF0
aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywg
dm9pZCogZXZlbnRJbmZvKTsKIAotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CisgICAgRXZhc19P
YmplY3QqIHdlYlZpZXcoKTsKKyAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Citwcm90ZWN0
ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRp
YyBib29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2sp
KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9p
ZCogZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0
YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRUZXN0KCk7Ci0g
ICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJvb2wgcnVuVGVzdChjb25z
dCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBl
dmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lkICgqZXZlbnRfY2Fs
bGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFt
ZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOworICAgIHZvaWQgcnVu
VGVzdChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CiAKLSAgICBz
dGF0aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyogbV9ld2tUZXN0VmlldzsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0Vmlldy5jcHAKaW5kZXggZmQyOWI4MS4uMTFhN2U3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKQEAg
LTE5LDEzMCArMTksNjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0
Vmlldy5oIgogCi0jaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQu
aD4KIAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KIG5hbWVzcGFjZSBFV0tVbml0VGVz
dHMgewogCi1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5k
b3cpCi17Ci0gICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9w
dFB0cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCBDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENv
bmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQsIDApKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVF
dmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KENvbmZpZzo6ZGVmYXVsdFZpZXdX
aWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkpOwotfQotCi1FV0tUZXN0RWNvcmVFdmFz
OjpFV0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRf
eCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3Qg
Y2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdykKLXsKLSAgICBpZiAodXNlWDEx
V2luZG93KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVu
Z2luZV9uYW1lLCB2aWV3cG9ydF94LCB2aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9o
LCBleHRyYV9vcHRpb25zKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0
UHRyKGVjb3JlX2V2YXNfYnVmZmVyX25ldyh2aWV3cG9ydF94LCB2aWV3cG9ydF95KSk7Ci19Ci0K
LUV2YXMqIEVXS1Rlc3RFY29yZUV2YXM6OmV2YXMoKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0RWNvcmVFdmFzOjpzaG93KCkKLXsKLSAg
ICBpZiAobV9lY29yZUV2YXMuZ2V0KCkpCi0gICAgICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3Jl
RXZhcy5nZXQoKSk7Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzKQot
ICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSkK
LSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmln
OjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hl
aWdodCkKK0VXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhpbnQgdXNlWDExV2luZG93LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIEV3a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSkKKyAgICA6IG1fdXNlWDEx
V2luZG93KHVzZVgxMVdpbmRvdykKKyAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgLCBtX2hlaWdo
dChoZWlnaHQpCisgICAgLCBtX3ZpZXdUeXBlKHRlc3RWaWV3VHlwZSkKKyAgICAsIG1fd2ViVmll
dygwKQorICAgICwgbV9lY29yZUV2YXMoMCkKIHsKIH0KIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RW
aWV3KEV2YXMqIGV2YXMsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAg
ICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwg
bV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6
OmRlZmF1bHRWaWV3SGVpZ2h0KQorRVdLVGVzdFZpZXc6On5FV0tUZXN0VmlldygpCiB7CisgICAg
aWYgKG1fd2ViVmlldykKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG1fd2ViVmlldyk7CisgICAg
aWYgKG1fZWNvcmVFdmFzKQorICAgICAgICBlY29yZV9ldmFzX2ZyZWUobV9lY29yZUV2YXMpOwog
fQogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlw
ZSwgY29uc3QgY2hhciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwp
Ci0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aChDb25maWc6OmRl
ZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0
KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCiB7Ci19CisgICAgaWYgKG1fdXNlWDExV2luZG93
KQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIG1fd2lkdGgs
IG1faGVpZ2h0LCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVfZXZh
c19idWZmZXJfbmV3KG1fd2lkdGgsIG1faGVpZ2h0KTsKIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RW
aWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0g
ICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAs
IG1faGVpZ2h0KGhlaWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9l
dmFzIHx8IG1fdXJsLmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzKTsK
KyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMpOworICAgIGlmICgh
ZXZhcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3
VHlwZSkgeworICAgIHN3aXRjaCAobV92aWV3VHlwZSkgewogICAgIGNhc2UgU2luZ2xlVmlldzoK
LSAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfc2luZ2xlX2FkZChtX2V2YXMp
KTsKKyAgICAgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc2luZ2xlX2FkZChldmFzKTsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0gYWRv
cHRQdHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBl
d2tfdmlld190aWxlZF9hZGQoZXZhcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlm
ICghbV93ZWJWaWV3LmdldCgpKQorICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBld2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3LmdldCgpLCBDb25maWc6
OmRlZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LmdldCgp
LCBtX3VybC5jX3N0cigpKTsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6c2hvdygpCi17Ci0gICAg
aWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBldmFzX29iamVjdF9y
ZXNpemUobV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0gICAgZXZhc19vYmpl
Y3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dl
YlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19Ci0KLUV2YXNfT2JqZWN0KiBFV0tUZXN0Vmlldzo6
bWFpbkZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4g
ZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotRXZhcyogRVdLVGVzdFZpZXc6OmV2YXMoKQotewotICAgIGlmIChtX3dlYlZpZXcuZ2V0
KCkpCi0gICAgICAgIHJldHVybiBldmFzX29iamVjdF9ldmFzX2dldChtX3dlYlZpZXcuZ2V0KCkp
OwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQg
KCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVu
dE5hbWUsIHZvaWQqIHB0cikKLXsKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAg
cmV0dXJuOworICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIENvbmZpZzo6ZGVmYXVs
dFRoZW1lUGF0aCk7CiAKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV93ZWJW
aWV3LmdldCgpLCBldmVudE5hbWUsIGNhbGxiYWNrKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQobV93ZWJWaWV3LmdldCgpLCBldmVudE5hbWUsIGNhbGxiYWNrLCBwdHIpOwor
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAg
ICBldmFzX29iamVjdF9zaG93KG1fd2ViVmlldyk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0
KG1fd2ViVmlldywgRUlOQV9UUlVFKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5o
IGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCmlu
ZGV4IDZkMTVkMGQuLmYwYmIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU1ICsxOSwzOCBAQAogI2lmbmRl
ZiBFV0tUZXN0Vmlld19oCiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUgIkVXS1Rl
c3RDb25maWcuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgot
I2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBF
V0tVbml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNvcmVFdmFzIHsKLXB1YmxpYzoKLSAgICBF
V0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpOwotICAgIEVXS1Rlc3RFY29yZUV2YXMo
Y29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwg
aW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25z
LCBpbnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lkIHNob3co
KTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7Ci19Owot
CiBjbGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBFd2tWaWV3VHlwZSB7CiAg
ICAgICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBUaWxlZFZpZXcsCisgICAgICAgIFRpbGVk
VmlldwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tUZXN0VmlldyhFdmFzKik7Ci0gICAgRVdL
VGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyos
IEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBF
d2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAg
IEVXS1Rlc3RWaWV3KGludCB1c2VYMTFXaW5kb3cgPSAwLCBpbnQgd2lkdGggPSBDb25maWc6OmRl
ZmF1bHRWaWV3V2lkdGgsIGludCBoZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0LCBF
d2tWaWV3VHlwZSB0ZXN0Vmlld1R5cGUgPSBUaWxlZFZpZXcpOworICAgIH5FV0tUZXN0Vmlldygp
OwogCi0gICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7
IH0KLSAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Ci0gICAgRXZhcyogZXZhcygpOwotICAg
IHZvaWQgc2hvdygpOworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJW
aWV3OyB9CiAKICAgICBib29sIGluaXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNh
bGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFt
ZSwgdm9pZCogcHRyKTsKIAorICAgIHZvaWQgdmlld1R5cGVTZXQoRXdrVmlld1R5cGUgdGVzdFZp
ZXdUeXBlKSB7IG1fdmlld1R5cGUgPSB0ZXN0Vmlld1R5cGU7IH0KIHByaXZhdGU6CiAgICAgRVdL
VGVzdFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVyYXRvcj0o
Y29uc3QgRVdLVGVzdFZpZXcmKTsKLQotICAgIEV2YXMqIG1fZXZhczsKLSAgICBPd25QdHI8RXZh
c19PYmplY3Q+IG1fd2ViVmlldzsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVX
S1Rlc3RWaWV3Jik7CiAKKyAgICBpbnQgbV91c2VYMTFXaW5kb3c7CiAgICAgaW50IG1fd2lkdGgs
IG1faGVpZ2h0OwotICAgIEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwotICAgIHN0ZDo6
c3RyaW5nIG1fdXJsOworCisgICAgRXdrVmlld1R5cGUgbV92aWV3VHlwZTsKKworICAgIEV2YXNf
T2JqZWN0KiBtX3dlYlZpZXc7CisgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IDJkNDkwNzku
LjI0NDFkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBA
IC0xOSwzNiArMTksMjcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RD
b25maWcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlIDxFY29yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAv
KioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBj
b3JyZWN0IHZhbHVlLgogKi8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQq
IGV2ZW50SW5mbywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJh
c2UsIGV3a192aWV3X2VkaXRhYmxlX2dldCkKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQo
bywgRUlOQV9GQUxTRSk7Ci0gICAgRVhQRUNUX0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRh
YmxlX2dldChvKSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBl
d2tfdmlld19lZGl0YWJsZV9nZXQpCi17Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0
Q2IpOworICAgIHJ1blRlc3QoKTsKKyAgICBld2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygp
LCBFSU5BX0ZBTFNFKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdl
YlZpZXcoKSkpOwogfQogCiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24g
cmV0dXJucyBjb3JyZWN0IHVyaSBzdHJpbmcuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdl
dENiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCi17Ci0gICAg
RVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIiwgZXdrX3ZpZXdfdXJpX2dldChv
KSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld191
cmlfZ2V0KQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld191cmlfZ2V0KQogewotICAgIFJV
Tl9URVNUKCJodHRwOi8vd3d3LndlYmtpdC5vcmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIHJ1
blRlc3QoKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBD
b25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1
bm5lci5jcHAKaW5kZXggNzAyYTYxZi4uMDAyMzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L3Rlc3RfcnVubmVyLmNwcApAQCAtMzMsNyArMzMsNiBAQCBzdGF0aWMgdm9pZCBwYXJzZUN1c3Rv
bUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6c2h1
dGRvd25BbGwpOwogICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwogICAgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICAgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163576</attachid>
            <date>2012-09-12 03:52:11 -0700</date>
            <delta_ts>2012-09-13 06:34:17 -0700</delta_ts>
            <desc>[EFL][UT]Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>16423</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi4zNjNjNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDktMTIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlYXNvbiBvZiBjaGFuZ2luZywgd2FzIHRvIGFk
anVzdCBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRvIHVzZSBndGVzdCBmZWF0dXJlcworICAgICAg
ICByZWxhdGVkIHRvIGNsZWFuaW5nIChTZXRVcCwgVGVhckRvd24pLCBjbGVhbmluZyBjb2RlIGlu
IHRlcm1zIG9mIHVzZWxlc3MgbWV0aG9kcworICAgICAgICBhbmQgbGFzdGx5IHRvIG1ha2UgZnJh
bWV3b3JrIGVhc2llciB0byB1c2UuCisKKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RCYXNlLmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OkVXS1Rl
c3RCYXNlKTogQWRkZWQgdG8gaW5pdGlhbGl6ZSB0ZXN0IHZpZXcuCisgICAgICAgIChFV0tVbml0
VGVzdHM6OkVXS1Rlc3RCYXNlOjp3ZWJWaWV3KTogICBSZXR1cm5zIGN1cnJlbnQgd2Vidmlldy4K
KyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om1haW5GcmFtZSk6IFJldHVybnMg
bWFpbiBmcmFtZS4KKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlNldFVwKToK
KyAgICAgICAgQmVmb3JlIHRlc3QgaXMgc3RhcnRlZCwgU2V0VXAgaXMgY2FsbGVkLgorICAgICAg
ICBVc2VkIHRoaXMgdG8gaW5pdGlhbGl6ZSBlZmwgYW5kIHRlc3Qgdmlldy4KKyAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlRlYXJEb3duKToKKyAgICAgICAgVGVhckRvd24gaXMg
Y2FsbGVkIGFzIHNvb24gYXMgdGVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAgIFVzZWQgdGhpcyB0
byBwcm9wZXJseSBzaHV0ZG93biBlZmwgYW5kIGNsZWFuIHRlc3Qgdmlldy4KKyAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEJhc2U6OnJ1blRlc3QpOgorICAgICAgICBQcm9wZXJseSBsb2FkcyB0
ZXN0IHBhZ2UsIHRpbGwgdGhlICJsb2FkLGZpbmlzaGVkIiBldmVudCBjb21lcy4KKyAgICAgICAg
KiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RWaWV3OjpFV0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3
Ojp+RVdLVGVzdFZpZXcpOiBBZGRlZCBmb3IgY2xlYW5pbmcgdGVzdCB2aWV3LgorICAgICAgICAo
RVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6CisgICAgICAgICogdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0Vmlldy5oOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmll
dzo6d2ViVmlldyk6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RWaWV3Ojp2aWV3VHlwZVNldCk6CisgICAgICAgIFVzZWQgdG8gc2V0IHVwIGEg
ZGlmZmVyZW50IHZpZXcgdHlwZSwKKyAgICAgICAgaW4gY2FzZSBvZiB0ZXN0aW5nIHNpbmdsZSBi
YWNraW5nIHN0b3JlLgorICAgICAgICAqIHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy90ZXN0X3J1bm5lci5jcHA6CisgICAgICAgICht
YWluKToKKwogMjAxMi0wOS0xMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIENyZWF0ZSBhIHRvZ2dsZSBidXR0b24gZm9yIGNs
b3NlZCBjYXB0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAppbmRleCAyZDNlMmFlLi4xOGQ4MzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNw
cApAQCAtMTksODQgKzE5LDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdL
VGVzdEJhc2UuaCIKIAotI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKLSNpbmNsdWRlICJFV0tU
ZXN0Vmlldy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLQogI2luY2x1ZGUgPEVjb3JlLmg+CiAj
aW5jbHVkZSA8RWRqZS5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBpbnQgRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6dXNlWDExV2luZG93OwogCiBuYW1lc3BhY2UgRVdLVW5p
dFRlc3RzIHsKIAotYm9vbCBFV0tUZXN0QmFzZTo6aW5pdCgpCitFV0tUZXN0QmFzZTo6RVdLVGVz
dEJhc2UoKQorICAgIDogbV9ld2tUZXN0VmlldygwKQogewotICAgIGlmICghZWNvcmVfZXZhc19p
bml0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWRqZV9pbml0KCkpIHsK
LSAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaW50IHJldCA9IGV3a19pbml0KCk7Ci0gICAgY29uc3QgY2hhciogcHJveHlV
cmkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLQotICAgIGlmIChyZXQgJiYgcHJveHlVcmkpCi0g
ICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlVcmkpOwotCi0gICAgcmV0dXJu
IHJldDsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c2h1dGRvd25BbGwoKQorRXZhc19PYmplY3Qq
IEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKIHsKLSAgICBpbnQgY291bnQgPSAwOwotCi0gICAgd2hp
bGUgKChjb3VudCA9IGVjb3JlX2V2YXNfc2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAo
KGNvdW50ID0gZWRqZV9zaHV0ZG93bigpKSA+IDApIHsgfQotICAgIHdoaWxlICgoY291bnQgPSBl
d2tfc2h1dGRvd24oKSkgPiAwKSB7IH0KKyAgICByZXR1cm4gbV9ld2tUZXN0Vmlldy0+d2ViVmll
dygpOwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKQorRXZhc19PYmplY3QqIEVX
S1Rlc3RCYXNlOjptYWluRnJhbWUoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwor
ICAgIHJldHVybiBld2tfdmlld19mcmFtZV9tYWluX2dldCh3ZWJWaWV3KCkpOwogfQogCi12b2lk
IEVXS1Rlc3RCYXNlOjplbmRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJhc2U6OlNldFVwKCkKIHsKLSAg
ICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwotfQorICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2lu
aXQoKSwgMCk7CisgICAgQVNTRVJUX0dUKGV3a19pbml0KCksIDApOwogCi1ib29sIEVXS1Rlc3RC
YXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQq
IGV2ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7CisgICAgY29uc3QgY2hhciogcHJv
eHlVcmwgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKKyAgICBpZiAocHJveHlVcmwpCisgICAgICAg
IGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlVcmwpOwogCi0gICAgRVdLVGVzdEVjb3Jl
RXZhcyBldmFzKHVzZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGV2YXMuc2hvdygpOwotCi0gICAgRVdLVGVzdFZpZXcgdmlldyhl
dmFzLmV2YXMoKSwgdXJsKTsKLSAgICBpZiAoIXZpZXcuaW5pdCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUs
IGV2ZW50X2RhdGEpOwotICAgIHZpZXcuc2hvdygpOwotCi0gICAgU1RBUlRfVEVTVCgpOworICAg
IG1fZXdrVGVzdFZpZXcgPSBuZXcgRVdLVGVzdFZpZXcodXNlWDExV2luZG93KTsKK30KIAotICAg
IHJldHVybiB0cnVlOwordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRvd24oKQoreworICAgIGRlbGV0
ZSBtX2V3a1Rlc3RWaWV3OworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBld2tfc2h1
dGRvd24oKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRfY2Fs
bGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFt
ZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKHZv
aWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8pCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNr
LCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAg
VU5VU0VEX1BBUkFNKHdlYlZpZXcpOworICAgIFVOVVNFRF9QQVJBTShldmVudEluZm8pOworCisg
ICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVz
dChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQor
dm9pZCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVRlc3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7
CisgICAgQVNTRVJUX1RSVUUobV9ld2tUZXN0Vmlldy0+aW5pdCgpKTsKKyAgICBBU1NFUlRfVFJV
RShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7CisKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQobV9ld2tUZXN0Vmlldy0+d2ViVmlldygpLCAibG9hZCxmaW5pc2hl
ZCIsIG9uTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV9ld2tUZXN0Vmlldy0+d2ViVmlldygp
LCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIGIvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCmluZGV4IGVj
NzUxMzIuLjA4YjE3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKQEAgLTE5LDQ5ICsxOSwyOSBAQAogI2lmbmRlZiBFV0tU
ZXN0QmFzZV9oCiAjZGVmaW5lIEVXS1Rlc3RCYXNlX2gKIAotI2luY2x1ZGUgPEV2YXMuaD4KKyNp
bmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgogCi0jZGVmaW5lIFJVTl9URVNUKGFyZ3MuLi4pICAgXAotICAg
IGRvIHsgICAgXAotICAgICAgICBBU1NFUlRfRVEodHJ1ZSwgRVdLVGVzdEJhc2U6OnJ1blRlc3Qo
YXJncykpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBTVEFSVF9URVNUKCkgICAg
XAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCk7ICAgXAot
ICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRU5EX1RFU1QoKSAgICBcCi0gICAgZG8geyAgICBc
Ci0gICAgICAgIEVXS1Rlc3RCYXNlOjplbmRUZXN0KCk7IFwKLSAgICB9IHdoaWxlICgwKQorbmFt
ZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLSNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwKLSAgICBk
byB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAgIFwKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCitjbGFzcyBFV0tUZXN0QmFz
ZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCB1c2VY
MTFXaW5kb3c7CiAKLSNkZWZpbmUgRUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAg
ICBFV0tUZXN0QmFzZTo6aW5pdCgpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKKyAgICBzdGF0aWMg
dm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9p
ZCogZXZlbnRJbmZvKTsKIAotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CisgICAgRXZhc19PYmpl
Y3QqIHdlYlZpZXcoKTsKKyAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Citwcm90ZWN0ZWQ6
CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBi
b29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCog
ZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRp
YyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRUZXN0KCk7Ci0gICAg
c3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJvb2wgcnVuVGVzdChjb25zdCBj
aGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVu
dF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJh
Y2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9
ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOworICAgIHZvaWQgcnVuVGVz
dChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CiAKLSAgICBzdGF0
aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyogbV9ld2tUZXN0VmlldzsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5jcHAKaW5kZXggZmQyOWI4MS4uMTFhN2U3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKQEAgLTE5
LDEzMCArMTksNjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0Vmll
dy5oIgogCi0jaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4K
IAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMg
ewogCi1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cp
Ci17Ci0gICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0
cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCBDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZp
Zzo6ZGVmYXVsdFZpZXdIZWlnaHQsIDApKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFz
ID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0
aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkpOwotfQotCi1FV0tUZXN0RWNvcmVFdmFzOjpF
V0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwg
aW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hh
ciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdykKLXsKLSAgICBpZiAodXNlWDExV2lu
ZG93KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2lu
ZV9uYW1lLCB2aWV3cG9ydF94LCB2aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBl
eHRyYV9vcHRpb25zKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRy
KGVjb3JlX2V2YXNfYnVmZmVyX25ldyh2aWV3cG9ydF94LCB2aWV3cG9ydF95KSk7Ci19Ci0KLUV2
YXMqIEVXS1Rlc3RFY29yZUV2YXM6OmV2YXMoKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0RWNvcmVFdmFzOjpzaG93KCkKLXsKLSAgICBp
ZiAobV9lY29yZUV2YXMuZ2V0KCkpCi0gICAgICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZh
cy5nZXQoKSk7Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzKQotICAg
IDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSkKLSAg
ICAsIG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpk
ZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdo
dCkKK0VXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhpbnQgdXNlWDExV2luZG93LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIEV3a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSkKKyAgICA6IG1fdXNlWDExV2lu
ZG93KHVzZVgxMVdpbmRvdykKKyAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgLCBtX2hlaWdodCho
ZWlnaHQpCisgICAgLCBtX3ZpZXdUeXBlKHRlc3RWaWV3VHlwZSkKKyAgICAsIG1fd2ViVmlldygw
KQorICAgICwgbV9lY29yZUV2YXMoMCkKIHsKIH0KIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3
KEV2YXMqIGV2YXMsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwg
bV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwgbV93
aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRl
ZmF1bHRWaWV3SGVpZ2h0KQorRVdLVGVzdFZpZXc6On5FV0tUZXN0VmlldygpCiB7CisgICAgaWYg
KG1fd2ViVmlldykKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG1fd2ViVmlldyk7CisgICAgaWYg
KG1fZWNvcmVFdmFzKQorICAgICAgICBlY29yZV9ldmFzX2ZyZWUobV9lY29yZUV2YXMpOwogfQog
Ci1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlwZSwg
Y29uc3QgY2hhciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0g
ICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1
bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQor
Ym9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCiB7Ci19CisgICAgaWYgKG1fdXNlWDExV2luZG93KQor
ICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIG1fd2lkdGgsIG1f
aGVpZ2h0LCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVfZXZhc19i
dWZmZXJfbmV3KG1fd2lkdGgsIG1faGVpZ2h0KTsKIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3
KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAg
LCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1f
aGVpZ2h0KGhlaWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9ldmFz
IHx8IG1fdXJsLmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzKTsKKyAg
ICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMpOworICAgIGlmICghZXZh
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3VHlw
ZSkgeworICAgIHN3aXRjaCAobV92aWV3VHlwZSkgewogICAgIGNhc2UgU2luZ2xlVmlldzoKLSAg
ICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfc2luZ2xlX2FkZChtX2V2YXMpKTsK
KyAgICAgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc2luZ2xlX2FkZChldmFzKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQ
dHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBld2tf
dmlld190aWxlZF9hZGQoZXZhcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICgh
bV93ZWJWaWV3LmdldCgpKQorICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBld2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3LmdldCgpLCBDb25maWc6OmRl
ZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LmdldCgpLCBt
X3VybC5jX3N0cigpKTsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6c2hvdygpCi17Ci0gICAgaWYg
KCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBldmFzX29iamVjdF9yZXNp
emUobV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBtX2hlaWdodCk7Ci0gICAgZXZhc19vYmplY3Rf
c2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZp
ZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19Ci0KLUV2YXNfT2JqZWN0KiBFV0tUZXN0Vmlldzo6bWFp
bkZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXdr
X3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotRXZhcyogRVdLVGVzdFZpZXc6OmV2YXMoKQotewotICAgIGlmIChtX3dlYlZpZXcuZ2V0KCkp
Ci0gICAgICAgIHJldHVybiBldmFzX29iamVjdF9ldmFzX2dldChtX3dlYlZpZXcuZ2V0KCkpOwot
ICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQgKCpj
YWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5h
bWUsIHZvaWQqIHB0cikKLXsKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZpZXcsIENvbmZpZzo6ZGVmYXVsdFRo
ZW1lUGF0aCk7CiAKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV93ZWJWaWV3
LmdldCgpLCBldmVudE5hbWUsIGNhbGxiYWNrKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQobV93ZWJWaWV3LmdldCgpLCBldmVudE5hbWUsIGNhbGxiYWNrLCBwdHIpOworICAg
IGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICBl
dmFzX29iamVjdF9zaG93KG1fd2ViVmlldyk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KG1f
d2ViVmlldywgRUlOQV9UUlVFKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCmluZGV4
IDZkMTVkMGQuLmYwYmIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU1ICsxOSwzOCBAQAogI2lmbmRlZiBF
V0tUZXN0Vmlld19oCiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUgIkVXS1Rlc3RD
b25maWcuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgotI2lu
Y2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBFV0tV
bml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNvcmVFdmFzIHsKLXB1YmxpYzoKLSAgICBFV0tU
ZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpOwotICAgIEVXS1Rlc3RFY29yZUV2YXMoY29u
c3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50
IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBp
bnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lkIHNob3coKTsK
LQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7Ci19OwotCiBj
bGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBFd2tWaWV3VHlwZSB7CiAgICAg
ICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBUaWxlZFZpZXcsCisgICAgICAgIFRpbGVkVmll
dwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tUZXN0VmlldyhFdmFzKik7Ci0gICAgRVdLVGVz
dFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIEV3
a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBFd2tW
aWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIEVX
S1Rlc3RWaWV3KGludCB1c2VYMTFXaW5kb3cgPSAwLCBpbnQgd2lkdGggPSBDb25maWc6OmRlZmF1
bHRWaWV3V2lkdGgsIGludCBoZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0LCBFd2tW
aWV3VHlwZSB0ZXN0Vmlld1R5cGUgPSBUaWxlZFZpZXcpOworICAgIH5FV0tUZXN0VmlldygpOwog
Ci0gICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0K
LSAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Ci0gICAgRXZhcyogZXZhcygpOwotICAgIHZv
aWQgc2hvdygpOworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3
OyB9CiAKICAgICBib29sIGluaXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxi
YWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwg
dm9pZCogcHRyKTsKIAorICAgIHZvaWQgdmlld1R5cGVTZXQoRXdrVmlld1R5cGUgdGVzdFZpZXdU
eXBlKSB7IG1fdmlld1R5cGUgPSB0ZXN0Vmlld1R5cGU7IH0KIHByaXZhdGU6CiAgICAgRVdLVGVz
dFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVyYXRvcj0oY29u
c3QgRVdLVGVzdFZpZXcmKTsKLQotICAgIEV2YXMqIG1fZXZhczsKLSAgICBPd25QdHI8RXZhc19P
YmplY3Q+IG1fd2ViVmlldzsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVXS1Rl
c3RWaWV3Jik7CiAKKyAgICBpbnQgbV91c2VYMTFXaW5kb3c7CiAgICAgaW50IG1fd2lkdGgsIG1f
aGVpZ2h0OwotICAgIEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwotICAgIHN0ZDo6c3Ry
aW5nIG1fdXJsOworCisgICAgRXdrVmlld1R5cGUgbV92aWV3VHlwZTsKKworICAgIEV2YXNfT2Jq
ZWN0KiBtX3dlYlZpZXc7CisgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IDJkNDkwNzkuLjI0
NDFkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBAIC0x
OSwzNiArMTksMjcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0
VXRpbHMvRVdLVGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25m
aWcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDxFY29yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAvKioK
ICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBjb3Jy
ZWN0IHZhbHVlLgogKi8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQqIGV2
ZW50SW5mbywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2Us
IGV3a192aWV3X2VkaXRhYmxlX2dldCkKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQobywg
RUlOQV9GQUxTRSk7Ci0gICAgRVhQRUNUX0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRhYmxl
X2dldChvKSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tf
dmlld19lZGl0YWJsZV9nZXQpCi17Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0Q2Ip
OworICAgIHJ1blRlc3QoKTsKKyAgICBld2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygpLCBF
SU5BX0ZBTFNFKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdlYlZp
ZXcoKSkpOwogfQogCiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0
dXJucyBjb3JyZWN0IHVyaSBzdHJpbmcuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdldENi
KHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCi17Ci0gICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIiwgZXdrX3ZpZXdfdXJpX2dldChvKSk7
Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld191cmlf
Z2V0KQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld191cmlfZ2V0KQogewotICAgIFJVTl9U
RVNUKCJodHRwOi8vd3d3LndlYmtpdC5vcmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIHJ1blRl
c3QoKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBDb25m
aWc6OmRlZmF1bHRUZXN0UGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5l
ci5jcHAKaW5kZXggNzAyYTYxZi4uMDAyMzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rl
c3RfcnVubmVyLmNwcApAQCAtMzMsNyArMzMsNiBAQCBzdGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFy
Z3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6c2h1dGRv
d25BbGwpOwogICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwogICAgIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICAgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163859</attachid>
            <date>2012-09-13 06:34:17 -0700</date>
            <delta_ts>2012-09-13 08:50:02 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>15899</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi5iNjliNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDktMTMgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBh
ZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAg
ICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBp
biB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZy
YW1ld29yayBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tU
ZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVudCB3ZWJ2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6bWFpbkZyYW1lKTogUmV0dXJucyBt
YWluIGZyYW1lLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgor
ICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAgICAg
IFVzZWQgdGhpcyB0byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgorICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBUZWFyRG93biBpcyBj
YWxsZWQgYXMgc29vbiBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAgVXNlZCB0aGlzIHRv
IHByb3Blcmx5IHNodXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgorICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGls
bCB0ZXN0IHBhZ2Ugd2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RCYXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAg
ICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6
RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVz
dFZpZXc6OmluaXQpOiBJbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAg
ICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAq
IHRlc3RzL3Rlc3RfcnVubmVyLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTEwICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gQ3JlYXRlIGEgdG9nZ2xlIGJ1dHRvbiBmb3IgY2xvc2VkIGNhcHRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3Bw
CmluZGV4IDJkM2UyYWUuLjQxOThlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSwxMCArMTksNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRl
ICJFV0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIApAQCAt
MzAsNzMgKzI3LDU3IEBAIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5k
b3c7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjppbml0
KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3a1Rlc3RWaWV3KDApCiB7
Ci0gICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsK
LSAgICBjb25zdCBjaGFyKiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAg
aWYgKHJldCAmJiBwcm94eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChw
cm94eVVyaSk7Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0
ZG93bkFsbCgpCi17Ci0gICAgaW50IGNvdW50ID0gMDsKLQotICAgIHdoaWxlICgoY291bnQgPSBl
Y29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9IGVkamVf
c2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAoKGNvdW50ID0gZXdrX3NodXRkb3duKCkp
ID4gMCkgeyB9CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCitFdmFzX09iamVj
dCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigp
OworICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LT53ZWJWaWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVz
dEJhc2U6OmVuZFRlc3QoKQorRXZhc19PYmplY3QqIEVXS1Rlc3RCYXNlOjptYWluRnJhbWUoKQog
ewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1l
X21haW5fZ2V0KHdlYlZpZXcoKSk7CiB9CiAKLWJvb2wgRVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3Qo
Y29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3Zv
aWQgRVdLVGVzdEJhc2U6OlNldFVwKCkKIHsKLSAgICBFRkxfSU5JVF9SRVQoKTsKLQotICAgIEVX
S1Rlc3RFY29yZUV2YXMgZXZhcyh1c2VYMTFXaW5kb3cpOwotICAgIGlmICghZXZhcy5ldmFzKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBldmFzLnNob3coKTsKKyAgICBBU1NFUlRfR1Qo
ZWNvcmVfZXZhc19pbml0KCksIDApOworICAgIEFTU0VSVF9HVChld2tfaW5pdCgpLCAwKTsKIAot
ICAgIEVXS1Rlc3RWaWV3IHZpZXcoZXZhcy5ldmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3Lmlu
aXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IGNoYXIqIHByb3h5VXJsID0g
Z2V0ZW52KCJodHRwX3Byb3h5Iik7CisgICAgaWYgKHByb3h5VXJsKQorICAgICAgICBld2tfbmV0
d29ya19wcm94eV91cmlfc2V0KHByb3h5VXJsKTsKIAotICAgIHZpZXcuYmluZEV2ZW50cyhldmVu
dF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Cisg
ICAgbV9ld2tUZXN0VmlldyA9IG5ldyBFV0tUZXN0VmlldygpOworfQogCi0gICAgU1RBUlRfVEVT
VCgpOwordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRvd24oKQoreworICAgIGRlbGV0ZSBtX2V3a1Rl
c3RWaWV3OworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBld2tfc2h1dGRvd24oKTsK
K30KIAotICAgIHJldHVybiB0cnVlOwordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQo
dm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAg
ICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0
KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdChDb25maWc6
OmRlZmF1bHRUZXN0UGFnZSwgZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX2V3a1Rlc3RWaWV3LT53ZWJW
aWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQsIDApOworICAgIGVjb3JlX21h
aW5fbG9vcF9iZWdpbigpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX2V3
a1Rlc3RWaWV3LT53ZWJWaWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQpOwog
fQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2
ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2
ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lkIEVXS1Rlc3RCYXNlOjpsb2FkVXJsKGNv
bnN0IGNoYXIqIHVybCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdCh1cmwsIGV2ZW50X2NhbGxi
YWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBBU1NFUlRfVFJVRShtX2V3a1Rlc3RW
aWV3LT5pbml0KHVzZVgxMVdpbmRvdykpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3VyaV9z
ZXQod2ViVmlldygpLCB1cmwpKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
QmFzZS5oCmluZGV4IGVjNzUxMzIuLjBiNzg5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKQEAgLTE5LDQ5ICsxOSwzMCBA
QAogI2lmbmRlZiBFV0tUZXN0QmFzZV9oCiAjZGVmaW5lIEVXS1Rlc3RCYXNlX2gKIAotI2luY2x1
ZGUgPEV2YXMuaD4KKyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVz
dFZpZXcuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi0jZGVmaW5lIFJVTl9URVNUKGFy
Z3MuLi4pICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBBU1NFUlRfRVEodHJ1ZSwgRVdLVGVz
dEJhc2U6OnJ1blRlc3QoYXJncykpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBT
VEFSVF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6c3Rh
cnRUZXN0KCk7ICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRU5EX1RFU1QoKSAgICBc
Ci0gICAgZG8geyAgICBcCi0gICAgICAgIEVXS1Rlc3RCYXNlOjplbmRUZXN0KCk7IFwKLSAgICB9
IHdoaWxlICgwKQorbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLSNkZWZpbmUgRUZMX0lOSVRf
UkVUKCkgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgp
KSAgIFwKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCitj
bGFzcyBFV0tUZXN0QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGludCB1c2VYMTFXaW5kb3c7CiAKLSNkZWZpbmUgRUZMX0lOSVQoKSAgXAotICAgIGRv
IHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6aW5pdCgpOyAgICBcCi0gICAgfSB3aGlsZSAo
MCkKKyAgICBzdGF0aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVj
dCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZvKTsKIAotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7
CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKKyAgICBFdmFzX09iamVjdCogbWFpbkZyYW1l
KCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJhc2Ug
ewotICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZl
bnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZl
bnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaW5p
dCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQgc3Rh
cnRUZXN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJvb2wg
cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2
YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNo
ZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lk
ICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hh
ciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwor
ICAgIHZvaWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFn
ZSk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIHN0YXRpYyBpbnQg
dXNlWDExV2luZG93OworICAgIEVXS1Rlc3RWaWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RW
aWV3LmNwcAppbmRleCBmZDI5YjgxLi4xNjU1MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksOTAgKzE5
LDM4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKIAot
I2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+CiAKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotRVdL
VGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KQorRVdLVGVz
dFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAgICBt
X2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6ZGVm
YXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVsc2UK
LSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcoQ29u
ZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9CiAK
LUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25h
bWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2
aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KQor
Ym9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNlWDExV2luZG93LCBFd2tWaWV3VHlwZSB0ZXN0
Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAodXNlWDExV2luZG93
KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2luZV9u
YW1lLCB2aWV3cG9ydF94LCB2aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBleHRy
YV9vcHRpb25zKSk7CisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19u
ZXcoMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgMCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9lY29y
ZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcodmlld3BvcnRfeCwgdmlld3Bv
cnRfeSkpOwotfQotCi1FdmFzKiBFV0tUZXN0RWNvcmVFdmFzOjpldmFzKCkKLXsKLSAgICBpZiAo
bV9lY29yZUV2YXMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3Jl
RXZhcy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRVdLVGVzdEVjb3JlRXZhczo6
c2hvdygpCi17Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICBlY29yZV9ldmFz
X3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOwotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXco
RXZhcyogZXZhcykKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwoQ29uZmlnOjpkZWZh
dWx0VGVzdFBhZ2UpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBt
X3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6
ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFz
KiBldmFzLCBjb25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJs
KHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgo
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0
Vmlld0hlaWdodCkKLXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMs
IEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQot
ICAgICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUodHlwZSkKLSAgICAsIG1f
d2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpk
ZWZhdWx0Vmlld0hlaWdodCkKLXsKLX0KKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihl
Y29yZV9ldmFzX2J1ZmZlcl9uZXcod2lkdGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6RVdL
VGVzdFZpZXcoRXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlwZSwgY29uc3QgY2hhciogdXJsLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVy
bCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQot
ICAgICwgbV9oZWlnaHQoaGVpZ2h0KQotewotfQorICAgIGlmICghbV9lY29yZUV2YXMuZ2V0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCi17Ci0g
ICAgaWYgKCFtX2V2YXMgfHwgbV91cmwuZW1wdHkoKSkKKyAgICBlY29yZV9ldmFzX3Nob3cobV9l
Y29yZUV2YXMuZ2V0KCkpOworICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3Jl
RXZhcy5nZXQoKSk7CisgICAgaWYgKCFldmFzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzd2l0Y2ggKG1fZGVmYXVsdFZpZXdUeXBlKSB7CisgICAgc3dpdGNoICh0ZXN0Vmlld1R5cGUp
IHsKICAgICBjYXNlIFNpbmdsZVZpZXc6Ci0gICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UHRyKGV3
a192aWV3X3NpbmdsZV9hZGQobV9ldmFzKSk7CisgICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UHRy
KGV3a192aWV3X3NpbmdsZV9hZGQoZXZhcykpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
VGlsZWRWaWV3OgotICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld190aWxlZF9h
ZGQobV9ldmFzKSk7CisgICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UHRyKGV3a192aWV3X3RpbGVk
X2FkZChldmFzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTEwLDM5ICs1OCwxMSBA
QCBib29sIEVXS1Rlc3RWaWV3Ojppbml0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5nZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQ
YXRoKTsKLSAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIo
KSk7Ci19CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNob3coKQotewotICAgIGlmICghbV93ZWJWaWV3
LmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmll
dy5nZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dl
YlZpZXcuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwogICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJW
aWV3LmdldCgpKTsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBF
SU5BX1RSVUUpOwotfQotCi1FdmFzX09iamVjdCogRVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17
Ci0gICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1l
X21haW5fZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVX
S1Rlc3RWaWV3OjpldmFzKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICBy
ZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4g
MDsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBw
dHIpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFt
ZSwgY2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZp
ZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHB0cik7CisgICAgZXZhc19vYmplY3RfZm9j
dXNfc2V0KG1fd2ViVmlldy5nZXQoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVz
dFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZp
ZXcuaAppbmRleCA2ZDE1ZDBkLi4zNjc1MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCkBAIC0xOSw1NSArMTksMzEgQEAK
ICNpZm5kZWYgRVdLVGVzdFZpZXdfaAogI2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRl
ICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2
YXMuaD4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEVjb3JlRXZhcyB7Ci1wdWJsaWM6
Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KTsKLSAgICBFV0tUZXN0RWNv
cmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdw
b3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFf
b3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdyk7Ci0KLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9p
ZCBzaG93KCk7Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFz
OwotfTsKLQogY2xhc3MgRVdLVGVzdFZpZXcgewogcHVibGljOgogICAgIGVudW0gRXdrVmlld1R5
cGUgewogICAgICAgICBTaW5nbGVWaWV3ID0gMCwKLSAgICAgICAgVGlsZWRWaWV3LAorICAgICAg
ICBUaWxlZFZpZXcKICAgICB9OwogCi0gICAgZXhwbGljaXQgRVdLVGVzdFZpZXcoRXZhcyopOwot
ICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3
KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsKTsKLSAgICBFV0tUZXN0VmlldyhF
dmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKKyAgICBFV0tUZXN0VmlldygpOwogCiAgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJl
dHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KLSAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Ci0g
ICAgRXZhcyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwotCi0gICAgYm9vbCBpbml0KCk7Ci0g
ICAgdm9pZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cik7CiAKKyAgICBib29sIGlu
aXQoaW50IHVzZVgxMVdpbmRvdyA9IDAsIEV3a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSA9IFRpbGVk
VmlldywgaW50IHdpZHRoID0gQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBpbnQgaGVpZ2h0ID0g
Q29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCk7CiBwcml2YXRlOgogICAgIEVXS1Rlc3RWaWV3KGNv
bnN0IEVXS1Rlc3RWaWV3Jik7Ci0gICAgRVdLVGVzdFZpZXcgb3BlcmF0b3I9KGNvbnN0IEVXS1Rl
c3RWaWV3Jik7CisgICAgRVdLVGVzdFZpZXcmIG9wZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYp
OwogCi0gICAgRXZhcyogbV9ldmFzOworICAgIE93blB0cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZh
czsKICAgICBPd25QdHI8RXZhc19PYmplY3Q+IG1fd2ViVmlldzsKLQotICAgIGludCBtX3dpZHRo
LCBtX2hlaWdodDsKLSAgICBFd2tWaWV3VHlwZSBtX2RlZmF1bHRWaWV3VHlwZTsKLSAgICBzdGQ6
OnN0cmluZyBtX3VybDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL3Rlc3RfZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tf
dmlldy5jcHAKaW5kZXggMmQ0OTA3OS4uN2MwNGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvdGVzdF9ld2tfdmlldy5jcHAKQEAgLTE5LDM2ICsxOSwyNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIgorI2luY2x1ZGUg
IlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBFV0tVbml0VGVzdHM7CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5j
dGlvbiBwcm9wZXJseSByZXR1cm5zIGNvcnJlY3QgdmFsdWUuCiAqLwotc3RhdGljIHZvaWQgZXdr
Vmlld0VkaXRhYmxlR2V0Q2Iodm9pZCogZXZlbnRJbmZvLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZGF0YSkKK1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQogewotICAg
IGV3a192aWV3X2VkaXRhYmxlX3NldChvLCBFSU5BX0ZBTFNFKTsKLSAgICBFWFBFQ1RfRVEoRUlO
QV9GQUxTRSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQot
Ci1URVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X2VkaXRhYmxlX2dldCkKLXsKLSAgICBSVU5f
VEVTVChld2tWaWV3RWRpdGFibGVHZXRDYik7CisgICAgbG9hZFVybCgpOworICAgIGV3a192aWV3
X2VkaXRhYmxlX3NldCh3ZWJWaWV3KCksIEVJTkFfRkFMU0UpOworICAgIEFTU0VSVF9GQUxTRShl
d2tfdmlld19lZGl0YWJsZV9nZXQod2ViVmlldygpKSk7CiB9CiAKIC8qKgogKiBAYnJpZWYgQ2hl
Y2tpbmcgd2hldGhlciBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3QgdXJpIHN0cmluZy4KICovCi1z
dGF0aWMgdm9pZCBld2tWaWV3VXJpR2V0Q2Iodm9pZCogZXZlbnRJbmZvLCBFdmFzX09iamVjdCog
bywgdm9pZCogZGF0YSkKLXsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly93d3cud2Via2l0Lm9y
Zy8iLCBld2tfdmlld191cmlfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRl
c3RfZXdrX3ZpZXcsIGV3a192aWV3X3VyaV9nZXQpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192
aWV3X3VyaV9nZXQpCiB7Ci0gICAgUlVOX1RFU1QoImh0dHA6Ly93d3cud2Via2l0Lm9yZyIsIGV3
a1ZpZXdVcmlHZXRDYik7CisgICAgbG9hZFVybCgpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmll
d191cmlfZ2V0KHdlYlZpZXcoKSksIENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAppbmRleCA3MDJhNjFmLi4yYjQ4ZDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0xNSw2ICsxNSw3IEBA
CiAgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwKICAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz
MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQogKi8KKyNpbmNsdWRlICJjb25maWcuaCIKIAog
I2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCIKICNpbmNsdWRlIDxnZXRvcHQu
aD4KQEAgLTMzLDcgKzM0LDYgQEAgc3RhdGljIHZvaWQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
Ci0gICAgYXRleGl0KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxsKTsKICAg
ICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163885</attachid>
            <date>2012-09-13 08:50:02 -0700</date>
            <delta_ts>2012-09-13 09:17:21 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>16001</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi5iNjliNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDktMTMgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBh
ZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAg
ICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBp
biB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZy
YW1ld29yayBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tU
ZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVudCB3ZWJ2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6bWFpbkZyYW1lKTogUmV0dXJucyBt
YWluIGZyYW1lLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgor
ICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAgICAg
IFVzZWQgdGhpcyB0byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgorICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBUZWFyRG93biBpcyBj
YWxsZWQgYXMgc29vbiBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAgVXNlZCB0aGlzIHRv
IHByb3Blcmx5IHNodXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgorICAgICAgICAoRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGls
bCB0ZXN0IHBhZ2Ugd2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVz
dHM6OkVXS1Rlc3RCYXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAg
ICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6
RVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVz
dFZpZXc6OmluaXQpOiBJbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAg
ICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAq
IHRlc3RzL3Rlc3RfcnVubmVyLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTEwICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gQ3JlYXRlIGEgdG9nZ2xlIGJ1dHRvbiBmb3IgY2xvc2VkIGNhcHRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3Bw
CmluZGV4IDJkM2UyYWUuLjQxOThlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSwxMCArMTksNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRl
ICJFV0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIApAQCAt
MzAsNzMgKzI3LDU3IEBAIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5k
b3c7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjppbml0
KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3a1Rlc3RWaWV3KDApCiB7
Ci0gICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsK
LSAgICBjb25zdCBjaGFyKiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAg
aWYgKHJldCAmJiBwcm94eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChw
cm94eVVyaSk7Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0
ZG93bkFsbCgpCi17Ci0gICAgaW50IGNvdW50ID0gMDsKLQotICAgIHdoaWxlICgoY291bnQgPSBl
Y29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9IGVkamVf
c2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGlsZSAoKGNvdW50ID0gZXdrX3NodXRkb3duKCkp
ID4gMCkgeyB9CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCitFdmFzX09iamVj
dCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigp
OworICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LT53ZWJWaWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVz
dEJhc2U6OmVuZFRlc3QoKQorRXZhc19PYmplY3QqIEVXS1Rlc3RCYXNlOjptYWluRnJhbWUoKQog
ewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1l
X21haW5fZ2V0KHdlYlZpZXcoKSk7CiB9CiAKLWJvb2wgRVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3Qo
Y29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3Zv
aWQgRVdLVGVzdEJhc2U6OlNldFVwKCkKIHsKLSAgICBFRkxfSU5JVF9SRVQoKTsKLQotICAgIEVX
S1Rlc3RFY29yZUV2YXMgZXZhcyh1c2VYMTFXaW5kb3cpOwotICAgIGlmICghZXZhcy5ldmFzKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBldmFzLnNob3coKTsKKyAgICBBU1NFUlRfR1Qo
ZWNvcmVfZXZhc19pbml0KCksIDApOworICAgIEFTU0VSVF9HVChld2tfaW5pdCgpLCAwKTsKIAot
ICAgIEVXS1Rlc3RWaWV3IHZpZXcoZXZhcy5ldmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3Lmlu
aXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IGNoYXIqIHByb3h5VXJsID0g
Z2V0ZW52KCJodHRwX3Byb3h5Iik7CisgICAgaWYgKHByb3h5VXJsKQorICAgICAgICBld2tfbmV0
d29ya19wcm94eV91cmlfc2V0KHByb3h5VXJsKTsKIAotICAgIHZpZXcuYmluZEV2ZW50cyhldmVu
dF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Cisg
ICAgbV9ld2tUZXN0VmlldyA9IG5ldyBFV0tUZXN0VmlldygpOworfQogCi0gICAgU1RBUlRfVEVT
VCgpOwordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRvd24oKQoreworICAgIGRlbGV0ZSBtX2V3a1Rl
c3RWaWV3OworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBld2tfc2h1dGRvd24oKTsK
K30KIAotICAgIHJldHVybiB0cnVlOwordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQo
dm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAg
ICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0
KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdChDb25maWc6
OmRlZmF1bHRUZXN0UGFnZSwgZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX2V3a1Rlc3RWaWV3LT53ZWJW
aWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQsIDApOworICAgIGVjb3JlX21h
aW5fbG9vcF9iZWdpbigpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX2V3
a1Rlc3RWaWV3LT53ZWJWaWV3KCksICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQpOwog
fQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2
ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2
ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lkIEVXS1Rlc3RCYXNlOjpsb2FkVXJsKGNv
bnN0IGNoYXIqIHVybCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdCh1cmwsIGV2ZW50X2NhbGxi
YWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBBU1NFUlRfVFJVRShtX2V3a1Rlc3RW
aWV3LT5pbml0KHVzZVgxMVdpbmRvdykpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3VyaV9z
ZXQod2ViVmlldygpLCB1cmwpKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
QmFzZS5oCmluZGV4IGVjNzUxMzIuLjBiNzg5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKQEAgLTE5LDQ5ICsxOSwzMCBA
QAogI2lmbmRlZiBFV0tUZXN0QmFzZV9oCiAjZGVmaW5lIEVXS1Rlc3RCYXNlX2gKIAotI2luY2x1
ZGUgPEV2YXMuaD4KKyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVz
dFZpZXcuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi0jZGVmaW5lIFJVTl9URVNUKGFy
Z3MuLi4pICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBBU1NFUlRfRVEodHJ1ZSwgRVdLVGVz
dEJhc2U6OnJ1blRlc3QoYXJncykpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBT
VEFSVF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6c3Rh
cnRUZXN0KCk7ICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRU5EX1RFU1QoKSAgICBc
Ci0gICAgZG8geyAgICBcCi0gICAgICAgIEVXS1Rlc3RCYXNlOjplbmRUZXN0KCk7IFwKLSAgICB9
IHdoaWxlICgwKQorbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLSNkZWZpbmUgRUZMX0lOSVRf
UkVUKCkgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgp
KSAgIFwKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCitj
bGFzcyBFV0tUZXN0QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGludCB1c2VYMTFXaW5kb3c7CiAKLSNkZWZpbmUgRUZMX0lOSVQoKSAgXAotICAgIGRv
IHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6aW5pdCgpOyAgICBcCi0gICAgfSB3aGlsZSAo
MCkKKyAgICBzdGF0aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVj
dCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZvKTsKIAotbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7
CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKKyAgICBFdmFzX09iamVjdCogbWFpbkZyYW1l
KCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJhc2Ug
ewotICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZl
bnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZl
bnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaW5p
dCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQgc3Rh
cnRUZXN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJvb2wg
cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2
YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNo
ZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lk
ICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hh
ciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwor
ICAgIHZvaWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFn
ZSk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIHN0YXRpYyBpbnQg
dXNlWDExV2luZG93OworICAgIEVXS1Rlc3RWaWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RW
aWV3LmNwcAppbmRleCBmZDI5YjgxLi5kMTY4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksMTMwICsx
OSw1MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAK
LSNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktpdC5oPgogCisjaW5j
bHVkZSA8d3RmL051bGxQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1l
c3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZh
cyhpbnQgdXNlWDExV2luZG93KQorRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBp
ZiAodXNlWDExV2luZG93KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2
YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0
Vmlld0hlaWdodCwgMCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0
cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6
OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29y
ZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3Bv
cnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9v
cHRpb25zLCBpbnQgdXNlWDExV2luZG93KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNl
WDExV2luZG93LCBFd2tWaWV3VHlwZSB0ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKIHsKKyAgICBtX3dlYlZpZXcgPSBudWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRvdykK
LSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFt
ZSwgdmlld3BvcnRfeCwgdmlld3BvcnRfeSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFf
b3B0aW9ucykpOworICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3
KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVF
dmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0
X3kpKTsKLX0KLQotRXZhcyogRVdLVGVzdEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYgKG1f
ZWNvcmVFdmFzLmdldCgpKQotICAgICAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2
YXMuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6OnNo
b3coKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZhc19z
aG93KG1fZWNvcmVFdmFzLmdldCgpKTsKLX0KKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0
cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcod2lkdGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6
RVdLVGVzdFZpZXcoRXZhcyogZXZhcykKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwo
Q29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZp
ZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVp
Z2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tU
ZXN0VmlldyhFdmFzKiBldmFzLCBjb25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykK
LSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAg
ICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29u
ZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3
KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1f
ZXZhcyhldmFzKQotICAgICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUodHlw
ZSkKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWln
aHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rl
c3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwp
Ci0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAg
ICAsIG1faGVpZ2h0KGhlaWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICgh
bV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFz
LmdldCgpKTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0
KCkpOworICAgIGlmICghZXZhcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNo
IChtX2RlZmF1bHRWaWV3VHlwZSkgeworICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAgICAg
Y2FzZSBTaW5nbGVWaWV3OgotICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld19z
aW5nbGVfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmll
d19zaW5nbGVfYWRkKGV2YXMpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmll
dzoKLSAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZh
cykpOworICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld190aWxlZF9hZGQoZXZh
cykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkK
KyAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdrX3Zp
ZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5nZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsK
LSAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7Ci19
CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNob3coKQotewotICAgIGlmICghbV93ZWJWaWV3LmdldCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQo
KSwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcu
Z2V0KCksIHdpZHRoLCBoZWlnaHQpOwogICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3Lmdl
dCgpKTsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5BX1RS
VUUpOwotfQotCi1FdmFzX09iamVjdCogRVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAg
aWYgKG1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5f
Z2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rlc3RW
aWV3OjpldmFzKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4g
ZXZhc19vYmplY3RfZXZhc19nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotdm9pZCBFV0tUZXN0Vmlldzo6YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCi17
Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2Fs
bGJhY2spOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0
KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHB0cik7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0
KG1fd2ViVmlldy5nZXQoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaApp
bmRleCA2ZDE1ZDBkLi4zNjc1MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCkBAIC0xOSw1NSArMTksMzEgQEAKICNpZm5k
ZWYgRVdLVGVzdFZpZXdfaAogI2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tU
ZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4K
LSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2Ug
RVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEVjb3JlRXZhcyB7Ci1wdWJsaWM6Ci0gICAg
RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KTsKLSAgICBFV0tUZXN0RWNvcmVFdmFz
KGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ks
IGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9u
cywgaW50IHVzZVgxMVdpbmRvdyk7Ci0KLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93
KCk7Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFzOwotfTsK
LQogY2xhc3MgRVdLVGVzdFZpZXcgewogcHVibGljOgogICAgIGVudW0gRXdrVmlld1R5cGUgewog
ICAgICAgICBTaW5nbGVWaWV3ID0gMCwKLSAgICAgICAgVGlsZWRWaWV3LAorICAgICAgICBUaWxl
ZFZpZXcKICAgICB9OwogCi0gICAgZXhwbGljaXQgRVdLVGVzdFZpZXcoRXZhcyopOwotICAgIEVX
S1Rlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMq
LCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwg
RXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAg
ICBFV0tUZXN0VmlldygpOwogCiAgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBt
X3dlYlZpZXcuZ2V0KCk7IH0KLSAgICBFdmFzX09iamVjdCogbWFpbkZyYW1lKCk7Ci0gICAgRXZh
cyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwotCi0gICAgYm9vbCBpbml0KCk7Ci0gICAgdm9p
ZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCop
LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cik7CiAKKyAgICBib29sIGluaXQoaW50
IHVzZVgxMVdpbmRvdyA9IDAsIEV3a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSA9IFRpbGVkVmlldywg
aW50IHdpZHRoID0gQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBpbnQgaGVpZ2h0ID0gQ29uZmln
OjpkZWZhdWx0Vmlld0hlaWdodCk7CiBwcml2YXRlOgogICAgIEVXS1Rlc3RWaWV3KGNvbnN0IEVX
S1Rlc3RWaWV3Jik7Ci0gICAgRVdLVGVzdFZpZXcgb3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3
Jik7CisgICAgRVdLVGVzdFZpZXcmIG9wZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOwogCi0g
ICAgRXZhcyogbV9ldmFzOworICAgIE93blB0cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZhczsKICAg
ICBPd25QdHI8RXZhc19PYmplY3Q+IG1fd2ViVmlldzsKLQotICAgIGludCBtX3dpZHRoLCBtX2hl
aWdodDsKLSAgICBFd2tWaWV3VHlwZSBtX2RlZmF1bHRWaWV3VHlwZTsKLSAgICBzdGQ6OnN0cmlu
ZyBtX3VybDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rl
c3RfZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5j
cHAKaW5kZXggMmQ0OTA3OS4uNzZiYmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
dGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVz
dF9ld2tfdmlldy5jcHAKQEAgLTE5LDM2ICsxOSwzMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
CiAjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRU
ZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEVX
S1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHBy
b3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBld2tWaWV3RWRp
dGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBkYXRhKQot
ewotICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChvLCBFSU5BX0ZBTFNFKTsKLSAgICBFWFBFQ1Rf
RVEoRUlOQV9GQUxTRSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgp
OwotfQotCi1URVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X2VkaXRhYmxlX2dldCkKK1RFU1Rf
RihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQogewotICAgIFJVTl9URVNUKGV3
a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgZXdrX3ZpZXdfZWRpdGFi
bGVfc2V0KHdlYlZpZXcoKSwgZmFsc2UpOworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19lZGl0
YWJsZV9nZXQod2ViVmlldygpKSk7CiB9CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhl
ciBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3QgdXJpIHN0cmluZy4KICovCi1zdGF0aWMgdm9pZCBl
d2tWaWV3VXJpR2V0Q2Iodm9pZCogZXZlbnRJbmZvLCBFdmFzX09iamVjdCogbywgdm9pZCogZGF0
YSkKLXsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iLCBld2tfdmll
d191cmlfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdrX3ZpZXcs
IGV3a192aWV3X3VyaV9nZXQpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3VyaV9nZXQp
CiB7Ci0gICAgUlVOX1RFU1QoImh0dHA6Ly93d3cud2Via2l0Lm9yZyIsIGV3a1ZpZXdVcmlHZXRD
Yik7CisgICAgbG9hZFVybCgpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld191cmlfZ2V0KHdl
YlZpZXcoKSksIENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL3Rlc3RfcnVubmVyLmNwcAppbmRleCA3MDJhNjFmLi4yYjQ4ZDE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwKICAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN
QSAwMjExMS0xMzA3IFVTQQogKi8KKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVu
aXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCIKICNpbmNsdWRlIDxnZXRvcHQuaD4KQEAgLTMzLDcg
KzM0LDYgQEAgc3RhdGljIHZvaWQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgYXRleGl0
KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRkb3duQWxsKTsKICAgICBwYXJzZUN1c3Rv
bUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKICAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163888</attachid>
            <date>2012-09-13 09:17:21 -0700</date>
            <delta_ts>2012-09-18 07:24:13 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>15806</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi4yYjc3MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTMgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBh
ZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAg
ICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBp
biB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZy
YW1ld29yayBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tU
ZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVudCB3ZWJ2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICBCZWZv
cmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAgICAgIFVzZWQgdGhpcyB0
byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBUZWFyRG93biBpcyBjYWxsZWQgYXMgc29v
biBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAgVXNlZCB0aGlzIHRvIHByb3Blcmx5IHNo
dXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGlsbCB0ZXN0IHBhZ2Ug
d2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RC
YXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAgICAgICAqIHRlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6
OkVXS1Rlc3RWaWV3KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQp
OiBJbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgICogdGVzdHMvdGVz
dF9ld2tfdmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL3Rlc3Rf
cnVubmVyLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTEwICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQ3JlYXRl
IGEgdG9nZ2xlIGJ1dHRvbiBmb3IgY2xvc2VkIGNhcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCmluZGV4IDJkM2Uy
YWUuLmRkNmIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29u
ZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0K
ICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIApAQCAtMzAsNzMgKzI3LDUy
IEBAIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5kb3c7CiAKIG5hbWVz
cGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjppbml0KCkKK0VXS1Rlc3RC
YXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3a1Rlc3RWaWV3KDApCiB7Ci0gICAgaWYgKCFl
Y29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGpl
X2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBj
aGFyKiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBw
cm94eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0K
LSAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitF
dmFzX09iamVjdCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7
Ci0KLSAgICB3aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQot
ICAgIHdoaWxlICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUg
KChjb3VudCA9IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RW
aWV3LT53ZWJWaWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCit2b2lk
IEVXS1Rlc3RCYXNlOjpTZXRVcCgpCiB7Ci0gICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cisg
ICAgQVNTRVJUX0dUKGVjb3JlX2V2YXNfaW5pdCgpLCAwKTsKKyAgICBBU1NFUlRfR1QoZXdrX2lu
aXQoKSwgMCk7CisKKyAgICBjb25zdCBjaGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94
eSIpOworICAgIGlmIChwcm94eVVybCkKKyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3Nl
dChwcm94eVVybCk7CisKKyAgICBtX2V3a1Rlc3RWaWV3ID0gbmV3IEVXS1Rlc3RWaWV3KCk7CiB9
CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRv
d24oKQogewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgZGVsZXRlIG1fZXdrVGVz
dFZpZXc7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGV3a19zaHV0ZG93bigpOwog
fQogCi1ib29sIEVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAo
KmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIq
IGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lkIEVXS1Rlc3RCYXNlOjpvbkxvYWRG
aW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZv
KQogewotICAgIEVGTF9JTklUX1JFVCgpOwotCi0gICAgRVdLVGVzdEVjb3JlRXZhcyBldmFzKHVz
ZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGV2YXMuc2hvdygpOwotCi0gICAgRVdLVGVzdFZpZXcgdmlldyhldmFzLmV2YXMoKSwg
dXJsKTsKLSAgICBpZiAoIXZpZXcuaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEp
OwotICAgIHZpZXcuc2hvdygpOwotCi0gICAgU1RBUlRfVEVTVCgpOwotCi0gICAgcmV0dXJuIHRy
dWU7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6
cnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
KSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVz
dEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3Qo
Q29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVu
dF9kYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV9ld2tUZXN0Vmll
dy0+d2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBl
Y29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19k
ZWwobV9ld2tUZXN0Vmlldy0+d2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlz
aGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZv
aWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBj
aGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6bG9h
ZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVu
dF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RSVUUobV9l
d2tUZXN0Vmlldy0+aW5pdCh1c2VYMTFXaW5kb3cpKTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmll
d191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaAppbmRleCBlYzc1MTMyLi5lYjEwOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCkBAIC0xOSw0OSAr
MTksMjkgQEAKICNpZm5kZWYgRVdLVGVzdEJhc2VfaAogI2RlZmluZSBFV0tUZXN0QmFzZV9oCiAK
LSNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgorI2luY2x1ZGUg
IkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAotI2RlZmluZSBSVU5f
VEVTVChhcmdzLi4uKSAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgQVNTRVJUX0VRKHRydWUs
IEVXS1Rlc3RCYXNlOjpydW5UZXN0KGFyZ3MpKTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNk
ZWZpbmUgU1RBUlRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJh
c2U6OnN0YXJ0VGVzdCgpOyAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIEVORF9URVNU
KCkgICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpOyBc
Ci0gICAgfSB3aGlsZSAoMCkKK25hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi0jZGVmaW5lIEVG
TF9JTklUX1JFVCgpICBcCi0gICAgZG8geyAgICBcCi0gICAgICAgIGlmICghRVdLVGVzdEJhc2U6
OmluaXQoKSkgICBcCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgIFwKLSAgICB9IHdoaWxl
ICgwKQorY2xhc3MgRVdLVGVzdEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHVibGlj
OgorICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93OwogCi0jZGVmaW5lIEVGTF9JTklUKCkgIFwK
LSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OmluaXQoKTsgICAgXAotICAgIH0g
d2hpbGUgKDApCisgICAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZh
c19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5mbyk7CiAKLW5hbWVzcGFjZSBFV0tVbml0
VGVzdHMgeworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7Citwcm90ZWN0ZWQ6CisgICAgRVdL
VGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBib29sIGNyZWF0
ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFz
X09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0
YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNo
dXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRUZXN0KCk7Ci0gICAgc3RhdGljIHZv
aWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB1cmws
IHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0g
MCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQq
LCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZp
bmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOworICAgIHZvaWQgbG9hZFVybChjb25zdCBj
aGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CisgICAgdm9pZCB3YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKIAotICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93OworICAgIEVXS1Rl
c3RWaWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAppbmRleCBmZDI5YjgxLi5k
MTY4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksMTMwICsxOSw1MyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29uZmln
LmgiCiAjaW5jbHVkZSA8RVdlYktpdC5oPgogCisjaW5jbHVkZSA8d3RmL051bGxQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAot
RVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KQorRVdL
VGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9
CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5l
X25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGlu
dCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93
KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNlWDExV2luZG93LCBFd2tWaWV3VHlwZSB0
ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBtX3dlYlZpZXcgPSBu
dWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBh
ZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFtZSwgdmlld3BvcnRfeCwgdmlld3BvcnRf
eSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFfb3B0aW9ucykpOworICAgICAgICBtX2Vj
b3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQs
IDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZh
c19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVz
dEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAg
ICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAw
OwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6OnNob3coKQotewotICAgIGlmIChtX2Vjb3Jl
RXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsK
LX0KKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
d2lkdGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcykK
LSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2Up
Ci0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZp
Zzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdI
ZWlnaHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBjb25z
dCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAs
IG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZh
dWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkK
LXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBl
IHR5cGUsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwo
dXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUodHlwZSkKLSAgICAsIG1fd2lkdGgoQ29uZmln
OjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hl
aWdodCkKLXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1Zp
ZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAg
IDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlw
ZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1faGVpZ2h0KGhlaWdodCkKLXsK
LX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wg
RVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkp
CisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKKyAgICBFdmFzKiBldmFz
ID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOworICAgIGlmICghZXZhcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3VHlwZSkgewor
ICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAgICAgY2FzZSBTaW5nbGVWaWV3OgotICAgICAg
ICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld19zaW5nbGVfYWRkKG1fZXZhcykpOworICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld19zaW5nbGVfYWRkKGV2YXMpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0g
YWRvcHRQdHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcg
PSBhZG9wdFB0cihld2tfdmlld190aWxlZF9hZGQoZXZhcykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICBpZiAoIW1fd2ViVmlldykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5n
ZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsKLSAgICBld2tfdmlld191cmlfc2V0KG1f
d2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7Ci19CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNo
b3coKQotewotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
ZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwog
ICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3LmdldCgpKTsKLSAgICBldmFzX29iamVjdF9m
b2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5BX1RSVUUpOwotfQotCi1FdmFzX09iamVjdCog
RVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rlc3RWaWV3OjpldmFzKCkKLXsKLSAgICBpZiAo
bV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93
ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6Ymlu
ZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29u
c3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Rl
bChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ss
IHB0cik7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KG1fd2ViVmlldy5nZXQoKSwgdHJ1ZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAppbmRleCA2ZDE1ZDBkLi4zNjc1MTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
Vmlldy5oCkBAIC0xOSw1NSArMTksMzEgQEAKICNpZm5kZWYgRVdLVGVzdFZpZXdfaAogI2RlZmlu
ZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8
RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotY2xhc3Mg
RVdLVGVzdEVjb3JlRXZhcyB7Ci1wdWJsaWM6Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNl
WDExV2luZG93KTsKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1l
LCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmll
d3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdyk7Ci0K
LSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLXByaXZhdGU6Ci0gICAgT3du
UHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFzOwotfTsKLQogY2xhc3MgRVdLVGVzdFZpZXcgewog
cHVibGljOgogICAgIGVudW0gRXdrVmlld1R5cGUgewogICAgICAgICBTaW5nbGVWaWV3ID0gMCwK
LSAgICAgICAgVGlsZWRWaWV3LAorICAgICAgICBUaWxlZFZpZXcKICAgICB9OwogCi0gICAgZXhw
bGljaXQgRVdLVGVzdFZpZXcoRXZhcyopOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBjb25zdCBj
aGFyKiB1cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hh
ciogdXJsKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIq
IHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBFV0tUZXN0VmlldygpOwogCiAgICAg
RXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KLSAgICBF
dmFzX09iamVjdCogbWFpbkZyYW1lKCk7Ci0gICAgRXZhcyogZXZhcygpOwotICAgIHZvaWQgc2hv
dygpOwotCi0gICAgYm9vbCBpbml0KCk7Ci0gICAgdm9pZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxs
YmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUs
IHZvaWQqIHB0cik7CiAKKyAgICBib29sIGluaXQoaW50IHVzZVgxMVdpbmRvdyA9IDAsIEV3a1Zp
ZXdUeXBlIHRlc3RWaWV3VHlwZSA9IFRpbGVkVmlldywgaW50IHdpZHRoID0gQ29uZmlnOjpkZWZh
dWx0Vmlld1dpZHRoLCBpbnQgaGVpZ2h0ID0gQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCk7CiBw
cml2YXRlOgogICAgIEVXS1Rlc3RWaWV3KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0gICAgRVdLVGVz
dFZpZXcgb3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3Jik7CisgICAgRVdLVGVzdFZpZXcmIG9w
ZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOwogCi0gICAgRXZhcyogbV9ldmFzOworICAgIE93
blB0cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZhczsKICAgICBPd25QdHI8RXZhc19PYmplY3Q+IG1f
d2ViVmlldzsKLQotICAgIGludCBtX3dpZHRoLCBtX2hlaWdodDsKLSAgICBFd2tWaWV3VHlwZSBt
X2RlZmF1bHRWaWV3VHlwZTsKLSAgICBzdGQ6OnN0cmluZyBtX3VybDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKaW5kZXggMmQ0OTA3OS4uNzZiYmFl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKQEAgLTE5LDM2
ICsxOSwzMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0tUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5o
IgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgPEVjb3JlLmg+CisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBi
cmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2
YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBld2tWaWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudElu
Zm8sIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBkYXRhKQotewotICAgIGV3a192aWV3X2VkaXRhYmxl
X3NldChvLCBFSU5BX0ZBTFNFKTsKLSAgICBFWFBFQ1RfRVEoRUlOQV9GQUxTRSwgZXdrX3ZpZXdf
ZWRpdGFibGVfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdrX3Zp
ZXcsIGV3a192aWV3X2VkaXRhYmxlX2dldCkKK1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdf
ZWRpdGFibGVfZ2V0KQogewotICAgIFJVTl9URVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAg
ICBsb2FkVXJsKCk7CisgICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgZmFsc2Up
OworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19lZGl0YWJsZV9nZXQod2ViVmlldygpKSk7CiB9
CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiByZXR1cm5zIGNvcnJl
Y3QgdXJpIHN0cmluZy4KICovCi1zdGF0aWMgdm9pZCBld2tWaWV3VXJpR2V0Q2Iodm9pZCogZXZl
bnRJbmZvLCBFdmFzX09iamVjdCogbywgdm9pZCogZGF0YSkKLXsKLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly93d3cud2Via2l0Lm9yZy8iLCBld2tfdmlld191cmlfZ2V0KG8pKTsKLSAgICBFTkRf
VEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X3VyaV9nZXQpCitURVNU
X0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3VyaV9nZXQpCiB7Ci0gICAgUlVOX1RFU1QoImh0dHA6
Ly93d3cud2Via2l0Lm9yZyIsIGV3a1ZpZXdVcmlHZXRDYik7CisgICAgbG9hZFVybCgpOworICAg
IEVYUEVDVF9TVFJFUShld2tfdmlld191cmlfZ2V0KHdlYlZpZXcoKSksIENvbmZpZzo6ZGVmYXVs
dFRlc3RQYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3Rf
cnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAppbmRl
eCA3MDJhNjFmLi4yYjQ4ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90
ZXN0X3J1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIu
Y3BwCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKICAgICBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQogKi8KKyNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2Uu
aCIKICNpbmNsdWRlIDxnZXRvcHQuaD4KQEAgLTMzLDcgKzM0LDYgQEAgc3RhdGljIHZvaWQgcGFy
c2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgYXRleGl0KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJh
c2U6OnNodXRkb3duQWxsKTsKICAgICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsK
ICAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164556</attachid>
            <date>2012-09-18 07:24:13 -0700</date>
            <delta_ts>2012-09-19 01:12:54 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>15787</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjZmFjNmNlLi4wNDhjOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTggIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBh
ZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAg
ICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBp
biB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZy
YW1ld29yayBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tU
ZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVudCB3ZWJ2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICBCZWZv
cmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAgICAgIFVzZWQgdGhpcyB0
byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBUZWFyRG93biBpcyBjYWxsZWQgYXMgc29v
biBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAgVXNlZCB0aGlzIHRvIHByb3Blcmx5IHNo
dXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGlsbCB0ZXN0IHBhZ2Ug
d2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RC
YXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAgICAgICAqIHRlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6
OkVXS1Rlc3RWaWV3KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQp
OiBJbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgICogdGVzdHMvdGVz
dF9ld2tfdmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL3Rlc3Rf
cnVubmVyLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTEwICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQ3JlYXRl
IGEgdG9nZ2xlIGJ1dHRvbiBmb3IgY2xvc2VkIGNhcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCmluZGV4IDJkM2Uy
YWUuLjE4MTczNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29u
ZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0K
ICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIApAQCAtMzAsNzMgKzI3LDUy
IEBAIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5kb3c7CiAKIG5hbWVz
cGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjppbml0KCkKK0VXS1Rlc3RC
YXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3a1Rlc3RWaWV3KDApCiB7Ci0gICAgaWYgKCFl
Y29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGpl
X2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBj
aGFyKiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBw
cm94eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0K
LSAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitF
dmFzX09iamVjdCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7
Ci0KLSAgICB3aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQot
ICAgIHdoaWxlICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUg
KChjb3VudCA9IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RW
aWV3LT53ZWJWaWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpCit2b2lk
IEVXS1Rlc3RCYXNlOjpTZXRVcCgpCiB7Ci0gICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cisg
ICAgQVNTRVJUX0dUKGVjb3JlX2V2YXNfaW5pdCgpLCAwKTsKKyAgICBBU1NFUlRfR1QoZXdrX2lu
aXQoKSwgMCk7CisKKyAgICBjb25zdCBjaGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94
eSIpOworICAgIGlmIChwcm94eVVybCkKKyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3Nl
dChwcm94eVVybCk7CisKKyAgICBtX2V3a1Rlc3RWaWV3ID0gbmV3IEVXS1Rlc3RWaWV3KCk7CiB9
CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6VGVhckRv
d24oKQogewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgZGVsZXRlIG1fZXdrVGVz
dFZpZXc7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGV3a19zaHV0ZG93bigpOwog
fQogCi1ib29sIEVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAo
KmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIq
IGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lkIEVXS1Rlc3RCYXNlOjpvbkxvYWRG
aW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZv
KQogewotICAgIEVGTF9JTklUX1JFVCgpOwotCi0gICAgRVdLVGVzdEVjb3JlRXZhcyBldmFzKHVz
ZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGV2YXMuc2hvdygpOwotCi0gICAgRVdLVGVzdFZpZXcgdmlldyhldmFzLmV2YXMoKSwg
dXJsKTsKLSAgICBpZiAoIXZpZXcuaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEp
OwotICAgIHZpZXcuc2hvdygpOwotCi0gICAgU1RBUlRfVEVTVCgpOwotCi0gICAgcmV0dXJuIHRy
dWU7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6
cnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
KSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVz
dEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3Qo
Q29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVu
dF9kYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAi
bG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3Bf
YmVnaW4oKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAi
bG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6
cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2
YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9k
YXRhKQordm9pZCBFV0tUZXN0QmFzZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRf
ZGF0YSk7CisgICAgQVNTRVJUX1RSVUUobV9ld2tUZXN0Vmlldy0+aW5pdCh1c2VYMTFXaW5kb3cp
KTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7Cisg
ICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAppbmRleCBlYzc1MTMyLi5l
YjEwOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0QmFzZS5oCkBAIC0xOSw0OSArMTksMjkgQEAKICNpZm5kZWYgRVdLVGVzdEJhc2Vf
aAogI2RlZmluZSBFV0tUZXN0QmFzZV9oCiAKLSNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSAi
RVdLVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KIAotI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKLSAgICBkbyB7ICAg
IFwKLSAgICAgICAgQVNTRVJUX0VRKHRydWUsIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGFyZ3MpKTsg
ICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgU1RBUlRfVEVTVCgpICAgIFwKLSAgICBk
byB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpOyAgIFwKLSAgICB9IHdo
aWxlICgwKQotCi0jZGVmaW5lIEVORF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAgICAg
ICBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCi0gICAgfSB3aGlsZSAoMCkKK25hbWVzcGFjZSBF
V0tVbml0VGVzdHMgewogCi0jZGVmaW5lIEVGTF9JTklUX1JFVCgpICBcCi0gICAgZG8geyAgICBc
Ci0gICAgICAgIGlmICghRVdLVGVzdEJhc2U6OmluaXQoKSkgICBcCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7ICAgIFwKLSAgICB9IHdoaWxlICgwKQorY2xhc3MgRVdLVGVzdEJhc2U6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93
OwogCi0jZGVmaW5lIEVGTF9JTklUKCkgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVz
dEJhc2U6OmluaXQoKTsgICAgXAotICAgIH0gd2hpbGUgKDApCisgICAgc3RhdGljIHZvaWQgb25M
b2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50
SW5mbyk7CiAKLW5hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworICAgIEV2YXNfT2JqZWN0KiB3ZWJW
aWV3KCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3MgRVdLVGVzdEJh
c2UgewotICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgq
ZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciog
ZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wg
aW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3RhdGljIHZvaWQg
c3RhcnRUZXN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAgc3RhdGljIGJv
b2wgcnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCos
IEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmlu
aXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2
b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3Qg
Y2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDAp
OworICAgIHZvaWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRlZmF1bHRUZXN0
UGFnZSk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIHN0YXRpYyBp
bnQgdXNlWDExV2luZG93OworICAgIEVXS1Rlc3RWaWV3KiBtX2V3a1Rlc3RWaWV3OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rl
c3RWaWV3LmNwcAppbmRleCBmZDI5YjgxLi40OWQ1MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcApAQCAtMTksMTMw
ICsxOSw1MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RWaWV3Lmgi
CiAKLSNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktpdC5oPgotCisj
aW5jbHVkZSA8d3RmL051bGxQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3Jl
RXZhcyhpbnQgdXNlWDExV2luZG93KQorRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAg
ICBpZiAodXNlWDExV2luZG93KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3Jl
X2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZh
dWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9w
dFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25m
aWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RF
Y29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmll
d3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRy
YV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQg
dXNlWDExV2luZG93LCBFd2tWaWV3VHlwZSB0ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhl
aWdodCkKIHsKKyAgICBtX3dlYlZpZXcgPSBudWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRv
dykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVf
bmFtZSwgdmlld3BvcnRfeCwgdmlld3BvcnRfeSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0
cmFfb3B0aW9ucykpOworICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNf
bmV3KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNv
cmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdw
b3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVzdEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYg
KG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29y
ZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6
OnNob3coKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZh
c19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3
KEV2YXMqIGV2YXMpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKENvbmZpZzo6ZGVm
YXVsdFRlc3RQYWdlKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwg
bV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6
OmRlZmF1bHRWaWV3SGVpZ2h0KQotewotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZh
cyogZXZhcywgY29uc3QgY2hhciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3Vy
bCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRo
KENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVs
dFZpZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFz
LCBFd2tWaWV3VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykK
LSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBt
X3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6
ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19CisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIo
ZWNvcmVfZXZhc19idWZmZXJfbmV3KHdpZHRoLCBoZWlnaHQpKTsKIAotRVdLVGVzdFZpZXc6OkVX
S1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1
cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkK
LSAgICAsIG1faGVpZ2h0KGhlaWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlm
ICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVF
dmFzLmdldCgpKTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMu
Z2V0KCkpOworICAgIGlmICghZXZhcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dp
dGNoIChtX2RlZmF1bHRWaWV3VHlwZSkgeworICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAg
ICAgY2FzZSBTaW5nbGVWaWV3OgotICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmll
d19zaW5nbGVfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tf
dmlld19zaW5nbGVfYWRkKGV2YXMpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVk
VmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfdGlsZWRfYWRkKG1f
ZXZhcykpOworICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQo
ZXZhcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQo
KSkKKyAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdr
X3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5nZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRo
KTsKLSAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7
Ci19CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNob3coKQotewotICAgIGlmICghbV93ZWJWaWV3Lmdl
dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5n
ZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZp
ZXcuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwogICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3
LmdldCgpKTsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5B
X1RSVUUpOwotfQotCi1FdmFzX09iamVjdCogRVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0g
ICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21h
aW5fZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rl
c3RWaWV3OjpldmFzKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1
cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQq
LCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIp
Ci17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwg
Y2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcu
Z2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHB0cik7CisgICAgZXZhc19vYmplY3RfZm9jdXNf
c2V0KG1fd2ViVmlldy5nZXQoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcu
aAppbmRleCA2ZDE1ZDBkLi5hYjgzMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCkBAIC0xOSw1NSArMTksMzIgQEAKICNp
Zm5kZWYgRVdLVGVzdFZpZXdfaAogI2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJF
V0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMu
aD4KLSNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8UmVmUHRyRWZsLmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVz
dEVjb3JlRXZhcyB7Ci1wdWJsaWM6Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2lu
ZG93KTsKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQg
dmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRf
aCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdyk7Ci0KLSAgICBF
dmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPEVj
b3JlX0V2YXM+IG1fZWNvcmVFdmFzOwotfTsKLQogY2xhc3MgRVdLVGVzdFZpZXcgewogcHVibGlj
OgogICAgIGVudW0gRXdrVmlld1R5cGUgewogICAgICAgICBTaW5nbGVWaWV3ID0gMCwKLSAgICAg
ICAgVGlsZWRWaWV3LAorICAgICAgICBUaWxlZFZpZXcKICAgICB9OwogCi0gICAgZXhwbGljaXQg
RVdLVGVzdFZpZXcoRXZhcyopOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1
cmwpOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJs
KTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBFV0tUZXN0VmlldygpOwogCiAgICAgRXZhc19P
YmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KLSAgICBFdmFzX09i
amVjdCogbWFpbkZyYW1lKCk7Ci0gICAgRXZhcyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwot
Ci0gICAgYm9vbCBpbml0KCk7Ci0gICAgdm9pZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjayko
dm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQq
IHB0cik7CiAKKyAgICBib29sIGluaXQoaW50IHVzZVgxMVdpbmRvdyA9IDAsIEV3a1ZpZXdUeXBl
IHRlc3RWaWV3VHlwZSA9IFRpbGVkVmlldywgaW50IHdpZHRoID0gQ29uZmlnOjpkZWZhdWx0Vmll
d1dpZHRoLCBpbnQgaGVpZ2h0ID0gQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCk7CiBwcml2YXRl
OgogICAgIEVXS1Rlc3RWaWV3KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0gICAgRVdLVGVzdFZpZXcg
b3BlcmF0b3I9KGNvbnN0IEVXS1Rlc3RWaWV3Jik7CisgICAgRVdLVGVzdFZpZXcmIG9wZXJhdG9y
PShjb25zdCBFV0tUZXN0VmlldyYpOwogCi0gICAgRXZhcyogbV9ldmFzOwotICAgIE93blB0cjxF
dmFzX09iamVjdD4gbV93ZWJWaWV3OwotCi0gICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwotICAg
IEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwotICAgIHN0ZDo6c3RyaW5nIG1fdXJsOwor
ICAgIE93blB0cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZhczsKKyAgICBSZWZQdHI8RXZhc19PYmpl
Y3Q+IG1fd2ViVmlldzsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL3Rlc3RfZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tf
dmlldy5jcHAKaW5kZXggMmQ0OTA3OS4uNzZiYmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvdGVzdF9ld2tfdmlldy5jcHAKQEAgLTE5LDM2ICsxOSwzMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIgorI2luY2x1ZGUg
IlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0
aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBld2tW
aWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBk
YXRhKQotewotICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChvLCBFSU5BX0ZBTFNFKTsKLSAgICBF
WFBFQ1RfRVEoRUlOQV9GQUxTRSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KG8pKTsKLSAgICBFTkRf
VEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X2VkaXRhYmxlX2dldCkK
K1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQogewotICAgIFJVTl9U
RVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgZXdrX3ZpZXdf
ZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgZmFsc2UpOworICAgIEFTU0VSVF9GQUxTRShld2tfdmll
d19lZGl0YWJsZV9nZXQod2ViVmlldygpKSk7CiB9CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcg
d2hldGhlciBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3QgdXJpIHN0cmluZy4KICovCi1zdGF0aWMg
dm9pZCBld2tWaWV3VXJpR2V0Q2Iodm9pZCogZXZlbnRJbmZvLCBFdmFzX09iamVjdCogbywgdm9p
ZCogZGF0YSkKLXsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iLCBl
d2tfdmlld191cmlfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdr
X3ZpZXcsIGV3a192aWV3X3VyaV9nZXQpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3Vy
aV9nZXQpCiB7Ci0gICAgUlVOX1RFU1QoImh0dHA6Ly93d3cud2Via2l0Lm9yZyIsIGV3a1ZpZXdV
cmlHZXRDYik7CisgICAgbG9hZFVybCgpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld191cmlf
Z2V0KHdlYlZpZXcoKSksIENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAppbmRleCA3MDJhNjFmLi45ZTU1OWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0xNiw2ICsxNiw4IEBACiAgICAg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV
U0EKICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaCIKICNpbmNsdWRlIDxnZXRvcHQuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgpAQCAtMzMsNyArMzUsNiBAQCBzdGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
IHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6c2h1dGRvd25BbGwpOwog
ICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOwogICAgIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164685</attachid>
            <date>2012-09-19 01:12:54 -0700</date>
            <delta_ts>2012-09-19 06:28:56 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>15747</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA1ZGVlMzE3Li42Yjk1MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTggIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBh
ZGp1c3QgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAg
ICAgcmVsYXRlZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBp
biB0ZXJtcyBvZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZy
YW1ld29yayBlYXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tU
ZXN0QmFzZSk6IEFkZGVkIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3VycmVudCB3ZWJ2aWV3Lgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICBCZWZv
cmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAgICAgIFVzZWQgdGhpcyB0
byBpbml0aWFsaXplIGVmbCBhbmQgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICBUZWFyRG93biBpcyBjYWxsZWQgYXMgc29v
biBhcyB0ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICAgVXNlZCB0aGlzIHRvIHByb3Blcmx5IHNo
dXRkb3duIGVmbCBhbmQgY2xlYW4gdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGlsbCB0ZXN0IHBhZ2Ug
d2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RC
YXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAgICAgICAqIHRlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcDoKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6
OkVXS1Rlc3RWaWV3KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdFZpZXc6OmluaXQp
OiBJbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgICogdGVzdHMvdGVz
dF9ld2tfdmlldy5jcHA6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL3Rlc3Rf
cnVubmVyLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTEzICBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBFdmFzX09iamVj
dCogaXMgYSByZWYnZWQgc3RydWN0dXJlLCBzbyB0cmVhZCBpdCBhcyBzdWNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCmlu
ZGV4IDJkM2UyYWUuLjE4MTczNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJF
V0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKICNpbmNsdWRlIDxFV2Vi
S2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIApAQCAtMzAs
NzMgKzI3LDUyIEBAIGludCBFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5kb3c7
CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjppbml0KCkK
K0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCisgICAgOiBtX2V3a1Rlc3RWaWV3KDApCiB7Ci0g
ICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAg
ICBjb25zdCBjaGFyKiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYg
KHJldCAmJiBwcm94eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94
eVVyaSk7Ci0KLSAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93
bkFsbCgpCitFdmFzX09iamVjdCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBj
b3VudCA9IDA7Ci0KLSAgICB3aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+
IDApIHsgfQotICAgIHdoaWxlICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0g
ICAgd2hpbGUgKChjb3VudCA9IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBt
X2V3a1Rlc3RWaWV3LT53ZWJWaWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnN0YXJ0VGVz
dCgpCit2b2lkIEVXS1Rlc3RCYXNlOjpTZXRVcCgpCiB7Ci0gICAgZWNvcmVfbWFpbl9sb29wX2Jl
Z2luKCk7CisgICAgQVNTRVJUX0dUKGVjb3JlX2V2YXNfaW5pdCgpLCAwKTsKKyAgICBBU1NFUlRf
R1QoZXdrX2luaXQoKSwgMCk7CisKKyAgICBjb25zdCBjaGFyKiBwcm94eVVybCA9IGdldGVudigi
aHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkKKyAgICAgICAgZXdrX25ldHdvcmtfcHJv
eHlfdXJpX3NldChwcm94eVVybCk7CisKKyAgICBtX2V3a1Rlc3RWaWV3ID0gbmV3IEVXS1Rlc3RW
aWV3KCk7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFz
ZTo6VGVhckRvd24oKQogewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgZGVsZXRl
IG1fZXdrVGVzdFZpZXc7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGV3a19zaHV0
ZG93bigpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVy
bCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNv
bnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lkIEVXS1Rlc3RCYXNl
OjpvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCog
ZXZlbnRJbmZvKQogewotICAgIEVGTF9JTklUX1JFVCgpOwotCi0gICAgRVdLVGVzdEVjb3JlRXZh
cyBldmFzKHVzZVgxMVdpbmRvdyk7Ci0gICAgaWYgKCFldmFzLmV2YXMoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGV2YXMuc2hvdygpOwotCi0gICAgRVdLVGVzdFZpZXcgdmlldyhldmFz
LmV2YXMoKSwgdXJsKTsKLSAgICBpZiAoIXZpZXcuaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2
ZW50X2RhdGEpOwotICAgIHZpZXcuc2hvdygpOwotCi0gICAgU1RBUlRfVEVTVCgpOwotCi0gICAg
cmV0dXJuIHRydWU7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKIH0KIAotYm9vbCBFV0tU
ZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3Zv
aWQgRVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9u
YW1lLCBldmVudF9kYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2Vi
VmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9t
YWluX2xvb3BfYmVnaW4oKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9hZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tU
ZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjayko
dm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lk
KiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFt
ZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RSVUUobV9ld2tUZXN0Vmlldy0+aW5pdCh1c2VY
MTFXaW5kb3cpKTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwg
dXJsKSk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAppbmRleCBl
Yzc1MTMyLi5lYjEwOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCkBAIC0xOSw0OSArMTksMjkgQEAKICNpZm5kZWYgRVdL
VGVzdEJhc2VfaAogI2RlZmluZSBFV0tUZXN0QmFzZV9oCiAKLSNpbmNsdWRlIDxFdmFzLmg+Cisj
aW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAotI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKLSAg
ICBkbyB7ICAgIFwKLSAgICAgICAgQVNTRVJUX0VRKHRydWUsIEVXS1Rlc3RCYXNlOjpydW5UZXN0
KGFyZ3MpKTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgU1RBUlRfVEVTVCgpICAg
IFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpOyAgIFwK
LSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIEVORF9URVNUKCkgICAgXAotICAgIGRvIHsgICAg
XAotICAgICAgICBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCi0gICAgfSB3aGlsZSAoMCkKK25h
bWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi0jZGVmaW5lIEVGTF9JTklUX1JFVCgpICBcCi0gICAg
ZG8geyAgICBcCi0gICAgICAgIGlmICghRVdLVGVzdEJhc2U6OmluaXQoKSkgICBcCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7ICAgIFwKLSAgICB9IHdoaWxlICgwKQorY2xhc3MgRVdLVGVzdEJh
c2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHN0YXRpYyBpbnQgdXNl
WDExV2luZG93OwogCi0jZGVmaW5lIEVGTF9JTklUKCkgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAg
ICAgRVdLVGVzdEJhc2U6OmluaXQoKTsgICAgXAotICAgIH0gd2hpbGUgKDApCisgICAgc3RhdGlj
IHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZv
aWQqIGV2ZW50SW5mbyk7CiAKLW5hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworICAgIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3KCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotY2xhc3Mg
RVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJs
LCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29u
c3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAgc3Rh
dGljIHZvaWQgc3RhcnRUZXN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwogCi0gICAg
c3RhdGljIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFj
aykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0g
ImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGljIGJvb2wg
cnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
KSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRf
ZGF0YSA9IDApOworICAgIHZvaWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25maWc6OmRl
ZmF1bHRUZXN0UGFnZSk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAg
IHN0YXRpYyBpbnQgdXNlWDExV2luZG93OworICAgIEVXS1Rlc3RWaWV3KiBtX2V3a1Rlc3RWaWV3
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RWaWV3LmNwcAppbmRleCBkYmIwMDkyLi4xMmQ0MjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcApA
QCAtMTksMTMxICsxOSw1MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rl
c3RWaWV3LmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktp
dC5oPgotCisjaW5jbHVkZSA8d3RmL051bGxQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7
CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoaW50IHVzZVgxMVdpbmRvdykK
K0VXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldygpCiB7Ci0gICAgaWYgKHVzZVgxMVdpbmRvdykKLSAg
ICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCBDb25m
aWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQsIDApKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJf
bmV3KENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkp
OwogfQogCi1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVu
Z2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93
LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdp
bmRvdykKK2Jvb2wgRVdLVGVzdFZpZXc6OmluaXQoaW50IHVzZVgxMVdpbmRvdywgRXdrVmlld1R5
cGUgdGVzdFZpZXdUeXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CisgICAgbV93ZWJWaWV3
ID0gbnVsbHB0cjsKKwogICAgIGlmICh1c2VYMTFXaW5kb3cpCi0gICAgICAgIG1fZWNvcmVFdmFz
ID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoZW5naW5lX25hbWUsIHZpZXdwb3J0X3gsIHZpZXdw
b3J0X3ksIHZpZXdwb3J0X3csIHZpZXdwb3J0X2gsIGV4dHJhX29wdGlvbnMpKTsKKyAgICAgICAg
bV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCAwKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3Jl
X2V2YXNfYnVmZmVyX25ldyh2aWV3cG9ydF94LCB2aWV3cG9ydF95KSk7Ci19Ci0KLUV2YXMqIEVX
S1Rlc3RFY29yZUV2YXM6OmV2YXMoKQotewotICAgIGlmIChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsKLSAgICByZXR1
cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0RWNvcmVFdmFzOjpzaG93KCkKLXsKLSAgICBpZiAobV9l
Y29yZUV2YXMuZ2V0KCkpCi0gICAgICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcy5nZXQo
KSk7Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzKQotICAgIDogbV9l
dmFzKGV2YXMpCi0gICAgLCBtX3VybChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSkKLSAgICAsIG1f
ZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0
Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsK
LX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIGNvbnN0IGNoYXIqIHVy
bCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0
Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lk
dGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQotewotfQotCi1F
V0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlwZSwgY29u
c3QgY2hhciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAg
LCBtX2RlZmF1bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRW
aWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQotewot
fQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfYnVmZmVyX25ldyh3
aWR0aCwgaGVpZ2h0KSk7CiAKLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBF
d2tWaWV3VHlwZSB0eXBlLCBjb25zdCBjaGFyKiB1cmwsIGludCB3aWR0aCwgaW50IGhlaWdodCkK
LSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmll
d1R5cGUodHlwZSkKLSAgICAsIG1fd2lkdGgod2lkdGgpCi0gICAgLCBtX2hlaWdodChoZWlnaHQp
Ci17Ci19CisgICAgaWYgKCFtX2Vjb3JlRXZhcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1i
b29sIEVXS1Rlc3RWaWV3Ojppbml0KCkKLXsKLSAgICBpZiAoIW1fZXZhcyB8fCBtX3VybC5lbXB0
eSgpKQorICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcy5nZXQoKSk7CisgICAgRXZhcyog
ZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsKKyAgICBpZiAoIWV2YXMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAobV9kZWZhdWx0Vmlld1R5cGUp
IHsKKyAgICBzd2l0Y2ggKHRlc3RWaWV3VHlwZSkgewogICAgIGNhc2UgU2luZ2xlVmlldzoKLSAg
ICAgICAgbV93ZWJWaWV3ID0gYWRvcHRSZWYoZXdrX3ZpZXdfc2luZ2xlX2FkZChtX2V2YXMpKTsK
KyAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHRSZWYoZXdrX3ZpZXdfc2luZ2xlX2FkZChldmFzKSk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUaWxlZFZpZXc6Ci0gICAgICAgIG1fd2ViVmll
dyA9IGFkb3B0UmVmKGV3a192aWV3X3RpbGVkX2FkZChtX2V2YXMpKTsKKyAgICAgICAgbV93ZWJW
aWV3ID0gYWRvcHRSZWYoZXdrX3ZpZXdfdGlsZWRfYWRkKGV2YXMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgaWYgKCFtX3dlYlZpZXcp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGV3a192aWV3X3RoZW1lX3NldChtX3dlYlZp
ZXcuZ2V0KCksIENvbmZpZzo6ZGVmYXVsdFRoZW1lUGF0aCk7Ci0gICAgZXdrX3ZpZXdfdXJpX3Nl
dChtX3dlYlZpZXcuZ2V0KCksIG1fdXJsLmNfc3RyKCkpOwotfQogCi12b2lkIEVXS1Rlc3RWaWV3
OjpzaG93KCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIG1fd2lkdGgsIG1faGVpZ2h0
KTsKKyAgICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCB3aWR0aCwgaGVpZ2h0
KTsKICAgICBldmFzX29iamVjdF9zaG93KG1fd2ViVmlldy5nZXQoKSk7CiAgICAgZXZhc19vYmpl
Y3RfZm9jdXNfc2V0KG1fd2ViVmlldy5nZXQoKSwgRUlOQV9UUlVFKTsKLX0KLQotRXZhc19PYmpl
Y3QqIEVXS1Rlc3RWaWV3OjptYWluRnJhbWUoKQotewotICAgIGlmIChtX3dlYlZpZXcuZ2V0KCkp
Ci0gICAgICAgIHJldHVybiBld2tfdmlld19mcmFtZV9tYWluX2dldChtX3dlYlZpZXcuZ2V0KCkp
OwotICAgIHJldHVybiAwOwotfQotCi1FdmFzKiBFV0tUZXN0Vmlldzo6ZXZhcygpCi17Ci0gICAg
aWYgKG1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGV2YXNfb2JqZWN0X2V2YXNfZ2V0
KG1fd2ViVmlldy5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRVdLVGVzdFZpZXc6
OmJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiks
IGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRyKQotewotICAgIGlmICghbV93ZWJWaWV3
LmdldCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19kZWwobV93ZWJWaWV3LmdldCgpLCBldmVudE5hbWUsIGNhbGxiYWNrKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3LmdldCgpLCBldmVudE5hbWUsIGNhbGxi
YWNrLCBwdHIpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKaW5kZXggMWJkZDllZC4u
Yzk1NWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdFZpZXcuaApAQCAtMTksNTYgKzE5LDMyIEBACiAjaWZuZGVmIEVXS1Rlc3RWaWV3
X2gKICNkZWZpbmUgRVdLVGVzdFZpZXdfaAogCisjaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZWZsL1JlZlB0ckVm
bC5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotY2xhc3MgRVdLVGVzdEVjb3JlRXZh
cyB7Ci1wdWJsaWM6Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KTsKLSAg
ICBFV0tUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRf
eCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3Qg
Y2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdyk7Ci0KLSAgICBFdmFzKiBldmFz
KCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPEVjb3JlX0V2YXM+
IG1fZWNvcmVFdmFzOwotfTsKLQogY2xhc3MgRVdLVGVzdFZpZXcgewogcHVibGljOgogICAgIGVu
dW0gRXdrVmlld1R5cGUgewogICAgICAgICBTaW5nbGVWaWV3ID0gMCwKLSAgICAgICAgVGlsZWRW
aWV3LAorICAgICAgICBUaWxlZFZpZXcKICAgICB9OwogCi0gICAgZXhwbGljaXQgRVdLVGVzdFZp
ZXcoRXZhcyopOwotICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwpOwotICAg
IEVXS1Rlc3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsKTsKLSAgICBF
V0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKKyAgICBFV0tUZXN0VmlldygpOwogCiAgICAgRXZhc19PYmplY3QqIHdl
YlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcuZ2V0KCk7IH0KLSAgICBFdmFzX09iamVjdCogbWFp
bkZyYW1lKCk7Ci0gICAgRXZhcyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwotCi0gICAgYm9v
bCBpbml0KCk7Ci0gICAgdm9pZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2
YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cik7CiAK
KyAgICBib29sIGluaXQoaW50IHVzZVgxMVdpbmRvdyA9IDAsIEV3a1ZpZXdUeXBlIHRlc3RWaWV3
VHlwZSA9IFRpbGVkVmlldywgaW50IHdpZHRoID0gQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBp
bnQgaGVpZ2h0ID0gQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCk7CiBwcml2YXRlOgogICAgIEVX
S1Rlc3RWaWV3KGNvbnN0IEVXS1Rlc3RWaWV3Jik7Ci0gICAgRVdLVGVzdFZpZXcgb3BlcmF0b3I9
KGNvbnN0IEVXS1Rlc3RWaWV3Jik7CisgICAgRVdLVGVzdFZpZXcmIG9wZXJhdG9yPShjb25zdCBF
V0tUZXN0VmlldyYpOwogCi0gICAgRXZhcyogbV9ldmFzOworICAgIE93blB0cjxFY29yZV9FdmFz
PiBtX2Vjb3JlRXZhczsKICAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG1fd2ViVmlldzsKLQotICAg
IGludCBtX3dpZHRoLCBtX2hlaWdodDsKLSAgICBFd2tWaWV3VHlwZSBtX2RlZmF1bHRWaWV3VHlw
ZTsKLSAgICBzdGQ6OnN0cmluZyBtX3VybDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvdGVzdF9ld2tfdmlldy5jcHAKaW5kZXggMmQ0OTA3OS4uNDg4MWQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAKQEAgLTE5LDM2ICsxOSwzMCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5o
IgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVX
ZWJLaXQuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3
aGV0aGVyIGZ1bmN0aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0
aWMgdm9pZCBld2tWaWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBkYXRhKQotewotICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChvLCBFSU5BX0ZB
TFNFKTsKLSAgICBFWFBFQ1RfRVEoRUlOQV9GQUxTRSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KG8p
KTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X2Vk
aXRhYmxlX2dldCkKK1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQog
ewotICAgIFJVTl9URVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7Cisg
ICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgQVNT
RVJUX0ZBTFNFKGV3a192aWV3X2VkaXRhYmxlX2dldCh3ZWJWaWV3KCkpKTsKIH0KIAogLyoqCiAq
IEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdCB1cmkgc3Ry
aW5nLgogKi8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdVcmlHZXRDYih2b2lkKiBldmVudEluZm8sIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBkYXRhKQotewotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3
dy53ZWJraXQub3JnLyIsIGV3a192aWV3X3VyaV9nZXQobykpOwotICAgIEVORF9URVNUKCk7Ci19
Ci0KLVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfdXJpX2dldCkKK1RFU1RfRihFV0tUZXN0
QmFzZSwgZXdrX3ZpZXdfdXJpX2dldCkKIHsKLSAgICBSVU5fVEVTVCgiaHR0cDovL3d3dy53ZWJr
aXQub3JnIiwgZXdrVmlld1VyaUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgRVhQRUNUX1NU
UkVRKGV3a192aWV3X3VyaV9nZXQod2ViVmlldygpKSwgQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCmluZGV4IDcwMmE2MWYu
LjllNTU5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKQEAgLTE2
LDYgKzE2LDggQEAKICAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3IFVTQQogKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVk
ZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oIgogI2luY2x1ZGUgPGdldG9wdC5oPgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0zMyw3ICszNSw2IEBAIHN0YXRpYyB2b2lkIHBhcnNl
Q3VzdG9tQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogewotICAgIGF0ZXhpdChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNl
OjpzaHV0ZG93bkFsbCk7CiAgICAgcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJndik7CiAg
ICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgICAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsK
</data>
<flag name="review"
          id="176525"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164727</attachid>
            <date>2012-09-19 06:28:56 -0700</date>
            <delta_ts>2012-09-28 02:12:43 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>15743</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA1ZGVlMzE3Li4yZWUwZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTggIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bVVRdIFJlZmFjdG9yaW5nIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRlc3RpbmcgZnJhbWV3b3JrIGZvciB3azEuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KKworICAgICAgICBUaGUgcmVhc29uIG9mIGNoYW5naW5nLCB3YXMgdG8gYWRq
dXN0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGd0ZXN0IGZlYXR1cmVzCisgICAgICAg
IHJlbGF0ZWQgdG8gY2xlYW5pbmcgKFNldFVwLCBUZWFyRG93biksIGNsZWFuaW5nIGNvZGUgaW4g
dGVybXMgb2YgdXNlbGVzcyBtZXRob2RzCisgICAgICAgIGFuZCBsYXN0bHkgdG8gbWFrZSBmcmFt
ZXdvcmsgZWFzaWVyIHRvIHVzZS4KKworICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6RVdLVGVz
dEJhc2UpOiBBZGRlZCB0byBpbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdEJhc2U6OndlYlZpZXcpOiBSZXR1cm5zIGN1cnJlbnQgd2Vidmlldy4KKyAg
ICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgQmVmb3Jl
IHRlc3QgaXMgc3RhcnRlZCwgU2V0VXAgaXMgY2FsbGVkLgorICAgICAgICBVc2VkIHRoaXMgdG8g
aW5pdGlhbGl6ZSBlZmwgYW5kIHRlc3Qgdmlldy4KKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdEJhc2U6OlRlYXJEb3duKToKKyAgICAgICAgVGVhckRvd24gaXMgY2FsbGVkIGFzIHNvb24g
YXMgdGVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAgIFVzZWQgdGhpcyB0byBwcm9wZXJseSBzaHV0
ZG93biBlZmwgYW5kIGNsZWFuIHRlc3Qgdmlldy4KKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVz
dEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6IEl0IHdhaXRzIHRpbGwgdGVzdCBwYWdlIHdp
bGwgYmUgcHJvcGVybHkgbG9hZGVkLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFz
ZTo6bG9hZFVybCk6IFN0YXJ0cyBsb2FkaW5nIHRlc3QgcGFnZS4KKyAgICAgICAgKiB0ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpF
V0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KTog
SW5pdGlhbGl6ZSB0ZXN0IHZpZXcuCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0Vmlldy5oOgorICAgICAgICAoRVdLVGVzdFZpZXcpOgorICAgICAgICAqIHRlc3RzL3Rlc3Rf
ZXdrX3ZpZXcuY3BwOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy90ZXN0X3J1
bm5lci5jcHA6CisgICAgICAgIChtYWluKToKKwogMjAxMi0wOS0xMyAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXZhc19PYmplY3Qq
IGlzIGEgcmVmJ2VkIHN0cnVjdHVyZSwgc28gdHJlYWQgaXQgYXMgc3VjaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAppbmRl
eCAyZDNlMmFlLi4xODE3MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcApAQCAtMTksMTAgKzE5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0QmFzZS5oIgogCi0jaW5jbHVkZSAiRVdL
VGVzdENvbmZpZy5oIgotI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8RVdlYktp
dC5oPgotCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFZGplLmg+CiAKQEAgLTMwLDcz
ICsyNyw1MiBAQCBpbnQgRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6dXNlWDExV2luZG93Owog
CiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotYm9vbCBFV0tUZXN0QmFzZTo6aW5pdCgpCitF
V0tUZXN0QmFzZTo6RVdLVGVzdEJhc2UoKQorICAgIDogbV9ld2tUZXN0VmlldygwKQogewotICAg
IGlmICghZWNvcmVfZXZhc19pbml0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
ICghZWRqZV9pbml0KCkpIHsKLSAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaW50IHJldCA9IGV3a19pbml0KCk7Ci0gICAg
Y29uc3QgY2hhciogcHJveHlVcmkgPSBnZXRlbnYoImh0dHBfcHJveHkiKTsKLQotICAgIGlmIChy
ZXQgJiYgcHJveHlVcmkpCi0gICAgICAgIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9zZXQocHJveHlV
cmkpOwotCi0gICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c2h1dGRvd25B
bGwoKQorRXZhc19PYmplY3QqIEVXS1Rlc3RCYXNlOjp3ZWJWaWV3KCkKIHsKLSAgICBpbnQgY291
bnQgPSAwOwotCi0gICAgd2hpbGUgKChjb3VudCA9IGVjb3JlX2V2YXNfc2h1dGRvd24oKSkgPiAw
KSB7IH0KLSAgICB3aGlsZSAoKGNvdW50ID0gZWRqZV9zaHV0ZG93bigpKSA+IDApIHsgfQotICAg
IHdoaWxlICgoY291bnQgPSBld2tfc2h1dGRvd24oKSkgPiAwKSB7IH0KKyAgICByZXR1cm4gbV9l
d2tUZXN0Vmlldy0+d2ViVmlldygpOwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3Qo
KQordm9pZCBFV0tUZXN0QmFzZTo6U2V0VXAoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdp
bigpOworICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CisgICAgQVNTRVJUX0dU
KGV3a19pbml0KCksIDApOworCisgICAgY29uc3QgY2hhciogcHJveHlVcmwgPSBnZXRlbnYoImh0
dHBfcHJveHkiKTsKKyAgICBpZiAocHJveHlVcmwpCisgICAgICAgIGV3a19uZXR3b3JrX3Byb3h5
X3VyaV9zZXQocHJveHlVcmwpOworCisgICAgbV9ld2tUZXN0VmlldyA9IG5ldyBFV0tUZXN0Vmll
dygpOwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjplbmRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJhc2U6
OlRlYXJEb3duKCkKIHsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIGRlbGV0ZSBt
X2V3a1Rlc3RWaWV3OworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICBld2tfc2h1dGRv
d24oKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6Y3JlYXRlVGVzdChjb25zdCBjaGFyKiB1cmws
IHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6
b25Mb2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2
ZW50SW5mbykKIHsKLSAgICBFRkxfSU5JVF9SRVQoKTsKLQotICAgIEVXS1Rlc3RFY29yZUV2YXMg
ZXZhcyh1c2VYMTFXaW5kb3cpOwotICAgIGlmICghZXZhcy5ldmFzKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBldmFzLnNob3coKTsKLQotICAgIEVXS1Rlc3RWaWV3IHZpZXcoZXZhcy5l
dmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3LmluaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgdmlldy5iaW5kRXZlbnRzKGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVu
dF9kYXRhKTsKLSAgICB2aWV3LnNob3coKTsKLQotICAgIFNUQVJUX1RFU1QoKTsKLQotICAgIHJl
dHVybiB0cnVlOworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CiB9CiAKLWJvb2wgRVdLVGVz
dEJhc2U6OnJ1blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lk
IEVXS1Rlc3RCYXNlOjp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQogewotICAgIHJldHVybiBjcmVh
dGVUZXN0KENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFt
ZSwgZXZlbnRfZGF0YSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZp
ZXcoKSwgImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCwgMCk7CisgICAgZWNvcmVfbWFp
bl9sb29wX2JlZ2luKCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZp
ZXcoKSwgImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hlZCk7CiB9CiAKLWJvb2wgRVdLVGVz
dEJhc2U6OnJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCog
ZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6OmxvYWRVcmwoY29uc3QgY2hhciogdXJsKQog
ewotICAgIHJldHVybiBjcmVhdGVUZXN0KHVybCwgZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUs
IGV2ZW50X2RhdGEpOworICAgIEFTU0VSVF9UUlVFKG1fZXdrVGVzdFZpZXctPmluaXQodXNlWDEx
V2luZG93KSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVy
bCkpOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKaW5kZXggZWM3
NTEzMi4uZWIxMDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdEJhc2UuaApAQCAtMTksNDkgKzE5LDI5IEBACiAjaWZuZGVmIEVXS1Rl
c3RCYXNlX2gKICNkZWZpbmUgRVdLVGVzdEJhc2VfaAogCi0jaW5jbHVkZSA8RXZhcy5oPgorI2lu
Y2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKKyNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgogI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNkZWZpbmUgUlVOX1RFU1QoYXJncy4uLikgICBcCi0gICAg
ZG8geyAgICBcCi0gICAgICAgIEFTU0VSVF9FUSh0cnVlLCBFV0tUZXN0QmFzZTo6cnVuVGVzdChh
cmdzKSk7ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBc
Ci0gICAgZG8geyAgICBcCi0gICAgICAgIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKTsgICBcCi0g
ICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBFTkRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwK
LSAgICAgICAgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKTsgXAotICAgIH0gd2hpbGUgKDApCituYW1l
c3BhY2UgRVdLVW5pdFRlc3RzIHsKIAotI2RlZmluZSBFRkxfSU5JVF9SRVQoKSAgXAotICAgIGRv
IHsgICAgXAotICAgICAgICBpZiAoIUVXS1Rlc3RCYXNlOjppbml0KCkpICAgXAotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKK2NsYXNzIEVXS1Rlc3RCYXNl
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW50IHVzZVgx
MVdpbmRvdzsKIAotI2RlZmluZSBFRkxfSU5JVCgpICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjppbml0KCk7ICAgIFwKLSAgICB9IHdoaWxlICgwKQorICAgIHN0YXRpYyB2
b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lk
KiBldmVudEluZm8pOwogCi1uYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKKyAgICBFdmFzX09iamVj
dCogd2ViVmlldygpOworcHJvdGVjdGVkOgorICAgIEVXS1Rlc3RCYXNlKCk7CiAKLWNsYXNzIEVX
S1Rlc3RCYXNlIHsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwg
dm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0
IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOwotcHVibGljOgotICAgIHN0YXRp
YyBib29sIGluaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bkFsbCgpOwotICAgIHN0YXRp
YyB2b2lkIHN0YXJ0VGVzdCgpOwotICAgIHN0YXRpYyB2b2lkIGVuZFRlc3QoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKTsKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKIAotICAgIHN0
YXRpYyBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2sp
KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJs
b2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwotICAgIHN0YXRpYyBib29sIHJ1
blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiks
IGNvbnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2Rh
dGEgPSAwKTsKKyAgICB2b2lkIGxvYWRVcmwoY29uc3QgY2hhciogdXJsID0gQ29uZmlnOjpkZWZh
dWx0VGVzdFBhZ2UpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBz
dGF0aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyogbV9ld2tUZXN0VmlldzsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0tUZXN0Vmlldy5jcHAKaW5kZXggZGJiMDA5Mi4uMTJkNDI1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKQEAg
LTE5LDEzMSArMTksNTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFV0tUZXN0
Vmlldy5oIgogCi0jaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUgPEVXZWJLaXQu
aD4KLQorI2luY2x1ZGUgPHd0Zi9OdWxsUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewog
Ci1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpCitF
V0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoKQogewotICAgIGlmICh1c2VYMTFXaW5kb3cpCi0gICAg
ICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgQ29uZmln
OjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0LCAwKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfYnVmZmVyX25l
dyhDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpKTsK
IH0KIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhjb25zdCBjaGFyKiBlbmdp
bmVfbmFtZSwgaW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBpbnQgdmlld3BvcnRfdywg
aW50IHZpZXdwb3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMsIGludCB1c2VYMTFXaW5k
b3cpCitib29sIEVXS1Rlc3RWaWV3Ojppbml0KGludCB1c2VYMTFXaW5kb3csIEV3a1ZpZXdUeXBl
IHRlc3RWaWV3VHlwZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIG1fd2ViVmlldyA9
IG51bGxwdHI7CisKICAgICBpZiAodXNlWDExV2luZG93KQotICAgICAgICBtX2Vjb3JlRXZhcyA9
IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2luZV9uYW1lLCB2aWV3cG9ydF94LCB2aWV3cG9y
dF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBleHRyYV9vcHRpb25zKSk7CisgICAgICAgIG1f
ZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgd2lkdGgsIGhlaWdo
dCwgMCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9l
dmFzX2J1ZmZlcl9uZXcodmlld3BvcnRfeCwgdmlld3BvcnRfeSkpOwotfQotCi1FdmFzKiBFV0tU
ZXN0RWNvcmVFdmFzOjpldmFzKCkKLXsKLSAgICBpZiAobV9lY29yZUV2YXMuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLXZvaWQgRVdLVGVzdEVjb3JlRXZhczo6c2hvdygpCi17Ci0gICAgaWYgKG1fZWNv
cmVFdmFzLmdldCgpKQotICAgICAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMuZ2V0KCkp
OwotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcykKLSAgICA6IG1fZXZh
cyhldmFzKQotICAgICwgbV91cmwoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpCi0gICAgLCBtX2Rl
ZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZp
ZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19
Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBjb25zdCBjaGFyKiB1cmwp
Ci0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZp
ZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRo
KQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsKLX0KLQotRVdL
VGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwodXJsKQotICAgICwg
bV9kZWZhdWx0Vmlld1R5cGUodHlwZSkKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmll
d1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsKLX0K
KyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcod2lk
dGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgRXdr
Vmlld1R5cGUgdHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0g
ICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVmYXVsdFZpZXdU
eXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICwgbV9oZWlnaHQoaGVpZ2h0KQot
ewotfQorICAgIGlmICghbV9lY29yZUV2YXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotYm9v
bCBFV0tUZXN0Vmlldzo6aW5pdCgpCi17Ci0gICAgaWYgKCFtX2V2YXMgfHwgbV91cmwuZW1wdHko
KSkKKyAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOworICAgIEV2YXMqIGV2
YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7CisgICAgaWYgKCFldmFzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKG1fZGVmYXVsdFZpZXdUeXBlKSB7
CisgICAgc3dpdGNoICh0ZXN0Vmlld1R5cGUpIHsKICAgICBjYXNlIFNpbmdsZVZpZXc6Ci0gICAg
ICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3NpbmdsZV9hZGQobV9ldmFzKSk7Cisg
ICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3NpbmdsZV9hZGQoZXZhcykpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGlsZWRWaWV3OgotICAgICAgICBtX3dlYlZpZXcg
PSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQobV9ldmFzKSk7CisgICAgICAgIG1fd2ViVmll
dyA9IGFkb3B0UmVmKGV3a192aWV3X3RpbGVkX2FkZChldmFzKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgIGlmICghbV93ZWJWaWV3KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBld2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3
LmdldCgpLCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3a192aWV3X3VyaV9zZXQo
bV93ZWJWaWV3LmdldCgpLCBtX3VybC5jX3N0cigpKTsKLX0KIAotdm9pZCBFV0tUZXN0Vmlldzo6
c2hvdygpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBtX2hlaWdodCk7
CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgd2lkdGgsIGhlaWdodCk7
CiAgICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwogICAgIGV2YXNfb2JqZWN0
X2ZvY3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19Ci0KLUV2YXNfT2JqZWN0
KiBFV0tUZXN0Vmlldzo6bWFpbkZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQot
ICAgICAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93ZWJWaWV3LmdldCgpKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotRXZhcyogRVdLVGVzdFZpZXc6OmV2YXMoKQotewotICAgIGlm
IChtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybiBldmFzX29iamVjdF9ldmFzX2dldCht
X3dlYlZpZXcuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RWaWV3Ojpi
aW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBj
b25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cikKLXsKLSAgICBpZiAoIW1fd2ViVmlldy5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
ZGVsKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFj
aywgcHRyKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oIGIvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCmluZGV4IDFiZGQ5ZWQuLmM5
NTVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU2ICsxOSwzMiBAQAogI2lmbmRlZiBFV0tUZXN0Vmlld19o
CiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKICNp
bmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9SZWZQdHJFZmwu
aD4KIAogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNsYXNzIEVXS1Rlc3RFY29yZUV2YXMg
ewotcHVibGljOgotICAgIEVXS1Rlc3RFY29yZUV2YXMoaW50IHVzZVgxMVdpbmRvdyk7Ci0gICAg
RVdLVGVzdEVjb3JlRXZhcyhjb25zdCBjaGFyKiBlbmdpbmVfbmFtZSwgaW50IHZpZXdwb3J0X3gs
IGludCB2aWV3cG9ydF95LCBpbnQgdmlld3BvcnRfdywgaW50IHZpZXdwb3J0X2gsIGNvbnN0IGNo
YXIqIGV4dHJhX29wdGlvbnMsIGludCB1c2VYMTFXaW5kb3cpOwotCi0gICAgRXZhcyogZXZhcygp
OwotICAgIHZvaWQgc2hvdygpOwotCi1wcml2YXRlOgotICAgIE93blB0cjxFY29yZV9FdmFzPiBt
X2Vjb3JlRXZhczsKLX07Ci0KIGNsYXNzIEVXS1Rlc3RWaWV3IHsKIHB1YmxpYzoKICAgICBlbnVt
IEV3a1ZpZXdUeXBlIHsKICAgICAgICAgU2luZ2xlVmlldyA9IDAsCi0gICAgICAgIFRpbGVkVmll
dywKKyAgICAgICAgVGlsZWRWaWV3CiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEVXS1Rlc3RWaWV3
KEV2YXMqKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgY29uc3QgY2hhciogdXJsKTsKLSAgICBF
V0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdL
VGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwsIGludCB3aWR0aCwg
aW50IGhlaWdodCk7CisgICAgRVdLVGVzdFZpZXcoKTsKIAogICAgIEV2YXNfT2JqZWN0KiB3ZWJW
aWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9Ci0gICAgRXZhc19PYmplY3QqIG1haW5G
cmFtZSgpOwotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lkIHNob3coKTsKLQotICAgIGJvb2wg
aW5pdCgpOwotICAgIHZvaWQgYmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFz
X09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpOwogCisg
ICAgYm9vbCBpbml0KGludCB1c2VYMTFXaW5kb3cgPSAwLCBFd2tWaWV3VHlwZSB0ZXN0Vmlld1R5
cGUgPSBUaWxlZFZpZXcsIGludCB3aWR0aCA9IENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgaW50
IGhlaWdodCA9IENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpOwogcHJpdmF0ZToKICAgICBFV0tU
ZXN0Vmlldyhjb25zdCBFV0tUZXN0VmlldyYpOwotICAgIEVXS1Rlc3RWaWV3IG9wZXJhdG9yPShj
b25zdCBFV0tUZXN0VmlldyYpOworICAgIEVXS1Rlc3RWaWV3JiBvcGVyYXRvcj0oY29uc3QgRVdL
VGVzdFZpZXcmKTsKIAotICAgIEV2YXMqIG1fZXZhczsKKyAgICBPd25QdHI8RWNvcmVfRXZhcz4g
bV9lY29yZUV2YXM7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX3dlYlZpZXc7Ci0KLSAgICBp
bnQgbV93aWR0aCwgbV9oZWlnaHQ7Ci0gICAgRXdrVmlld1R5cGUgbV9kZWZhdWx0Vmlld1R5cGU7
Ci0gICAgc3RkOjpzdHJpbmcgbV91cmw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IDJkNDkwNzkuLmJiNDdlOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBAIC0xOSwzNiArMTksMjkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCIK
KyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxFV2Vi
S2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRo
ZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBjb3JyZWN0IHZhbHVlLgogKi8KLXN0YXRpYyB2
b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIG8s
IHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X2VkaXRhYmxlX2dldCkK
IHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQobywgRUlOQV9GQUxTRSk7Ci0gICAgRVhQRUNU
X0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRhYmxlX2dldChvKSk7Ci0gICAgRU5EX1RFU1Qo
KTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19lZGl0YWJsZV9nZXQpCi17Ci0g
ICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0Q2IpOworICAgIGxvYWRVcmwoKTsKKyAgICBl
d2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBBU1NFUlRf
RkFMU0UoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdlYlZpZXcoKSkpOwogfQogCiAvKioKICogQGJy
aWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0IHVyaSBzdHJpbmcu
CiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdldENiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGRhdGEpCi17Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3Lndl
YmtpdC5vcmcvIiwgZXdrX3ZpZXdfdXJpX2dldChvKSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQot
VEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld191cmlfZ2V0KQorVEVTVF9GKEVXS1Rlc3RCYXNl
LCBld2tfdmlld191cmlfZ2V0KQogewotICAgIFJVTl9URVNUKCJodHRwOi8vd3d3LndlYmtpdC5v
cmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIGxvYWRVcmwoKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKaW5kZXggNzAyYTYxZi4uOWU1
NTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApAQCAtMTYsNiAr
MTYsOCBAQAogICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
IDAyMTExLTEzMDcgVVNBCiAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJV
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgiCiAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTMzLDcgKzM1LDYgQEAgc3RhdGljIHZvaWQgcGFyc2VDdXN0
b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7Ci0gICAgYXRleGl0KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNo
dXRkb3duQWxsKTsKICAgICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKICAgICA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166178</attachid>
            <date>2012-09-28 02:12:43 -0700</date>
            <delta_ts>2012-09-28 02:33:12 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>21626</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTA5ZThkZi4uOTFkYWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wOS0yOCAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBBZGQgZmlsZSBFV0tUZXN0RW52aXJvbm1lbnQuY3BwIHRvIGJ1aWxkIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IGlzIHJlbGF0ZWQgdG8gbW9kaWZpY2F0aW9ucyBpbiB3azEgdW5pdCB0ZXN0cy4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOiAKKwogMjAxMi0wOS0yNCAgQXJ2aWQgTmlsc3NvbiAgPGFu
aWxzc29uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFkZCBjb29raWUgZGF0YWJh
c2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4MGQxYzA3Li5mNGE3MWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMyMSw2ICszMjEsNyBAQCBBRERfREVGSU5JVElPTlMo
LURERUZBVUxUX1RFU1RfUEFHRV9ESVI9XCIke0RFRkFVTFRfVEVTVF9QQUdFX0RJUn1cIgogQURE
X0xJQlJBUlkoZXdrVGVzdFV0aWxzCiAgICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKICAgICAke1dFQktJVF9ESVJ9L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorICAgICR7V0VCS0lUX0RJUn0vZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmNwcAogKQogVEFSR0VUX0xJTktfTElCUkFS
SUVTKGV3a1Rlc3RVdGlscyAke0VXS1VuaXRUZXN0c19MSUJSQVJJRVN9KQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKaW5kZXggMmM3MjQyZS4uMmM1ZGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDEyLTA5LTI4ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtFRkxdW1VUXSBSZWZhY3RvcmluZyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0
aW5nIGZyYW1ld29yayBmb3Igd2sxLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgcmVhc29uIG9mIGNoYW5naW5nLCB3YXMgdG8gYWRqdXN0IGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGd0ZXN0IGZlYXR1cmVzCisgICAgICAgIHJlbGF0ZWQg
dG8gY2xlYW5pbmcgKFNldFVwLCBUZWFyRG93biksIGNsZWFuaW5nIGNvZGUgaW4gdGVybXMgb2Yg
dXNlbGVzcyBtZXRob2RzCisgICAgICAgIGFuZCBsYXN0bHkgdG8gbWFrZSBmcmFtZXdvcmsgZWFz
aWVyIHRvIHVzZS4KKworICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2Uu
Y3BwOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6RVdLVGVzdEJhc2UpOgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3Vy
cmVudCB3ZWJ2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXAp
OgorICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAg
ICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6IEl0IHdhaXRzIHRpbGwgdGVz
dCBwYWdlIHdpbGwgYmUgcHJvcGVybHkgbG9hZGVkLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6bG9hZFVybCk6IFN0YXJ0cyBsb2FkaW5nIHRlc3QgcGFnZS4KKyAgICAgICAg
KiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwOgorICAgICAgICBVc2VkIHRvIGhhdmUg
Z2xvYmFsIFNldFVwIGFuZCBUZWFyRG93bi4KKyAgICAgICAgR2xvYmFsIFNldFVwIHN0YXJ0cyBp
bml0aWFsaXphdGlvbiBvZiB3ZWJraXQgd2hlcmVhc2UKKyAgICAgICAgZ2xvYmFsIFRlYXJEb3du
IHNodXRzIGl0IGRvd24uIEdlbmVyYWxseSB3ZSB3b3VsZCBsaWtlIHRvIGhhdmUKKyAgICAgICAg
b25seSBvbmUgaW5pdGlhbGl6YXRpb24gb2Ygd2Via2l0IHdoaWxlIHRlc3RzIGFyZSBleGVjdXRl
ZC4KKyAgICAgICAgKEVXS1VuaXRUZXN0cyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RFbnZpcm9ubWVudDo6RVdLVGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEVudmlyb25tZW50OjpTZXRVcCk6IFN0YXJ0cyBpbml0aWFsaXphdGlvbiBvZiB3
ZWJraXQuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudDo6VGVhckRv
d24pOiBTaHV0cyBkb3duIG9mIHdlYmtpdC4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RFbnZpcm9ubWVudC5oOgorICAgICAgICAoRVdLVW5pdFRlc3RzKToKKyAgICAgICAg
KEVXS1Rlc3RFbnZpcm9ubWVudCk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZp
cm9ubWVudDo6dXNlWDExV2luZG93KTogCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpFV0tU
ZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KTogU3Rh
cnRzIGluaXRpYWxpemF0aW9uIG9mIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgICog
dGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IGFkanVzdGVkIGN1cnJlbnQgdW5pdCB0ZXN0cyB0byBu
ZXcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL3Rl
c3RfcnVubmVyLmNwcDogZW50cnkgcG9pbnQgb2YgYWxsIHRlc3RzLgorICAgICAgICAocGFyc2VD
dXN0b21Bcmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDktMjYgIEppbndvbyBT
b25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEZpeCB0aGUg
dHlwbyBpbiB0aGUgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKaW5kZXggMmQz
ZTJhZS4uZDM1Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKQEAgLTE5LDg0ICsxOSw0NSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0
Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKKyNpbmNsdWRlICJFV0tUZXN0RW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgog
I2luY2x1ZGUgPEVkamUuaD4KIAotaW50IEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnVzZVgx
MVdpbmRvdzsKK2V4dGVybiBFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudCogZW52aXJv
bm1lbnQ7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjpp
bml0KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCiB7Ci0gICAgaWYgKCFlY29yZV9ldmFz
X2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGplX2luaXQoKSkg
ewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBjaGFyKiBwcm94
eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBwcm94eVVyaSkK
LSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0KLSAgICByZXR1
cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitFdmFzX09iamVj
dCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7Ci0KLSAgICB3
aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQotICAgIHdoaWxl
ICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9
IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LndlYlZp
ZXcoKTsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJh
c2U6OlNldFVwKCkKIHsKLSAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBBU1NFUlRf
VFJVRShtX2V3a1Rlc3RWaWV3LmluaXQoZW52aXJvbm1lbnQtPnVzZVgxMVdpbmRvdygpKSk7CiB9
CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2Fk
RmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKIHsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNl
OjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2
ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7Ci0KLSAgICBFV0tUZXN0RWNvcmVFdmFz
IGV2YXModXNlWDExV2luZG93KTsKLSAgICBpZiAoIWV2YXMuZXZhcygpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZXZhcy5zaG93KCk7Ci0KLSAgICBFV0tUZXN0VmlldyB2aWV3KGV2YXMu
ZXZhcygpLCB1cmwpOwotICAgIGlmICghdmlldy5pbml0KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZl
bnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Ci0KLSAgICBTVEFSVF9URVNUKCk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRf
Y2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRf
bmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBh
Z2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1
cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBj
b25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFz
ZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJs
LCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RS
VUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVybCkpOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKaW5kZXggZWM3NTEzMi4uMGUyMjM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaApA
QCAtMTksNDkgKzE5LDI1IEBACiAjaWZuZGVmIEVXS1Rlc3RCYXNlX2gKICNkZWZpbmUgRVdLVGVz
dEJhc2VfaAogCi0jaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIK
KyNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNk
ZWZpbmUgUlVOX1RFU1QoYXJncy4uLikgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAgIEFTU0VS
VF9FUSh0cnVlLCBFV0tUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwKLSAgICB9IHdoaWxl
ICgwKQotCi0jZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKTsgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmlu
ZSBFTkRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OmVu
ZFRlc3QoKTsgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwK
LSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAgIFwKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUg
RUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6aW5pdCgp
OyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNs
YXNzIEVXS1Rlc3RCYXNlIHsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIq
IHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiks
IGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOworY2xhc3MgRVdLVGVz
dEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBib29s
IGluaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bkFsbCgpOwotICAgIHN0YXRpYyB2b2lk
IHN0YXJ0VGVzdCgpOwotICAgIHN0YXRpYyB2b2lkIGVuZFRlc3QoKTsKKyAgICBzdGF0aWMgdm9p
ZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCog
ZXZlbnRJbmZvKTsKKworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotICAgIHN0YXRp
YyBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2Fk
LGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwotICAgIHN0YXRpYyBib29sIHJ1blRl
c3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNv
bnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEg
PSAwKTsKKyAgICB2b2lkIGxvYWRVcmwoY29uc3QgY2hhciogdXJsID0gQ29uZmlnOjpkZWZhdWx0
VGVzdFBhZ2UpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBzdGF0
aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyBtX2V3a1Rlc3RWaWV3OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhMWZlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAg
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcg
VVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdEVudmlyb25t
ZW50LmgiCisKKyNpbmNsdWRlIDxFV2ViS2l0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDxFZGplLmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworCitFV0tUZXN0RW52aXJv
bm1lbnQ6OkVXS1Rlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6IG1fdXNl
WDExV2luZG93KHVzZVgxMVdpbmRvdykKK3sKK30KKwordm9pZCBFV0tUZXN0RW52aXJvbm1lbnQ6
OlNldFVwKCkKK3sKKyAgICBBU1NFUlRfR1QoZXdrX2luaXQoKSwgMCk7CisKKyAgICBjb25zdCBj
aGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkK
KyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7Cit9CisKK3ZvaWQg
RVdLVGVzdEVudmlyb25tZW50OjpUZWFyRG93bigpCit7CisgICAgZXdrX3NodXRkb3duKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg4NGY0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2Vl
IHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQor
Ki8KKyNpZm5kZWYgRVdLVGVzdEVudmlyb25tZW50X2gKKyNkZWZpbmUgRVdLVGVzdEVudmlyb25t
ZW50X2gKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVz
dHMgeworCitjbGFzcyBFV0tUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7CitwdWJsaWM6CisgICAgRVdLVGVzdEVudmlyb25tZW50KGJvb2wgdXNlWDExV2lu
ZG93KTsKKworICAgIGJvb2wgdXNlWDExV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV91c2VYMTFX
aW5kb3c7IH0KKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKKyAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKTsKK3ByaXZhdGU6CisgICAgYm9vbCBtX3VzZVgxMVdpbmRvdzsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuY3BwCmluZGV4IGRiYjAwOTIuLjEyZDQyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCkBAIC0x
OSwxMzEgKzE5LDUzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdLVGVzdFZp
ZXcuaCIKIAotI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+
Ci0KKyNpbmNsdWRlIDx3dGYvTnVsbFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAot
RVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KQorRVdL
VGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9
CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5l
X25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGlu
dCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93
KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNlWDExV2luZG93LCBFd2tWaWV3VHlwZSB0
ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBtX3dlYlZpZXcgPSBu
dWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBh
ZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFtZSwgdmlld3BvcnRfeCwgdmlld3BvcnRf
eSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFfb3B0aW9ucykpOworICAgICAgICBtX2Vj
b3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQs
IDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZh
c19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVz
dEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAg
ICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAw
OwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6OnNob3coKQotewotICAgIGlmIChtX2Vjb3Jl
RXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsK
LX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMpCi0gICAgOiBtX2V2YXMo
ZXZhcykKLSAgICAsIG1fdXJsKENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKQotICAgICwgbV9kZWZh
dWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3
V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQotewotfQot
Ci1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hhciogdXJsKQot
ICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3
VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkK
LSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rl
c3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBFd2tWaWV3VHlwZSB0eXBlLCBjb25zdCBj
aGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1f
ZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdX
aWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Cisg
ICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHdpZHRo
LCBoZWlnaHQpKTsKIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1Zp
ZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAg
IDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlw
ZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1faGVpZ2h0KGhlaWdodCkKLXsK
LX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wg
RVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkp
CisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKKyAgICBFdmFzKiBldmFz
ID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOworICAgIGlmICghZXZhcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3VHlwZSkgewor
ICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAgICAgY2FzZSBTaW5nbGVWaWV3OgotICAgICAg
ICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKG1fZXZhcykpOworICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKGV2YXMpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0g
YWRvcHRSZWYoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcg
PSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQoZXZhcykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICBpZiAoIW1fd2ViVmlldykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5n
ZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsKLSAgICBld2tfdmlld191cmlfc2V0KG1f
d2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7Ci19CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNo
b3coKQotewotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
ZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwog
ICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3LmdldCgpKTsKICAgICBldmFzX29iamVjdF9m
b2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5BX1RSVUUpOwotfQotCi1FdmFzX09iamVjdCog
RVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rlc3RWaWV3OjpldmFzKCkKLXsKLSAgICBpZiAo
bV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93
ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6Ymlu
ZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29u
c3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Rl
bChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ss
IHB0cik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAppbmRleCAxYmRkOWVkLi5jOTU1
ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5oCkBAIC0xOSw1NiArMTksMzIgQEAKICNpZm5kZWYgRVdLVGVzdFZpZXdfaAog
I2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9lZmwvUmVmUHRyRWZsLmg+
CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNvcmVFdmFzIHsK
LXB1YmxpYzoKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpOwotICAgIEVX
S1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBp
bnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFy
KiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMqIGV2YXMoKTsK
LSAgICB2b2lkIHNob3coKTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9l
Y29yZUV2YXM7Ci19OwotCiBjbGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBF
d2tWaWV3VHlwZSB7CiAgICAgICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBUaWxlZFZpZXcs
CisgICAgICAgIFRpbGVkVmlldwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tUZXN0VmlldyhF
dmFzKik7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdL
VGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rl
c3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOworICAgIEVXS1Rlc3RWaWV3KCk7CiAKICAgICBFdmFzX09iamVjdCogd2ViVmll
dygpIHsgcmV0dXJuIG1fd2ViVmlldy5nZXQoKTsgfQotICAgIEV2YXNfT2JqZWN0KiBtYWluRnJh
bWUoKTsKLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLSAgICBib29sIGlu
aXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lkKiwgRXZhc19P
YmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRyKTsKIAorICAg
IGJvb2wgaW5pdChpbnQgdXNlWDExV2luZG93ID0gMCwgRXdrVmlld1R5cGUgdGVzdFZpZXdUeXBl
ID0gVGlsZWRWaWV3LCBpbnQgd2lkdGggPSBDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIGludCBo
ZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KTsKIHByaXZhdGU6CiAgICAgRVdLVGVz
dFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVyYXRvcj0oY29u
c3QgRVdLVGVzdFZpZXcmKTsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVXS1Rl
c3RWaWV3Jik7CiAKLSAgICBFdmFzKiBtX2V2YXM7CisgICAgT3duUHRyPEVjb3JlX0V2YXM+IG1f
ZWNvcmVFdmFzOwogICAgIFJlZlB0cjxFdmFzX09iamVjdD4gbV93ZWJWaWV3OwotCi0gICAgaW50
IG1fd2lkdGgsIG1faGVpZ2h0OwotICAgIEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwot
ICAgIHN0ZDo6c3RyaW5nIG1fdXJsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90
ZXN0X2V3a192aWV3LmNwcAppbmRleCBiNWJiYzdiLi42Y2ExNjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcApAQCAtMTksNDUgKzE5LDM5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgiCisj
aW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktp
dC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVy
IGZ1bmN0aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0aWMgdm9p
ZCBld2tWaWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBkYXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19lZGl0YWJsZV9nZXQpCiB7
Ci0gICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KG8sIEVJTkFfRkFMU0UpOwotICAgIEVYUEVDVF9F
UShFSU5BX0ZBTFNFLCBld2tfdmlld19lZGl0YWJsZV9nZXQobykpOwotICAgIEVORF9URVNUKCk7
Ci19Ci0KLVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQotewotICAg
IFJVTl9URVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgZXdr
X3ZpZXdfZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV3a192aWV3X2VkaXRhYmxlX2dldCh3ZWJWaWV3KCkpKTsKIH0KIAogLyoqCiAqIEBicmll
ZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdCB1cmkgc3RyaW5nLgog
Ki8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdVcmlHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBkYXRhKQotewotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3dy53ZWJr
aXQub3JnLyIsIGV3a192aWV3X3VyaV9nZXQobykpOwotICAgIEVORF9URVNUKCk7Ci19Ci0KLVRF
U1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfdXJpX2dldCkKK1RFU1RfRihFV0tUZXN0QmFzZSwg
ZXdrX3ZpZXdfdXJpX2dldCkKIHsKLSAgICBSVU5fVEVTVCgiaHR0cDovL3d3dy53ZWJraXQub3Jn
IiwgZXdrVmlld1VyaUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgQVNTRVJUX1NUUkVRKGV3
a192aWV3X3VyaV9nZXQod2ViVmlldygpKSwgQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpOwogfQog
CiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgZ2V0L3Nl
dCBmdWxsc2NyZWVuIHNldHRpbmcgdmFsdWUuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld0VuYWJs
ZUZ1bGxzY3JlZW5DYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lk
KiBkYXRhKQorVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxs
c2NyZWVuKQogeworICAgIGxvYWRVcmwoKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2Vi
VmlldykpOwogCkBAIC03NSwxMCArNjksNCBAQCBzdGF0aWMgdm9pZCBld2tWaWV3RW5hYmxlRnVs
bHNjcmVlbkNiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaQogICAg
IEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJW
aWV3LCBmYWxzZSkpOwogICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9m
dWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7CiAjZW5kaWYKLSAgICBFTkRfVEVTVCgpOwotfQotCi1U
RVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW4pCi17
Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VuYWJsZUZ1bGxzY3JlZW5DYik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKaW5kZXggNzAyYTYxZi4uZThmM2MwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApAQCAtMTYsMjUgKzE2LDM3IEBACiAg
ICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NyBVU0EKICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlVuaXRUZXN0VXRp
bHMvRVdLVGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgPGdldG9wdC5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAK
LXN0YXRpYyB2b2lkIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikK
K3VzaW5nIG5hbWVzcGFjZSBFV0tVbml0VGVzdHM7CisKK0VXS1Rlc3RFbnZpcm9ubWVudCogZW52
aXJvbm1lbnQgPSAwOworCitzdGF0aWMgaW50IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdj
LCBjaGFyKiogYXJndikKIHsKKyAgICBpbnQgdXNlWDExV2luZG93ID0gMDsKICAgICBzdGF0aWMg
Y29uc3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICAgICAgeyJ1c2VYMTFXaW5kb3ciLCBub19h
cmd1bWVudCwgJkVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnVzZVgxMVdpbmRvdywgdHJ1ZX0s
CisgICAgICAgIHsidXNlWDExV2luZG93Iiwgbm9fYXJndW1lbnQsICZ1c2VYMTFXaW5kb3csIHRy
dWV9LAogICAgICAgICB7MCwgMCwgMCwgMH0KICAgICB9OwogCiAgICAgaW50IG9wdGlvbjsKICAg
ICB3aGlsZSAoKG9wdGlvbiA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICIiLCBvcHRpb25zLCAw
KSkgIT0gLTEpIHsgfQorCisgICAgcmV0dXJuIHVzZVgxMVdpbmRvdzsKIH0KIAogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIGF0ZXhpdChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RCYXNlOjpzaHV0ZG93bkFsbCk7Ci0gICAgcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJn
dik7CisgICAgaW50IHVzZVgxMVdpbmRvdyA9IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFy
Z3YpOworICAgIGVudmlyb25tZW50ID0gbmV3IEVXS1Rlc3RFbnZpcm9ubWVudCh1c2VYMTFXaW5k
b3cpOworICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7
CiAgICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKICAgICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwogfQo=
</data>
<flag name="commit-queue"
          id="178439"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166185</attachid>
            <date>2012-09-28 02:33:12 -0700</date>
            <delta_ts>2012-10-01 05:41:12 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>22753</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTA5ZThkZi4uOTFkYWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wOS0yOCAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBBZGQgZmlsZSBFV0tUZXN0RW52aXJvbm1lbnQuY3BwIHRvIGJ1aWxkIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IGlzIHJlbGF0ZWQgdG8gbW9kaWZpY2F0aW9ucyBpbiB3azEgdW5pdCB0ZXN0cy4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOiAKKwogMjAxMi0wOS0yNCAgQXJ2aWQgTmlsc3NvbiAgPGFu
aWxzc29uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFkZCBjb29raWUgZGF0YWJh
c2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4MGQxYzA3Li5mNGE3MWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMyMSw2ICszMjEsNyBAQCBBRERfREVGSU5JVElPTlMo
LURERUZBVUxUX1RFU1RfUEFHRV9ESVI9XCIke0RFRkFVTFRfVEVTVF9QQUdFX0RJUn1cIgogQURE
X0xJQlJBUlkoZXdrVGVzdFV0aWxzCiAgICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKICAgICAke1dFQktJVF9ESVJ9L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAorICAgICR7V0VCS0lUX0RJUn0vZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmNwcAogKQogVEFSR0VUX0xJTktfTElCUkFS
SUVTKGV3a1Rlc3RVdGlscyAke0VXS1VuaXRUZXN0c19MSUJSQVJJRVN9KQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKaW5kZXggMmM3MjQyZS4uMmM1ZGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDEyLTA5LTI4ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtFRkxdW1VUXSBSZWZhY3RvcmluZyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0
aW5nIGZyYW1ld29yayBmb3Igd2sxLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgcmVhc29uIG9mIGNoYW5naW5nLCB3YXMgdG8gYWRqdXN0IGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGd0ZXN0IGZlYXR1cmVzCisgICAgICAgIHJlbGF0ZWQg
dG8gY2xlYW5pbmcgKFNldFVwLCBUZWFyRG93biksIGNsZWFuaW5nIGNvZGUgaW4gdGVybXMgb2Yg
dXNlbGVzcyBtZXRob2RzCisgICAgICAgIGFuZCBsYXN0bHkgdG8gbWFrZSBmcmFtZXdvcmsgZWFz
aWVyIHRvIHVzZS4KKworICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2Uu
Y3BwOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6RVdLVGVzdEJhc2UpOgor
ICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVybnMgY3Vy
cmVudCB3ZWJ2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6U2V0VXAp
OgorICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQuCisgICAg
ICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKEVXS1VuaXRU
ZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6IEl0IHdhaXRzIHRpbGwgdGVz
dCBwYWdlIHdpbGwgYmUgcHJvcGVybHkgbG9hZGVkLgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpF
V0tUZXN0QmFzZTo6bG9hZFVybCk6IFN0YXJ0cyBsb2FkaW5nIHRlc3QgcGFnZS4KKyAgICAgICAg
KiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwOgorICAgICAgICBVc2VkIHRvIGhhdmUg
Z2xvYmFsIFNldFVwIGFuZCBUZWFyRG93bi4KKyAgICAgICAgR2xvYmFsIFNldFVwIHN0YXJ0cyBp
bml0aWFsaXphdGlvbiBvZiB3ZWJraXQgd2hlcmVhc2UKKyAgICAgICAgZ2xvYmFsIFRlYXJEb3du
IHNodXRzIGl0IGRvd24uIEdlbmVyYWxseSB3ZSB3b3VsZCBsaWtlIHRvIGhhdmUKKyAgICAgICAg
b25seSBvbmUgaW5pdGlhbGl6YXRpb24gb2Ygd2Via2l0IHdoaWxlIHRlc3RzIGFyZSBleGVjdXRl
ZC4KKyAgICAgICAgKEVXS1VuaXRUZXN0cyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rl
c3RFbnZpcm9ubWVudDo6RVdLVGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXS1VuaXRUZXN0
czo6RVdLVGVzdEVudmlyb25tZW50OjpTZXRVcCk6IFN0YXJ0cyBpbml0aWFsaXphdGlvbiBvZiB3
ZWJraXQuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudDo6VGVhckRv
d24pOiBTaHV0cyBkb3duIG9mIHdlYmtpdC4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RFbnZpcm9ubWVudC5oOgorICAgICAgICAoRVdLVW5pdFRlc3RzKToKKyAgICAgICAg
KEVXS1Rlc3RFbnZpcm9ubWVudCk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZp
cm9ubWVudDo6dXNlWDExV2luZG93KTogCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3OjpFV0tU
ZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0KTogU3Rh
cnRzIGluaXRpYWxpemF0aW9uIG9mIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAgICAgICog
dGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IGFkanVzdGVkIGN1cnJlbnQgdW5pdCB0ZXN0cyB0byBu
ZXcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRlc3RzL3Rl
c3RfcnVubmVyLmNwcDogZW50cnkgcG9pbnQgb2YgYWxsIHRlc3RzLgorICAgICAgICAocGFyc2VD
dXN0b21Bcmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDktMjYgIEppbndvbyBT
b25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEZpeCB0aGUg
dHlwbyBpbiB0aGUgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKaW5kZXggMmQz
ZTJhZS4uZDM1Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKQEAgLTE5LDg0ICsxOSw0NSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0
Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKKyNpbmNsdWRlICJFV0tUZXN0RW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgog
I2luY2x1ZGUgPEVkamUuaD4KIAotaW50IEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnVzZVgx
MVdpbmRvdzsKK2V4dGVybiBFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudCogZW52aXJv
bm1lbnQ7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjpp
bml0KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCiB7Ci0gICAgaWYgKCFlY29yZV9ldmFz
X2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGplX2luaXQoKSkg
ewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBjaGFyKiBwcm94
eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBwcm94eVVyaSkK
LSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0KLSAgICByZXR1
cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitFdmFzX09iamVj
dCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7Ci0KLSAgICB3
aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQotICAgIHdoaWxl
ICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9
IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LndlYlZp
ZXcoKTsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJh
c2U6OlNldFVwKCkKIHsKLSAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBBU1NFUlRf
VFJVRShtX2V3a1Rlc3RWaWV3LmluaXQoZW52aXJvbm1lbnQtPnVzZVgxMVdpbmRvdygpKSk7CiB9
CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2Fk
RmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKIHsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNl
OjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2
ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7Ci0KLSAgICBFV0tUZXN0RWNvcmVFdmFz
IGV2YXModXNlWDExV2luZG93KTsKLSAgICBpZiAoIWV2YXMuZXZhcygpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZXZhcy5zaG93KCk7Ci0KLSAgICBFV0tUZXN0VmlldyB2aWV3KGV2YXMu
ZXZhcygpLCB1cmwpOwotICAgIGlmICghdmlldy5pbml0KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZl
bnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Ci0KLSAgICBTVEFSVF9URVNUKCk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRf
Y2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRf
bmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBh
Z2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1
cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBj
b25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFz
ZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJs
LCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RS
VUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVybCkpOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKaW5kZXggZWM3NTEzMi4uMGUyMjM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaApA
QCAtMTksNDkgKzE5LDI1IEBACiAjaWZuZGVmIEVXS1Rlc3RCYXNlX2gKICNkZWZpbmUgRVdLVGVz
dEJhc2VfaAogCi0jaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIK
KyNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNk
ZWZpbmUgUlVOX1RFU1QoYXJncy4uLikgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAgIEFTU0VS
VF9FUSh0cnVlLCBFV0tUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwKLSAgICB9IHdoaWxl
ICgwKQotCi0jZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKTsgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmlu
ZSBFTkRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OmVu
ZFRlc3QoKTsgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwK
LSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAgIFwKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUg
RUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6aW5pdCgp
OyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNs
YXNzIEVXS1Rlc3RCYXNlIHsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIq
IHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiks
IGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOworY2xhc3MgRVdLVGVz
dEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBib29s
IGluaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bkFsbCgpOwotICAgIHN0YXRpYyB2b2lk
IHN0YXJ0VGVzdCgpOwotICAgIHN0YXRpYyB2b2lkIGVuZFRlc3QoKTsKKyAgICBzdGF0aWMgdm9p
ZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCog
ZXZlbnRJbmZvKTsKKworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotICAgIHN0YXRp
YyBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2Fk
LGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwotICAgIHN0YXRpYyBib29sIHJ1blRl
c3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNv
bnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEg
PSAwKTsKKyAgICB2b2lkIGxvYWRVcmwoY29uc3QgY2hhciogdXJsID0gQ29uZmlnOjpkZWZhdWx0
VGVzdFBhZ2UpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBzdGF0
aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyBtX2V3a1Rlc3RWaWV3OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhMWZlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAg
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcg
VVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdEVudmlyb25t
ZW50LmgiCisKKyNpbmNsdWRlIDxFV2ViS2l0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDxFZGplLmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworCitFV0tUZXN0RW52aXJv
bm1lbnQ6OkVXS1Rlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6IG1fdXNl
WDExV2luZG93KHVzZVgxMVdpbmRvdykKK3sKK30KKwordm9pZCBFV0tUZXN0RW52aXJvbm1lbnQ6
OlNldFVwKCkKK3sKKyAgICBBU1NFUlRfR1QoZXdrX2luaXQoKSwgMCk7CisKKyAgICBjb25zdCBj
aGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkK
KyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7Cit9CisKK3ZvaWQg
RVdLVGVzdEVudmlyb25tZW50OjpUZWFyRG93bigpCit7CisgICAgZXdrX3NodXRkb3duKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg4NGY0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2Vl
IHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQor
Ki8KKyNpZm5kZWYgRVdLVGVzdEVudmlyb25tZW50X2gKKyNkZWZpbmUgRVdLVGVzdEVudmlyb25t
ZW50X2gKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVz
dHMgeworCitjbGFzcyBFV0tUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7CitwdWJsaWM6CisgICAgRVdLVGVzdEVudmlyb25tZW50KGJvb2wgdXNlWDExV2lu
ZG93KTsKKworICAgIGJvb2wgdXNlWDExV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV91c2VYMTFX
aW5kb3c7IH0KKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKKyAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKTsKK3ByaXZhdGU6CisgICAgYm9vbCBtX3VzZVgxMVdpbmRvdzsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXS1Rlc3RWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuY3BwCmluZGV4IGRiYjAwOTIuLjEyZDQyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCkBAIC0x
OSwxMzEgKzE5LDUzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdLVGVzdFZp
ZXcuaCIKIAotI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+
Ci0KKyNpbmNsdWRlIDx3dGYvTnVsbFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzIHsKIAot
RVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KQorRVdL
VGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXco
Q29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KSk7CiB9
CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5l
X25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGlu
dCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93
KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNlWDExV2luZG93LCBFd2tWaWV3VHlwZSB0
ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBtX3dlYlZpZXcgPSBu
dWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29yZUV2YXMgPSBh
ZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFtZSwgdmlld3BvcnRfeCwgdmlld3BvcnRf
eSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFfb3B0aW9ucykpOworICAgICAgICBtX2Vj
b3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQs
IDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZh
c19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0X3kpKTsKLX0KLQotRXZhcyogRVdLVGVz
dEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAg
ICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOwotICAgIHJldHVybiAw
OwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6OnNob3coKQotewotICAgIGlmIChtX2Vjb3Jl
RXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsK
LX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMpCi0gICAgOiBtX2V2YXMo
ZXZhcykKLSAgICAsIG1fdXJsKENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKQotICAgICwgbV9kZWZh
dWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3
V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQotewotfQot
Ci1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hhciogdXJsKQot
ICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3
VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkK
LSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rl
c3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBFd2tWaWV3VHlwZSB0eXBlLCBjb25zdCBj
aGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1f
ZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdX
aWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19Cisg
ICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHdpZHRo
LCBoZWlnaHQpKTsKIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1Zp
ZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAg
IDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlw
ZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1faGVpZ2h0KGhlaWdodCkKLXsK
LX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wg
RVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkp
CisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKKyAgICBFdmFzKiBldmFz
ID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOworICAgIGlmICghZXZhcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3VHlwZSkgewor
ICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAgICAgY2FzZSBTaW5nbGVWaWV3OgotICAgICAg
ICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKG1fZXZhcykpOworICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKGV2YXMpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93ZWJWaWV3ID0g
YWRvcHRSZWYoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBtX3dlYlZpZXcg
PSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQoZXZhcykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICBpZiAoIW1fd2ViVmlldykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldy5n
ZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsKLSAgICBld2tfdmlld191cmlfc2V0KG1f
d2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7Ci19CiAKLXZvaWQgRVdLVGVzdFZpZXc6OnNo
b3coKQotewotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
ZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOwor
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwog
ICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3LmdldCgpKTsKICAgICBldmFzX29iamVjdF9m
b2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5BX1RSVUUpOwotfQotCi1FdmFzX09iamVjdCog
RVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViVmlldy5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmlldy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rlc3RWaWV3OjpldmFzKCkKLXsKLSAgICBpZiAo
bV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93
ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0Vmlldzo6Ymlu
ZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29u
c3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Rl
bChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2spOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2ss
IHB0cik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAppbmRleCAxYmRkOWVkLi5jOTU1
ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
S1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0Vmlldy5oCkBAIC0xOSw1NiArMTksMzIgQEAKICNpZm5kZWYgRVdLVGVzdFZpZXdfaAog
I2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tUZXN0Q29uZmlnLmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9lZmwvUmVmUHRyRWZsLmg+
CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNvcmVFdmFzIHsK
LXB1YmxpYzoKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpOwotICAgIEVX
S1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBp
bnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFy
KiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMqIGV2YXMoKTsK
LSAgICB2b2lkIHNob3coKTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9l
Y29yZUV2YXM7Ci19OwotCiBjbGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAgICAgZW51bSBF
d2tWaWV3VHlwZSB7CiAgICAgICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBUaWxlZFZpZXcs
CisgICAgICAgIFRpbGVkVmlldwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tUZXN0VmlldyhF
dmFzKik7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7Ci0gICAgRVdL
VGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwotICAgIEVXS1Rl
c3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOworICAgIEVXS1Rlc3RWaWV3KCk7CiAKICAgICBFdmFzX09iamVjdCogd2ViVmll
dygpIHsgcmV0dXJuIG1fd2ViVmlldy5nZXQoKTsgfQotICAgIEV2YXNfT2JqZWN0KiBtYWluRnJh
bWUoKTsKLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLSAgICBib29sIGlu
aXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lkKiwgRXZhc19P
YmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRyKTsKIAorICAg
IGJvb2wgaW5pdChpbnQgdXNlWDExV2luZG93ID0gMCwgRXdrVmlld1R5cGUgdGVzdFZpZXdUeXBl
ID0gVGlsZWRWaWV3LCBpbnQgd2lkdGggPSBDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIGludCBo
ZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KTsKIHByaXZhdGU6CiAgICAgRVdLVGVz
dFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVyYXRvcj0oY29u
c3QgRVdLVGVzdFZpZXcmKTsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNvbnN0IEVXS1Rl
c3RWaWV3Jik7CiAKLSAgICBFdmFzKiBtX2V2YXM7CisgICAgT3duUHRyPEVjb3JlX0V2YXM+IG1f
ZWNvcmVFdmFzOwogICAgIFJlZlB0cjxFdmFzX09iamVjdD4gbV93ZWJWaWV3OwotCi0gICAgaW50
IG1fd2lkdGgsIG1faGVpZ2h0OwotICAgIEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZpZXdUeXBlOwot
ICAgIHN0ZDo6c3RyaW5nIG1fdXJsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90
ZXN0X2V3a192aWV3LmNwcAppbmRleCBiNWJiYzdiLi5mZjRhYmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcApAQCAtMTksNjYgKzE5LDU0IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgiCisj
aW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVkZSA8RVdlYktp
dC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVy
IGZ1bmN0aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1zdGF0aWMgdm9p
ZCBld2tWaWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBkYXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19lZGl0YWJsZV9nZXQpCiB7
Ci0gICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KG8sIEVJTkFfRkFMU0UpOwotICAgIEVYUEVDVF9F
UShFSU5BX0ZBTFNFLCBld2tfdmlld19lZGl0YWJsZV9nZXQobykpOwotICAgIEVORF9URVNUKCk7
Ci19Ci0KLVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KQotewotICAg
IFJVTl9URVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgZXdr
X3ZpZXdfZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgQVNTRVJUX0ZB
TFNFKGV3a192aWV3X2VkaXRhYmxlX2dldCh3ZWJWaWV3KCkpKTsKIH0KIAogLyoqCiAqIEBicmll
ZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdCB1cmkgc3RyaW5nLgog
Ki8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdVcmlHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBkYXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld191cmlfZ2V0
KQogewotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3dy53ZWJraXQub3JnLyIsIGV3a192aWV3
X3VyaV9nZXQobykpOwotICAgIEVORF9URVNUKCk7Ci19Ci0KLVRFU1QodGVzdF9ld2tfdmlldywg
ZXdrX3ZpZXdfdXJpX2dldCkKLXsKLSAgICBSVU5fVEVTVCgiaHR0cDovL3d3dy53ZWJraXQub3Jn
IiwgZXdrVmlld1VyaUdldENiKTsKKyAgICBsb2FkVXJsKCk7CisgICAgQVNTRVJUX1NUUkVRKGV3
a192aWV3X3VyaV9nZXQod2ViVmlldygpKSwgQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpOwogfQog
CiAvKioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgZ2V0L3Nl
dCBmdWxsc2NyZWVuIHNldHRpbmcgdmFsdWUuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld0VuYWJs
ZUZ1bGxzY3JlZW5DYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lk
KiBkYXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxs
c2NyZWVuKQogeworICAgIGxvYWRVcmwoKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2Vi
VmlldykpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3Jl
ZW5fZ2V0KHdlYlZpZXcoKSkpOwogCi0gICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldywgdHJ1ZSkpOwotICAgIEFTU0VSVF9UUlVFKGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcpKTsKKyAgICBBU1NF
UlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCks
IHRydWUpKTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2Ny
ZWVuX2dldCh3ZWJWaWV3KCkpKTsKIAotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXcsIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcpKTsKKyAgICBB
U1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3
KCksIGZhbHNlKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1
bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwogI2Vsc2UKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFTU0VSVF9G
QUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KCkpKTsK
IAotICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3Nl
dCh3ZWJWaWV3LCB0cnVlKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldygpLCB0cnVlKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXco
KSkpOwogCi0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3Jl
ZW5fc2V0KHdlYlZpZXcsIGZhbHNlKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldygpLCBmYWxzZSkpOwor
ICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3
ZWJWaWV3KCkpKTsKICNlbmRpZgotICAgIEVORF9URVNUKCk7Ci19Ci0KLVRFU1QodGVzdF9ld2tf
dmlldywgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbikKLXsKLSAgICBSVU5fVEVT
VChld2tWaWV3RW5hYmxlRnVsbHNjcmVlbkNiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rl
c3RfcnVubmVyLmNwcAppbmRleCA3MDJhNjFmLi5lOGYzYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
dGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0xNiwyNSArMTYsMzcgQEAKICAgICBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQogKi8KIAor
I2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFz
ZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSA8Z2V0b3B0Lmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAotc3RhdGljIHZvaWQg
cGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQordXNpbmcgbmFtZXNw
YWNlIEVXS1VuaXRUZXN0czsKKworRVdLVGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudCA9IDA7
CisKK3N0YXRpYyBpbnQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogeworICAgIGludCB1c2VYMTFXaW5kb3cgPSAwOwogICAgIHN0YXRpYyBjb25zdCBvcHRpb24g
b3B0aW9uc1tdID0gewotICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAmRVdL
VW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6dXNlWDExV2luZG93LCB0cnVlfSwKKyAgICAgICAgeyJ1
c2VYMTFXaW5kb3ciLCBub19hcmd1bWVudCwgJnVzZVgxMVdpbmRvdywgdHJ1ZX0sCiAgICAgICAg
IHswLCAwLCAwLCAwfQogICAgIH07CiAKICAgICBpbnQgb3B0aW9uOwogICAgIHdoaWxlICgob3B0
aW9uID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIiIsIG9wdGlvbnMsIDApKSAhPSAtMSkgeyB9
CisKKyAgICByZXR1cm4gdXNlWDExV2luZG93OwogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiB7Ci0gICAgYXRleGl0KEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnNodXRk
b3duQWxsKTsKLSAgICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKKyAgICBpbnQg
dXNlWDExV2luZG93ID0gcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJndik7CisgICAgZW52
aXJvbm1lbnQgPSBuZXcgRVdLVGVzdEVudmlyb25tZW50KHVzZVgxMVdpbmRvdyk7CisgICAgdGVz
dGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KGVudmlyb25tZW50KTsKICAgICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwogICAgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166457</attachid>
            <date>2012-10-01 05:41:12 -0700</date>
            <delta_ts>2012-10-02 05:41:14 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>19620</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDgyM2IwNjIuLjdhNTQ3MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMzQ0LDYgKzM0NCw3IEBAIEFERF9ERUZJTklUSU9OUygtRERFRkFV
TFRfVEVTVF9QQUdFX0RJUj1cIiR7REVGQVVMVF9URVNUX1BBR0VfRElSfVwiCiAKIEFERF9MSUJS
QVJZKGV3a1Rlc3RVdGlscwogICAgICR7V0VCS0lUX0RJUn0vZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdEJhc2UuY3BwCisgICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCiAgICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKICkKIFRBUkdFVF9MSU5LX0xJQlJBUklFUyhl
d2tUZXN0VXRpbHMgJHtFV0tVbml0VGVzdHNfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKaW5kZXggMmQz
ZTJhZS4uZDM1Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKQEAgLTE5LDg0ICsxOSw0NSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJFV0tUZXN0
Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKKyNpbmNsdWRlICJFV0tUZXN0RW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29yZS5oPgog
I2luY2x1ZGUgPEVkamUuaD4KIAotaW50IEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnVzZVgx
MVdpbmRvdzsKK2V4dGVybiBFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudCogZW52aXJv
bm1lbnQ7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RCYXNlOjpp
bml0KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCiB7Ci0gICAgaWYgKCFlY29yZV9ldmFz
X2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGplX2luaXQoKSkg
ewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBjaGFyKiBwcm94
eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBwcm94eVVyaSkK
LSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0KLSAgICByZXR1
cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitFdmFzX09iamVj
dCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7Ci0KLSAgICB3
aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQotICAgIHdoaWxl
ICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChjb3VudCA9
IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3LndlYlZp
ZXcoKTsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCkKK3ZvaWQgRVdLVGVzdEJh
c2U6OlNldFVwKCkKIHsKLSAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBBU1NFUlRf
VFJVRShtX2V3a1Rlc3RWaWV3LmluaXQoZW52aXJvbm1lbnQtPnVzZVgxMVdpbmRvdygpKSk7CiB9
CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6b25Mb2Fk
RmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKIHsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNl
OjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2
ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7Ci0KLSAgICBFV0tUZXN0RWNvcmVFdmFz
IGV2YXModXNlWDExV2luZG93KTsKLSAgICBpZiAoIWV2YXMuZXZhcygpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgZXZhcy5zaG93KCk7Ci0KLSAgICBFV0tUZXN0VmlldyB2aWV3KGV2YXMu
ZXZhcygpLCB1cmwpOwotICAgIGlmICghdmlldy5pbml0KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZl
bnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Ci0KLSAgICBTVEFSVF9URVNUKCk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgqZXZlbnRf
Y2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRf
bmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVzdFBh
Z2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIsIG9uTG9h
ZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBjaGFyKiB1
cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBj
b25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFz
ZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QodXJs
LCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNTRVJUX1RS
VUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVybCkpOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKaW5kZXggZWM3NTEzMi4uMGUyMjM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaApA
QCAtMTksNDkgKzE5LDI1IEBACiAjaWZuZGVmIEVXS1Rlc3RCYXNlX2gKICNkZWZpbmUgRVdLVGVz
dEJhc2VfaAogCi0jaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIK
KyNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNk
ZWZpbmUgUlVOX1RFU1QoYXJncy4uLikgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAgIEFTU0VS
VF9FUSh0cnVlLCBFV0tUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwKLSAgICB9IHdoaWxl
ICgwKQotCi0jZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKTsgICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmlu
ZSBFTkRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OmVu
ZFRlc3QoKTsgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwK
LSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAgIFwKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUg
RUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6aW5pdCgp
OyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNs
YXNzIEVXS1Rlc3RCYXNlIHsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIq
IHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiks
IGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOworY2xhc3MgRVdLVGVz
dEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBib29s
IGluaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bkFsbCgpOwotICAgIHN0YXRpYyB2b2lk
IHN0YXJ0VGVzdCgpOwotICAgIHN0YXRpYyB2b2lkIGVuZFRlc3QoKTsKKyAgICBzdGF0aWMgdm9p
ZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCog
ZXZlbnRJbmZvKTsKKworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotICAgIHN0YXRp
YyBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2Fk
LGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwotICAgIHN0YXRpYyBib29sIHJ1blRl
c3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNv
bnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEg
PSAwKTsKKyAgICB2b2lkIGxvYWRVcmwoY29uc3QgY2hhciogdXJsID0gQ29uZmlnOjpkZWZhdWx0
VGVzdFBhZ2UpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBzdGF0
aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyBtX2V3a1Rlc3RWaWV3OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0tUZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhMWZlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAg
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcg
VVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdEVudmlyb25t
ZW50LmgiCisKKyNpbmNsdWRlIDxFV2ViS2l0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDxFZGplLmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworCitFV0tUZXN0RW52aXJv
bm1lbnQ6OkVXS1Rlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6IG1fdXNl
WDExV2luZG93KHVzZVgxMVdpbmRvdykKK3sKK30KKwordm9pZCBFV0tUZXN0RW52aXJvbm1lbnQ6
OlNldFVwKCkKK3sKKyAgICBBU1NFUlRfR1QoZXdrX2luaXQoKSwgMCk7CisKKyAgICBjb25zdCBj
aGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94eVVybCkK
KyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7Cit9CisKK3ZvaWQg
RVdLVGVzdEVudmlyb25tZW50OjpUZWFyRG93bigpCit7CisgICAgZXdrX3NodXRkb3duKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUxZDY3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2Vl
IHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQor
Ki8KKyNpZm5kZWYgRVdLVGVzdEVudmlyb25tZW50X2gKKyNkZWZpbmUgRVdLVGVzdEVudmlyb25t
ZW50X2gKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVz
dHMgeworCitjbGFzcyBFV0tUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRVdLVGVzdEVudmlyb25tZW50KGJvb2wg
dXNlWDExV2luZG93KTsKKworICAgIGJvb2wgdXNlWDExV2luZG93KCkgY29uc3QgeyByZXR1cm4g
bV91c2VYMTFXaW5kb3c7IH0KKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKTsKK3ByaXZhdGU6CisgICAgYm9vbCBtX3VzZVgxMVdpbmRvdzsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCmluZGV4IGRiYjAwOTIuLjEyZDQyNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcu
Y3BwCkBAIC0xOSwxMzEgKzE5LDUzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RVdLVGVzdFZpZXcuaCIKIAotI2luY2x1ZGUgIkVXS1Rlc3RDb25maWcuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+Ci0KKyNpbmNsdWRlIDx3dGYvTnVsbFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgRVdLVW5pdFRl
c3RzIHsKIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2lu
ZG93KQorRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KCkKIHsKLSAgICBpZiAodXNlWDExV2luZG93
KQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAs
IENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCwgMCkp
OwotICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1
ZmZlcl9uZXcoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVp
Z2h0KSk7CiB9CiAKLUVXS1Rlc3RFY29yZUV2YXM6OkVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hh
ciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdw
b3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNl
WDExV2luZG93KQorYm9vbCBFV0tUZXN0Vmlldzo6aW5pdChpbnQgdXNlWDExV2luZG93LCBFd2tW
aWV3VHlwZSB0ZXN0Vmlld1R5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBtX3dl
YlZpZXcgPSBudWxscHRyOworCiAgICAgaWYgKHVzZVgxMVdpbmRvdykKLSAgICAgICAgbV9lY29y
ZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFtZSwgdmlld3BvcnRfeCwg
dmlld3BvcnRfeSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFfb3B0aW9ucykpOworICAg
ICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIHdpZHRo
LCBoZWlnaHQsIDApKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIo
ZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0X3kpKTsKLX0KLQotRXZh
cyogRVdLVGVzdEVjb3JlRXZhczo6ZXZhcygpCi17Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgp
KQotICAgICAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOwotICAg
IHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rlc3RFY29yZUV2YXM6OnNob3coKQotewotICAgIGlm
IChtX2Vjb3JlRXZhcy5nZXQoKSkKLSAgICAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFz
LmdldCgpKTsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMpCi0gICAg
OiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKQotICAg
ICwgbV9kZWZhdWx0Vmlld1R5cGUoVGlsZWRWaWV3KQotICAgICwgbV93aWR0aChDb25maWc6OmRl
ZmF1bHRWaWV3V2lkdGgpCi0gICAgLCBtX2hlaWdodChDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0
KQotewotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hh
ciogdXJsKQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2Rl
ZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZp
ZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpCi17Ci19
Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBFd2tWaWV3VHlwZSB0eXBl
LCBjb25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkK
LSAgICAsIG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVm
YXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQp
Ci17Ci19CisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJf
bmV3KHdpZHRoLCBoZWlnaHQpKTsKIAotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2
YXMsIEV3a1ZpZXdUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQotICAgIDogbV9ldmFzKGV2YXMpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2RlZmF1
bHRWaWV3VHlwZSh0eXBlKQotICAgICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1faGVpZ2h0KGhl
aWdodCkKLXsKLX0KKyAgICBpZiAoIW1fZWNvcmVFdmFzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLWJvb2wgRVdLVGVzdFZpZXc6OmluaXQoKQotewotICAgIGlmICghbV9ldmFzIHx8IG1fdXJs
LmVtcHR5KCkpCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKKyAgICBF
dmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOworICAgIGlmICgh
ZXZhcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChtX2RlZmF1bHRWaWV3
VHlwZSkgeworICAgIHN3aXRjaCAodGVzdFZpZXdUeXBlKSB7CiAgICAgY2FzZSBTaW5nbGVWaWV3
OgotICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKG1fZXZh
cykpOworICAgICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld19zaW5nbGVfYWRkKGV2
YXMpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbGVkVmlldzoKLSAgICAgICAgbV93
ZWJWaWV3ID0gYWRvcHRSZWYoZXdrX3ZpZXdfdGlsZWRfYWRkKG1fZXZhcykpOworICAgICAgICBt
X3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQoZXZhcykpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICBpZiAoIW1fd2Vi
VmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1f
d2ViVmlldy5nZXQoKSwgQ29uZmlnOjpkZWZhdWx0VGhlbWVQYXRoKTsKLSAgICBld2tfdmlld191
cmlfc2V0KG1fd2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7Ci19CiAKLXZvaWQgRVdLVGVz
dFZpZXc6OnNob3coKQotewotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgbV93aWR0aCwgbV9o
ZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQpOwogICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3LmdldCgpKTsKICAgICBldmFz
X29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LmdldCgpLCBFSU5BX1RSVUUpOwotfQotCi1FdmFz
X09iamVjdCogRVdLVGVzdFZpZXc6Om1haW5GcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViVmlldy5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuIGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG1fd2ViVmlldy5n
ZXQoKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUV2YXMqIEVXS1Rlc3RWaWV3OjpldmFzKCkKLXsK
LSAgICBpZiAobV93ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXZhc19vYmplY3RfZXZh
c19nZXQobV93ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBFV0tUZXN0
Vmlldzo6YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZv
aWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCi17Ci0gICAgaWYgKCFtX3dl
YlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2spOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwg
Y2FsbGJhY2ssIHB0cik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAppbmRleCAxYmRk
OWVkLi5jOTU1ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXS1Rlc3RWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0Vmlldy5oCkBAIC0xOSw1NiArMTksMzIgQEAKICNpZm5kZWYgRVdLVGVz
dFZpZXdfaAogI2RlZmluZSBFV0tUZXN0Vmlld19oCiAKKyNpbmNsdWRlICJFV0tUZXN0Q29uZmln
LmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRl
IDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9lZmwvUmVm
UHRyRWZsLmg+CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1jbGFzcyBFV0tUZXN0RWNv
cmVFdmFzIHsKLXB1YmxpYzoKLSAgICBFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cp
OwotICAgIEVXS1Rlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3
cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBj
b25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KTsKLQotICAgIEV2YXMq
IGV2YXMoKTsKLSAgICB2b2lkIHNob3coKTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8RWNvcmVf
RXZhcz4gbV9lY29yZUV2YXM7Ci19OwotCiBjbGFzcyBFV0tUZXN0VmlldyB7CiBwdWJsaWM6CiAg
ICAgZW51bSBFd2tWaWV3VHlwZSB7CiAgICAgICAgIFNpbmdsZVZpZXcgPSAwLAotICAgICAgICBU
aWxlZFZpZXcsCisgICAgICAgIFRpbGVkVmlldwogICAgIH07CiAKLSAgICBleHBsaWNpdCBFV0tU
ZXN0VmlldyhFdmFzKik7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7
Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwpOwot
ICAgIEVXS1Rlc3RWaWV3KEV2YXMqLCBFd2tWaWV3VHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpOworICAgIEVXS1Rlc3RWaWV3KCk7CiAKICAgICBFdmFzX09iamVj
dCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldy5nZXQoKTsgfQotICAgIEV2YXNfT2JqZWN0
KiBtYWluRnJhbWUoKTsKLSAgICBFdmFzKiBldmFzKCk7Ci0gICAgdm9pZCBzaG93KCk7Ci0KLSAg
ICBib29sIGluaXQoKTsKLSAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRy
KTsKIAorICAgIGJvb2wgaW5pdChpbnQgdXNlWDExV2luZG93ID0gMCwgRXdrVmlld1R5cGUgdGVz
dFZpZXdUeXBlID0gVGlsZWRWaWV3LCBpbnQgd2lkdGggPSBDb25maWc6OmRlZmF1bHRWaWV3V2lk
dGgsIGludCBoZWlnaHQgPSBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KTsKIHByaXZhdGU6CiAg
ICAgRVdLVGVzdFZpZXcoY29uc3QgRVdLVGVzdFZpZXcmKTsKLSAgICBFV0tUZXN0VmlldyBvcGVy
YXRvcj0oY29uc3QgRVdLVGVzdFZpZXcmKTsKKyAgICBFV0tUZXN0VmlldyYgb3BlcmF0b3I9KGNv
bnN0IEVXS1Rlc3RWaWV3Jik7CiAKLSAgICBFdmFzKiBtX2V2YXM7CisgICAgT3duUHRyPEVjb3Jl
X0V2YXM+IG1fZWNvcmVFdmFzOwogICAgIFJlZlB0cjxFdmFzX09iamVjdD4gbV93ZWJWaWV3Owot
Ci0gICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OwotICAgIEV3a1ZpZXdUeXBlIG1fZGVmYXVsdFZp
ZXdUeXBlOwotICAgIHN0ZDo6c3RyaW5nIG1fdXJsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcAppbmRleCBiNWJiYzdiLi45NzUzYzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcApAQCAtMTksNjYgKzE5LDU0IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RC
YXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0Q29uZmlnLmgiCiAjaW5jbHVk
ZSA8RVdlYktpdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8RWNvcmUu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEVXS1VuaXRUZXN0czsKIAogLyoqCiAqIEBicmllZiBDaGVja2lu
ZyB3aGV0aGVyIGZ1bmN0aW9uIHByb3Blcmx5IHJldHVybnMgY29ycmVjdCB2YWx1ZS4KICovCi1z
dGF0aWMgdm9pZCBld2tWaWV3RWRpdGFibGVHZXRDYih2b2lkKiBldmVudEluZm8sIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBkYXRhKQorVEVTVF9GKEVXS1Rlc3RCYXNlLCBld2tfdmlld19lZGl0YWJs
ZV9nZXQpCiB7Ci0gICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KG8sIEVJTkFfRkFMU0UpOwotICAg
IEVYUEVDVF9FUShFSU5BX0ZBTFNFLCBld2tfdmlld19lZGl0YWJsZV9nZXQobykpOwotICAgIEVO
RF9URVNUKCk7Ci19Ci0KLVRFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0
KQotewotICAgIFJVTl9URVNUKGV3a1ZpZXdFZGl0YWJsZUdldENiKTsKKyAgICBsb2FkVXJsKCk7
CisgICAgZXdrX3ZpZXdfZWRpdGFibGVfc2V0KHdlYlZpZXcoKSwgdHJ1ZSk7CisgICAgQVNTRVJU
X1RSVUUoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdlYlZpZXcoKSkpOwogfQogCiAvKioKICogQGJy
aWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0IHVyaSBzdHJpbmcu
CiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdldENiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3VyaV9n
ZXQpCiB7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIiwgZXdrX3Zp
ZXdfdXJpX2dldChvKSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3
LCBld2tfdmlld191cmlfZ2V0KQotewotICAgIFJVTl9URVNUKCJodHRwOi8vd3d3LndlYmtpdC5v
cmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIGxvYWRVcmwoKTsKKyAgICBBU1NFUlRfU1RSRVEo
ZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBDb25maWc6OmRlZmF1bHRUZXN0UGFnZSk7CiB9
CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiBwcm9wZXJseSBnZXQv
c2V0IGZ1bGxzY3JlZW4gc2V0dGluZyB2YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBld2tWaWV3RW5h
YmxlRnVsbHNjcmVlbkNiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZv
aWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1
bGxzY3JlZW4pCiB7CisgICAgbG9hZFVybCgpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3
ZWJWaWV3KSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNj
cmVlbl9nZXQod2ViVmlldygpKSk7CiAKLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3LCB0cnVlKSk7Ci0gICAgQVNTRVJUX1RSVUUo
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFT
U0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXco
KSwgdHJ1ZSkpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxz
Y3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwogCi0gICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldywgZmFsc2UpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAg
IEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZp
ZXcoKSwgZmFsc2UpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVf
ZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7CiAjZWxzZQotICAgIEFTU0VSVF9GQUxTRShld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkp
OwogCi0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5f
c2V0KHdlYlZpZXcsIHRydWUpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFTU0VSVF9GQUxTRShld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCksIHRydWUpKTsKKyAgICBB
U1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmll
dygpKSk7CiAKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNj
cmVlbl9zZXQod2ViVmlldywgZmFsc2UpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFTU0VSVF9GQUxTRShl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCksIGZhbHNlKSk7
CisgICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0
KHdlYlZpZXcoKSkpOwogI2VuZGlmCi0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3
a192aWV3LCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuKQotewotICAgIFJVTl9U
RVNUKGV3a1ZpZXdFbmFibGVGdWxsc2NyZWVuQ2IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMv
dGVzdF9ydW5uZXIuY3BwCmluZGV4IDcwMmE2MWYuLmU4ZjNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKQEAgLTE2LDI1ICsxNiwzNyBAQAogICAgIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiAqLwog
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RC
YXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlIDxnZXRvcHQuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi1zdGF0aWMgdm9p
ZCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit1c2luZyBuYW1l
c3BhY2UgRVdLVW5pdFRlc3RzOworCitFV0tUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50ID0g
MDsKKworc3RhdGljIGludCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiB7CisgICAgaW50IHVzZVgxMVdpbmRvdyA9IDA7CiAgICAgc3RhdGljIGNvbnN0IG9wdGlv
biBvcHRpb25zW10gPSB7Ci0gICAgICAgIHsidXNlWDExV2luZG93Iiwgbm9fYXJndW1lbnQsICZF
V0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5kb3csIHRydWV9LAorICAgICAgICB7
InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAmdXNlWDExV2luZG93LCB0cnVlfSwKICAgICAg
ICAgezAsIDAsIDAsIDB9CiAgICAgfTsKIAogICAgIGludCBvcHRpb247CiAgICAgd2hpbGUgKChv
cHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiIiwgb3B0aW9ucywgMCkpICE9IC0xKSB7
IH0KKworICAgIHJldHVybiB1c2VYMTFXaW5kb3c7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6c2h1
dGRvd25BbGwpOwotICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOworICAgIGlu
dCB1c2VYMTFXaW5kb3cgPSBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKKyAgICBl
bnZpcm9ubWVudCA9IG5ldyBFV0tUZXN0RW52aXJvbm1lbnQodXNlWDExV2luZG93KTsKKyAgICB0
ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpOwogICAgIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCiAgICAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166677</attachid>
            <date>2012-10-02 05:41:14 -0700</date>
            <delta_ts>2012-10-02 07:35:03 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>22821</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZDExMzY1Mi4uMDZmMWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0xMC0wMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBBZGQgZmlsZSBFV0tUZXN0RW52aXJvbm1lbnQuY3BwIHRvIGJ1aWxkIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IGlzIHJlbGF0ZWQgdG8gbW9kaWZpY2F0aW9ucyBpbiB3azEgdW5pdCB0ZXN0cy4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorCiAyMDEyLTA5LTI3ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBtb3JlIHVudXNlZCBXSzEg
cGx1Zy1pbiBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4MjNiMDYyLi43YTU0NzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTM0NCw2ICszNDQsNyBAQCBBRERfREVGSU5J
VElPTlMoLURERUZBVUxUX1RFU1RfUEFHRV9ESVI9XCIke0RFRkFVTFRfVEVTVF9QQUdFX0RJUn1c
IgogCiBBRERfTElCUkFSWShld2tUZXN0VXRpbHMKICAgICAke1dFQktJVF9ESVJ9L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAorICAgICR7V0VCS0lUX0RJUn0vZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmNwcAogICAgICR7V0VCS0lUX0RJ
Un0vZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwCiApCiBUQVJHRVRfTElO
S19MSUJSQVJJRVMoZXdrVGVzdFV0aWxzICR7RVdLVW5pdFRlc3RzX0xJQlJBUklFU30pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggNDE2Mzc3My4uZjQ1OTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDEyLTEwLTAyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1VUXSBSZWZhY3RvcmluZyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiB0ZXN0aW5nIGZyYW1ld29yayBmb3Igd2sxLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgcmVhc29uIG9mIGNoYW5naW5nLCB3YXMgdG8gYWRqdXN0
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGd0ZXN0IGZlYXR1cmVzCisgICAgICAgIHJl
bGF0ZWQgdG8gY2xlYW5pbmcgKFNldFVwLCBUZWFyRG93biksIGNsZWFuaW5nIGNvZGUgaW4gdGVy
bXMgb2YgdXNlbGVzcyBtZXRob2RzCisgICAgICAgIGFuZCBsYXN0bHkgdG8gbWFrZSBmcmFtZXdv
cmsgZWFzaWVyIHRvIHVzZS4KKworICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVz
dEJhc2UuY3BwOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6RVdLVGVzdEJh
c2UpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6d2ViVmlldyk6IFJldHVy
bnMgY3VycmVudCB3ZWJ2aWV3LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0QmFzZTo6
U2V0VXApOgorICAgICAgICBCZWZvcmUgdGVzdCBpcyBzdGFydGVkLCBTZXRVcCBpcyBjYWxsZWQu
CisgICAgICAgIFVzZWQgdGhpcyB0byBpbml0aWFsaXplIHRlc3Qgdmlldy4KKyAgICAgICAgKEVX
S1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6Om9uTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEJhc2U6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6IEl0IHdhaXRzIHRp
bGwgdGVzdCBwYWdlIHdpbGwgYmUgcHJvcGVybHkgbG9hZGVkLgorICAgICAgICAoRVdLVW5pdFRl
c3RzOjpFV0tUZXN0QmFzZTo6bG9hZFVybCk6IFN0YXJ0cyBsb2FkaW5nIHRlc3QgcGFnZS4KKyAg
ICAgICAgKiB0ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmg6CisgICAgICAgICogdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwOgorICAgICAgICBVc2VkIHRv
IGhhdmUgZ2xvYmFsIFNldFVwIGFuZCBUZWFyRG93bi4KKyAgICAgICAgR2xvYmFsIFNldFVwIHN0
YXJ0cyBpbml0aWFsaXphdGlvbiBvZiB3ZWJraXQgd2hlcmVhc2UKKyAgICAgICAgZ2xvYmFsIFRl
YXJEb3duIHNodXRzIGl0IGRvd24uIEdlbmVyYWxseSB3ZSB3b3VsZCBsaWtlIHRvIGhhdmUKKyAg
ICAgICAgb25seSBvbmUgaW5pdGlhbGl6YXRpb24gb2Ygd2Via2l0IHdoaWxlIHRlc3RzIGFyZSBl
eGVjdXRlZC4KKyAgICAgICAgKEVXS1VuaXRUZXN0cyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6
OkVXS1Rlc3RFbnZpcm9ubWVudDo6RVdLVGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXS1Vu
aXRUZXN0czo6RVdLVGVzdEVudmlyb25tZW50OjpTZXRVcCk6ICBTdGFydHMgaW5pdGlhbGl6YXRp
b24gb2Ygd2Via2l0LgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0RW52aXJvbm1lbnQ6
OlRlYXJEb3duKTogU2h1dHMgZG93biBvZiB3ZWJraXQuCisgICAgICAgICogdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEVXS1VuaXRUZXN0cyk6Cisg
ICAgICAgIChFV0tUZXN0RW52aXJvbm1lbnQpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tU
ZXN0RW52aXJvbm1lbnQ6OnVzZVgxMVdpbmRvdyk6CisgICAgICAgICogdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0Vmlldy5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3
OjpFV0tUZXN0Vmlldyk6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RWaWV3Ojppbml0
KTogU3RhcnRzIGluaXRpYWxpemF0aW9uIG9mIHRlc3Qgdmlldy4KKyAgICAgICAgKiB0ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3Lmg6CisgICAgICAgIChFV0tUZXN0Vmlldyk6CisgICAg
ICAgICogdGVzdHMvdGVzdF9ld2tfdmlldy5jcHA6IGFkanVzdGVkIGN1cnJlbnQgdW5pdCB0ZXN0
cyB0byBuZXcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIHRl
c3RzL3Rlc3RfcnVubmVyLmNwcDogZW50cnkgcG9pbnQgb2YgYWxsIHRlc3RzLgorICAgICAgICAo
cGFyc2VDdXN0b21Bcmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDktMjggIE1p
a2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAg
ICAgQ29kZSBpbnNpZGUgRnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZSgpIGltcGxl
bWVudGF0aW9ucyBjYW4gYmUgc2hhcmVkIGFtb25nIGRpZmZlcmVudCBXSyBwb3J0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNw
cAppbmRleCAyZDNlMmFlLi5kMzVmODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmNwcApAQCAtMTksODQgKzE5LDQ1IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRVdLVGVzdEJhc2UuaCIKIAotI2luY2x1
ZGUgIkVXS1Rlc3RDb25maWcuaCIKLSNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgorI2luY2x1ZGUg
IkVXS1Rlc3RFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KLQogI2luY2x1ZGUg
PEVjb3JlLmg+CiAjaW5jbHVkZSA8RWRqZS5oPgogCi1pbnQgRVdLVW5pdFRlc3RzOjpFV0tUZXN0
QmFzZTo6dXNlWDExV2luZG93OworZXh0ZXJuIEVXS1VuaXRUZXN0czo6RVdLVGVzdEVudmlyb25t
ZW50KiBlbnZpcm9ubWVudDsKIAogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWJvb2wgRVdL
VGVzdEJhc2U6OmluaXQoKQorRVdLVGVzdEJhc2U6OkVXS1Rlc3RCYXNlKCkKIHsKLSAgICBpZiAo
IWVjb3JlX2V2YXNfaW5pdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVk
amVfaW5pdCgpKSB7Ci0gICAgICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCByZXQgPSBld2tfaW5pdCgpOwotICAgIGNvbnN0
IGNoYXIqIHByb3h5VXJpID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7Ci0KLSAgICBpZiAocmV0ICYm
IHByb3h5VXJpKQotICAgICAgICBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KHByb3h5VXJpKTsK
LQotICAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OnNodXRkb3duQWxsKCkK
K0V2YXNfT2JqZWN0KiBFV0tUZXN0QmFzZTo6d2ViVmlldygpCiB7Ci0gICAgaW50IGNvdW50ID0g
MDsKLQotICAgIHdoaWxlICgoY291bnQgPSBlY29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9
Ci0gICAgd2hpbGUgKChjb3VudCA9IGVkamVfc2h1dGRvd24oKSkgPiAwKSB7IH0KLSAgICB3aGls
ZSAoKGNvdW50ID0gZXdrX3NodXRkb3duKCkpID4gMCkgeyB9CisgICAgcmV0dXJuIG1fZXdrVGVz
dFZpZXcud2ViVmlldygpOwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKQordm9p
ZCBFV0tUZXN0QmFzZTo6U2V0VXAoKQogewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwor
ICAgIEFTU0VSVF9UUlVFKG1fZXdrVGVzdFZpZXcuaW5pdChlbnZpcm9ubWVudC0+dXNlWDExV2lu
ZG93KCkpKTsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6ZW5kVGVzdCgpCit2b2lkIEVXS1Rlc3RC
YXNlOjpvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9p
ZCogZXZlbnRJbmZvKQogewogICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CiB9CiAKLWJvb2wg
RVdLVGVzdEJhc2U6OmNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2Fs
bGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFt
ZSwgdm9pZCogZXZlbnRfZGF0YSkKLXsKLSAgICBFRkxfSU5JVF9SRVQoKTsKLQotICAgIEVXS1Rl
c3RFY29yZUV2YXMgZXZhcyh1c2VYMTFXaW5kb3cpOwotICAgIGlmICghZXZhcy5ldmFzKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBldmFzLnNob3coKTsKLQotICAgIEVXS1Rlc3RWaWV3
IHZpZXcoZXZhcy5ldmFzKCksIHVybCk7Ci0gICAgaWYgKCF2aWV3LmluaXQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdmlldy5iaW5kRXZlbnRzKGV2ZW50X2NhbGxiYWNrLCBldmVu
dF9uYW1lLCBldmVudF9kYXRhKTsKLSAgICB2aWV3LnNob3coKTsKLQotICAgIFNUQVJUX1RFU1Qo
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KHZv
aWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBj
aGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tUZXN0QmFzZTo6d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGVzdChDb25maWc6OmRl
ZmF1bHRUZXN0UGFnZSwgZXZlbnRfY2FsbGJhY2ssIGV2ZW50X25hbWUsIGV2ZW50X2RhdGEpOwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJsb2FkLGZpbmlz
aGVkIiwgb25Mb2FkRmluaXNoZWQsIDApOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJsb2FkLGZpbmlz
aGVkIiwgb25Mb2FkRmluaXNoZWQpOwogfQogCi1ib29sIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGNv
bnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit2b2lk
IEVXS1Rlc3RCYXNlOjpsb2FkVXJsKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlVGVzdCh1cmwsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAg
ICBBU1NFUlRfVFJVRShld2tfdmlld191cmlfc2V0KHdlYlZpZXcoKSwgdXJsKSk7CisgICAgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaAppbmRleCBlYzc1MTMyLi4wZTIyMzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rl
c3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0QmFzZS5oCkBAIC0xOSw0OSArMTksMjUgQEAKICNpZm5kZWYgRVdLVGVzdEJhc2VfaAogI2Rl
ZmluZSBFV0tUZXN0QmFzZV9oCiAKLSNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSAiRVdLVGVz
dENvbmZpZy5oIgorI2luY2x1ZGUgIkVXS1Rlc3RWaWV3LmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KIAotI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKLSAgICBkbyB7ICAgIFwKLSAg
ICAgICAgQVNTRVJUX0VRKHRydWUsIEVXS1Rlc3RCYXNlOjpydW5UZXN0KGFyZ3MpKTsgICAgXAot
ICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgU1RBUlRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAg
IFwKLSAgICAgICAgRVdLVGVzdEJhc2U6OnN0YXJ0VGVzdCgpOyAgIFwKLSAgICB9IHdoaWxlICgw
KQotCi0jZGVmaW5lIEVORF9URVNUKCkgICAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tU
ZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBFRkxfSU5J
VF9SRVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBpZiAoIUVXS1Rlc3RCYXNlOjppbml0
KCkpICAgXAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICBcCi0gICAgfSB3aGlsZSAoMCkK
LQotI2RlZmluZSBFRkxfSU5JVCgpICBcCi0gICAgZG8geyAgICBcCi0gICAgICAgIEVXS1Rlc3RC
YXNlOjppbml0KCk7ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCiBuYW1lc3BhY2UgRVdLVW5pdFRl
c3RzIHsKIAotY2xhc3MgRVdLVGVzdEJhc2UgewotICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3Qo
Y29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Citj
bGFzcyBFV0tUZXN0QmFzZTogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIGJvb2wgaW5pdCgpOwotICAgIHN0YXRpYyB2b2lkIHNodXRkb3duQWxsKCk7Ci0gICAg
c3RhdGljIHZvaWQgc3RhcnRUZXN0KCk7Ci0gICAgc3RhdGljIHZvaWQgZW5kVGVzdCgpOworICAg
IHN0YXRpYyB2b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJW
aWV3LCB2b2lkKiBldmVudEluZm8pOworCisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKK3Byb3RlY3RlZDoKKyAgICBFV0tUZXN0QmFzZSgpOwog
Ci0gICAgc3RhdGljIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZvaWQgKCpldmVudF9j
YWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9u
YW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7Ci0gICAgc3RhdGlj
IGJvb2wgcnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCos
IHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCog
ZXZlbnRfZGF0YSA9IDApOworICAgIHZvaWQgbG9hZFVybChjb25zdCBjaGFyKiB1cmwgPSBDb25m
aWc6OmRlZmF1bHRUZXN0UGFnZSk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
IAotICAgIHN0YXRpYyBpbnQgdXNlWDExV2luZG93OworICAgIEVXS1Rlc3RWaWV3IG1fZXdrVGVz
dFZpZXc7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNmExZmVhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFV0tU
ZXN0RW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgPEVXZWJLaXQuaD4KKyNpbmNsdWRlIDxFY29y
ZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKworbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CisKK0VX
S1Rlc3RFbnZpcm9ubWVudDo6RVdLVGVzdEVudmlyb25tZW50KGJvb2wgdXNlWDExV2luZG93KQor
ICAgIDogbV91c2VYMTFXaW5kb3codXNlWDExV2luZG93KQoreworfQorCit2b2lkIEVXS1Rlc3RF
bnZpcm9ubWVudDo6U2V0VXAoKQoreworICAgIEFTU0VSVF9HVChld2tfaW5pdCgpLCAwKTsKKwor
ICAgIGNvbnN0IGNoYXIqIHByb3h5VXJsID0gZ2V0ZW52KCJodHRwX3Byb3h5Iik7CisgICAgaWYg
KHByb3h5VXJsKQorICAgICAgICBld2tfbmV0d29ya19wcm94eV91cmlfc2V0KHByb3h5VXJsKTsK
K30KKwordm9pZCBFV0tUZXN0RW52aXJvbm1lbnQ6OlRlYXJEb3duKCkKK3sKKyAgICBld2tfc2h1
dGRvd24oKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODg0ZjQ1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmgKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcgVVNBCisqLworI2lmbmRlZiBFV0tUZXN0RW52aXJvbm1lbnRfaAorI2RlZmluZSBFV0tU
ZXN0RW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNl
IEVXS1VuaXRUZXN0cyB7CisKK2NsYXNzIEVXS1Rlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OkVudmlyb25tZW50IHsKK3B1YmxpYzoKKyAgICBFV0tUZXN0RW52aXJvbm1lbnQoYm9v
bCB1c2VYMTFXaW5kb3cpOworCisgICAgYm9vbCB1c2VYMTFXaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX3VzZVgxMVdpbmRvdzsgfQorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpOworcHJpdmF0ZToKKyAgICBib29sIG1fdXNlWDExV2luZG93Owor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKaW5kZXggZGJiMDA5Mi4uMTJkNDI1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmll
dy5jcHAKQEAgLTE5LDEzMSArMTksNTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFV0tUZXN0Vmlldy5oIgogCi0jaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgogI2luY2x1ZGUg
PEVXZWJLaXQuaD4KLQorI2luY2x1ZGUgPHd0Zi9OdWxsUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBFV0tVbml0
VGVzdHMgewogCi1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFX
aW5kb3cpCitFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoKQogewotICAgIGlmICh1c2VYMTFXaW5k
b3cpCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwg
MCwgQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0LCAw
KSk7Ci0gICAgZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNf
YnVmZmVyX25ldyhDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdI
ZWlnaHQpKTsKIH0KIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhjb25zdCBj
aGFyKiBlbmdpbmVfbmFtZSwgaW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBpbnQgdmll
d3BvcnRfdywgaW50IHZpZXdwb3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMsIGludCB1
c2VYMTFXaW5kb3cpCitib29sIEVXS1Rlc3RWaWV3Ojppbml0KGludCB1c2VYMTFXaW5kb3csIEV3
a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIG1f
d2ViVmlldyA9IG51bGxwdHI7CisKICAgICBpZiAodXNlWDExV2luZG93KQotICAgICAgICBtX2Vj
b3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2luZV9uYW1lLCB2aWV3cG9ydF94
LCB2aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBleHRyYV9vcHRpb25zKSk7Cisg
ICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgMCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0
cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcodmlld3BvcnRfeCwgdmlld3BvcnRfeSkpOwotfQotCi1F
dmFzKiBFV0tUZXN0RWNvcmVFdmFzOjpldmFzKCkKLXsKLSAgICBpZiAobV9lY29yZUV2YXMuZ2V0
KCkpCi0gICAgICAgIHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRVdLVGVzdEVjb3JlRXZhczo6c2hvdygpCi17Ci0gICAg
aWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2
YXMuZ2V0KCkpOwotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZhcykKLSAg
ICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpCi0g
ICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENvbmZpZzo6
ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWln
aHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBjb25zdCBj
aGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1f
ZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0
Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKLXsK
LX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdUeXBlIHR5
cGUsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwodXJs
KQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUodHlwZSkKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpk
ZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdo
dCkKLXsKLX0KKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZl
cl9uZXcod2lkdGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyog
ZXZhcywgRXdrVmlld1R5cGUgdHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fZGVm
YXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICwgbV9oZWlnaHQo
aGVpZ2h0KQotewotfQorICAgIGlmICghbV9lY29yZUV2YXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotYm9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCi17Ci0gICAgaWYgKCFtX2V2YXMgfHwgbV91
cmwuZW1wdHkoKSkKKyAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOworICAg
IEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7CisgICAgaWYg
KCFldmFzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKG1fZGVmYXVsdFZp
ZXdUeXBlKSB7CisgICAgc3dpdGNoICh0ZXN0Vmlld1R5cGUpIHsKICAgICBjYXNlIFNpbmdsZVZp
ZXc6Ci0gICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3NpbmdsZV9hZGQobV9l
dmFzKSk7CisgICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3NpbmdsZV9hZGQo
ZXZhcykpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGlsZWRWaWV3OgotICAgICAgICBt
X3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQobV9ldmFzKSk7CisgICAgICAg
IG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3RpbGVkX2FkZChldmFzKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgIGlmICghbV93
ZWJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBld2tfdmlld190aGVtZV9zZXQo
bV93ZWJWaWV3LmdldCgpLCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3a192aWV3
X3VyaV9zZXQobV93ZWJWaWV3LmdldCgpLCBtX3VybC5jX3N0cigpKTsKLX0KIAotdm9pZCBFV0tU
ZXN0Vmlldzo6c2hvdygpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBt
X2hlaWdodCk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwgd2lkdGgs
IGhlaWdodCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwogICAgIGV2
YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19Ci0KLUV2
YXNfT2JqZWN0KiBFV0tUZXN0Vmlldzo6bWFpbkZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJWaWV3
LmdldCgpKQotICAgICAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93ZWJWaWV3
LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRXZhcyogRVdLVGVzdFZpZXc6OmV2YXMoKQot
ewotICAgIGlmIChtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybiBldmFzX29iamVjdF9l
dmFzX2dldChtX3dlYlZpZXcuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEVXS1Rl
c3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cikKLXsKLSAgICBpZiAoIW1f
d2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfZGVsKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1l
LCBjYWxsYmFjaywgcHRyKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oIGIvU291
cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCmluZGV4IDFi
ZGQ5ZWQuLmM5NTVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU2ICsxOSwzMiBAQAogI2lmbmRlZiBFV0tU
ZXN0Vmlld19oCiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUgIkVXS1Rlc3RDb25m
aWcuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9S
ZWZQdHJFZmwuaD4KIAogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNsYXNzIEVXS1Rlc3RF
Y29yZUV2YXMgewotcHVibGljOgotICAgIEVXS1Rlc3RFY29yZUV2YXMoaW50IHVzZVgxMVdpbmRv
dyk7Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhjb25zdCBjaGFyKiBlbmdpbmVfbmFtZSwgaW50IHZp
ZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBpbnQgdmlld3BvcnRfdywgaW50IHZpZXdwb3J0X2gs
IGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMsIGludCB1c2VYMTFXaW5kb3cpOwotCi0gICAgRXZh
cyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwotCi1wcml2YXRlOgotICAgIE93blB0cjxFY29y
ZV9FdmFzPiBtX2Vjb3JlRXZhczsKLX07Ci0KIGNsYXNzIEVXS1Rlc3RWaWV3IHsKIHB1YmxpYzoK
ICAgICBlbnVtIEV3a1ZpZXdUeXBlIHsKICAgICAgICAgU2luZ2xlVmlldyA9IDAsCi0gICAgICAg
IFRpbGVkVmlldywKKyAgICAgICAgVGlsZWRWaWV3CiAgICAgfTsKIAotICAgIGV4cGxpY2l0IEVX
S1Rlc3RWaWV3KEV2YXMqKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgY29uc3QgY2hhciogdXJs
KTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIqIHVybCk7
Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1cmwsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgRVdLVGVzdFZpZXcoKTsKIAogICAgIEV2YXNfT2Jq
ZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9Ci0gICAgRXZhc19PYmpl
Y3QqIG1haW5GcmFtZSgpOwotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lkIHNob3coKTsKLQot
ICAgIGJvb2wgaW5pdCgpOwotICAgIHZvaWQgYmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBw
dHIpOwogCisgICAgYm9vbCBpbml0KGludCB1c2VYMTFXaW5kb3cgPSAwLCBFd2tWaWV3VHlwZSB0
ZXN0Vmlld1R5cGUgPSBUaWxlZFZpZXcsIGludCB3aWR0aCA9IENvbmZpZzo6ZGVmYXVsdFZpZXdX
aWR0aCwgaW50IGhlaWdodCA9IENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpOwogcHJpdmF0ZToK
ICAgICBFV0tUZXN0Vmlldyhjb25zdCBFV0tUZXN0VmlldyYpOwotICAgIEVXS1Rlc3RWaWV3IG9w
ZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOworICAgIEVXS1Rlc3RWaWV3JiBvcGVyYXRvcj0o
Y29uc3QgRVdLVGVzdFZpZXcmKTsKIAotICAgIEV2YXMqIG1fZXZhczsKKyAgICBPd25QdHI8RWNv
cmVfRXZhcz4gbV9lY29yZUV2YXM7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX3dlYlZpZXc7
Ci0KLSAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7Ci0gICAgRXdrVmlld1R5cGUgbV9kZWZhdWx0
Vmlld1R5cGU7Ci0gICAgc3RkOjpzdHJpbmcgbV91cmw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IGI1YmJjN2IuLmZmNGFiYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBAIC0xOSw2NiArMTksNTQg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLVGVz
dEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaCIKICNpbmNs
dWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxFY29y
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAvKioKICogQGJyaWVmIENoZWNr
aW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBjb3JyZWN0IHZhbHVlLgogKi8K
LXN0YXRpYyB2b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X2VkaXRh
YmxlX2dldCkKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQobywgRUlOQV9GQUxTRSk7Ci0g
ICAgRVhQRUNUX0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRhYmxlX2dldChvKSk7Ci0gICAg
RU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19lZGl0YWJsZV9n
ZXQpCi17Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0Q2IpOworICAgIGxvYWRVcmwo
KTsKKyAgICBld2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygpLCBFSU5BX0ZBTFNFKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KHdlYlZpZXcoKSkpOwogfQogCiAv
KioKICogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0IHVy
aSBzdHJpbmcuCiAqLwotc3RhdGljIHZvaWQgZXdrVmlld1VyaUdldENiKHZvaWQqIGV2ZW50SW5m
bywgRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192
aWV3X3VyaV9nZXQpCiB7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3LndlYmtpdC5vcmcv
IiwgZXdrX3ZpZXdfdXJpX2dldChvKSk7Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0
X2V3a192aWV3LCBld2tfdmlld191cmlfZ2V0KQotewotICAgIFJVTl9URVNUKCJodHRwOi8vd3d3
LndlYmtpdC5vcmciLCBld2tWaWV3VXJpR2V0Q2IpOworICAgIGxvYWRVcmwoKTsKKyAgICBBU1NF
UlRfU1RSRVEoZXdrX3ZpZXdfdXJpX2dldCh3ZWJWaWV3KCkpLCBDb25maWc6OmRlZmF1bHRUZXN0
UGFnZSk7CiB9CiAKIC8qKgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiBwcm9w
ZXJseSBnZXQvc2V0IGZ1bGxzY3JlZW4gc2V0dGluZyB2YWx1ZS4KICovCi1zdGF0aWMgdm9pZCBl
d2tWaWV3RW5hYmxlRnVsbHNjcmVlbkNiKHZvaWQqIGV2ZW50SW5mbywgRXZhc19PYmplY3QqIHdl
YlZpZXcsIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2Z1bGxzY3JlZW4pCiB7CisgICAgbG9hZFVybCgpOwogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2Ny
ZWVuX2dldCh3ZWJWaWV3KSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7CiAKLSAgICBBU1NFUlRfVFJVRShld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3LCB0cnVlKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykp
OworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0
KHdlYlZpZXcoKSwgdHJ1ZSkpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwogCi0gICAgQVNTRVJUX1RSVUUoZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldywgZmFsc2UpKTsKLSAgICBB
U1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmll
dykpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5f
c2V0KHdlYlZpZXcoKSwgZmFsc2UpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7CiAjZWxzZQotICAgIEFTU0VSVF9G
QUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdl
YlZpZXcoKSkpOwogCi0gICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1
bGxzY3JlZW5fc2V0KHdlYlZpZXcsIHRydWUpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFTU0VSVF9GQUxT
RShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCksIHRydWUp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9n
ZXQod2ViVmlldygpKSk7CiAKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnVsbHNjcmVlbl9zZXQod2ViVmlldywgZmFsc2UpKTsKLSAgICBBU1NFUlRfRkFMU0UoZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldykpOworICAgIEFTU0VS
VF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3KCks
IGZhbHNlKSk7CisgICAgQVNTRVJUX0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxz
Y3JlZW5fZ2V0KHdlYlZpZXcoKSkpOwogI2VuZGlmCi0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVT
VCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuKQotewot
ICAgIFJVTl9URVNUKGV3a1ZpZXdFbmFibGVGdWxsc2NyZWVuQ2IpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCmluZGV4IDcwMmE2MWYuLmU4ZjNjMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKQEAgLTE2LDI1ICsxNiwzNyBAQAogICAg
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcg
VVNBCiAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJVbml0VGVzdFV0aWxz
L0VXS1Rlc3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlIDxnZXRvcHQuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi1z
dGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit1
c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOworCitFV0tUZXN0RW52aXJvbm1lbnQqIGVudmly
b25tZW50ID0gMDsKKworc3RhdGljIGludCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7CisgICAgaW50IHVzZVgxMVdpbmRvdyA9IDA7CiAgICAgc3RhdGljIGNv
bnN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0gICAgICAgIHsidXNlWDExV2luZG93Iiwgbm9fYXJn
dW1lbnQsICZFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp1c2VYMTFXaW5kb3csIHRydWV9LAor
ICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAmdXNlWDExV2luZG93LCB0cnVl
fSwKICAgICAgICAgezAsIDAsIDAsIDB9CiAgICAgfTsKIAogICAgIGludCBvcHRpb247CiAgICAg
d2hpbGUgKChvcHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiIiwgb3B0aW9ucywgMCkp
ICE9IC0xKSB7IH0KKworICAgIHJldHVybiB1c2VYMTFXaW5kb3c7CiB9CiAKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgICBhdGV4aXQoRVdLVW5pdFRlc3RzOjpFV0tUZXN0
QmFzZTo6c2h1dGRvd25BbGwpOwotICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3Yp
OworICAgIGludCB1c2VYMTFXaW5kb3cgPSBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2
KTsKKyAgICBlbnZpcm9ubWVudCA9IG5ldyBFV0tUZXN0RW52aXJvbm1lbnQodXNlWDExV2luZG93
KTsKKyAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpOwog
ICAgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCiAgICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKIH0K
</data>
<flag name="review"
          id="179092"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166687</attachid>
            <date>2012-10-02 07:35:03 -0700</date>
            <delta_ts>2012-10-02 08:59:40 -0700</delta_ts>
            <desc>[EFL][UT] Refactoring an implementation of testing framework for wk1.</desc>
            <filename>wk1-ut-update.patch</filename>
            <type>text/plain</type>
            <size>22820</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZDExMzY1Mi4uZmM3N2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0xMC0wMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBBZGQgZmlsZSBFV0tUZXN0RW52aXJvbm1lbnQuY3BwIHRvIGJ1aWxkIHN5c3Rl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIENoYW5nZSBp
cyByZWxhdGVkIHRvIG1vZGlmaWNhdGlvbnMgaW4gd2sxIHVuaXQgdGVzdHMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wOS0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgbW9yZSB1bnVzZWQgV0sxIHBs
dWctaW4gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODIzYjA2Mi4uN2E1NDcxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNDQsNiArMzQ0LDcgQEAgQUREX0RFRklOSVRJ
T05TKC1EREVGQVVMVF9URVNUX1BBR0VfRElSPVwiJHtERUZBVUxUX1RFU1RfUEFHRV9ESVJ9XCIK
IAogQUREX0xJQlJBUlkoZXdrVGVzdFV0aWxzCiAgICAgJHtXRUJLSVRfRElSfS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKKyAgICAke1dFQktJVF9ESVJ9L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKICAgICAke1dFQktJVF9ESVJ9
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmNwcAogKQogVEFSR0VUX0xJTktf
TElCUkFSSUVTKGV3a1Rlc3RVdGlscyAke0VXS1VuaXRUZXN0c19MSUJSQVJJRVN9KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDQxNjM3NzMuLjZhNzQ5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0OCBAQAorMjAxMi0xMC0wMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtVVF0gUmVmYWN0b3JpbmcgYW4gaW1wbGVtZW50YXRpb24gb2Yg
dGVzdGluZyBmcmFtZXdvcmsgZm9yIHdrMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcg
S2ltLgorCisgICAgICAgIFRoZSByZWFzb24gb2YgY2hhbmdpbmcsIHdhcyB0byBhZGp1c3QgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgZ3Rlc3QgZmVhdHVyZXMKKyAgICAgICAgcmVsYXRl
ZCB0byBjbGVhbmluZyAoU2V0VXAsIFRlYXJEb3duKSwgY2xlYW5pbmcgY29kZSBpbiB0ZXJtcyBv
ZiB1c2VsZXNzIG1ldGhvZHMKKyAgICAgICAgYW5kIGxhc3RseSB0byBtYWtlIGZyYW1ld29yayBl
YXNpZXIgdG8gdXNlLgorCisgICAgICAgICogdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFz
ZS5jcHA6CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSk6
CisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjp3ZWJWaWV3KTogUmV0dXJucyBj
dXJyZW50IHdlYnZpZXcuCisgICAgICAgIChFV0tVbml0VGVzdHM6OkVXS1Rlc3RCYXNlOjpTZXRV
cCk6CisgICAgICAgIEJlZm9yZSB0ZXN0IGlzIHN0YXJ0ZWQsIFNldFVwIGlzIGNhbGxlZC4KKyAg
ICAgICAgVXNlZCB0aGlzIHRvIGluaXRpYWxpemUgdGVzdCB2aWV3LgorICAgICAgICAoRVdLVW5p
dFRlc3RzOjpFV0tUZXN0QmFzZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRVdLVW5pdFRl
c3RzOjpFV0tUZXN0QmFzZTo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKTogSXQgd2FpdHMgdGlsbCB0
ZXN0IHBhZ2Ugd2lsbCBiZSBwcm9wZXJseSBsb2FkZWQuCisgICAgICAgIChFV0tVbml0VGVzdHM6
OkVXS1Rlc3RCYXNlOjpsb2FkVXJsKTogU3RhcnRzIGxvYWRpbmcgdGVzdCBwYWdlLgorICAgICAg
ICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuaDoKKyAgICAgICAgKiB0ZXN0cy9V
bml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIFVzZWQgdG8gaGF2
ZSBnbG9iYWwgU2V0VXAgYW5kIFRlYXJEb3duLgorICAgICAgICBHbG9iYWwgU2V0VXAgc3RhcnRz
IGluaXRpYWxpemF0aW9uIG9mIHdlYmtpdCB3aGVyZWFzZQorICAgICAgICBnbG9iYWwgVGVhckRv
d24gc2h1dHMgaXQgZG93bi4gR2VuZXJhbGx5IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZQorICAgICAg
ICBvbmx5IG9uZSBpbml0aWFsaXphdGlvbiBvZiB3ZWJraXQgd2hpbGUgdGVzdHMgYXJlIGV4ZWN1
dGVkLgorICAgICAgICAoRVdLVW5pdFRlc3RzKToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdL
VGVzdEVudmlyb25tZW50OjpFV0tUZXN0RW52aXJvbm1lbnQpOgorICAgICAgICAoRVdLVW5pdFRl
c3RzOjpFV0tUZXN0RW52aXJvbm1lbnQ6OlNldFVwKTogU3RhcnRzIGluaXRpYWxpemF0aW9uIG9m
IHdlYmtpdC4KKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVudmlyb25tZW50OjpUZWFy
RG93bik6IFNodXRzIGRvd24gb2Ygd2Via2l0LgorICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLVGVzdEVudmlyb25tZW50Lmg6CisgICAgICAgIChFV0tVbml0VGVzdHMpOgorICAgICAg
ICAoRVdLVGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXS1VuaXRUZXN0czo6RVdLVGVzdEVu
dmlyb25tZW50Ojp1c2VYMTFXaW5kb3cpOgorICAgICAgICAqIHRlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLVGVzdFZpZXcuY3BwOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6RVdL
VGVzdFZpZXcpOgorICAgICAgICAoRVdLVW5pdFRlc3RzOjpFV0tUZXN0Vmlldzo6aW5pdCk6IFN0
YXJ0cyBpbml0aWFsaXphdGlvbiBvZiB0ZXN0IHZpZXcuCisgICAgICAgICogdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0tUZXN0Vmlldy5oOgorICAgICAgICAoRVdLVGVzdFZpZXcpOgorICAgICAgICAq
IHRlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwOiBhZGp1c3RlZCBjdXJyZW50IHVuaXQgdGVzdHMgdG8g
bmV3IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy90
ZXN0X3J1bm5lci5jcHA6IGVudHJ5IHBvaW50IG9mIGFsbCB0ZXN0cy4KKyAgICAgICAgKHBhcnNl
Q3VzdG9tQXJndW1lbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA5LTI4ICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIENv
ZGUgaW5zaWRlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoKSBpbXBsZW1lbnRh
dGlvbnMgY2FuIGJlIHNoYXJlZCBhbW9uZyBkaWZmZXJlbnQgV0sgcG9ydHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJhc2UuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKaW5k
ZXggMmQzZTJhZS4uZDM1Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFzZS5jcHAKQEAgLTE5LDg0ICsxOSw0NSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVXS1Rlc3RCYXNlLmgiCiAKLSNpbmNsdWRlICJF
V0tUZXN0Q29uZmlnLmgiCi0jaW5jbHVkZSAiRVdLVGVzdFZpZXcuaCIKKyNpbmNsdWRlICJFV0tU
ZXN0RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0KICNpbmNsdWRlIDxFY29y
ZS5oPgogI2luY2x1ZGUgPEVkamUuaD4KIAotaW50IEVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6
OnVzZVgxMVdpbmRvdzsKK2V4dGVybiBFV0tVbml0VGVzdHM6OkVXS1Rlc3RFbnZpcm9ubWVudCog
ZW52aXJvbm1lbnQ7CiAKIG5hbWVzcGFjZSBFV0tVbml0VGVzdHMgewogCi1ib29sIEVXS1Rlc3RC
YXNlOjppbml0KCkKK0VXS1Rlc3RCYXNlOjpFV0tUZXN0QmFzZSgpCiB7Ci0gICAgaWYgKCFlY29y
ZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlZGplX2lu
aXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gZXdrX2luaXQoKTsKLSAgICBjb25zdCBjaGFy
KiBwcm94eVVyaSA9IGdldGVudigiaHR0cF9wcm94eSIpOwotCi0gICAgaWYgKHJldCAmJiBwcm94
eVVyaSkKLSAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVyaSk7Ci0KLSAg
ICByZXR1cm4gcmV0OwogfQogCi12b2lkIEVXS1Rlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCitFdmFz
X09iamVjdCogRVdLVGVzdEJhc2U6OndlYlZpZXcoKQogewotICAgIGludCBjb3VudCA9IDA7Ci0K
LSAgICB3aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19zaHV0ZG93bigpKSA+IDApIHsgfQotICAg
IHdoaWxlICgoY291bnQgPSBlZGplX3NodXRkb3duKCkpID4gMCkgeyB9Ci0gICAgd2hpbGUgKChj
b3VudCA9IGV3a19zaHV0ZG93bigpKSA+IDApIHsgfQorICAgIHJldHVybiBtX2V3a1Rlc3RWaWV3
LndlYlZpZXcoKTsKIH0KIAotdm9pZCBFV0tUZXN0QmFzZTo6c3RhcnRUZXN0KCkKK3ZvaWQgRVdL
VGVzdEJhc2U6OlNldFVwKCkKIHsKLSAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBB
U1NFUlRfVFJVRShtX2V3a1Rlc3RWaWV3LmluaXQoZW52aXJvbm1lbnQtPnVzZVgxMVdpbmRvdygp
KSk7CiB9CiAKLXZvaWQgRVdLVGVzdEJhc2U6OmVuZFRlc3QoKQordm9pZCBFV0tUZXN0QmFzZTo6
b25Mb2FkRmluaXNoZWQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQqIGV2
ZW50SW5mbykKIHsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogfQogCi1ib29sIEVXS1Rl
c3RCYXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNr
KSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZv
aWQqIGV2ZW50X2RhdGEpCi17Ci0gICAgRUZMX0lOSVRfUkVUKCk7Ci0KLSAgICBFV0tUZXN0RWNv
cmVFdmFzIGV2YXModXNlWDExV2luZG93KTsKLSAgICBpZiAoIWV2YXMuZXZhcygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgZXZhcy5zaG93KCk7Ci0KLSAgICBFV0tUZXN0VmlldyB2aWV3
KGV2YXMuZXZhcygpLCB1cmwpOwotICAgIGlmICghdmlldy5pbml0KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFt
ZSwgZXZlbnRfZGF0YSk7Ci0gICAgdmlldy5zaG93KCk7Ci0KLSAgICBTVEFSVF9URVNUKCk7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdCh2b2lkICgq
ZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciog
ZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3ZvaWQgRVdLVGVzdEJhc2U6OndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0
VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIs
IG9uTG9hZEZpbmlzaGVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAibG9hZCxmaW5pc2hlZCIs
IG9uTG9hZEZpbmlzaGVkKTsKIH0KIAotYm9vbCBFV0tUZXN0QmFzZTo6cnVuVGVzdChjb25zdCBj
aGFyKiB1cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQordm9pZCBFV0tU
ZXN0QmFzZTo6bG9hZFVybChjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRl
c3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7CisgICAgQVNT
RVJUX1RSVUUoZXdrX3ZpZXdfdXJpX3NldCh3ZWJWaWV3KCksIHVybCkpOworICAgIHdhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RCYXNlLmgKaW5kZXggZWM3NTEzMi4uMGUyMjM1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdEJh
c2UuaApAQCAtMTksNDkgKzE5LDI1IEBACiAjaWZuZGVmIEVXS1Rlc3RCYXNlX2gKICNkZWZpbmUg
RVdLVGVzdEJhc2VfaAogCi0jaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgIkVXS1Rlc3RDb25m
aWcuaCIKKyNpbmNsdWRlICJFV0tUZXN0Vmlldy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CiAKLSNkZWZpbmUgUlVOX1RFU1QoYXJncy4uLikgICBcCi0gICAgZG8geyAgICBcCi0gICAgICAg
IEFTU0VSVF9FUSh0cnVlLCBFV0tUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwKLSAgICB9
IHdoaWxlICgwKQotCi0jZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCi0gICAgZG8geyAgICBcCi0g
ICAgICAgIEVXS1Rlc3RCYXNlOjpzdGFydFRlc3QoKTsgICBcCi0gICAgfSB3aGlsZSAoMCkKLQot
I2RlZmluZSBFTkRfVEVTVCgpICAgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgRVdLVGVzdEJh
c2U6OmVuZFRlc3QoKTsgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgRUZMX0lOSVRfUkVU
KCkgIFwKLSAgICBkbyB7ICAgIFwKLSAgICAgICAgaWYgKCFFV0tUZXN0QmFzZTo6aW5pdCgpKSAg
IFwKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNk
ZWZpbmUgRUZMX0lOSVQoKSAgXAotICAgIGRvIHsgICAgXAotICAgICAgICBFV0tUZXN0QmFzZTo6
aW5pdCgpOyAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7
CiAKLWNsYXNzIEVXS1Rlc3RCYXNlIHsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0
IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOworY2xhc3Mg
RVdLVGVzdEJhc2U6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgotICAgIHN0YXRp
YyBib29sIGluaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bkFsbCgpOwotICAgIHN0YXRp
YyB2b2lkIHN0YXJ0VGVzdCgpOwotICAgIHN0YXRpYyB2b2lkIGVuZFRlc3QoKTsKKyAgICBzdGF0
aWMgdm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywg
dm9pZCogZXZlbnRJbmZvKTsKKworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCk7CisgICAgdmly
dHVhbCB2b2lkIFNldFVwKCk7Citwcm90ZWN0ZWQ6CisgICAgRVdLVGVzdEJhc2UoKTsKIAotICAg
IHN0YXRpYyBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJh
Y2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9
ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOwotICAgIHN0YXRpYyBib29s
IHJ1blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lk
KiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50
X2RhdGEgPSAwKTsKKyAgICB2b2lkIGxvYWRVcmwoY29uc3QgY2hhciogdXJsID0gQ29uZmlnOjpk
ZWZhdWx0VGVzdFBhZ2UpOworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAg
ICBzdGF0aWMgaW50IHVzZVgxMVdpbmRvdzsKKyAgICBFV0tUZXN0VmlldyBtX2V3a1Rlc3RWaWV3
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0tUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjZhMWZlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLVGVzdEVu
dmlyb25tZW50LmgiCisKKyNpbmNsdWRlIDxFV2ViS2l0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4K
KyNpbmNsdWRlIDxFZGplLmg+CisKK25hbWVzcGFjZSBFV0tVbml0VGVzdHMgeworCitFV0tUZXN0
RW52aXJvbm1lbnQ6OkVXS1Rlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6
IG1fdXNlWDExV2luZG93KHVzZVgxMVdpbmRvdykKK3sKK30KKwordm9pZCBFV0tUZXN0RW52aXJv
bm1lbnQ6OlNldFVwKCkKK3sKKyAgICBBU1NFUlRfR1QoZXdrX2luaXQoKSwgMCk7CisKKyAgICBj
b25zdCBjaGFyKiBwcm94eVVybCA9IGdldGVudigiaHR0cF9wcm94eSIpOworICAgIGlmIChwcm94
eVVybCkKKyAgICAgICAgZXdrX25ldHdvcmtfcHJveHlfdXJpX3NldChwcm94eVVybCk7Cit9CisK
K3ZvaWQgRVdLVGVzdEVudmlyb25tZW50OjpUZWFyRG93bigpCit7CisgICAgZXdrX3NodXRkb3du
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLVGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjAwN2ViMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAg
ICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
IFVTQQorKi8KKworI2lmbmRlZiBFV0tUZXN0RW52aXJvbm1lbnRfaAorI2RlZmluZSBFV0tUZXN0
RW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNlIEVX
S1VuaXRUZXN0cyB7CisKK2NsYXNzIEVXS1Rlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OkVudmlyb25tZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFV0tUZXN0RW52aXJvbm1l
bnQoYm9vbCB1c2VYMTFXaW5kb3cpOworCisgICAgYm9vbCB1c2VYMTFXaW5kb3coKSBjb25zdCB7
IHJldHVybiBtX3VzZVgxMVdpbmRvdzsgfQorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworcHJpdmF0ZToKKyAgICBib29sIG1fdXNlWDExV2lu
ZG93OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5jcHAKaW5kZXggZGJiMDA5Mi4uMTJkNDI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tU
ZXN0Vmlldy5jcHAKQEAgLTE5LDEzMSArMTksNTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJFV0tUZXN0Vmlldy5oIgogCi0jaW5jbHVkZSAiRVdLVGVzdENvbmZpZy5oIgogI2lu
Y2x1ZGUgPEVXZWJLaXQuaD4KLQorI2luY2x1ZGUgPHd0Zi9OdWxsUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBF
V0tVbml0VGVzdHMgewogCi1FV0tUZXN0RWNvcmVFdmFzOjpFV0tUZXN0RWNvcmVFdmFzKGludCB1
c2VYMTFXaW5kb3cpCitFV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoKQogewotICAgIGlmICh1c2VY
MTFXaW5kb3cpCi0gICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXco
MCwgMCwgMCwgQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVp
Z2h0LCAwKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3Jl
X2V2YXNfYnVmZmVyX25ldyhDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVs
dFZpZXdIZWlnaHQpKTsKIH0KIAotRVdLVGVzdEVjb3JlRXZhczo6RVdLVGVzdEVjb3JlRXZhcyhj
b25zdCBjaGFyKiBlbmdpbmVfbmFtZSwgaW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBp
bnQgdmlld3BvcnRfdywgaW50IHZpZXdwb3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMs
IGludCB1c2VYMTFXaW5kb3cpCitib29sIEVXS1Rlc3RWaWV3Ojppbml0KGludCB1c2VYMTFXaW5k
b3csIEV3a1ZpZXdUeXBlIHRlc3RWaWV3VHlwZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewor
ICAgIG1fd2ViVmlldyA9IG51bGxwdHI7CisKICAgICBpZiAodXNlWDExV2luZG93KQotICAgICAg
ICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2luZV9uYW1lLCB2aWV3
cG9ydF94LCB2aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBleHRyYV9vcHRpb25z
KSk7CisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwg
MCwgd2lkdGgsIGhlaWdodCwgMCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9lY29yZUV2YXMgPSBh
ZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9uZXcodmlld3BvcnRfeCwgdmlld3BvcnRfeSkpOwot
fQotCi1FdmFzKiBFV0tUZXN0RWNvcmVFdmFzOjpldmFzKCkKLXsKLSAgICBpZiAobV9lY29yZUV2
YXMuZ2V0KCkpCi0gICAgICAgIHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQo
KSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRVdLVGVzdEVjb3JlRXZhczo6c2hvdygpCi17
Ci0gICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQotICAgICAgICBlY29yZV9ldmFzX3Nob3cobV9l
Y29yZUV2YXMuZ2V0KCkpOwotfQotCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXcoRXZhcyogZXZh
cykKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91cmwoQ29uZmlnOjpkZWZhdWx0VGVzdFBh
Z2UpCi0gICAgLCBtX2RlZmF1bHRWaWV3VHlwZShUaWxlZFZpZXcpCi0gICAgLCBtX3dpZHRoKENv
bmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKLSAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZp
ZXdIZWlnaHQpCi17Ci19Ci0KLUVXS1Rlc3RWaWV3OjpFV0tUZXN0VmlldyhFdmFzKiBldmFzLCBj
b25zdCBjaGFyKiB1cmwpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAg
ICAsIG1fZGVmYXVsdFZpZXdUeXBlKFRpbGVkVmlldykKLSAgICAsIG1fd2lkdGgoQ29uZmlnOjpk
ZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdo
dCkKLXsKLX0KLQotRVdLVGVzdFZpZXc6OkVXS1Rlc3RWaWV3KEV2YXMqIGV2YXMsIEV3a1ZpZXdU
eXBlIHR5cGUsIGNvbnN0IGNoYXIqIHVybCkKLSAgICA6IG1fZXZhcyhldmFzKQotICAgICwgbV91
cmwodXJsKQotICAgICwgbV9kZWZhdWx0Vmlld1R5cGUodHlwZSkKLSAgICAsIG1fd2lkdGgoQ29u
ZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQotICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmll
d0hlaWdodCkKLXsKLX0KKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFz
X2J1ZmZlcl9uZXcod2lkdGgsIGhlaWdodCkpOwogCi1FV0tUZXN0Vmlldzo6RVdLVGVzdFZpZXco
RXZhcyogZXZhcywgRXdrVmlld1R5cGUgdHlwZSwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCi0gICAgOiBtX2V2YXMoZXZhcykKLSAgICAsIG1fdXJsKHVybCkKLSAgICAs
IG1fZGVmYXVsdFZpZXdUeXBlKHR5cGUpCi0gICAgLCBtX3dpZHRoKHdpZHRoKQotICAgICwgbV9o
ZWlnaHQoaGVpZ2h0KQotewotfQorICAgIGlmICghbV9lY29yZUV2YXMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotYm9vbCBFV0tUZXN0Vmlldzo6aW5pdCgpCi17Ci0gICAgaWYgKCFtX2V2YXMg
fHwgbV91cmwuZW1wdHkoKSkKKyAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMuZ2V0KCkp
OworICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7Cisg
ICAgaWYgKCFldmFzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzd2l0Y2ggKG1fZGVm
YXVsdFZpZXdUeXBlKSB7CisgICAgc3dpdGNoICh0ZXN0Vmlld1R5cGUpIHsKICAgICBjYXNlIFNp
bmdsZVZpZXc6Ci0gICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3NpbmdsZV9h
ZGQobV9ldmFzKSk7CisgICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3Npbmds
ZV9hZGQoZXZhcykpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGlsZWRWaWV3OgotICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdFJlZihld2tfdmlld190aWxlZF9hZGQobV9ldmFzKSk7Cisg
ICAgICAgIG1fd2ViVmlldyA9IGFkb3B0UmVmKGV3a192aWV3X3RpbGVkX2FkZChldmFzKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgIGlm
ICghbV93ZWJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBld2tfdmlld190aGVt
ZV9zZXQobV93ZWJWaWV3LmdldCgpLCBDb25maWc6OmRlZmF1bHRUaGVtZVBhdGgpOwotICAgIGV3
a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LmdldCgpLCBtX3VybC5jX3N0cigpKTsKLX0KIAotdm9p
ZCBFV0tUZXN0Vmlldzo6c2hvdygpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCBtX3dp
ZHRoLCBtX2hlaWdodCk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldy5nZXQoKSwg
d2lkdGgsIGhlaWdodCk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkpOwog
ICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7Ci19
Ci0KLUV2YXNfT2JqZWN0KiBFV0tUZXN0Vmlldzo6bWFpbkZyYW1lKCkKLXsKLSAgICBpZiAobV93
ZWJWaWV3LmdldCgpKQotICAgICAgICByZXR1cm4gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV93
ZWJWaWV3LmdldCgpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRXZhcyogRVdLVGVzdFZpZXc6OmV2
YXMoKQotewotICAgIGlmIChtX3dlYlZpZXcuZ2V0KCkpCi0gICAgICAgIHJldHVybiBldmFzX29i
amVjdF9ldmFzX2dldChtX3dlYlZpZXcuZ2V0KCkpOwotICAgIHJldHVybiAwOwotfQotCi12b2lk
IEVXS1Rlc3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cikKLXsKLSAgICBp
ZiAoIW1fd2ViVmlldy5nZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfZGVsKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZl
bnROYW1lLCBjYWxsYmFjaywgcHRyKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5o
IGIvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0tUZXN0Vmlldy5oCmlu
ZGV4IDFiZGQ5ZWQuLmM5NTVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLVGVzdFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXS1Rlc3RWaWV3LmgKQEAgLTE5LDU2ICsxOSwzMiBAQAogI2lmbmRl
ZiBFV0tUZXN0Vmlld19oCiAjZGVmaW5lIEVXS1Rlc3RWaWV3X2gKIAorI2luY2x1ZGUgIkVXS1Rl
c3RDb25maWcuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgot
I2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2VmbC9SZWZQdHJFZmwuaD4KIAogbmFtZXNwYWNlIEVXS1VuaXRUZXN0cyB7CiAKLWNsYXNzIEVX
S1Rlc3RFY29yZUV2YXMgewotcHVibGljOgotICAgIEVXS1Rlc3RFY29yZUV2YXMoaW50IHVzZVgx
MVdpbmRvdyk7Ci0gICAgRVdLVGVzdEVjb3JlRXZhcyhjb25zdCBjaGFyKiBlbmdpbmVfbmFtZSwg
aW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBpbnQgdmlld3BvcnRfdywgaW50IHZpZXdw
b3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMsIGludCB1c2VYMTFXaW5kb3cpOwotCi0g
ICAgRXZhcyogZXZhcygpOwotICAgIHZvaWQgc2hvdygpOwotCi1wcml2YXRlOgotICAgIE93blB0
cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZhczsKLX07Ci0KIGNsYXNzIEVXS1Rlc3RWaWV3IHsKIHB1
YmxpYzoKICAgICBlbnVtIEV3a1ZpZXdUeXBlIHsKICAgICAgICAgU2luZ2xlVmlldyA9IDAsCi0g
ICAgICAgIFRpbGVkVmlldywKKyAgICAgICAgVGlsZWRWaWV3CiAgICAgfTsKIAotICAgIGV4cGxp
Y2l0IEVXS1Rlc3RWaWV3KEV2YXMqKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgY29uc3QgY2hh
ciogdXJsKTsKLSAgICBFV0tUZXN0VmlldyhFdmFzKiwgRXdrVmlld1R5cGUsIGNvbnN0IGNoYXIq
IHVybCk7Ci0gICAgRVdLVGVzdFZpZXcoRXZhcyosIEV3a1ZpZXdUeXBlLCBjb25zdCBjaGFyKiB1
cmwsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgRVdLVGVzdFZpZXcoKTsKIAogICAgIEV2
YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9Ci0gICAgRXZh
c19PYmplY3QqIG1haW5GcmFtZSgpOwotICAgIEV2YXMqIGV2YXMoKTsKLSAgICB2b2lkIHNob3co
KTsKLQotICAgIGJvb2wgaW5pdCgpOwotICAgIHZvaWQgYmluZEV2ZW50cyh2b2lkICgqY2FsbGJh
Y2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2
b2lkKiBwdHIpOwogCisgICAgYm9vbCBpbml0KGludCB1c2VYMTFXaW5kb3cgPSAwLCBFd2tWaWV3
VHlwZSB0ZXN0Vmlld1R5cGUgPSBUaWxlZFZpZXcsIGludCB3aWR0aCA9IENvbmZpZzo6ZGVmYXVs
dFZpZXdXaWR0aCwgaW50IGhlaWdodCA9IENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQpOwogcHJp
dmF0ZToKICAgICBFV0tUZXN0Vmlldyhjb25zdCBFV0tUZXN0VmlldyYpOwotICAgIEVXS1Rlc3RW
aWV3IG9wZXJhdG9yPShjb25zdCBFV0tUZXN0VmlldyYpOworICAgIEVXS1Rlc3RWaWV3JiBvcGVy
YXRvcj0oY29uc3QgRVdLVGVzdFZpZXcmKTsKIAotICAgIEV2YXMqIG1fZXZhczsKKyAgICBPd25Q
dHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX3dl
YlZpZXc7Ci0KLSAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7Ci0gICAgRXdrVmlld1R5cGUgbV9k
ZWZhdWx0Vmlld1R5cGU7Ci0gICAgc3RkOjpzdHJpbmcgbV91cmw7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCmluZGV4IGI1YmJjN2IuLjk3NTNjNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfZXdrX3ZpZXcuY3BwCkBAIC0xOSw2NiAr
MTksNTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RDb25maWcuaCIK
ICNpbmNsdWRlIDxFV2ViS2l0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
IDxFY29yZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgRVdLVW5pdFRlc3RzOwogCiAvKioKICogQGJyaWVm
IENoZWNraW5nIHdoZXRoZXIgZnVuY3Rpb24gcHJvcGVybHkgcmV0dXJucyBjb3JyZWN0IHZhbHVl
LgogKi8KLXN0YXRpYyB2b2lkIGV3a1ZpZXdFZGl0YWJsZUdldENiKHZvaWQqIGV2ZW50SW5mbywg
RXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCitURVNUX0YoRVdLVGVzdEJhc2UsIGV3a192aWV3
X2VkaXRhYmxlX2dldCkKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQobywgRUlOQV9GQUxT
RSk7Ci0gICAgRVhQRUNUX0VRKEVJTkFfRkFMU0UsIGV3a192aWV3X2VkaXRhYmxlX2dldChvKSk7
Ci0gICAgRU5EX1RFU1QoKTsKLX0KLQotVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmlld19lZGl0
YWJsZV9nZXQpCi17Ci0gICAgUlVOX1RFU1QoZXdrVmlld0VkaXRhYmxlR2V0Q2IpOworICAgIGxv
YWRVcmwoKTsKKyAgICBld2tfdmlld19lZGl0YWJsZV9zZXQod2ViVmlldygpLCB0cnVlKTsKKyAg
ICBBU1NFUlRfVFJVRShld2tfdmlld19lZGl0YWJsZV9nZXQod2ViVmlldygpKSk7CiB9CiAKIC8q
KgogKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3QgdXJp
IHN0cmluZy4KICovCi1zdGF0aWMgdm9pZCBld2tWaWV3VXJpR2V0Q2Iodm9pZCogZXZlbnRJbmZv
LCBFdmFzX09iamVjdCogbywgdm9pZCogZGF0YSkKK1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3Zp
ZXdfdXJpX2dldCkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8i
LCBld2tfdmlld191cmlfZ2V0KG8pKTsKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNUKHRlc3Rf
ZXdrX3ZpZXcsIGV3a192aWV3X3VyaV9nZXQpCi17Ci0gICAgUlVOX1RFU1QoImh0dHA6Ly93d3cu
d2Via2l0Lm9yZyIsIGV3a1ZpZXdVcmlHZXRDYik7CisgICAgbG9hZFVybCgpOworICAgIEFTU0VS
VF9TVFJFUShld2tfdmlld191cmlfZ2V0KHdlYlZpZXcoKSksIENvbmZpZzo6ZGVmYXVsdFRlc3RQ
YWdlKTsKIH0KIAogLyoqCiAqIEBicmllZiBDaGVja2luZyB3aGV0aGVyIGZ1bmN0aW9uIHByb3Bl
cmx5IGdldC9zZXQgZnVsbHNjcmVlbiBzZXR0aW5nIHZhbHVlLgogKi8KLXN0YXRpYyB2b2lkIGV3
a1ZpZXdFbmFibGVGdWxsc2NyZWVuQ2Iodm9pZCogZXZlbnRJbmZvLCBFdmFzX09iamVjdCogd2Vi
Vmlldywgdm9pZCogZGF0YSkKK1RFU1RfRihFV0tUZXN0QmFzZSwgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnVsbHNjcmVlbikKIHsKKyAgICBsb2FkVXJsKCk7CiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3Jl
ZW5fZ2V0KHdlYlZpZXcpKTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KCkpKTsKIAotICAgIEFTU0VSVF9UUlVFKGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXcsIHRydWUpKTsKLSAgICBBU1NF
UlRfVFJVRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7
CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9zZXQo
d2ViVmlldygpLCB0cnVlKSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZnVsbHNjcmVlbl9nZXQod2ViVmlldygpKSk7CiAKLSAgICBBU1NFUlRfVFJVRShld2tfdmll
d19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3LCBmYWxzZSkpOwotICAgIEFT
U0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3
KSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9z
ZXQod2ViVmlldygpLCBmYWxzZSkpOworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KCkpKTsKICNlbHNlCi0gICAgQVNTRVJUX0ZB
TFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fZ2V0KHdlYlZpZXcpKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNjcmVlbl9nZXQod2Vi
VmlldygpKSk7CiAKLSAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVs
bHNjcmVlbl9zZXQod2ViVmlldywgdHJ1ZSkpOwotICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7CisgICAgQVNTRVJUX0ZBTFNF
KGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXcoKSwgdHJ1ZSkp
OworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dl
dCh3ZWJWaWV3KCkpKTsKIAotICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9mdWxsc2NyZWVuX3NldCh3ZWJWaWV3LCBmYWxzZSkpOwotICAgIEFTU0VSVF9GQUxTRShld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9mdWxsc2NyZWVuX2dldCh3ZWJWaWV3KSk7CisgICAgQVNTRVJU
X0ZBTFNFKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW5fc2V0KHdlYlZpZXcoKSwg
ZmFsc2UpKTsKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnVsbHNj
cmVlbl9nZXQod2ViVmlldygpKSk7CiAjZW5kaWYKLSAgICBFTkRfVEVTVCgpOwotfQotCi1URVNU
KHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2Z1bGxzY3JlZW4pCi17Ci0g
ICAgUlVOX1RFU1QoZXdrVmlld0VuYWJsZUZ1bGxzY3JlZW5DYik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKaW5kZXggNzAyYTYxZi4uZThmM2MwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApAQCAtMTYsMjUgKzE2LDM3IEBACiAgICAg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV
U0EKICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMv
RVdLVGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXS1Rlc3RFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgPGdldG9wdC5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLXN0
YXRpYyB2b2lkIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKK3Vz
aW5nIG5hbWVzcGFjZSBFV0tVbml0VGVzdHM7CisKK0VXS1Rlc3RFbnZpcm9ubWVudCogZW52aXJv
bm1lbnQgPSAwOworCitzdGF0aWMgaW50IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKKyAgICBpbnQgdXNlWDExV2luZG93ID0gMDsKICAgICBzdGF0aWMgY29u
c3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICAgICAgeyJ1c2VYMTFXaW5kb3ciLCBub19hcmd1
bWVudCwgJkVXS1VuaXRUZXN0czo6RVdLVGVzdEJhc2U6OnVzZVgxMVdpbmRvdywgdHJ1ZX0sCisg
ICAgICAgIHsidXNlWDExV2luZG93Iiwgbm9fYXJndW1lbnQsICZ1c2VYMTFXaW5kb3csIHRydWV9
LAogICAgICAgICB7MCwgMCwgMCwgMH0KICAgICB9OwogCiAgICAgaW50IG9wdGlvbjsKICAgICB3
aGlsZSAoKG9wdGlvbiA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICIiLCBvcHRpb25zLCAwKSkg
IT0gLTEpIHsgfQorCisgICAgcmV0dXJuIHVzZVgxMVdpbmRvdzsKIH0KIAogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIGF0ZXhpdChFV0tVbml0VGVzdHM6OkVXS1Rlc3RC
YXNlOjpzaHV0ZG93bkFsbCk7Ci0gICAgcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJndik7
CisgICAgaW50IHVzZVgxMVdpbmRvdyA9IHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3Yp
OworICAgIGVudmlyb25tZW50ID0gbmV3IEVXS1Rlc3RFbnZpcm9ubWVudCh1c2VYMTFXaW5kb3cp
OworICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7CiAg
ICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKICAgICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>