<?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>152390</bug_id>
          
          <creation_ts>2015-12-17 10:53:18 -0800</creation_ts>
          <short_desc>testRunner.runUIScript crashes while running multiple tests in a row that invokes the same UIScript</short_desc>
          <delta_ts>2016-01-15 12:02:24 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>lforschler</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150006</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-12-17 10:53:18 -0800</bug_when>
    <thetext>I have created a series of tests: /http/tests/contentdispositionattachmentsandbox/referer-header-stripped* which will include a js: http/tests/contentdispositionattachmentsandbox/resources/referer-header-stripped.js. In the JS, it has a navigation function to simulate human interaction, as follows:
function navigation() {
    // Due to the sandbox, it&apos;s not possible to run script in the iframe or even access its contentDocument.
    var element = document.getElementsByTagName(&quot;iframe&quot;)[0];
    var x = element.offsetLeft + 10;
    var y = element.offsetTop + 10;

    if (window.testRunner) {
        if (window.eventSender) {
            eventSender.mouseMoveTo(x, y);
            eventSender.mouseDown();
            eventSender.mouseUp();
        }

        if (testRunner.runUIScript)
            testRunner.runUIScript(&quot;(function() { uiController.singleTapAtPoint(&quot; + x + &quot;, &quot; + y + &quot;); })()&quot;);
    }
}

All the tests if run separately, will pass in iOS-simulator-wk2. Yet, if they are executed by the command: run-webkit-tests --ios-simulator ./http/tests/contentdispositionattachmentsandbox/referer-header-stripped* in a row, WebKitTestRunner will then crash. It could crash in any one of the test. Here are two examples:
Regressions: Unexpected crashes (2)
  http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-no-referrer.html [ Crash ]
  http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-unsafe-url.html [ Crash ]
Regressions: Unexpected crashes (2)
  http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-origin.html [ Crash ]
  http/tests/contentdispositionattachmentsandbox/referer-header-stripped.html [ Crash ]
