<?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>42704</bug_id>
          
          <creation_ts>2010-07-20 15:19:14 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs to print history delegate information</short_desc>
          <delta_ts>2014-03-27 21:07:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Mark Rowe (bdash)">mrowe</assigned_to>
          <cc>ap</cc>
    
    <cc>kenneth</cc>
    
    <cc>mikhail.pozdnyakov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>253987</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-20 15:19:14 -0700</bug_when>
    <thetext>WebKitTestRunner needs to print history delegate information</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253995</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-20 15:30:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/8213829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738934</commentid>
    <comment_count>2</comment_count>
      <attachid>167995</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-10 07:13:04 -0700</bug_when>
    <thetext>Created attachment 167995
WIP patch

WIP as the given patch does no provide expected result for:
http/tests/globalhistory/history-delegate-basic-302-redirect.html
http/tests/globalhistory/history-delegate-basic-refresh-redirect.html

The reason for it is that client redirection data is logged earlier than expected because History Client is
dumping directly from WebKitTestRunner UI process. 

Alternative solution would be history bundle client creation, but I would like to know reviewer&apos;s opinions first whether we really need it
because adding of a history bundle client looks like a big change affecting public APIs and work of WebFrameLoaderClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739314</commentid>
    <comment_count>3</comment_count>
      <attachid>167995</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-10 14:43:02 -0700</bug_when>
    <thetext>Comment on attachment 167995
WIP patch

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

&gt; Tools/WebKitTestRunner/TestController.cpp:531
&gt; +    // Reset logging from History Client.
&gt; +    m_shouldLogHistoryClient = false;

isn&apos;t it normally called something like m_shouldDump..

&gt; Tools/WebKitTestRunner/TestController.cpp:1078
&gt; +    // URL
&gt; +    WKRetainPtr&lt;WKURLRef&gt; urlWK(AdoptWK, WKNavigationDataCopyURL(navigationData));
&gt; +    WKRetainPtr&lt;WKStringRef&gt; urlStringWK(AdoptWK, WKURLCopyString(urlWK.get()));
&gt; +    // Title
&gt; +    WKRetainPtr&lt;WKStringRef&gt; titleWK(AdoptWK, WKNavigationDataCopyTitle(navigationData));
&gt; +    // HTTP method
&gt; +    WKRetainPtr&lt;WKURLRequestRef&gt; requestWK(AdoptWK, WKNavigationDataCopyOriginalRequest(navigationData));
&gt; +    WKRetainPtr&lt;WKStringRef&gt; methodWK(AdoptWK, WKURLRequestCopyHTTPMethod(requestWK.get()));
&gt; +    // Client redirect source
&gt; +    WKRetainPtr&lt;WKStringRef&gt; clientRedirectSourceWK(AdoptWK, WKNavigationDataCopyClientRedirectSource(navigationData));
&gt; +    bool wasRedirected = !WKStringIsEmpty(clientRedirectSourceWK.get());
&gt; +    // Was failure
&gt; +    WKRetainPtr&lt;WKURLResponseRef&gt; responseWK(AdoptWK, WKNavigationDataCopyResponse(navigationData));
&gt; +    bool wasFailure = WKNavigationDataHasSubstituteData(navigationData) || WKURLResponseHTTPStatusCode(responseWK.get()) &gt;= 400;

Please add newline before the comment. That might even make the comments unneeded as it makes it easier to read the code which is quite obvious.

Comments also ends with a punctuation mark (such as dot, question mark, etc etc)

&gt; Tools/WebKitTestRunner/TestController.cpp:1080
&gt; +    printf(&quot;WebView navigated to url \&quot;%s\&quot; with title \&quot;%s\&quot; with HTTP equivalent method \&quot;%s\&quot;.  The navigation was %s and was %s%s.\n&quot;,

Shouldnt you write to the string builder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739962</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-11 07:38:30 -0700</bug_when>
    <thetext>&gt;Tools/WebKitTestRunner/TestController.cpp:1080
&gt; &gt; +    printf(&quot;WebView navigated to url \&quot;%s\&quot; with title \&quot;%s\&quot; with HTTP equivalent method \&quot;%s\&quot;.  The navigation was %s and was %s%s.\n&quot;,
&gt; 
&gt; Shouldnt you write to the string builder?
No, because I&apos;m writing from TestController which is UI process directly (not from injected bundle). We have already dumping like this for example in runBeforeUnloadConfirmPanel() function and some other places, but this dumping is off course not with accordance with dumping from injected bundle, that is why 
 
http/tests/globalhistory/history-delegate-basic-302-redirect.html
http/tests/globalhistory/history-delegate-basic-refresh-redirect.html

cannot pass. 

So the question is: do we want the data to be dumped in expected order (and if so we need to create history bundle client which looks like a really big work), or we are glad with the existing output and will just rebaseline 2 mentioned tests.

I personally do not mind creating history bundle client in case it is needed not only for passing of those 2 tests but for something more meaningful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976878</commentid>
    <comment_count>5</comment_count>
      <attachid>167995</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 11:00:24 -0800</bug_when>
    <thetext>Comment on attachment 167995
WIP patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995191</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-03-27 17:56:44 -0700</bug_when>
    <thetext>The ordering issue is simple enough to solve: use TestInvocation::outputText rather than printf to log the messages.

I&apos;m going to post a tweaked version of the patch for review that a) fixes that issue, and b) excludes the new API on WKNavigationData for now, since it&apos;s not necessary to match the WebKit1 output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995214</commentid>
    <comment_count>7</comment_count>
      <attachid>228019</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-03-27 19:50:12 -0700</bug_when>
    <thetext>Created attachment 228019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995219</commentid>
    <comment_count>8</comment_count>
      <attachid>228019</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-03-27 20:10:48 -0700</bug_when>
    <thetext>Comment on attachment 228019
Patch

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

&gt; Tools/WebKitTestRunner/TestController.cpp:1324
&gt; +    WKRetainPtr&lt;WKURLRef&gt; urlWK(AdoptWK, WKNavigationDataCopyURL(navigationData));
&gt; +    WKRetainPtr&lt;WKStringRef&gt; urlStringWK(AdoptWK, WKURLCopyString(urlWK.get()));

