<?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>76270</bug_id>
          
          <creation_ts>2012-01-13 06:14:01 -0800</creation_ts>
          <short_desc>Implement offline web applications abort API</short_desc>
          <delta_ts>2015-02-08 11:11:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=87633</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="huangxueqing">huangxueqing</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>michaeln</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535627</commentid>
    <comment_count>0</comment_count>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-13 06:14:01 -0800</bug_when>
    <thetext>Implement offline web applications API(applicationCache.abort()&lt;http://dev.w3.org/html5/spec/Overview.html#application-cache-api&gt;).

The abort API was different from update and swapCache, it do nothing rather than throw an InvalidStateError exception while no such applicationCache or if does not have a current application cache download process. Thus the abort() defined in DOMApplicationCache.idl without |raises(DOMException)|.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535644</commentid>
    <comment_count>1</comment_count>
      <attachid>122424</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-13 06:40:59 -0800</bug_when>
    <thetext>Created attachment 122424
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535648</commentid>
    <comment_count>2</comment_count>
      <attachid>122424</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-13 06:52:44 -0800</bug_when>
    <thetext>Comment on attachment 122424
patch

Attachment 122424 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11236020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535650</commentid>
    <comment_count>3</comment_count>
      <attachid>122424</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-13 06:55:16 -0800</bug_when>
    <thetext>Comment on attachment 122424
patch

Attachment 122424 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11228569</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535652</commentid>
    <comment_count>4</comment_count>
      <attachid>122424</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-13 06:55:25 -0800</bug_when>
    <thetext>Comment on attachment 122424
patch

Attachment 122424 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11157593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535656</commentid>
    <comment_count>5</comment_count>
      <attachid>122424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 07:03:03 -0800</bug_when>
    <thetext>Comment on attachment 122424
patch

Attachment 122424 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11115962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535661</commentid>
    <comment_count>6</comment_count>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-13 07:11:40 -0800</bug_when>
    <thetext>Sorry, this was my first patch.
qt, gtk, efl compile error while call frame-&gt;domWindow()-&gt;console()-&gt;addMessage(...)
and chromium does not implement ApplicationCacheHost::abort().

What should i do something to fix this failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535706</commentid>
    <comment_count>7</comment_count>
      <attachid>122424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-13 08:38:04 -0800</bug_when>
    <thetext>Comment on attachment 122424
patch

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:475
&gt; +        frame-&gt;domWindow()-&gt;console()-&gt;addMessage(OtherMessageSource, LogMessageType, TipMessageLevel, &quot;Application Cache download process was aborted.&quot;, 0, String());

The reason the addMessage call is failing to compile is the changes from r104803 and the good news is that it’s easy for you to fix. Just remove the &quot;0, String()&quot; arguments from the end of this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535719</commentid>
    <comment_count>8</comment_count>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-13 09:02:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 122424 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122424&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:475
&gt; &gt; +        frame-&gt;domWindow()-&gt;console()-&gt;addMessage(OtherMessageSource, LogMessageType, TipMessageLevel, &quot;Application Cache download process was aborted.&quot;, 0, String());
&gt; 
&gt; The reason the addMessage call is failing to compile is the changes from r104803 and the good news is that it’s easy for you to fix. Just remove the &quot;0, String()&quot; arguments from the end of this line.

Thanks a lot. I will fix it at once. BTW, it&apos;s my fatal fault, I didn&apos;t to run  ./update-webkit before ./svn-create-patch since it a burden to update webkit from China, it normally take couple hours and connection was aborted many times :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535724</commentid>
    <comment_count>9</comment_count>
      <attachid>122437</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-13 09:06:49 -0800</bug_when>
    <thetext>Created attachment 122437
patch to fix compile error

patch to fix compile error(GTK QT EFL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535744</commentid>
    <comment_count>10</comment_count>
      <attachid>122437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 09:51:17 -0800</bug_when>
    <thetext>Comment on attachment 122437
patch to fix compile error

Attachment 122437 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11152610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535786</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-13 10:45:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/9617710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535828</commentid>
    <comment_count>12</comment_count>
      <attachid>122437</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-13 11:19:05 -0800</bug_when>
    <thetext>Comment on attachment 122437
patch to fix compile error

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

We need more tests for this feature. Anything that didn&apos;t work at first in your implementation, or anything that you suspect a future careless refactoring could potentially break should be tested.

Don&apos;t be shy to add multiple test files if needed - this often works better than cramming multiple tests into one HTML file.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:465
&gt; +    if (m_updateStatus == Checking || m_updateStatus == Downloading) {

In WebKit code, we prefer early return to nesting code. So, just write 

if (m_updateStatus == Idle)
    return;
ASSERT(m_updateStatus == Checking || (m_updateStatus == Downloading &amp;&amp; m_cacheBeingUpdated));

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:470
&gt; +        // It hasn&apos;t necessary abort download process if 
&gt; +        // m_completionType was Failure or Completed or NoUpdate 
&gt; +        // since the process was completed except reset state.
&gt; +        if (m_completionType != None)
&gt; +            return;

When does this code work? Is it for calling abort() from within an error or cached event handler? But I would expect that to be caught by m_updateStatus check above.

Please verify that this code is really needed, and add a regression test that would have failed if not for it.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:472
&gt; +        stopLoading();

The spec just says that we should run cache failure steps, which translates to calling cacheUpdateFailed(). Is there a reason why that doesn&apos;t work?

I&apos;m very concerned about adding another copy of cleanup code - historically, it&apos;s been extremely fragile and difficult to maintain.

We need a regression test showing that a previous version of appcache is still fully alive and functioning after an abort().

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:80
&gt; +    void abort(Frame*);

What&apos;s the expected behavior if frame argument is different from m_frame?

&gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:468
&gt; +    if ((status() == UNCACHED)
&gt; +        || (status() == OBSOLETE)
&gt; +        || (status() == UPDATEREADY)
&gt; +        || (status() == IDLE))
&gt; +        return;

We already have a similar check in ApplicationCacheGroup. Why is it repeated here?

&gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:471
&gt; +    ApplicationCache* cache = applicationCache();
&gt; +    cache-&gt;group()-&gt;abort(m_documentLoader-&gt;frame());

A comment in ApplicationCacheHost.h says that this is &quot;The application cache that the document loader is associated with (if any)&quot;. But a document loader isn&apos;t associated with a cache until it&apos;s fully downloaded. So how can we stop an initial download with this code? I&apos;m confused.

Shouldn&apos;t we be using m_candidateApplicationCacheGroup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535833</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-13 11:20:44 -0800</bug_when>
    <thetext>Oh, and Chromium implementation of application cache is separate. You should make sure that Chromium build doesn&apos;t break, but implementing the feature for Chromium is out of scope for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535925</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-01-13 13:01:23 -0800</bug_when>
    <thetext>As for the chromium port, please make it compile with a noop abort() method and skip any new tests that rely on this method.

To make it compile, add something like the following to WebKit\chromium\src\ApplicationCacheHost.cpp

void ApplicationCacheHost::abort()
{
    // FIXME: See https://bugs.webkit.org/show_bug.cgi?id=76270
}

To skip tests, add lines to WebKit\LayoutTests\platform\chromium\test_expectations.txt that looks like...

BUGWK76270 SKIP : http/tests/appcache/&lt;each-newly-added-tests&gt; = FAIL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536159</commentid>
    <comment_count>15</comment_count>
      <attachid>122540</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:19:03 -0800</bug_when>
    <thetext>Created attachment 122540
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536160</commentid>
    <comment_count>16</comment_count>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:19:57 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 122437 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122437&amp;action=review
&gt; 
&gt; We need more tests for this feature. Anything that didn&apos;t work at first in your implementation, or anything that you suspect a future careless refactoring could potentially break should be tested.
&gt; 
&gt; Don&apos;t be shy to add multiple test files if needed - this often works better than cramming multiple tests into one HTML file.
&gt; 
Done

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:465
&gt; &gt; +    if (m_updateStatus == Checking || m_updateStatus == Downloading) {
&gt; 
&gt; In WebKit code, we prefer early return to nesting code. So, just write 
&gt; 
&gt; if (m_updateStatus == Idle)
&gt;     return;
&gt; ASSERT(m_updateStatus == Checking || (m_updateStatus == Downloading &amp;&amp; m_cacheBeingUpdated));
&gt; 
Done

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:470
&gt; &gt; +        // It hasn&apos;t necessary abort download process if 
&gt; &gt; +        // m_completionType was Failure or Completed or NoUpdate 
&gt; &gt; +        // since the process was completed except reset state.
&gt; &gt; +        if (m_completionType != None)
&gt; &gt; +            return;
&gt; 
&gt; When does this code work? Is it for calling abort() from within an error or cached event handler? But I would expect that to be caught by m_updateStatus check above.
&gt; 
&gt; Please verify that this code is really needed, and add a regression test that would have failed if not for it.
&gt; 
This condition used to this scenario: abort() was called when ApplicationCacheGroup::deliverDelayedMainResources was running(now m_updateStatus was Downloading), and if we call cacheUpdateFailed() in abort(), deliverDelayedMainResources() maybe run twice and will fire ERROR_EVENT twice. I could not find a proper event to test this scene, but i think should prevent it.

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:472
&gt; &gt; +        stopLoading();
&gt; 
&gt; The spec just says that we should run cache failure steps, which translates to calling cacheUpdateFailed(). Is there a reason why that doesn&apos;t work?
&gt; 
&gt; I&apos;m very concerned about adding another copy of cleanup code - historically, it&apos;s been extremely fragile and difficult to maintain.
&gt; 
&gt; We need a regression test showing that a previous version of appcache is still fully alive and functioning after an abort().
&gt; 
As mentioned above, i want to prevent error or cached event was fired twice, but m_completeType is enough, cacheUpdateFailed() insteaded of this block code. 

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:80
&gt; &gt; +    void abort(Frame*);
&gt; 
&gt; What&apos;s the expected behavior if frame argument is different from m_frame?
&gt; 
Actually, the html5 not specify this behavior, i thought maybe we can call m_frame-&gt;domWindow()-&gt;console()-&gt;addMessage(OtherMessageSource, LogMessageType, TipMessageLevel, &quot;Application Cache download process was aborted by other frame.&quot;); But i&apos;m not sure, i will be fine if you think this should be added.

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:468
&gt; &gt; +    if ((status() == UNCACHED)
&gt; &gt; +        || (status() == OBSOLETE)
&gt; &gt; +        || (status() == UPDATEREADY)
&gt; &gt; +        || (status() == IDLE))
&gt; &gt; +        return;
&gt; 
&gt; We already have a similar check in ApplicationCacheGroup. Why is it repeated here?
&gt; 
Done

&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:471
&gt; &gt; +    ApplicationCache* cache = applicationCache();
&gt; &gt; +    cache-&gt;group()-&gt;abort(m_documentLoader-&gt;frame());
&gt; 
&gt; A comment in ApplicationCacheHost.h says that this is &quot;The application cache that the document loader is associated with (if any)&quot;. But a document loader isn&apos;t associated with a cache until it&apos;s fully downloaded. So how can we stop an initial download with this code? I&apos;m confused.
&gt; 
&gt; Shouldn&apos;t we be using m_candidateApplicationCacheGroup?

This had some confusion, i reviewed these code carefully today. m_candidateApplicationCacheGroup was assigned a valid cacheGroup in ApplicationCacheGroup::selectCache. it was cleaned while manifest was parsed completely and m_cacheBeingUpdated was associated with host. And now ApplicationCacheHost::m_applicationCache was valid. Thus, we should using m_candidateApplicationCacheGroup from Checking to Downloading while m_applicationCache from Downloading to the last.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536161</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-14 04:20:56 -0800</bug_when>
    <thetext>Attachment 122540 did not pass style-queue:

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

Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:467:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:468:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536163</commentid>
    <comment_count>18</comment_count>
      <attachid>122541</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:31:42 -0800</bug_when>
    <thetext>Created attachment 122541
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536164</commentid>
    <comment_count>19</comment_count>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:32:17 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; As for the chromium port, please make it compile with a noop abort() method and skip any new tests that rely on this method.
&gt; 
&gt; To make it compile, add something like the following to WebKit\chromium\src\ApplicationCacheHost.cpp
&gt; 
&gt; void ApplicationCacheHost::abort()
&gt; {
&gt;     // FIXME: See https://bugs.webkit.org/show_bug.cgi?id=76270
&gt; }
&gt; 
&gt; To skip tests, add lines to WebKit\LayoutTests\platform\chromium\test_expectations.txt that looks like...
&gt; 
&gt; BUGWK76270 SKIP : http/tests/appcache/&lt;each-newly-added-tests&gt; = FAIL

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536165</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-14 04:34:25 -0800</bug_when>
    <thetext>Attachment 122541 did not pass style-queue:

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

Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:466:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:469:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:470:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536166</commentid>
    <comment_count>21</comment_count>
      <attachid>122542</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:43:14 -0800</bug_when>
    <thetext>Created attachment 122542
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536167</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-14 04:46:12 -0800</bug_when>
    <thetext>Attachment 122542 did not pass style-queue:

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

Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:467:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536168</commentid>
    <comment_count>23</comment_count>
      <attachid>122543</attachid>
    <who name="huangxueqing">huangxueqing</who>
    <bug_when>2012-01-14 04:54:07 -0800</bug_when>
    <thetext>Created attachment 122543
patch

Sorry, the script check-webkit-style can not run in my computer :(, I will fix it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536672</commentid>
    <comment_count>24</comment_count>
      <attachid>122543</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-16 11:04:46 -0800</bug_when>
    <thetext>Comment on attachment 122543
patch

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

r=me

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:80
&gt; +    void abort(Frame*);

I&apos;d just make this function not take any argument. That said, how we link update to a frame is so broken that it doesn&apos;t matter much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536715</commentid>
    <comment_count>25</comment_count>
      <attachid>122543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-16 12:51:03 -0800</bug_when>
    <thetext>Comment on attachment 122543
patch

Clearing flags on attachment: 122543

Committed r105085: &lt;http://trac.webkit.org/changeset/105085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536716</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-16 12:51:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122424</attachid>
            <date>2012-01-13 06:40:59 -0800</date>
            <delta_ts>2012-01-13 09:06:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>abort-cache.patch</filename>
            <type>text/plain</type>
            <size>9614</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAxLTEzICB4dWVxaW5n
IGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgYXBwbGljYXRp
b25DYWNoZS5hYm9ydCBBUEkgZm9yIFdlYkNvcmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodG1sL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNh
Y2hlLmh0bWwgCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBs
aWNhdGlvbkNhY2hlOjphYm9ydCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5pZGw6CisKIDIwMTItMDEtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogRml4aW5nIFdpbiBidWlsZGVycy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAxMDQ3ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYwLDYgKzQ2MCwzNiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1l
CiAgICAgbV9tYW5pZmVzdEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKG1fbWFuaWZlc3RV
UkwsIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5pZmVzdFJlc291cmNlKCkgOiAw
KTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBmcmFtZSkK
K3sKKyAgICBpZiAobV91cGRhdGVTdGF0dXMgPT0gQ2hlY2tpbmcgfHwgbV91cGRhdGVTdGF0dXMg
PT0gRG93bmxvYWRpbmcpIHsKKyAgICAgICAgLy8gSXQgaGFzbid0IG5lY2Vzc2FyeSBhYm9ydCBk
b3dubG9hZCBwcm9jZXNzIGlmIAorICAgICAgICAvLyBtX2NvbXBsZXRpb25UeXBlIHdhcyBGYWls
dXJlIG9yIENvbXBsZXRlZCBvciBOb1VwZGF0ZSAKKyAgICAgICAgLy8gc2luY2UgdGhlIHByb2Nl
c3Mgd2FzIGNvbXBsZXRlZCBleGNlcHQgcmVzZXQgc3RhdGUuCisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25UeXBlICE9IE5vbmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3RvcExv
YWRpbmcoKTsKKyAgICAgICAgbV9tYW5pZmVzdFJlc291cmNlID0gMDsKKyAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZFTlQsIG1fcGVuZGluZ01h
c3RlclJlc291cmNlTG9hZGVycyk7CisgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFRpcE1l
c3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0
ZWQuIiwgMCwgU3RyaW5nKCkpOworCisgICAgICAgIHNldFVwZGF0ZVN0YXR1cyhJZGxlKTsKKyAg
ICAgICAgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCA9IDA7
CisgICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKTsKKyAgICAgICAgbV9jYWxs
ZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplID0gZmFsc2U7CisKKyAgICAgICAgLy8gRGlzYXNzb2Np
YXRlIERvY3VtZW50TG9hZGVyIG1heWJlIGRlbGV0ZSBncm91cCwgdGh1cyAKKyAgICAgICAgLy8g
bWVtYmVyIHNob3VsZCBiZSBjbGVhbmVkIGJlZm9yZSB0aGlzIHRvIHByZXZlbnQgY3Jhc2guCisg
ICAgICAgIFZlY3RvcjxEb2N1bWVudExvYWRlcio+IGxvYWRlcnM7CisgICAgICAgIGNvcHlUb1Zl
Y3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMsIGxvYWRlcnMpOworICAgICAgICBz
aXplX3QgY291bnQgPSBsb2FkZXJzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgIT0gY291bnQ7ICsraSkKKyAgICAgICAgICAgIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVy
KGxvYWRlcnNbaV0pOworICAgIH0KK30KKwogUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiB1cmws
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpCiB7CiAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9u
IDEwNDc4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCB1cGRhdGUoRnJhbWUqLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uKTsg
Ly8gRklYTUU6IEZyYW1lIHNob3VsZCBub3QgYmUgbmVlZGVkIHdoZW4gdXBkYXRpbmcgd2l0aG91
dCBicm93c2luZyBjb250ZXh0LgogICAgIHZvaWQgY2FjaGVEZXN0cm95ZWQoQXBwbGljYXRpb25D
YWNoZSopOworICAgIAorICAgIHZvaWQgYWJvcnQoRnJhbWUqKTsKIAogICAgIGJvb2wgY2FjaGVJ
c0JlaW5nVXBkYXRlZChjb25zdCBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkgY29uc3QgeyByZXR1
cm4gY2FjaGUgPT0gbV9jYWNoZUJlaW5nVXBkYXRlZDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJ
KHJldmlzaW9uIDEwNDc4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksMTggQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3dhcENhY2hlKCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YWJvcnQoKQoreworICAgIGlmICgoc3Rh
dHVzKCkgPT0gVU5DQUNIRUQpCisgICAgICAgIHx8IChzdGF0dXMoKSA9PSBPQlNPTEVURSkKKyAg
ICAgICAgfHwgKHN0YXR1cygpID09IFVQREFURVJFQURZKQorICAgICAgICB8fCAoc3RhdHVzKCkg
PT0gSURMRSkpCisgICAgICAgIHJldHVybjsKKworICAgIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hl
ID0gYXBwbGljYXRpb25DYWNoZSgpOworICAgIGNhY2hlLT5ncm91cCgpLT5hYm9ydChtX2RvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpKTsKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIt
PmZyYW1lKCktPnNldHRpbmdzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiAxMDQ3ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgU3RhdHVzIHN0YXR1cygpIGNvbnN0OyAgCiAgICAgICAgIGJvb2wgdXBkYXRlKCk7CiAg
ICAgICAgIGJvb2wgc3dhcENhY2hlKCk7CisgICAgICAgIHZvaWQgYWJvcnQoKTsKIAogICAgICAg
ICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSopOwogICAg
ICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCwgaW50IHByb2dyZXNz
VG90YWwsIGludCBwcm9ncmVzc0RvbmUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMTA0
NzgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBAQCB2b2lkIERPTUFwcGxpY2F0
aW9uQ2FjaGU6OnN3YXBDYWNoZShFeGNlCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiB9CiAKK3ZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6YWJvcnQoKQoreworICAgIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpOworICAgIGlm
IChjYWNoZUhvc3QpCisgICAgICAgIGNhY2hlSG9zdC0+YWJvcnQoKTsKK30KKwogY29uc3QgQXRv
bWljU3RyaW5nJiBET01BcHBsaWNhdGlvbkNhY2hlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRPTUFwcGxpY2F0aW9uQ2FjaGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDEwNDc4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1cygpIGNvbnN0OwogICAg
IHZvaWQgdXBkYXRlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN3YXBDYWNoZShFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbAog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNo
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaWRsCShyZXZpc2lvbiAxMDQ3ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIG9mZmxpbmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc3dhcENhY2hlKCkKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGFib3J0KCk7CiAKICAgICAgICAgLy8gZXZlbnRz
CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hlY2tpbmc7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDQ5MjcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xMyAgeHVlcWluZyBodWFuZyAgPGh1YW5neHVlcWlu
Z0BiYWlkdS5jb20+CisKKyAgICAgICAgQWRkIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQgQVBJIGZv
ciBXZWJDb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzYyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLm1hbmlm
ZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9y
dC1jYWNoZS50ZXh0OiBBZGRlZC4KKwogMjAxMi0wMS0xMyAgSm9jaGVuIEVpc2luZ2VyICA8am9j
aGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPbmNlIHdlJ3ZlIHByZXBhcmVkIHNjcmlwdCBl
bGVtZW50IGZvciBleGVjdXRpb24sIGV4ZWN1dGUgaXQsIGV2ZW4gaWYgdGhlIHNjcmlwdCBlbGVt
ZW50IHdhcyBtZWFud2hpbGUgcmVtb3ZlZCBmcm9tIHRoZSBkb20gdHJlZS4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nl
c3Mgd2FzIGFib3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJv
cnRlZCBhZnRlciBkb3dubG9hZGluZyBldmVudC4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOSBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNo
ZS5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nRmFpbCgpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkZBSUxVUkUi
OworfQorCithcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRlcmVhZHkgPSBsb2dGYWlsOworYXBwbGlj
YXRpb25DYWNoZS5vbm5vdXBkYXRlID0gbG9nRmFpbDsKKworZnVuY3Rpb24gYWJvcnQoKSB7Cisg
ICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCithcHBsaWNhdGlvbkNhY2hlLm9uZG93bmxvYWRpbmcgPSBhYm9ydDsKKworPC9zY3JpcHQ+
CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0
ZXIgZG93bmxvYWRpbmcgZXZlbnQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9o
dG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS5tYW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLm1h
bmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NBQ0hFIE1BTklGRVNUCithYm9y
dC1jYWNoZS50ZXh0CisgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9hYm9ydC1jYWNoZS50ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLnRleHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS50
ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACit0ZXN0IGZvciBhcHBsaWNhdGlvbkNhY2hl
LmFib3J0KCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgo=
</data>
<flag name="commit-queue"
          id="123205"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122437</attachid>
            <date>2012-01-13 09:06:49 -0800</date>
            <delta_ts>2012-01-14 04:19:03 -0800</delta_ts>
            <desc>patch to fix compile error</desc>
            <filename>abort (1).patch</filename>
            <type>text/plain</type>
            <size>8524</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAxMDQ5NDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYwLDYgKzQ2MCwzNiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRl
KEZyYW1lCiAgICAgbV9tYW5pZmVzdEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKG1fbWFu
aWZlc3RVUkwsIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5pZmVzdFJlc291cmNl
KCkgOiAwKTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBm
cmFtZSkKK3sKKyAgICBpZiAobV91cGRhdGVTdGF0dXMgPT0gQ2hlY2tpbmcgfHwgbV91cGRhdGVT
dGF0dXMgPT0gRG93bmxvYWRpbmcpIHsKKyAgICAgICAgLy8gSXQgaGFzbid0IG5lY2Vzc2FyeSBh
Ym9ydCBkb3dubG9hZCBwcm9jZXNzIGlmIAorICAgICAgICAvLyBtX2NvbXBsZXRpb25UeXBlIHdh
cyBGYWlsdXJlIG9yIENvbXBsZXRlZCBvciBOb1VwZGF0ZSAKKyAgICAgICAgLy8gc2luY2UgdGhl
IHByb2Nlc3Mgd2FzIGNvbXBsZXRlZCBleGNlcHQgcmVzZXQgc3RhdGUuCisgICAgICAgIGlmICht
X2NvbXBsZXRpb25UeXBlICE9IE5vbmUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
c3RvcExvYWRpbmcoKTsKKyAgICAgICAgbV9tYW5pZmVzdFJlc291cmNlID0gMDsKKyAgICAgICAg
cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZFTlQsIG1fcGVu
ZGluZ01hc3RlclJlc291cmNlTG9hZGVycyk7CisgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IFRpcE1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2Fz
IGFib3J0ZWQuIik7CisKKyAgICAgICAgc2V0VXBkYXRlU3RhdHVzKElkbGUpOworICAgICAgICBt
X2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50ID0gMDsKKyAgICAg
ICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhID0gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnVua25vd25RdW90YSgpOworICAgICAgICBtX2NhbGxlZFJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUgPSBmYWxzZTsKKworICAgICAgICAvLyBEaXNhc3NvY2lhdGUgRG9j
dW1lbnRMb2FkZXIgbWF5YmUgZGVsZXRlIGdyb3VwLCB0aHVzIAorICAgICAgICAvLyBtZW1iZXIg
c2hvdWxkIGJlIGNsZWFuZWQgYmVmb3JlIHRoaXMgdG8gcHJldmVudCBjcmFzaC4KKyAgICAgICAg
VmVjdG9yPERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsKKyAgICAgICAgY29weVRvVmVjdG9yKG1f
cGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycywgbG9hZGVycyk7CisgICAgICAgIHNpemVfdCBj
b3VudCA9IGxvYWRlcnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBj
b3VudDsgKytpKQorICAgICAgICAgICAgZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIobG9hZGVy
c1tpXSk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkocmV2aXNpb24gMTA0Nzgy
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHVwZGF0ZShGcmFtZSosIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24pOyAvLyBGSVhN
RTogRnJhbWUgc2hvdWxkIG5vdCBiZSBuZWVkZWQgd2hlbiB1cGRhdGluZyB3aXRob3V0IGJyb3dz
aW5nIGNvbnRleHQuCiAgICAgdm9pZCBjYWNoZURlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlKik7
CisgICAgCisgICAgdm9pZCBhYm9ydChGcmFtZSopOwogCiAgICAgYm9vbCBjYWNoZUlzQmVpbmdV
cGRhdGVkKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKSBjb25zdCB7IHJldHVybiBjYWNo
ZSA9PSBtX2NhY2hlQmVpbmdVcGRhdGVkOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNp
b24gMTA0NzgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSwxOCBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0Ojpzd2FwQ2FjaGUoKQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCit7CisgICAgaWYgKChzdGF0dXMoKSA9
PSBVTkNBQ0hFRCkKKyAgICAgICAgfHwgKHN0YXR1cygpID09IE9CU09MRVRFKQorICAgICAgICB8
fCAoc3RhdHVzKCkgPT0gVVBEQVRFUkVBRFkpCisgICAgICAgIHx8IChzdGF0dXMoKSA9PSBJRExF
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSBhcHBs
aWNhdGlvbkNhY2hlKCk7CisgICAgY2FjaGUtPmdyb3VwKCktPmFib3J0KG1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCkpOworfQorCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKCkKIHsKICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUo
KS0+c2V0dGluZ3MoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlzaW9uIDEwNDc4MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBT
dGF0dXMgc3RhdHVzKCkgY29uc3Q7ICAKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAg
Ym9vbCBzd2FwQ2FjaGUoKTsKKyAgICAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgICAgIHZvaWQg
c2V0RE9NQXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKik7CiAgICAgICAgIHZv
aWQgbm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAxMDQ3ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIHZvaWQgRE9NQXBwbGljYXRpb25DYWNo
ZTo6c3dhcENhY2hlKEV4Y2UKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKIH0KIAor
dm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjphYm9ydCgpCit7CisgICAgQXBwbGljYXRpb25DYWNo
ZUhvc3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CisgICAgaWYgKGNhY2hl
SG9zdCkKKyAgICAgICAgY2FjaGVIb3N0LT5hYm9ydCgpOworfQorCiBjb25zdCBBdG9taWNTdHJp
bmcmIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRE9NQXBwbGljYXRpb25DYWNoZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuaAkocmV2aXNpb24gMTA0NzgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzKCkgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc3dhcENhY2hlKEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIGFib3J0KCk7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbXBsCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGwJKHJldmlzaW9uIDEwNDc4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQCBtb2R1bGUgb2ZmbGluZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgdm9pZCBzd2FwQ2FjaGUoKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgYWJvcnQoKTsKIAogICAgICAgICAvLyBldmVudHMKICAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGVja2luZzsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwNDkyNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTAxLTEzICB4dWVxaW5nIGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1
LmNvbT4KKworICAgICAgICBBZGQgYXBwbGljYXRpb25DYWNoZS5hYm9ydCBBUEkgZm9yIFdlYkNv
cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUubWFuaWZlc3Q6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hl
LnRleHQ6IEFkZGVkLgorCiAyMDEyLTAxLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE9uY2Ugd2UndmUgcHJlcGFyZWQgc2NyaXB0IGVsZW1lbnQg
Zm9yIGV4ZWN1dGlvbiwgZXhlY3V0ZSBpdCwgZXZlbiBpZiB0aGUgc2NyaXB0IGVsZW1lbnQgd2Fz
IG1lYW53aGlsZSByZW1vdmVkIGZyb20gdGhlIGRvbSB0cmVlLgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMg
YWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFm
dGVyIGRvd25sb2FkaW5nIGV2ZW50LgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI5IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLm1hbmlm
ZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2dGYWlsKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiRkFJTFVSRSI7Cit9CisK
K2FwcGxpY2F0aW9uQ2FjaGUub251cGRhdGVyZWFkeSA9IGxvZ0ZhaWw7CithcHBsaWNhdGlvbkNh
Y2hlLm9ubm91cGRhdGUgPSBsb2dGYWlsOworCitmdW5jdGlvbiBhYm9ydCgpIHsKKyAgICBhcHBs
aWNhdGlvbkNhY2hlLmFib3J0KCk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Fw
cGxpY2F0aW9uQ2FjaGUub25kb3dubG9hZGluZyA9IGFib3J0OworCis8L3NjcmlwdD4KKworPGRp
dj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBkb3du
bG9hZGluZyBldmVudC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNh
Y2hlLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUubWFuaWZlc3QJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ0FDSEUgTUFOSUZFU1QKK2Fib3J0LWNhY2hl
LnRleHQKKyAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLnRleHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLnRleHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQo
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCg==
</data>
<flag name="review"
          id="123221"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="123222"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122540</attachid>
            <date>2012-01-14 04:19:03 -0800</date>
            <delta_ts>2012-01-14 04:31:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>abort.patch</filename>
            <type>text/plain</type>
            <size>34488</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE0ICB4dWVxaW5n
IGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgb2ZmbGluZSB3
ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFib3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9vbmNoZWNraW5nLmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCisgICAgICAgIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNh
Y2hlL29uZG93bmxvYWRpbmcuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL29uZG93
bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9hcHBjYWNoZS9v
bmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCisgICAgICAgIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb25wcm9ncmVzcy5odG1sIAorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmFib3J0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6YWJvcnQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaWRsOgorCiAyMDEyLTAxLTEzICBPamFuIFZhZmFpICA8b2phbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGZsZXgtYWxpZ24KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYwLDYgKzQ2
MCwxOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lCiAgICAgbV9t
YW5pZmVzdEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKG1fbWFuaWZlc3RVUkwsIG1fbmV3
ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5pZmVzdFJlc291cmNlKCkgOiAwKTsKIH0KIAor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBp
ZiAobV91cGRhdGVTdGF0dXMgPT0gSWRsZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCht
X3VwZGF0ZVN0YXR1cyA9PSBDaGVja2luZyB8fCAobV91cGRhdGVTdGF0dXMgPT0gRG93bmxvYWRp
bmcgJiYgbV9jYWNoZUJlaW5nVXBkYXRlZCkpOworCisgICAgaWYgKG1fY29tcGxldGlvblR5cGUg
IT0gTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgVGlw
TWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJv
cnRlZC4iKTsKKyAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworfQorCiBQYXNzUmVmUHRyPFJlc291
cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNv
bnN0IEtVUkwmIHVybCwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNv
dXJjZSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHVwZGF0ZShGcmFtZSosIEFwcGxpY2F0aW9uQ2FjaGVV
cGRhdGVPcHRpb24pOyAvLyBGSVhNRTogRnJhbWUgc2hvdWxkIG5vdCBiZSBuZWVkZWQgd2hlbiB1
cGRhdGluZyB3aXRob3V0IGJyb3dzaW5nIGNvbnRleHQuCiAgICAgdm9pZCBjYWNoZURlc3Ryb3ll
ZChBcHBsaWNhdGlvbkNhY2hlKik7CisgICAgCisgICAgdm9pZCBhYm9ydChGcmFtZSopOwogCiAg
ICAgYm9vbCBjYWNoZUlzQmVpbmdVcGRhdGVkKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hl
KSBjb25zdCB7IHJldHVybiBjYWNoZSA9PSBtX2NhY2hlQmVpbmdVcGRhdGVkOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5
LDYgKzQ1OSwxOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpzd2FwQ2FjaGUoKQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCit7
CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwID0gY2FuZGlkYXRlQXBwbGlj
YXRpb25DYWNoZUdyb3VwKCk7CisgICAgaWYgKGNhY2hlR3JvdXApCisgICAgICAgIGNhY2hlR3Jv
dXAtPmFib3J0KG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOworCWVsc2UKKyAgICB7CisgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gYXBwbGljYXRpb25DYWNoZSgpOworICAgICAg
ICBpZiAoY2FjaGUpCisgICAgICAgICAgICBjYWNoZS0+Z3JvdXAoKS0+YWJvcnQobV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKSk7CisgICAgfQorfQorCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKIHsKICAgICByZXR1cm4gbV9kb2N1bWVudExv
YWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlzaW9uIDEwNTAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3Q7ICAKICAgICAgICAgYm9vbCB1cGRhdGUo
KTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUoKTsKKyAgICAgICAgdm9pZCBhYm9ydCgpOwogCiAg
ICAgICAgIHZvaWQgc2V0RE9NQXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKik7
CiAgICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElELCBpbnQgcHJv
Z3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lv
biAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIHZvaWQgRE9NQXBw
bGljYXRpb25DYWNoZTo6c3dhcENhY2hlKEV4Y2UKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKIH0KIAordm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjphYm9ydCgpCit7CisgICAgQXBw
bGljYXRpb25DYWNoZUhvc3QqIGNhY2hlSG9zdCA9IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7Cisg
ICAgaWYgKGNhY2hlSG9zdCkKKyAgICAgICAgY2FjaGVIb3N0LT5hYm9ydCgpOworfQorCiBjb25z
dCBBdG9taWNTdHJpbmcmIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVyZmFjZU5hbWUoKSBjb25z
dAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRE9NQXBwbGljYXRpb25D
YWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzKCkgY29uc3Q7
CiAgICAgdm9pZCB1cGRhdGUoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc3dhcENhY2hlKEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFib3J0KCk7CiAKICAgICAvLyBFdmVudFRhcmdldCBp
bXBsCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsNyBAQCBtb2R1bGUgb2ZmbGluZSB7CiAgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzd2FwQ2FjaGUoKQogICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWJvcnQoKTsKIAogICAgICAgICAvLyBl
dmVudHMKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGVja2luZzsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTAxLTE0ICB4dWVxaW5nIGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAg
ICAgICBBZGQgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFi
b3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYy
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6YWJvcnQpOgorCiAyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBIV25kREMgaXMgYSBiZXR0ZXIgbmFtZSB0aGFuIEh3bmRE
Qy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYg
KzI5NSwxMSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpzd2FwQ2FjaGUoKQogICAgIHJl
dHVybiBzdWNjZXNzOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCit7
CisgICAgLy8gRklYTUU6IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzYyNzAKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCgpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTA1MDE2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDEtMTQgIHh1ZXFpbmcgaHVhbmcgIDxo
dWFuZ3h1ZXFpbmdAYmFpZHUuY29tPgorCisgICAgICAgIEFkZCBvZmZsaW5lIHdlYiBhcHBsaWNh
dGlvbnMgQVBJIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVj
a2luZy1tYW5pZmVzdC00MDQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy1yZXNvdXJjZS00MDQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGlu
Zy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3du
bG9hZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9ucHJvZ3Jlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1y
ZXNvdXJjZS00MDQubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcubWFuaWZlc3Q6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tp
bmcudGV4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQubWFuaWZlc3Q6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmcubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcudGV4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0x
LnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25w
cm9ncmVzcy00LnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMi0wMS0xMyAg
T2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNraXAgdGVzdCB0aGF0
IHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByMTA1MDE1LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uIENhY2hlIGRv
d25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJv
Y2VzcyB3YXMgYWJvcnRlZCBhZnRlciBjaGVja2luZyBldmVudC4KK1NVQ0NFU1MKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5p
ZmVzdC00MDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBkb3du
bG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nl
c3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hlY2tpbmcgZXZlbnQgYW5kIGJlZm9yZSB1cGRhdGUgZmFp
bGVkLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVz
dC00MDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1v
bmNoZWNraW5nLW1hbmlmZXN0LTQwNC5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQorCitmdW5jdGlvbiBvbmNoZWNraW5n
KCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsgCit9CisKK2Z1bmN0aW9uIG9ubm91
cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJub3VwZGF0ZSIpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25jYWNoZWQoKSB7CisgICAgbG9n
KCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7Cisg
ICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVu
Y3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2hlY2tpbmcn
LCBvbmNoZWNraW5nLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIo
J25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVu
dExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5h
ZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2Fj
aGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVhZHknLCBvbnVwZGF0ZXJlYWR5LCBmYWxzZSk7
CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdh
cyBhYm9ydGVkIGFmdGVyIGNoZWNraW5nIGV2ZW50IGFuZCBiZWZvcmUgdXBkYXRlIGZhaWxlZC48
L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVj
a2luZy1tYW5pZmVzdC00MDQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3Vy
Y2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGlj
YXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhh
dCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGNoZWNraW5nIGV2ZW50IGFuZCBi
ZWZvcmUgdXBkYXRlIGZhaWxlZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
Y2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJj
ZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3QiPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30KKworZnVu
Y3Rpb24gb25jaGVja2luZygpIHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0KCk7IAorfQor
CitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygi
bm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uY2Fj
aGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FDSEVEIik7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkgeworICAgIGxv
ZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9nKCJTVUNDRVNTIik7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlz
dGVuZXIoJ2NoZWNraW5nJywgb25jaGVja2luZywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5h
ZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0
aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2Fw
cGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7
CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRh
dGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93
bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBjaGVja2luZyBldmVudCBhbmQgYmVmb3Jl
IHVwZGF0ZSBmYWlsZWQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9odG1sPgor
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
Y2hlY2tpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZl
c3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0
aW9uIG9uY2hlY2tpbmcoKSB7CisgICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKwor
ZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5v
dXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hl
ZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2co
IkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3Rl
bmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlv
bkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRl
cmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25s
b2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hlY2tpbmcgZXZlbnQuPC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25k
b3dubG9hZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb24g
Q2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3du
bG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGRvd25sb2FkaW5nIGV2ZW50LgorU1VDQ0VT
UwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlm
ZXN0LTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitUaGlzIHRlc3RzIHRoYXQgZG93
bmxvYWQgcHJvY2VzcyB3YXMgbm90IGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQgc2lu
Y2UgbWFuaWZlc3Qgd2FzIG5vdCBmb3VuZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmct
bWFuaWZlc3QtNDA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sIG1h
bmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQu
bWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdl
ICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25kb3dubG9hZGluZygpIHsKKyAgICBhcHBsaWNhdGlv
bkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygi
RkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxv
ZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVw
ZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFki
KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7Cisg
ICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNh
dGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9hZGluZywg
ZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9u
bm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2Fj
aGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5l
cignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlz
dGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4K
KworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgbm90IGFib3J0ZWQg
YWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQgc2luY2UgbWFuaWZlc3Qgd2FzIG5vdCBmb3VuZC48L2Rp
dj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy1tYW5pZmVzdC00MDQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmct
cmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FH
RTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4KK1RoaXMg
dGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGRvd25sb2FkaW5n
IGV2ZW50IGFsdGhvdWdoIHJlc291cmNlIHdhcyBub3QgZm91bmQuCitTVUNDRVNTCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmct
cmVzb3VyY2UtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1v
bmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmct
cmVzb3VyY2UtNDA0Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uZG93bmxvYWRpbmcoKSB7Cisg
ICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rpb24gb25ub3VwZGF0ZSgp
IHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZBSUxV
UkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
ZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2co
IlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBv
bmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdkb3dubG9hZGluZycsIG9u
ZG93bmxvYWRpbmcsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcign
bm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50
TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFk
ZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRpb25DYWNo
ZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZhbHNlKTsK
KworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2Fz
IGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQgYWx0aG91Z2ggcmVzb3VyY2Ugd2FzIG5v
dCBmb3VuZC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2Fj
aGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACis8aHRtbCBt
YW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcubWFuaWZlc3QiPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30K
KworZnVuY3Rpb24gb25kb3dubG9hZGluZygpIHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0
KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVSRSIpOwor
ICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FDSEVEIik7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkg
eworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9nKCJTVUND
RVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hlLmFk
ZEV2ZW50TGlzdGVuZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9hZGluZywgZmFsc2UpOworYXBw
bGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZh
bHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNo
ZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBv
bmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0
ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPGRpdj5UaGlz
IHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBkb3dubG9hZGlu
ZyBldmVudC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2Fj
aGUtb25kb3dubG9hZGluZy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUt
b25wcm9ncmVzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25w
cm9ncmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09M
RSBNRVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVk
LgorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgcHJv
Z3Jlc3MgZXZlbnQuCitsb2FkaW5nIHJlc291cmNlOiAwIC8gNCBsb2FkaW5nIHJlc291cmNlOiAx
IC8gNCBsb2FkaW5nIHJlc291cmNlOiAyIC8gNCBsb2FkaW5nIHJlc291cmNlOiAzIC8gNCBTVUND
RVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
cHJvZ3Jlc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0
LWNhY2hlLW9ucHJvZ3Jlc3MubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25wcm9ncmVzcyhldmVu
dCkgeworICAgIGxvZygibG9hZGluZyByZXNvdXJjZTogIiArIGV2ZW50LmxvYWRlZCArICIgLyAi
ICsgZXZlbnQudG90YWwpOworICAgIGlmIChldmVudC5sb2FkZWQgPT0gMykgCisgICAgICAgIGFw
cGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAg
ICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsK
KyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFU
RVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9y
KCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25j
YWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3In
LCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3Vw
ZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRF
dmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9ucHJvZ3Jlc3MsIGZhbHNlKTsKKzwvc2NyaXB0Pgor
Cis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVy
IHByb2dyZXNzIGV2ZW50LjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVj
a2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291
cmNlLTQwNC5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5J
RkVTVAorbm90LWV4aXN0LnZvYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmcubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy5tYW5pZmVzdAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNh
Y2hlLW9uY2hlY2tpbmcubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQ0FD
SEUgTUFOSUZFU1QKK2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dApcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcubWFuaWZlc3QKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy50ZXh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGZvciBhcHBsaWNhdGlvbkNhY2hlLmFi
b3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5t
YW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIgQEAKK0NBQ0hFIE1BTklGRVNUCitub3QtZXhpc3Qudm9iClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1y
ZXNvdXJjZS00MDQubWFuaWZlc3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5n
Lm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAorYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy50ZXh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy5tYW5pZmVzdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLnRleHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50
ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQKKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQt
Y2FjaGUtb25kb3dubG9hZGluZy50ZXh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50
ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0xLnRleHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAordGVzdCBmb3IgYXBwbGljYXRpb25DYWNoZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1j
YWNoZS1vbnByb2dyZXNzLTEudGV4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS1vbnByb2dyZXNzLTIudGV4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTIudGV4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQKKwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2Fj
aGUtb25wcm9ncmVzcy0yLnRleHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJv
cnQtY2FjaGUtb25wcm9ncmVzcy0zLnRleHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0zLnRleHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNl
cy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACit0ZXN0IGZvciBhcHBsaWNhdGlvbkNhY2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hl
LW9ucHJvZ3Jlc3MtMy50ZXh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsg
KgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0
LWNhY2hlLW9ucHJvZ3Jlc3MtNC50ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtNC50ZXh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRleHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBA
QAordGVzdCBmb3IgYXBwbGljYXRpb25DYWNoZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1v
bnByb2dyZXNzLTQudGV4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoK
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1j
YWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MubWFuaWZlc3QJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNl
cy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYgQEAKK0NBQ0hFIE1BTklGRVNUCithYm9ydC1jYWNoZS1vbnByb2dyZXNzLTEudGV4dAorYWJv
cnQtY2FjaGUtb25wcm9ncmVzcy0yLnRleHQKK2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0
CithYm9ydC1jYWNoZS1vbnByb2dyZXNzLTQudGV4dAorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAx
MDUwMTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDEzIEBAIEJVR0NSMjQxODIgU0xPVyBE
RUJVRyA6IHN2Zy9maWx0ZXJzL2JpZy0KIC8vIFNlZSBCVUdDUjEwNDc5NwogCiBCVUdXSzc0Nzg3
IERFQlVHIFNMT1cgOiBmYXN0L2pzL2RmZy1wb2lzb24tZnV6ei5odG1sID0gUEFTUwotCitCVUdX
Szc2MjcwIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcu
aHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJ
UCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00
MDQuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sID0gRkFJTAorQlVHV0s3NjI3MCBTS0lQIDogaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC5o
dG1sID0gRkFJTAorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sID0gRkFJTAorQlVHV0s3NjI3MCBT
S0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwgPSBG
QUlMCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gVEVNUE9SQVJJTFkgU0tJUFBFRCBURVNUUwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122541</attachid>
            <date>2012-01-14 04:31:42 -0800</date>
            <delta_ts>2012-01-14 04:43:14 -0800</delta_ts>
            <desc>patch</desc>
            <filename>abort.patch</filename>
            <type>text/plain</type>
            <size>34589</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE0ICB4dWVxaW5n
IGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgb2ZmbGluZSB3
ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFib3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCisg
ICAgICAgIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJj
ZS00MDQuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmcuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
ZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCisgICAgICAgIGh0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sIAorCisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjphYm9ydCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6YWJvcnQp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOgorCiAyMDEyLTAx
LTEzICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50
IGZsZXgtYWxpZ24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAxMDUwMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYwLDYgKzQ2MCwxOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6dXBkYXRlKEZyYW1lCiAgICAgbV9tYW5pZmVzdEhhbmRsZSA9IGNyZWF0ZVJlc291cmNl
SGFuZGxlKG1fbWFuaWZlc3RVUkwsIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5p
ZmVzdFJlc291cmNlKCkgOiAwKTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFi
b3J0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAobV91cGRhdGVTdGF0dXMgPT0gSWRsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3VwZGF0ZVN0YXR1cyA9PSBDaGVja2luZyB8fCAo
bV91cGRhdGVTdGF0dXMgPT0gRG93bmxvYWRpbmcgJiYgbV9jYWNoZUJlaW5nVXBkYXRlZCkpOwor
CisgICAgaWYgKG1fY29tcGxldGlvblR5cGUgIT0gTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgVGlwTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2Fj
aGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4iKTsKKyAgICBjYWNoZVVwZGF0ZUZhaWxl
ZCgpOworfQorCiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCh1cmwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkocmV2aXNpb24gMTA1MDE2KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHVwZGF0
ZShGcmFtZSosIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24pOyAvLyBGSVhNRTogRnJhbWUg
c2hvdWxkIG5vdCBiZSBuZWVkZWQgd2hlbiB1cGRhdGluZyB3aXRob3V0IGJyb3dzaW5nIGNvbnRl
eHQuCiAgICAgdm9pZCBjYWNoZURlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlKik7CisgICAgCisg
ICAgdm9pZCBhYm9ydChGcmFtZSopOwogCiAgICAgYm9vbCBjYWNoZUlzQmVpbmdVcGRhdGVkKGNv
bnN0IEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKSBjb25zdCB7IHJldHVybiBjYWNoZSA9PSBtX2Nh
Y2hlQmVpbmdVcGRhdGVkOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gMTA1MDE2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSwyMSBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojpzd2FwQ2FjaGUoKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCit7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBj
YWNoZUdyb3VwID0gY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CisgICAgaWYgKGNh
Y2hlR3JvdXApCisgICAgeworICAgICAgICBjYWNoZUdyb3VwLT5hYm9ydChtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQXBwbGljYXRp
b25DYWNoZSogY2FjaGUgPSBhcHBsaWNhdGlvbkNhY2hlKCk7CisgICAgICAgIGlmIChjYWNoZSkK
KyAgICAgICAgICAgIGNhY2hlLT5ncm91cCgpLT5hYm9ydChtX2RvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpKTsKKyAgICB9Cit9CisKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoKQogewogICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgp
LT5zZXR0aW5ncygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0
YXR1cyBzdGF0dXMoKSBjb25zdDsgIAogICAgICAgICBib29sIHVwZGF0ZSgpOwogICAgICAgICBi
b29sIHN3YXBDYWNoZSgpOworICAgICAgICB2b2lkIGFib3J0KCk7CiAKICAgICAgICAgdm9pZCBz
ZXRET01BcHBsaWNhdGlvbkNhY2hlKERPTUFwcGxpY2F0aW9uQ2FjaGUqKTsKICAgICAgICAgdm9p
ZCBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBp
bnQgcHJvZ3Jlc3NEb25lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDEwNTAxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTMgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hl
Ojpzd2FwQ2FjaGUoRXhjZQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogfQogCit2
b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFib3J0KCkKK3sKKyAgICBBcHBsaWNhdGlvbkNhY2hl
SG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRpb25DYWNoZUhvc3QoKTsKKyAgICBpZiAoY2FjaGVI
b3N0KQorICAgICAgICBjYWNoZUhvc3QtPmFib3J0KCk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgRE9NQXBwbGljYXRpb25DYWNoZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JET01BcHBsaWNhdGlvbkNhY2hlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5oCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXMoKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZShFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzd2FwQ2FjaGUoRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgYWJvcnQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGltcGwKIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBAIG1vZHVsZSBvZmZsaW5lIHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICB2b2lkIHN3YXBDYWNoZSgpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgICAgIC8vIGV2ZW50cwogICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNoZWNraW5nOwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMTQgIHh1
ZXFpbmcgaHVhbmcgIDxodWFuZ3h1ZXFpbmdAYmFpZHUuY29tPgorCisgICAgICAgIEFkZCBvZmZs
aW5lIHdlYiBhcHBsaWNhdGlvbnMgQVBJIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojph
Ym9ydCk6CisKIDIwMTItMDEtMTMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEhXbmREQyBpcyBhIGJldHRlciBuYW1lIHRoYW4gSHduZERDLgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDExIEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN3YXBDYWNoZSgpCiAgICAgcmV0dXJuIHN1Y2Nlc3M7
CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKK3sKKyAgICAvLyBGSVhN
RTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3MAorfQor
CiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkK
IHsKICAgICBBU1NFUlQobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMDUwMTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNyBAQAorMjAxMi0wMS0xNCAgeHVlcWluZyBodWFuZyAgPGh1YW5neHVlcWluZ0Bi
YWlkdS5jb20+CisKKyAgICAgICAgQWRkIG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9ucyBBUEkgYXBw
bGljYXRpb25DYWNoZS5hYm9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc2MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0
LTQwNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNh
Y2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQw
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uY2hlY2tpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9h
Ym9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQw
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNl
LTQwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
YWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9n
cmVzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
YWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5t
YW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25jaGVja2luZy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy50ZXh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1v
bmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5p
ZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTEudGV4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25w
cm9ncmVzcy0yLnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTQudGV4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQt
Y2FjaGUtb25wcm9ncmVzcy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDEyLTAxLTEzICBPamFuIFZhZmFpICA8
b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2tpcCB0ZXN0IHRoYXQgc3RhcnRlZCBmYWls
aW5nIGFmdGVyIHIxMDUwMTUuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uY2hlY2tpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2Vz
cyB3YXMgYWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9y
dGVkIGFmdGVyIGNoZWNraW5nIGV2ZW50LgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9h
Ym9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mg
d2FzIGFib3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRl
ZCBhZnRlciBjaGVja2luZyBldmVudCBhbmQgYmVmb3JlIHVwZGF0ZSBmYWlsZWQuCitTVUNDRVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctbWFuaWZlc3QtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFu
aWZlc3QtNDA0Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uY2hlY2tpbmcoKSB7CisgICAgYXBw
bGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAg
ICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsK
KyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFU
RVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9y
KCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBv
bm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Nh
Y2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExp
c3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+
CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0
ZXIgY2hlY2tpbmcgZXZlbnQgYW5kIGJlZm9yZSB1cGRhdGUgZmFpbGVkLjwvZGl2PgorPGRpdiBp
ZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0
LTQwNC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1y
ZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9h
Ym9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBk
b3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHBy
b2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hlY2tpbmcgZXZlbnQgYW5kIGJlZm9yZSB1cGRhdGUg
ZmFpbGVkLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9h
Ym9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNv
dXJjZS00MDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQorCitmdW5jdGlvbiBvbmNoZWNr
aW5nKCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsgCit9CisKK2Z1bmN0aW9uIG9u
bm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJub3VwZGF0ZSIpOwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25jYWNoZWQoKSB7CisgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7
CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
ZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2hlY2tp
bmcnLCBvbmNoZWNraW5nLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRF
dmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNo
ZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9u
Q2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVhZHknLCBvbnVwZGF0ZXJlYWR5LCBmYWxz
ZSk7CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNz
IHdhcyBhYm9ydGVkIGFmdGVyIGNoZWNraW5nIGV2ZW50IGFuZCBiZWZvcmUgdXBkYXRlIGZhaWxl
ZC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25j
aGVja2luZy1yZXNvdXJjZS00MDQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJs
ZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNh
Y2hlLW9uY2hlY2tpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25jaGVja2lu
ZygpIHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5v
dXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxv
ZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOwor
ICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoZWNraW5n
Jywgb25jaGVja2luZywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZl
bnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNh
Y2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2Up
OworCis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3
YXMgYWJvcnRlZCBhZnRlciBjaGVja2luZyBldmVudC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
YWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9h
ZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mg
d2FzIGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQuCitTVUNDRVNTCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFu
aWZlc3QtNDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
YWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNz
IHdhcyBub3QgYWJvcnRlZCBhZnRlciBkb3dubG9hZGluZyBldmVudCBzaW5jZSBtYW5pZmVzdCB3
YXMgbm90IGZvdW5kLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3du
bG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291
cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC5tYW5pZmVzdCI+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQor
CitmdW5jdGlvbiBvbmRvd25sb2FkaW5nKCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQo
KTsgCit9CisKK2Z1bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7Cisg
ICAgbG9nKCJub3VwZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gb25jYWNoZWQoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7
CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NF
U1MiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignZG93bmxvYWRpbmcnLCBvbmRvd25sb2FkaW5nLCBmYWxzZSk7CithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFs
c2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hl
ZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9u
ZXJyb3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRl
cmVhZHknLCBvbnVwZGF0ZXJlYWR5LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMg
dGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBub3QgYWJvcnRlZCBhZnRlciBkb3dubG9h
ZGluZyBldmVudCBzaW5jZSBtYW5pZmVzdCB3YXMgbm90IGZvdW5kLjwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0
LTQwNC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGlu
Zy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBBcHBsaWNhdGlv
biBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0ZXN0cyB0aGF0IGRv
d25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQgYWx0aG91
Z2ggcmVzb3VyY2Ugd2FzIG5vdCBmb3VuZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmct
cmVzb3VyY2UtNDA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sIG1h
bmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQu
bWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdl
ICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25kb3dubG9hZGluZygpIHsKKyAgICBhcHBsaWNhdGlv
bkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygi
RkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxv
ZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVw
ZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFki
KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7Cisg
ICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNh
dGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9hZGluZywg
ZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9u
bm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2Fj
aGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5l
cignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlz
dGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4K
KworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRl
ciBkb3dubG9hZGluZyBldmVudCBhbHRob3VnaCByZXNvdXJjZSB3YXMgbm90IGZvdW5kLjwvZGl2
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2Fk
aW5nLXJlc291cmNlLTQwNC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5n
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNv
dXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQorCitmdW5jdGlvbiBv
bmRvd25sb2FkaW5nKCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsgCit9CisKK2Z1
bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJub3Vw
ZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25jYWNoZWQo
KSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CisgICAgbG9nKCJG
QUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5l
cignZG93bmxvYWRpbmcnLCBvbmRvd25sb2FkaW5nLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2UpOworYXBwbGlj
YXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwgZmFsc2UpOwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IsIGZhbHNl
KTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVhZHknLCBvbnVw
ZGF0ZXJlYWR5LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBk
b3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGRvd25sb2FkaW5nIGV2ZW50LjwvZGl2
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2Fk
aW5nLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IEFw
cGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuCitUaGlzIHRlc3Rz
IHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBwcm9ncmVzcyBldmVudC4K
K2xvYWRpbmcgcmVzb3VyY2U6IDAgLyA0IGxvYWRpbmcgcmVzb3VyY2U6IDEgLyA0IGxvYWRpbmcg
cmVzb3VyY2U6IDIgLyA0IGxvYWRpbmcgcmVzb3VyY2U6IDMgLyA0IFNVQ0NFU1MKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2Fj
aGUtb25wcm9ncmVzcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTUgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9n
cmVzcy5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1l
c3NhZ2UgKyAiXG4iOworfQorCitmdW5jdGlvbiBvbnByb2dyZXNzKGV2ZW50KSB7CisgICAgbG9n
KCJsb2FkaW5nIHJlc291cmNlOiAiICsgZXZlbnQubG9hZGVkICsgIiAvICIgKyBldmVudC50b3Rh
bCk7CisgICAgaWYgKGV2ZW50LmxvYWRlZCA9PSAzKSAKKyAgICAgICAgYXBwbGljYXRpb25DYWNo
ZS5hYm9ydCgpOworfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVS
RSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FD
SEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJl
YWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9n
KCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNh
Y2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2UpOworYXBw
bGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwgZmFsc2Up
OworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IsIGZh
bHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVhZHknLCBv
bnVwZGF0ZXJlYWR5LCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIo
J3Byb2dyZXNzJywgb25wcm9ncmVzcywgZmFsc2UpOworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0
ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgcHJvZ3Jlc3MgZXZl
bnQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9odG1sPgorCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNr
aW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNl
LTQwNC5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lm1hbmlm
ZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0NBQ0hFIE1BTklGRVNUCitub3QtZXhp
c3Qudm9iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy5tYW5pZmVz
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNl
cy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAor
YWJvcnQtY2FjaGUtb25jaGVja2luZy50ZXh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy5tYW5pZmVzdApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLnRleHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25j
aGVja2luZy50ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy50ZXh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25jaGVja2luZy50ZXh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0
LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAorQ0FDSEUgTUFOSUZFU1QKK25vdC1leGlzdC52b2IKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5t
YW5pZmVzdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcubWFuaWZlc3QJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK0NBQ0hFIE1BTklGRVNUCithYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLnRleHQKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5n
Lm1hbmlmZXN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9u
ZG93bmxvYWRpbmcudGV4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLnRleHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1j
YWNoZS1vbmRvd25sb2FkaW5nLnRleHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVz
dCBmb3IgYXBwbGljYXRpb25DYWNoZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25s
b2FkaW5nLnRleHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUt
b25wcm9ncmVzcy0xLnRleHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0xLnRleHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1j
YWNoZS1vbnByb2dyZXNzLTEudGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0
IGZvciBhcHBsaWNhdGlvbkNhY2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jl
c3MtMS50ZXh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9u
cHJvZ3Jlc3MtMi50ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2Fj
aGUtb25wcm9ncmVzcy0yLnRleHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVzdCBm
b3IgYXBwbGljYXRpb25DYWNoZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNz
LTIudGV4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnBy
b2dyZXNzLTMudGV4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hl
LW9ucHJvZ3Jlc3MtMy50ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9y
IGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0z
LnRleHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9n
cmVzcy00LnRleHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRleHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1v
bnByb2dyZXNzLTQudGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGZvciBh
cHBsaWNhdGlvbkNhY2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtNC50
ZXh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jl
c3MubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5tYW5pZmVzdAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hl
LW9ucHJvZ3Jlc3MubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorQ0FDSEUg
TUFOSUZFU1QKK2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50ZXh0CithYm9ydC1jYWNoZS1vbnBy
b2dyZXNzLTIudGV4dAorYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0zLnRleHQKK2Fib3J0LWNhY2hl
LW9ucHJvZ3Jlc3MtNC50ZXh0CisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDEwNTAxNikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsMTMgQEAgQlVHQ1IyNDE4MiBTTE9XIERFQlVHIDogc3ZnL2Zp
bHRlcnMvYmlnLQogLy8gU2VlIEJVR0NSMTA0Nzk3CiAKIEJVR1dLNzQ3ODcgREVCVUcgU0xPVyA6
IGZhc3QvanMvZGZnLXBvaXNvbi1mdXp6Lmh0bWwgPSBQQVNTCi0KK0JVR1dLNzYyNzAgU0tJUCA6
IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy5odG1sID0gRkFJTAor
QlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNr
aW5nLW1hbmlmZXN0LTQwNC5odG1sID0gRkFJTAorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5odG1sID0gRkFJ
TAorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLmh0bWwgPSBGQUlMCitCVUdXSzc2MjcwIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwgPSBGQUlMCitC
VUdXSzc2MjcwIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxv
YWRpbmctcmVzb3VyY2UtNDA0Lmh0bWwgPSBGQUlMCitCVUdXSzc2MjcwIFNLSVAgOiBodHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbCA9IEZBSUwKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyBURU1QT1JBUklMWSBTS0lQUEVEIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122542</attachid>
            <date>2012-01-14 04:43:14 -0800</date>
            <delta_ts>2012-01-14 04:54:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>abort.patch</filename>
            <type>text/plain</type>
            <size>34573</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE0ICB4dWVxaW5n
IGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgb2ZmbGluZSB3
ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFib3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCisg
ICAgICAgIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJj
ZS00MDQuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmcuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
ZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCisgICAgICAgIGh0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sCisKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmFib3J0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjphYm9ydCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisKIDIwMTItMDEt
MTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQg
ZmxleC1hbGlnbgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDEwNTAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjAsNiArNDYwLDE5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjp1cGRhdGUoRnJhbWUKICAgICBtX21hbmlmZXN0SGFuZGxlID0gY3JlYXRlUmVzb3VyY2VI
YW5kbGUobV9tYW5pZmVzdFVSTCwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPm1hbmlm
ZXN0UmVzb3VyY2UoKSA6IDApOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJv
cnQoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXR1cyA9PSBJZGxlKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fdXBkYXRlU3RhdHVzID09IENoZWNraW5nIHx8ICht
X3VwZGF0ZVN0YXR1cyA9PSBEb3dubG9hZGluZyAmJiBtX2NhY2hlQmVpbmdVcGRhdGVkKSk7CisK
KyAgICBpZiAobV9jb21wbGV0aW9uVHlwZSAhPSBOb25lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBUaXBNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNo
ZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLiIpOworICAgIGNhY2hlVXBkYXRlRmFpbGVk
KCk7Cit9CisKIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKQogewogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgdXBkYXRl
KEZyYW1lKiwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbik7IC8vIEZJWE1FOiBGcmFtZSBz
aG91bGQgbm90IGJlIG5lZWRlZCB3aGVuIHVwZGF0aW5nIHdpdGhvdXQgYnJvd3NpbmcgY29udGV4
dC4KICAgICB2b2lkIGNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAKKyAg
ICB2b2lkIGFib3J0KEZyYW1lKik7CiAKICAgICBib29sIGNhY2hlSXNCZWluZ1VwZGF0ZWQoY29u
c3QgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpIGNvbnN0IHsgcmV0dXJuIGNhY2hlID09IG1fY2Fj
aGVCZWluZ1VwZGF0ZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiAxMDUwMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTksNiArNDU5LDE4IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OnN3YXBDYWNoZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKK3sKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNh
Y2hlR3JvdXAgPSBjYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKKyAgICBpZiAoY2Fj
aGVHcm91cCkgeworICAgICAgICBjYWNoZUdyb3VwLT5hYm9ydChtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9
IGFwcGxpY2F0aW9uQ2FjaGUoKTsKKyAgICAgICAgaWYgKGNhY2hlKQorICAgICAgICAgICAgY2Fj
aGUtPmdyb3VwKCktPmFib3J0KG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOworICAgIH0KK30K
KwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgp
CiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYg
KzE0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RhdHVzIHN0YXR1cygpIGNv
bnN0OyAgCiAgICAgICAgIGJvb2wgdXBkYXRlKCk7CiAgICAgICAgIGJvb2wgc3dhcENhY2hlKCk7
CisgICAgICAgIHZvaWQgYWJvcnQoKTsKIAogICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9u
Q2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSopOwogICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxp
Y2F0aW9uQ2FjaGUoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw2ICs4NCwxMyBAQCB2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnN3YXBDYWNoZShFeGNl
CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9CiAKK3ZvaWQgRE9NQXBwbGljYXRp
b25DYWNoZTo6YWJvcnQoKQoreworICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3Qg
PSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpOworICAgIGlmIChjYWNoZUhvc3QpCisgICAgICAgIGNh
Y2hlSG9zdC0+YWJvcnQoKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBET01BcHBsaWNhdGlv
bkNhY2hlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvckRPTUFwcGxpY2F0aW9uQ2FjaGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9u
IDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIHNob3J0IHN0YXR1cygpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlKEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHN3YXBDYWNoZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhYm9y
dCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCShyZXZp
c2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbW9kdWxlIG9m
ZmxpbmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQg
c3dhcENhY2hlKCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2
b2lkIGFib3J0KCk7CiAKICAgICAgICAgLy8gZXZlbnRzCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uY2hlY2tpbmc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA1MDE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNCAgeHVlcWluZyBodWFuZyAgPGh1
YW5neHVlcWluZ0BiYWlkdS5jb20+CisKKyAgICAgICAgQWRkIG9mZmxpbmUgd2ViIGFwcGxpY2F0
aW9ucyBBUEkgYXBwbGljYXRpb25DYWNoZS5hYm9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KToKKwogMjAxMi0w
MS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFduZERD
IGlzIGEgYmV0dGVyIG5hbWUgdGhhbiBId25kREMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiAxMDUw
MTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUsMTEgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6c3dhcENhY2hlKCkKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAordm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6YWJvcnQoKQoreworICAgIC8vIEZJWE1FOiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjcwCit9CisKIGJvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisy
MDEyLTAxLTE0ICB4dWVxaW5nIGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAg
ICAgICBBZGQgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFi
b3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYy
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1y
ZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25s
b2FkaW5nLW1hbmlmZXN0LTQwNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnBy
b2dyZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNo
ZWNraW5nLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVz
b3VyY2UtNDA0Lm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLm1hbmlmZXN0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25s
b2FkaW5nLnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTIudGV4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2Fj
aGUtb25wcm9ncmVzcy0zLnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtNC50ZXh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNz
Lm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6CisKIDIwMTItMDEtMTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBTa2lwIHRlc3QgdGhhdCBzdGFydGVkIGZhaWxpbmcgYWZ0ZXIgcjEwNTAx
NS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25j
aGVja2luZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVj
a2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBN
RVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgor
VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hlY2tp
bmcgZXZlbnQuCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00
MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVT
U0FHRTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4KK1Ro
aXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGNoZWNraW5n
IGV2ZW50IGFuZCBiZWZvcmUgdXBkYXRlIGZhaWxlZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00
MDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFu
aWZlc3QtNDA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sIG1hbmlm
ZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQubWFuaWZl
c3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxu
IjsKK30KKworZnVuY3Rpb24gb25jaGVja2luZygpIHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLmFi
b3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVSRSIp
OworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FDSEVE
Iik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5
KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9nKCJT
VUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ2NoZWNraW5nJywgb25jaGVja2luZywgZmFsc2UpOworYXBwbGlj
YXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNl
KTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVy
cm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJl
YWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRl
c3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBjaGVja2luZyBldmVu
dCBhbmQgYmVmb3JlIHVwZGF0ZSBmYWlsZWQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2
PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9h
Ym9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mg
d2FzIGFib3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRl
ZCBhZnRlciBjaGVja2luZyBldmVudCBhbmQgYmVmb3JlIHVwZGF0ZSBmYWlsZWQuCitTVUNDRVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVz
b3VyY2UtNDA0Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uY2hlY2tpbmcoKSB7CisgICAgYXBw
bGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAg
ICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsK
KyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFU
RVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9y
KCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBv
bm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Nh
Y2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExp
c3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+
CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0
ZXIgY2hlY2tpbmcgZXZlbnQgYW5kIGJlZm9yZSB1cGRhdGUgZmFpbGVkLjwvZGl2PgorPGRpdiBp
ZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNl
LTQwNC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25j
aGVja2luZy5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiXG4iOworfQorCitmdW5jdGlvbiBvbmNoZWNraW5nKCkgeworICAgIGFwcGxp
Y2F0aW9uQ2FjaGUuYWJvcnQoKTsgCit9CisKK2Z1bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJub3VwZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZnVuY3Rpb24gb25jYWNoZWQoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7Cisg
ICAgbG9nKCJDQUNIRUQiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IG9udXBkYXRlcmVhZHkoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVS
RUFEWSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25lcnJvcigp
IHsKKyAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Fw
cGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2hlY2tpbmcnLCBvbmNoZWNraW5nLCBm
YWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25u
b3VwZGF0ZSwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNo
ZWQnLCBvbmNhY2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdlcnJvcicsIG9uZXJyb3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0
ZW5lcigndXBkYXRlcmVhZHknLCBvbnVwZGF0ZXJlYWR5LCBmYWxzZSk7CisKKzwvc2NyaXB0Pgor
Cis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVy
IGNoZWNraW5nIGV2ZW50LjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1v
bmRvd25sb2FkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitD
T05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFi
b3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRl
ciBkb3dubG9hZGluZyBldmVudC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIG5vdCBhYm9ydGVk
IGFmdGVyIGRvd25sb2FkaW5nIGV2ZW50IHNpbmNlIG1hbmlmZXN0IHdhcyBub3QgZm91bmQuCitT
VUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0
LTQwNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU0IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uZG93
bmxvYWRpbmcoKSB7CisgICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rp
b24gb25ub3VwZGF0ZSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRl
Iik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsK
KyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxV
UkUiKTsKKyAgICBsb2coIlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdk
b3dubG9hZGluZycsIG9uZG93bmxvYWRpbmcsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlv
bkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRl
cmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25s
b2FkIHByb2Nlc3Mgd2FzIG5vdCBhYm9ydGVkIGFmdGVyIGRvd25sb2FkaW5nIGV2ZW50IHNpbmNl
IG1hbmlmZXN0IHdhcyBub3QgZm91bmQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgor
PC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2Fk
IHByb2Nlc3Mgd2FzIGFib3J0ZWQuCitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3
YXMgYWJvcnRlZCBhZnRlciBkb3dubG9hZGluZyBldmVudCBhbHRob3VnaCByZXNvdXJjZSB3YXMg
bm90IGZvdW5kLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy1yZXNvdXJjZS00MDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNl
cy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdCI+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQorCitm
dW5jdGlvbiBvbmRvd25sb2FkaW5nKCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsg
Cit9CisKK2Z1bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAg
bG9nKCJub3VwZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24g
b25jYWNoZWQoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7Cisg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NFU1Mi
KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZl
bnRMaXN0ZW5lcignZG93bmxvYWRpbmcnLCBvbmRvd25sb2FkaW5nLCBmYWxzZSk7CithcHBsaWNh
dGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2Up
OworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwg
ZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJy
b3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVh
ZHknLCBvbnVwZGF0ZXJlYWR5LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVz
dHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGRvd25sb2FkaW5nIGV2
ZW50IGFsdGhvdWdoIHJlc291cmNlIHdhcyBub3QgZm91bmQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmRvd25sb2FkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNo
ZS1vbmRvd25sb2FkaW5nLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBs
b2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uZG93bmxvYWRpbmcoKSB7
CisgICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rpb24gb25ub3VwZGF0
ZSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZB
SUxVUkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
KworZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBs
b2coIlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlv
biBvbmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdkb3dubG9hZGluZycs
IG9uZG93bmxvYWRpbmcsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5l
cignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2
ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRpb25D
YWNoZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZhbHNl
KTsKKworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mg
d2FzIGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25w
cm9ncmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb24gQ2FjaGUg
ZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBw
cm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIHByb2dyZXNzIGV2ZW50LgorbG9hZGluZyByZXNvdXJj
ZTogMCAvIDQgbG9hZGluZyByZXNvdXJjZTogMSAvIDQgbG9hZGluZyByZXNvdXJjZTogMiAvIDQg
bG9hZGluZyByZXNvdXJjZTogMyAvIDQgU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorPGh0
bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0Ij4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9
CisKK2Z1bmN0aW9uIG9ucHJvZ3Jlc3MoZXZlbnQpIHsKKyAgICBsb2coImxvYWRpbmcgcmVzb3Vy
Y2U6ICIgKyBldmVudC5sb2FkZWQgKyAiIC8gIiArIGV2ZW50LnRvdGFsKTsKKyAgICBpZiAoZXZl
bnQubG9hZGVkID09IDMpIAorICAgICAgICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0KCk7Cit9CisK
K2Z1bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJu
b3VwZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25jYWNo
ZWQoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CisgICAgbG9n
KCJGQUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NFU1MiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0
ZW5lcignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNh
Y2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRp
b25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZh
bHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvbnBy
b2dyZXNzLCBmYWxzZSk7Cis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxv
YWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBwcm9ncmVzcyBldmVudC48L2Rpdj4KKzxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0
Lm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3QJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMiBAQAorQ0FDSEUgTUFOSUZFU1QKK25vdC1leGlzdC52b2IKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLm1hbmlmZXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9u
Y2hlY2tpbmcubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLm1hbmlmZXN0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0NBQ0hFIE1BTklGRVNUCithYm9ydC1jYWNoZS1vbmNo
ZWNraW5nLnRleHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLm1hbmlmZXN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLnRleHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS1vbmNoZWNraW5nLnRleHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAor
dGVzdCBmb3IgYXBwbGljYXRpb25DYWNoZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNo
ZWNraW5nLnRleHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy1yZXNvdXJjZS00MDQubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJl
c291cmNlLTQwNC5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitDQUNIRSBN
QU5JRkVTVAorbm90LWV4aXN0LnZvYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcubWFuaWZl
c3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmcubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQ0FDSEUgTUFO
SUZFU1QKK2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcudGV4dApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcubWFuaWZlc3QKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRp
bmcudGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGZvciBhcHBsaWNhdGlv
bkNhY2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcudGV4dApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTEudGV4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNl
cy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTEudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3Mt
MS50ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9u
Q2FjaGUuYWJvcnQKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0xLnRleHQKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0yLnRleHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25wcm9ncmVzcy0yLnRleHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTIu
dGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGZvciBhcHBsaWNhdGlvbkNh
Y2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0zLnRl
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVzdCBmb3IgYXBwbGljYXRpb25DYWNo
ZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTQudGV4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9y
dC1jYWNoZS1vbnByb2dyZXNzLTQudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtNC50ZXh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUu
YWJvcnQKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRleHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5tYW5pZmVzdAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9y
dC1jYWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5tYW5p
ZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitDQUNIRSBNQU5JRkVTVAorYWJvcnQt
Y2FjaGUtb25wcm9ncmVzcy0xLnRleHQKK2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0Cith
Ym9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dAorYWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRl
eHQKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gMTA1MDE2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0MywxMyBAQCBCVUdDUjI0MTgyIFNMT1cgREVCVUcgOiBzdmcvZmlsdGVycy9iaWctCiAvLyBT
ZWUgQlVHQ1IxMDQ3OTcKIAogQlVHV0s3NDc4NyBERUJVRyBTTE9XIDogZmFzdC9qcy9kZmctcG9p
c29uLWZ1enouaHRtbCA9IFBBU1MKLQorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwgPSBGQUlMCitCVUdXSzc2MjcwIFNLSVAg
OiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0
Lmh0bWwgPSBGQUlMCitCVUdXSzc2MjcwIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwgPSBGQUlMCitCVUdXSzc2MjcwIFNL
SVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbCA9
IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUt
b25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6
IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00
MDQuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25wcm9ncmVzcy5odG1sID0gRkFJTAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFRFTVBPUkFS
SUxZIFNLSVBQRUQgVEVTVFMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122543</attachid>
            <date>2012-01-14 04:54:07 -0800</date>
            <delta_ts>2012-01-16 12:51:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>abort.patch</filename>
            <type>text/plain</type>
            <size>34569</size>
            <attacher name="huangxueqing">huangxueqing</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE0ICB4dWVxaW5n
IGh1YW5nICA8aHVhbmd4dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgb2ZmbGluZSB3
ZWIgYXBwbGljYXRpb25zIEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFib3J0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwKKyAgICAgICAgaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5odG1sCisg
ICAgICAgIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJj
ZS00MDQuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmcuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
ZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9hcHBjYWNo
ZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCisgICAgICAgIGh0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sCisKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmFib3J0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjphYm9ydCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisKIDIwMTItMDEt
MTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQg
ZmxleC1hbGlnbgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDEwNTAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjAsNiArNDYwLDE5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjp1cGRhdGUoRnJhbWUKICAgICBtX21hbmlmZXN0SGFuZGxlID0gY3JlYXRlUmVzb3VyY2VI
YW5kbGUobV9tYW5pZmVzdFVSTCwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPm1hbmlm
ZXN0UmVzb3VyY2UoKSA6IDApOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJv
cnQoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXR1cyA9PSBJZGxlKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fdXBkYXRlU3RhdHVzID09IENoZWNraW5nIHx8ICht
X3VwZGF0ZVN0YXR1cyA9PSBEb3dubG9hZGluZyAmJiBtX2NhY2hlQmVpbmdVcGRhdGVkKSk7CisK
KyAgICBpZiAobV9jb21wbGV0aW9uVHlwZSAhPSBOb25lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBUaXBNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNo
ZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLiIpOworICAgIGNhY2hlVXBkYXRlRmFpbGVk
KCk7Cit9CisKIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKQogewogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgdXBkYXRl
KEZyYW1lKiwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbik7IC8vIEZJWE1FOiBGcmFtZSBz
aG91bGQgbm90IGJlIG5lZWRlZCB3aGVuIHVwZGF0aW5nIHdpdGhvdXQgYnJvd3NpbmcgY29udGV4
dC4KICAgICB2b2lkIGNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAKKyAg
ICB2b2lkIGFib3J0KEZyYW1lKik7CiAKICAgICBib29sIGNhY2hlSXNCZWluZ1VwZGF0ZWQoY29u
c3QgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpIGNvbnN0IHsgcmV0dXJuIGNhY2hlID09IG1fY2Fj
aGVCZWluZ1VwZGF0ZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiAxMDUwMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTksNiArNDU5LDE4IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OnN3YXBDYWNoZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKK3sKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNh
Y2hlR3JvdXAgPSBjYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKKyAgICBpZiAoY2Fj
aGVHcm91cCkKKyAgICAgICAgY2FjaGVHcm91cC0+YWJvcnQobV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gYXBw
bGljYXRpb25DYWNoZSgpOworICAgICAgICBpZiAoY2FjaGUpCisgICAgICAgICAgICBjYWNoZS0+
Z3JvdXAoKS0+YWJvcnQobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CisgICAgfQorfQorCiBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKIHsK
ICAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgJKHJldmlzaW9uIDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3Q7
ICAKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUoKTsKKyAg
ICAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgICAgIHZvaWQgc2V0RE9NQXBwbGljYXRpb25DYWNo
ZShET01BcHBsaWNhdGlvbkNhY2hlKik7CiAgICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAxMDUwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDEzIEBAIHZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6c3dhcENhY2hlKEV4Y2UKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKIH0KIAordm9pZCBET01BcHBsaWNhdGlvbkNh
Y2hlOjphYm9ydCgpCit7CisgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGNhY2hlSG9zdCA9IGFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCk7CisgICAgaWYgKGNhY2hlSG9zdCkKKyAgICAgICAgY2FjaGVI
b3N0LT5hYm9ydCgpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIERPTUFwcGxpY2F0aW9uQ2Fj
aGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yRE9NQXBwbGljYXRpb25DYWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gMTA1
MDE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgc2hvcnQgc3RhdHVzKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGUoRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgc3dhcENhY2hlKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFib3J0KCk7
CiAKICAgICAvLyBFdmVudFRhcmdldCBpbXBsCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9u
IDEwNTAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBtb2R1bGUgb2ZmbGlu
ZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzd2Fw
Q2FjaGUoKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQg
YWJvcnQoKTsKIAogICAgICAgICAvLyBldmVudHMKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25jaGVja2luZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDUwMTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTE0ICB4dWVxaW5nIGh1YW5nICA8aHVhbmd4
dWVxaW5nQGJhaWR1LmNvbT4KKworICAgICAgICBBZGQgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb25z
IEFQSSBhcHBsaWNhdGlvbkNhY2hlLmFib3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YWJvcnQpOgorCiAyMDEyLTAxLTEz
ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIV25kREMgaXMg
YSBiZXR0ZXIgbmFtZSB0aGFuIEh3bmREQy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDEwNTAxNikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwxMSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0Ojpzd2FwQ2FjaGUoKQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjphYm9ydCgpCit7CisgICAgLy8gRklYTUU6IFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzAKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiB7CiAgICAgQVNTRVJUKG1fZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDE2KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTIt
MDEtMTQgIHh1ZXFpbmcgaHVhbmcgIDxodWFuZ3h1ZXFpbmdAYmFpZHUuY29tPgorCisgICAgICAg
IEFkZCBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbnMgQVBJIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1h
bmlmZXN0LTQwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291
cmNlLTQwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
YWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRp
bmctbWFuaWZlc3QtNDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxv
YWRpbmctcmVzb3VyY2UtNDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jl
c3MuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3Q6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tp
bmcubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJj
ZS00MDQubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcubWFuaWZlc3Q6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRp
bmcudGV4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
YWJvcnQtY2FjaGUtb25wcm9ncmVzcy0xLnRleHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1v
bnByb2dyZXNzLTMudGV4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRleHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MubWFu
aWZlc3Q6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDoKKwogMjAxMi0wMS0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFNraXAgdGVzdCB0aGF0IHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByMTA1MDE1LgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNr
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NB
R0U6IEFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQuCitUaGlz
IHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBjaGVja2luZyBl
dmVudC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy1tYW5pZmVzdC00MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdF
OiBBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0
ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hlY2tpbmcgZXZl
bnQgYW5kIGJlZm9yZSB1cGRhdGUgZmFpbGVkLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVz
dC00MDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9
InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQwNC5tYW5pZmVzdCI+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOwor
fQorCitmdW5jdGlvbiBvbmNoZWNraW5nKCkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQo
KTsgCit9CisKK2Z1bmN0aW9uIG9ubm91cGRhdGUoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7Cisg
ICAgbG9nKCJub3VwZGF0ZSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gb25jYWNoZWQoKSB7CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJDQUNIRUQiKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7
CisgICAgbG9nKCJGQUlMVVJFIik7CisgICAgbG9nKCJVUERBVEVSRUFEWSIpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpIHsKKyAgICBsb2coIlNVQ0NF
U1MiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignY2hlY2tpbmcnLCBvbmNoZWNraW5nLCBmYWxzZSk7CithcHBsaWNhdGlv
bkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgb25ub3VwZGF0ZSwgZmFsc2UpOwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBvbmNhY2hlZCwgZmFs
c2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3Is
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlcmVhZHkn
LCBvbnVwZGF0ZXJlYWR5LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVzdHMg
dGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGNoZWNraW5nIGV2ZW50IGFu
ZCBiZWZvcmUgdXBkYXRlIGZhaWxlZC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8
L2h0bWw+CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0
LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMg
YWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFm
dGVyIGNoZWNraW5nIGV2ZW50IGFuZCBiZWZvcmUgdXBkYXRlIGZhaWxlZC4KK1NVQ0NFU1MKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2lu
Zy1yZXNvdXJjZS00MDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
Y2hlY2tpbmctcmVzb3VyY2UtNDA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAK
KzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJj
ZS00MDQubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBt
ZXNzYWdlICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25jaGVja2luZygpIHsKKyAgICBhcHBsaWNh
dGlvbkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkgeworICAgIGxv
ZygiRkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAg
IGxvZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBv
bnVwZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiVVBEQVRFUkVB
RFkiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7
CisgICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoZWNraW5nJywgb25jaGVja2luZywgZmFs
c2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91
cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVk
Jywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOworCis8L3NjcmlwdD4KKwor
PGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZCBhZnRlciBj
aGVja2luZyBldmVudCBhbmQgYmVmb3JlIHVwZGF0ZSBmYWlsZWQuPC9kaXY+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctcmVzb3VyY2UtNDA0
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNo
ZS1vbmNoZWNraW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNr
aW5nLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIG9uY2hlY2tpbmcoKSB7CisgICAgYXBwbGljYXRp
b25DYWNoZS5hYm9ydCgpOyAKK30KKworZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAgICBsb2co
IkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBs
b2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb251
cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFURVJFQURZ
Iik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgewor
ICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworYXBwbGlj
YXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcsIGZhbHNl
KTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBvbm5vdXBk
YXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcs
IG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vy
cm9yJywgb25lcnJvciwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCd1cGRhdGVyZWFkeScsIG9udXBkYXRlcmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxk
aXY+VGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgY2hl
Y2tpbmcgZXZlbnQuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9odG1sPgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxv
YWRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93
bmxvYWRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNP
TEUgTUVTU0FHRTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRl
ZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIGRv
d25sb2FkaW5nIGV2ZW50LgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbmRvd25sb2FkaW5nLW1hbmlmZXN0LTQwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxv
YWRpbmctbWFuaWZlc3QtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitUaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMgbm90IGFib3J0ZWQgYWZ0
ZXIgZG93bmxvYWRpbmcgZXZlbnQgc2luY2UgbWFuaWZlc3Qgd2FzIG5vdCBmb3VuZC4KK1NVQ0NF
U1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25k
b3dubG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25k
b3dubG9hZGluZy1tYW5pZmVzdC00MDQubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25kb3dubG9h
ZGluZygpIHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBv
bm5vdXBkYXRlKCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAg
IGxvZygiRkFJTFVSRSIpOworICAgIGxvZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIp
OworICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Rvd25s
b2FkaW5nJywgb25kb3dubG9hZGluZywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVu
dExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2Fj
aGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0
aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFk
eSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQg
cHJvY2VzcyB3YXMgbm90IGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQgc2luY2UgbWFu
aWZlc3Qgd2FzIG5vdCBmb3VuZC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2h0
bWw+CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25k
b3dubG9hZGluZy1yZXNvdXJjZS00MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXBwbGljYXRpb24gQ2FjaGUgZG93bmxvYWQgcHJv
Y2VzcyB3YXMgYWJvcnRlZC4KK1RoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBwcm9jZXNzIHdhcyBh
Ym9ydGVkIGFmdGVyIGRvd25sb2FkaW5nIGV2ZW50IGFsdGhvdWdoIHJlc291cmNlIHdhcyBub3Qg
Zm91bmQuCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fi
b3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5n
LXJlc291cmNlLTQwNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0Ij4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0
aW9uIG9uZG93bmxvYWRpbmcoKSB7CisgICAgYXBwbGljYXRpb25DYWNoZS5hYm9ydCgpOyAKK30K
KworZnVuY3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2co
Im5vdXBkYXRlIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNh
Y2hlZCgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBs
b2coIkZBSUxVUkUiKTsKKyAgICBsb2coIlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExp
c3RlbmVyKCdkb3dubG9hZGluZycsIG9uZG93bmxvYWRpbmcsIGZhbHNlKTsKK2FwcGxpY2F0aW9u
Q2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7Cith
cHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxz
ZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwg
ZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGVyZWFkeScs
IG9udXBkYXRlcmVhZHksIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxkaXY+VGhpcyB0ZXN0cyB0
aGF0IGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgZG93bmxvYWRpbmcgZXZlbnQg
YWx0aG91Z2ggcmVzb3VyY2Ugd2FzIG5vdCBmb3VuZC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8L2h0bWw+CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU0IEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9u
ZG93bmxvYWRpbmcubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIlxuIjsKK30KKworZnVuY3Rpb24gb25kb3dubG9hZGluZygpIHsKKyAg
ICBhcHBsaWNhdGlvbkNhY2hlLmFib3J0KCk7IAorfQorCitmdW5jdGlvbiBvbm5vdXBkYXRlKCkg
eworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygibm91cGRhdGUiKTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVkKCkgeworICAgIGxvZygiRkFJTFVS
RSIpOworICAgIGxvZygiQ0FDSEVEIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitm
dW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkgeworICAgIGxvZygiRkFJTFVSRSIpOworICAgIGxvZygi
VVBEQVRFUkVBRFkiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9u
ZXJyb3IoKSB7CisgICAgbG9nKCJTVUNDRVNTIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Rvd25sb2FkaW5nJywgb25k
b3dubG9hZGluZywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdu
b3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRM
aXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2UpOwor
Cis8L3NjcmlwdD4KKworPGRpdj5UaGlzIHRlc3RzIHRoYXQgZG93bmxvYWQgcHJvY2VzcyB3YXMg
YWJvcnRlZCBhZnRlciBkb3dubG9hZGluZyBldmVudC48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8L2h0bWw+CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dy
ZXNzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBBcHBsaWNhdGlvbiBDYWNoZSBkb3du
bG9hZCBwcm9jZXNzIHdhcyBhYm9ydGVkLgorVGhpcyB0ZXN0cyB0aGF0IGRvd25sb2FkIHByb2Nl
c3Mgd2FzIGFib3J0ZWQgYWZ0ZXIgcHJvZ3Jlc3MgZXZlbnQuCitsb2FkaW5nIHJlc291cmNlOiAw
IC8gNCBsb2FkaW5nIHJlc291cmNlOiAxIC8gNCBsb2FkaW5nIHJlc291cmNlOiAyIC8gNCBsb2Fk
aW5nIHJlc291cmNlOiAzIC8gNCBTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2Fj
aGUtb25wcm9ncmVzcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACis8aHRtbCBt
YW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MubWFuaWZlc3QiPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsKK30KKwor
ZnVuY3Rpb24gb25wcm9ncmVzcyhldmVudCkgeworICAgIGxvZygibG9hZGluZyByZXNvdXJjZTog
IiArIGV2ZW50LmxvYWRlZCArICIgLyAiICsgZXZlbnQudG90YWwpOworICAgIGlmIChldmVudC5s
b2FkZWQgPT0gMykgCisgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGUuYWJvcnQoKTsKK30KKworZnVu
Y3Rpb24gb25ub3VwZGF0ZSgpIHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIm5vdXBk
YXRlIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgp
IHsKKyAgICBsb2coIkZBSUxVUkUiKTsKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKKyAgICBsb2coIkZB
SUxVUkUiKTsKKyAgICBsb2coIlVQREFURVJFQURZIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZl
bnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNh
Y2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZXJlYWR5Jywgb251cGRhdGVyZWFkeSwgZmFsc2Up
OworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9ucHJvZ3Jl
c3MsIGZhbHNlKTsKKzwvc2NyaXB0PgorCis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBkb3dubG9hZCBw
cm9jZXNzIHdhcyBhYm9ydGVkIGFmdGVyIHByb2dyZXNzIGV2ZW50LjwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFu
aWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQubWFuaWZlc3QJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9y
dC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAorbm90LWV4aXN0LnZvYgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVj
a2luZy5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcubWFuaWZlc3QJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMiBAQAorQ0FDSEUgTUFOSUZFU1QKK2Fib3J0LWNhY2hlLW9uY2hlY2tp
bmcudGV4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9u
Y2hlY2tpbmcubWFuaWZlc3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
CgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQt
Y2FjaGUtb25jaGVja2luZy50ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcudGV4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0
LWNhY2hlLW9uY2hlY2tpbmcudGV4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0
IGZvciBhcHBsaWNhdGlvbkNhY2hlLmFib3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uY2hlY2tp
bmcudGV4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLXJlc291cmNlLTQwNC5tYW5pZmVzdAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5n
LXJlc291cmNlLTQwNC5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVzb3Vy
Y2UtNDA0Lm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0NBQ0hFIE1BTklG
RVNUCitub3QtZXhpc3Qudm9iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy1yZXNvdXJjZS00MDQubWFuaWZlc3QKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9h
Ym9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9h
ZGluZy5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVT
VAorYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5tYW5pZmVzdApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLnRleHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJv
cnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50
ZXh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2Fj
aGUuYWJvcnQKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy50ZXh0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50ZXh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fi
b3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMS50ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0xLnRl
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVzdCBmb3IgYXBwbGljYXRpb25DYWNo
ZS5hYm9ydAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTEudGV4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTIudGV4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9y
dC1jYWNoZS1vbnByb2dyZXNzLTIudGV4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMi50ZXh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgZm9yIGFwcGxpY2F0aW9uQ2FjaGUu
YWJvcnQKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0yLnRleHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0zLnRleHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQt
Y2FjaGUtb25wcm9ncmVzcy0zLnRleHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTMudGV4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGZvciBhcHBsaWNhdGlvbkNhY2hlLmFi
b3J0CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0Cl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MtNC50ZXh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNh
Y2hlLW9ucHJvZ3Jlc3MtNC50ZXh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy00LnRleHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVzdCBmb3IgYXBwbGljYXRpb25DYWNoZS5hYm9y
dAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLTQudGV4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Fib3J0LWNh
Y2hlLW9ucHJvZ3Jlc3MubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLm1hbmlmZXN0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK0NBQ0hFIE1BTklGRVNUCithYm9ydC1jYWNo
ZS1vbnByb2dyZXNzLTEudGV4dAorYWJvcnQtY2FjaGUtb25wcm9ncmVzcy0yLnRleHQKK2Fib3J0
LWNhY2hlLW9ucHJvZ3Jlc3MtMy50ZXh0CithYm9ydC1jYWNoZS1vbnByb2dyZXNzLTQudGV4dAor
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDUwMTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDEzIEBAIEJVR0NSMjQxODIgU0xPVyBERUJVRyA6IHN2Zy9maWx0ZXJzL2JpZy0KIC8vIFNlZSBC
VUdDUjEwNDc5NwogCiBCVUdXSzc0Nzg3IERFQlVHIFNMT1cgOiBmYXN0L2pzL2RmZy1wb2lzb24t
ZnV6ei5odG1sID0gUEFTUwotCitCVUdXSzc2MjcwIFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hl
L2Fib3J0LWNhY2hlLW9uY2hlY2tpbmcuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0
dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy1tYW5pZmVzdC00MDQuaHRt
bCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2Fj
aGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbCA9IEZBSUwKK0JVR1dLNzYyNzAgU0tJUCA6
IGh0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sID0gRkFJ
TAorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRv
d25sb2FkaW5nLW1hbmlmZXN0LTQwNC5odG1sID0gRkFJTAorQlVHV0s3NjI3MCBTS0lQIDogaHR0
cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5o
dG1sID0gRkFJTAorQlVHV0s3NjI3MCBTS0lQIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1j
YWNoZS1vbnByb2dyZXNzLmh0bWwgPSBGQUlMCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gVEVNUE9SQVJJTFkg
U0tJUFBFRCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
      

    </bug>

</bugzilla>