And the all crashes at the same location, here is the crash log:
Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
CRASHING TEST: /contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-unsafe-url.html
CoreSimulator 201.3 - Device: iPhone 5s WebKit Tester0 - Runtime: iOS 9.2 (13D11) - DeviceType: iPhone 5s

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   WebKitTestRunnerApp           	0x00000001087e8924 bool WTF::IdentityHashTranslator&lt;WTF::IntHash&lt;unsigned int&gt; &gt;::equal&lt;unsigned int, unsigned int&gt;(unsigned int const&amp;, unsigned int const&amp;) + 20 (HashTable.h:284)
1   WebKitTestRunnerApp           	0x00000001087e92a8 WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt;* WTF::HashTable&lt;unsigned int, WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt; &gt;, WTF::IntHash&lt;unsigned int&gt;, WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;unsigned int&gt; &gt;::lookup&lt;WTF::IdentityHashTranslator&lt;WTF::IntHash&lt;unsigned int&gt; &gt;, unsigned int&gt;(unsigned int const&amp;) + 168 (HashTable.h:622)
2   WebKitTestRunnerApp           	0x00000001087ea8ff WTF::HashTableIterator&lt;unsigned int, WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt; &gt;, WTF::IntHash&lt;unsigned int&gt;, WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;unsigned int&gt; &gt; WTF::HashTable&lt;unsigned int, WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt; &gt;, WTF::IntHash&lt;unsigned int&gt;, WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;unsigned int&gt; &gt;::find&lt;WTF::IdentityHashTranslator&lt;WTF::IntHash&lt;unsigned int&gt; &gt;, unsigned int&gt;(unsigned int const&amp;) + 79 (HashTable.h:999)
3   WebKitTestRunnerApp           	0x00000001087ea874 WTF::HashTable&lt;unsigned int, WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;unsigned int, WTR::UIScriptContext::Task&gt; &gt;, WTF::IntHash&lt;unsigned int&gt;, WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;unsigned int&gt; &gt;::find(unsigned int const&amp;) + 36 (HashTable.h:392)
4   WebKitTestRunnerApp           	0x00000001087ea67f WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::find(unsigned int const&amp;) + 47 (HashMap.h:242)
5   WebKitTestRunnerApp           	0x00000001087e7c3e WTF::HashMap&lt;unsigned int, WTR::UIScriptContext::Task, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WTR::UIScriptContext::Task&gt; &gt;::take(unsigned int const&amp;) + 46 (HashMap.h:389)
6   WebKitTestRunnerApp           	0x00000001087e7210 WTR::UIScriptContext::asyncTaskComplete(unsigned int) + 48 (UIScriptContext.cpp:97)
7   WebKitTestRunnerApp           	0x00000001087af4a6 ___ZN3WTR18UIScriptController16singleTapAtPointEllPK13OpaqueJSValue_block_invoke + 38 (UIScriptControllerIOS.mm:84)
8   WebKitTestRunnerApp           	0x00000001087a9081 -[HIDEventGenerator markerEventReceived:] + 225 (HIDEventGenerator.mm:426)
9   WebKitTestRunnerApp           	0x00000001087a6b4d -[WebKitTestRunnerApp _handleHIDEvent:] + 61 (mainIOS.mm:78)
10  com.apple.UIKit               	0x000000010b39b532 _UIApplicationHandleEventQueue + 4695
11  com.apple.CoreFoundation      	0x000000010f9b2a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
12  com.apple.CoreFoundation      	0x000000010f9a88d7 __CFRunLoopDoSources0 + 423
13  com.apple.CoreFoundation      	0x000000010f9a7e13 __CFRunLoopRun + 867
14  com.apple.CoreFoundation      	0x000000010f9a7828 CFRunLoopRunSpecific + 488
15  com.apple.Foundation          	0x000000010f0452f1 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 267
16  WebKitTestRunnerApp           	0x00000001087edb56 WTR::TestController::platformRunUntil(bool&amp;, double) + 262 (TestControllerCocoa.mm:110)
17  WebKitTestRunnerApp           	0x00000001087c1ab9 WTR::TestController::runUntil(bool&amp;, double) + 73 (TestController.cpp:1106)
18  WebKitTestRunnerApp           	0x00000001087dcdd1 WTR::TestInvocation::invoke() + 977 (TestInvocation.cpp:148)
19  WebKitTestRunnerApp           	0x00000001087c73db WTR::TestController::runTest(char const*) + 1659 (TestController.cpp:1067)
20  WebKitTestRunnerApp           	0x00000001087c80d8 WTR::TestController::runTestingServerLoop() + 184 (TestController.cpp:1083)
21  WebKitTestRunnerApp           	0x00000001087bdc57 WTR::TestController::run() + 55 (TestController.cpp:1091)
22  WebKitTestRunnerApp           	0x00000001087bd7e6 WTR::TestController::TestController(int, char const**) + 1478 (TestController.cpp:143)
23  WebKitTestRunnerApp           	0x00000001087bde23 WTR::TestController::TestController(int, char const**) + 35 (TestController.cpp:144)
24  WebKitTestRunnerApp           	0x00000001087a66ff -[WebKitTestRunnerApp _runTestController] + 47 (mainIOS.mm:45)
25  com.apple.Foundation          	0x000000010f041067 __NSThreadPerformPerform + 283
26  com.apple.CoreFoundation      	0x000000010f9b2a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
27  com.apple.CoreFoundation      	0x000000010f9a88d7 __CFRunLoopDoSources0 + 423
28  com.apple.CoreFoundation      	0x000000010f9a7e13 __CFRunLoopRun + 867
29  com.apple.CoreFoundation      	0x000000010f9a7828 CFRunLoopRunSpecific + 488
30  com.apple.GraphicsServices    	0x00000001129d0ad2 GSEventRunModal + 161
31  com.apple.UIKit               	0x000000010b3a1610 UIApplicationMain + 171
32  WebKitTestRunnerApp           	0x00000001087a6ba3 main + 67 (mainIOS.mm:87)
33  libdyld.dylib                 	0x000000011030392d start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150023</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-12-17 12:22:30 -0800</bug_when>
    <thetext>Tests skipped on ios-simulator with &lt;http://trac.webkit.org/changeset/194225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150044</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-17 13:20:44 -0800</bug_when>
    <thetext>Jiewen, why don&apos;t you try to fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150059</commentid>
    <comment_count>3</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-12-17 13:48:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Jiewen, why don&apos;t you try to fix this?

I did multiple attempts to fix the test case in the morning with Wenson. However, none of them works. Therefore, Let&apos;s skip these test cases for the iOS simulator. I will come back and try to fix it later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150149</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-12-17 17:16:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/23948321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153541</commentid>
    <comment_count>5</comment_count>
      <attachid>268478</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-07 13:28:31 -0800</bug_when>
    <thetext>Created attachment 268478
proposed fix

This fixes bugs in WebKitTestRunner, so the tests pass reliably for me.

However there is still something wrong with the tests too - the fact that completion sometimes only happens after a test finishes - yet the test passes - means that we don&apos;t actually test the operation whose completion it is! I will not be looking into that, but someone should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153576</commentid>
    <comment_count>6</comment_count>
      <attachid>268478</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-07 14:09:51 -0800</bug_when>
    <thetext>Comment on attachment 268478
proposed fix

Clearing flags on attachment: 268478

