<?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>87659</bug_id>
          
          <creation_ts>2012-05-28 06:54:42 -0700</creation_ts>
          <short_desc>[Wk2][EFL] EFL needs a WebKitTestRunner</short_desc>
          <delta_ts>2012-07-05 01:49:02 -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>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88753</dependson>
    
    <dependson>88935</dependson>
    
    <dependson>90258</dependson>
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominik Röttsches (drott)">d-r</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>abarth</cc>
    
    <cc>cdumez</cc>
    
    <cc>dpranke</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hw1008.kim</cc>
    
    <cc>joone</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>naginenis</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>635188</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-05-28 06:54:42 -0700</bug_when>
    <thetext>For regression testing WebKit2 on EFL, we need a WebKitTestRunner implemetation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645660</commentid>
    <comment_count>1</comment_count>
      <attachid>146763</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-10 18:51:08 -0700</bug_when>
    <thetext>Created attachment 146763
WIP:AllInOne for WTR/Efl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645661</commentid>
    <comment_count>2</comment_count>
      <attachid>146763</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-10 18:58:11 -0700</bug_when>
    <thetext>Comment on attachment 146763
WIP:AllInOne for WTR/Efl

Attachment 146763 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12936495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645727</commentid>
    <comment_count>3</comment_count>
      <attachid>146782</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-10 22:12:33 -0700</bug_when>
    <thetext>Created attachment 146782
WIP:AllInOne (Try to fix build break)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656276</commentid>
    <comment_count>4</comment_count>
      <attachid>149211</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-24 17:14:15 -0700</bug_when>
    <thetext>Created attachment 149211
Work in Progress #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656297</commentid>
    <comment_count>5</comment_count>
      <attachid>149211</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-24 17:44:28 -0700</bug_when>
    <thetext>Comment on attachment 149211
Work in Progress #2

Attachment 149211 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13032988</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656389</commentid>
    <comment_count>6</comment_count>
      <attachid>149241</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-24 22:37:42 -0700</bug_when>
    <thetext>Created attachment 149241
Work in Progress #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656465</commentid>
    <comment_count>7</comment_count>
      <attachid>149241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 04:05:36 -0700</bug_when>
    <thetext>Comment on attachment 149241
Work in Progress #2

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

&gt; Tools/WebKitTestRunner/efl/main.cpp:40
&gt; +        return 1;

You should probably call ecore_evas_shutdown(); before returning here.

&gt; Tools/WebKitTestRunner/efl/main.cpp:44
&gt; +        return 1;

You should probably call ecore_evas_shutdown(); and edje_shutdown(); before returning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657468</commentid>
    <comment_count>8</comment_count>
      <attachid>149241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 03:12:53 -0700</bug_when>
    <thetext>Comment on attachment 149241
Work in Progress #2

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

&gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:77
&gt; +    m_injectedBundlePath = WKStringCreateWithUTF8CString(pluginPath);

m_testPluginDirectory, not injectedBundlePath. Otherwise we crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657486</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 03:55:01 -0700</bug_when>
    <thetext>I gave the patch a try, and besides the crash I mentioned in my review, it fails to load the injected bundle:
CRI&lt;8485&gt;: /home/chris/Devel/WebKit/Source/WebKit2/WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp:48 load() Error loading the injected bundle: /home/chris/Devel/WebKit/WebKitBuild/Debug/lib/libTestRunnerInjectedBundle.so

I&apos;m guessing this is because we don&apos;t provide an implementation in EFL port for InjectedBundle::platformInitialize(WKTypeRef).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658927</commentid>
    <comment_count>10</comment_count>
      <attachid>149808</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-27 15:53:37 -0700</bug_when>
    <thetext>Created attachment 149808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658930</commentid>
    <comment_count>11</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-27 16:00:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 149241 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149241&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/main.cpp:40
&gt; &gt; +        return 1;
&gt; 
&gt; You should probably call ecore_evas_shutdown(); before returning here.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/main.cpp:44
&gt; &gt; +        return 1;
&gt; 
&gt; You should probably call ecore_evas_shutdown(); and edje_shutdown(); before returning.

Thank you. I fixed.

&gt; &gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:77
&gt; &gt; +    m_injectedBundlePath = WKStringCreateWithUTF8CString(pluginPath);
&gt; 
&gt; m_testPluginDirectory, not injectedBundlePath. Otherwise we crash.

It&apos;s mistake. fixed.

&gt; I gave the patch a try, and besides the crash I mentioned in my review, it fails to load the injected bundle:
&gt; CRI&lt;8485&gt;: /home/chris/Devel/WebKit/Source/WebKit2/WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp:48 load() Error loading the injected bundle: /home/chris/Devel/WebKit/WebKitBuild/Debug/lib/libTestRunnerInjectedBundle.so
&gt; 
&gt; I&apos;m guessing this is because we don&apos;t provide an implementation in EFL port for InjectedBundle::platformInitialize(WKTypeRef).

Yes, I fixed by including WebCoreTestSupport.
It&apos;s because of missing WebCoreTestSupport when building with SHARED_CORE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658974</commentid>
    <comment_count>12</comment_count>
      <attachid>149808</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-06-27 16:52:29 -0700</bug_when>
    <thetext>Comment on attachment 149808
Patch

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

&gt; Tools/CMakeLists.txt:9
&gt; +        ADD_SUBDIRECTORY(WebKitTestRunner)

WTR is something generic, right? It makes sense to add this call in a platform-independent section (ie. outside the outer IF clause).