I prefer the WKRetainPtr&lt;WKURLRef&gt; urlWK = adoptWK() style, as it matches the normal RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995231</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-03-27 21:07:24 -0700</bug_when>
    <thetext>Committed r166396: &lt;http://trac.webkit.org/changeset/166396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167995</attachid>
            <date>2012-10-10 07:13:04 -0700</date>
            <delta_ts>2014-03-27 19:50:07 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug42704</filename>
            <type>text/plain</type>
            <size>19374</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDljZGJkNjlhMDZiNDc1NDdiNWJmNDcyMmZlYWM4ZWFlZWRlYTkxZjcKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIE9jdCAxMCAxNjo1MzozMCAyMDEyICswMzAwCgogICAgYnVnNDI3MDQKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTRi
MmQwOS4uODQzYmFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTEwICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgaGlzdG9yeSBkZWxlZ2F0ZSBpbmZvcm1hdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI3MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXBw
ZWQgaGlzdG9yeS1yZWxhdGVkIHRlc3RzIGZvciBXSzIsIHB1dCB0aG9zZSB3aGljaCBzdGlsbAor
ICAgICAgICBmYWlsIHRvIGFwcHJvcHJpYXRlIGdyb3VwcyBpbiBUZXN0RXhwZWN0YXRpb25zIGZp
bGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0x
MC0wOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEg
dGVzdCB0byBjaGVjayBhIHN0ZXAgYXR0cmlidXRlIHdvcmtzIGZvciBhIGNhbGVuZGFyIHBpY2tl
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZTRjMzQ2
Li4yMGZmZjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNDQxLDEzICs0NDEsNiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFy
dHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFsLXN5bmMuaHRtbAogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtY3JlZGVudGlhbC1hc3luYy5o
dG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBwcmludCBoaXN0b3J5IGRlbGVnYXRl
IGluZm9ybWF0aW9uCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDI3MDQ+Ci1odHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy0z
MDItcmVkaXJlY3QuaHRtbAotaHR0cC90ZXN0cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdh
dGUtYmFzaWMtcmVmcmVzaC1yZWRpcmVjdC5odG1sCi1odHRwL3Rlc3RzL2dsb2JhbGhpc3Rvcnkv
aGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy10aXRsZS5odG1sCi1odHRwL3Rlc3RzL2dsb2JhbGhpc3Rv
cnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy12aXNpdGVkLWxpbmtzLmh0bWwKLQogIyBUaGVzZSB0
ZXN0cyBjcmFzaCB0aGUgV2ViUHJvY2VzcyB3aGVuIHJ1biB1bmRlciBXZWJLaXRUZXN0UnVubmVy
LgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NDc5PgogZmFz
dC9wYXJzZXIvcmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtaW4tYmVmb3JlbG9hZC5odG1sCkBAIC04
MDksNiArODAyLDE0IEBAIGh0dHAvdGVzdHMvZG93bmxvYWQvaW5oZXJpdGVkLWVuY29kaW5nLmh0
bWwKICMgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QoKSBoYXMgdG8gYmUg
aW1wbGVtZW50ZWQuCiBodHRwL3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tZXh0ZXJuYWwtdXJsLmh0
bWwKIAorIyBDbGllbnQgcmVkaXJlY3Rpb24gZGF0YSBpcyBsb2dnZWQgZWFybGllciB0aGFuIGV4
cGVjdGVkIGFzIEhpc3RvcnkgQ2xpZW50IGlzCisjIGR1bXBpbmcgZGlyZWN0bHkgZnJvbSBXZWJL
aXRUZXN0UnVubmVyIFVJIHByb2Nlc3MuCitodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9y
eS1kZWxlZ2F0ZS1iYXNpYy0zMDItcmVkaXJlY3QuaHRtbAoraHR0cC90ZXN0cy9nbG9iYWxoaXN0
b3J5L2hpc3RvcnktZGVsZWdhdGUtYmFzaWMtcmVmcmVzaC1yZWRpcmVjdC5odG1sCisKKyMgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyB0ZXN0UnVubmVyLnJlbW92ZUFsbFZpc2l0ZWRMaW5rcworaHR0
cC90ZXN0cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdhdGUtYmFzaWMtdmlzaXRlZC1saW5r
cy5odG1sCisKICMjIyBFTkQgT0YgKDIpIENsYXNzaWZpZWQgZmFpbHVyZXMgd2l0aG91dCBidWcg
cmVwb3J0cyAoeWV0KQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNmVmOThmMy4uNTRmMTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDEyLTEwLTEwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgaGlz
dG9yeSBkZWxlZ2F0ZSBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI3MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgcmVtYWluaW5nIGl0ZW1zIGZvciBoaXN0b3J5IHRyYWNraW5n
IGFyZSBhZGRlZCB0byBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLAorICAgICAgICB3cmFwcGluZyBB
UEkgaXMgYWxzbyBhZGRlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmU6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmU6OmRlY29kZSk6CisgICAg
ICAgIChXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tOYXZpZ2F0aW9uRGF0YS5jcHA6CisgICAgICAgIChXS05hdmlnYXRpb25EYXRhQ29weVJlc3Bv
bnNlKToKKyAgICAgICAgKFdLTmF2aWdhdGlvbkRhdGFIYXNTdWJzdGl0dXRlRGF0YSk6CisgICAg
ICAgIChXS05hdmlnYXRpb25EYXRhQ29weUNsaWVudFJlZGlyZWN0U291cmNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0
YTo6cmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YTo6aGFzU3Vi
c3RpdHV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YTo6Y2xpZW50
UmVkaXJlY3RTb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisKIDIwMTItMTAtMDkgIEJ5dW5nd29vIExlZSAg
PGJ3ODAubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ2hhbmdlIHBhcmFt
ZXRlciBhbmQgcmV0dXJuIHR5cGUgb2YgbG9hZFVybFN5bmMoKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oCmluZGV4IDk0N2QwOTAuLjA1ZDYzZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsNiArNDEs
OSBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSB7CiAgICAgICAgIGVuY29kZXItPmVu
Y29kZSh1cmwpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUodGl0bGUpOwogICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUob3JpZ2luYWxSZXF1ZXN0KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJl
c3BvbnNlKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGhhc1N1YnN0aXR1dGVEYXRhKTsKKyAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKGNsaWVudFJlZGlyZWN0U291cmNlKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSkKQEAgLTUwLDEzICs1NCwyMSBAQCBzdHJ1Y3Qg
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN0b3JlLm9yaWdpbmFsUmVxdWVzdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN0b3JlLnJl
c3BvbnNlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoc3RvcmUuaGFzU3Vic3RpdHV0ZURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdG9yZS5jbGllbnRSZWRpcmVjdFNv
dXJjZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlbWFpbmluZyBpdGVtcyB3ZSB3YW50IHRv
IHRyYWNrIGZvciBoaXN0b3J5LgogICAgIFN0cmluZyB1cmw7CiAgICAgU3RyaW5nIHRpdGxlOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3Q7CisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICBib29sIGhhc1N1YnN0aXR1dGVEYXRh
OworICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2
aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGEuY3BwCmluZGV4IGJhMDlkNGQuLmJmYzFhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTUxLDMgKzUx
LDE4IEBAIFdLVVJMUmVxdWVzdFJlZiBXS05hdmlnYXRpb25EYXRhQ29weU9yaWdpbmFsUmVxdWVz
dChXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpCiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYlVS
TFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwobmF2aWdhdGlvbkRhdGEpLT5vcmlnaW5hbFJlcXVlc3Qo
KSkubGVha1JlZigpKTsKIH0KKworV0tVUkxSZXNwb25zZVJlZiBXS05hdmlnYXRpb25EYXRhQ29w
eVJlc3BvbnNlKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGFSZWYpCit7CisgICAg
cmV0dXJuIHRvQVBJKFdlYlVSTFJlc3BvbnNlOjpjcmVhdGUodG9JbXBsKG5hdmlnYXRpb25EYXRh
UmVmKS0+cmVzcG9uc2UoKSkubGVha1JlZigpKTsKK30KKworYm9vbCBXS05hdmlnYXRpb25EYXRh
SGFzU3Vic3RpdHV0ZURhdGEoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZikK
K3sKKyAgICByZXR1cm4gdG9JbXBsKG5hdmlnYXRpb25EYXRhUmVmKS0+aGFzU3Vic3RpdHV0ZURh
dGEoKTsKK30KKworV0tTdHJpbmdSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlDbGllbnRSZWRpcmVj
dFNvdXJjZShXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhUmVmKQoreworICAgIHJl
dHVybiB0b0NvcGllZEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYpLT5jbGllbnRSZWRpcmVj
dFNvdXJjZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdmlnYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YS5oCmluZGV4IGNmNWQxZTUuLjM0ZWQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuaApAQCAtMzcsNiArMzcs
OSBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uRGF0YUdldFR5cGVJRCgpOwogV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUoV0tOYXZpZ2F0aW9u
RGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSk7CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tOYXZpZ2F0aW9u
RGF0YUNvcHlVUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSk7CiBXS19FWFBP
UlQgV0tVUkxSZXF1ZXN0UmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5T3JpZ2luYWxSZXF1ZXN0KFdL
TmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEpOworV0tfRVhQT1JUIFdLVVJMUmVzcG9u
c2VSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlSZXNwb25zZShXS05hdmlnYXRpb25EYXRhUmVmIG5h
dmlnYXRpb25EYXRhKTsKK1dLX0VYUE9SVCBib29sIFdLTmF2aWdhdGlvbkRhdGFIYXNTdWJzdGl0
dXRlRGF0YShXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhKTsKK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS05hdmlnYXRpb25EYXRhQ29weUNsaWVudFJlZGlyZWN0U291cmNlKFdLTmF2
aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgKaW5kZXggYzJl
MjBmMy4uYzU5NGJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRp
b25EYXRhLmgKQEAgLTQ2LDYgKzQ2LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmUudGl0bGU7IH0KICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yZS51cmw7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUub3JpZ2luYWxSZXF1ZXN0
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLnJlc3BvbnNlOyB9CisgICAgYm9vbCBoYXNTdWJzdGl0dXRlRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaGFzU3Vic3RpdHV0ZURhdGE7IH0KKyAgICBTdHJp
bmcgY2xpZW50UmVkaXJlY3RTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmNsaWVudFJl
ZGlyZWN0U291cmNlOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTmF2aWdhdGlvbkRh
dGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4NzYyMzRmLi42MDZmNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtOTM1LDYgKzkzNSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgogICAgIGRhdGEudGl0bGUgPSBsb2FkZXItPnRpdGxlKCkuc3RyaW5nKCk7CiAgICAg
ZGF0YS5vcmlnaW5hbFJlcXVlc3QgPSBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKTsKKyAg
ICBkYXRhLnJlc3BvbnNlID0gbG9hZGVyLT5yZXNwb25zZSgpOworICAgIGRhdGEuaGFzU3Vic3Rp
dHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpOworICAgIGRhdGEu
Y2xpZW50UmVkaXJlY3RTb3VyY2UgPSBsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSgpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHdl
YlBhZ2UtPnBhZ2VJRCgpLCBkYXRhLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNTczNjdkLi43
ZTU5NjAzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTAtMTAgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hh
aWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyB0byBwcmludCBoaXN0b3J5IGRlbGVnYXRlIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjcwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvZ2dpbmcgaGlzdG9yeSBjbGllbnQgaW5m
b3JtYXRpb24gZnJvbSBXVFIgVUkgcHJvY2VzcyBkaXJlY3RseQorICAgICAgICBhcyBIaXN0b3J5
IENsaWVudCBmb3IgaW5qZWN0ZWQgYnVuZGxlIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRMb2dIaXN0b3J5Q2xpZW50
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6c2hvdWxkTG9nSGlzdG9yeUNsaWVudCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjppbnZva2UpOgorCiAyMDEyLTEwLTA5ICBEYW1pYW4gS2FsZXRhICA8ZGthbGV0YUBh
cHBsZS5jb20+CiAKICAgICAgICAgZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzIHNjcmlwdCBz
aG91bGQgYmUgYWJsZSB0byBoYW5kbGUgcGF0aHMgdG8gZmlsZXMgY29udGFpbmluZyB3aGl0ZXNw
YWNlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNDJi
ODEyZS4uOTY4NjNjMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTk2LDYgKzk2LDcgQEAgVGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBh
cmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgLCBtX2V2ZW50U2VuZGVy
UHJveHkobmV3IEV2ZW50U2VuZGVyUHJveHkodGhpcykpCiAjZW5kaWYKKyAgICAsIG1fc2hvdWxk
TG9nSGlzdG9yeUNsaWVudChmYWxzZSkKIHsKICAgICBpbml0aWFsaXplKGFyZ2MsIGFyZ3YpOwog
ICAgIGNvbnRyb2xsZXIgPSB0aGlzOwpAQCAtNDMyLDYgKzQzMywxNyBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAg
IDAsIC8vIGRpZExheW91dAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCht
X21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50KTsKKworICAgIFdLQ29udGV4
dEhpc3RvcnlDbGllbnQgY29udGV4dEhpc3RvcnlDbGllbnQgPSB7CisgICAgICAgIGtXS0NvbnRl
eHRIaXN0b3J5Q2xpZW50Q3VycmVudFZlcnNpb24sCisgICAgICAgIHRoaXMsCisgICAgICAgIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhLAorICAgICAgICBkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QsCisgICAgICAgIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCwKKyAgICAgICAgZGlkVXBk
YXRlSGlzdG9yeVRpdGxlLAorICAgICAgICAwLCAvLyBwb3B1bGF0ZVZpc2l0ZWRMaW5rcworICAg
IH07CisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250ZXh0KCksICZjb250ZXh0SGlz
dG9yeUNsaWVudCk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMoKQpAQCAtNTE1LDYgKzUyNyw5IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIG1faXNHZW9sb2NhdGlvblBlcm1pc3Np
b25TZXQgPSBmYWxzZTsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZCA9IGZh
bHNlOwogCisgICAgLy8gUmVzZXQgbG9nZ2luZyBmcm9tIEhpc3RvcnkgQ2xpZW50LgorICAgIG1f
c2hvdWxkTG9nSGlzdG9yeUNsaWVudCA9IGZhbHNlOworCiAgICAgLy8gUmVzZXQgbWFpbiBwYWdl
IGJhY2sgdG8gYWJvdXQ6YmxhbmsKICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsKIApAQCAt
MTAzNCw0ICsxMDQ5LDEwMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLUwogICAgIFdLTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0KTsKIH0KIAordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV0tDb250ZXh0UmVmLCBXS1Bh
Z2VSZWYsIFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhKG5hdmlnYXRpb25EYXRhKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0
YSkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBSdW5uaW5nVGVzdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFtX3Nob3VsZExvZ0hpc3RvcnlDbGllbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFVSTAorICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmxXSyhBZG9wdFdLLCBXS05h
dmlnYXRpb25EYXRhQ29weVVSTChuYXZpZ2F0aW9uRGF0YSkpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB1cmxTdHJpbmdXSyhBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcodXJsV0suZ2V0
KCkpKTsKKyAgICAvLyBUaXRsZQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aXRsZVdL
KEFkb3B0V0ssIFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUobmF2aWdhdGlvbkRhdGEpKTsKKyAg
ICAvLyBIVFRQIG1ldGhvZAorICAgIFdLUmV0YWluUHRyPFdLVVJMUmVxdWVzdFJlZj4gcmVxdWVz
dFdLKEFkb3B0V0ssIFdLTmF2aWdhdGlvbkRhdGFDb3B5T3JpZ2luYWxSZXF1ZXN0KG5hdmlnYXRp
b25EYXRhKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1ldGhvZFdLKEFkb3B0V0ss
IFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKHJlcXVlc3RXSy5nZXQoKSkpOworICAgIC8vIENs
aWVudCByZWRpcmVjdCBzb3VyY2UKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY2xpZW50
UmVkaXJlY3RTb3VyY2VXSyhBZG9wdFdLLCBXS05hdmlnYXRpb25EYXRhQ29weUNsaWVudFJlZGly
ZWN0U291cmNlKG5hdmlnYXRpb25EYXRhKSk7CisgICAgYm9vbCB3YXNSZWRpcmVjdGVkID0gIVdL
U3RyaW5nSXNFbXB0eShjbGllbnRSZWRpcmVjdFNvdXJjZVdLLmdldCgpKTsKKyAgICAvLyBXYXMg
ZmFpbHVyZQorICAgIFdLUmV0YWluUHRyPFdLVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlV0soQWRv
cHRXSywgV0tOYXZpZ2F0aW9uRGF0YUNvcHlSZXNwb25zZShuYXZpZ2F0aW9uRGF0YSkpOworICAg
IGJvb2wgd2FzRmFpbHVyZSA9IFdLTmF2aWdhdGlvbkRhdGFIYXNTdWJzdGl0dXRlRGF0YShuYXZp
Z2F0aW9uRGF0YSkgfHwgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlV0suZ2V0
KCkpID49IDQwMDsKKworICAgIHByaW50ZigiV2ViVmlldyBuYXZpZ2F0ZWQgdG8gdXJsIFwiJXNc
IiB3aXRoIHRpdGxlIFwiJXNcIiB3aXRoIEhUVFAgZXF1aXZhbGVudCBtZXRob2QgXCIlc1wiLiAg
VGhlIG5hdmlnYXRpb24gd2FzICVzIGFuZCB3YXMgJXMlcy5cbiIsCisgICAgICAgIHRvU1REKHVy
bFN0cmluZ1dLKS5jX3N0cigpLAorICAgICAgICB0b1NURCh0aXRsZVdLKS5jX3N0cigpLAorICAg
ICAgICB0b1NURChtZXRob2RXSykuY19zdHIoKSwKKyAgICAgICAgd2FzRmFpbHVyZT8gImEgZmFp
bHVyZSIgOiAic3VjY2Vzc2Z1bCIsCisgICAgICAgICh3YXNSZWRpcmVjdGVkID8gImEgY2xpZW50
IHJlZGlyZWN0IGZyb20gIiA6ICJub3QgYSBjbGllbnQgcmVkaXJlY3QiKSwKKyAgICAgICAgKHdh
c1JlZGlyZWN0ZWQgPyB0b1NURChjbGllbnRSZWRpcmVjdFNvdXJjZVdLKS5jX3N0cigpIDogIiIp
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdL
Q29udGV4dFJlZiwgV0tQYWdlUmVmLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3Rp
bmF0aW9uVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qoc291cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXS1VSTFJl
ZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMKQoreworICAgIGlmIChtX3N0YXRl
ICE9IFJ1bm5pbmdUZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc2hvdWxkTG9n
SGlzdG9yeUNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHNvdXJjZVN0cmluZ1dLKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyhzb3VyY2VVUkwp
KTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb25TdHJpbmdXSyhBZG9w
dFdLLCBXS1VSTENvcHlTdHJpbmcoZGVzdGluYXRpb25VUkwpKTsKKworICAgIHByaW50ZigiV2Vi
VmlldyBwZXJmb3JtZWQgYSBjbGllbnQgcmVkaXJlY3QgZnJvbSBcIiVzXCIgdG8gXCIlc1wiLlxu
IiwKKyAgICAgICAgdG9TVEQoc291cmNlU3RyaW5nV0spLmNfc3RyKCksCisgICAgICAgIHRvU1RE
KGRlc3RpbmF0aW9uU3RyaW5nV0spLmNfc3RyKCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLVVJM
UmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChz
b3VyY2VVUkwsIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0KFdLVVJMUmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGlu
YXRpb25VUkwpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gUnVubmluZ1Rlc3QpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9zaG91bGRMb2dIaXN0b3J5Q2xpZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlU3RyaW5nV0soQWRvcHRX
SywgV0tVUkxDb3B5U3RyaW5nKHNvdXJjZVVSTCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBkZXN0aW5hdGlvblN0cmluZ1dLKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyhkZXN0aW5h
dGlvblVSTCkpOworCisgICAgcHJpbnRmKCJXZWJWaWV3IHBlcmZvcm1lZCBhIHNlcnZlciByZWRp
cmVjdCBmcm9tIFwiJXNcIiB0byBcIiVzXCIuXG4iLAorICAgICAgICB0b1NURChzb3VyY2VTdHJp
bmdXSykuY19zdHIoKSwKKyAgICAgICAgdG9TVEQoZGVzdGluYXRpb25TdHJpbmdXSykuY19zdHIo
KSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXS0Nv
bnRleHRSZWYsIFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLVVJMUmVmIFVSTCwgV0tG
cmFtZVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkVXBkYXRlSGlz
dG9yeVRpdGxlKHRpdGxlLCBVUkwpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRVcGRh
dGVIaXN0b3J5VGl0bGUoV0tTdHJpbmdSZWYgdGl0bGUsIFdLVVJMUmVmIFVSTCkKK3sKKyAgICBp
ZiAobV9zdGF0ZSAhPSBSdW5uaW5nVGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFt
X3Nob3VsZExvZ0hpc3RvcnlDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmdXSyhBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcoVVJM
KSk7CisKKyAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3Rvcnkg
VVJMIFwiJXNcIiB0byBcIiVzXCIuXG4iLAorICAgICAgICB0b1NURCh1cmxTdHJpbmdXSykuY19z
dHIoKSwKKyAgICAgICAgdG9TVEQodGl0bGUpLmNfc3RyKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBkNzExMWM1
Li4xMzMzZTllIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC03
Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcihXS1N0cmluZ1JlZiBlcnJvck1lc3NhZ2UpOwogICAgIHZvaWQgaGFu
ZGxlR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWYpOwogCisgICAgLy8gSGlzdG9yeSBjbGllbnQuCisgICAgdm9pZCBzZXRTaG91bGRM
b2dIaXN0b3J5Q2xpZW50KGJvb2wgbG9nSGlzdG9yeUNsaWVudCkgeyBtX3Nob3VsZExvZ0hpc3Rv
cnlDbGllbnQgPSBsb2dIaXN0b3J5Q2xpZW50OyB9CisKICAgICBib29sIHJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMoKTsKIAogcHJpdmF0ZToKQEAgLTExMCw2ICsxMTMsMTkgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAKKyAgICAvLyBIaXN0
b3J5IENsaWVudAorICAgIHN0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmLCBXS05hdmlnYXRpb25EYXRhUmVmLCBXS0ZyYW1lUmVm
LCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShX
S05hdmlnYXRpb25EYXRhUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tVUkxSZWYsIFdLVVJMUmVmLCBXS0Zy
YW1lUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
V0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCk7CisKKyAgICBzdGF0
aWMgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYs
IFdLVVJMUmVmLCBXS1VSTFJlZiwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQg
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdLVVJMUmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVz
dGluYXRpb25VUkwpOworCisgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdL
Q29udGV4dFJlZiwgV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgV0tVUkxSZWYsIFdLRnJhbWVSZWYs
IGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXS1N0cmluZ1Jl
ZiB0aXRsZSwgV0tVUkxSZWYpOworCiAgICAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVPdGhlclBh
Z2UoV0tQYWdlUmVmIG9sZFBhZ2UsIFdLVVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBX
S0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKTsKIAogICAg
IHN0YXRpYyB2b2lkIHJ1bk1vZGFsKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CkBAIC0xNTksNiArMTc1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHZW9sb2NhdGlvblBl
cm1pc3Npb25BbGxvd2VkOwogCiAgICAgRXZlbnRTZW5kZXJQcm94eSogbV9ldmVudFNlbmRlclBy
b3h5OworCisgICAgYm9vbCBtX3Nob3VsZExvZ0hpc3RvcnlDbGllbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggMTRiYTRkMy4uZTViOThlZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKQEAgLTEzNSw2ICsxMzUsMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkTG9nRnJhbWVM
b2FkRGVsZWdhdGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIHsKICAgICByZXR1cm4gc3Ryc3Ry
KHBhdGhPclVSTCwgImxvYWRpbmcvIik7CiB9CitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkTG9n
SGlzdG9yeUNsaWVudChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0
cihwYXRoT3JVUkwsICJnbG9iYWxoaXN0b3J5LyIpOworfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIHN0YXRpYyBib29sIHNob3VsZE9wZW5XZWJJbnNwZWN0b3IoY29uc3QgY2hhciogcGF0aE9y
VVJMKQpAQCAtMTY0LDYgKzE2OCw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAK
ICAgICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGJlZ2luVGVzdE1lc3NhZ2VC
b2R5LmdldCgpKTsKIAorICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5zZXRTaG91bGRMb2dI
aXN0b3J5Q2xpZW50KHNob3VsZExvZ0hpc3RvcnlDbGllbnQobV9wYXRoT3JVUkwuY19zdHIoKSkp
OworCiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlID0gMDsKICAgICBUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RJbml0aWFsUmVzcG9uc2UsIFRlc3RDb250cm9sbGVy
OjpTaG9ydFRpbWVvdXQpOwogICAgIGlmICghbV9nb3RJbml0aWFsUmVzcG9uc2UpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228019</attachid>
            <date>2014-03-27 19:50:12 -0700</date>
            <delta_ts>2014-03-27 20:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42704-20140327194951.patch</filename>
            <type>text/plain</type>
            <size>12693</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjJlNTE1MGM5MDE3ZTRkYjhjY2RiN2NkZDQ1ZWY0YTU2