Committed r194721: &lt;http://trac.webkit.org/changeset/194721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153577</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-07 14:09:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153720</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-01-07 18:10:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created attachment 268478 [details]
&gt; proposed fix
&gt; 
&gt; This fixes bugs in WebKitTestRunner, so the tests pass reliably for me.
&gt; 
&gt; However there is still something wrong with the tests too - the fact that
&gt; completion sometimes only happens after a test finishes - yet the test
&gt; passes - means that we don&apos;t actually test the operation whose completion it
&gt; is! I will not be looking into that, but someone should.

I might be able to take a step into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155868</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-01-15 12:02:24 -0800</bug_when>
    <thetext>Bug 153140 is created to track the test case issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268478</attachid>
            <date>2016-01-07 13:28:31 -0800</date>
            <delta_ts>2016-01-07 14:09:51 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>UIScript.txt</filename>
            <type>text/plain</type>
            <size>20447</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5NDcxMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDE2LTAxLTA3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQgY3Jhc2hlcyB3aGlsZSBydW5uaW5n
IG11bHRpcGxlIHRlc3RzIGluIGEgcm93IHRoYXQgaW52b2tlcyB0aGUgc2FtZSBVSVNjcmlwdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMzkwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzk0ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdHdvIHVzZS1hZnRlci1mcmVlcy4KKworICAg
ICAgICAxLiBXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlJ3MgY2FsbGJhY2sg
aGFzIGEgcG9pbnRlciB0byBUZXN0SW52b2NhdGlvbiwKKyAgICAgICAgYnV0IHdlIG1heSBoYXZl
IGFscmVhZHkgcHJvZ3Jlc3NlZCB0byBhbm90aGVyIHRlc3QgYnkgdGhlIHRpbWUgdGhlIGNhbGxi
YWNrIGZpcmVzLAorICAgICAgICBoYXZpbmcgZGVzdHJveWVkIHRoZSBUZXN0SW52b2NhdGlvbi4K
KyAgICAgICAgMi4gVUlTY3JpcHRDb250cm9sbGVyIGlzIGEgUmVmQ291bnRlZCBvYmplY3QsIGJ1
dCBpdCBoYXMgYSByYXcgcG9pbnRlciB0bworICAgICAgICBVSVNjcmlwdENvbnRleHQgd2hpY2gg
aGFzIHRoZSBzYW1lIGxpZmV0aW1lIGFzIGEgVGVzdEludm9jYXRpb24uCisgICAgICAgIEFzIGEg
cmVzdWx0LCBjb21wbGV0aW9uIGJsb2NrcyBvZiBVSVNjcmlwdENvbnRyb2xsZXIgYWN0aW9ucyB3
b3VsZCB1c2UgYSBkZXN0cm95ZWQKKyAgICAgICAgVGVzdEludm9jYXRpb24uCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246On5UZXN0SW52b2NhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjp1cmwpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cnVu
VUlTaWRlU2NyaXB0QWZ0ZXJVcGRhdGVDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRleHQuY3BwOgorICAgICAgICAoVUlTY3JpcHRDb250ZXh0OjpVSVNjcmlw
dENvbnRleHQpOgorICAgICAgICAoVUlTY3JpcHRDb250ZXh0Ojp+VUlTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFVJU2NyaXB0Q29udGV4dDo6cnVuVUlTY3JpcHQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6VUlTY3JpcHRDb250cm9sbGVyKToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0RGVzdHJveWVkKToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjptYWtlV2luZG93T2JqZWN0KToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRXaWxsQmVnaW5ab29taW5nQ2FsbGJhY2sp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OndpbGxCZWdpblpvb21pbmdDYWxs
YmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRW5kWm9vbWlu
Z0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkaWRFbmRab29t
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldERpZEVu
ZFNjcm9sbGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpk
aWRFbmRTY3JvbGxpbmdDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6c2V0RGlkU2hvd0tleWJvYXJkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmRpZFNob3dLZXlib2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpzZXREaWRIaWRlS2V5Ym9hcmRDYWxsYmFjayk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6ZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2spOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnVpU2NyaXB0Q29tcGxldGUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjp6b29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6c2luZ2xlVGFwQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
ZG91YmxlVGFwQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6dHlw
ZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6Y29udGVudFZpc2libGVSZWN0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjpwbGF0Zm9ybVNldFdpbGxCZWdpblpvb21pbmdDYWxsYmFjayk6CisgICAgICAg
IChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXREaWRFbmRab29taW5nQ2FsbGJh
Y2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkU2hv
d0tleWJvYXJkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnBs
YXRmb3JtU2V0RGlkSGlkZUtleWJvYXJkQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2spOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayk6CisKIDIwMTYtMDEtMDcg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBb
YnVpbGRib3RdIGNsZWFuLWJ1aWxkIHNjcmlwdCBzaG91bGQgcmVtb3ZlIHVudHJhY2tlZCBmaWxl
cyBhbmQgcmV2ZXJ0IGxvY2FsIGNoYW5nZXMgdG9vCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMTk0NTk5KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1
LDggQEAgVGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmIAogCiBUZXN0SW52
b2NhdGlvbjo6flRlc3RJbnZvY2F0aW9uKCkKIHsKKyAgICBpZiAobV9wZW5kaW5nVUlTY3JpcHRJ
bnZvY2F0aW9uRGF0YSkKKyAgICAgICAgbV9wZW5kaW5nVUlTY3JpcHRJbnZvY2F0aW9uRGF0YS0+
dGVzdEludm9jYXRpb24gPSBudWxscHRyOwogfQogCiBXS1VSTFJlZiBUZXN0SW52b2NhdGlvbjo6
dXJsKCkgY29uc3QKQEAgLTY0Myw2ICs2NDUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyCiAgICAgICAgIGludm9jYXRpb25EYXRhLT50ZXN0SW52b2NhdGlvbiA9
IHRoaXM7CiAgICAgICAgIGludm9jYXRpb25EYXRhLT5jYWxsYmFja0lEID0gKHVuc2lnbmVkKVdL
VUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBjYWxsYmFja0lES2V5LmdldCgpKSkpOwog
ICAgICAgICBpbnZvY2F0aW9uRGF0YS0+c2NyaXB0U3RyaW5nID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBz
Y3JpcHRLZXkuZ2V0KCkpKTsKKyAgICAgICAgbV9wZW5kaW5nVUlTY3JpcHRJbnZvY2F0aW9uRGF0
YSA9IGludm9jYXRpb25EYXRhOwogICAgICAgICBXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0
aW9uVXBkYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIGludm9jYXRpb25EYXRhLCBydW5VSVNpZGVTY3JpcHRBZnRlclVwZGF0ZUNhbGxiYWNrKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY5NSwxMiArNjk4LDE3IEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKIHZvaWQgVGVzdEludm9jYXRpb246OnJ1blVJ
U2lkZVNjcmlwdEFmdGVyVXBkYXRlQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkK
IHsKICAgICBVSVNjcmlwdEludm9jYXRpb25EYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VUlTY3Jp
cHRJbnZvY2F0aW9uRGF0YSo+KGNvbnRleHQpOwotICAgIGRhdGEtPnRlc3RJbnZvY2F0aW9uLT5y
dW5VSVNpZGVTY3JpcHQoZGF0YS0+c2NyaXB0U3RyaW5nLmdldCgpLCBkYXRhLT5jYWxsYmFja0lE
KTsKKyAgICBpZiAoVGVzdEludm9jYXRpb24qIGludm9jYXRpb24gPSBkYXRhLT50ZXN0SW52b2Nh
dGlvbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNDdXJyZW50SW52b2NhdGlvbihpbnZvY2F0aW9uKSk7CisgICAgICAgIGludm9jYXRpb24t
PnJ1blVJU2lkZVNjcmlwdChkYXRhLT5zY3JpcHRTdHJpbmcuZ2V0KCksIGRhdGEtPmNhbGxiYWNr
SUQpOworICAgIH0KICAgICBkZWxldGUgZGF0YTsKIH0KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6
cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJh
Y2tJRCkKIHsKKyAgICBtX3BlbmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsK
KwogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCiAgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKICAgICAKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDE5NDU5OSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpzdHJpbmcgbV9lcnJvck1l
c3NhZ2U7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVJU2NyaXB0Q29udGV4dD4gbV9VSVNj
cmlwdENvbnRleHQ7Ci0KKyAgICBVSVNjcmlwdEludm9jYXRpb25EYXRhKiBtX3BlbmRpbmdVSVNj
cmlwdEludm9jYXRpb25EYXRhIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RS
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udGV4dC5jcHAJKHJldmlzaW9uIDE5NDU5OSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDExIEBAIFVJU2NyaXB0Q29udGV4dDo6VUlTY3JpcHRDb250
ZXh0KFVJU2NyaXAKICAgICBtX2NvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QobV9jb250ZXh0
LmdldCgpLCBnbG9iYWxPYmplY3QsICZleGNlcHRpb24pOwogfQogCitVSVNjcmlwdENvbnRleHQ6
On5VSVNjcmlwdENvbnRleHQoKQoreworICAgIG1fY29udHJvbGxlci0+Y29udGV4dERlc3Ryb3ll
ZCgpOworfQorCiB2b2lkIFVJU2NyaXB0Q29udGV4dDo6cnVuVUlTY3JpcHQoV0tTdHJpbmdSZWYg
c2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFja0lEKQogewogICAgIG1fY3VycmVudFNjcmlw
dENhbGxiYWNrSUQgPSBzY3JpcHRDYWxsYmFja0lEOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgJKHJl
dmlzaW9uIDE5NDU5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSwxMCBAQCB0eXBl
ZGVmIGVudW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBVSVNjcmlwdENvbnRleHQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVJU2NyaXB0Q29udGV4dCk7CiBwdWJsaWM6Ci0KICAg
ICBVSVNjcmlwdENvbnRleHQoVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUmKTsKKyAgICB+VUlTY3Jp
cHRDb250ZXh0KCk7CiAKICAgICB2b2lkIHJ1blVJU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwg
dW5zaWduZWQgc2NyaXB0Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXF1ZXN0VUlTY3JpcHRDb21w
bGV0aW9uKEpTU3RyaW5nUmVmKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTk0NTk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE1IEBA
CiBuYW1lc3BhY2UgV1RSIHsKIAogVUlTY3JpcHRDb250cm9sbGVyOjpVSVNjcmlwdENvbnRyb2xs
ZXIoVUlTY3JpcHRDb250ZXh0JiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQoJmNvbnRleHQpCiB7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworfQorCiB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CiAgICAgc2V0UHJvcGVydHkoY29udGV4dCwgd2luZG93T2JqZWN0LCAidWlDb250cm9sbGVyIiwg
dGhpcywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSwgZXhjZXB0aW9uKTsKQEAgLTU1LDU3ICs2MCw1NyBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWCiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpz
ZXRXaWxsQmVnaW5ab29taW5nQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKLSAgICBt
X2NvbnRleHQucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlV2lsbEJlZ2lu
Wm9vbWluZyk7CisgICAgbV9jb250ZXh0LT5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBDYWxs
YmFja1R5cGVXaWxsQmVnaW5ab29taW5nKTsKICAgICBwbGF0Zm9ybVNldFdpbGxCZWdpblpvb21p
bmdDYWxsYmFjaygpOwogfQogCiBKU1ZhbHVlUmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6d2lsbEJl
Z2luWm9vbWluZ0NhbGxiYWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0LmNhbGxi
YWNrV2l0aElEKENhbGxiYWNrVHlwZVdpbGxCZWdpblpvb21pbmcpOworICAgIHJldHVybiBtX2Nv
bnRleHQtPmNhbGxiYWNrV2l0aElEKENhbGxiYWNrVHlwZVdpbGxCZWdpblpvb21pbmcpOwogfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRW5kWm9vbWluZ0NhbGxiYWNrKEpTVmFs
dWVSZWYgY2FsbGJhY2spCiB7Ci0gICAgbV9jb250ZXh0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJh
Y2ssIENhbGxiYWNrVHlwZURpZEVuZFpvb21pbmcpOworICAgIG1fY29udGV4dC0+cmVnaXN0ZXJD
YWxsYmFjayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlRGlkRW5kWm9vbWluZyk7CiAgICAgcGxhdGZv
cm1TZXREaWRFbmRab29taW5nQ2FsbGJhY2soKTsKIH0KIAogSlNWYWx1ZVJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OmRpZEVuZFpvb21pbmdDYWxsYmFjaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Y29udGV4dC5jYWxsYmFja1dpdGhJRChDYWxsYmFja1R5cGVEaWRFbmRab29taW5nKTsKKyAgICBy
ZXR1cm4gbV9jb250ZXh0LT5jYWxsYmFja1dpdGhJRChDYWxsYmFja1R5cGVEaWRFbmRab29taW5n
KTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldERpZEVuZFNjcm9sbGluZ0NhbGxi
YWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7Ci0gICAgbV9jb250ZXh0LnJlZ2lzdGVyQ2FsbGJh
Y2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZURpZEVuZFNjcm9sbGluZyk7CisgICAgbV9jb250ZXh0
LT5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVEaWRFbmRTY3JvbGxpbmcp
OwogICAgIHBsYXRmb3JtU2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2soKTsKIH0KIAogSlNWYWx1
ZVJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9jb250ZXh0LmNhbGxiYWNrV2l0aElEKENhbGxiYWNrVHlwZURpZEVu
ZFNjcm9sbGluZyk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Y2FsbGJhY2tXaXRoSUQoQ2FsbGJh
Y2tUeXBlRGlkRW5kU2Nyb2xsaW5nKTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNl
dERpZFNob3dLZXlib2FyZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7Ci0gICAgbV9j
b250ZXh0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZURpZFNob3dLZXli
b2FyZCk7CisgICAgbV9jb250ZXh0LT5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBDYWxsYmFj
a1R5cGVEaWRTaG93S2V5Ym9hcmQpOwogICAgIHBsYXRmb3JtU2V0RGlkU2hvd0tleWJvYXJkQ2Fs
bGJhY2soKTsKIH0KIAogSlNWYWx1ZVJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmRpZFNob3dLZXli
b2FyZENhbGxiYWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0LmNhbGxiYWNrV2l0
aElEKENhbGxiYWNrVHlwZURpZFNob3dLZXlib2FyZCk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+
Y2FsbGJhY2tXaXRoSUQoQ2FsbGJhY2tUeXBlRGlkU2hvd0tleWJvYXJkKTsKIH0KIAogdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNldERpZEhpZGVLZXlib2FyZENhbGxiYWNrKEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7Ci0gICAgbV9jb250ZXh0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2ssIENh
bGxiYWNrVHlwZURpZEhpZGVLZXlib2FyZCk7CisgICAgbV9jb250ZXh0LT5yZWdpc3RlckNhbGxi
YWNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVEaWRIaWRlS2V5Ym9hcmQpOwogICAgIHBsYXRmb3Jt
U2V0RGlkSGlkZUtleWJvYXJkQ2FsbGJhY2soKTsKIH0KIAogSlNWYWx1ZVJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OmRpZEhpZGVLZXlib2FyZENhbGxiYWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9jb250ZXh0LmNhbGxiYWNrV2l0aElEKENhbGxiYWNrVHlwZURpZEhpZGVLZXlib2FyZCk7Cisg
ICAgcmV0dXJuIG1fY29udGV4dC0+Y2FsbGJhY2tXaXRoSUQoQ2FsbGJhY2tUeXBlRGlkSGlkZUtl
eWJvYXJkKTsKIH0KIAogI2lmICFQTEFURk9STShJT1MpCkBAIC0xNzIsNyArMTc3LDcgQEAgdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtQ2xlYXJBbAogCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6dWlTY3JpcHRDb21wbGV0ZShKU1N0cmluZ1JlZiByZXN1bHQpCiB7Ci0gICAgbV9j
b250ZXh0LnJlcXVlc3RVSVNjcmlwdENvbXBsZXRpb24ocmVzdWx0KTsKKyAgICBtX2NvbnRleHQt
PnJlcXVlc3RVSVNjcmlwdENvbXBsZXRpb24ocmVzdWx0KTsKICAgICBwbGF0Zm9ybUNsZWFyQWxs
Q2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAx
OTQ1OTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOSBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSVNjcmlwdENvbnRyb2xsZXIoY29u
dGV4dCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworCiAg
ICAgdm9pZCBtYWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93
T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIAogICAgIHZvaWQgZG9Bc3luY1Rh
c2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CkBAIC04Nyw3ICs4OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBKU09iamVjdFJlZiBvYmplY3RGcm9tUmVjdChjb25zdCBXS1JlY3QmKSBjb25zdDsKIAotICAg
IFVJU2NyaXB0Q29udGV4dCYgbV9jb250ZXh0OworICAgIFVJU2NyaXB0Q29udGV4dCogbV9jb250
ZXh0OwogfTsKIAogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMTk0NTk5KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MiwxMCArNDIsMTIgQEAgbmFtZXNwYWNlIFdUUiB7CiAKIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewotICAgIHVuc2lnbmVk
IGNhbGxiYWNrSUQgPSBtX2NvbnRleHQucHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2Fs
bGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29u
dGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lz
dGVudCk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
ewotICAgICAgICBtX2NvbnRleHQuYXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAg
ICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NvbnRl
eHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwogICAgIH0pOwogfQogCkBAIC01Mywx
MCArNTUsMTIgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRvdQogewog
ICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKLSAgICB1bnNpZ25lZCBjYWxs
YmFja0lEID0gbV9jb250ZXh0LnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNr
VHlwZU5vblBlcnNpc3RlbnQpOworICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQt
PnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQp
OwogCiAgICAgW3dlYlZpZXcgem9vbVRvU2NhbGU6c2NhbGUgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRp
b25IYW5kbGVyOl57Ci0gICAgICAgIG1fY29udGV4dC5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFj
a0lEKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CiAgICAgfV07CiB9
CiAKQEAgLTc3LDI5ICs4MSwzNSBAQCBzdGF0aWMgQ0dQb2ludCBnbG9iYWxUb0NvbnRlbnRDb29y
ZGluYXRlCiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzaW5nbGVUYXBBdFBvaW50KGxvbmcg
eCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewotICAgIHVuc2lnbmVkIGNhbGxiYWNr
SUQgPSBtX2NvbnRleHQucHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBl
Tm9uUGVyc2lzdGVudCk7CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJl
cGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAK
ICAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSB0YXA6Z2xv
YmFsVG9Db250ZW50Q29vcmRpbmF0ZXMoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpLCB4LCB5KSBjb21wbGV0aW9uQmxvY2s6XnsKLSAgICAg
ICAgbV9jb250ZXh0LmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgICAgICBpZiAo
IW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jb250ZXh0LT5hc3lu
Y1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKICAgICB9XTsKIH0KIAogdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2Fs
bGJhY2spCiB7Ci0gICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC5wcmVwYXJlRm9y
QXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAgICB1bnNp
Z25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNr
LCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAogICAgIFtbSElERXZlbnRHZW5lcmF0b3Ig
c2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIGRvdWJsZVRhcDpnbG9iYWxUb0NvbnRlbnRDb29yZGlu
YXRlcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCksIHgsIHkpIGNvbXBsZXRpb25CbG9jazpeewotICAgICAgICBtX2NvbnRleHQuYXN5bmNU
YXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxi
YWNrSUQpOwogICAgIH1dOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJh
Y3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVS
ZWYgY2FsbGJhY2spCiB7Ci0gICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC5wcmVw
YXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAg
ICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNh
bGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAogICAgIC8vIEFzc3VtZXMgdGhh
dCB0aGUga2V5Ym9hcmQgaXMgYWxyZWFkeSBzaG93bi4KICAgICBbW0hJREV2ZW50R2VuZXJhdG9y
IHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlEb3duOnRvV1RGU3RyaW5nKHRvV0soY2hhcmFj
dGVyKSkgY29tcGxldGlvbkJsb2NrOl57Ci0gICAgICAgIG1fY29udGV4dC5hc3luY1Rhc2tDb21w
bGV0ZShjYWxsYmFja0lEKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
CiAgICAgfV07CiB9CiAKQEAgLTEyMiwxNCArMTMyLDE2IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0
Q29udHJvbGxlcjo6Y29udGVudFYKICAgICBDR1JlY3QgY29udGVudFZpc2libGVSZWN0ID0gd2Vi
Vmlldy5fY29udGVudFZpc2libGVSZWN0OwogICAgIAogICAgIFdLUmVjdCB3a1JlY3QgPSBXS1Jl
Y3RNYWtlKGNvbnRlbnRWaXNpYmxlUmVjdC5vcmlnaW4ueCwgY29udGVudFZpc2libGVSZWN0Lm9y
aWdpbi55LCBjb250ZW50VmlzaWJsZVJlY3Quc2l6ZS53aWR0aCwgY29udGVudFZpc2libGVSZWN0
LnNpemUuaGVpZ2h0KTsKLSAgICByZXR1cm4gbV9jb250ZXh0Lm9iamVjdEZyb21SZWN0KHdrUmVj
dCk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0RnJvbVJlY3Qod2tSZWN0KTsKIH0KIAog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0V2lsbEJlZ2luWm9vbWluZ0NhbGxi
YWNrKCkKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogICAgIHdlYlZp
ZXcud2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrID0gXnsKLSAgICAgICAgbV9jb250ZXh0LmZpcmVD
YWxsYmFjayhDYWxsYmFja1R5cGVXaWxsQmVnaW5ab29taW5nKTsKKyAgICAgICAgaWYgKCFtX2Nv
bnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+ZmlyZUNhbGxi
YWNrKENhbGxiYWNrVHlwZVdpbGxCZWdpblpvb21pbmcpOwogICAgIH07CiB9CiAKQEAgLTEzNyw3
ICsxNDksOSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXREaWRFCiB7CiAg
ICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKICAgICB3ZWJWaWV3LmRpZEVuZFpv
b21pbmdDYWxsYmFjayA9IF57Ci0gICAgICAgIG1fY29udGV4dC5maXJlQ2FsbGJhY2soQ2FsbGJh
Y2tUeXBlRGlkRW5kWm9vbWluZyk7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2NvbnRleHQtPmZpcmVDYWxsYmFjayhDYWxsYmFja1R5cGVE
aWRFbmRab29taW5nKTsKICAgICB9OwogfQogCkBAIC0xNDUsNyArMTU5LDkgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkUwogewogICAgIFRlc3RSdW5uZXJXS1dlYlZp
ZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7CiAgICAgd2ViVmlldy5kaWRTaG93S2V5Ym9hcmRDYWxsYmFjayA9IF57
Ci0gICAgICAgIG1fY29udGV4dC5maXJlQ2FsbGJhY2soQ2FsbGJhY2tUeXBlRGlkU2hvd0tleWJv
YXJkKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY29udGV4dC0+ZmlyZUNhbGxiYWNrKENhbGxiYWNrVHlwZURpZFNob3dLZXlib2FyZCk7
CiAgICAgfTsKIH0KIApAQCAtMTUzLDcgKzE2OSw5IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
OjpwbGF0Zm9ybVNldERpZEgKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0g
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
OwogICAgIHdlYlZpZXcuZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2sgPSBeewotICAgICAgICBtX2Nv
bnRleHQuZmlyZUNhbGxiYWNrKENhbGxiYWNrVHlwZURpZEhpZGVLZXlib2FyZCk7CisgICAgICAg
IGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NvbnRleHQt
PmZpcmVDYWxsYmFjayhDYWxsYmFja1R5cGVEaWRIaWRlS2V5Ym9hcmQpOwogICAgIH07CiB9CiAK
QEAgLTE2MSw3ICsxNzksOSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXRE
aWRFCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKICAgICB3ZWJWaWV3
LmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0gXnsKLSAgICAgICAgbV9jb250ZXh0LmZpcmVDYWxs
YmFjayhDYWxsYmFja1R5cGVEaWRFbmRTY3JvbGxpbmcpOworICAgICAgICBpZiAoIW1fY29udGV4
dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jb250ZXh0LT5maXJlQ2FsbGJhY2so
Q2FsbGJhY2tUeXBlRGlkRW5kU2Nyb2xsaW5nKTsKICAgICB9OwogfQogCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCShy
ZXZpc2lvbiAxOTQ1OTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMiBAQCBuYW1lc3Bh
Y2UgV1RSIHsKIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVS
ZWYgY2FsbGJhY2spCiB7Ci0gICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC5wcmVw
YXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAg
ICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNh
bGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIG1fY29udGV4dC5hc3luY1Rh
c2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJh
Y2tJRCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDcxNikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAx
LTA3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIHRlc3RS
dW5uZXIucnVuVUlTY3JpcHQgY3Jhc2hlcyB3aGlsZSBydW5uaW5nIG11bHRpcGxlIHRlc3RzIGlu
IGEgcm93IHRoYXQgaW52b2tlcyB0aGUgc2FtZSBVSVNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMzkwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMzk0ODMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczogVW5za2lw
cGVkIHRlc3RzIHRoYXQgdXNlZCB0byBiZSBhZmZlY3RlZC4KKwogMjAxNi0wMS0wNyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEluY29ycmVjdCBwb3NpdGlvbjog
Zml4ZWQ7IHJlbmRlcmluZyB3aGVuIGNoaWxkIG9mIHBvc2l0aW9uOnJlbGF0aXZlL3N0aWNreS4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RF
eHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NDU5OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjgzNywxNSAr
MjgzNyw2IEBAIHdlYmtpdC5vcmcvYi8xNTIxNDEgZmFzdC9waWN0dXJlL2ltYWdlLXAKIHdlYmtp
dC5vcmcvYi8xNTIyNzkgaHR0cC90ZXN0cy9taXNjL2xhcmdlLWpzLXByb2dyYW0ucGhwIFsgUGFz
cyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMTUyMjc5IGpzL2RvbS9saW5lLWNvbHVtbi1udW1iZXJz
Lmh0bWwgWyBQYXNzIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzE1MjM5MCBodHRwL3Rlc3RzL2Nv
bnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVk
LXdpdGgtbWV0YS1yZWZlcmVyLWFsd2F5cy5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTUy
MzkwIGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJl
ci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItZGVmYXVsdC5odG1sIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvMTUyMzkwIGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNo
bWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItbmV2
ZXIuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE1MjM5MCBodHRwL3Rlc3RzL2NvbnRlbnRk
aXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgt
bWV0YS1yZWZlcmVyLW5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlLmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xNTIzOTAgaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50
c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1uby1yZWZl
cnJlci5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTUyMzkwIGh0dHAvdGVzdHMvY29udGVu
dGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0
aC1tZXRhLXJlZmVyZXItb3JpZ2luLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xNTIzOTAg
aHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhl
YWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci11bnNhZmUtdXJsLmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8xNTIzOTAgaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2ht
ZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC5odG1sIFsgU2tpcCBdCi0KIHdlYmtp
dC5vcmcvYi8xNTIxMzcgZmFzdC9tZWRpYS9tcS1hbnktaG92ZXItbWF0Y2hNZWRpYS5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTUyMTM3IGZhc3QvbWVkaWEvbXEtYW55LWhvdmVyLXN0
eWxpbmcuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1MjEzNyBmYXN0L21lZGlhL21x
LWFueS1wb2ludGVyLW1hdGNoTWVkaWEuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>