&gt; Tools/WebKitTestRunner/CMakeLists.txt:61
&gt; +FILE(GLOB WebKitTestRunnerInjectedBundle_IDL_FILES &quot;${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings/*.idl&quot;)
&gt; +FOREACH (_file ${WebKitTestRunnerInjectedBundle_IDL_FILES})
&gt; +    GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
&gt; +    ADD_CUSTOM_COMMAND(
&gt; +        OUTPUT ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp
&gt; +        MAIN_DEPENDENCY ${_file}
&gt; +        DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS}
&gt; +        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts -I${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --define \&quot;\&quot; --generator TestRunner --include ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings --outputdir ${DERIVED_SOURCES_DIR}/InjectedBundle ${_file}
&gt; +        VERBATIM)
&gt; +    LIST(APPEND WebKitTestRunnerInjectedBundle_SOURCES ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp)
&gt; +ENDFOREACH ()

Don&apos;t we have some code for calling the bindings generator in Source/cmake? I&apos;d rather have everything in a single place.

&gt; Tools/WebKitTestRunner/CMakeLists.txt:65
&gt; +INCLUDE_IF_EXISTS(${WEBKIT_TESTRUNNER_DIR}/Platform${PORT}.cmake)
&gt; +
&gt; +INCLUDE_DIRECTORIES(${WebKitTestRunner_INCLUDE_DIRECTORIES})

It makes sense to have the include directories added before including platform-specific files.

&gt; Tools/WebKitTestRunner/CMakeLists.txt:75
&gt; +SET_TARGET_PROPERTIES(WebKitTestRunner PROPERTIES COMPILE_FLAGS
&gt; +    &quot;-include ${WEBKIT_TESTRUNNER_DIR}/WebKitTestRunnerPrefix.h&quot;
&gt; +)

Why not a normal include? -include is a compiler-dependent option in a generic build system file.

&gt; Tools/WebKitTestRunner/CMakeLists.txt:82
&gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersEflForWebKitTestRunner)
&gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersSoupForWebKitTestRunner)

This is platform-specific.

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:27
&gt; +static int useX11Window = false;

Why int and not bool?

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:45
&gt; +    m_view = (Evas_Object*)(WKViewCreate(evas, context, pageGroup));

C-style cast. If you make the typedefs similar to the GTK+ ones in PlatformWebView.h it shouldn&apos;t even be needed.

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:76
&gt; +    WKRect frame;
&gt; +    frame.origin.x = 0;
&gt; +    frame.origin.y = 0;
&gt; +    frame.size.width = 0;
&gt; +    frame.size.height = 0;
&gt; +    return frame;

return WKRectMake(...)?

&gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:60
&gt; +    const char* value = getenv(variableName);

I&apos;d rather include stdlib.h directly for getenv(3) than rely on indirect includes.

&gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:62
&gt; +        fprintf(stderr, &quot;%s environment variable not found\n&quot;, variableName);

Ditto for stdio.h and fprintf(3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659094</commentid>
    <comment_count>13</comment_count>
      <attachid>149853</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-27 19:14:49 -0700</bug_when>
    <thetext>Created attachment 149853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659102</commentid>
    <comment_count>14</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-27 19:28:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 149808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149808&amp;action=review

Thank you for your quick review.

&gt; 
&gt; &gt; Tools/CMakeLists.txt:9
&gt; &gt; +        ADD_SUBDIRECTORY(WebKitTestRunner)
&gt; 
&gt; WTR is something generic, right? It makes sense to add this call in a platform-independent section (ie. outside the outer IF clause).
&gt; 
I moved.

&gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:61
&gt; &gt; +FILE(GLOB WebKitTestRunnerInjectedBundle_IDL_FILES &quot;${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings/*.idl&quot;)
&gt; &gt; +FOREACH (_file ${WebKitTestRunnerInjectedBundle_IDL_FILES})
&gt; &gt; +    GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
&gt; &gt; +    ADD_CUSTOM_COMMAND(
&gt; &gt; +        OUTPUT ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp
&gt; &gt; +        MAIN_DEPENDENCY ${_file}
&gt; &gt; +        DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS}
&gt; &gt; +        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts -I${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --define \&quot;\&quot; --generator TestRunner --include ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings --outputdir ${DERIVED_SOURCES_DIR}/InjectedBundle ${_file}
&gt; &gt; +        VERBATIM)
&gt; &gt; +    LIST(APPEND WebKitTestRunnerInjectedBundle_SOURCES ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp)
&gt; &gt; +ENDFOREACH ()
&gt; 
&gt; Don&apos;t we have some code for calling the bindings generator in Source/cmake? I&apos;d rather have everything in a single place.
&gt; 
I agree with you.
But how do you think about separating this issue from this bug?

&gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:65
&gt; &gt; +INCLUDE_IF_EXISTS(${WEBKIT_TESTRUNNER_DIR}/Platform${PORT}.cmake)
&gt; &gt; +
&gt; &gt; +INCLUDE_DIRECTORIES(${WebKitTestRunner_INCLUDE_DIRECTORIES})
&gt; 
&gt; It makes sense to have the include directories added before including platform-specific files.
&gt; 
I am not sure. We should also include platform specific directories.

&gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:75
&gt; &gt; +SET_TARGET_PROPERTIES(WebKitTestRunner PROPERTIES COMPILE_FLAGS
&gt; &gt; +    &quot;-include ${WEBKIT_TESTRUNNER_DIR}/WebKitTestRunnerPrefix.h&quot;
&gt; &gt; +)
&gt; 
&gt; Why not a normal include? -include is a compiler-dependent option in a generic build system file.
&gt; 
I removed it because WebKitTestRunnerPrefix.h is for the ports which support prefix headers.
Instead, I enhance config.h to include WebKit2.h.

&gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:82
&gt; &gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersEflForWebKitTestRunner)
&gt; &gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersSoupForWebKitTestRunner)
&gt; 
&gt; This is platform-specific.
Fixed by using general terms.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:27
&gt; &gt; +static int useX11Window = false;
&gt; 
&gt; Why int and not bool?
&gt; 
Sorry, fixed.

&gt; &gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:45
&gt; &gt; +    m_view = (Evas_Object*)(WKViewCreate(evas, context, pageGroup));
&gt; 
&gt; C-style cast. If you make the typedefs similar to the GTK+ ones in PlatformWebView.h it shouldn&apos;t even be needed.
&gt; 
Because Gtk have some macro such as GTK_WIDGET, GTK_WINDOW, it can be solved more easily.
But we don&apos;t have proper macros to solve.

Instead, I fixed by using APICasts.h which defines toImpl and toAPI.

&gt; &gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:76
&gt; &gt; +    WKRect frame;
&gt; &gt; +    frame.origin.x = 0;
&gt; &gt; +    frame.origin.y = 0;
&gt; &gt; +    frame.size.width = 0;
&gt; &gt; +    frame.size.height = 0;
&gt; &gt; +    return frame;
&gt; 
&gt; return WKRectMake(...)?
Thank you. done.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:60
&gt; &gt; +    const char* value = getenv(variableName);
&gt; 
&gt; I&apos;d rather include stdlib.h directly for getenv(3) than rely on indirect includes.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:62
&gt; &gt; +        fprintf(stderr, &quot;%s environment variable not found\n&quot;, variableName);
&gt; 
&gt; Ditto for stdio.h and fprintf(3).
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659123</commentid>
    <comment_count>15</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-06-27 19:55:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:61
&gt; &gt; &gt; +FILE(GLOB WebKitTestRunnerInjectedBundle_IDL_FILES &quot;${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings/*.idl&quot;)
&gt; &gt; &gt; +FOREACH (_file ${WebKitTestRunnerInjectedBundle_IDL_FILES})
&gt; &gt; &gt; +    GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
&gt; &gt; &gt; +    ADD_CUSTOM_COMMAND(
&gt; &gt; &gt; +        OUTPUT ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp
&gt; &gt; &gt; +        MAIN_DEPENDENCY ${_file}
&gt; &gt; &gt; +        DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS}
&gt; &gt; &gt; +        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts -I${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --define \&quot;\&quot; --generator TestRunner --include ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings --outputdir ${DERIVED_SOURCES_DIR}/InjectedBundle ${_file}
&gt; &gt; &gt; +        VERBATIM)
&gt; &gt; &gt; +    LIST(APPEND WebKitTestRunnerInjectedBundle_SOURCES ${DERIVED_SOURCES_DIR}/InjectedBundle/JS${_name}.cpp)
&gt; &gt; &gt; +ENDFOREACH ()
&gt; &gt; 
&gt; &gt; Don&apos;t we have some code for calling the bindings generator in Source/cmake? I&apos;d rather have everything in a single place.
&gt; &gt; 
&gt; I agree with you.
&gt; But how do you think about separating this issue from this bug?

OK, but I&apos;d rather get it fixed before committing this one.

&gt; &gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:65
&gt; &gt; &gt; +INCLUDE_IF_EXISTS(${WEBKIT_TESTRUNNER_DIR}/Platform${PORT}.cmake)
&gt; &gt; &gt; +
&gt; &gt; &gt; +INCLUDE_DIRECTORIES(${WebKitTestRunner_INCLUDE_DIRECTORIES})
&gt; &gt; 
&gt; &gt; It makes sense to have the include directories added before including platform-specific files.
&gt; &gt; 
&gt; I am not sure. We should also include platform specific directories.

True, I had forgotten about that.

&gt; &gt; &gt; Tools/WebKitTestRunner/CMakeLists.txt:82
&gt; &gt; &gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersEflForWebKitTestRunner)
&gt; &gt; &gt; +ADD_DEPENDENCIES(WebKitTestRunner forwarding-headersSoupForWebKitTestRunner)
&gt; &gt; 
&gt; &gt; This is platform-specific.
&gt; Fixed by using general terms.

Doesn&apos;t it make more sense to simply move these calls to PlatformEfl.cmake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659124</commentid>
    <comment_count>16</comment_count>
      <attachid>149853</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-27 19:57:07 -0700</bug_when>
    <thetext>Comment on attachment 149853
Patch

Attachment 149853 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13101918</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662190</commentid>
    <comment_count>17</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-03 06:58:07 -0700</bug_when>
    <thetext>Ryuan, would you have time to fix the build issue that the EWS reported?

/usr/bin/ld: ../../lib/libWebCoreTestSupport.a(WebCoreTestSupport.cpp.o): relocation R_X86_64_32 against `__gxx_personality_v0&apos; can not be used when making a shared object; recompile with -fPIC
../../lib/libWebCoreTestSupport.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

If you don&apos;t, are you okay if we take this patch and move enabling WebKitTestRunner forward? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662923</commentid>
    <comment_count>18</comment_count>
      <attachid>150787</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-04 07:06:52 -0700</bug_when>
    <thetext>Created attachment 150787
work in progress(for green bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662984</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 08:35:18 -0700</bug_when>
    <thetext>Are Bug 88753 and Bug 88756 really dependencies? It seems like the WebKitTestRunner is running without them. If they can be worked on afterwards, it would be good the remove those 2 dependencies and land the WKTR patch ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663259</commentid>
    <comment_count>20</comment_count>
      <attachid>150866</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-04 20:28:15 -0700</bug_when>
    <thetext>Created attachment 150866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663341</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 23:46:43 -0700</bug_when>
    <thetext>Thanks for getting this ready Ryuan! I hope we can land this soon and start working on improving our pass rate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663386</commentid>
    <comment_count>22</comment_count>
      <attachid>150866</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-05 01:30:40 -0700</bug_when>
    <thetext>Comment on attachment 150866
Patch

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

&gt; Tools/WebKitTestRunner/efl/TestControllerEfl.cpp:67
&gt; +    }
&gt; +    return value;

pls add new line before returns etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663394</commentid>
    <comment_count>23</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-05 01:48:07 -0700</bug_when>
    <thetext>Committed r121893: &lt;http://trac.webkit.org/changeset/121893&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146763</attachid>
            <date>2012-06-10 18:51:08 -0700</date>
            <delta_ts>2012-06-10 22:12:16 -0700</delta_ts>
            <desc>WIP:AllInOne for WTR/Efl</desc>
            <filename>bug-87659-20120611105106.patch</filename>
            <type>text/plain</type>
            <size>35136</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQyODY2MDIzYzMxZTc1
YWFkNzcwZDkwNzFiZDM0ODQ0ZjhkMWM3ZC4uNDQzY2UyYmY0MGZjODU5MzljYjcyNzliYmQxMzc3
NDQ2MGQ2Y2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA2LTEwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKFdLVmlld0dldFBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisKIDIwMTIt
MDYtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bm5lZWRlZCBjYWxsUmVtb3ZlZExhc3RSZWYgZnVuY3Rpb24gZnJvbSBUcmVlU2hhcmVkIHJlZmFj
dG9yaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDVlMDg4NWVhMTgyOTY2N2ZjOGFl
MjhkNDI5OGNlMzdjNmNlOTFhMmUuLjY1YjY4ODdjZDczNzVhODg4NTVhNmJmNjI3NWM0OTgzMWZk
YmY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNCw2ICsxNCw4IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorCiAgICAgU2hhcmVk
L0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAKIAogICAgIFNoYXJlZC9jYWlyby9M
YXllclRyZWVDb250ZXh0Q2Fpcm8uY3BwCkBAIC0yOCw2ICszMCw4IEBAIExJU1QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKwogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtODQsNiArODgsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElSfS9zdmcvZ3JhcGhp
Y3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCmluZGV4IDI4ZTdhZWQ2MjU3M2UyMTA2ZTIyOGZmYmEyM2Q5MjBiOWU0N2I3NmUuLjQwMmFm
OGZkNTNjYjFmYjdhZjFiMjNkNTdmYTFmMTAwMWY4YTA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmgKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2VTb3VwLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0VGTCkKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZUVmbC5oPgorI2VuZGlmCisKIC8qIFdlYktpdDIgc2hhcmVkIHR5
cGVzICovCiAKIHR5cGVkZWYgdWludDMyX3QgV0tUeXBlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWMxM2RjYjIwMTkwMDdjNjRm
NGYzMDMxNGQ3NzdkMjZkMDI5YTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXS0Jhc2VFZmxfaAor
I2RlZmluZSBXS0Jhc2VFZmxfaAorCisjaWZuZGVmIFdLQmFzZV9oCisjZXJyb3IgIlBsZWFzZSAj
aW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVmlldyogV0tWaWV3UmVmOworCisjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBlNDdiMDVmZjViMGQ3OTU4
OWM3ZTEyMTMxNDlmM2MxYzg2MTk0YTkwLi5jZmY3MGY0OGI0NGJkOGNlNDQ5YTBhMTk5OGY3OTE1
MTA4N2FiYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
CkBAIC0zNjQsNCArMzY0LDggQEAgaW5saW5lIFByb3h5aW5nUmVmUHRyPFdlYkdyYW1tYXJEZXRh
aWw+IHRvQVBJKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGdyYW0KICNpbmNsdWRlICJX
S0FQSUNhc3RTb3VwLmgiCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0VGTCkK
KyNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKKyNlbmRpZgorCiAjZW5kaWYgLy8gV0tBUElDYXN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElD
YXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVm
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhMDY4ZWYzNjY4ODRjM2Y5ZDIyNjBhNjk1YTY5MjgxNTc1MWUyOTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
QVBJQ2FzdEVmbC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdLQVBJQ2FzdEVmbF9oCisjZGVmaW5lIFdLQVBJ
Q2FzdEVmbF9oCisKKyNpZm5kZWYgV0tBUElDYXN0X2gKKyNlcnJvciAiUGxlYXNlICNpbmNsdWRl
IFwiV0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCisjZW5kaWYK
KwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld1JlZiwgRXZhc19PYmplY3QpCisK
K30KKworI2VuZGlmIC8vIFdLQVBJQ2FzdEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThlMjNmYjA0MjljM2ZhNzBmZTk2
Y2Q1MDg4ZGE1NzZkYTBhYjRlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldLVmlldy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
ZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoRXZhcyogY2FudmFzLCBX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorewor
ICAgIHJldHVybiB0b0FQSShld2tfdmlld19iYXNlX2FkZChjYW52YXMsIGNvbnRleHRSZWYsIHBh
Z2VHcm91cFJlZikpOworfQorCitXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmll
d1JlZikKK3sKKyAgICByZXR1cm4gdG9BUEkoZXdrX3ZpZXdfcGFnZV9nZXQodG9JbXBsKHZpZXdS
ZWYpKSk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWE3OTYxZGFhMjkwMjQ4N2YwY2I5M2IxZjI5ZDRiOTgxMmExMzUwMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV0tWaWV3X2gKKyNkZWZpbmUgV0tWaWV3X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9FdmFzIEV2YXM7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVmll
d1JlZiBXS1ZpZXdDcmVhdGUoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwKTsKKworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1ZpZXdHZXRQ
YWdlKFdLVmlld1JlZiB2aWV3KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKaW5kZXggZGUyYWE4OWM5Yzg1NGQ3MzExMzc3ZTY0NjE0ZTMzNWQxYWI4
MzEyNS4uYzYxYTdmMjYxZjc3YmIyZWJjM2RiNjIwN2Y4MDhjNjNhMWY3MGNkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtNTQyLDMgKzU0
MiwxMSBAQCB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IEludFNpegogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Np
emVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAg
ICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzbWFydERhdGEtPmltYWdlLCBpbWFn
ZURhdGEpOwogfQorCitXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCAwKTsKKworICAgIHJldHVybiBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
aW5kZXggMTlkMGM4Njg5MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNi4uZGE1ODUyYWNi
YjNjNDkyOTA0YjEyZTljOTEyYzM0MDFkMWVmM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMzUsNCArMzUsNiBA
QCB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lk
KiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcgogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9h
ZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKIAorV2ViS2l0
OjpXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsK
KwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiOGYxOWI0NzJlM2I1OGIzOTlmMmRlMmJhZTdk
NDUyNTlmNTBmZTguLjEyOGEwNjBhZjRiNWJkZDBiY2ZlZWU5YWVlN2UzYWE2ZDQxOTY4N2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2MCBAQAorMjAxMi0wNi0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1drMl1bRUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRUZXN0UnVubmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0Fj
dGl2YXRlRm9udHNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6
OmFjdGl2YXRlRm9udHMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxl
ckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6d2FpdFRvRHVt
cFdhdGNoZG9nVGltZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKToKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklm
TmVlZGVkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1O
YW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RS
KToKKyAgICAgICAgKFdUUjo6aW5pdEVjb3JlRXZhcyk6CisgICAgICAgIChXVFI6OlBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
Ojp+UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZXNp
emVUbyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cGFnZSk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6Zm9jdXMpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OndpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5k
b3dGcmFtZSk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRG
aWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJl
c3BvbmRlcik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJ
bWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OnRpbWVyRmlyZWQpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6CisgICAgICAgIChXVFI6OmdldEVudmlyb25t
ZW50VmFyaWFibGVPckV4aXQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1bk1vZGFsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
TGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9t
YWluLmNwcDogQWRkZWQuCisgICAgICAgIChtYWluKToKKwogMjAxMi0wNi0xMCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHBvc2UgbGF5b3V0VGVzdENvbnRy
b2xsZXIgYXMgdGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODk0NjcwNjE5MDUwNDI1NTJlOGNjZjM1ZjFiMzI0
NWFiYThmYzA0Li4xNmRjODM3NzM5YjJjYzIwMWY1NTI5ZTQzYzY5YmI2MGI1M2RhYzM5IDEwMDY0
NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApA
QCAtMyw2ICszLDkgQEAgSUYgKCIke1BPUlR9IiBTVFJFUVVBTCAiRWZsIikKICAgICAgICAgQURE
X1NVQkRJUkVDVE9SWShEdW1wUmVuZGVyVHJlZS9lZmwpCiAgICAgICAgIEFERF9TVUJESVJFQ1RP
UlkoRVdlYkxhdW5jaGVyKQogICAgIEVORElGICgpCisgICAgSUYgKEVOQUJMRV9XRUJLSVQyKQor
ICAgICAgICBBRERfU1VCRElSRUNUT1JZKFdlYktpdFRlc3RSdW5uZXIpCisgICAgRU5ESUYgKCkK
IEVMU0VJRiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW5DRSIpCiAgICAgQUREX1NVQkRJUkVDVE9S
WShXaW5DRUxhdW5jaGVyKQogRU5ESUYoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGIwNzQ0MDU2NWU2ZWU3MjQ4NzUzMWUyYmJlMGE3MmYxZTY4NTc0Mwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQK
QEAgLTAsMCArMSw4MyBAQAorU0VUKFdFQktJVF9URVNUUlVOTkVSX0RJUiAiJHtUT09MU19ESVJ9
L1dlYktpdFRlc3RSdW5uZXIiKQorU0VUKFdFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExF
X0RJUiAiJHtUT09MU19ESVJ9L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUiKQorCitG
SUxFKE1BS0VfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUp
CisKK1NFVChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0RJUn0vQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfS9QaXhlbER1bXBTdXBwb3J0LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9U
ZXN0Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdEludm9j
YXRpb24uY3BwCispCisKK1NFVChXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFUworICAgICR7SmF2
YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9Cisg
ICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICR7SkFWQVNDUklQVENPUkVfRElSfQorICAgICR7V1RGX0RJ
Un0KKyAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pzCisgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9ESVJ9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzCisgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L2luY2x1ZGUKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJ
Un0vaW5jbHVkZQorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUKKyAg
ICAke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZQorICAgICR7Q01BS0VfQklOQVJZX0RJUn0KKykK
KworU0VUKFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAKKyAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJ
Un0vR0NDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSfS9JbmplY3RlZEJ1bmRsZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVD
VEVEQlVORExFX0RJUn0vSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9UZXh0SW5w
dXRDb250cm9sbGVyLmNwcAorCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRM
RV9ESVJ9L0JpbmRpbmdzL0pTV3JhcHBlci5jcHAKKykKKworRklMRShHTE9CIFdlYktpdFRlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVMgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9CaW5kaW5ncy8qLmlkbCIpCitGT1JFQUNIIChfZmlsZSAke1dlYktpdFRl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVN9KQorICAgIEdFVF9GSUxFTkFNRV9DT01Q
T05FTlQgKF9uYW1lICR7X2ZpbGV9IE5BTUVfV0UpCisgICAgQUREX0NVU1RPTV9DT01NQU5EKAor
ICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZS9KUyR7
X25hbWV9LmNwcAorICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfZmlsZX0KKyAgICAgICAgREVQ
RU5EUyAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBs
ICR7U0NSSVBUU19CSU5ESU5HU30KKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0g
LUkke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzIC1JJHtXRUJLSVRfVEVTVFJVTk5FUl9J
TkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3Njcmlw
dHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZpbmUgXCJcIiAtLWdlbmVyYXRvciBUZXN0UnVu
bmVyIC0taW5jbHVkZSAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmlu
ZGluZ3MgLS1vdXRwdXRkaXIgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZSAk
e19maWxlfQorICAgICAgICBWRVJCQVRJTSkKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
QnVuZGxlL0pTJHtfbmFtZX0uY3BwKQorRU5ERk9SRUFDSCAoKQorCitJTkNMVURFX0lGX0VYSVNU
Uygke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGxhdGZvcm0ke1BPUlR9LmNtYWtlKQorCitJTkNM
VURFX0RJUkVDVE9SSUVTKEJFRk9SRSAke1dlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RP
UklFU30pCisKK0FERF9MSUJSQVJZKFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtX
ZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFU30pCitUQVJHRVRfTElOS19MSUJS
QVJJRVMoVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlICR7V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJ
RVN9KQorCitBRERfRVhFQ1VUQUJMRShiaW4vV2ViS2l0VGVzdFJ1bm5lciAke1dlYktpdFRlc3RS
dW5uZXJfU09VUkNFU30pCitUQVJHRVRfTElOS19MSUJSQVJJRVMoYmluL1dlYktpdFRlc3RSdW5u
ZXIgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCisKK1NFVF9UQVJHRVRfUFJPUEVSVElF
UyhiaW4vV2ViS2l0VGVzdFJ1bm5lciBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MKKyAgICAiLWlu
Y2x1ZGUgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIK
KykKKworSUYgKFdlYktpdFRlc3RSdW5uZXJfTElOS19GTEFHUykKKyAgICBBRERfVEFSR0VUX1BS
T1BFUlRJRVMoYmluL1dlYktpdFRlc3RSdW5uZXIgTElOS19GTEFHUyAke1dlYktpdFRlc3RSdW5u
ZXJfTElOS19GTEFHU30pCitFTkRJRiAoKQorCitBRERfREVQRU5ERU5DSUVTKGJpbi9XZWJLaXRU
ZXN0UnVubmVyIGZvcndhcmRpbmctaGVhZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIpCitBRERf
REVQRU5ERU5DSUVTKGJpbi9XZWJLaXRUZXN0UnVubmVyIGZvcndhcmRpbmctaGVhZGVyc1NvdXBG
b3JXZWJLaXRUZXN0UnVubmVyKQorCitTRVRfVEFSR0VUX1BST1BFUlRJRVMoYmluL1dlYktpdFRl
c3RSdW5uZXIgUFJPUEVSVElFUyBSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklO
QVJZX0RJUn0iKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDk0NWE2NjA5ZTFjMTNkMzhi
MTJiYWU1NDY0M2NmZmIyYWY0NzZjNGQuLmI4ZjJiMWU0ZjVjZWM3ZGUwM2ZlNmMyMGUwYThhZWEz
Y2I1YzhlMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDkgQEAgdHlw
ZWRlZiBVSU5UX1BUUiBQbGF0Zm9ybVRpbWVyUmVmOwogdHlwZWRlZiBRVGltZXIgUGxhdGZvcm1U
aW1lclJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgdW5zaWduZWQgaW50IFBsYXRm
b3JtVGltZXJSZWY7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVmIHN0cnVjdCBfRWNvcmVf
VGltZXIgRWNvcmVfVGltZXI7Cit0eXBlZGVmIEVjb3JlX1RpbWVyKiBQbGF0Zm9ybVRpbWVyUmVm
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0VmbC5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMWZiYmI2NTA5NmVmYWJjOTQ4YTQ0YjQ0YjZjNDMyYmYzNjZhODhkCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwv
QWN0aXZhdGVGb250c0VmbC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBY3RpdmF0ZUZvbnRzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIGFjdGl2YXRlRm9udHMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5k
bGVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MWQwNDNmN2VlZjk1ZjBlMzZmMTk4NWUxMTFmN2QzZTQw
MjlmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6
cGxhdGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVy
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ODQ3YjIwMjAxZjg2YjNjZmI4MTkzMDUxMzEyNmI3MDNmOTk5
MDEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKworbmFtZXNwYWNlIFdUUiB7CisK
K3N0YXRpYyBFaW5hX0Jvb2wgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJDYWxsYmFjayh2b2lkKikK
K3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBt
X3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyID0gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBpZiAoIW1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpCisgICAgICAgIHJldHVybjsKKyAgICBlY29yZV90aW1l
cl9kZWwobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcik7CisgICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lciA9IDA7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV93YWl0VG9EdW1w
V2F0Y2hkb2dUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50
ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyQ2FsbGJhY2ssIDApOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2Uo
SlNTdHJpbmdSZWYgdXJsKQoreworICAgIHJldHVybiB1cmw7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiZWZsIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE2YjM3Njc5NmE1ZGFjNjIxM2ZjMWQ5MTdhZTM5ZjhhZjJjYTA3ZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTAsMCArMSw0NyBAQAorTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZM
QUdTCisgICAgJHtFQ09SRV9YX0xERkxBR1N9CisgICAgJHtFREpFX0xERkxBR1N9CisgICAgJHtF
RkxERVBTX0xERkxBR1N9CisgICAgJHtFVkFTX0xERkxBR1N9CisgICAgJHtMSUJTT1VQMjRfTERG
TEFHU30KKykKKworQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzRWZsRm9yV2Vi
S2l0VGVzdFJ1bm5lcgorICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUMl9E
SVJ9L1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfSAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZSBlZmwKKykK
KworQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RS
dW5uZXIKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVDJfRElSfS9TY3Jp
cHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgc291cAorKQorCitMSVNU
KEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0RJUn0vY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKKworICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJV
Tk5FUl9ESVJ9L2VmbC9tYWluLmNwcAorKQorCitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVy
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtXVEZfRElSfS93dGYvZ29iamVjdCIKKworICAg
ICR7Q0FJUk9fSU5DTFVERV9ESVJTfQorICAgICR7RUNPUkVfWF9JTkNMVURFX0RJUlN9CisgICAg
JHtFRkxERVBTX0lOQ0xVREVfRElSU30KKyAgICAke0VWQVNfSU5DTFVERV9ESVJTfQorICAgICR7
R2xpYl9JTkNMVURFX0RJUlN9CispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElC
UkFSSUVTCisgICAgJHtDQUlST19MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9YX0xJQlJBUklFU30K
KyAgICAke0VESkVfTElCUkFSSUVTfQorICAgICR7RUZMREVQU19MSUJSQVJJRVN9CisgICAgJHtH
bGliX0xJQlJBUklFU30KKykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVk
QnVuZGxlX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJ
Un0vZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpF
Q1RFREJVTkRMRV9ESVJ9L2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKKyAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZs
LmNwcAorKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggMGU4
YzZiNWIyNDBjYTBhN2NmNjg3ZTA1MmM2OWVmZDQwMWQ5ZTAxYy4uYThjZjBkNjZjODMwMjhiMmQ3
MzdkMWRhODA4YWVmMGFjOGI4Njg0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
V2ViVmlldy5oCkBAIC01MSw2ICs1MSwxMSBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1XaW5kb3c7
CiB0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIHR5cGVkZWYgV0tWaWV3UmVm
IFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBHdGtXaWRnZXQqIFBsYXRmb3JtV2luZG93OworI2Vs
aWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0
OwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0V2YXMgRWNvcmVfRXZhczsKK3R5cGVkZWYgRXZhc19P
YmplY3QqIFBsYXRmb3JtV0tWaWV3OwordHlwZWRlZiBFY29yZV9FdmFzKiBQbGF0Zm9ybVdpbmRv
dzsKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RSIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggZmZkYzJjYzY2ZWVkYzIzOGIyZGFkM2VkZmI4NzcyNGVkNDQ1
ZGJiNS4uM2RiZTdjOWRlMDQzNmVlOWExMDhjM2I4MTFiMmIwMzEyN2U2MDE1ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNp
bmNsdWRlIDxXZWJLaXQyL1dLUGFnZVByaXZhdGVNYWMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCmluZGV4IGYzNGVjMzVjMGY2NTQ3YjFm
NzBkMzc2NDRmZDRjYTNhNmJiOWViZDMuLmI4NGY5M2UwMzhjOGNlMmZjN2NiMGJkMmUwYjEwYzJi
ZDFmYTM5MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lclByZWZpeC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
clByZWZpeC5oCkBAIC0zOCw2ICszOCwxMCBAQAogI2luY2x1ZGUgImF1dG90b29sc2NvbmZpZy5o
IgogI2VuZGlmIC8qIGRlZmluZWQgKEJVSUxESU5HX0dUS19fKSAqLwogCisjaWYgZGVmaW5lZCAo
QlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisK
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3
RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjg3YjI5ZjViZDRkY2QzN2FiMjlhNmM5YzI2YzVlY2I1NzAyY2E2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2Vi
Vmlld0VmbC5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1XZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisKK25hbWVzcGFjZSBXVFIg
eworCitzdGF0aWMgaW50IHVzZVgxMVdpbmRvdyA9IGZhbHNlOworCitzdGF0aWMgRWNvcmVfRXZh
cyogaW5pdEVjb3JlRXZhcygpCit7CisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gdXNlWDEx
V2luZG93ID8gZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgODAwLCA2MDAsIDApIDogZWNvcmVfZXZh
c19idWZmZXJfbmV3KDgwMCwgNjAwKTsKKyAgICBpZiAoIWVjb3JlRXZhcykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBlY29yZV9ldmFzX3RpdGxlX3NldChlY29yZUV2YXMsICJFRkwgV2ViS2l0
VGVzdFJ1bm5lciIpOworICAgIGVjb3JlX2V2YXNfc2hvdyhlY29yZUV2YXMpOworCisgICAgcmV0
dXJuIGVjb3JlRXZhczsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3dp
bmRvdyA9IGluaXRFY29yZUV2YXMoKTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQo
bV93aW5kb3cpOworICAgIG1fdmlldyA9IChFdmFzX09iamVjdCopV0tWaWV3Q3JlYXRlKGV2YXMs
IGNvbnRleHQsIHBhZ2VHcm91cCk7CisgICAgbV93aW5kb3dJc0tleSA9IGZhbHNlOworfQorCitQ
bGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQoreworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3sKKyAg
ICBldmFzX29iamVjdF9yZXNpemUobV92aWV3LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworV0tQYWdl
UmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIFdLVmlld0dldFBhZ2Uo
KFdLVmlld1JlZiltX3ZpZXcpOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQor
eworfQorCitXS1JlY3QgUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dGcmFtZSgpCit7CisKKyAgICBX
S1JlY3QgZnJhbWU7CisgICAgZnJhbWUub3JpZ2luLnggPSAwOworICAgIGZyYW1lLm9yaWdpbi55
ID0gMDsKKyAgICBmcmFtZS5zaXplLndpZHRoID0gMDsKKyAgICBmcmFtZS5zaXplLmhlaWdodCA9
IDA7CisgICAgcmV0dXJuIGZyYW1lOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2lu
ZG93RnJhbWUoV0tSZWN0IGZyYW1lKQoreworICAgIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCBm
cmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnkpOworICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUu
d2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFk
ZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3Zl
Q2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2Vi
Vmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKworV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxh
dGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRvIGNhcHR1cmUgcGl4ZWxzIGluIHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHdoaWNo
IG1heSBiZSBuZWNlc3NhcnkgdG8gY2FwdHVyZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgor
ICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMDg2
OTBmMzRlZWE1NjU5MGIxM2YwOGQwZmM3NWI4MTdjZTk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVk
ZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBFY29yZV9UaW1lciog
dGltZXIgPSAwOworCitzdGF0aWMgRWluYV9Cb29sIHRpbWVyRmlyZWQodm9pZCopCit7CisgICAg
dGltZXIgPSAwOworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIEVDT1JF
X0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgp
Cit7CisgICAgaWYgKHRpbWVyKSB7CisgICAgICAgIGVjb3JlX3RpbWVyX2RlbCh0aW1lcik7Cisg
ICAgICAgIHRpbWVyID0gMDsKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYsIGRvdWJsZSB0aW1l
b3V0KQoreworICAgIHRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQodGltZW91dCwgdGltZXJG
aXJlZCwgMCk7CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3N0YXRpYyBjb25z
dCBjaGFyKiBnZXRFbnZpcm9ubWVudFZhcmlhYmxlT3JFeGl0KGNvbnN0IGNoYXIqIHZhcmlhYmxl
TmFtZSkKK3sKKyAgICBjb25zdCBjaGFyKiB2YWx1ZSA9IGdldGVudih2YXJpYWJsZU5hbWUpOwor
ICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBub3QgZm91bmRcbiIsIHZhcmlhYmxlTmFtZSk7CisgICAgICAgIGV4aXQoMCk7
CisgICAgfQorICAgIHJldHVybiB2YWx1ZTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7CisgICAgY29uc3QgY2hhciogYnVuZGxlUGF0
aCA9IGdldEVudmlyb25tZW50VmFyaWFibGVPckV4aXQoIlRFU1RfUlVOTkVSX0lOSkVDVEVEX0JV
TkRMRV9GSUxFTkFNRSIpOworICAgIG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVuZGxlUGF0aCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KCkKK3sKKyAgICBjb25zdCBjaGFyKiBwbHVn
aW5QYXRoID0gZ2V0RW52aXJvbm1lbnRWYXJpYWJsZU9yRXhpdCgiVEVTVF9SVU5ORVJfUExVR0lO
X1BBVEgiKTsKKyAgICBtX2luamVjdGVkQnVuZGxlUGF0aCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHBsdWdpblBhdGgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUluaXRpYWxpemVDb250ZXh0KCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9k
YWwoUGxhdGZvcm1XZWJWaWV3KikKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQg
dGhpcyB0byB0ZXN0IHNob3dNb2RhbERpYWxvZy4KK30KKworY29uc3QgY2hhciogVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2VmbC9tYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3MWIzMmNlYmUwYzg1NmEwMWY1MWI1MDhiNzc4ZWMxNzI3YjhmZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9tYWluLmNwcApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFZGplLmg+
CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpZmRlZiBI
QVZFX0VDT1JFX1gKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdHlwZV9pbml0KCk7CisgICAgaWYgKCFnX3Ro
cmVhZF9zdXBwb3J0ZWQoKSkKKyAgICAgICAgZ190aHJlYWRfaW5pdCgwKTsKKworICAgIGlmICgh
ZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICghZWRqZV9pbml0
KCkpCisgICAgICAgIHJldHVybiAxOworCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFl
Y29yZV94X2luaXQoMCkpCisgICAgICAgIHJldHVybiAxOworI2VuZGlmCisKKyAgICAvLyBQcmVm
ZXIgdGhlIG5vdCBpbnN0YWxsZWQgd2ViIGFuZCBwbHVnaW4gcHJvY2Vzc2VzLgorICAgIFdUUjo6
VGVzdENvbnRyb2xsZXIgY29udHJvbGxlcihhcmdjLCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4o
YXJndikpOworCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgZWNvcmVfeF9zaHV0ZG93bigpOwor
I2VuZGlmCisKKyAgICBlZGplX3NodXRkb3duKCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigp
OworCisgICAgcmV0dXJuIDA7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146782</attachid>
            <date>2012-06-10 22:12:33 -0700</date>
            <delta_ts>2012-06-24 17:14:06 -0700</delta_ts>
            <desc>WIP:AllInOne (Try to fix build break)</desc>
            <filename>bug-87659-20120611141230.patch</filename>
            <type>text/plain</type>
            <size>35129</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQyODY2MDIzYzMxZTc1
YWFkNzcwZDkwNzFiZDM0ODQ0ZjhkMWM3ZC4uNDQzY2UyYmY0MGZjODU5MzljYjcyNzliYmQxMzc3
NDQ2MGQ2Y2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA2LTEwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKFdLVmlld0dldFBhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ2V0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisKIDIwMTIt
MDYtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bm5lZWRlZCBjYWxsUmVtb3ZlZExhc3RSZWYgZnVuY3Rpb24gZnJvbSBUcmVlU2hhcmVkIHJlZmFj
dG9yaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDVlMDg4NWVhMTgyOTY2N2ZjOGFl
MjhkNDI5OGNlMzdjNmNlOTFhMmUuLjY1YjY4ODdjZDczNzVhODg4NTVhNmJmNjI3NWM0OTgzMWZk
YmY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNCw2ICsxNCw4IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorCiAgICAgU2hhcmVk
L0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAKIAogICAgIFNoYXJlZC9jYWlyby9M
YXllclRyZWVDb250ZXh0Q2Fpcm8uY3BwCkBAIC0yOCw2ICszMCw4IEBAIExJU1QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKwogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtODQsNiArODgsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElSfS9zdmcvZ3JhcGhp
Y3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCmluZGV4IDI4ZTdhZWQ2MjU3M2UyMTA2ZTIyOGZmYmEyM2Q5MjBiOWU0N2I3NmUuLjQwMmFm
OGZkNTNjYjFmYjdhZjFiMjNkNTdmYTFmMTAwMWY4YTA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmgKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2VTb3VwLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0VGTCkKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZUVmbC5oPgorI2VuZGlmCisKIC8qIFdlYktpdDIgc2hhcmVkIHR5
cGVzICovCiAKIHR5cGVkZWYgdWludDMyX3QgV0tUeXBlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWMxM2RjYjIwMTkwMDdjNjRm
NGYzMDMxNGQ3NzdkMjZkMDI5YTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXS0Jhc2VFZmxfaAor
I2RlZmluZSBXS0Jhc2VFZmxfaAorCisjaWZuZGVmIFdLQmFzZV9oCisjZXJyb3IgIlBsZWFzZSAj
aW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLVmlldyogV0tWaWV3UmVmOworCisjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBlNDdiMDVmZjViMGQ3OTU4
OWM3ZTEyMTMxNDlmM2MxYzg2MTk0YTkwLi5jZmY3MGY0OGI0NGJkOGNlNDQ5YTBhMTk5OGY3OTE1
MTA4N2FiYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
CkBAIC0zNjQsNCArMzY0LDggQEAgaW5saW5lIFByb3h5aW5nUmVmUHRyPFdlYkdyYW1tYXJEZXRh
aWw+IHRvQVBJKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGdyYW0KICNpbmNsdWRlICJX
S0FQSUNhc3RTb3VwLmgiCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0VGTCkK
KyNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKKyNlbmRpZgorCiAjZW5kaWYgLy8gV0tBUElDYXN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElD
YXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVm
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhMDY4ZWYzNjY4ODRjM2Y5ZDIyNjBhNjk1YTY5MjgxNTc1MWUyOTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
QVBJQ2FzdEVmbC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdLQVBJQ2FzdEVmbF9oCisjZGVmaW5lIFdLQVBJ
Q2FzdEVmbF9oCisKKyNpZm5kZWYgV0tBUElDYXN0X2gKKyNlcnJvciAiUGxlYXNlICNpbmNsdWRl
IFwiV0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCisjZW5kaWYK
KwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld1JlZiwgRXZhc19PYmplY3QpCisK
K30KKworI2VuZGlmIC8vIFdLQVBJQ2FzdEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThlMjNmYjA0MjljM2ZhNzBmZTk2
Y2Q1MDg4ZGE1NzZkYTBhYjRlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldLVmlldy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
ZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoRXZhcyogY2FudmFzLCBX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorewor
ICAgIHJldHVybiB0b0FQSShld2tfdmlld19iYXNlX2FkZChjYW52YXMsIGNvbnRleHRSZWYsIHBh
Z2VHcm91cFJlZikpOworfQorCitXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmll
d1JlZikKK3sKKyAgICByZXR1cm4gdG9BUEkoZXdrX3ZpZXdfcGFnZV9nZXQodG9JbXBsKHZpZXdS
ZWYpKSk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWE3OTYxZGFhMjkwMjQ4N2YwY2I5M2IxZjI5ZDRiOTgxMmExMzUwMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV0tWaWV3X2gKKyNkZWZpbmUgV0tWaWV3X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9FdmFzIEV2YXM7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVmll
d1JlZiBXS1ZpZXdDcmVhdGUoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwKTsKKworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1ZpZXdHZXRQ
YWdlKFdLVmlld1JlZiB2aWV3KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKaW5kZXggZGUyYWE4OWM5Yzg1NGQ3MzExMzc3ZTY0NjE0ZTMzNWQxYWI4
MzEyNS4uYzYxYTdmMjYxZjc3YmIyZWJjM2RiNjIwN2Y4MDhjNjNhMWY3MGNkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtNTQyLDMgKzU0
MiwxMSBAQCB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IEludFNpegogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Np
emVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAg
ICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzbWFydERhdGEtPmltYWdlLCBpbWFn
ZURhdGEpOwogfQorCitXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCAwKTsKKworICAgIHJldHVybiBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
aW5kZXggMTlkMGM4Njg5MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNi4uZGE1ODUyYWNi
YjNjNDkyOTA0YjEyZTljOTEyYzM0MDFkMWVmM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMzUsNCArMzUsNiBA
QCB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lk
KiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcgogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9h
ZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKIAorV2ViS2l0
OjpXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsK
KwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiOGYxOWI0NzJlM2I1OGIzOTlmMmRlMmJhZTdk
NDUyNTlmNTBmZTguLjEyOGEwNjBhZjRiNWJkZDBiY2ZlZWU5YWVlN2UzYWE2ZDQxOTY4N2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2MCBAQAorMjAxMi0wNi0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1drMl1bRUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRUZXN0UnVubmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0Fj
dGl2YXRlRm9udHNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6
OmFjdGl2YXRlRm9udHMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxl
ckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6d2FpdFRvRHVt
cFdhdGNoZG9nVGltZXJDYWxsYmFjayk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKToKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklm
TmVlZGVkKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1O
YW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RS
KToKKyAgICAgICAgKFdUUjo6aW5pdEVjb3JlRXZhcyk6CisgICAgICAgIChXVFI6OlBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
Ojp+UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZXNp
emVUbyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cGFnZSk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6Zm9jdXMpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OndpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5k
b3dGcmFtZSk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRG
aWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRG
aWVsZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJl
c3BvbmRlcik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJ
bWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OnRpbWVyRmlyZWQpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6CisgICAgICAgIChXVFI6OmdldEVudmlyb25t
ZW50VmFyaWFibGVPckV4aXQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1bk1vZGFsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
TGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9t
YWluLmNwcDogQWRkZWQuCisgICAgICAgIChtYWluKToKKwogMjAxMi0wNi0xMCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHBvc2UgbGF5b3V0VGVzdENvbnRy
b2xsZXIgYXMgdGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODk0NjcwNjE5MDUwNDI1NTJlOGNjZjM1ZjFiMzI0
NWFiYThmYzA0Li4xNmRjODM3NzM5YjJjYzIwMWY1NTI5ZTQzYzY5YmI2MGI1M2RhYzM5IDEwMDY0
NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApA
QCAtMyw2ICszLDkgQEAgSUYgKCIke1BPUlR9IiBTVFJFUVVBTCAiRWZsIikKICAgICAgICAgQURE
X1NVQkRJUkVDVE9SWShEdW1wUmVuZGVyVHJlZS9lZmwpCiAgICAgICAgIEFERF9TVUJESVJFQ1RP
UlkoRVdlYkxhdW5jaGVyKQogICAgIEVORElGICgpCisgICAgSUYgKEVOQUJMRV9XRUJLSVQyKQor
ICAgICAgICBBRERfU1VCRElSRUNUT1JZKFdlYktpdFRlc3RSdW5uZXIpCisgICAgRU5ESUYgKCkK
IEVMU0VJRiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW5DRSIpCiAgICAgQUREX1NVQkRJUkVDVE9S
WShXaW5DRUxhdW5jaGVyKQogRU5ESUYoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjQ1NTE0ZjE0M2U4N2JjMmY3MTg0ZmVlNzkwNzJlZGQ3Yzg1YWZlYwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQK
QEAgLTAsMCArMSw4MyBAQAorU0VUKFdFQktJVF9URVNUUlVOTkVSX0RJUiAiJHtUT09MU19ESVJ9
L1dlYktpdFRlc3RSdW5uZXIiKQorU0VUKFdFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExF
X0RJUiAiJHtUT09MU19ESVJ9L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUiKQorCitG
SUxFKE1BS0VfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUp
CisKK1NFVChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0RJUn0vQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfS9QaXhlbER1bXBTdXBwb3J0LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9U
ZXN0Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdEludm9j
YXRpb24uY3BwCispCisKK1NFVChXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFUworICAgICR7SmF2
YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9Cisg
ICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfQorICAgICR7V1RG
X0RJUn0KKyAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pzCisgICAgJHtXRUJLSVRfVEVTVFJV
Tk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CisgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L2luY2x1ZGUKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJ
Un0vaW5jbHVkZQorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUKKyAg
ICAke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZQorICAgICR7Q01BS0VfQklOQVJZX0RJUn0KKykK
KworU0VUKFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5jcHAKKyAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJ
Un0vR0NDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSfS9JbmplY3RlZEJ1bmRsZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVD
VEVEQlVORExFX0RJUn0vSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9UZXh0SW5w
dXRDb250cm9sbGVyLmNwcAorCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRM
RV9ESVJ9L0JpbmRpbmdzL0pTV3JhcHBlci5jcHAKKykKKworRklMRShHTE9CIFdlYktpdFRlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVMgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9CaW5kaW5ncy8qLmlkbCIpCitGT1JFQUNIIChfZmlsZSAke1dlYktpdFRl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVN9KQorICAgIEdFVF9GSUxFTkFNRV9DT01Q
T05FTlQgKF9uYW1lICR7X2ZpbGV9IE5BTUVfV0UpCisgICAgQUREX0NVU1RPTV9DT01NQU5EKAor
ICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZS9KUyR7
X25hbWV9LmNwcAorICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfZmlsZX0KKyAgICAgICAgREVQ
RU5EUyAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBs
ICR7U0NSSVBUU19CSU5ESU5HU30KKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0g
LUkke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzIC1JJHtXRUJLSVRfVEVTVFJVTk5FUl9J
TkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3Njcmlw
dHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZpbmUgXCJcIiAtLWdlbmVyYXRvciBUZXN0UnVu
bmVyIC0taW5jbHVkZSAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmlu
ZGluZ3MgLS1vdXRwdXRkaXIgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZSAk
e19maWxlfQorICAgICAgICBWRVJCQVRJTSkKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
QnVuZGxlL0pTJHtfbmFtZX0uY3BwKQorRU5ERk9SRUFDSCAoKQorCitJTkNMVURFX0lGX0VYSVNU
Uygke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGxhdGZvcm0ke1BPUlR9LmNtYWtlKQorCitJTkNM
VURFX0RJUkVDVE9SSUVTKCR7V2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTfSkK
KworQUREX0xJQlJBUlkoVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlIFNIQVJFRCAke1dlYktpdFRl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhU
ZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCisK
K0FERF9FWEVDVVRBQkxFKGJpbi9XZWJLaXRUZXN0UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9T
T1VSQ0VTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhiaW4vV2ViS2l0VGVzdFJ1bm5lciAke1dl
YktpdFRlc3RSdW5uZXJfTElCUkFSSUVTfSkKKworU0VUX1RBUkdFVF9QUk9QRVJUSUVTKGJpbi9X
ZWJLaXRUZXN0UnVubmVyIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUworICAgICItaW5jbHVkZSAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIgorKQorCitJ
RiAoV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElF
UyhiaW4vV2ViS2l0VGVzdFJ1bm5lciBMSU5LX0ZMQUdTICR7V2ViS2l0VGVzdFJ1bm5lcl9MSU5L
X0ZMQUdTfSkKK0VORElGICgpCisKK0FERF9ERVBFTkRFTkNJRVMoYmluL1dlYktpdFRlc3RSdW5u
ZXIgZm9yd2FyZGluZy1oZWFkZXJzRWZsRm9yV2ViS2l0VGVzdFJ1bm5lcikKK0FERF9ERVBFTkRF
TkNJRVMoYmluL1dlYktpdFRlc3RSdW5uZXIgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktp
dFRlc3RSdW5uZXIpCisKK1NFVF9UQVJHRVRfUFJPUEVSVElFUyhiaW4vV2ViS2l0VGVzdFJ1bm5l
ciBQUk9QRVJUSUVTIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElS
fSIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOTQ1YTY2MDllMWMxM2QzOGIxMmJhZTU0
NjQzY2ZmYjJhZjQ3NmM0ZC4uYjhmMmIxZTRmNWNlYzdkZTAzZmU2YzIwZTBhOGFlYTNjYjVjOGUw
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsOSBAQCB0eXBlZGVmIFVJ
TlRfUFRSIFBsYXRmb3JtVGltZXJSZWY7CiB0eXBlZGVmIFFUaW1lciBQbGF0Zm9ybVRpbWVyUmVm
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUGxhdGZvcm1UaW1l
clJlZjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9UaW1lciBF
Y29yZV9UaW1lcjsKK3R5cGVkZWYgRWNvcmVfVGltZXIqIFBsYXRmb3JtVGltZXJSZWY7CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdUUiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMxZmJiYjY1MDk2ZWZhYmM5NDhhNDRiNDRiNmM0MzJiZjM2NmE4OGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0
ZUZvbnRzRWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjdGl2
YXRlRm9udHMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdUUiB7CisKK3ZvaWQgYWN0aXZhdGVGb250cygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTYxZDA0M2Y3ZWVmOTVmMGUzNmYxOTg1ZTExMWY3ZDNlNDAyOWYxOAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
ZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9y
bUluaXRpYWxpemUoV0tUeXBlUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU4NDdiMjAyMDFmODZiM2NmYjgxOTMwNTEzMTI2YjcwM2Y5OTkwMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2Vm
bC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGUuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorCituYW1lc3BhY2UgV1RSIHsKKworc3RhdGlj
IEVpbmFfQm9vbCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckNhbGxiYWNrKHZvaWQqKQoreworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT53YWl0VG9E
dW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIG1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpp
bnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIGlmICghbV93YWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcikKKyAgICAgICAgcmV0dXJuOworICAgIGVjb3JlX3RpbWVyX2RlbCht
X3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKTsKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVy
ID0gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVdhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKQoreworICAgIGlmIChtX3dhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVy
ID0gZWNvcmVfdGltZXJfbG9vcF9hZGQod2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXJDYWxsYmFjaywgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0cmlu
Z1JlZiB1cmwpCit7CisgICAgcmV0dXJuIHVybDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJlZmwiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTZiMzc2Nzk2YTVkYWM2MjEzZmMxZDkxN2FlMzlmOGFmMmNhMDdkCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
MCwwICsxLDQ3IEBACitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJTktfRkxBR1MKKyAg
ICAke0VDT1JFX1hfTERGTEFHU30KKyAgICAke0VESkVfTERGTEFHU30KKyAgICAke0VGTERFUFNf
TERGTEFHU30KKyAgICAke0VWQVNfTERGTEFHU30KKyAgICAke0xJQlNPVVAyNF9MREZMQUdTfQor
KQorCitBRERfQ1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNFZmxGb3JXZWJLaXRUZXN0
UnVubmVyCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVQyX0RJUn0vU2Ny
aXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJHtXRUJLSVRfVEVTVFJVTk5FUl9E
SVJ9ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIGVmbAorKQorCitBRERf
Q1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNTb3VwRm9yV2ViS2l0VGVzdFJ1bm5lcgor
ICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUMl9ESVJ9L1NjcmlwdHMvZ2Vu
ZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfSAke0RF
UklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZSBzb3VwCispCisKK0xJU1QoQVBQRU5E
IFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9j
YWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9E
SVJ9L2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9E
SVJ9L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0vZWZsL21haW4uY3BwCispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfSU5DTFVE
RV9ESVJFQ1RPUklFUworICAgICIke1dURl9ESVJ9L3d0Zi9nb2JqZWN0IgorCisgICAgJHtDQUlS
T19JTkNMVURFX0RJUlN9CisgICAgJHtFQ09SRV9YX0lOQ0xVREVfRElSU30KKyAgICAke0VGTERF
UFNfSU5DTFVERV9ESVJTfQorICAgICR7RVZBU19JTkNMVURFX0RJUlN9CisgICAgJHtHbGliX0lO
Q0xVREVfRElSU30KKykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVMK
KyAgICAke0NBSVJPX0xJQlJBUklFU30KKyAgICAke0VDT1JFX1hfTElCUkFSSUVTfQorICAgICR7
RURKRV9MSUJSQVJJRVN9CisgICAgJHtFRkxERVBTX0xJQlJBUklFU30KKyAgICAke0dsaWJfTElC
UkFSSUVTfQorKQorCitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVf
U09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwv
QWN0aXZhdGVGb250c0VmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCAwZThjNmI1YjI0
MGNhMGE3Y2Y2ODdlMDUyYzY5ZWZkNDAxZDllMDFjLi5hOGNmMGQ2NmM4MzAyOGIyZDczN2QxZGE4
MDhhZWYwYWM4Yjg2ODQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKQEAgLTUxLDYgKzUxLDExIEBAIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVdpbmRvdzsKIHR5cGVk
ZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwogdHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZv
cm1XS1ZpZXc7CiB0eXBlZGVmIEd0a1dpZGdldCogUGxhdGZvcm1XaW5kb3c7CisjZWxpZiBQTEFU
Rk9STShFRkwpCit0eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7Cit0eXBl
ZGVmIHN0cnVjdCBfRWNvcmVfRXZhcyBFY29yZV9FdmFzOwordHlwZWRlZiBFdmFzX09iamVjdCog
UGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIEVjb3JlX0V2YXMqIFBsYXRmb3JtV2luZG93OwogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCBmZmRjMmNjNjZlZWRjMjM4YjJkYWQzZWRmYjg3NzI0ZWQ0NDVkYmI1Li4z
ZGJlN2M5ZGUwNDM2ZWU5YTEwOGMzYjgxMWIyYjAzMTI3ZTYwMTVkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUg
PFdlYktpdDIvV0tQYWdlUHJpdmF0ZU1hYy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXJQcm94eS5oIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKaW5kZXggZjM0ZWMzNWMwZjY1NDdiMWY3MGQzNzY0
NGZkNGNhM2E2YmI5ZWJkMy4uYjg0ZjkzZTAzOGM4Y2UyZmM3Y2IwYmQyZTBiMTBjMmJkMWZhMzkz
NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJl
Zml4LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4
LmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSAiYXV0b3Rvb2xzY29uZmlnLmgiCiAjZW5k
aWYgLyogZGVmaW5lZCAoQlVJTERJTkdfR1RLX18pICovCiAKKyNpZiBkZWZpbmVkIChCVUlMRElO
R19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKwogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yODdiMjlmNWJkNGRjZDM3YWIyOWE2YzljMjZjNWVjYjU3MDJjYTY3Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZs
LmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZp
ZXcuaCIKKworI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0
YXRpYyBpbnQgdXNlWDExV2luZG93ID0gZmFsc2U7CisKK3N0YXRpYyBFY29yZV9FdmFzKiBpbml0
RWNvcmVFdmFzKCkKK3sKKyAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSB1c2VYMTFXaW5kb3cg
PyBlY29yZV9ldmFzX25ldygwLCAwLCAwLCA4MDAsIDYwMCwgMCkgOiBlY29yZV9ldmFzX2J1ZmZl
cl9uZXcoODAwLCA2MDApOworICAgIGlmICghZWNvcmVFdmFzKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0KGVjb3JlRXZhcywgIkVGTCBXZWJLaXRUZXN0UnVu
bmVyIik7CisgICAgZWNvcmVfZXZhc19zaG93KGVjb3JlRXZhcyk7CisKKyAgICByZXR1cm4gZWNv
cmVFdmFzOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQoreworICAgIG1fd2luZG93ID0g
aW5pdEVjb3JlRXZhcygpOworICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX3dpbmRv
dyk7CisgICAgbV92aWV3ID0gKEV2YXNfT2JqZWN0KilXS1ZpZXdDcmVhdGUoZXZhcywgY29udGV4
dCwgcGFnZUdyb3VwKTsKKyAgICBtX3dpbmRvd0lzS2V5ID0gZmFsc2U7Cit9CisKK1BsYXRmb3Jt
V2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGV2YXNf
b2JqZWN0X3Jlc2l6ZShtX3ZpZXcsIHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYgUGxh
dGZvcm1XZWJWaWV3OjpwYWdlKCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0UGFnZSgoV0tWaWV3
UmVmKW1fdmlldyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7Cit9CisK
K1dLUmVjdCBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkKK3sKKworICAgIFdLUmVjdCBm
cmFtZTsKKyAgICBmcmFtZS5vcmlnaW4ueCA9IDA7CisgICAgZnJhbWUub3JpZ2luLnkgPSAwOwor
ICAgIGZyYW1lLnNpemUud2lkdGggPSAwOworICAgIGZyYW1lLnNpemUuaGVpZ2h0ID0gMDsKKyAg
ICByZXR1cm4gZnJhbWU7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFt
ZShXS1JlY3QgZnJhbWUpCit7CisgICAgZXZhc19vYmplY3RfbW92ZShtX3ZpZXcsIGZyYW1lLm9y
aWdpbi54LCBmcmFtZS5vcmlnaW4ueSk7CisgICAgcmVzaXplVG8oZnJhbWUuc2l6ZS53aWR0aCwg
ZnJhbWUuc2l6ZS5oZWlnaHQpOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21l
SW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmly
c3RSZXNwb25kZXIoKQoreworfQorCitXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdl
YlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCisgICAgLy8gd2hpY2ggbWF5IGJl
IG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCisgICAgcmV0
dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYwODY5MGYzNGVl
YTU2NTkwYjEzZjA4ZDBmYzc1YjgxN2NlOTU4MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlIDxFY29y
ZS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKworc3RhdGljIEVjb3JlX1RpbWVyKiB0aW1lciA9
IDA7CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGltZXJGaXJlZCh2b2lkKikKK3sKKyAgICB0aW1lciA9
IDA7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJB
Q0tfQ0FOQ0VMOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKK3sKKyAg
ICBpZiAodGltZXIpIHsKKyAgICAgICAgZWNvcmVfdGltZXJfZGVsKHRpbWVyKTsKKyAgICAgICAg
dGltZXIgPSAwOworICAgICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIH0KK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiwgZG91YmxlIHRpbWVvdXQpCit7
CisgICAgdGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZCh0aW1lb3V0LCB0aW1lckZpcmVkLCAw
KTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIq
IGdldEVudmlyb25tZW50VmFyaWFibGVPckV4aXQoY29uc3QgY2hhciogdmFyaWFibGVOYW1lKQor
eworICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gZ2V0ZW52KHZhcmlhYmxlTmFtZSk7CisgICAgaWYg
KCF2YWx1ZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGVudmlyb25tZW50IHZhcmlh
YmxlIG5vdCBmb3VuZFxuIiwgdmFyaWFibGVOYW1lKTsKKyAgICAgICAgZXhpdCgwKTsKKyAgICB9
CisgICAgcmV0dXJuIHZhbHVlOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXpl
SW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0gZ2V0
RW52aXJvbm1lbnRWYXJpYWJsZU9yRXhpdCgiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJ
TEVOQU1FIik7CisgICAgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhidW5kbGVQYXRoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkoKQoreworICAgIGNvbnN0IGNoYXIqIHBsdWdpblBhdGgg
PSBnZXRFbnZpcm9ubWVudFZhcmlhYmxlT3JFeGl0KCJURVNUX1JVTk5FUl9QTFVHSU5fUEFUSCIp
OworICAgIG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcocGx1Z2luUGF0aCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlh
bGl6ZUNvbnRleHQoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0
Zm9ybVdlYlZpZXcqKQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRv
IHRlc3Qgc2hvd01vZGFsRGlhbG9nLgorfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQoreworICAgIHJldHVybiAwOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZs
L21haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjcxYjMyY2ViZTBjODU2YTAxZjUxYjUwOGI3NzhlYzE3MjdiOGZlNQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEVj
b3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2lmZGVmIEhBVkVfRUNP
UkVfWAorI2luY2x1ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCit7CisgICAgZ190eXBlX2luaXQoKTsKKyAgICBpZiAoIWdfdGhyZWFkX3N1
cHBvcnRlZCgpKQorICAgICAgICBnX3RocmVhZF9pbml0KDApOworCisgICAgaWYgKCFlY29yZV9l
dmFzX2luaXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKCFlZGplX2luaXQoKSkKKyAg
ICAgICAgcmV0dXJuIDE7CisKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyAgICBpZiAoIWVjb3JlX3hf
aW5pdCgwKSkKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKworICAgIC8vIFByZWZlciB0aGUg
bm90IGluc3RhbGxlZCB3ZWIgYW5kIHBsdWdpbiBwcm9jZXNzZXMuCisgICAgV1RSOjpUZXN0Q29u
dHJvbGxlciBjb250cm9sbGVyKGFyZ2MsIGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihhcmd2KSk7
CisKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyAgICBlY29yZV94X3NodXRkb3duKCk7CisjZW5kaWYK
KworICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisKKyAg
ICByZXR1cm4gMDsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149211</attachid>
            <date>2012-06-24 17:14:15 -0700</date>
            <delta_ts>2012-06-24 22:37:34 -0700</delta_ts>
            <desc>Work in Progress #2</desc>
            <filename>bug-87659-20120625091413.patch</filename>
            <type>text/plain</type>
            <size>26274</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjU1NmEyOWQ4YWFhNzM1
ZTgxNWRiNjA1ZWMxYzhkYjgyMmE0YTU4Yi4uMmU1NjIzODAzZWZkNTM3MjZlNGQ3NmExZDE5MDQw
NDM0MTE5YTRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTI0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNi0yMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtXSzJdIEFkZCBDIEFQSSB0byBp
bnNwZWN0IGEgV2ViIEludGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1ZjZlMDll
M2E5NjMyYzBhNjU3OGU5MTU0NzA5OTI0ZjBkNWQwZjY2Li4wODMxODM2MzA3ZTM1NGE3YjljODM1
ZGZlYTg0M2FjZDYyZGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQsNiAr
MTQsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFj
aG1lbnRVbml4LmNwcAogCisgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAK
KwogICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCiAKICAgICBT
aGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFmMjc4NmNkNTYzYzhiZTcwNDIyMjJm
NzhkYzYxMzVhNWUyZTNkMzAuLjVlN2I1ZTg3MDU3OTk2ZmQyYjRlOWE5NjQ1ZTVmODgyYjJiNzE2
ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxMi0wNi0yNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW1drMl1bRUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRUZXN0UnVubmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBp
bXBsZW1lbnRhdGlvbiBvZiBXZWJLaXRUZXN0UnVubmVyIGZvciBFZmwgcG9ydC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBJbmNsdWRlcyBXZWJLaXRUZXN0UnVubmVyIGJ1aWxkIHNjcmlw
dC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXI6IEFkZGVkIGtub3ds
ZWRnZSBvZiBXZWJLaXRUZXN0UnVubmVyL0VmbC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weTogRGl0dG8uCisgICAgICAgIChFZmxQb3J0LnNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxp
c3RzLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHA6
IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQ
cmVmaXguaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdF
ZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJv
bGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL21haW4u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA2LTIxICBab2x0YW4gSG9ydmF0
aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERSVC9XVFIgcHl0aG9uIGludGVyZmFj
ZSBoYW5kbGVzIGFib3V0OmJsYW5rIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Ub29scy9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IGVhNzUyMTg0MTZmN2FlNTAy
OTYxZWFlNTRiMGE3Y2EwODlkYmE0MmUuLjBkNDM1Y2MzZmEwNGUyNTdhN2I0OTAyZWIxNmNiMjgw
NzJlMmEzYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NN
YWtlTGlzdHMudHh0CkBAIC02LDYgKzYsNyBAQCBJRiAoIiR7UE9SVH0iIFNUUkVRVUFMICJFZmwi
KQogCiAgICAgSUYgKEVOQUJMRV9XRUJLSVQyKQogICAgICAgICBBRERfU1VCRElSRUNUT1JZKE1p
bmlCcm93c2VyL2VmbCkKKyAgICAgICAgQUREX1NVQkRJUkVDVE9SWShXZWJLaXRUZXN0UnVubmVy
KQogICAgIEVORElGICgpCiBFTFNFSUYgKCIke1BPUlR9IiBTVFJFUVVBTCAiV2luQ0UiKQogICAg
IEFERF9TVUJESVJFQ1RPUlkoV2luQ0VMYXVuY2hlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lciBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVz
dHJ1bm5lcgppbmRleCBmMDNjMTc5OWE3N2ZlZTMzZjgzZjlmODk1OGUxYWZhYzA2ZTk1NGU4Li5l
NWIyMzU0NWI3N2U2ZTc4YjRjZTQxNjlmNDI4N2E4NWM0YmI1YzI5IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKKysrIGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXR0ZXN0cnVubmVyCkBAIC02Myw3ICs2Myw3IEBAIGlmIChpc0FwcGxlTWFjV2ViS2l0
KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRYQ29kZVByb2plY3QoIldlYktpdFRlc3RSdW5uZXIi
LCAkY2xlYW4sIFhjb2RlT3B0aW9ucygpLCBAQVJHVik7CiB9IGVsc2lmIChpc0FwcGxlV2luV2Vi
S2l0KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRWaXN1YWxTdHVkaW9Qcm9qZWN0KCJXZWJLaXRU
ZXN0UnVubmVyLnNsbiIsICRjbGVhbik7Ci19IGVsc2lmIChpc1F0KCkgfHwgaXNHdGsoKSkgewor
fSBlbHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSkgewogICAgICMgUXQgYW5kIEdU
SysgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGlu
ZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKaW5kZXggOGVhOGExMjU1MmYzNDM1OTgz
Nzc5OTZhNDZlM2RiZjc1NGJkZjU4Mi4uNTk2NGRmZTUyMWU0OGIxYzY1NDM3NDhkMzdmOGZiNzQ3
NjM1ZjEzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9lZmwucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9lZmwucHkKQEAgLTUyLDYgKzUyLDEyIEBAIGNsYXNzIEVmbFBvcnQoV2ViS2l0UG9ydCwgUHVs
c2VBdWRpb1Nhbml0aXplcik6CiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAg
ICBzZWxmLl91bmxvYWRfcHVsc2VhdWRpb19tb2R1bGUoKQogCisgICAgZGVmIHNldHVwX2Vudmly
b25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKKyAgICAgICAgZW52ID0gc3Vw
ZXIoRWZsUG9ydCwgc2VsZikuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQor
ICAgICAgICBlbnZbJ1RFU1RfUlVOTkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSddID0gc2Vs
Zi5fYnVpbGRfcGF0aCgnbGliJywgJ2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5zbycpCisg
ICAgICAgIGVudlsnVEVTVF9SVU5ORVJfUExVR0lOX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3BhdGgo
J2xpYicpCisgICAgICAgIHJldHVybiBlbnYKKwogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihz
ZWxmKToKICAgICAgICAgc2VsZi5fcmVzdG9yZV9wdWxzZWF1ZGlvX21vZHVsZSgpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNWJiNmY1YWQ0NTFkZjNm
ZjA3NzI1OTU1YzQxMWY1YjBkYzk5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsODEgQEAKK1NFVChXRUJLSVRfVEVT
VFJVTk5FUl9ESVIgIiR7VE9PTFNfRElSfS9XZWJLaXRUZXN0UnVubmVyIikKK1NFVChXRUJLSVRf
VEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVIgIiR7VE9PTFNfRElSfS9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlIikKKworRklMRShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09V
UkNFU19ESVJ9L0luamVjdGVkQnVuZGxlKQorCitTRVQoV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VT
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGl4ZWxEdW1wU3VwcG9ydC5jcHAKKyAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9uLmNwcAorKQorCitTRVQoV2ViS2l0VGVzdFJ1
bm5lcl9MSUJSQVJJRVMKKyAgICAke0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAk
e1dlYkNvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CispCisK
K1NFVChXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0RJUn0KKyAgICAke1dURl9ESVJ9CisgICAgJHtXRUJDT1JFX0RJUn0vdGVzdGlu
Zy9qcworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZQorICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncworICAgICR7SkFW
QVNDUklQVENPUkVfRElSfQorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVh
ZGVycworICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9pbmNsdWRlCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUKKyAgICAke0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkQnVuZGxlCisgICAgJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UKKyAg
ICAke0NNQUtFX0JJTkFSWV9ESVJ9CispCisKK1NFVChXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRC
dW5kbGVfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElS
fS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwCisgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0dDQ29udHJvbGxlci5jcHAKKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0ZWRCdW5kbGUuY3BwCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0luamVjdGVkQnVuZGxlTWFp
bi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVf
RElSfS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vVGV4dElucHV0Q29udHJvbGxlci5jcHAKKworICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5ncy9KU1dyYXBwZXIuY3BwCisp
CisKK0ZJTEUoR0xPQiBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfSURMX0ZJTEVTICIk
e1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MvKi5pZGwiKQor
Rk9SRUFDSCAoX2ZpbGUgJHtXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfSURMX0ZJTEVT
fSkKKyAgICBHRVRfRklMRU5BTUVfQ09NUE9ORU5UIChfbmFtZSAke19maWxlfSBOQU1FX1dFKQor
ICAgIEFERF9DVVNUT01fQ09NTUFORCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5qZWN0ZWRCdW5kbGUvSlMke19uYW1lfS5jcHAKKyAgICAgICAgTUFJTl9ERVBFTkRF
TkNZICR7X2ZpbGV9CisgICAgICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2Ny
aXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAke1NDUklQVFNfQklORElOR1N9CisgICAgICAgIENP
TU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9IC1JJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0
cyAtSSR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5ncyAke1dF
QkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0tZGVmaW5l
IFwiXCIgLS1nZW5lcmF0b3IgVGVzdFJ1bm5lciAtLWluY2x1ZGUgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzIC0tb3V0cHV0ZGlyICR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUgJHtfZmlsZX0KKyAgICAgICAgVkVSQkFUSU0pCisgICAg
TElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMgJHtERVJJ
VkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZS9KUyR7X25hbWV9LmNwcCkKK0VOREZPUkVB
Q0ggKCkKKworSU5DTFVERV9JRl9FWElTVFMoJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1BsYXRm
b3JtJHtQT1JUfS5jbWFrZSkKKworSU5DTFVERV9ESVJFQ1RPUklFUygke1dlYktpdFRlc3RSdW5u
ZXJfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKK0FERF9MSUJSQVJZKFRlc3RSdW5uZXJJbmplY3Rl
ZEJ1bmRsZSBTSEFSRUQgJHtXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFU30p
CitUQVJHRVRfTElOS19MSUJSQVJJRVMoVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlICR7V2ViS2l0
VGVzdFJ1bm5lcl9MSUJSQVJJRVN9KQorCitBRERfRVhFQ1VUQUJMRShXZWJLaXRUZXN0UnVubmVy
ICR7V2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhXZWJL
aXRUZXN0UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVN9KQorCitTRVRfVEFSR0VU
X1BST1BFUlRJRVMoV2ViS2l0VGVzdFJ1bm5lciBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MKKyAg
ICAiLWluY2x1ZGUgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dlYktpdFRlc3RSdW5uZXJQcmVm
aXguaCIKKykKKworSUYgKFdlYktpdFRlc3RSdW5uZXJfTElOS19GTEFHUykKKyAgICBBRERfVEFS
R0VUX1BST1BFUlRJRVMoV2ViS2l0VGVzdFJ1bm5lciBMSU5LX0ZMQUdTICR7V2ViS2l0VGVzdFJ1
bm5lcl9MSU5LX0ZMQUdTfSkKK0VORElGICgpCisKK0FERF9ERVBFTkRFTkNJRVMoV2ViS2l0VGVz
dFJ1bm5lciBmb3J3YXJkaW5nLWhlYWRlcnNFZmxGb3JXZWJLaXRUZXN0UnVubmVyKQorQUREX0RF
UEVOREVOQ0lFUyhXZWJLaXRUZXN0UnVubmVyIGZvcndhcmRpbmctaGVhZGVyc1NvdXBGb3JXZWJL
aXRUZXN0UnVubmVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGMwNTAwZjc4ZTgwZGU3
M2Y5NDc4YTdiZDMyMjcwOGI1ZTU0MjNmM2YuLjJiZjIxZWZhZWQzYWJmMDIxMWJmYzZmYzY3MTY0
MTQ0NTZiYzE4NDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDkgQEAg
dHlwZWRlZiBVSU5UX1BUUiBQbGF0Zm9ybVRpbWVyUmVmOwogdHlwZWRlZiBRVGltZXIgUGxhdGZv
cm1UaW1lclJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgdW5zaWduZWQgaW50IFBs
YXRmb3JtVGltZXJSZWY7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVmIHN0cnVjdCBfRWNv
cmVfVGltZXIgRWNvcmVfVGltZXI7Cit0eXBlZGVmIEVjb3JlX1RpbWVyKiBQbGF0Zm9ybVRpbWVy
UmVmOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0VmbC5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Nzg1Zjc3OTliNzA0OWIxNDRjM2NiOTdjNWVmOTlmMzUzNDkzYTJhCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9l
ZmwvQWN0aXZhdGVGb250c0VmbC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKKyNpbmNsdWRlICJGb250TWFuYWdlbWVudC5oIgorCitu
YW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKKyAgICBhZGRGb250c1Rv
RW52aXJvbm1lbnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1
bmRsZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYxZDA0M2Y3ZWVmOTVmMGUzNmYxOTg1ZTExMWY3ZDNl
NDAyOWYxOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIEluamVjdGVkQnVuZGxl
OjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xs
ZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NDdiMjAyMDFmODZiM2NmYjgxOTMwNTEzMTI2YjcwM2Y5
OTkwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorCituYW1lc3BhY2UgV1RSIHsK
Kworc3RhdGljIEVpbmFfQm9vbCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckNhbGxiYWNrKHZvaWQq
KQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigp
LT53YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAg
IG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIGlmICgh
bV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcikKKyAgICAgICAgcmV0dXJuOworICAgIGVjb3JlX3Rp
bWVyX2RlbChtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKTsKKyAgICBtX3dhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyID0gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKQoreworICAgIGlmIChtX3dhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQod2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJ
bnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJDYWxsYmFjaywgMCk7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJj
ZShKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgcmV0dXJuIHVybDsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJlZmwiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYTE4MjlkYzIwOGZkNzYzMDg1NjJhNGVmYzIyYWRmNGZmZmE0ZDNi
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMCwwICsxLDU2IEBACitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJTktf
RkxBR1MKKyAgICAke0VDT1JFX1hfTERGTEFHU30KKyAgICAke0VESkVfTERGTEFHU30KKyAgICAk
e0VGTERFUFNfTERGTEFHU30KKyAgICAke0VWQVNfTERGTEFHU30KKyAgICAke0xJQlNPVVAyNF9M
REZMQUdTfQorKQorCitBRERfQ1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNFZmxGb3JX
ZWJLaXRUZXN0UnVubmVyCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVQy
X0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIGVmbAor
KQorCitBRERfQ1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNTb3VwRm9yV2ViS2l0VGVz
dFJ1bm5lcgorICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUMl9ESVJ9L1Nj
cmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfSAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZSBzb3VwCispCisKK0xJ
U1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfRElSfS9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKKyAgICAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0vZWZsL21haW4uY3BwCispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5u
ZXJfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9l
ZmwvCisgICAgIiR7V1RGX0RJUn0vd3RmL2dvYmplY3QiCisKKyAgICAke0NBSVJPX0lOQ0xVREVf
RElSU30KKyAgICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQorICAgICR7RUZMREVQU19JTkNMVURF
X0RJUlN9CisgICAgJHtFVkFTX0lOQ0xVREVfRElSU30KKyAgICAke0dsaWJfSU5DTFVERV9ESVJT
fQorKQorCitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFUworICAgICR7Q0FJ
Uk9fTElCUkFSSUVTfQorICAgICR7RUNPUkVfWF9MSUJSQVJJRVN9CisgICAgJHtFREpFX0xJQlJB
UklFU30KKyAgICAke0VGTERFUFNfTElCUkFSSUVTfQorICAgICR7R2xpYl9MSUJSQVJJRVN9Cisp
CisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisg
ICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2VmbC9Gb250TWFuYWdlbWVudC5jcHAKKwor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwvQWN0aXZhdGVG
b250c0VmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0v
ZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCispCisKKyMgRklY
TUU6IERPV05MT0FERURfRk9OVFNfRElSIHNob3VsZCBub3QgaGFyZGNvZGUgdGhlIGRpcmVjdG9y
eQorIyBzdHJ1Y3R1cmUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNDc1Pi4KK0FERF9ERUZJTklUSU9OUygtREZPTlRTX0NPTkZfRElSPSIke1RPT0xTX0RJ
Un0vRHVtcFJlbmRlclRyZWUvZ3RrL2ZvbnRzIgorICAgICAgICAgICAgICAgIC1ERE9XTkxPQURF
RF9GT05UU19ESVI9IiR7Q01BS0VfU09VUkNFX0RJUn0vV2ViS2l0QnVpbGQvRGVwZW5kZW5jaWVz
L1NvdXJjZS93ZWJraXRndGstdGVzdC1mb250cy0wLjAuMyIKKyAgICAgICAgICAgICAgICAtRERB
VEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCmluZGV4IDBlOGM2YjViMjQwY2EwYTdjZjY4N2UwNTJjNjllZmQ0MDFkOWUw
MWMuLmE4Y2YwZDY2YzgzMDI4YjJkNzM3ZDFkYTgwOGFlZjBhYzhiODY4NDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNTEsNiArNTEsMTEgQEAgdHlwZWRl
ZiBIV05EIFBsYXRmb3JtV2luZG93OwogdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRn
ZXQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgR3RrV2lkZ2V0
KiBQbGF0Zm9ybVdpbmRvdzsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgc3RydWN0IF9F
dmFzX09iamVjdCBFdmFzX09iamVjdDsKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9FdmFzIEVjb3Jl
X0V2YXM7Cit0eXBlZGVmIEV2YXNfT2JqZWN0KiBQbGF0Zm9ybVdLVmlldzsKK3R5cGVkZWYgRWNv
cmVfRXZhcyogUGxhdGZvcm1XaW5kb3c7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGZkNjg4NTc5M2E2N2Y2
YzIyNmE0NjMzZWE5YzJhMTBlMThjYzM4YmQuLjg2MjU4MDhjMWUwNzI5N2JjNWJiNmI1ZDA2YWFh
YTQ3NzgyMDQxMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlTWFjLmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JN
KEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJl
Zml4LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaApp
bmRleCBmMzRlYzM1YzBmNjU0N2IxZjcwZDM3NjQ0ZmQ0Y2EzYTZiYjllYmQzLi5iODRmOTNlMDM4
YzhjZTJmYzdjYjBiZDJlMGIxMGMyYmQxZmEzOTM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNs
dWRlICJhdXRvdG9vbHNjb25maWcuaCIKICNlbmRpZiAvKiBkZWZpbmVkIChCVUlMRElOR19HVEtf
XykgKi8KIAorI2lmIGRlZmluZWQgKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21h
a2Vjb25maWcuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Vm
bC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZjkwNTg2M2E4MDViNzhmMDM2
YjM1NDIxM2EzZGRkZWYwZTM0ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCisjaW5jbHVkZSA8RWNvcmVfRXZh
cy5oPgorCituYW1lc3BhY2UgV1RSIHsKKworc3RhdGljIGludCB1c2VYMTFXaW5kb3cgPSBmYWxz
ZTsKKworc3RhdGljIEVjb3JlX0V2YXMqIGluaXRFY29yZUV2YXMoKQoreworICAgIEVjb3JlX0V2
YXMqIGVjb3JlRXZhcyA9IHVzZVgxMVdpbmRvdyA/IGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIDgw
MCwgNjAwLCAwKSA6IGVjb3JlX2V2YXNfYnVmZmVyX25ldyg4MDAsIDYwMCk7CisgICAgaWYgKCFl
Y29yZUV2YXMpCisgICAgICAgIHJldHVybiAwOworCisgICAgZWNvcmVfZXZhc190aXRsZV9zZXQo
ZWNvcmVFdmFzLCAiRUZMIFdlYktpdFRlc3RSdW5uZXIiKTsKKyAgICBlY29yZV9ldmFzX3Nob3co
ZWNvcmVFdmFzKTsKKworICAgIHJldHVybiBlY29yZUV2YXM7Cit9CisKK1BsYXRmb3JtV2ViVmll
dzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXApCit7CisgICAgbV93aW5kb3cgPSBpbml0RWNvcmVFdmFzKCk7CisgICAgRXZhcyog
ZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93KTsKKyAgICBtX3ZpZXcgPSBzdGF0aWNfY2Fz
dDxFdmFzX09iamVjdCo+KFdLVmlld0NyZWF0ZShldmFzLCBjb250ZXh0LCBwYWdlR3JvdXApKTsK
KyAgICBtX3dpbmRvd0lzS2V5ID0gZmFsc2U7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRm
b3JtV2ViVmlldygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSht
X3ZpZXcsIHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYgUGxhdGZvcm1XZWJWaWV3Ojpw
YWdlKCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0UGFnZSgoV0tWaWV3UmVmKW1fdmlldyk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7Cit9CisKK1dLUmVjdCBQbGF0Zm9y
bVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkKK3sKKyAgICBXS1JlY3QgZnJhbWU7CisgICAgZnJhbWUu
b3JpZ2luLnggPSAwOworICAgIGZyYW1lLm9yaWdpbi55ID0gMDsKKyAgICBmcmFtZS5zaXplLndp
ZHRoID0gMDsKKyAgICBmcmFtZS5zaXplLmhlaWdodCA9IDA7CisgICAgcmV0dXJuIGZyYW1lOwor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQor
eworICAgIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCBmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3Jp
Z2luLnkpOworICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0
KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQorewor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9
CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sK
K30KKworV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFw
c2hvdEltYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4ZWxz
IGluIHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8gY2Fw
dHVyZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgorICAgIHJldHVybiAwOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVFIKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENv
bnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YjU2YmVmODU0OGM2ZTc4M2VlNDgwOTcwY2Iy
ODdiZjM3YmIwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Vm
bC9UZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdUUiB7CisKK3N0YXRpYyBFY29yZV9UaW1lciogdGltZXIgPSAwOworCitzdGF0aWMgRWlu
YV9Cb29sIHRpbWVyRmlyZWQodm9pZCopCit7CisgICAgdGltZXIgPSAwOworICAgIGVjb3JlX21h
aW5fbG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7CisgICAgaWYgKCF0aW1lcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZWNvcmVfdGltZXJfZGVsKHRpbWVyKTsKKyAgICB0aW1lciA9
IDA7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1SdW5VbnRpbChib29sJiwgZG91YmxlIHRpbWVvdXQpCit7CisgICAgdGltZXIgPSBlY29y
ZV90aW1lcl9sb29wX2FkZCh0aW1lb3V0LCB0aW1lckZpcmVkLCAwKTsKKyAgICBlY29yZV9tYWlu
X2xvb3BfYmVnaW4oKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGdldEVudmlyb25tZW50VmFy
aWFibGVPckV4aXQoY29uc3QgY2hhciogdmFyaWFibGVOYW1lKQoreworICAgIGNvbnN0IGNoYXIq
IHZhbHVlID0gZ2V0ZW52KHZhcmlhYmxlTmFtZSk7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZFxuIiwg
dmFyaWFibGVOYW1lKTsKKyAgICAgICAgZXhpdCgwKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVl
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRo
KCkKK3sKKyAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0gZ2V0RW52aXJvbm1lbnRWYXJpYWJs
ZU9yRXhpdCgiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIik7CisgICAgbV9p
bmplY3RlZEJ1bmRsZVBhdGggPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidW5kbGVQ
YXRoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJl
Y3RvcnkoKQoreworICAgIGNvbnN0IGNoYXIqIHBsdWdpblBhdGggPSBnZXRFbnZpcm9ubWVudFZh
cmlhYmxlT3JFeGl0KCJURVNUX1JVTk5FUl9QTFVHSU5fUEFUSCIpOworICAgIG1faW5qZWN0ZWRC
dW5kbGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGx1Z2luUGF0aCk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQorewor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQorewor
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlh
bG9nLgorfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0
aEZvclRlc3RpbmcoKQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MyMWE5MDU5ZDQ1ZmY2
NjYxMjEyMjEyM2FmZWM2ZDI4NmEyNTdiOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZWZsL21haW4uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8
RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2lmZGVmIEhBVkVfRUNPUkVfWAorI2luY2x1ZGUgPEVj
b3JlX1guaD4KKyNlbmRpZgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7Cisg
ICAgZ190eXBlX2luaXQoKTsKKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAg
IHJldHVybiAxOworICAgIGlmICghZWRqZV9pbml0KCkpCisgICAgICAgIHJldHVybiAxOworCisj
aWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisgICAgICAgIHJl
dHVybiAxOworI2VuZGlmCisKKyAgICAvLyBQcmVmZXIgdGhlIG5vdCBpbnN0YWxsZWQgd2ViIGFu
ZCBwbHVnaW4gcHJvY2Vzc2VzLgorICAgIFdUUjo6VGVzdENvbnRyb2xsZXIgY29udHJvbGxlcihh
cmdjLCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4oYXJndikpOworCisjaWZkZWYgSEFWRV9FQ09S
RV9YCisgICAgZWNvcmVfeF9zaHV0ZG93bigpOworI2VuZGlmCisKKyAgICBlZGplX3NodXRkb3du
KCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworCisgICAgcmV0dXJuIDA7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149241</attachid>
            <date>2012-06-24 22:37:42 -0700</date>
            <delta_ts>2012-06-27 15:53:18 -0700</delta_ts>
            <desc>Work in Progress #2</desc>
            <filename>bug-87659-20120625143741.patch</filename>
            <type>text/plain</type>
            <size>26271</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDk2YzEwMjBmNDI1MDk1
MWYyMGM5N2ZhMWM0ZDllZDM0ZTIzYjViMC4uYjk5ZWJjZGM2ZTc5ZTk5ZGIyYWM3NTRmNGUxYWU2
M2E1YTU0Y2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTI0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNi0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgaXNQb3NpdGlvbmVkIHRvIGlzT3V0
T2ZGbG93UG9zaXRpb25lZCBmb3IgY2xhcml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA1ZjZlMDllM2E5NjMyYzBhNjU3OGU5MTU0NzA5OTI0ZjBkNWQwZjY2Li4wODMxODM2MzA3ZTM1
NGE3YjljODM1ZGZlYTg0M2FjZDYyZGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTQsNiArMTQsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9y
bS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91
bml4L0F0dGFjaG1lbnRVbml4LmNwcAogCisgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VD
YWlyby5jcHAKKwogICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3Bw
CiAKICAgICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjNmIyMTFkMTY1M2Ex
YjEzN2ZjZDFhNWIzYWNlMGFiYmQ5YzljZTYuLmU1ODUxNzlmYzc5Y2QxMmZjZmZhOWJiODU3YWI3
MmI2NWJjYTg5MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNi0yNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1drMl1bRUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRU
ZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzY1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBXZWJLaXRUZXN0UnVubmVyIGZvciBFZmwgcG9ydC4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBJbmNsdWRlcyBXZWJLaXRUZXN0UnVubmVyIGJ1
aWxkIHNjcmlwdC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXI6IEFk
ZGVkIGtub3dsZWRnZSBvZiBXZWJLaXRUZXN0UnVubmVyL0VmbC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weTogRGl0dG8uCisgICAgICAgIChFZmxQ
b3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRs
ZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXJQcmVmaXguaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9y
bVdlYlZpZXdFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0Q29udHJvbGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
ZWZsL21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTA2LTI0ICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFkZSBkZWJ1Zy17bWluaWJy
b3dzZXIsc2FmYXJpLHRlc3QtcnVubmVyfSB3b3JrIHdpdGggTExEQi4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggZWE3NTIxODQx
NmY3YWU1MDI5NjFlYWU1NGIwYTdjYTA4OWRiYTQyZS4uMGQ0MzVjYzNmYTA0ZTI1N2E3YjQ5MDJl
YjE2Y2IyODA3MmUyYTNiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIElGICgiJHtQT1JUfSIgU1RSRVFV
QUwgIkVmbCIpCiAKICAgICBJRiAoRU5BQkxFX1dFQktJVDIpCiAgICAgICAgIEFERF9TVUJESVJF
Q1RPUlkoTWluaUJyb3dzZXIvZWZsKQorICAgICAgICBBRERfU1VCRElSRUNUT1JZKFdlYktpdFRl
c3RSdW5uZXIpCiAgICAgRU5ESUYgKCkKIEVMU0VJRiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW5D
RSIpCiAgICAgQUREX1NVQkRJUkVDVE9SWShXaW5DRUxhdW5jaGVyKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyCmluZGV4IGYwM2MxNzk5YTc3ZmVlMzNmODNmOWY4OTU4ZTFhZmFjMDZl
OTU0ZTguLmU1YjIzNTQ1Yjc3ZTZlNzhiNGNlNDE2OWY0Mjg3YTg1YzRiYjVjMjkgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgorKysgYi9Ub29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKQEAgLTYzLDcgKzYzLDcgQEAgaWYgKGlzQXBwbGVN
YWNXZWJLaXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFhDb2RlUHJvamVjdCgiV2ViS2l0VGVz
dFJ1bm5lciIsICRjbGVhbiwgWGNvZGVPcHRpb25zKCksIEBBUkdWKTsKIH0gZWxzaWYgKGlzQXBw
bGVXaW5XZWJLaXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFZpc3VhbFN0dWRpb1Byb2plY3Qo
IldlYktpdFRlc3RSdW5uZXIuc2xuIiwgJGNsZWFuKTsKLX0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0
aygpKSB7Cit9IGVsc2lmIChpc1F0KCkgfHwgaXNHdGsoKSB8fCBpc0VmbCgpKSB7CiAgICAgIyBR
dCBhbmQgR1RLKyBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1aWxk
IGFueXRoaW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weQppbmRleCA4ZWE4YTEyNTUy
ZjM0MzU5ODM3Nzk5NmE0NmUzZGJmNzU0YmRmNTgyLi41OTY0ZGZlNTIxZTQ4YjFjNjU0Mzc0OGQz
N2Y4ZmI3NDc2MzVmMTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2VmbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2VmbC5weQpAQCAtNTIsNiArNTIsMTIgQEAgY2xhc3MgRWZsUG9ydChXZWJLaXRQ
b3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6
CiAgICAgICAgIHNlbGYuX3VubG9hZF9wdWxzZWF1ZGlvX21vZHVsZSgpCiAKKyAgICBkZWYgc2V0
dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgorICAgICAgICBl
bnYgPSBzdXBlcihFZmxQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVy
X25hbWUpCisgICAgICAgIGVudlsnVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1F
J10gPSBzZWxmLl9idWlsZF9wYXRoKCdsaWInLCAnbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxl
LnNvJykKKyAgICAgICAgZW52WydURVNUX1JVTk5FUl9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVp
bGRfcGF0aCgnbGliJykKKyAgICAgICAgcmV0dXJuIGVudgorCiAgICAgZGVmIGNsZWFuX3VwX3Rl
c3RfcnVuKHNlbGYpOgogICAgICAgICBzZWxmLl9yZXN0b3JlX3B1bHNlYXVkaW9fbW9kdWxlKCkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1YmI2ZjVh
ZDQ1MWRmM2ZmMDc3MjU5NTVjNDExZjViMGRjOTlkYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw4MSBAQAorU0VUKFdF
QktJVF9URVNUUlVOTkVSX0RJUiAiJHtUT09MU19ESVJ9L1dlYktpdFRlc3RSdW5uZXIiKQorU0VU
KFdFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUiAiJHtUT09MU19ESVJ9L1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUiKQorCitGSUxFKE1BS0VfRElSRUNUT1JZICR7REVS
SVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUpCisKK1NFVChXZWJLaXRUZXN0UnVubmVy
X1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vQ3ljbGljUmVkdW5kYW5jeUNo
ZWNrLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9QaXhlbER1bXBTdXBwb3J0LmNw
cAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0Q29udHJvbGxlci5jcHAKKyAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdEludm9jYXRpb24uY3BwCispCisKK1NFVChXZWJL
aXRUZXN0UnVubmVyX0xJQlJBUklFUworICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1F
fQorICAgICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJQlJBUllfTkFN
RX0KKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfRElSfQorICAgICR7V1RGX0RJUn0KKyAgICAke1dFQkNPUkVfRElS
fS90ZXN0aW5nL2pzCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxl
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzCisg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0Zvcndh
cmRpbmdIZWFkZXJzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L2luY2x1ZGUK
KyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZQorICAgICR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUKKyAgICAke0NNQUtFX1NPVVJDRV9ESVJ9L1Nv
dXJjZQorICAgICR7Q01BS0VfQklOQVJZX0RJUn0KKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJJ
bmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJV
TkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAKKyAg
ICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExF
X0RJUn0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0lOSkVDVEVEQlVORExFX0RJUn0vRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vR0NDb250cm9sbGVyLmNwcAorICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRsZS5j
cHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0ZWRC
dW5kbGVNYWluLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElS
fS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzL0pTV3JhcHBl
ci5jcHAKKykKKworRklMRShHTE9CIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9JRExf
RklMRVMgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5ncy8q
LmlkbCIpCitGT1JFQUNIIChfZmlsZSAke1dlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9J
RExfRklMRVN9KQorICAgIEdFVF9GSUxFTkFNRV9DT01QT05FTlQgKF9uYW1lICR7X2ZpbGV9IE5B
TUVfV0UpCisgICAgQUREX0NVU1RPTV9DT01NQU5EKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVE
X1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZS9KUyR7X25hbWV9LmNwcAorICAgICAgICBNQUlO
X0RFUEVOREVOQ1kgJHtfZmlsZX0KKyAgICAgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICR7U0NSSVBUU19CSU5ESU5HU30KKyAg
ICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9iaW5kaW5n
cy9zY3JpcHRzIC1JJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRp
bmdzICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwg
LS1kZWZpbmUgXCJcIiAtLWdlbmVyYXRvciBUZXN0UnVubmVyIC0taW5jbHVkZSAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MgLS1vdXRwdXRkaXIgJHtERVJJ
VkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZSAke19maWxlfQorICAgICAgICBWRVJCQVRJ
TSkKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNF
UyAke0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkQnVuZGxlL0pTJHtfbmFtZX0uY3BwKQor
RU5ERk9SRUFDSCAoKQorCitJTkNMVURFX0lGX0VYSVNUUygke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0vUGxhdGZvcm0ke1BPUlR9LmNtYWtlKQorCitJTkNMVURFX0RJUkVDVE9SSUVTKCR7V2ViS2l0
VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKworQUREX0xJQlJBUlkoVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlIFNIQVJFRCAke1dlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9T
T1VSQ0VTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUg
JHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCisKK0FERF9FWEVDVVRBQkxFKFdlYktpdFRl
c3RSdW5uZXIgJHtXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVN9KQorVEFSR0VUX0xJTktfTElCUkFS
SUVTKFdlYktpdFRlc3RSdW5uZXIgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCisKK1NF
VF9UQVJHRVRfUFJPUEVSVElFUyhXZWJLaXRUZXN0UnVubmVyIFBST1BFUlRJRVMgQ09NUElMRV9G
TEFHUworICAgICItaW5jbHVkZSAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViS2l0VGVzdFJ1
bm5lclByZWZpeC5oIgorKQorCitJRiAoV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTKQorICAg
IEFERF9UQVJHRVRfUFJPUEVSVElFUyhXZWJLaXRUZXN0UnVubmVyIExJTktfRkxBR1MgJHtXZWJL
aXRUZXN0UnVubmVyX0xJTktfRkxBR1N9KQorRU5ESUYgKCkKKworQUREX0RFUEVOREVOQ0lFUyhX
ZWJLaXRUZXN0UnVubmVyIGZvcndhcmRpbmctaGVhZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIp
CitBRERfREVQRU5ERU5DSUVTKFdlYktpdFRlc3RSdW5uZXIgZm9yd2FyZGluZy1oZWFkZXJzU291
cEZvcldlYktpdFRlc3RSdW5uZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYzA1MDBm
NzhlODBkZTczZjk0NzhhN2JkMzIyNzA4YjVlNTQyM2YzZi4uMmJmMjFlZmFlZDNhYmYwMjExYmZj
NmZjNjcxNjQxNDQ1NmJjMTg0MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDMsNiAr
NDMsOSBAQCB0eXBlZGVmIFVJTlRfUFRSIFBsYXRmb3JtVGltZXJSZWY7CiB0eXBlZGVmIFFUaW1l
ciBQbGF0Zm9ybVRpbWVyUmVmOwogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgUGxhdGZvcm1UaW1lclJlZjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgc3Ry
dWN0IF9FY29yZV9UaW1lciBFY29yZV9UaW1lcjsKK3R5cGVkZWYgRWNvcmVfVGltZXIqIFBsYXRm
b3JtVGltZXJSZWY7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9u
dHNFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ODVmNzc5OWI3MDQ5YjE0NGMzY2I5N2M1ZWY5OWYzNTM0
OTNhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKKworI2luY2x1ZGUgIkZvbnRNYW5hZ2VtZW50
LmgiCisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIGFjdGl2YXRlRm9udHMoKQoreworICAgIGFk
ZEZvbnRzVG9FbnZpcm9ubWVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVu
ZGxlRWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0lu
amVjdGVkQnVuZGxlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjFkMDQzZjdlZWY5NWYwZTM2ZjE5ODVl
MTExZjdkM2U0MDI5ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKworI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShXS1R5cGVSZWYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0
Q29udHJvbGxlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg0N2IyMDIwMWY4NmIzY2ZiODE5MzA1MTMx
MjZiNzAzZjk5OTAxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMCwwICsx
LDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisKK25hbWVzcGFj
ZSBXVFIgeworCitzdGF0aWMgRWluYV9Cb29sIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyQ2FsbGJh
Y2sodm9pZCopCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250
cm9sbGVyKCktPndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
Cit7CisgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lciA9IDA7Cit9CisKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCit7Cisg
ICAgaWYgKCFtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKQorICAgICAgICByZXR1cm47CisgICAg
ZWNvcmVfdGltZXJfZGVsKG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpOworICAgIG1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCgpCit7CisgICAgaWYgKG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZCh3YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lckludGVydmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckNhbGxiYWNrLCAwKTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2Nh
bFJlc291cmNlKEpTU3RyaW5nUmVmIHVybCkKK3sKKyAgICByZXR1cm4gdXJsOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgp
Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVmbCIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1O
YW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMTgyOWRjMjA4ZmQ3NjMwODU2MmE0ZWZjMjJhZGY0
ZmZmYTRkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsNTYgQEAKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5u
ZXJfTElOS19GTEFHUworICAgICR7RUNPUkVfWF9MREZMQUdTfQorICAgICR7RURKRV9MREZMQUdT
fQorICAgICR7RUZMREVQU19MREZMQUdTfQorICAgICR7RVZBU19MREZMQUdTfQorICAgICR7TElC
U09VUDI0X0xERkxBR1N9CispCisKK0FERF9DVVNUT01fVEFSR0VUKGZvcndhcmRpbmctaGVhZGVy
c0VmbEZvcldlYktpdFRlc3RSdW5uZXIKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAk
e1dFQktJVDJfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAke1dF
QktJVF9URVNUUlVOTkVSX0RJUn0gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1
ZGUgZWZsCispCisKK0FERF9DVVNUT01fVEFSR0VUKGZvcndhcmRpbmctaGVhZGVyc1NvdXBGb3JX
ZWJLaXRUZXN0UnVubmVyCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVQy
X0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIHNvdXAK
KykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCisgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCisKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcAorICAgICR7V0VC
S0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvbWFpbi5jcHAKKykKKworTElTVChBUFBFTkQgV2ViS2l0
VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5k
ZXJUcmVlL2VmbC8KKyAgICAiJHtXVEZfRElSfS93dGYvZ29iamVjdCIKKworICAgICR7Q0FJUk9f
SU5DTFVERV9ESVJTfQorICAgICR7RUNPUkVfWF9JTkNMVURFX0RJUlN9CisgICAgJHtFRkxERVBT
X0lOQ0xVREVfRElSU30KKyAgICAke0VWQVNfSU5DTFVERV9ESVJTfQorICAgICR7R2xpYl9JTkNM
VURFX0RJUlN9CispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisg
ICAgJHtDQUlST19MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9YX0xJQlJBUklFU30KKyAgICAke0VE
SkVfTElCUkFSSUVTfQorICAgICR7RUZMREVQU19MSUJSQVJJRVN9CisgICAgJHtHbGliX0xJQlJB
UklFU30KKykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NP
VVJDRVMKKyAgICAke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUvZWZsL0ZvbnRNYW5hZ2VtZW50
LmNwcAorCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2VmbC9B
Y3RpdmF0ZUZvbnRzRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSfS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9JTkpFQ1RFREJVTkRMRV9ESVJ9L2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKKykK
KworIyBGSVhNRTogRE9XTkxPQURFRF9GT05UU19ESVIgc2hvdWxkIG5vdCBoYXJkY29kZSB0aGUg
ZGlyZWN0b3J5CisjIHN0cnVjdHVyZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODE0NzU+LgorQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7
VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCisgICAgICAgICAgICAgICAgLURE
T1dOTE9BREVEX0ZPTlRTX0RJUj0iJHtDTUFLRV9TT1VSQ0VfRElSfS9XZWJLaXRCdWlsZC9EZXBl
bmRlbmNpZXMvU291cmNlL3dlYmtpdGd0ay10ZXN0LWZvbnRzLTAuMC4zIgorICAgICAgICAgICAg
ICAgIC1EREFUQV9ESVI9IiR7VEhFTUVfQklOQVJZX0RJUn0iKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggMGU4YzZiNWIyNDBjYTBhN2NmNjg3ZTA1MmM2OWVm
ZDQwMWQ5ZTAxYy4uYThjZjBkNjZjODMwMjhiMmQ3MzdkMWRhODA4YWVmMGFjOGI4Njg0NSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC01MSw2ICs1MSwxMSBA
QCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1XaW5kb3c7CiB0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0
IEd0a1dpZGdldDsKIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBH
dGtXaWRnZXQqIFBsYXRmb3JtV2luZG93OworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0V2
YXMgRWNvcmVfRXZhczsKK3R5cGVkZWYgRXZhc19PYmplY3QqIFBsYXRmb3JtV0tWaWV3OwordHlw
ZWRlZiBFY29yZV9FdmFzKiBQbGF0Zm9ybVdpbmRvdzsKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RS
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZmQ2ODg1
NzkzYTY3ZjZjMjI2YTQ2MzNlYTljMmExMGUxOGNjMzhiZC4uODYyNTgwOGMxZTA3Mjk3YmM1YmI2
YjVkMDZhYWFhNDc3ODIwNDExMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVByaXZh
dGVNYWMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXJQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclBy
ZWZpeC5oCmluZGV4IGYzNGVjMzVjMGY2NTQ3YjFmNzBkMzc2NDRmZDRjYTNhNmJiOWViZDMuLmI4
NGY5M2UwMzhjOGNlMmZjN2NiMGJkMmUwYjEwYzJiZDFmYTM5MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCkBAIC0zOCw2ICszOCwxMCBA
QAogI2luY2x1ZGUgImF1dG90b29sc2NvbmZpZy5oIgogI2VuZGlmIC8qIGRlZmluZWQgKEJVSUxE
SU5HX0dUS19fKSAqLwogCisjaWYgZGVmaW5lZCAoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNs
dWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3Njg4ZGE0NjQy
YTZiMzViZGUxYzAwODU5N2M1NzlhYjY2NTBhZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKQEAgLTAsMCArMSwxMDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgaW50IHVzZVgxMVdpbmRv
dyA9IGZhbHNlOworCitzdGF0aWMgRWNvcmVfRXZhcyogaW5pdEVjb3JlRXZhcygpCit7CisgICAg
RWNvcmVfRXZhcyogZWNvcmVFdmFzID0gdXNlWDExV2luZG93ID8gZWNvcmVfZXZhc19uZXcoMCwg
MCwgMCwgODAwLCA2MDAsIDApIDogZWNvcmVfZXZhc19idWZmZXJfbmV3KDgwMCwgNjAwKTsKKyAg
ICBpZiAoIWVjb3JlRXZhcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBlY29yZV9ldmFzX3Rp
dGxlX3NldChlY29yZUV2YXMsICJFRkwgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgIGVjb3JlX2V2
YXNfc2hvdyhlY29yZUV2YXMpOworCisgICAgcmV0dXJuIGVjb3JlRXZhczsKK30KKworUGxhdGZv
cm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3dpbmRvdyA9IGluaXRFY29yZUV2YXMoKTsKKyAg
ICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV93aW5kb3cpOworICAgIG1fdmlldyA9IChF
dmFzX09iamVjdCopKFdLVmlld0NyZWF0ZShldmFzLCBjb250ZXh0LCBwYWdlR3JvdXApKTsKKyAg
ICBtX3dpbmRvd0lzS2V5ID0gZmFsc2U7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3Jt
V2ViVmlldygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3Zp
ZXcsIHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYgUGxhdGZvcm1XZWJWaWV3OjpwYWdl
KCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0UGFnZSgoV0tWaWV3UmVmKW1fdmlldyk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7Cit9CisKK1dLUmVjdCBQbGF0Zm9ybVdl
YlZpZXc6OndpbmRvd0ZyYW1lKCkKK3sKKyAgICBXS1JlY3QgZnJhbWU7CisgICAgZnJhbWUub3Jp
Z2luLnggPSAwOworICAgIGZyYW1lLm9yaWdpbi55ID0gMDsKKyAgICBmcmFtZS5zaXplLndpZHRo
ID0gMDsKKyAgICBmcmFtZS5zaXplLmhlaWdodCA9IDA7CisgICAgcmV0dXJuIGZyYW1lOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lKQorewor
ICAgIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCBmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2lu
LnkpOworICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0KTsK
K30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30K
KworV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hv
dEltYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4ZWxzIGlu
IHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8gY2FwdHVy
ZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgorICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVFIKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVz
dENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRy
b2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YjU2YmVmODU0OGM2ZTc4M2VlNDgwOTcwY2IyODdi
ZjM3YmIwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdUUiB7CisKK3N0YXRpYyBFY29yZV9UaW1lciogdGltZXIgPSAwOworCitzdGF0aWMgRWluYV9C
b29sIHRpbWVyRmlyZWQodm9pZCopCit7CisgICAgdGltZXIgPSAwOworICAgIGVjb3JlX21haW5f
bG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7CisgICAgaWYgKCF0aW1lcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZWNvcmVfdGltZXJfZGVsKHRpbWVyKTsKKyAgICB0aW1lciA9IDA7
CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1SdW5VbnRpbChib29sJiwgZG91YmxlIHRpbWVvdXQpCit7CisgICAgdGltZXIgPSBlY29yZV90
aW1lcl9sb29wX2FkZCh0aW1lb3V0LCB0aW1lckZpcmVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xv
b3BfYmVnaW4oKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGdldEVudmlyb25tZW50VmFyaWFi
bGVPckV4aXQoY29uc3QgY2hhciogdmFyaWFibGVOYW1lKQoreworICAgIGNvbnN0IGNoYXIqIHZh
bHVlID0gZ2V0ZW52KHZhcmlhYmxlTmFtZSk7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVzIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZFxuIiwgdmFy
aWFibGVOYW1lKTsKKyAgICAgICAgZXhpdCgwKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkK
K3sKKyAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRoID0gZ2V0RW52aXJvbm1lbnRWYXJpYWJsZU9y
RXhpdCgiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIik7CisgICAgbV9pbmpl
Y3RlZEJ1bmRsZVBhdGggPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidW5kbGVQYXRo
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3Rv
cnkoKQoreworICAgIGNvbnN0IGNoYXIqIHBsdWdpblBhdGggPSBnZXRFbnZpcm9ubWVudFZhcmlh
YmxlT3JFeGl0KCJURVNUX1JVTk5FUl9QTFVHSU5fUEFUSCIpOworICAgIG1faW5qZWN0ZWRCdW5k
bGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGx1Z2luUGF0aCk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQoreworICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9n
LgorfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZv
clRlc3RpbmcoKQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MyMWE5MDU5ZDQ1ZmY2NjYx
MjEyMjEyM2FmZWM2ZDI4NmEyNTdiOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL21haW4uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNv
cmVfRXZhcy5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPGdsaWIuaD4KKworI2lmZGVmIEhBVkVfRUNPUkVfWAorI2luY2x1ZGUgPEVjb3Jl
X1guaD4KKyNlbmRpZgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
Z190eXBlX2luaXQoKTsKKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAgIHJl
dHVybiAxOworICAgIGlmICghZWRqZV9pbml0KCkpCisgICAgICAgIHJldHVybiAxOworCisjaWZk
ZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisgICAgICAgIHJldHVy
biAxOworI2VuZGlmCisKKyAgICAvLyBQcmVmZXIgdGhlIG5vdCBpbnN0YWxsZWQgd2ViIGFuZCBw
bHVnaW4gcHJvY2Vzc2VzLgorICAgIFdUUjo6VGVzdENvbnRyb2xsZXIgY29udHJvbGxlcihhcmdj
LCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4oYXJndikpOworCisjaWZkZWYgSEFWRV9FQ09SRV9Y
CisgICAgZWNvcmVfeF9zaHV0ZG93bigpOworI2VuZGlmCisKKyAgICBlZGplX3NodXRkb3duKCk7
CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworCisgICAgcmV0dXJuIDA7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149808</attachid>
            <date>2012-06-27 15:53:37 -0700</date>
            <delta_ts>2012-06-27 19:14:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87659-20120628075334.patch</filename>
            <type>text/plain</type>
            <size>26548</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODg1NTZkMTkxMmMyMWI3
YWEzNDFjYmM2NTNlMTNkNWQ4YjUyZGQ0YS4uY2EwNjRlZThiMzEwYmVkMTEyMjkzNTY1OGI5YmIw
ZThkZThiYTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTI3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNi0yNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50
b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjEx
MzUpOiBJdCBtYWRlIHFtbHRlc3RzOjpXZWJWaWV3Q29sb3JDaG9vc2VyOjp0ZXN0X2FjY2VwdCgp
IGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNWY2ZTA5ZTNhOTYzMmMwYTY1Nzhl
OTE1NDcwOTkyNGYwZDVkMGY2Ni4uMDgzMTgzNjMwN2UzNTRhN2I5YzgzNWRmZWE4NDNhY2Q2MmRm
ZDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0LDYgKzE0LDggQEAgTElTVChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAK
IAorICAgIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisKICAgICBTaGFyZWQv
QVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcAogCiAgICAgU2hhcmVkL2NhaXJvL0xh
eWVyVHJlZUNvbnRleHRDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4N2VjNjdhZjBmMWE3M2I3YzE3NjZkYjIxYzQ1ZDE0YTZjMWFh
ZmZjLi5kNzIwMGZmNzQzZGU0YzU0OTRkY2FhN2YwODA1ZGFhZDllNDY3ZDhhIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTItMDYtMjcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXazJdW0VGTF0gRUZMIG5lZWRzIGEgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2NTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24g
b2YgV2ViS2l0VGVzdFJ1bm5lciBmb3IgRWZsIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDogSW5jbHVkZXMgV2ViS2l0VGVzdFJ1bm5lciBidWlsZCBzY3JpcHQuCisgICAgICAgICog
U2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyOiBBZGRlZCBrbm93bGVkZ2Ugb2YgV2ViS2l0
VGVzdFJ1bm5lci9FZmwuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9lZmwucHk6IERpdHRvLgorICAgICAgICAoRWZsUG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9z
ZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVk
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2Vm
bC9BY3RpdmF0ZUZvbnRzRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJv
bGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1F
ZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJW
aWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4Lmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDogQWRkZWQu
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9tYWluLmNwcDogQWRkZWQuCisg
ICAgICAgIChtYWluKToKKwogMjAxMi0wNi0yNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRHVtcFJlbmRlclRyZWUgb24gQW5kcm9pZCBzaG91
bGQgY2FsbCBTa1VzZVRlc3RGb250Q29uZmlnRmlsZSBvbmNlIGF2YWlsYWJsZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBlYTc1
MjE4NDE2ZjdhZTUwMjk2MWVhZTU0YjBhN2NhMDg5ZGJhNDJlLi4wZDQzNWNjM2ZhMDRlMjU3YTdi
NDkwMmViMTZjYjI4MDcyZTJhM2I1IDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtNiw2ICs2LDcgQEAgSUYgKCIke1BPUlR9IiBT
VFJFUVVBTCAiRWZsIikKIAogICAgIElGIChFTkFCTEVfV0VCS0lUMikKICAgICAgICAgQUREX1NV
QkRJUkVDVE9SWShNaW5pQnJvd3Nlci9lZmwpCisgICAgICAgIEFERF9TVUJESVJFQ1RPUlkoV2Vi
S2l0VGVzdFJ1bm5lcikKICAgICBFTkRJRiAoKQogRUxTRUlGICgiJHtQT1JUfSIgU1RSRVFVQUwg
IldpbkNFIikKICAgICBBRERfU1VCRElSRUNUT1JZKFdpbkNFTGF1bmNoZXIpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIgYi9Ub29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdHRlc3RydW5uZXIKaW5kZXggZjAzYzE3OTlhNzdmZWUzM2Y4M2Y5Zjg5NThlMWFm
YWMwNmU5NTRlOC4uZTViMjM1NDViNzdlNmU3OGI0Y2U0MTY5ZjQyODdhODVjNGJiNWMyOSAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCisrKyBiL1Rvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgpAQCAtNjMsNyArNjMsNyBAQCBpZiAoaXNB
cHBsZU1hY1dlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJXZWJL
aXRUZXN0UnVubmVyIiwgJGNsZWFuLCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwogfSBlbHNpZiAo
aXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlvUHJv
amVjdCgiV2ViS2l0VGVzdFJ1bm5lci5zbG4iLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8
IGlzR3RrKCkpIHsKK30gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpIHsKICAg
ICAjIFF0IGFuZCBHVEsrIGJ1aWxkIGV2ZXJ5dGhpbmcgaW4gb25lIHNob3QuIE5vIG5lZWQgdG8g
YnVpbGQgYW55dGhpbmcgaGVyZS4KICAgICAkcmVzdWx0ID0gMDsKIH0gZWxzZSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CmluZGV4IDhlYThh
MTI1NTJmMzQzNTk4Mzc3OTk2YTQ2ZTNkYmY3NTRiZGY1ODIuLjU5NjRkZmU1MjFlNDhiMWM2NTQz
NzQ4ZDM3ZjhmYjc0NzYzNWYxMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CkBAIC01Miw2ICs1MiwxMiBAQCBjbGFzcyBFZmxQb3J0KFdl
YktpdFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgIGRlZiBzZXR1cF90ZXN0X3J1bihz
ZWxmKToKICAgICAgICAgc2VsZi5fdW5sb2FkX3B1bHNlYXVkaW9fbW9kdWxlKCkKIAorICAgIGRl
ZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6CisgICAg
ICAgIGVudiA9IHN1cGVyKEVmbFBvcnQsIHNlbGYpLnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihz
ZXJ2ZXJfbmFtZSkKKyAgICAgICAgZW52WydURVNUX1JVTk5FUl9JTkpFQ1RFRF9CVU5ETEVfRklM
RU5BTUUnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ2xpYicsICdsaWJUZXN0UnVubmVySW5qZWN0ZWRC
dW5kbGUuc28nKQorICAgICAgICBlbnZbJ1RFU1RfUlVOTkVSX1BMVUdJTl9QQVRIJ10gPSBzZWxm
Ll9idWlsZF9wYXRoKCdsaWInKQorICAgICAgICByZXR1cm4gZW52CisKICAgICBkZWYgY2xlYW5f
dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX3Jlc3RvcmVfcHVsc2VhdWRpb19tb2R1
bGUoKQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjNh
OGE1Njg3ZjdhOWQxZjMwMjljMjNkNjZjYzczMjZlNWY2MDYxCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDgyIEBACitT
RVQoV0VCS0lUX1RFU1RSVU5ORVJfRElSICIke1RPT0xTX0RJUn0vV2ViS2l0VGVzdFJ1bm5lciIp
CitTRVQoV0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSICIke1RPT0xTX0RJUn0v
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZSIpCisKK0ZJTEUoTUFLRV9ESVJFQ1RPUlkg
JHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZSkKKworU0VUKFdlYktpdFRlc3RS
dW5uZXJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9DeWNsaWNSZWR1bmRh
bmN5Q2hlY2suY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1BpeGVsRHVtcFN1cHBv
cnQuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RDb250cm9sbGVyLmNwcAor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0SW52b2NhdGlvbi5jcHAKKykKKworU0VU
KFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisgICAgJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZ
X05BTUV9CisgICAgJHtXZWJDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAke1dlYkNvcmVUZXN0U3Vw
cG9ydF9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKykKKworU0VU
KFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfQorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZQor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncworICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfQorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycworICAgICR7V0VCQ09SRV9ESVJ9L3Rlc3RpbmcvanMKKyAgICAke1dURl9ESVJ9
CisgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L2luY2x1ZGUKKyAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZQorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRCdW5kbGUKKyAgICAke0NNQUtFX0JJTkFSWV9ESVJ9CisgICAgJHtDTUFLRV9T
T1VSQ0VfRElSfS9Tb3VyY2UKKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRs
ZV9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAKKyAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vR0NDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRsZS5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0ZWRCdW5kbGVNYWluLmNw
cAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzL0pTV3JhcHBlci5jcHAKKykKKwor
RklMRShHTE9CIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVMgIiR7V0VC
S0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5ncy8qLmlkbCIpCitGT1JF
QUNIIChfZmlsZSAke1dlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9JRExfRklMRVN9KQor
ICAgIEdFVF9GSUxFTkFNRV9DT01QT05FTlQgKF9uYW1lICR7X2ZpbGV9IE5BTUVfV0UpCisgICAg
QUREX0NVU1RPTV9DT01NQU5EKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfRElS
fS9JbmplY3RlZEJ1bmRsZS9KUyR7X25hbWV9LmNwcAorICAgICAgICBNQUlOX0RFUEVOREVOQ1kg
JHtfZmlsZX0KKyAgICAgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLnBsICR7U0NSSVBUU19CSU5ESU5HU30KKyAgICAgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzIC1J
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzICR7V0VCQ09S
RV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZpbmUgXCJc
IiAtLWdlbmVyYXRvciBUZXN0UnVubmVyIC0taW5jbHVkZSAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MgLS1vdXRwdXRkaXIgJHtERVJJVkVEX1NPVVJDRVNf
RElSfS9JbmplY3RlZEJ1bmRsZSAke19maWxlfQorICAgICAgICBWRVJCQVRJTSkKKyAgICBMSVNU
KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUyAke0RFUklWRURf
U09VUkNFU19ESVJ9L0luamVjdGVkQnVuZGxlL0pTJHtfbmFtZX0uY3BwKQorRU5ERk9SRUFDSCAo
KQorCitJTkNMVURFX0lGX0VYSVNUUygke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGxhdGZvcm0k
e1BPUlR9LmNtYWtlKQorCitJTkNMVURFX0RJUkVDVE9SSUVTKCR7V2ViS2l0VGVzdFJ1bm5lcl9J
TkNMVURFX0RJUkVDVE9SSUVTfSkKKworQUREX0xJQlJBUlkoVGVzdFJ1bm5lckluamVjdGVkQnVu
ZGxlIFNIQVJFRCAke1dlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTfSkKK1RB
UkdFVF9MSU5LX0xJQlJBUklFUyhUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUgJHtXZWJLaXRUZXN0
UnVubmVyX0xJQlJBUklFU30pCisKK0FERF9FWEVDVVRBQkxFKFdlYktpdFRlc3RSdW5uZXIgJHtX
ZWJLaXRUZXN0UnVubmVyX1NPVVJDRVN9KQorVEFSR0VUX0xJTktfTElCUkFSSUVTKFdlYktpdFRl
c3RSdW5uZXIgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCisKK1NFVF9UQVJHRVRfUFJP
UEVSVElFUyhXZWJLaXRUZXN0UnVubmVyIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUworICAgICIt
aW5jbHVkZSAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5o
IgorKQorCitJRiAoV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTKQorICAgIEFERF9UQVJHRVRf
UFJPUEVSVElFUyhXZWJLaXRUZXN0UnVubmVyIExJTktfRkxBR1MgJHtXZWJLaXRUZXN0UnVubmVy
X0xJTktfRkxBR1N9KQorRU5ESUYgKCkKKworQUREX0RFUEVOREVOQ0lFUyhXZWJLaXRUZXN0UnVu
bmVyIGZvcndhcmRpbmctaGVhZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIpCitBRERfREVQRU5E
RU5DSUVTKFdlYktpdFRlc3RSdW5uZXIgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRl
c3RSdW5uZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNmFlZGFjYzQzNWMyNzg4OGE1
ZjA5ZmEyODIzYTZlM2VmYTQzZjNiNS4uMzM4NzcwOTg4OWJiYTc5OTIzZjU4NGIxMTZlOWM4NzBi
M2NlNGMxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsOSBAQCB0eXBl
ZGVmIFVJTlRfUFRSIFBsYXRmb3JtVGltZXJSZWY7CiB0eXBlZGVmIFFUaW1lciBQbGF0Zm9ybVRp
bWVyUmVmOwogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUGxhdGZv
cm1UaW1lclJlZjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9U
aW1lciBFY29yZV9UaW1lcjsKK3R5cGVkZWYgRWNvcmVfVGltZXIqIFBsYXRmb3JtVGltZXJSZWY7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc3ODVmNzc5OWI3MDQ5YjE0NGMzY2I5N2M1ZWY5OWYzNTM0OTNhMmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9B
Y3RpdmF0ZUZvbnRzRWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjdGl2YXRlRm9udHMuaCIKKworI2luY2x1ZGUgIkZvbnRNYW5hZ2VtZW50LmgiCisKK25hbWVz
cGFjZSBXVFIgeworCit2b2lkIGFjdGl2YXRlRm9udHMoKQoreworICAgIGFkZEZvbnRzVG9FbnZp
cm9ubWVudCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxl
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjFkMDQzZjdlZWY5NWYwZTM2ZjE5ODVlMTExZjdkM2U0MDI5
ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShXS1R5cGVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVm
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjFiNmY4NDRhMjY3NTBmZTA1ZGIzNDliZmUwOTdjODQ4ZmQ5MDJl
MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitz
dGF0aWMgRWluYV9Cb29sIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyQ2FsbGJhY2sodm9pZCopCit7
CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPndh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgbV93
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lciA9IDA7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCit7CisgICAgaWYgKCFtX3dh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBlY29yZV90aW1l
cl9kZWwobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcik7CisgICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lciA9IDA7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV93YWl0VG9EdW1w
V2F0Y2hkb2dUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50
ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyQ2FsbGJhY2ssIDApOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2Uo
SlNTdHJpbmdSZWYgdXJsKQoreworICAgIHJldHVybiB1cmw7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiZWZsIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmExODI5ZGMyMDhmZDc2MzA4NTYyYTRlZmMyMmFkZjRmZmZhNGQzYgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTAsMCArMSw1NiBAQAorTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZM
QUdTCisgICAgJHtFQ09SRV9YX0xERkxBR1N9CisgICAgJHtFREpFX0xERkxBR1N9CisgICAgJHtF
RkxERVBTX0xERkxBR1N9CisgICAgJHtFVkFTX0xERkxBR1N9CisgICAgJHtMSUJTT1VQMjRfTERG
TEFHU30KKykKKworQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzRWZsRm9yV2Vi
S2l0VGVzdFJ1bm5lcgorICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUMl9E
SVJ9L1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfSAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZSBlZmwKKykK
KworQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RS
dW5uZXIKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVDJfRElSfS9TY3Jp
cHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgc291cAorKQorCitMSVNU
KEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0RJUn0vY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKKworICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJV
Tk5FUl9ESVJ9L2VmbC9tYWluLmNwcAorKQorCitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVy
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUvZWZs
LworICAgICIke1dURl9ESVJ9L3d0Zi9nb2JqZWN0IgorCisgICAgJHtDQUlST19JTkNMVURFX0RJ
UlN9CisgICAgJHtFQ09SRV9YX0lOQ0xVREVfRElSU30KKyAgICAke0VGTERFUFNfSU5DTFVERV9E
SVJTfQorICAgICR7RVZBU19JTkNMVURFX0RJUlN9CisgICAgJHtHbGliX0lOQ0xVREVfRElSU30K
KykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVMKKyAgICAke0NBSVJP
X0xJQlJBUklFU30KKyAgICAke0VDT1JFX1hfTElCUkFSSUVTfQorICAgICR7RURKRV9MSUJSQVJJ
RVN9CisgICAgJHtFRkxERVBTX0xJQlJBUklFU30KKyAgICAke0dsaWJfTElCUkFSSUVTfQorKQor
CitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAg
ICR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9lZmwvRm9udE1hbmFnZW1lbnQuY3BwCisKKyAg
ICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vZWZsL0FjdGl2YXRlRm9u
dHNFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2Vm
bC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVE
QlVORExFX0RJUn0vZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKQorCisjIEZJWE1F
OiBET1dOTE9BREVEX0ZPTlRTX0RJUiBzaG91bGQgbm90IGhhcmRjb2RlIHRoZSBkaXJlY3RvcnkK
KyMgc3RydWN0dXJlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTQ3NT4uCitBRERfREVGSU5JVElPTlMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9
L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKKyAgICAgICAgICAgICAgICAtRERPV05MT0FERURf
Rk9OVFNfRElSPSIke0NNQUtFX1NPVVJDRV9ESVJ9L1dlYktpdEJ1aWxkL0RlcGVuZGVuY2llcy9T
b3VyY2Uvd2Via2l0Z3RrLXRlc3QtZm9udHMtMC4wLjMiCisgICAgICAgICAgICAgICAgLUREQVRB
X0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9y
bVdlYlZpZXcuaAppbmRleCAwZThjNmI1YjI0MGNhMGE3Y2Y2ODdlMDUyYzY5ZWZkNDAxZDllMDFj
Li5hOGNmMGQ2NmM4MzAyOGIyZDczN2QxZGE4MDhhZWYwYWM4Yjg2ODQ1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTUxLDYgKzUxLDExIEBAIHR5cGVkZWYg
SFdORCBQbGF0Zm9ybVdpbmRvdzsKIHR5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0
OwogdHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIEd0a1dpZGdldCog
UGxhdGZvcm1XaW5kb3c7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVmIHN0cnVjdCBfRXZh
c19PYmplY3QgRXZhc19PYmplY3Q7Cit0eXBlZGVmIHN0cnVjdCBfRWNvcmVfRXZhcyBFY29yZV9F
dmFzOwordHlwZWRlZiBFdmFzX09iamVjdCogUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIEVjb3Jl
X0V2YXMqIFBsYXRmb3JtV2luZG93OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBmZDY4ODU3OTNhNjdmNmMy
MjZhNDYzM2VhOWMyYTEwZTE4Y2MzOGJkLi44NjI1ODA4YzFlMDcyOTdiYzViYjZiNWQwNmFhYWE0
Nzc4MjA0MTEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZU1hYy5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShH
VEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKaW5k
ZXggZjM0ZWMzNWMwZjY1NDdiMWY3MGQzNzY0NGZkNGNhM2E2YmI5ZWJkMy4uYjg0ZjkzZTAzOGM4
Y2UyZmM3Y2IwYmQyZTBiMTBjMmJkMWZhMzkzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVk
ZSAiYXV0b3Rvb2xzY29uZmlnLmgiCiAjZW5kaWYgLyogZGVmaW5lZCAoQlVJTERJTkdfR1RLX18p
ICovCiAKKyNpZiBkZWZpbmVkIChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtl
Y29uZmlnLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV2ViS2l0Mi5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
UGxhdGZvcm1XZWJWaWV3RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWQ4NTI0ODM4ZmFhM2FkODM3YzFi
YjY2NmMwZGMzZWRkYWRmYTEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKworI2luY2x1ZGUgPEVjb3JlX0V2YXMu
aD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBpbnQgdXNlWDExV2luZG93ID0gZmFsc2U7
CisKK3N0YXRpYyBFY29yZV9FdmFzKiBpbml0RWNvcmVFdmFzKCkKK3sKKyAgICBFY29yZV9FdmFz
KiBlY29yZUV2YXMgPSB1c2VYMTFXaW5kb3cgPyBlY29yZV9ldmFzX25ldygwLCAwLCAwLCA4MDAs
IDYwMCwgMCkgOiBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoODAwLCA2MDApOworICAgIGlmICghZWNv
cmVFdmFzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGVjb3JlX2V2YXNfdGl0bGVfc2V0KGVj
b3JlRXZhcywgIkVGTCBXZWJLaXRUZXN0UnVubmVyIik7CisgICAgZWNvcmVfZXZhc19zaG93KGVj
b3JlRXZhcyk7CisKKyAgICByZXR1cm4gZWNvcmVFdmFzOworfQorCitQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwKQoreworICAgIG1fd2luZG93ID0gaW5pdEVjb3JlRXZhcygpOworICAgIEV2YXMqIGV2
YXMgPSBlY29yZV9ldmFzX2dldChtX3dpbmRvdyk7CisgICAgbV92aWV3ID0gKEV2YXNfT2JqZWN0
KikoV0tWaWV3Q3JlYXRlKGV2YXMsIGNvbnRleHQsIHBhZ2VHcm91cCkpOworICAgIG1fd2luZG93
SXNLZXkgPSBmYWxzZTsKK30KKworUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkK
K3sKKyAgICBldmFzX29iamVjdF9kZWwobV92aWV3KTsKKyAgICBlY29yZV9ldmFzX2ZyZWUobV93
aW5kb3cpOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBldmFzX29iamVjdF9yZXNpemUobV92aWV3LCB3
aWR0aCwgaGVpZ2h0KTsKK30KKworV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpCit7
CisgICAgcmV0dXJuIFdLVmlld0dldFBhZ2UoKFdLVmlld1JlZiltX3ZpZXcpOworfQorCit2b2lk
IFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQoreworfQorCitXS1JlY3QgUGxhdGZvcm1XZWJWaWV3
Ojp3aW5kb3dGcmFtZSgpCit7CisgICAgV0tSZWN0IGZyYW1lOworICAgIGZyYW1lLm9yaWdpbi54
ID0gMDsKKyAgICBmcmFtZS5vcmlnaW4ueSA9IDA7CisgICAgZnJhbWUuc2l6ZS53aWR0aCA9IDA7
CisgICAgZnJhbWUuc2l6ZS5oZWlnaHQgPSAwOworICAgIHJldHVybiBmcmFtZTsKK30KKwordm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSkKK3sKKyAgICBl
dmFzX29iamVjdF9tb3ZlKG1fdmlldywgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9yaWdpbi55KTsK
KyAgICByZXNpemVUbyhmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lk
IFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKK1dL
UmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFn
ZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUg
VUkgcHJvY2VzcywKKyAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhp
bmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250
cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVy
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MTZiODgwMWFmYTZlOTk1MTM3ZjAwMzg1ZGQzZWM2YTM5MTkx
OTg0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENv
bnRyb2xsZXJFZmwuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVz
dENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVFIg
eworCitzdGF0aWMgRWNvcmVfVGltZXIqIHRpbWVyID0gMDsKKworc3RhdGljIEVpbmFfQm9vbCB0
aW1lckZpcmVkKHZvaWQqKQoreworICAgIHRpbWVyID0gMDsKKyAgICBlY29yZV9tYWluX2xvb3Bf
cXVpdCgpOworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQoreworICAgIGlmICghdGltZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGVjb3JlX3RpbWVyX2RlbCh0aW1lcik7CisgICAgdGltZXIgPSAwOworICAg
IGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVu
VW50aWwoYm9vbCYsIGRvdWJsZSB0aW1lb3V0KQoreworICAgIHRpbWVyID0gZWNvcmVfdGltZXJf
bG9vcF9hZGQodGltZW91dCwgdGltZXJGaXJlZCwgMCk7CisgICAgZWNvcmVfbWFpbl9sb29wX2Jl
Z2luKCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBnZXRFbnZpcm9ubWVudFZhcmlhYmxlT3JF
eGl0KGNvbnN0IGNoYXIqIHZhcmlhYmxlTmFtZSkKK3sKKyAgICBjb25zdCBjaGFyKiB2YWx1ZSA9
IGdldGVudih2YXJpYWJsZU5hbWUpOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICIlcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3QgZm91bmRcbiIsIHZhcmlhYmxl
TmFtZSk7CisgICAgICAgIGV4aXQoMCk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7Cisg
ICAgY29uc3QgY2hhciogYnVuZGxlUGF0aCA9IGdldEVudmlyb25tZW50VmFyaWFibGVPckV4aXQo
IlRFU1RfUlVOTkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSIpOworICAgIG1faW5qZWN0ZWRC
dW5kbGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVuZGxlUGF0aCk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KCkK
K3sKKyAgICBjb25zdCBjaGFyKiBwbHVnaW5QYXRoID0gZ2V0RW52aXJvbm1lbnRWYXJpYWJsZU9y
RXhpdCgiVEVTVF9SVU5ORVJfUExVR0lOX1BBVEgiKTsKKyAgICBtX3Rlc3RQbHVnaW5EaXJlY3Rv
cnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwbHVnaW5QYXRoKTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFBsYXRmb3JtV2ViVmlldyopCit7CisgICAgLy8g
RklYTUU6IE5lZWQgdG8gaW1wbGVtZW50IHRoaXMgdG8gdGVzdCBzaG93TW9kYWxEaWFsb2cuCit9
CisKK2NvbnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVz
dGluZygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2VmbC9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmUwYWYyODZkYTQ5ODdkMTMzMjc2
Y2ZjOGJlN2U0ODlmZjVkMzdiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9lZmwvbWFpbi5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9F
dmFzLmg+CisjaW5jbHVkZSA8RWRqZS5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5j
bHVkZSA8Z2xpYi5oPgorCisjaWZkZWYgSEFWRV9FQ09SRV9YCisjaW5jbHVkZSA8RWNvcmVfWC5o
PgorI2VuZGlmCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX3R5
cGVfaW5pdCgpOworCisgICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKKyAgICAgICAgcmV0dXJu
IDE7CisKKyAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisjaWZkZWYgSEFWRV9FQ09SRV9YCisg
ICAgaWYgKCFlY29yZV94X2luaXQoMCkpIHsKKyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigp
OworICAgICAgICBlZGplX3NodXRkb3duKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNl
bmRpZgorCisgICAgLy8gUHJlZmVyIHRoZSBub3QgaW5zdGFsbGVkIHdlYiBhbmQgcGx1Z2luIHBy
b2Nlc3Nlcy4KKyAgICBXVFI6OlRlc3RDb250cm9sbGVyIGNvbnRyb2xsZXIoYXJnYywgY29uc3Rf
Y2FzdDxjb25zdCBjaGFyKio+KGFyZ3YpKTsKKworI2lmZGVmIEhBVkVfRUNPUkVfWAorICAgIGVj
b3JlX3hfc2h1dGRvd24oKTsKKyNlbmRpZgorCisgICAgZWRqZV9zaHV0ZG93bigpOworICAgIGVj
b3JlX2V2YXNfc2h1dGRvd24oKTsKKworICAgIHJldHVybiAwOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149853</attachid>
            <date>2012-06-27 19:14:49 -0700</date>
            <delta_ts>2012-07-04 07:06:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87659-20120628111447.patch</filename>
            <type>text/plain</type>
            <size>27093</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODg1NTZkMTkxMmMyMWI3
YWEzNDFjYmM2NTNlMTNkNWQ4YjUyZGQ0YS4uY2EwNjRlZThiMzEwYmVkMTEyMjkzNTY1OGI5YmIw
ZThkZThiYTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTI3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNi0yNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50
b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjEx
MzUpOiBJdCBtYWRlIHFtbHRlc3RzOjpXZWJWaWV3Q29sb3JDaG9vc2VyOjp0ZXN0X2FjY2VwdCgp
IGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNWY2ZTA5ZTNhOTYzMmMwYTY1Nzhl
OTE1NDcwOTkyNGYwZDVkMGY2Ni4uMDgzMTgzNjMwN2UzNTRhN2I5YzgzNWRmZWE4NDNhY2Q2MmRm
ZDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0LDYgKzE0LDggQEAgTElTVChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAK
IAorICAgIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisKICAgICBTaGFyZWQv
QVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcAogCiAgICAgU2hhcmVkL2NhaXJvL0xh
eWVyVHJlZUNvbnRleHRDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4N2VjNjdhZjBmMWE3M2I3YzE3NjZkYjIxYzQ1ZDE0YTZjMWFh
ZmZjLi4wNzU3YjdlNjhkMzM5OTljZTI1N2RkMGEzYjg0MDAzZDhhYjAzODU5IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTItMDYtMjcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXazJdW0VGTF0gRUZMIG5lZWRzIGEgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2NTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24g
b2YgV2ViS2l0VGVzdFJ1bm5lciBmb3IgRWZsIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDogSW5jbHVkZXMgV2ViS2l0VGVzdFJ1bm5lciBidWlsZCBzY3JpcHQuCisgICAgICAgICog
U2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyOiBBZGRlZCBrbm93bGVkZ2Ugb2YgV2ViS2l0
VGVzdFJ1bm5lci9FZmwuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9lZmwucHk6IERpdHRvLgorICAgICAgICAoRWZsUG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9z
ZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVk
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2Vm
bC9BY3RpdmF0ZUZvbnRzRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJv
bGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1F
ZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJW
aWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4Lmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaDogQWRkZWQga25vd2xlZGdlIG9mIFdlYktp
dFRlc3RSdW5uZXIvRWZsLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3Jt
V2ViVmlld0VmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rl
c3RDb250cm9sbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAobWFpbik6CisKIDIwMTItMDYtMjcgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIER1bXBSZW5k
ZXJUcmVlIG9uIEFuZHJvaWQgc2hvdWxkIGNhbGwgU2tVc2VUZXN0Rm9udENvbmZpZ0ZpbGUgb25j
ZSBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01h
a2VMaXN0cy50eHQKaW5kZXggZWE3NTIxODQxNmY3YWU1MDI5NjFlYWU1NGIwYTdjYTA4OWRiYTQy
ZS4uZTlmYzdlM2JkZDE4Mzg5ZGQzMTk1MWExN2U2NjBjNjdiYzQ2ZTZmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKQEAgLTEsMyAr
MSw3IEBACitJRiAoRU5BQkxFX1dFQktJVDIpCisgICAgQUREX1NVQkRJUkVDVE9SWShXZWJLaXRU
ZXN0UnVubmVyKQorRU5ESUYgKCkKKwogSUYgKCIke1BPUlR9IiBTVFJFUVVBTCAiRWZsIikKICAg
ICBJRiAoRU5BQkxFX1dFQktJVCkKICAgICAgICAgQUREX1NVQkRJUkVDVE9SWShEdW1wUmVuZGVy
VHJlZS9lZmwpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5u
ZXIgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKaW5kZXggZjAzYzE3OTlh
NzdmZWUzM2Y4M2Y5Zjg5NThlMWFmYWMwNmU5NTRlOC4uZTViMjM1NDViNzdlNmU3OGI0Y2U0MTY5
ZjQyODdhODVjNGJiNWMyOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0
ZXN0cnVubmVyCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgpAQCAt
NjMsNyArNjMsNyBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1
aWxkWENvZGVQcm9qZWN0KCJXZWJLaXRUZXN0UnVubmVyIiwgJGNsZWFuLCBYY29kZU9wdGlvbnMo
KSwgQEFSR1YpOwogfSBlbHNpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9
IGJ1aWxkVmlzdWFsU3R1ZGlvUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5lci5zbG4iLCAkY2xlYW4p
OwotfSBlbHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkpIHsKK30gZWxzaWYgKGlzUXQoKSB8fCBpc0d0
aygpIHx8IGlzRWZsKCkpIHsKICAgICAjIFF0IGFuZCBHVEsrIGJ1aWxkIGV2ZXJ5dGhpbmcgaW4g
b25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KICAgICAkcmVzdWx0ID0g
MDsKIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2VmbC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZWZsLnB5CmluZGV4IDhlYThhMTI1NTJmMzQzNTk4Mzc3OTk2YTQ2ZTNkYmY3NTRiZGY1ODIu
LjU5NjRkZmU1MjFlNDhiMWM2NTQzNzQ4ZDM3ZjhmYjc0NzYzNWYxMzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CkBAIC01Miw2ICs1Miwx
MiBAQCBjbGFzcyBFZmxQb3J0KFdlYktpdFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAg
IGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc2VsZi5fdW5sb2FkX3B1bHNlYXVk
aW9fbW9kdWxlKCkKIAorICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2Vy
dmVyX25hbWU9Tm9uZSk6CisgICAgICAgIGVudiA9IHN1cGVyKEVmbFBvcnQsIHNlbGYpLnNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKKyAgICAgICAgZW52WydURVNUX1JVTk5F
Ul9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ2xpYicsICds
aWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuc28nKQorICAgICAgICBlbnZbJ1RFU1RfUlVOTkVS
X1BMVUdJTl9QQVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdsaWInKQorICAgICAgICByZXR1cm4g
ZW52CisKICAgICBkZWYgY2xlYW5fdXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX3Jl
c3RvcmVfcHVsc2VhdWRpb19tb2R1bGUoKQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3Rz
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjk1MTM4YmM1MzIzN2Q5ZDM5ZTE3ZDc0NTc5NzIxYmM4N2Q3ZWI2
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4
dApAQCAtMCwwICsxLDg5IEBACitTRVQoV0VCS0lUX1RFU1RSVU5ORVJfRElSICIke1RPT0xTX0RJ
Un0vV2ViS2l0VGVzdFJ1bm5lciIpCitTRVQoV0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSICIke1RPT0xTX0RJUn0vV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZSIpCisK
K0ZJTEUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRs
ZSkKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfRElSfS9DeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9ESVJ9L1BpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9
L1Rlc3RDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0SW52
b2NhdGlvbi5jcHAKKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisgICAgJHtK
YXZhU2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJDb3JlX0xJQlJBUllfTkFNRX0K
KyAgICAke1dlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJ
QlJBUllfTkFNRX0KKykKKworU0VUKFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklF
UworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfQorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfS9JbmplY3RlZEJ1bmRsZQorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncworICAgICR7SkFWQVNDUklQVENPUkVfRElSfQorICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycworICAgICR7V0VCQ09SRV9ESVJ9L2VkaXRp
bmcKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybQorICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzCisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yaworICAgICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQKKyAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pz
CisgICAgJHtXRUJLSVQyX0RJUn0vU2hhcmVkCisgICAgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0FQ
SS9jCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9DL2VmbAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
CisgICAgJHtXVEZfRElSfQorICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9pbmNs
dWRlCisgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUKKyAgICAke0RF
UklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkQnVuZGxlCisgICAgJHtDTUFLRV9CSU5BUllfRElS
fQorICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCisgICAgJHtMSUJTT1VQMjRfSU5DTFVE
RV9ESVJTfQorKQorCitTRVQoV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9E
SVJ9L0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
SU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmNwcAorICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS9HQ0NvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9J
TkpFQ1RFREJVTkRMRV9ESVJ9L0luamVjdGVkQnVuZGxlLmNwcAorICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0luamVjdGVkQnVuZGxlUGFnZS5j
cHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9E
SVJ9L1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MvSlNXcmFwcGVyLmNwcAorKQorCitGSUxFKEdMT0Ig
V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX0lETF9GSUxFUyAiJHtXRUJLSVRfVEVTVFJV
Tk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzLyouaWRsIikKK0ZPUkVBQ0ggKF9maWxl
ICR7V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX0lETF9GSUxFU30pCisgICAgR0VUX0ZJ
TEVOQU1FX0NPTVBPTkVOVCAoX25hbWUgJHtfZmlsZX0gTkFNRV9XRSkKKyAgICBBRERfQ1VTVE9N
X0NPTU1BTkQoCisgICAgICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
QnVuZGxlL0pTJHtfbmFtZX0uY3BwCisgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19maWxlfQor
ICAgICAgICBERVBFTkRTICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwgJHtTQ1JJUFRTX0JJTkRJTkdTfQorICAgICAgICBDT01NQU5EICR7UEVSTF9F
WEVDVVRBQkxFfSAtSSR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgLUkke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MgJHtXRUJDT1JFX0RJUn0vYmlu
ZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWRlZmluZSBcIlwiIC0tZ2VuZXJh
dG9yIFRlc3RSdW5uZXIgLS1pbmNsdWRlICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSfS9CaW5kaW5ncyAtLW91dHB1dGRpciAke0RFUklWRURfU09VUkNFU19ESVJ9L0luamVj
dGVkQnVuZGxlICR7X2ZpbGV9CisgICAgICAgIFZFUkJBVElNKQorICAgIExJU1QoQVBQRU5EIFdl
YktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRCdW5kbGUvSlMke19uYW1lfS5jcHApCitFTkRGT1JFQUNIICgpCisKK0lOQ0xV
REVfSUZfRVhJU1RTKCR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9QbGF0Zm9ybSR7UE9SVH0uY21h
a2UpCisKK0lOQ0xVREVfRElSRUNUT1JJRVMoJHtXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElS
RUNUT1JJRVN9KQorCitBRERfTElCUkFSWShUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUgU0hBUkVE
ICR7V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVN9KQorVEFSR0VUX0xJTktf
TElCUkFSSUVTKFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSAke1dlYktpdFRlc3RSdW5uZXJfTElC
UkFSSUVTfSkKKworQUREX0VYRUNVVEFCTEUoV2ViS2l0VGVzdFJ1bm5lciAke1dlYktpdFRlc3RS
dW5uZXJfU09VUkNFU30pCitUQVJHRVRfTElOS19MSUJSQVJJRVMoV2ViS2l0VGVzdFJ1bm5lciAk
e1dlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTfSkKKworSUYgKFdlYktpdFRlc3RSdW5uZXJfTElO
S19GTEFHUykKKyAgICBBRERfVEFSR0VUX1BST1BFUlRJRVMoV2ViS2l0VGVzdFJ1bm5lciBMSU5L
X0ZMQUdTICR7V2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTfSkKK0VORElGICgpCisKK0FERF9E
RVBFTkRFTkNJRVMoJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0gJHtGb3J3YXJkaW5nSGVhZGVyc0Zv
cldlYktpdFRlc3RSdW5uZXJfTkFNRX0pCitBRERfREVQRU5ERU5DSUVTKCR7V2ViS2l0Ml9MSUJS
QVJZX05BTUV9ICR7Rm9yd2FyZGluZ05ldHdvcmtIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9O
QU1FfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA2YWVkYWNjNDM1YzI3ODg4YTVmMDlm
YTI4MjNhNmUzZWZhNDNmM2I1Li4zMzg3NzA5ODg5YmJhNzk5MjNmNTg0YjExNmU5Yzg3MGIzY2U0
YzE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw5IEBAIHR5cGVkZWYg
VUlOVF9QVFIgUGxhdGZvcm1UaW1lclJlZjsKIHR5cGVkZWYgUVRpbWVyIFBsYXRmb3JtVGltZXJS
ZWY7CiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHVuc2lnbmVkIGludCBQbGF0Zm9ybVRp
bWVyUmVmOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX1RpbWVy
IEVjb3JlX1RpbWVyOwordHlwZWRlZiBFY29yZV9UaW1lciogUGxhdGZvcm1UaW1lclJlZjsKICNl
bmRpZgogCiBuYW1lc3BhY2UgV1RSIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2YXRlRm9udHNFZmwuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0VmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzc4NWY3Nzk5YjcwNDliMTQ0YzNjYjk3YzVlZjk5ZjM1MzQ5M2EyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0FjdGl2
YXRlRm9udHNFZmwuY3BwCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWN0
aXZhdGVGb250cy5oIgorCisjaW5jbHVkZSAiRm9udE1hbmFnZW1lbnQuaCIKKworbmFtZXNwYWNl
IFdUUiB7CisKK3ZvaWQgYWN0aXZhdGVGb250cygpCit7CisgICAgYWRkRm9udHNUb0Vudmlyb25t
ZW50KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk2MWQwNDNmN2VlZjk1ZjBlMzZmMTk4NWUxMTFmN2QzZTQwMjlmMTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cGxhdGZv
cm1Jbml0aWFsaXplKFdLVHlwZVJlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMWI2Zjg0NGEyNjc1MGZlMDVkYjM0OWJmZTA5N2M4NDhmZDkwMmUxCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9l
ZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRp
YyBFaW5hX0Jvb2wgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJDYWxsYmFjayh2b2lkKikKK3sKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+d2FpdFRv
RHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBtX3dhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyID0gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBpZiAoIW1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGVjb3JlX3RpbWVyX2Rl
bChtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKTsKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyID0gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVdhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKQoreworICAgIGlmIChtX3dhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQod2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZh
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJDYWxsYmFjaywgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0
cmluZ1JlZiB1cmwpCit7CisgICAgcmV0dXJuIHVybDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJlZmwiKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NDk2NGNjOGFlODdjZjIyMTM1YmI0NDdiZTA4OGRjNmVmM2UwYTJjCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMCwwICsxLDU4IEBACitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJTktfRkxBR1MK
KyAgICAke0VDT1JFX1hfTERGTEFHU30KKyAgICAke0VESkVfTERGTEFHU30KKyAgICAke0VGTERF
UFNfTERGTEFHU30KKyAgICAke0VWQVNfTERGTEFHU30KKyAgICAke0xJQlNPVVAyNF9MREZMQUdT
fQorKQorCitBRERfQ1VTVE9NX1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNFZmxGb3JXZWJLaXRU
ZXN0UnVubmVyCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVQyX0RJUn0v
U2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9ESVJ9ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIGVmbAorKQorU0VU
KEZvcndhcmRpbmdIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FIGZvcndhcmRpbmctaGVh
ZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIpCisKK0FERF9DVVNUT01fVEFSR0VUKGZvcndhcmRp
bmctaGVhZGVyc1NvdXBGb3JXZWJLaXRUZXN0UnVubmVyCisgICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtXRUJLSVQyX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRl
cnMucGwgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJf
RElSfS9pbmNsdWRlIHNvdXAKKykKK1NFVChGb3J3YXJkaW5nTmV0d29ya0hlYWRlcnNGb3JXZWJL
aXRUZXN0UnVubmVyX05BTUUgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RSdW5u
ZXIpCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUworICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfRElSfS9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL21haW4uY3BwCispCisKK0xJU1QoQVBQRU5EIFdlYktp
dFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7VE9PTFNfRElSfS9EdW1wUmVu
ZGVyVHJlZS9lZmwvCisgICAgIiR7V1RGX0RJUn0vd3RmL2dvYmplY3QiCisKKyAgICAke0NBSVJP
X0lOQ0xVREVfRElSU30KKyAgICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQorICAgICR7RUZMREVQ
U19JTkNMVURFX0RJUlN9CisgICAgJHtFVkFTX0lOQ0xVREVfRElSU30KKyAgICAke0dsaWJfSU5D
TFVERV9ESVJTfQorKQorCitMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFUwor
ICAgICR7Q0FJUk9fTElCUkFSSUVTfQorICAgICR7RUNPUkVfWF9MSUJSQVJJRVN9CisgICAgJHtF
REpFX0xJQlJBUklFU30KKyAgICAke0VGTERFUFNfTElCUkFSSUVTfQorICAgICR7R2xpYl9MSUJS
QVJJRVN9CispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9T
T1VSQ0VTCisgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2VmbC9Gb250TWFuYWdlbWVu
dC5jcHAKKworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwv
QWN0aXZhdGVGb250c0VmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisp
CisKKyMgRklYTUU6IERPV05MT0FERURfRk9OVFNfRElSIHNob3VsZCBub3QgaGFyZGNvZGUgdGhl
IGRpcmVjdG9yeQorIyBzdHJ1Y3R1cmUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxNDc1Pi4KK0FERF9ERUZJTklUSU9OUygtREZPTlRTX0NPTkZfRElSPSIk
e1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUvZ3RrL2ZvbnRzIgorICAgICAgICAgICAgICAgIC1E
RE9XTkxPQURFRF9GT05UU19ESVI9IiR7Q01BS0VfU09VUkNFX0RJUn0vV2ViS2l0QnVpbGQvRGVw
ZW5kZW5jaWVzL1NvdXJjZS93ZWJraXRndGstdGVzdC1mb250cy0wLjAuMyIKKyAgICAgICAgICAg
ICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IDBlOGM2YjViMjQwY2EwYTdjZjY4N2UwNTJjNjll
ZmQ0MDFkOWUwMWMuLmE4Y2YwZDY2YzgzMDI4YjJkNzM3ZDFkYTgwOGFlZjBhYzhiODY4NDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNTEsNiArNTEsMTEg
QEAgdHlwZWRlZiBIV05EIFBsYXRmb3JtV2luZG93OwogdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdl
dCBHdGtXaWRnZXQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYg
R3RrV2lkZ2V0KiBQbGF0Zm9ybVdpbmRvdzsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYg
c3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKK3R5cGVkZWYgc3RydWN0IF9FY29yZV9F
dmFzIEVjb3JlX0V2YXM7Cit0eXBlZGVmIEV2YXNfT2JqZWN0KiBQbGF0Zm9ybVdLVmlldzsKK3R5
cGVkZWYgRWNvcmVfRXZhcyogUGxhdGZvcm1XaW5kb3c7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdU
UiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGZkNjg4
NTc5M2E2N2Y2YzIyNmE0NjMzZWE5YzJhMTBlMThjYzM4YmQuLjg2MjU4MDhjMWUwNzI5N2JjNWJi
NmI1ZDA2YWFhYTQ3NzgyMDQxMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2
YXRlTWFjLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5Lmgi
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgKaW5kZXggMjNhM2FkN2IwMzU2M2I0YjY2
ZjE5OTcwMDFkYmE0MTE0ZTlmOWU1Ny4uMTE1NzdjZDYwY2IyOTQ2NGJkYTYxODBkYmQyMTRmY2Fi
MTQ0ZmZkMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCkBAIC0yNSwxMiArMjUsMTggQEAKICNp
Zm5kZWYgV2ViS2l0VGVzdFJ1bm5lcl9jb25maWdfaAogI2RlZmluZSBXZWJLaXRUZXN0UnVubmVy
X2NvbmZpZ19oCiAKKyNpZiBkZWZpbmVkIChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUg
ImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2lu
Y2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNFeHBvcnRNYWNyb3MuaD4KICNlbmRpZgogCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQy
Lmg+CisKICNpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFdURl9VU0VfQ0YgMSAKICNpZiBkZWZp
bmVkKFdJTl9DQUlSTykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Bs
YXRmb3JtV2ViVmlld0VmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9y
bVdlYlZpZXdFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNzgyMGQ5MWY0ODM4ZjIwZDYxNmJhNmYwZGVi
MGNiNTNlNTU2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Vm
bC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCisjaW5jbHVkZSAiV2ViS2l0Mi9XS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgYm9vbCB1c2VYMTFXaW5kb3cgPSBmYWxzZTsKKwor
c3RhdGljIEVjb3JlX0V2YXMqIGluaXRFY29yZUV2YXMoKQoreworICAgIEVjb3JlX0V2YXMqIGVj
b3JlRXZhcyA9IHVzZVgxMVdpbmRvdyA/IGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIDgwMCwgNjAw
LCAwKSA6IGVjb3JlX2V2YXNfYnVmZmVyX25ldyg4MDAsIDYwMCk7CisgICAgaWYgKCFlY29yZUV2
YXMpCisgICAgICAgIHJldHVybiAwOworCisgICAgZWNvcmVfZXZhc190aXRsZV9zZXQoZWNvcmVF
dmFzLCAiRUZMIFdlYktpdFRlc3RSdW5uZXIiKTsKKyAgICBlY29yZV9ldmFzX3Nob3coZWNvcmVF
dmFzKTsKKworICAgIHJldHVybiBlY29yZUV2YXM7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxh
dGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXApCit7CisgICAgbV93aW5kb3cgPSBpbml0RWNvcmVFdmFzKCk7CisgICAgRXZhcyogZXZhcyA9
IGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93KTsKKyAgICBtX3ZpZXcgPSB0b0ltcGwoV0tWaWV3Q3Jl
YXRlKGV2YXMsIGNvbnRleHQsIHBhZ2VHcm91cCkpOworICAgIG1fd2luZG93SXNLZXkgPSBmYWxz
ZTsKK30KKworUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKK3sKKyAgICBldmFz
X29iamVjdF9kZWwobV92aWV3KTsKKyAgICBlY29yZV9ldmFzX2ZyZWUobV93aW5kb3cpOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCkKK3sKKyAgICBldmFzX29iamVjdF9yZXNpemUobV92aWV3LCB3aWR0aCwgaGVpZ2h0
KTsKK30KKworV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJu
IFdLVmlld0dldFBhZ2UodG9BUEkobV92aWV3KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
Ojpmb2N1cygpCit7Cit9CisKK1dLUmVjdCBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkK
K3sKKyAgICByZXR1cm4gV0tSZWN0TWFrZSgwLCAwLCAwLCAwKTsKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSkKK3sKKyAgICBldmFzX29iamVj
dF9tb3ZlKG1fdmlldywgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9yaWdpbi55KTsKKyAgICByZXNp
emVUbyhmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKK1dLUmV0YWluUHRy
PFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUgVUkgcHJvY2Vz
cywKKyAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2Ug
M0QgdHJhbnNmb3Jtcy4KKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZs
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYjM5NzY3ZDg2NGU2MjNiOThkMTdkZGQ4NDgzNWNjMDM5MGQ1NDRiCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJF
ZmwuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xs
ZXIuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBFY29yZV9UaW1lciog
dGltZXIgPSAwOworCitzdGF0aWMgRWluYV9Cb29sIHRpbWVyRmlyZWQodm9pZCopCit7CisgICAg
dGltZXIgPSAwOworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgcmV0dXJuIEVDT1JF
X0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgp
Cit7CisgICAgaWYgKCF0aW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZWNvcmVfdGltZXJf
ZGVsKHRpbWVyKTsKKyAgICB0aW1lciA9IDA7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiwgZG91YmxlIHRpbWVv
dXQpCit7CisgICAgdGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZCh0aW1lb3V0LCB0aW1lckZp
cmVkLCAwKTsKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKworc3RhdGljIGNvbnN0
IGNoYXIqIGdldEVudmlyb25tZW50VmFyaWFibGVPckV4aXQoY29uc3QgY2hhciogdmFyaWFibGVO
YW1lKQoreworICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gZ2V0ZW52KHZhcmlhYmxlTmFtZSk7Cisg
ICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGVudmlyb25tZW50
IHZhcmlhYmxlIG5vdCBmb3VuZFxuIiwgdmFyaWFibGVOYW1lKTsKKyAgICAgICAgZXhpdCgwKTsK
KyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBjb25zdCBjaGFyKiBidW5kbGVQYXRo
ID0gZ2V0RW52aXJvbm1lbnRWYXJpYWJsZU9yRXhpdCgiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVO
RExFX0ZJTEVOQU1FIik7CisgICAgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhidW5kbGVQYXRoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkoKQoreworICAgIGNvbnN0IGNoYXIqIHBsdWdp
blBhdGggPSBnZXRFbnZpcm9ubWVudFZhcmlhYmxlT3JFeGl0KCJURVNUX1JVTk5FUl9QTFVHSU5f
UEFUSCIpOworICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHBsdWdpblBhdGgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUluaXRpYWxpemVDb250ZXh0KCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9k
YWwoUGxhdGZvcm1XZWJWaWV3KikKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQg
dGhpcyB0byB0ZXN0IHNob3dNb2RhbERpYWxvZy4KK30KKworY29uc3QgY2hhciogVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2VmbC9tYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQyZTBhZjI4NmRhNDk4N2QxMzMyNzZjZmM4YmU3ZTQ4OWZmNWQzN2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9tYWluLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFZGplLmg+
CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpZmRlZiBI
QVZFX0VDT1JFX1gKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdHlwZV9pbml0KCk7CisKKyAgICBpZiAoIWVj
b3JlX2V2YXNfaW5pdCgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICghZWRqZV9pbml0
KCkpIHsKKyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICByZXR1cm4gMTsK
KyAgICB9CisKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyAgICBpZiAoIWVjb3JlX3hfaW5pdCgwKSkg
eworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAgIGVkamVfc2h1dGRvd24o
KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCisKKyAgICAvLyBQcmVmZXIgdGhl
IG5vdCBpbnN0YWxsZWQgd2ViIGFuZCBwbHVnaW4gcHJvY2Vzc2VzLgorICAgIFdUUjo6VGVzdENv
bnRyb2xsZXIgY29udHJvbGxlcihhcmdjLCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4oYXJndikp
OworCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgZWNvcmVfeF9zaHV0ZG93bigpOworI2VuZGlm
CisKKyAgICBlZGplX3NodXRkb3duKCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworCisg
ICAgcmV0dXJuIDA7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150787</attachid>
            <date>2012-07-04 07:06:52 -0700</date>
            <delta_ts>2012-07-04 20:28:07 -0700</delta_ts>
            <desc>work in progress(for green bot)</desc>
            <filename>bug-87659-20120704230650.patch</filename>
            <type>text/plain</type>
            <size>28225</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDkxM2YyZGQ4NDM4Yjhi
YTU4NTliZDUwZTZiZWM0YmFmNjc1OGIwNi4uZmI3NTg5NDk2ZDdiYjgxNzU4YTMzNDBmNTI1MmVk
OWNjZGJkNGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA3LTA0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNy0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gRXdrX1ZpZXcg
c2hvdWxkIHJlcG9ydCBsb2FkIGVycm9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDJkZGIzOTMyYjExMjVjNzhkMjgxZGZm
NTRmZjRmY2Q0MDZjODYyMmQuLmI2NDk5NzdmODI5Njk0MTI1NzgxZDgxZjFlYTUwNWQ5MmZjMzdk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VM
aXN0cy50eHQKQEAgLTIyLDYgKzIyLDcgQEAgRU5ESUYgKCkKICMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoJHtXVEZfTElCUkFSWV9OQU1FfSkK
IFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZ
X05BTUV9KQorV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUygke1dlYkNvcmVUZXN0U3Vw
cG9ydF9MSUJSQVJZX05BTUV9KQogCiBJRiAoRU5BQkxFX1dFQkNPUkUpCiAgICAgV0VCS0lUX1NF
VF9FWFRSQV9DT01QSUxFUl9GTEFHUygke1dlYkNvcmVfTElCUkFSWV9OQU1FfSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggM2M3MzhlYmNlOWQwYTBlZjliMzlkYWFhNzUxYTQxMTU2Mzhj
YTcwYi4uYTMyY2Q1YjVkYThiNzE0YzUxZGE4Y2YzNGNlYWEzNDZlMjk2MWMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0LDYgKzE0LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKIAorICAgIFNoYXJlZC9B
UEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3Jh
cGhpY3NDb250ZXh0R3RrLmNwcAogCiAgICAgU2hhcmVkL2NhaXJvL0xheWVyVHJlZUNvbnRleHRD
YWlyby5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAxMjAyMzgyMzYwNWU3ZWExODlmZmI3NGQyZTM1ODgzMjc5MzIyNWRjLi5jMWJkZjIyNWE5
YzZkODY0YWNhMDgyMzNhOTY2M2U0MzJjNTFkNTQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMDQgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtXazJdW0VGTF0g
RUZMIG5lZWRzIGEgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0VGVzdFJ1
bm5lciBmb3IgRWZsIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogSW5jbHVkZXMg
V2ViS2l0VGVzdFJ1bm5lciBidWlsZCBzY3JpcHQuCisgICAgICAgICogU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyOiBBZGRlZCBrbm93bGVkZ2Ugb2YgV2ViS2l0VGVzdFJ1bm5lci9FZmwu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHk6IERp
dHRvLgorICAgICAgICAoRWZsUG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRz
RWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jb25maWcuaDogQWRkZWQga25vd2xlZGdlIG9mIFdlYktpdFRlc3RSdW5uZXIv
RWZsLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5j
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVy
RWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHA6
IEFkZGVkLgorCiAyMDEyLTA3LTA0ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtXSzJdIFtHVEtdIFdLMiB0ZXN0aW5nIGJvdCB1bmFibGUgdG8g
ZmluZCB0aGUgSW5qZWN0ZWRCdW5kbGUgbGlicmFyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VM
aXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBlYTc1MjE4NDE2ZjdhZTUwMjk2
MWVhZTU0YjBhN2NhMDg5ZGJhNDJlLi5lOWZjN2UzYmRkMTgzODlkZDMxOTUxYTE3ZTY2MGM2N2Jj
NDZlNmZkIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFr
ZUxpc3RzLnR4dApAQCAtMSwzICsxLDcgQEAKK0lGIChFTkFCTEVfV0VCS0lUMikKKyAgICBBRERf
U1VCRElSRUNUT1JZKFdlYktpdFRlc3RSdW5uZXIpCitFTkRJRiAoKQorCiBJRiAoIiR7UE9SVH0i
IFNUUkVRVUFMICJFZmwiKQogICAgIElGIChFTkFCTEVfV0VCS0lUKQogICAgICAgICBBRERfU1VC
RElSRUNUT1JZKER1bXBSZW5kZXJUcmVlL2VmbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0dGVzdHJ1bm5lciBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1
bm5lcgppbmRleCBmMDNjMTc5OWE3N2ZlZTMzZjgzZjlmODk1OGUxYWZhYzA2ZTk1NGU4Li5lNWIy
MzU0NWI3N2U2ZTc4YjRjZTQxNjlmNDI4N2E4NWM0YmI1YzI5IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyCkBAIC02Myw3ICs2Myw3IEBAIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkp
IHsKICAgICAkcmVzdWx0ID0gYnVpbGRYQ29kZVByb2plY3QoIldlYktpdFRlc3RSdW5uZXIiLCAk
Y2xlYW4sIFhjb2RlT3B0aW9ucygpLCBAQVJHVik7CiB9IGVsc2lmIChpc0FwcGxlV2luV2ViS2l0
KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRWaXN1YWxTdHVkaW9Qcm9qZWN0KCJXZWJLaXRUZXN0
UnVubmVyLnNsbiIsICRjbGVhbik7Ci19IGVsc2lmIChpc1F0KCkgfHwgaXNHdGsoKSkgeworfSBl
bHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSkgewogICAgICMgUXQgYW5kIEdUSysg
YnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGluZyBo
ZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKaW5kZXggOGVhOGExMjU1MmYzNDM1OTgzNzc5
OTZhNDZlM2RiZjc1NGJkZjU4Mi4uNTk2NGRmZTUyMWU0OGIxYzY1NDM3NDhkMzdmOGZiNzQ3NjM1
ZjEzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9lZmwucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9l
ZmwucHkKQEAgLTUyLDYgKzUyLDEyIEBAIGNsYXNzIEVmbFBvcnQoV2ViS2l0UG9ydCwgUHVsc2VB
dWRpb1Nhbml0aXplcik6CiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICBz
ZWxmLl91bmxvYWRfcHVsc2VhdWRpb19tb2R1bGUoKQogCisgICAgZGVmIHNldHVwX2Vudmlyb25f
Zm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKKyAgICAgICAgZW52ID0gc3VwZXIo
RWZsUG9ydCwgc2VsZikuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQorICAg
ICAgICBlbnZbJ1RFU1RfUlVOTkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSddID0gc2VsZi5f
YnVpbGRfcGF0aCgnbGliJywgJ2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5zbycpCisgICAg
ICAgIGVudlsnVEVTVF9SVU5ORVJfUExVR0lOX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ2xp
YicpCisgICAgICAgIHJldHVybiBlbnYKKwogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxm
KToKICAgICAgICAgc2VsZi5fcmVzdG9yZV9wdWxzZWF1ZGlvX21vZHVsZSgpCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2OTUxMzhiYzUzMjM3ZDlkMzll
MTdkNzQ1Nzk3MjFiYzg3ZDdlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsODkgQEAKK1NFVChXRUJLSVRfVEVTVFJV
Tk5FUl9ESVIgIiR7VE9PTFNfRElSfS9XZWJLaXRUZXN0UnVubmVyIikKK1NFVChXRUJLSVRfVEVT
VFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVIgIiR7VE9PTFNfRElSfS9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlIikKKworRklMRShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkQnVuZGxlKQorCitTRVQoV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAKKyAg
ICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGl4ZWxEdW1wU3VwcG9ydC5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9uLmNwcAorKQorCitTRVQoV2ViS2l0VGVzdFJ1bm5l
cl9MSUJSQVJJRVMKKyAgICAke0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAke1dl
YkNvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfTkFN
RX0KKyAgICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQorKQorCitTRVQoV2ViS2l0VGVzdFJ1bm5l
cl9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9CisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzCisgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAg
JHtXRUJDT1JFX0RJUn0vZWRpdGluZworICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCisgICAg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9uZXR3b3JrCisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dAorICAgICR7V0VC
Q09SRV9ESVJ9L3Rlc3RpbmcvanMKKyAgICAke1dFQktJVDJfRElSfS9TaGFyZWQKKyAgICAke1dF
QktJVDJfRElSfS9TaGFyZWQvQVBJL2MKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MKKyAg
ICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsCisgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9DL3NvdXAKKyAgICAke1dURl9ESVJ9CisgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L2luY2x1ZGUKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJ
Un0vaW5jbHVkZQorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUKKyAg
ICAke0NNQUtFX0JJTkFSWV9ESVJ9CisgICAgJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UKKyAg
ICAke0xJQlNPVVAyNF9JTkNMVURFX0RJUlN9CispCisKK1NFVChXZWJLaXRUZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5E
TEVfRElSfS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9E
SVJ9L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9J
TkpFQ1RFREJVTkRMRV9ESVJ9L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0dDQ29udHJvbGxlci5jcHAKKyAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0ZWRCdW5kbGUuY3Bw
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0luamVjdGVkQnVu
ZGxlTWFpbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0v
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURC
VU5ETEVfRElSfS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vVGV4dElucHV0Q29udHJvbGxlci5jcHAKKworICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5ncy9KU1dyYXBwZXIu
Y3BwCispCisKK0ZJTEUoR0xPQiBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfSURMX0ZJ
TEVTICIke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQmluZGluZ3MvKi5p
ZGwiKQorRk9SRUFDSCAoX2ZpbGUgJHtXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfSURM
X0ZJTEVTfSkKKyAgICBHRVRfRklMRU5BTUVfQ09NUE9ORU5UIChfbmFtZSAke19maWxlfSBOQU1F
X1dFKQorICAgIEFERF9DVVNUT01fQ09NTUFORCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUvSlMke19uYW1lfS5jcHAKKyAgICAgICAgTUFJTl9E
RVBFTkRFTkNZICR7X2ZpbGV9CisgICAgICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAke1NDUklQVFNfQklORElOR1N9CisgICAg
ICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9IC1JJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mv
c2NyaXB0cyAtSSR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5n
cyAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0t
ZGVmaW5lIFwiXCIgLS1nZW5lcmF0b3IgVGVzdFJ1bm5lciAtLWluY2x1ZGUgJHtXRUJLSVRfVEVT
VFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzIC0tb3V0cHV0ZGlyICR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUgJHtfZmlsZX0KKyAgICAgICAgVkVSQkFUSU0p
CisgICAgTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMg
JHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRsZS9KUyR7X25hbWV9LmNwcCkKK0VO
REZPUkVBQ0ggKCkKKworSU5DTFVERV9JRl9FWElTVFMoJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9
L1BsYXRmb3JtJHtQT1JUfS5jbWFrZSkKKworSU5DTFVERV9ESVJFQ1RPUklFUygke1dlYktpdFRl
c3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKK0FERF9MSUJSQVJZKFRlc3RSdW5uZXJJ
bmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09V
UkNFU30pCitUQVJHRVRfTElOS19MSUJSQVJJRVMoVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlICR7
V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVN9KQorCitBRERfRVhFQ1VUQUJMRShXZWJLaXRUZXN0
UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklF
UyhXZWJLaXRUZXN0UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVN9KQorCitJRiAo
V2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUyhX
ZWJLaXRUZXN0UnVubmVyIExJTktfRkxBR1MgJHtXZWJLaXRUZXN0UnVubmVyX0xJTktfRkxBR1N9
KQorRU5ESUYgKCkKKworQUREX0RFUEVOREVOQ0lFUygke1dlYktpdDJfTElCUkFSWV9OQU1FfSAk
e0ZvcndhcmRpbmdIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FfSkKK0FERF9ERVBFTkRF
TkNJRVMoJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0gJHtGb3J3YXJkaW5nTmV0d29ya0hlYWRlcnNG
b3JXZWJLaXRUZXN0UnVubmVyX05BTUV9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDZh
ZWRhY2M0MzVjMjc4ODhhNWYwOWZhMjgyM2E2ZTNlZmE0M2YzYjUuLjMzODc3MDk4ODliYmE3OTky
M2Y1ODRiMTE2ZTljODcwYjNjZTRjMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQz
LDYgKzQzLDkgQEAgdHlwZWRlZiBVSU5UX1BUUiBQbGF0Zm9ybVRpbWVyUmVmOwogdHlwZWRlZiBR
VGltZXIgUGxhdGZvcm1UaW1lclJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgdW5z
aWduZWQgaW50IFBsYXRmb3JtVGltZXJSZWY7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVm
IHN0cnVjdCBfRWNvcmVfVGltZXIgRWNvcmVfVGltZXI7Cit0eXBlZGVmIEVjb3JlX1RpbWVyKiBQ
bGF0Zm9ybVRpbWVyUmVmOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0Vm
bC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9BY3RpdmF0
ZUZvbnRzRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Nzg1Zjc3OTliNzA0OWIxNDRjM2NiOTdjNWVmOTlm
MzUzNDkzYTJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0VmbC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKKyNpbmNsdWRlICJGb250TWFuYWdl
bWVudC5oIgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKKyAg
ICBhZGRGb250c1RvRW52aXJvbm1lbnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3Rl
ZEJ1bmRsZUVmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2Vm
bC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYxZDA0M2Y3ZWVmOTVmMGUzNmYx
OTg1ZTExMWY3ZDNlNDAyOWYxOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcApAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIElu
amVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJF
ZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5b3V0
VGVzdENvbnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYjZmODQ0YTI2NzUwZmUwNWRiMzQ5
YmZlMDk3Yzg0OGZkOTAyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgor
CisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RhdGljIEVpbmFfQm9vbCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckNh
bGxiYWNrKHZvaWQqKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0
Q29udHJvbGxlcigpLT53YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQoreworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQor
eworICAgIGlmICghbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZWNvcmVfdGltZXJfZGVsKG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpOworICAgIG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCgpCit7CisgICAg
aWYgKG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZCh3YWl0VG9EdW1w
V2F0Y2hkb2dUaW1lckludGVydmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckNhbGxiYWNrLCAwKTsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYXRo
VG9Mb2NhbFJlc291cmNlKEpTU3RyaW5nUmVmIHVybCkKK3sKKyAgICByZXR1cm4gdXJsOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
TmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVmbCIpKTsKKyAgICByZXR1cm4gcGxh
dGZvcm1OYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0OTY0Y2M4YWU4N2NmMjIxMzViYjQ0N2Jl
MDg4ZGM2ZWYzZTBhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsNTggQEAKK0xJU1QoQVBQRU5EIFdlYktpdFRl
c3RSdW5uZXJfTElOS19GTEFHUworICAgICR7RUNPUkVfWF9MREZMQUdTfQorICAgICR7RURKRV9M
REZMQUdTfQorICAgICR7RUZMREVQU19MREZMQUdTfQorICAgICR7RVZBU19MREZMQUdTfQorICAg
ICR7TElCU09VUDI0X0xERkxBR1N9CispCisKK0FERF9DVVNUT01fVEFSR0VUKGZvcndhcmRpbmct
aGVhZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAke1dFQktJVDJfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5w
bCAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9
L2luY2x1ZGUgZWZsCispCitTRVQoRm9yd2FyZGluZ0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVubmVy
X05BTUUgZm9yd2FyZGluZy1oZWFkZXJzRWZsRm9yV2ViS2l0VGVzdFJ1bm5lcikKKworQUREX0NV
U1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RSdW5uZXIKKyAg
ICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVDJfRElSfS9TY3JpcHRzL2dlbmVy
YXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0gJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgc291cAorKQorU0VUKEZvcndhcmRpbmdO
ZXR3b3JrSGVhZGVyc0ZvcldlYktpdFRlc3RSdW5uZXJfTkFNRSBmb3J3YXJkaW5nLWhlYWRlcnNT
b3VwRm9yV2ViS2l0VGVzdFJ1bm5lcikKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9T
T1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZvY2F0aW9u
Q2Fpcm8uY3BwCisKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1BsYXRmb3JtV2Vi
Vmlld0VmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1Rlc3RDb250cm9s
bGVyRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvbWFpbi5jcHAKKykK
KworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAg
JHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2VmbC8KKyAgICAiJHtXVEZfRElSfS93dGYvZ29i
amVjdCIKKworICAgICR7Q0FJUk9fSU5DTFVERV9ESVJTfQorICAgICR7RUNPUkVfWF9JTkNMVURF
X0RJUlN9CisgICAgJHtFRkxERVBTX0lOQ0xVREVfRElSU30KKyAgICAke0VWQVNfSU5DTFVERV9E
SVJTfQorICAgICR7R2xpYl9JTkNMVURFX0RJUlN9CispCisKK0xJU1QoQVBQRU5EIFdlYktpdFRl
c3RSdW5uZXJfTElCUkFSSUVTCisgICAgJHtDQUlST19MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9Y
X0xJQlJBUklFU30KKyAgICAke0VESkVfTElCUkFSSUVTfQorICAgICR7RUZMREVQU19MSUJSQVJJ
RVN9CisgICAgJHtHbGliX0xJQlJBUklFU30KKykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1
bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRy
ZWUvZWZsL0ZvbnRNYW5hZ2VtZW50LmNwcAorCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpF
Q1RFREJVTkRMRV9ESVJ9L2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcAorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2VmbC9MYXlvdXRUZXN0
Q29udHJvbGxlckVmbC5jcHAKKykKKworIyBGSVhNRTogRE9XTkxPQURFRF9GT05UU19ESVIgc2hv
dWxkIG5vdCBoYXJkY29kZSB0aGUgZGlyZWN0b3J5CisjIHN0cnVjdHVyZS4gU2VlIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NzU+LgorQUREX0RFRklOSVRJT05T
KC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMi
CisgICAgICAgICAgICAgICAgLURET1dOTE9BREVEX0ZPTlRTX0RJUj0iJHtDTUFLRV9TT1VSQ0Vf
RElSfS9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvU291cmNlL3dlYmtpdGd0ay10ZXN0LWZvbnRz
LTAuMC4zIgorICAgICAgICAgICAgICAgIC1EREFUQV9ESVI9IiR7VEhFTUVfQklOQVJZX0RJUn0i
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggMGU4YzZiNWIy
NDBjYTBhN2NmNjg3ZTA1MmM2OWVmZDQwMWQ5ZTAxYy4uYThjZjBkNjZjODMwMjhiMmQ3MzdkMWRh
ODA4YWVmMGFjOGI4Njg0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oCkBAIC01MSw2ICs1MSwxMSBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1XaW5kb3c7CiB0eXBl
ZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRm
b3JtV0tWaWV3OwogdHlwZWRlZiBHdGtXaWRnZXQqIFBsYXRmb3JtV2luZG93OworI2VsaWYgUExB
VEZPUk0oRUZMKQordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwordHlw
ZWRlZiBzdHJ1Y3QgX0Vjb3JlX0V2YXMgRWNvcmVfRXZhczsKK3R5cGVkZWYgRXZhc19PYmplY3Qq
IFBsYXRmb3JtV0tWaWV3OwordHlwZWRlZiBFY29yZV9FdmFzKiBQbGF0Zm9ybVdpbmRvdzsKICNl
bmRpZgogCiBuYW1lc3BhY2UgV1RSIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggZmQ2ODg1NzkzYTY3ZjZjMjI2YTQ2MzNlYTljMmExMGUxOGNjMzhiZC4u
ODYyNTgwOGMxZTA3Mjk3YmM1YmI2YjVkMDZhYWFhNDc3ODIwNDExMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRl
IDxXZWJLaXQyL1dLUGFnZVByaXZhdGVNYWMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUg
IkV2ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvbmZpZy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAppbmRl
eCAyM2EzYWQ3YjAzNTYzYjRiNjZmMTk5NzAwMWRiYTQxMTRlOWY5ZTU3Li4xMTU3N2NkNjBjYjI5
NDY0YmRhNjE4MGRiZDIxNGZjYWIxNDRmZmQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvbmZpZy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgKQEAg
LTI1LDEyICsyNSwxOCBAQAogI2lmbmRlZiBXZWJLaXRUZXN0UnVubmVyX2NvbmZpZ19oCiAjZGVm
aW5lIFdlYktpdFRlc3RSdW5uZXJfY29uZmlnX2gKIAorI2lmIGRlZmluZWQgKEJVSUxESU5HX1dJ
VEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgogI2lmIFVTRShK
U0MpCiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgogI2VuZGlmCiAKKyNpbmNs
dWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKwogI2lmIFBMQVRGT1JNKFdJTikKICNkZWZpbmUgV1RG
X1VTRV9DRiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3ODIwZDkx
ZjQ4MzhmMjBkNjE2YmE2ZjBkZWIwY2I1M2U1NTYwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKQEAgLTAsMCArMSwx
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKKyNpbmNsdWRl
ICJXZWJLaXQyL1dLQVBJQ2FzdC5oIgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBib29sIHVzZVgx
MVdpbmRvdyA9IGZhbHNlOworCitzdGF0aWMgRWNvcmVfRXZhcyogaW5pdEVjb3JlRXZhcygpCit7
CisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gdXNlWDExV2luZG93ID8gZWNvcmVfZXZhc19u
ZXcoMCwgMCwgMCwgODAwLCA2MDAsIDApIDogZWNvcmVfZXZhc19idWZmZXJfbmV3KDgwMCwgNjAw
KTsKKyAgICBpZiAoIWVjb3JlRXZhcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBlY29yZV9l
dmFzX3RpdGxlX3NldChlY29yZUV2YXMsICJFRkwgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgIGVj
b3JlX2V2YXNfc2hvdyhlY29yZUV2YXMpOworCisgICAgcmV0dXJuIGVjb3JlRXZhczsKK30KKwor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3dpbmRvdyA9IGluaXRFY29yZUV2YXMo
KTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV93aW5kb3cpOworICAgIG1fdmll
dyA9IHRvSW1wbChXS1ZpZXdDcmVhdGUoZXZhcywgY29udGV4dCwgcGFnZUdyb3VwKSk7CisgICAg
bV93aW5kb3dJc0tleSA9IGZhbHNlOworfQorCitQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdl
YlZpZXcoKQoreworICAgIGV2YXNfb2JqZWN0X2RlbChtX3ZpZXcpOworICAgIGVjb3JlX2V2YXNf
ZnJlZShtX3dpbmRvdyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSht
X3ZpZXcsIHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYgUGxhdGZvcm1XZWJWaWV3Ojpw
YWdlKCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0UGFnZSh0b0FQSShtX3ZpZXcpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK3sKK30KKworV0tSZWN0IFBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93RnJhbWUoKQoreworICAgIHJldHVybiBXS1JlY3RNYWtlKDAsIDAsIDAsIDAp
OworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1l
KQoreworICAgIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCBmcmFtZS5vcmlnaW4ueCwgZnJhbWUu
b3JpZ2luLnkpOworICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVp
Z2h0KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQor
eworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7
Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkK
K3sKK30KKworV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4
ZWxzIGluIHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8g
Y2FwdHVyZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgorICAgIHJldHVybiAwOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVFIKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVz
dENvbnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzk3NjdkODY0ZTYyM2I5OGQxN2RkZDg0
ODM1Y2MwMzkwZDU0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRl
IDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKwor
c3RhdGljIEVjb3JlX1RpbWVyKiB0aW1lciA9IDA7CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGltZXJG
aXJlZCh2b2lkKikKK3sKKyAgICB0aW1lciA9IDA7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQo
KTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpub3RpZnlEb25lKCkKK3sKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBlY29yZV90aW1lcl9kZWwodGltZXIpOworICAgIHRpbWVyID0gMDsKKyAgICBlY29y
ZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUlu
aXRpYWxpemUoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGls
KGJvb2wmLCBkb3VibGUgdGltZW91dCkKK3sKKyAgICB0aW1lciA9IGVjb3JlX3RpbWVyX2xvb3Bf
YWRkKHRpbWVvdXQsIHRpbWVyRmlyZWQsIDApOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigp
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogZ2V0RW52aXJvbm1lbnRWYXJpYWJsZU9yRXhpdChj
b25zdCBjaGFyKiB2YXJpYWJsZU5hbWUpCit7CisgICAgY29uc3QgY2hhciogdmFsdWUgPSBnZXRl
bnYodmFyaWFibGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiJXMgZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IGZvdW5kXG4iLCB2YXJpYWJsZU5hbWUp
OworICAgICAgICBleGl0KDApOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBhdGgoKQoreworICAgIGNv
bnN0IGNoYXIqIGJ1bmRsZVBhdGggPSBnZXRFbnZpcm9ubWVudFZhcmlhYmxlT3JFeGl0KCJURVNU
X1JVTk5FUl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUiKTsKKyAgICBtX2luamVjdGVkQnVuZGxl
UGF0aCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1bmRsZVBhdGgpOworfQorCit2
b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSgpCit7Cisg
ICAgY29uc3QgY2hhciogcGx1Z2luUGF0aCA9IGdldEVudmlyb25tZW50VmFyaWFibGVPckV4aXQo
IlRFU1RfUlVOTkVSX1BMVUdJTl9QQVRIIik7CisgICAgbV90ZXN0UGx1Z2luRGlyZWN0b3J5ID0g
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGx1Z2luUGF0aCk7Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworfQorCit2b2lkIFRl
c3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQoreworICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9nLgorfQorCitj
b25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3Rpbmco
KQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9lZmwvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlMGFmMjg2ZGE0OTg3ZDEzMzI3NmNmYzhi
ZTdlNDg5ZmY1ZDM3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
ZWZsL21haW4uY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5o
PgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PGdsaWIuaD4KKworI2lmZGVmIEhBVkVfRUNPUkVfWAorI2luY2x1ZGUgPEVjb3JlX1guaD4KKyNl
bmRpZgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgZ190eXBlX2lu
aXQoKTsKKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAgIHJldHVybiAxOwor
CisgICAgaWYgKCFlZGplX2luaXQoKSkgeworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7
CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworI2lmZGVmIEhBVkVfRUNPUkVfWAorICAgIGlm
ICghZWNvcmVfeF9pbml0KDApKSB7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAg
ICAgICAgZWRqZV9zaHV0ZG93bigpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYK
KworICAgIC8vIFByZWZlciB0aGUgbm90IGluc3RhbGxlZCB3ZWIgYW5kIHBsdWdpbiBwcm9jZXNz
ZXMuCisgICAgV1RSOjpUZXN0Q29udHJvbGxlciBjb250cm9sbGVyKGFyZ2MsIGNvbnN0X2Nhc3Q8
Y29uc3QgY2hhcioqPihhcmd2KSk7CisKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyAgICBlY29yZV94
X3NodXRkb3duKCk7CisjZW5kaWYKKworICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CisKKyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGFlMTViYzM2ZmQ1YTA0ZjY0N2I3MjEwZGRjZWJhYjVlNjUw
ZWUzNTIuLmVlNDdmNGZmYWIzMDhlNGM4YmZkMjg1OTRjNmNkOGMxNmUyMjhiMWIgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0w
NCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1drMl1b
RUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBjb21waWxlciBmbGFncyBmb3IgV2ViQ29yZVRl
c3RTdXBwb3J0IHRvIGJlIGxpbmtlZCBpbnRvIFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZQorICAg
ICAgICBzaGFyZWQgbGlicmFyeS4KKworICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoK
KwogMjAxMi0wNy0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBDU1MgdmFyaWFibGVzIHN1cHBvcnQgYXQgY29t
cGlsZSB0aW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150866</attachid>
            <date>2012-07-04 20:28:15 -0700</date>
            <delta_ts>2012-07-05 01:49:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87659-20120705122813.patch</filename>
            <type>text/plain</type>
            <size>28877</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTNmYTliNWJhZjNlNDk1
NmY1MTllNzY4N2MwNWI0MTUyN2EwZjZjZS4uMWIwNmNhNDU4YzFkMzZmN2U1NzVjMGJhN2M0OGIy
MTQwYWRmNTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA3LTA0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV2syXVtFRkxdIEVG
TCBuZWVkcyBhIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQgV0tJbWFnZUNhaXJv
LmNwcCBpbiBzb3VyY2UgbGlzdC4KKwogMjAxMi0wNy0wNCAgSm9obiBNZWxsb3IgIDxqb2hubWVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogQWRkIGNvbXBpbGUgZmxh
ZyBhbmQgcnVudGltZSBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMmRkYjM5MzJiMTEyNWM3OGQyODFkZmY1NGZm
NGZjZDQwNmM4NjIyZC4uYjY0OTk3N2Y4Mjk2OTQxMjU3ODFkODFmMWVhNTA1ZDkyZmMzN2RkOSAx
MDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIsNiArMjIsNyBAQCBFTkRJRiAoKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
V0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUygke1dURl9MSUJSQVJZX05BTUV9KQogV0VC
S0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUygke0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFN
RX0pCitXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKCR7V2ViQ29yZVRlc3RTdXBwb3J0
X0xJQlJBUllfTkFNRX0pCiAKIElGIChFTkFCTEVfV0VCQ09SRSkKICAgICBXRUJLSVRfU0VUX0VY
VFJBX0NPTVBJTEVSX0ZMQUdTKCR7V2ViQ29yZV9MSUJSQVJZX05BTUV9KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCAzYzczOGViY2U5ZDBhMGVmOWIzOWRhYWE3NTFhNDExNTYzOGNhNzBi
Li5hMzJjZDViNWRhOGI3MTRjNTFkYThjZjM0Y2VhYTM0NmUyOTYxYzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTQsNiArMTQsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAgICAgUGxh
dGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogCisgICAgU2hhcmVkL0FQSS9j
L2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKwogICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGlj
c0NvbnRleHRHdGsuY3BwCiAKICAgICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJv
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKaW5kZXggMDE5OTQwODcwZTNmNzgzNTI4ZTg4OTcy
MjFhYjg5NDYyNDI4MDgzZi4uODM2MzcxZWQ3MDFiYjExNGEzZWVkMWJiNWU4Y2U4ZjRhNjg3MDQ4
MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQorKysgYi9Tb3Vy
Y2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCkBAIC00OCw3ICs0OCw3IEBAIE1BQ1JPIChHRU5F
UkFURV9CSU5ESU5HUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRfZmlsZXMgX2Jhc2VfZGlyIF9pZGxf
aW5jbHVkZXMgX2ZlCiAgICAgICAgIEFERF9DVVNUT01fQ09NTUFORCgKICAgICAgICAgICAgIE9V
VFBVVCAke19kZXN0aW5hdGlvbn0vJHtfcHJlZml4fSR7X25hbWV9LmNwcCAke19kZXN0aW5hdGlv
bn0vJHtfcHJlZml4fSR7X25hbWV9LmgKICAgICAgICAgICAgIE1BSU5fREVQRU5EREVOQ1kgJHtf
ZmlsZX0KLSAgICAgICAgICAgIERFUEVORFMgJHtCSU5ESU5HX0dFTkVSQVRPUn0gJHtTQ1JJUFRT
X0JJTkRJTkdTfSAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Ik
e19nZW5lcmF0b3J9LnBtICR7X3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGV9CisgICAgICAg
ICAgICBERVBFTkRTICR7QklORElOR19HRU5FUkFUT1J9ICR7U0NSSVBUU19CSU5ESU5HU30gJHtf
c3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZX0KICAgICAgICAgICAgIENPTU1BTkQgJHtQRVJM
X0VYRUNVVEFCTEV9IC1JJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cyAke0JJTkRJTkdf
R0VORVJBVE9SfSAtLWRlZmluZXMgIiR7X2ZlYXR1cmVzfSIgLS1nZW5lcmF0b3IgJHtfZ2VuZXJh
dG9yfSAke19pZGxfaW5jbHVkZXN9IC0tb3V0cHV0RGlyICIke19kZXN0aW5hdGlvbn0iIC0tcHJl
cHJvY2Vzc29yICIke0NPREVfR0VORVJBVE9SX1BSRVBST0NFU1NPUn0iICR7X3N1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5fSAke19maWxlfQogICAgICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtf
YmFzZV9kaXJ9CiAgICAgICAgICAgICBWRVJCQVRJTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWYwNjhjNzUxMTZhYTZiODdkZjUwZTY4MGUz
ZDczMjNlMjRiM2Y0Li41M2MwMjhhMmI1MTM2NWRjYTllYjVmZGNmNTMwNTAzYzg2NjdlZGNmIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTItMDctMDQgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtXazJdW0VGTF0gRUZMIG5lZWRzIGEgV2ViS2l0VGVzdFJ1bm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2NTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW1wbGVt
ZW50YXRpb24gb2YgV2ViS2l0VGVzdFJ1bm5lciBmb3IgRWZsIHBvcnQuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogSW5jbHVkZXMgV2ViS2l0VGVzdFJ1bm5lciBidWlsZCBzY3JpcHQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyOiBBZGRlZCBrbm93bGVkZ2Ug
b2YgV2ViS2l0VGVzdFJ1bm5lci9FZmwuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9lZmwucHk6IERpdHRvLgorICAgICAgICAoRWZsUG9ydC5zZXR1cF9lbnZp
cm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50
eHQ6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRU
ZXN0Q29udHJvbGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaDogQWRkZWQga25vd2xl
ZGdlIG9mIFdlYktpdFRlc3RSdW5uZXIvRWZsLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
ZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAobWFpbik6CisKIDIwMTIt
MDctMDQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE4NjIuCmRpZmYgLS1naXQgYS9Ub29scy9D
TWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IGVhNzUyMTg0MTZmN2Fl
NTAyOTYxZWFlNTRiMGE3Y2EwODlkYmE0MmUuLmU5ZmM3ZTNiZGQxODM4OWRkMzE5NTFhMTdlNjYw
YzY3YmM0NmU2ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xz
L0NNYWtlTGlzdHMudHh0CkBAIC0xLDMgKzEsNyBAQAorSUYgKEVOQUJMRV9XRUJLSVQyKQorICAg
IEFERF9TVUJESVJFQ1RPUlkoV2ViS2l0VGVzdFJ1bm5lcikKK0VORElGICgpCisKIElGICgiJHtQ
T1JUfSIgU1RSRVFVQUwgIkVmbCIpCiAgICAgSUYgKEVOQUJMRV9XRUJLSVQpCiAgICAgICAgIEFE
RF9TVUJESVJFQ1RPUlkoRHVtcFJlbmRlclRyZWUvZWZsKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0
ZXN0cnVubmVyCmluZGV4IGYwM2MxNzk5YTc3ZmVlMzNmODNmOWY4OTU4ZTFhZmFjMDZlOTU0ZTgu
LmU1YjIzNTQ1Yjc3ZTZlNzhiNGNlNDE2OWY0Mjg3YTg1YzRiYjVjMjkgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgorKysgYi9Ub29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdHRlc3RydW5uZXIKQEAgLTYzLDcgKzYzLDcgQEAgaWYgKGlzQXBwbGVNYWNXZWJL
aXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFhDb2RlUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5l
ciIsICRjbGVhbiwgWGNvZGVPcHRpb25zKCksIEBBUkdWKTsKIH0gZWxzaWYgKGlzQXBwbGVXaW5X
ZWJLaXQoKSkgewogICAgICRyZXN1bHQgPSBidWlsZFZpc3VhbFN0dWRpb1Byb2plY3QoIldlYktp
dFRlc3RSdW5uZXIuc2xuIiwgJGNsZWFuKTsKLX0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpKSB7
Cit9IGVsc2lmIChpc1F0KCkgfHwgaXNHdGsoKSB8fCBpc0VmbCgpKSB7CiAgICAgIyBRdCBhbmQg
R1RLKyBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRo
aW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weQppbmRleCA4ZWE4YTEyNTUyZjM0MzU5
ODM3Nzk5NmE0NmUzZGJmNzU0YmRmNTgyLi41OTY0ZGZlNTIxZTQ4YjFjNjU0Mzc0OGQzN2Y4ZmI3
NDc2MzVmMTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2VmbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2VmbC5weQpAQCAtNTIsNiArNTIsMTIgQEAgY2xhc3MgRWZsUG9ydChXZWJLaXRQb3J0LCBQ
dWxzZUF1ZGlvU2FuaXRpemVyKToKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAg
ICAgIHNlbGYuX3VubG9hZF9wdWxzZWF1ZGlvX21vZHVsZSgpCiAKKyAgICBkZWYgc2V0dXBfZW52
aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgorICAgICAgICBlbnYgPSBz
dXBlcihFZmxQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25hbWUp
CisgICAgICAgIGVudlsnVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FJ10gPSBz
ZWxmLl9idWlsZF9wYXRoKCdsaWInLCAnbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLnNvJykK
KyAgICAgICAgZW52WydURVNUX1JVTk5FUl9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0
aCgnbGliJykKKyAgICAgICAgcmV0dXJuIGVudgorCiAgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVu
KHNlbGYpOgogICAgICAgICBzZWxmLl9yZXN0b3JlX3B1bHNlYXVkaW9fbW9kdWxlKCkKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNjMDUwMTUwMzQ3OWU1
ZTJlMmFjYjljOTVkZTNiODQ2MzJlNzI1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw4NyBAQAorU0VUKFdFQktJVF9U
RVNUUlVOTkVSX0RJUiAiJHtUT09MU19ESVJ9L1dlYktpdFRlc3RSdW5uZXIiKQorU0VUKFdFQktJ
VF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUiAiJHtUT09MU19ESVJ9L1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUiKQorCitGSUxFKE1BS0VfRElSRUNUT1JZICR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRCdW5kbGUpCisKK1NFVChXZWJLaXRUZXN0UnVubmVyX1NPVVJD
RVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNw
cAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9QaXhlbER1bXBTdXBwb3J0LmNwcAorICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0Q29udHJvbGxlci5jcHAKKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0RJUn0vVGVzdEludm9jYXRpb24uY3BwCispCisKK1NFVChXZWJLaXRUZXN0
UnVubmVyX0xJQlJBUklFUworICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQorICAg
ICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFS
WV9OQU1FfQorICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CispCisKK1NFVChXZWJLaXRUZXN0
UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0K
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUKKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MKKyAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0KKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMK
KyAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0K
KyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcworICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL25ldHdvcmsKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0CisgICAg
JHtXRUJDT1JFX0RJUn0vdGVzdGluZy9qcworICAgICR7V0VCS0lUMl9ESVJ9L1NoYXJlZAorICAg
ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYworICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cworICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwKKyAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cAorICAgICR7V1RGX0RJUn0KKyAgICAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vaW5jbHVkZQorICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJ
VDJfRElSfS9pbmNsdWRlCisgICAgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZEJ1bmRs
ZQorICAgICR7Q01BS0VfQklOQVJZX0RJUn0KKyAgICAke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJj
ZQorICAgICR7TElCU09VUDI0X0lOQ0xVREVfRElSU30KKykKKworU0VUKFdlYktpdFRlc3RSdW5u
ZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKyAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vR0NDb250cm9sbGVyLmNwcAor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9JbmplY3RlZEJ1bmRs
ZS5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vSW5qZWN0
ZWRCdW5kbGVNYWluLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVf
RElSfS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpF
Q1RFREJVTkRMRV9ESVJ9L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L0JpbmRpbmdzL0pTV3Jh
cHBlci5jcHAKKykKKworRklMRShHTE9CIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9J
RExfRklMRVMgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5kaW5n
cy8qLmlkbCIpCisKK0dFTkVSQVRFX0JJTkRJTkdTKFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZV9TT1VSQ0VTCisgICAgIiR7V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX0lETF9G
SUxFU30iCisgICAgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9CaW5k
aW5ncyIKKyAgICAiLS1pbmNsdWRlPSR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVf
RElSfS9CaW5kaW5ncyIKKyAgICAiIgorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0
ZWRCdW5kbGUgSlMgVGVzdFJ1bm5lcgorICAgICkKKworSU5DTFVERV9JRl9FWElTVFMoJHtXRUJL
SVRfVEVTVFJVTk5FUl9ESVJ9L1BsYXRmb3JtJHtQT1JUfS5jbWFrZSkKKworSU5DTFVERV9ESVJF
Q1RPUklFUygke1dlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKK0FERF9M
SUJSQVJZKFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtXZWJLaXRUZXN0UnVubmVy
SW5qZWN0ZWRCdW5kbGVfU09VUkNFU30pCitUQVJHRVRfTElOS19MSUJSQVJJRVMoVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlICR7V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVN9KQorCitBRERfRVhF
Q1VUQUJMRShXZWJLaXRUZXN0UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTfSkKK1RB
UkdFVF9MSU5LX0xJQlJBUklFUyhXZWJLaXRUZXN0UnVubmVyICR7V2ViS2l0VGVzdFJ1bm5lcl9M
SUJSQVJJRVN9KQorCitJRiAoV2ViS2l0VGVzdFJ1bm5lcl9MSU5LX0ZMQUdTKQorICAgIEFERF9U
QVJHRVRfUFJPUEVSVElFUyhXZWJLaXRUZXN0UnVubmVyIExJTktfRkxBR1MgJHtXZWJLaXRUZXN0
UnVubmVyX0xJTktfRkxBR1N9KQorRU5ESUYgKCkKKworQUREX0RFUEVOREVOQ0lFUygke1dlYktp
dDJfTElCUkFSWV9OQU1FfSAke0ZvcndhcmRpbmdIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9O
QU1FfSkKK0FERF9ERVBFTkRFTkNJRVMoJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0gJHtGb3J3YXJk
aW5nTmV0d29ya0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVubmVyX05BTUV9KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCmluZGV4IDZhZWRhY2M0MzVjMjc4ODhhNWYwOWZhMjgyM2E2ZTNlZmE0M2YzYjUu
LjMzODc3MDk4ODliYmE3OTkyM2Y1ODRiMTE2ZTljODcwYjNjZTRjMTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDkgQEAgdHlwZWRlZiBVSU5UX1BUUiBQbGF0Zm9ybVRp
bWVyUmVmOwogdHlwZWRlZiBRVGltZXIgUGxhdGZvcm1UaW1lclJlZjsKICNlbGlmIFBMQVRGT1JN
KEdUSykKIHR5cGVkZWYgdW5zaWduZWQgaW50IFBsYXRmb3JtVGltZXJSZWY7CisjZWxpZiBQTEFU
Rk9STShFRkwpCit0eXBlZGVmIHN0cnVjdCBfRWNvcmVfVGltZXIgRWNvcmVfVGltZXI7Cit0eXBl
ZGVmIEVjb3JlX1RpbWVyKiBQbGF0Zm9ybVRpbWVyUmVmOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
VFIgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9l
ZmwvQWN0aXZhdGVGb250c0VmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Nzg1Zjc3OTliNzA0
OWIxNDRjM2NiOTdjNWVmOTlmMzUzNDkzYTJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvQWN0aXZhdGVGb250c0VmbC5jcHAKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKKyNp
bmNsdWRlICJGb250TWFuYWdlbWVudC5oIgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3Rp
dmF0ZUZvbnRzKCkKK3sKKyAgICBhZGRGb250c1RvRW52aXJvbm1lbnQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYx
ZDA0M2Y3ZWVmOTVmMGUzNmYxOTg1ZTExMWY3ZDNlNDAyOWYxOAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxl
RWZsLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFj
ZSBXVFIgeworCit2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBl
UmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9lZmwvTGF5
b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYjZm
ODQ0YTI2NzUwZmUwNWRiMzQ5YmZlMDk3Yzg0OGZkOTAyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2VmbC9MYXlvdXRUZXN0Q29udHJv
bGxlckVmbC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRU
ZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRl
IDxFY29yZS5oPgorCituYW1lc3BhY2UgV1RSIHsKKworc3RhdGljIEVpbmFfQm9vbCB3YWl0VG9E
dW1wV2F0Y2hkb2dUaW1lckNhbGxiYWNrKHZvaWQqKQoreworICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT53YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZp
cmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIg
PSAwOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjppbnZhbGlkYXRlV2FpdFRvRHVt
cFdhdGNoZG9nVGltZXIoKQoreworICAgIGlmICghbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgZWNvcmVfdGltZXJfZGVsKG1fd2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXIpOworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSAwOworfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBlY29yZV90aW1lcl9s
b29wX2FkZCh3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lckNhbGxiYWNrLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRl
c3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5nUmVmIHVybCkKK3sKKyAg
ICByZXR1cm4gdXJsOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImVmbCIp
KTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0OTY0Y2M4
YWU4N2NmMjIxMzViYjQ0N2JlMDg4ZGM2ZWYzZTBhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsNTggQEAKK0xJ
U1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElOS19GTEFHUworICAgICR7RUNPUkVfWF9MREZM
QUdTfQorICAgICR7RURKRV9MREZMQUdTfQorICAgICR7RUZMREVQU19MREZMQUdTfQorICAgICR7
RVZBU19MREZMQUdTfQorICAgICR7TElCU09VUDI0X0xERkxBR1N9CispCisKK0FERF9DVVNUT01f
VEFSR0VUKGZvcndhcmRpbmctaGVhZGVyc0VmbEZvcldlYktpdFRlc3RSdW5uZXIKKyAgICBDT01N
QU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVDJfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWZv
cndhcmRpbmctaGVhZGVycy5wbCAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0gJHtERVJJVkVEX1NP
VVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgZWZsCispCitTRVQoRm9yd2FyZGluZ0hlYWRlcnNG
b3JXZWJLaXRUZXN0UnVubmVyX05BTUUgZm9yd2FyZGluZy1oZWFkZXJzRWZsRm9yV2ViS2l0VGVz
dFJ1bm5lcikKKworQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldl
YktpdFRlc3RSdW5uZXIKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVDJf
RElSfS9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgc291cAor
KQorU0VUKEZvcndhcmRpbmdOZXR3b3JrSGVhZGVyc0ZvcldlYktpdFRlc3RSdW5uZXJfTkFNRSBm
b3J3YXJkaW5nLWhlYWRlcnNTb3VwRm9yV2ViS2l0VGVzdFJ1bm5lcikKKworTElTVChBUFBFTkQg
V2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2Nh
aXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCisKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0vZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0vZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElS
fS9lZmwvbWFpbi5jcHAKKykKKworTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURF
X0RJUkVDVE9SSUVTCisgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2VmbC8KKyAgICAi
JHtXVEZfRElSfS93dGYvZ29iamVjdCIKKworICAgICR7Q0FJUk9fSU5DTFVERV9ESVJTfQorICAg
ICR7RUNPUkVfWF9JTkNMVURFX0RJUlN9CisgICAgJHtFRkxERVBTX0lOQ0xVREVfRElSU30KKyAg
ICAke0VWQVNfSU5DTFVERV9ESVJTfQorICAgICR7R2xpYl9JTkNMVURFX0RJUlN9CispCisKK0xJ
U1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisgICAgJHtDQUlST19MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9YX0xJQlJBUklFU30KKyAgICAke0VESkVfTElCUkFSSUVTfQorICAg
ICR7RUZMREVQU19MSUJSQVJJRVN9CisgICAgJHtHbGliX0xJQlJBUklFU30KKykKKworTElTVChB
UFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1RPT0xT
X0RJUn0vRHVtcFJlbmRlclRyZWUvZWZsL0ZvbnRNYW5hZ2VtZW50LmNwcAorCisgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2VmbC9BY3RpdmF0ZUZvbnRzRWZsLmNw
cAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9lZmwvSW5qZWN0
ZWRCdW5kbGVFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9E
SVJ9L2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKKykKKworIyBGSVhNRTogRE9XTkxP
QURFRF9GT05UU19ESVIgc2hvdWxkIG5vdCBoYXJkY29kZSB0aGUgZGlyZWN0b3J5CisjIHN0cnVj
dHVyZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NzU+
LgorQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVu
ZGVyVHJlZS9ndGsvZm9udHMiCisgICAgICAgICAgICAgICAgLURET1dOTE9BREVEX0ZPTlRTX0RJ
Uj0iJHtDTUFLRV9TT1VSQ0VfRElSfS9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvU291cmNlL3dl
YmtpdGd0ay10ZXN0LWZvbnRzLTAuMC4zIgorICAgICAgICAgICAgICAgIC1EREFUQV9ESVI9IiR7
VEhFTUVfQklOQVJZX0RJUn0iKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKaW5kZXggMGU4YzZiNWIyNDBjYTBhN2NmNjg3ZTA1MmM2OWVmZDQwMWQ5ZTAxYy4uYThjZjBk
NjZjODMwMjhiMmQ3MzdkMWRhODA4YWVmMGFjOGI4Njg0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC01MSw2ICs1MSwxMSBAQCB0eXBlZGVmIEhXTkQgUGxh
dGZvcm1XaW5kb3c7CiB0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIHR5cGVk
ZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBHdGtXaWRnZXQqIFBsYXRmb3Jt
V2luZG93OworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0
IEV2YXNfT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0V2YXMgRWNvcmVfRXZhczsKK3R5
cGVkZWYgRXZhc19PYmplY3QqIFBsYXRmb3JtV0tWaWV3OwordHlwZWRlZiBFY29yZV9FdmFzKiBQ
bGF0Zm9ybVdpbmRvdzsKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RSIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZmQ2ODg1NzkzYTY3ZjZjMjI2YTQ2MzNl
YTljMmExMGUxOGNjMzhiZC4uODYyNTgwOGMxZTA3Mjk3YmM1YmI2YjVkMDZhYWFhNDc3ODIwNDEx
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVByaXZhdGVNYWMuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKQogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb25maWcuaAppbmRleCAyM2EzYWQ3YjAzNTYzYjRiNjZmMTk5NzAwMWRiYTQxMTRlOWY5
ZTU3Li4xMTU3N2NkNjBjYjI5NDY0YmRhNjE4MGRiZDIxNGZjYWIxNDRmZmQxIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29uZmlnLmgKQEAgLTI1LDEyICsyNSwxOCBAQAogI2lmbmRlZiBXZWJLaXRUZXN0UnVu
bmVyX2NvbmZpZ19oCiAjZGVmaW5lIFdlYktpdFRlc3RSdW5uZXJfY29uZmlnX2gKIAorI2lmIGRl
ZmluZWQgKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNl
bmRpZgorCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL0V4cG9ydE1h
Y3Jvcy5oPgogI2lmIFVTRShKU0MpCiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5o
PgogI2VuZGlmCiAKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKwogI2lmIFBMQVRGT1JN
KFdJTikKICNkZWZpbmUgV1RGX1VTRV9DRiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjE3ODIwZDkxZjQ4MzhmMjBkNjE2YmE2ZjBkZWIwY2I1M2U1NTYwNAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0Vm
bC5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCisKKyNpbmNsdWRlICJXZWJLaXQyL1dLQVBJQ2FzdC5oIgorI2luY2x1ZGUgPEVjb3Jl
X0V2YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdUUiB7CisK
K3N0YXRpYyBib29sIHVzZVgxMVdpbmRvdyA9IGZhbHNlOworCitzdGF0aWMgRWNvcmVfRXZhcyog
aW5pdEVjb3JlRXZhcygpCit7CisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gdXNlWDExV2lu
ZG93ID8gZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgODAwLCA2MDAsIDApIDogZWNvcmVfZXZhc19i
dWZmZXJfbmV3KDgwMCwgNjAwKTsKKyAgICBpZiAoIWVjb3JlRXZhcykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBlY29yZV9ldmFzX3RpdGxlX3NldChlY29yZUV2YXMsICJFRkwgV2ViS2l0VGVz
dFJ1bm5lciIpOworICAgIGVjb3JlX2V2YXNfc2hvdyhlY29yZUV2YXMpOworCisgICAgcmV0dXJu
IGVjb3JlRXZhczsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3dpbmRv
dyA9IGluaXRFY29yZUV2YXMoKTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV93
aW5kb3cpOworICAgIG1fdmlldyA9IHRvSW1wbChXS1ZpZXdDcmVhdGUoZXZhcywgY29udGV4dCwg
cGFnZUdyb3VwKSk7CisgICAgbV93aW5kb3dJc0tleSA9IGZhbHNlOworfQorCitQbGF0Zm9ybVdl
YlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQoreworICAgIGV2YXNfb2JqZWN0X2RlbChtX3ZpZXcp
OworICAgIGVjb3JlX2V2YXNfZnJlZShtX3dpbmRvdyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIGV2
YXNfb2JqZWN0X3Jlc2l6ZShtX3ZpZXcsIHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYg
UGxhdGZvcm1XZWJWaWV3OjpwYWdlKCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0UGFnZSh0b0FQ
SShtX3ZpZXcpKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK3sKK30KKwor
V0tSZWN0IFBsYXRmb3JtV2ViVmlldzo6d2luZG93RnJhbWUoKQoreworICAgIHJldHVybiBXS1Jl
Y3RNYWtlKDAsIDAsIDAsIDApOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93
RnJhbWUoV0tSZWN0IGZyYW1lKQoreworICAgIGV2YXNfb2JqZWN0X21vdmUobV92aWV3LCBmcmFt
ZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnkpOworICAgIHJlc2l6ZVRvKGZyYW1lLnNpemUud2lk
dGgsIGZyYW1lLnNpemUuaGVpZ2h0KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmFkZENo
cm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hy
b21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmll
d0ZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKworV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZv
cm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRvIGNhcHR1cmUgcGl4ZWxzIGluIHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHdoaWNoIG1h
eSBiZSBuZWNlc3NhcnkgdG8gY2FwdHVyZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgorICAg
IHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzk3Njdk
ODY0ZTYyM2I5OGQxN2RkZDg0ODM1Y2MwMzkwZDU0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTAsMCArMSw5
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8
RWNvcmUuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV1RSIHsKKworc3RhdGljIEVjb3JlX1RpbWVyKiB0aW1lciA9IDA7CisKK3N0YXRp
YyBFaW5hX0Jvb2wgdGltZXJGaXJlZCh2b2lkKikKK3sKKyAgICB0aW1lciA9IDA7CisgICAgZWNv
cmVfbWFpbl9sb29wX3F1aXQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKK3sKKyAgICBpZiAoIXRpbWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBlY29yZV90aW1lcl9kZWwodGltZXIpOworICAgIHRp
bWVyID0gMDsKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmLCBkb3VibGUgdGltZW91dCkKK3sKKyAgICB0aW1lciA9
IGVjb3JlX3RpbWVyX2xvb3BfYWRkKHRpbWVvdXQsIHRpbWVyRmlyZWQsIDApOworICAgIGVjb3Jl
X21haW5fbG9vcF9iZWdpbigpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogZ2V0RW52aXJvbm1l
bnRWYXJpYWJsZU9yRXhpdChjb25zdCBjaGFyKiB2YXJpYWJsZU5hbWUpCit7CisgICAgY29uc3Qg
Y2hhciogdmFsdWUgPSBnZXRlbnYodmFyaWFibGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlKSB7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IGZvdW5k
XG4iLCB2YXJpYWJsZU5hbWUpOworICAgICAgICBleGl0KDApOworICAgIH0KKyAgICByZXR1cm4g
dmFsdWU7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRs
ZVBhdGgoKQoreworICAgIGNvbnN0IGNoYXIqIGJ1bmRsZVBhdGggPSBnZXRFbnZpcm9ubWVudFZh
cmlhYmxlT3JFeGl0KCJURVNUX1JVTk5FUl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUiKTsKKyAg
ICBtX2luamVjdGVkQnVuZGxlUGF0aCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1
bmRsZVBhdGgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdp
bkRpcmVjdG9yeSgpCit7CisgICAgY29uc3QgY2hhciogcGx1Z2luUGF0aCA9IGdldEVudmlyb25t
ZW50VmFyaWFibGVPckV4aXQoIlRFU1RfUlVOTkVSX1BMVUdJTl9QQVRIIik7CisgICAgbV90ZXN0
UGx1Z2luRGlyZWN0b3J5ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGx1Z2luUGF0
aCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQo
KQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcq
KQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01v
ZGFsRGlhbG9nLgorfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJy
YXJ5UGF0aEZvclRlc3RpbmcoKQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlMGFmMjg2
ZGE0OTg3ZDEzMzI3NmNmYzhiZTdlNDg5ZmY1ZDM3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZWZsL21haW4uY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2lmZGVmIEhBVkVfRUNPUkVfWAorI2luY2x1
ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
Cit7CisgICAgZ190eXBlX2luaXQoKTsKKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpCisg
ICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFlZGplX2luaXQoKSkgeworICAgICAgICBlY29y
ZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworI2lmZGVmIEhB
VkVfRUNPUkVfWAorICAgIGlmICghZWNvcmVfeF9pbml0KDApKSB7CisgICAgICAgIGVjb3JlX2V2
YXNfc2h1dGRvd24oKTsKKyAgICAgICAgZWRqZV9zaHV0ZG93bigpOworICAgICAgICByZXR1cm4g
MTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIFByZWZlciB0aGUgbm90IGluc3RhbGxlZCB3ZWIg
YW5kIHBsdWdpbiBwcm9jZXNzZXMuCisgICAgV1RSOjpUZXN0Q29udHJvbGxlciBjb250cm9sbGVy
KGFyZ2MsIGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihhcmd2KSk7CisKKyNpZmRlZiBIQVZFX0VD
T1JFX1gKKyAgICBlY29yZV94X3NodXRkb3duKCk7CisjZW5kaWYKKworICAgIGVkamVfc2h1dGRv
d24oKTsKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisKKyAgICByZXR1cm4gMDsKK30KKwpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGVkM2RjYjJkNzlkYzMyYjM5
NDA5YjRkN2RhMzljZGMyNGFiODQ4MjIuLjI3Yzk4MGMxY2FhODJlNDAyMzAyMzU3ZWRjOTc2OTk5
M2RjYzA3N2YgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wNy0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1drMl1bRUZMXSBFRkwgbmVlZHMgYSBXZWJLaXRUZXN0UnVubmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICBTZXQgY29tcGlsZXIgZmxhZ3MgZm9yIFdlYkNvcmVUZXN0U3Vw
cG9ydCB0byBiZSBsaW5rZWQgaW50byBUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUKKyAgICAgICAg
c2hhcmVkIGxpYnJhcnkuCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFr
ZTogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlcGVuZGVuY3kuCisKIDIwMTItMDctMDQgIEpvaG4gTWVs
bG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFk
ZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0dGluZwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>