NjE1OGRhYi4uN2VhMGU2YjllMzIzZmM4NzQ3NjFhZDAyMDEwYjNhNzhhYzQ0YTFlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDE0LTAzLTI3ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi80MjcwND4gV2ViS2l0
VGVzdFJ1bm5lciBuZWVkcyB0byBwcmludCBoaXN0b3J5IGRlbGVnYXRlIGluZm9ybWF0aW9uCisK
KyAgICAgICAgUHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50IHRoYXQgbG9ncyB3aGVuIGNhbGxlZCBmb3IgdGVzdHMgaW4KKyAgICAgICAgdGhlIGdsb2Jh
bGhpc3RvcnkgZGlyZWN0b3J5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKTogU2V0IHRoZSBoaXN0b3J5IGNsaWVudC4KKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMp
OiBEaXNhYmxlIGxvZ2dpbmcgb2YgaGlzdG9yeSBjbGllbnQgY2FsbGJhY2tzLgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOiBMb2cg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5hdmlnYXRpb24uIFNvbWUgcG9ydGlvbnMKKyAgICAgICAg
b2YgdGhlIG91dHB1dCBhcmUgaGFyZC1jb2RlZCB0byBtYXRjaCBXZWJLaXQxJ3MgcmVzdWx0cyBm
b3Igbm93IHNpbmNlIHRoZXkncmUgZml4ZWQgaW4gb3VyIGV4aXN0aW5nIHRlc3RzCisgICAgICAg
IGFuZCB3ZSBkb24ndCB5ZXQgaGF2ZSBBUEkgdG8gYWNjZXNzIHRoZSBkYXRhIGluIHF1ZXN0aW9u
LgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Mp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpzaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKTogTG9nIGhpc3RvcnkgY2xp
ZW50IGNhbGxiYWNrcyBmb3IgdGVzdHMgaW4gYSBnbG9iYWxoaXN0b3J5IGRpcmVjdG9yeS4KKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisKIDIwMTQtMDMtMjcgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTY2Mzg2IGJlY2F1c2UgaXQgYnJva2UgYnVpbGRzLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBkMDRiYTQwOGRjMDA3
NjY5ZTgyOTIzY2I2ZjVhMmFhOTY4YzJjYWNkLi5kMzk5MjBlNTYxZTc5YjE0ZjE1ZGYzY2ZlZDlh
YzllN2NjMDdiNDJjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMTIxLDYgKzEyMSw3IEBAIFRlc3RDb250cm9sbGVyOjpUZXN0Q29udHJvbGxlcihpbnQg
YXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICwgbV9mb3JjZUNvbXBsZXhUZXh0KGZhbHNl
KQogICAgICwgbV9zaG91bGRVc2VBY2NlbGVyYXRlZERyYXdpbmcoZmFsc2UpCiAgICAgLCBtX3No
b3VsZFVzZVJlbW90ZUxheWVyVHJlZShmYWxzZSkKKyAgICAsIG1fc2hvdWxkTG9nSGlzdG9yeUNs
aWVudENhbGxiYWNrcyhmYWxzZSkKIHsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTM2OSw2ICsz
NzAsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3Qg
Y2hhciogYXJndltdKQogICAgIH07CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobV9jb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7CiAKKyAgICBX
S0NvbnRleHRIaXN0b3J5Q2xpZW50VjAgaGlzdG9yeUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCB0
aGlzIH0sCisgICAgICAgIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhLAorICAgICAgICBk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QsCisgICAgICAgIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dCwKKyAgICAgICAgZGlkVXBkYXRlSGlzdG9yeVRpdGxlLAorICAgICAgICAwLCAvLyBwb3B1bGF0
ZVZpc2l0ZWRMaW5rcworICAgIH07CisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChtX2Nv
bnRleHQuZ2V0KCksICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCiAgICAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25N
YW5hZ2VyKG1fY29udGV4dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG5v
dGlmaWNhdGlvbktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlkZXIoKTsKICAg
ICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25NYW5hZ2VyLCAm
bm90aWZpY2F0aW9uS2l0LmJhc2UpOwpAQCAtNjM1LDYgKzY0Niw4IEBAIGJvb2wgVGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogCiAgICAgbV9zaG91bGRCbG9j
a0FsbFBsdWdpbnMgPSBmYWxzZTsKIAorICAgIG1fc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxi
YWNrcyA9IGZhbHNlOworCiAgICAgLy8gUmVzZXQgbWFpbiBwYWdlIGJhY2sgdG8gYWJvdXQ6Ymxh
bmsKICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsKIApAQCAtMTI5Myw0ICsxMzA2LDg2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVVJMUmVzcG9uc2VSZWYKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUo
bGlzdGVuZXIpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBu
YXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEobmF2aWdhdGlvbkRhdGEs
IGZyYW1lKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZikK
K3sKKyAgICBpZiAobV9zdGF0ZSAhPSBSdW5uaW5nVGVzdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX3Nob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFVSTAorICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmxXSyhBZG9wdFdL
LCBXS05hdmlnYXRpb25EYXRhQ29weVVSTChuYXZpZ2F0aW9uRGF0YSkpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmdXSyhBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcodXJs
V0suZ2V0KCkpKTsKKyAgICAvLyBUaXRsZQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0
aXRsZVdLKEFkb3B0V0ssIFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUobmF2aWdhdGlvbkRhdGEp
KTsKKyAgICAvLyBIVFRQIG1ldGhvZAorICAgIFdLUmV0YWluUHRyPFdLVVJMUmVxdWVzdFJlZj4g
cmVxdWVzdFdLKEFkb3B0V0ssIFdLTmF2aWdhdGlvbkRhdGFDb3B5T3JpZ2luYWxSZXF1ZXN0KG5h
dmlnYXRpb25EYXRhKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1ldGhvZFdLKEFk
b3B0V0ssIFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKHJlcXVlc3RXSy5nZXQoKSkpOworCisg
ICAgLy8gRklYTUU6IERldGVybWluZSB3aGV0aGVyIHRoZSBuYXZpZ2F0aW9uIHdhcyBzdWNjZXNz
ZnVsIC8gYSBjbGllbnQgcmVkaXJlY3QgcmF0aGVyIHRoYW4gaGFyZC1jb2RpbmcgdGhlIG1lc3Nh
Z2UgaGVyZS4KKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KFN0cmluZzo6Zm9y
bWF0KCJXZWJWaWV3IG5hdmlnYXRlZCB0byB1cmwgXCIlc1wiIHdpdGggdGl0bGUgXCIlc1wiIHdp
dGggSFRUUCBlcXVpdmFsZW50IG1ldGhvZCBcIiVzXCIuICBUaGUgbmF2aWdhdGlvbiB3YXMgc3Vj
Y2Vzc2Z1bCBhbmQgd2FzIG5vdCBhIGNsaWVudCByZWRpcmVjdC5cbiIsCisgICAgICAgIHRvU1RE
KHVybFN0cmluZ1dLKS5jX3N0cigpLCB0b1NURCh0aXRsZVdLKS5jX3N0cigpLCB0b1NURChtZXRo
b2RXSykuY19zdHIoKSkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLVVJMUmVmIHNvdXJjZVVSTCwg
V0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChzb3VyY2VVUkws
IGRlc3RpbmF0aW9uVVJMLCBmcmFtZSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0
aW9uVVJMLCBXS0ZyYW1lUmVmKQoreworICAgIGlmIChtX3N0YXRlICE9IFJ1bm5pbmdUZXN0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxi
YWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNv
dXJjZVN0cmluZ1dLKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyhzb3VyY2VVUkwpKTsKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb25TdHJpbmdXSyhBZG9wdFdLLCBXS1VS
TENvcHlTdHJpbmcoZGVzdGluYXRpb25VUkwpKTsKKworICAgIG1fY3VycmVudEludm9jYXRpb24t
Pm91dHB1dFRleHQoU3RyaW5nOjpmb3JtYXQoIldlYlZpZXcgcGVyZm9ybWVkIGEgY2xpZW50IHJl
ZGlyZWN0IGZyb20gXCIlc1wiIHRvIFwiJXNcIi5cbiIsIHRvU1REKHNvdXJjZVN0cmluZ1dLKS5j
X3N0cigpLCB0b1NURChkZXN0aW5hdGlvblN0cmluZ1dLKS5jX3N0cigpKSk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXS0NvbnRleHRSZWYsIFdL
UGFnZVJlZiwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2Fz
dDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KHNvdXJjZVVSTCwgZGVzdGluYXRpb25VUkwsIGZyYW1lKTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdLVVJMUmVm
IHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYpCit7CisgICAg
aWYgKG1fc3RhdGUgIT0gUnVubmluZ1Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9zaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlU3RyaW5nV0soQWRvcHRXSywgV0tVUkxD
b3B5U3RyaW5nKHNvdXJjZVVSTCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkZXN0
aW5hdGlvblN0cmluZ1dLKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyhkZXN0aW5hdGlvblVSTCkp
OworCisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChTdHJpbmc6OmZvcm1hdCgi
V2ViVmlldyBwZXJmb3JtZWQgYSBzZXJ2ZXIgcmVkaXJlY3QgZnJvbSBcIiVzXCIgdG8gXCIlc1wi
LlxuIiwgdG9TVEQoc291cmNlU3RyaW5nV0spLmNfc3RyKCksIHRvU1REKGRlc3RpbmF0aW9uU3Ry
aW5nV0spLmNfc3RyKCkpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkVXBkYXRlSGlz
dG9yeVRpdGxlKFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tV
UkxSZWYgVVJMLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRVcGRhdGVIaXN0b3J5VGl0bGUodGl0bGUsIFVSTCwgZnJhbWUpOworfQorCit2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV0tTdHJpbmdSZWYgdGl0
bGUsIFdLVVJMUmVmIFVSTCwgV0tGcmFtZVJlZikKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBSdW5u
aW5nVGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Nob3VsZExvZ0hpc3RvcnlD
bGllbnRDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB1cmxTdHJpbmdXSyhBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcoVVJMKSk7CisgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChTdHJpbmc6OmZvcm1hdCgiV2ViVmlldyB1
cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wiIHRvIFwiJXNcIi5cbiIsIHRv
U1REKHVybFN0cmluZ1dLKS5jX3N0cigpLCB0b1NURCh0aXRsZSkuY19zdHIoKSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCBlYzI2OTAxYjRjOTFlM2NhYjRkNzdhZWZiYzk1NzU4ZDBjOWE1M2Y5Li5mZTY0NzExNTcz
YzhkYmY0NjZkNDVlMWI3Mzk2NDU1ZTUyNDhkNmNjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC0xMDQsNiArMTA0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRCbG9ja0FsbFBsdWdpbnMoYm9vbCBzaG91bGRCbG9jaykgeyBtX3Nob3VsZEJsb2NrQWxsUGx1
Z2lucyA9IHNob3VsZEJsb2NrOyB9CiAKKyAgICB2b2lkIHNldFNob3VsZExvZ0hpc3RvcnlDbGll
bnRDYWxsYmFja3MoYm9vbCBzaG91bGRMb2cpIHsgbV9zaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2Fs
bGJhY2tzID0gc2hvdWxkTG9nOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pOwogICAgIHZvaWQgY3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKFdLRGljdGlvbmFyeVJlZik7CkBAIC0xNTksNiArMTYxLDE5IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV0tQYWdlUmVmLCBXS0ZyYW1l
UmVmLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV0tGcmFtZVJlZiwgV0tVUkxSZXNwb25z
ZVJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmKTsKIAorICAgIC8vIFdLQ29udGV4dEhpc3Rv
cnlDbGllbnQKKyAgICBzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShX
S0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV0tGcmFtZVJlZiwg
Y29uc3Qgdm9pZCopOworICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV0tO
YXZpZ2F0aW9uRGF0YVJlZiwgV0tGcmFtZVJlZik7CisKKyAgICBzdGF0aWMgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLVVJMUmVmIHNvdXJj
ZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXS1VSTFJlZiBzb3VyY2VVUkwsIFdL
VVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS0ZyYW1lUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIGRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tVUkxSZWYg
c291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9p
ZCopOworICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdLVVJMUmVmIHNvdXJjZVVS
TCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYpOworCisgICAgc3RhdGljIHZv
aWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmLCBXS1N0cmlu
Z1JlZiB0aXRsZSwgV0tVUkxSZWYsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lk
IGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXS1N0cmluZ1JlZiB0aXRsZSwgV0tVUkxSZWYsIFdLRnJh
bWVSZWYpOworCiAgICAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVm
IG9sZFBhZ2UsIFdLVVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZp
ZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKTsKIAogICAgIHN0YXRpYyB2b2lk
IHJ1bk1vZGFsKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC0yMjMsNiAr
MjM4LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkVXNlQWNjZWxlcmF0ZWREcmF3aW5n
OwogICAgIGJvb2wgbV9zaG91bGRVc2VSZW1vdGVMYXllclRyZWU7CiAKKyAgICBib29sIG1fc2hv
dWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNrczsKKwogICAgIE93blB0cjxFdmVudFNlbmRlclBy
b3h5PiBtX2V2ZW50U2VuZGVyUHJveHk7CiAKICAgICBXb3JrUXVldWVNYW5hZ2VyIG1fd29ya1F1
ZXVlTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggOWU0OTFhZjE0NjU5NTQ4YzI1MDE1MjY2YzhmY2Q3MjczOGQ0ODdjOS4uNjA5YTdmNDhiMzNh
MGM3ZTIwNzU2M2ZiZGZiNDVkMWU4NzdiNjMyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE0Niw2ICsxNDYsMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxk
VXNlVGhyZWFkZWRTY3JvbGxpbmcoY29uc3QgY2hhciogcGF0aE9yVVJMKQogfQogI2VuZGlmCiAK
K3N0YXRpYyBib29sIHNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoY29uc3QgY2hhciog
cGF0aE9yVVJMKQoreworICAgIHJldHVybiBzdHJzdHIocGF0aE9yVVJMLCAiZ2xvYmFsaGlzdG9y
eS8iKTsKK30KKwogc3RhdGljIHZvaWQgdXBkYXRlVGhyZWFkZWRTY3JvbGxpbmdGb3JDdXJyZW50
VGVzdChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0y
MDAsNiArMjA1LDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKIAogICAgIG1fdGV4
dE91dHB1dC5jbGVhcigpOwogCisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldFNob3Vs
ZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Moc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNr
cyhtX3BhdGhPclVSTC5jX3N0cigpKSk7CisKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCZWdp
blRlc3QiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gYmVnaW5U
ZXN0TWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMTE1OTJjYjhiMDJkMjJmNGI2MGIyNDdiODFiNzg5NzdlZGY2OTYwLi4wY2U2NDk3
Yjg0MTJiNDE0NzJhYWNiMGNkY2I5MDY2ODBjZTlmOTgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTQtMDMtMjcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvNDI3MDQ+IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQg
aGlzdG9yeSBkZWxlZ2F0ZSBpbmZvcm1hdGlvbgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6IEVu
YWJsZSB0aGUgdHdvIGxheW91dCB0ZXN0cyB0aGF0IHBhc3MuIE9uZSB0ZXN0IHJlbWFpbnMgZGlz
YWJsZWQKKyAgICAgICAgZHVlIHRvIGxhY2sgb2YgdGVzdFJ1bm5lciBBUEksIGFuZCBhbm90aGVy
IGR1ZSB0byBhbiBhcHBhcmVudCBidWcgaW4gV2ViS2l0MidzIGhhbmRsaW5nIG9mCisgICAgICAg
IGNsaWVudCByZWRpcmVjdHMuCisKIDIwMTQtMDMtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHNwcmVhZCBvcGVyYW5kIGluIHxuZXd8IGV4cHJl
c3Npb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDIz
ZjE4N2RmZTgwZTgzMmM5NTE2ZDllN2JhM2UwNGMwMTY5MTQ0YWUuLjM3YWQ4MjQ3NWI2N2VjODIw
YzUzMmZlZThmMTJmOTc4ZjllNjk2ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xNzUsMTMgKzE3NSwxMiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3Nl
dERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUuaHRtbAogIyA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNzc3PgogZmFzdC9sb2FkZXIvbm9uLWRl
ZmVycmVkLXN1YnN0aXR1dGUtbG9hZC5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0
byBwcmludCBoaXN0b3J5IGRlbGVnYXRlIGluZm9ybWF0aW9uCi0jIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI3MDQ+Ci1odHRwL3Rlc3RzL2dsb2JhbGhpc3Rvcnkv
aGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy0zMDItcmVkaXJlY3QuaHRtbAotaHR0cC90ZXN0cy9nbG9i
YWxoaXN0b3J5L2hpc3RvcnktZGVsZWdhdGUtYmFzaWMtcmVmcmVzaC1yZWRpcmVjdC5odG1sCi1o
dHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy10aXRsZS5odG1s
CisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGVzdFJ1bm5lci5yZW1vdmVBbGxWaXNpdGVkTGlu
a3MKIGh0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXZpc2l0
ZWQtbGlua3MuaHRtbAogCisjIFdlYktpdDIgcGFzc2VzIHRoZSB3cm9uZyBzb3VyY2UgVVJMIGZv
ciBjbGllbnQgcmVkaXJlY3RzCitodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxl
Z2F0ZS1iYXNpYy1yZWZyZXNoLXJlZGlyZWN0Lmh0bWwKKwogIyB0cmFuc2l0aW9ucy9kZWZhdWx0
LXRpbWluZy1mdW5jdGlvbi5odG1sIGZhaWxpbmcgb24gV2ViS2l0MiBzaW5jZSBpdCB3YXMgYWRk
ZWQKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjUzMT4KIHRy
YW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1bmN0aW9uLmh0bWwK
</data>
<flag name="review"
          id="252279"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>