<?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>113438</bug_id>
          
          <creation_ts>2013-03-27 13:40:13 -0700</creation_ts>
          <short_desc>Add LayoutTests that verify MediaSource.duration behavior.</short_desc>
          <delta_ts>2013-03-29 15:16: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Colwell">acolwell</reporter>
          <assigned_to name="Aaron Colwell">acolwell</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>864826</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-27 13:40:13 -0700</bug_when>
    <thetext>Add LayoutTests that verify MediaSource.duration behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864827</commentid>
    <comment_count>1</comment_count>
      <attachid>195388</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-27 13:40:38 -0700</bug_when>
    <thetext>Created attachment 195388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864830</commentid>
    <comment_count>2</comment_count>
      <attachid>195388</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-27 13:44:14 -0700</bug_when>
    <thetext>Comment on attachment 195388
Patch

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

&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:29
&gt; +EXPECTED (mediaSource.duration == &apos;1.7976931348623157e+308&apos;), OBSERVED &apos;3.4028234663852886e+38&apos; FAIL

This and the two other faiures below are expected right now because HTMLMediaElement.duration is a float instead of a double like the spec state. Eventhough MediaSource.duration is declared as a double, the return value is truncated to the float range so that the mediaSource.duration == video.duration condition required by the Media Source spec is always true. When HTMLMediaElement.duration is changed to a double, then these expectations will be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866253</commentid>
    <comment_count>3</comment_count>
      <attachid>195388</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-29 11:37:20 -0700</bug_when>
    <thetext>Comment on attachment 195388
Patch

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

&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:6
&gt; +onDurationChange : video.duration is 6.041999816894531

I don&apos;t think it makes sense to log time values with full precision, or every port may need to have unique results for the same test.  Comparing the value is fine, but use reportExpected(() so you just log success or failure. See video-loop.html for an example.

&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions.html:24
&gt; +          consoleWrite(&apos;EXPECTED (mediaSource.duration == video.duration) OK&apos;);

Can you use reportExpected( instead of hard coding this?

&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions.html:27
&gt; +        consoleWrite(&apos;EXPECTED (mediaSource.duration == video.duration), OBSERVED &apos; + mediaSource.duration + &apos; vs &apos; + video.duration + &apos; FAIL&apos;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866357</commentid>
    <comment_count>4</comment_count>
      <attachid>195388</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 14:04:49 -0700</bug_when>
    <thetext>Comment on attachment 195388
Patch

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

&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:6
&gt;&gt; +onDurationChange : video.duration is 6.041999816894531
&gt; 
&gt; I don&apos;t think it makes sense to log time values with full precision, or every port may need to have unique results for the same test.  Comparing the value is fine, but use reportExpected(() so you just log success or failure. See video-loop.html for an example.

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions.html:24
&gt;&gt; +          consoleWrite(&apos;EXPECTED (mediaSource.duration == video.duration) OK&apos;);
&gt; 
&gt; Can you use reportExpected( instead of hard coding this?

Yes. Done.

&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions.html:27
&gt;&gt; +        consoleWrite(&apos;EXPECTED (mediaSource.duration == video.duration), OBSERVED &apos; + mediaSource.duration + &apos; vs &apos; + video.duration + &apos; FAIL&apos;);
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866359</commentid>
    <comment_count>5</comment_count>
      <attachid>195796</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 14:05:17 -0700</bug_when>
    <thetext>Created attachment 195796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866380</commentid>
    <comment_count>6</comment_count>
      <attachid>195796</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-29 14:32:47 -0700</bug_when>
    <thetext>Comment on attachment 195796
Patch

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

&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:29
&gt; +EXPECTED (mediaSource.duration == &apos;testDurationValue&apos;), OBSERVED &apos;3.4028234663852886e+38&apos; FAIL

Are these failures expected? If so, this suffers from the same problem as the previous patch: not all ports will have exactly the same duration so each will need custom results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866401</commentid>
    <comment_count>7</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 14:49:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 195796 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195796&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:29
&gt; &gt; +EXPECTED (mediaSource.duration == &apos;testDurationValue&apos;), OBSERVED &apos;3.4028234663852886e+38&apos; FAIL
&gt; 
&gt; Are these failures expected? If so, this suffers from the same problem as the previous patch: not all ports will have exactly the same duration so each will need custom results.

Yes these are expected because HTMLMediaElement.duration is a float and MediaSource.duration is a double. Until HTMLMediaElement.duration is updated to a double to match the HTML5 spec, these test cases will fail. :/ These expectations were just to capture the fact that MediaSource.duration truncates itself to the float range so that MediaSource.duration always equals HTMLMediaElement.duration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866408</commentid>
    <comment_count>8</comment_count>
      <attachid>195796</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-29 15:02:11 -0700</bug_when>
    <thetext>Comment on attachment 195796
Patch

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

&gt;&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:29
&gt;&gt;&gt; +EXPECTED (mediaSource.duration == &apos;testDurationValue&apos;), OBSERVED &apos;3.4028234663852886e+38&apos; FAIL
&gt;&gt; 
&gt;&gt; Are these failures expected? If so, this suffers from the same problem as the previous patch: not all ports will have exactly the same duration so each will need custom results.
&gt; 
&gt; Yes these are expected because HTMLMediaElement.duration is a float and MediaSource.duration is a double. Until HTMLMediaElement.duration is updated to a double to match the HTML5 spec, these test cases will fail. :/ These expectations were just to capture the fact that MediaSource.duration truncates itself to the float range so that MediaSource.duration always equals HTMLMediaElement.duration.

Why not just fix HTMLMediaElement? Have you filed a bug about the issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866412</commentid>
    <comment_count>9</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 15:08:19 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 195796 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195796&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; LayoutTests/http/tests/media/media-source/video-media-source-duration-boundaryconditions-expected.txt:29
&gt; &gt;&gt;&gt; +EXPECTED (mediaSource.duration == &apos;testDurationValue&apos;), OBSERVED &apos;3.4028234663852886e+38&apos; FAIL
&gt; &gt;&gt; 
&gt; &gt;&gt; Are these failures expected? If so, this suffers from the same problem as the previous patch: not all ports will have exactly the same duration so each will need custom results.
&gt; &gt; 
&gt; &gt; Yes these are expected because HTMLMediaElement.duration is a float and MediaSource.duration is a double. Until HTMLMediaElement.duration is updated to a double to match the HTML5 spec, these test cases will fail. :/ These expectations were just to capture the fact that MediaSource.duration truncates itself to the float range so that MediaSource.duration always equals HTMLMediaElement.duration.
&gt; 
&gt; Why not just fix HTMLMediaElement? Have you filed a bug about the issue?

I plan on doing so. My initial survey of the code made me think this was going to be a large disruptive yak shave. I&apos;ll file a bug and start working on a patch to see how bad it really ends up being.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866421</commentid>
    <comment_count>10</comment_count>
      <attachid>195796</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-29 15:16:21 -0700</bug_when>
    <thetext>Comment on attachment 195796
Patch

Clearing flags on attachment: 195796

Committed r147255: &lt;http://trac.webkit.org/changeset/147255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866422</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-29 15:16:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195388</attachid>
            <date>2013-03-27 13:40:38 -0700</date>
            <delta_ts>2013-03-29 14:05:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113438-20130327134037.patch</filename>
            <type>text/plain</type>
            <size>16252</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MDAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWRmMTUzMDNmYWQyNGE1ZjQ2MDdl
MzA4ZjIxNWUwNTU4YjMwMmNiOS4uMTYwZjI1MmRiYTRlZjdmZDg2NDdkMjFkMGI2ZjVjNjk1OWUz
NDllNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTI3ICBBYXJvbiBDb2x3ZWxsICA8
YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0cyB0aGF0IHZl
cmlmeSBNZWRpYVNvdXJjZS5kdXJhdGlvbiBiZWhhdmlvci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3Zp
ZGVvLW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1ib3VuZGFyeWNvbmRpdGlvbnMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291
cmNlLWR1cmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTI3ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuIFJlYmFzZWxpbmluZyBhZnRlciByMTQ2
OTkyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1t
ZWRpYS1zb3VyY2UtZHVyYXRpb24tYm91bmRhcnljb25kaXRpb25zLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTNkMWFhY2VmZjA1ZTI1YTdkMDVhYjA2NzlmNDIwNjQyYjBhY2U4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvdmlk
ZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5NSBAQAorVGVzdHMgYm91bmRhcnkgdmFsdWVzIGZvciBkdXJhdGlvbiBhdHRy
aWJ1dGUgb24gTWVkaWFTb3VyY2Ugb2JqZWN0LgorCisKK3J1bm5pbmcgdGVzdFNldE1heEludAor
RVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRpb25DaGFuZ2UgOiB2aWRlby5kdXJhdGlv
biBpcyA2LjA0MTk5OTgxNjg5NDUzMQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09
IHZpZGVvLmR1cmF0aW9uKSBPSworRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAobWVk
aWFTb3VyY2UuZHVyYXRpb24gPT0gJzIxNDc0ODM2NDcnKSwgT0JTRVJWRUQgJzIxNDc0ODM2NDgn
IEZBSUwKK29uRHVyYXRpb25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyAyMTQ3NDgzNjQ4CitF
WFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gdmlkZW8uZHVyYXRpb24pIE9LCitFVkVO
VChkdXJhdGlvbmNoYW5nZSkKKworcnVubmluZyB0ZXN0U2V0TWluSW50CitFVkVOVCh3ZWJraXRz
b3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDYuMDQxOTk5
ODE2ODk0NTMxCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gdmlkZW8uZHVyYXRp
b24pIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJh
dGlvbiA9PSAnMScpIE9LCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24gaXMgMQor
RVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVvLmR1cmF0aW9uKSBPSworRVZF
TlQoZHVyYXRpb25jaGFuZ2UpCisKK3J1bm5pbmcgdGVzdFNldE1heFZhbHVlCitFVkVOVCh3ZWJr
aXRzb3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDYuMDQx
OTk5ODE2ODk0NTMxCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gdmlkZW8uZHVy
YXRpb24pIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5k
dXJhdGlvbiA9PSAnMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgnKSwgT0JTRVJWRUQgJzMuNDAyODIz
NDY2Mzg1Mjg4NmUrMzgnIEZBSUwKK29uRHVyYXRpb25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBp
cyAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4CitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24g
PT0gdmlkZW8uZHVyYXRpb24pIE9LCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKKworcnVubmluZyB0
ZXN0U2V0TWF4VmFsdWVNaW51c09uZQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRp
b25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0MTk5OTgxNjg5NDUzMQorRVhQRUNURUQg
KG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVvLmR1cmF0aW9uKSBPSworRVZFTlQobG9hZGVk
bWV0YWRhdGEpCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJzEuNzk3NjkzMTM0
ODYyMzE1N2UrMzA4JyksIE9CU0VSVkVEICczLjQwMjgyMzQ2NjM4NTI4ODZlKzM4JyBGQUlMCitv
bkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24gaXMgMy40MDI4MjM0NjYzODUyODg2ZSsz
OAorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVvLmR1cmF0aW9uKSBPSwor
RVZFTlQoZHVyYXRpb25jaGFuZ2UpCisKK3J1bm5pbmcgdGVzdFNldE1pblZhbHVlCitFVkVOVCh3
ZWJraXRzb3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDYu
MDQxOTk5ODE2ODk0NTMxCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gdmlkZW8u
ZHVyYXRpb24pIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChtZWRpYVNvdXJj
ZS5kdXJhdGlvbiA9PSAnNWUtMzI0JyksIE9CU0VSVkVEICcxLjE3NTQ5NDM1MDgyMjI4NzVlLTM4
JyBGQUlMCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24gaXMgMS4xNzU0OTQzNTA4
MjIyODc1ZS0zOAorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVvLmR1cmF0
aW9uKSBPSworRVZFTlQoZHVyYXRpb25jaGFuZ2UpCisKK3J1bm5pbmcgdGVzdFNldE1pblZhbHVl
TWludXNPbmUKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlk
ZW8uZHVyYXRpb24gaXMgNi4wNDE5OTk4MTY4OTQ1MzEKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5k
dXJhdGlvbiA9PSB2aWRlby5kdXJhdGlvbikgT0sKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorUEFT
UzogTWVkaWEgU291cmNlIHNldCBkdXJhdGlvbi4gR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJv
cjogSW52YWxpZEFjY2Vzc0Vycm9yOiBET00gRXhjZXB0aW9uIDE1CisKK3J1bm5pbmcgdGVzdFNl
dFBvc2l0aXZlSW5maW5pdHkKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitvbkR1cmF0aW9uQ2hh
bmdlIDogdmlkZW8uZHVyYXRpb24gaXMgNi4wNDE5OTk4MTY4OTQ1MzEKK0VYUEVDVEVEIChtZWRp
YVNvdXJjZS5kdXJhdGlvbiA9PSB2aWRlby5kdXJhdGlvbikgT0sKK0VWRU5UKGxvYWRlZG1ldGFk
YXRhKQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09ICdJbmZpbml0eScpIE9LCitv
bkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24gaXMgSW5maW5pdHkKK0VYUEVDVEVEICht
ZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSB2aWRlby5kdXJhdGlvbikgT0sKK0VWRU5UKGR1cmF0aW9u
Y2hhbmdlKQorCitydW5uaW5nIHRlc3RTZXROZWdhdGl2ZUluZmluaXR5CitFVkVOVCh3ZWJraXRz
b3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDYuMDQxOTk5
ODE2ODk0NTMxCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gdmlkZW8uZHVyYXRp
b24pIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK1BBU1M6IE1lZGlhIFNvdXJjZSBzZXQgZHVy
YXRpb24uIEdvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IEludmFsaWRBY2Nlc3NFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxNQorCitydW5uaW5nIHRlc3RTZXRMb3dlc3RWYWx1ZQorRVZFTlQod2Vi
a2l0c291cmNlb3BlbikKK29uRHVyYXRpb25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0
MTk5OTgxNjg5NDUzMQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVvLmR1
cmF0aW9uKSBPSworRVZFTlQobG9hZGVkbWV0YWRhdGEpCitQQVNTOiBNZWRpYSBTb3VyY2Ugc2V0
IGR1cmF0aW9uLiBHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkQWNjZXNzRXJy
b3I6IERPTSBFeGNlcHRpb24gMTUKKworcnVubmluZyB0ZXN0U2V0TmVnYXRpdmVEb3VibGUKK0VW
RU5UKHdlYmtpdHNvdXJjZW9wZW4pCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24g
aXMgNi4wNDE5OTk4MTY4OTQ1MzEKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSB2
aWRlby5kdXJhdGlvbikgT0sKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorUEFTUzogTWVkaWEgU291
cmNlIHNldCBkdXJhdGlvbi4gR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZEFj
Y2Vzc0Vycm9yOiBET00gRXhjZXB0aW9uIDE1CisKK3J1bm5pbmcgdGVzdFNldFBvc2l0aXZlRG91
YmxlCitFVkVOVCh3ZWJraXRzb3VyY2VvcGVuKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291
cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5k
YXJ5Y29uZGl0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYTQzMTk4OWMxNDhlYWY0OTYxYjBhZGY2
ODZkZTRmNzg2YzhmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRpb24tYm91bmRhcnlj
b25kaXRpb25zLmh0bWwKQEAgLTAsMCArMSwxOTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgIDxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvbWVkaWEvcmVzb3VyY2VzL21lZGlhLXNv
dXJjZS93ZWJtL3NlZ21lbnQtaW5mby5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1l
ZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgIHZhciBzZWdtZW50
SGVscGVyID0gbmV3IE1lZGlhU291cmNlVGVzdC5TZWdtZW50SGVscGVyKFdlYk1TZWdtZW50SW5m
by50ZXN0V2ViTSk7CisKKyAgICAgIC8vIER1cmF0aW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQgKGku
ZS4sIHZpZGVvKSBjaGFuZ2VkLgorICAgICAgZnVuY3Rpb24gb25EdXJhdGlvbkNoYW5nZSgpCisg
ICAgICB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgib25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1
cmF0aW9uIGlzICIgKyB2aWRlby5kdXJhdGlvbik7CisKKyAgICAgICAgLy8gQ29uZmlybSB0aGF0
IHZhbHVlIG9mIG1lZGlhLXNvdXJjZSBkdXJhdGlvbiBtYXRjaGVzIHZhbHVlIG9mCisgICAgICAg
IC8vIHBhcmVudCBIVE1MIE1lZGlhIEVsZW1lbnQncyBkdXJhdGlvbi4KKyAgICAgICAgLy8gRG8g
dGhpcyBvbmx5IGlmIHRoZSB2aWRlbyB0YWcgcmVhZHkgc3RhdGUgaXMgZ3JlYXRlcgorICAgICAg
ICAvLyB0aGFuIEhBVkVfTk9USElORy4KKyAgICAgICAgLy8gV2l0aG91dCBtZXRhZGF0YSwgcGFy
ZW50IG1lZGlhIGVsZW1lbnQgd29uJ3QgaGF2ZSBhIGR1cmF0aW9uIHZhbHVlIGRlZmluZWQuCisg
ICAgICAgIGlmICh2aWRlby5yZWFkeVN0YXRlIDw9IHZpZGVvLkhBVkVfTk9USElORykKKyAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVv
LmR1cmF0aW9uKSB7CisgICAgICAgICAgY29uc29sZVdyaXRlKCdFWFBFQ1RFRCAobWVkaWFTb3Vy
Y2UuZHVyYXRpb24gPT0gdmlkZW8uZHVyYXRpb24pIE9LJyk7CisgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVhQRUNURUQgKG1lZGlhU291cmNlLmR1
cmF0aW9uID09IHZpZGVvLmR1cmF0aW9uKSwgT0JTRVJWRUQgJyArIG1lZGlhU291cmNlLmR1cmF0
aW9uICsgJyB2cyAnICsgdmlkZW8uZHVyYXRpb24gKyAnIEZBSUwnKTsKKyAgICAgIH0KKworICAg
ICAgLy8gU2V0IGR1cmF0aW9uIG9mIHRoZSBNZWRpYVNvdXJjZSBvYmplY3QgdG8gdGhlIGlucHV0
IGR1cmF0aW9uIHZhbHVlLgorICAgICAgLy8gQWxzbyBjaGVjayBpZiBhbnkgZXJyb3IsIGlmIHNw
ZWNpZmllZCwgd2FzIHJhaXNlZC4KKyAgICAgIGZ1bmN0aW9uIHZlcmlmeVNldER1cmF0aW9uKHRl
c3REdXJhdGlvblZhbHVlLCBleHBlY3RlZEVycm9yKQorICAgICAgeworICAgICAgICB0cnkgewor
ICAgICAgICAgIG1lZGlhU291cmNlLmR1cmF0aW9uID0gdGVzdER1cmF0aW9uVmFsdWU7CisgICAg
ICAgICAgaWYgKGV4cGVjdGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRkFJ
TDogTWVkaWEgU291cmNlIHNldCBkdXJhdGlvbi4gRXhwZWN0ZWQgYW4gZXhjZXB0aW9uIik7Cisg
ICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgaWYgKCFleHBlY3Rl
ZEVycm9yIHx8ICEoZS5jb2RlID09IGV4cGVjdGVkRXJyb3IpKSB7CisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkZBSUw6IE1lZGlhIFNvdXJjZSBzZXQgZHVyYXRpb24uIFVuZXhwZWN0ZWQgZXhj
ZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgY29uc29sZVdyaXRlKCJQQVNT
OiBNZWRpYSBTb3VyY2Ugc2V0IGR1cmF0aW9uLiAiICsgIkdvdCBleHBlY3RlZCBleGNlcHRpb24g
IiArIGUpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbmZp
cm0gdGhhdCB2YWx1ZSBvZiBtZWRpYS1zb3VyY2UgZHVyYXRpb24gbWF0Y2hlcyB2YWx1ZSB0aGF0
IGl0IHdhcyBhc3NpZ25lZC4KKyAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYVNvdXJjZS5kdXJh
dGlvbiIsIHRlc3REdXJhdGlvblZhbHVlLCAiPT0iKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rp
b24gaW5pdGlhbGl6ZSgpCisgICAgICB7CisgICAgICAgIHNlZ21lbnRIZWxwZXIuYWRkU291cmNl
QnVmZmVyKCk7CisgICAgICAgIHNlZ21lbnRIZWxwZXIuYXBwZW5kSW5pdFNlZ21lbnQoKTsKKyAg
ICAgIH0KKworICAgICAgZnVuY3Rpb24gc2V0RHVyYXRpb25IZWxwZXIodGVzdER1cmF0aW9uVmFs
dWUsIGV4cGVjdGVkRXJyb3IsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAg
ICAgIGluaXRpYWxpemUoKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdsb2FkZWRtZXRh
ZGF0YScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gc3BlY2lm
aWVkIHZhbHVlLgorICAgICAgICAgIHZlcmlmeVNldER1cmF0aW9uKHRlc3REdXJhdGlvblZhbHVl
LCBleHBlY3RlZEVycm9yKTsKKyAgICAgICAgICBpZiAoZXhwZWN0ZWRFcnJvcikgeworICAgICAg
ICAgICAgIHJ1bk5leHRUZXN0Q2FzZSgpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgd2FpdEZvckV2ZW50T25jZSgnZHVyYXRpb25jaGFuZ2UnLCBydW5OZXh0VGVzdENhc2UpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfSwgZmFsc2UpOworICAgICAgfQorCisgICAgICBmdW5jdGlv
biB0ZXN0U2V0TWF4SW50KHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAgICAg
IC8vIFNldCBkdXJhdGlvbiB0byBtYXhpbXVtIGFsbG93ZWQgaW50LgorICAgICAgICBzZXREdXJh
dGlvbkhlbHBlcihNYXRoLnBvdygyLCAzMSkgLSAxLCBudWxsLCBydW5OZXh0VGVzdENhc2UsIHZp
ZGVvKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gdGVzdFNldE1pbkludChydW5OZXh0VGVz
dENhc2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gbWluaW11
bSBhbGxvd2VkIGludC4KKyAgICAgICAgc2V0RHVyYXRpb25IZWxwZXIoMSwgbnVsbCwgcnVuTmV4
dFRlc3RDYXNlLCB2aWRlbyk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRNYXhW
YWx1ZShydW5OZXh0VGVzdENhc2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVy
YXRpb24gdG8gbWF4aW11bSBhbGxvd2VkIEpTIHZhbHVlCisgICAgICAgIHNldER1cmF0aW9uSGVs
cGVyKE51bWJlci5NQVhfVkFMVUUsIG51bGwsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAg
ICAgfQorCisgICAgICBmdW5jdGlvbiB0ZXN0U2V0TWluVmFsdWUocnVuTmV4dFRlc3RDYXNlLCB2
aWRlbykKKyAgICAgIHsKKyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIG1pbmltdW0gYWxsb3dlZCBK
UyB2YWx1ZQorICAgICAgICBzZXREdXJhdGlvbkhlbHBlcihOdW1iZXIuTUlOX1ZBTFVFLCBudWxs
LCBydW5OZXh0VGVzdENhc2UsIHZpZGVvKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gdGVz
dFNldE1heFZhbHVlTWludXNPbmUocnVuTmV4dFRlc3RDYXNlLCB2aWRlbykKKyAgICAgIHsKKyAg
ICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIG1heGltdW0gYWxsb3dlZCBKUyB2YWx1ZSBtaW51cyAx
LgorICAgICAgICBzZXREdXJhdGlvbkhlbHBlcihOdW1iZXIuTUFYX1ZBTFVFIC0gMSwgbnVsbCwg
cnVuTmV4dFRlc3RDYXNlLCB2aWRlbyk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RT
ZXRNaW5WYWx1ZU1pbnVzT25lKHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAg
ICAgIC8vIFNldCBkdXJhdGlvbiB0byBtaW5pbXVtIGFsbG93ZWQgSlMgdmFsdWUgbWludXMgMSwg
ZXhwZWN0IGVycm9yLgorICAgICAgICB2YXIgZXJyb3IgPSBET01FeGNlcHRpb24uSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgICAgICBzZXREdXJhdGlvbkhlbHBlcihOdW1iZXIuTUlOX1ZBTFVFIC0g
MSwgZXJyb3IsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQorCisgICAgICBmdW5j
dGlvbiB0ZXN0U2V0UG9zaXRpdmVJbmZpbml0eShydW5OZXh0VGVzdENhc2UsIHZpZGVvKQorICAg
ICAgeworICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gbWF4aW11bSBudW1lcmljYWwgdmFsdWU7
CisgICAgICAgIC8vIGluIEpTIHRoYXQgaXMgPSBJbmZpbml0eTsgZXhwZWN0IG5vIGVycm9yLgor
ICAgICAgICBzZXREdXJhdGlvbkhlbHBlcihOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIG51bGws
IHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiB0ZXN0
U2V0TmVnYXRpdmVJbmZpbml0eShydW5OZXh0VGVzdENhc2UsIHZpZGVvKQorICAgICAgeworICAg
ICAgICAvLyBTZXQgZHVyYXRpb24gdG8gbWF4aW11bSBudW1lcmljYWwgdmFsdWU7CisgICAgICAg
IC8vIGluIEpTIHRoYXQgaXMgPSBJbmZpbml0eTsgZXhwZWN0IGVycm9yLgorICAgICAgICB2YXIg
ZXJyb3IgPSBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBzZXREdXJh
dGlvbkhlbHBlcihOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIGVycm9yLCBydW5OZXh0VGVzdENh
c2UsIHZpZGVvKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gdGVzdFNldExvd2VzdFZhbHVl
KHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAgICAgIC8vIFNldCBkdXJhdGlv
biB0byBsb3dlc3QgbnVtZXJpY2FsIHZhbHVlOworICAgICAgICAvLyBpbiBKUyB0aGF0IGlzID0g
bmVnYXRpdmUgb2YgbWF4X3ZhbHVlOyBleHBlY3QgZXJyb3IuCisgICAgICAgIHZhciBlcnJvciA9
IERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHNldER1cmF0aW9uSGVs
cGVyKC0xICogTnVtYmVyLk1BWF9WQUxVRSwgZXJyb3IsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8p
OworICAgICAgfQorCisgICAgICBmdW5jdGlvbiB0ZXN0U2V0TmVnYXRpdmVEb3VibGUocnVuTmV4
dFRlc3RDYXNlLCB2aWRlbykKKyAgICAgIHsKKyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIGEg
bmVnYXRpdmUgZG91YmxlLCBleHBlY3QgZXJyb3IuCisgICAgICAgIHZhciBlcnJvciA9IERPTUV4
Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKC0x
MDEuOSwgZXJyb3IsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQorCisgICAgICBm
dW5jdGlvbiB0ZXN0U2V0UG9zaXRpdmVEb3VibGUocnVuTmV4dFRlc3RDYXNlLCB2aWRlbykKKyAg
ICAgIHsKKyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIGEgcG9zaXRpdmUgZG91YmxlLCBleHBl
Y3Qgbm8gZXJyb3JzLgorICAgICAgICBzZXREdXJhdGlvbkhlbHBlcigxMDEuOSwgbnVsbCwgcnVu
TmV4dFRlc3RDYXNlLCB2aWRlbyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgIH0KKworICAg
ICAgZnVuY3Rpb24gdGVzdFNldFplcm8ocnVuTmV4dFRlc3RDYXNlLCB2aWRlbykKKyAgICAgIHsK
KyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIGEgcG9zaXRpdmUgZG91YmxlLCBleHBlY3Qgbm8g
ZXJyb3JzLgorICAgICAgICBzZXREdXJhdGlvbkhlbHBlcigwLCBudWxsLCBydW5OZXh0VGVzdENh
c2UsIHZpZGVvKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgICAgfQorCisgICAgICBmdW5jdGlv
biBzdGFydCgpCisgICAgICB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAg
ICBtZWRpYVNvdXJjZSA9IG5ldyBXZWJLaXRNZWRpYVNvdXJjZSgpOworCisgICAgICAgIHdhaXRG
b3JFdmVudEFuZEZhaWwoJ2Vycm9yJyk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0c291
cmNlb3BlbicsICIiLCBmYWxzZSwgZmFsc2UsIG1lZGlhU291cmNlKTsKKworICAgICAgICBzZWdt
ZW50SGVscGVyLmluaXQodmlkZW8sIGZ1bmN0aW9uIChzdWNjZXNzKQorICAgICAgICB7CisgICAg
ICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBmYWlsVGVzdCgiRmFpbGVkIHRvIGxv
YWQgc2VnbWVudCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorCisg
ICAgICAgICAgLy8gTGlzdGVuIHRvIGFueSBkdXJhdGlvbiBjaGFuZ2UgZXZlbnRzLgorICAgICAg
ICAgIC8vIFdoZW4gaXQgZmlyZXMsIGNoZWNrIHRvIHNlZSBpZiBkdXJhdGlvbiBvZiBIVE1MTWVk
aWFFbGVtZW50CisgICAgICAgICAgLy8gbWF0Y2hlcyBkdXJhdGlvbiBvZiBpdHMgTWVkaWFTb3Vy
Y2Ugb2JqZWN0LgorICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2R1cmF0aW9uY2hh
bmdlJywgb25EdXJhdGlvbkNoYW5nZSk7CisKKyAgICAgICAgICAvLyBMaXN0IG9mIHRlc3RzIHdl
J2QgbGlrZSB0byBydW4uCisgICAgICAgICAgdmFyIHRlc3RDYXNlcyA9IFsKKyAgICAgICAgICAg
ICAgdGVzdFNldE1heEludCwKKyAgICAgICAgICAgICAgdGVzdFNldE1pbkludCwKKyAgICAgICAg
ICAgICAgdGVzdFNldE1heFZhbHVlLAorICAgICAgICAgICAgICB0ZXN0U2V0TWF4VmFsdWVNaW51
c09uZSwKKyAgICAgICAgICAgICAgdGVzdFNldE1pblZhbHVlLAorICAgICAgICAgICAgICB0ZXN0
U2V0TWluVmFsdWVNaW51c09uZSwKKyAgICAgICAgICAgICAgdGVzdFNldFBvc2l0aXZlSW5maW5p
dHksCisgICAgICAgICAgICAgIHRlc3RTZXROZWdhdGl2ZUluZmluaXR5LAorICAgICAgICAgICAg
ICB0ZXN0U2V0TG93ZXN0VmFsdWUsCisgICAgICAgICAgICAgIHRlc3RTZXROZWdhdGl2ZURvdWJs
ZSwKKyAgICAgICAgICAgICAgdGVzdFNldFBvc2l0aXZlRG91YmxlCisgICAgICAgICAgXTsKKyAg
ICAgICAgICBNZWRpYVNvdXJjZVRlc3Quc3RhcnRTb3VyY2VPcGVuVGVzdGluZyh2aWRlbywgdGVz
dENhc2VzKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4K
KyAgCisgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgPHZpZGVvIGF1dG9wbGF5IGNvbnRy
b2xzPjwvdmlkZW8+CisgICAgPHA+VGVzdHMgYm91bmRhcnkgdmFsdWVzIGZvciBkdXJhdGlvbiBh
dHRyaWJ1dGUgb24gTWVkaWFTb3VyY2Ugb2JqZWN0LjwvcD4KKyAgPC9ib2R5PgorCis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92
aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmI5MzJhMGViMmNkZTg1NWMyMmZhZWE0YjcyMzhiZTk3
ZDY1ODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKK1Rlc3RzIHNpbXBsZSBvcGVyYXRpb25zIHdpdGggZHVyYXRpb24gYXR0cmli
dXRlIG9mIE1lZGlhU291cmNlIG9iamVjdC4KKworT3JpZ2luYWwgZHVyYXRpb24gPSA2CitFWFBF
Q1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJzEnKSBPSworRVhQRUNURUQgKG1lZGlhU291
cmNlLmR1cmF0aW9uID09ICcxJykgT0sKK1BBU1M6IE1lZGlhIFNvdXJjZSBkdXJhdGlvbiB0cnVu
Y2F0ZWQgYW5kIGN1cnJlbnQgdGltZSBjaGFuZ2VkIHRvID0gMQorRU5EIE9GIFRFU1QKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8t
bWVkaWEtc291cmNlLWR1cmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZTIyYTJhOWJiZmYzZjMyODYxMzNkZjMzMjk0YjEwYWMwMjAzNDAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVk
aWEtc291cmNlLWR1cmF0aW9uLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4gIAorICA8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL21lZGlhLXJlc291cmNlcy92
aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL21lZGlhL3Jlc291cmNl
cy9tZWRpYS1zb3VyY2Uvd2VibS9zZWdtZW50LWluZm8uanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJtZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICB2
YXIgc2VnbWVudEhlbHBlciA9IG5ldyBNZWRpYVNvdXJjZVRlc3QuU2VnbWVudEhlbHBlcihXZWJN
U2VnbWVudEluZm8udGVzdFdlYk0pOworICAgICAgdmFyIHNlZWtUbyA9IDI7CisgICAgICB2YXIg
bmV3RHVyYXRpb24gPSAxOworCisgICAgICBmdW5jdGlvbiBvblNvdXJjZU9wZW4oZXZlbnQpCisg
ICAgICB7CisgICAgICAgIG1lZGlhU291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdHNv
dXJjZW9wZW4nLCBvblNvdXJjZU9wZW4pOworCisgICAgICAgIC8vIEFkZCBhbiBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGFuZCBtdWx0aXBsZSBtZWRpYSBzZWdtZW50cy4KKyAgICAgICAgc2VnbWVu
dEhlbHBlci5hZGRTb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgc2VnbWVudEhlbHBlci5hcHBlbmRJ
bml0U2VnbWVudCgpOworICAgICAgICBzZWdtZW50SGVscGVyLmFwcGVuZEFsbE1lZGlhU2VnbWVu
dHMoKTsKKworICAgICAgICAvLyBBcHBlbmRpbmcgYWxsIHNlZ21lbnRzIHRyaWdnZXJzIGEgcGxh
eWluZyBldmVudDsKKyAgICAgICAgLy8gYWRkIGEgbGlzdGVuZXIgZm9yIHRoYXQgZXZlbnQuCisg
ICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpOworICAg
ICAgfQorCisgICAgICBmdW5jdGlvbiBvblBsYXlpbmcoZXZlbnQpCisgICAgICB7CisgICAgICAg
IGNvbnNvbGVXcml0ZSgiT3JpZ2luYWwgZHVyYXRpb24gPSAiICsgbWVkaWFTb3VyY2UuZHVyYXRp
b24udG9GaXhlZCgpKTsKKyAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSBzZWVrVG87CisKKyAg
ICAgICAgLy8gQ2hhbmdpbmcgdmlkZW8gY3VycmVudC10aW1lIHRyaWdnZXJzIGEgc2Vla2VkIGV2
ZW50LgorICAgICAgICAvLyBBZGQgYSBsaXN0ZW5lciB0byBpdC4KKyAgICAgICAgdmlkZW8uYWRk
RXZlbnRMaXN0ZW5lcignc2Vla2VkJywgb25TZWVrZWQpOworICAgICAgfQorCisgICAgICBmdW5j
dGlvbiBvblNlZWtlZChldmVudCkKKyAgICAgIHsKKyAgICAgICAgLy8gUGxheXRpbWUgc2hvdWxk
IG5vdyBiZSBhdCAyIHNlY29uZHMuCisgICAgICAgIC8vIFNldCBkdXJhdGlvbiB0byA8IGN1cnJl
bnQgcGxheXRpbWUuCisgICAgICAgIG1lZGlhU291cmNlLmR1cmF0aW9uID0gbmV3RHVyYXRpb247
CisgICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWFTb3VyY2UuZHVyYXRpb24iLCBuZXdEdXJhdGlv
biwgIj09Iik7CisKKyAgICAgICAgLy8gQmVjYXVzZSB0aGUgZHVyYXRpb24gd2FzIHNldCB0byBi
ZSBiZWZvcmUgdGhlIHBsYXliYWNrIHBvc2l0aW9uLAorICAgICAgICAvLyBjdXJyZW50IHBsYXli
YWNrIHBvc2l0aW9uIHNob3VsZCBub3cgYmUgdGhlIHNhbWUgYXMgdGhlIG5ldyBkdXJhdGlvbi4K
KyAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYVNvdXJjZS5kdXJhdGlvbiIsIHZpZGVvLmN1cnJl
bnRUaW1lLCAiPT0iKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCJQQVNTOiBNZWRpYSBTb3VyY2Ug
ZHVyYXRpb24gdHJ1bmNhdGVkIGFuZCBjdXJyZW50IHRpbWUgY2hhbmdlZCB0byA9ICIgKyBtZWRp
YVNvdXJjZS5kdXJhdGlvbik7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgIH0KKworICAgICAg
ZnVuY3Rpb24gc3RhcnQoKQorICAgICAgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisK
KyAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKworICAgICAgICBtZWRpYVNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgb25Tb3VyY2VPcGVuKTsK
KworICAgICAgICBzZWdtZW50SGVscGVyLmluaXQodmlkZW8sIGZ1bmN0aW9uIChzdWNjZXNzKQor
ICAgICAgICB7CisgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBmYWlsVGVz
dCgiRmFpbGVkIHRvIGxvYWQgc2VnbWVudCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgfQorCisgICAgICAgICAgTWVkaWFTb3VyY2VUZXN0LnNldFNyY1RvTWVkaWFTb3Vy
Y2VUZXN0VVJMKHZpZGVvKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgPC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8dmlkZW8gYXV0b3BsYXkg
Y29udHJvbHM+PC92aWRlbz4KKyAgICA8cD5UZXN0cyBzaW1wbGUgb3BlcmF0aW9ucyB3aXRoIGR1
cmF0aW9uIGF0dHJpYnV0ZSBvZiBNZWRpYVNvdXJjZSBvYmplY3QuPC9wPgorICA8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195796</attachid>
            <date>2013-03-29 14:05:17 -0700</date>
            <delta_ts>2013-03-29 15:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113438-20130329140514.patch</filename>
            <type>text/plain</type>
            <size>16386</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MjI0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjc3OTA1ZTAwN2Q3YjQ5MzNlZjk2
YzZhOGNmNTE2NTg3ZmNhNDg1YS4uOThmYjM1NjQxM2NkYWExMTViMzkyZmMxMGVmMzkzMjgyZDcz
MDM1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTI5ICBBYXJvbiBDb2x3ZWxsICA8
YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0cyB0aGF0IHZl
cmlmeSBNZWRpYVNvdXJjZS5kdXJhdGlvbiBiZWhhdmlvci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3Zp
ZGVvLW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1ib3VuZGFyeWNvbmRpdGlvbnMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291
cmNlLWR1cmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTI5ICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1Pgog
CiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkbmVpbmcuIFVwZGF0ZWQgcG5nIGV4cGVjdGVk
IHJlc3VsdHMgYWZ0ZXIgcjE0NjIwNi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1ib3VuZGFy
eWNvbmRpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9uLWJvdW5kYXJ5Y29uZGl0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQwMTIwNTk1MGI0NWI1N2FjZTIyOWRhNjUzYmY2
YTI4MzcyOWJiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1ib3VuZGFyeWNvbmRp
dGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTUgQEAKK1Rlc3RzIGJvdW5kYXJ5IHZhbHVl
cyBmb3IgZHVyYXRpb24gYXR0cmlidXRlIG9uIE1lZGlhU291cmNlIG9iamVjdC4KKworCitydW5u
aW5nIHRlc3RTZXRNYXhJbnQKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitvbkR1cmF0aW9uQ2hh
bmdlIDogdmlkZW8uZHVyYXRpb24gaXMgNi4wNDIKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJh
dGlvbiA9PSAndmlkZW8uZHVyYXRpb24nKSBPSworRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFWFBF
Q1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJ3Rlc3REdXJhdGlvblZhbHVlJyksIE9CU0VS
VkVEICcyMTQ3NDgzNjQ4JyBGQUlMCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRpb24g
aXMgMjE0NzQ4MzY0OC4wMDAKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSAndmlk
ZW8uZHVyYXRpb24nKSBPSworRVZFTlQoZHVyYXRpb25jaGFuZ2UpCisKK3J1bm5pbmcgdGVzdFNl
dE1pbkludAorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRpb25DaGFuZ2UgOiB2aWRl
by5kdXJhdGlvbiBpcyA2LjA0MgorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09ICd2
aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChtZWRp
YVNvdXJjZS5kdXJhdGlvbiA9PSAndGVzdER1cmF0aW9uVmFsdWUnKSBPSworb25EdXJhdGlvbkNo
YW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDEuMDAwCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVy
YXRpb24gPT0gJ3ZpZGVvLmR1cmF0aW9uJykgT0sKK0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorCity
dW5uaW5nIHRlc3RTZXRNYXhWYWx1ZQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRp
b25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0MgorRVhQRUNURUQgKG1lZGlhU291cmNl
LmR1cmF0aW9uID09ICd2aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkK
K0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSAndGVzdER1cmF0aW9uVmFsdWUnKSwg
T0JTRVJWRUQgJzMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgnIEZBSUwKK29uRHVyYXRpb25DaGFuZ2Ug
OiB2aWRlby5kdXJhdGlvbiBpcyAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4CitFWFBFQ1RFRCAobWVk
aWFTb3VyY2UuZHVyYXRpb24gPT0gJ3ZpZGVvLmR1cmF0aW9uJykgT0sKK0VWRU5UKGR1cmF0aW9u
Y2hhbmdlKQorCitydW5uaW5nIHRlc3RTZXRNYXhWYWx1ZU1pbnVzT25lCitFVkVOVCh3ZWJraXRz
b3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDYuMDQyCitF
WFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJ3ZpZGVvLmR1cmF0aW9uJykgT0sKK0VW
RU5UKGxvYWRlZG1ldGFkYXRhKQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9uID09ICd0
ZXN0RHVyYXRpb25WYWx1ZScpLCBPQlNFUlZFRCAnMy40MDI4MjM0NjYzODUyODg2ZSszOCcgRkFJ
TAorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDMuNDAyODIzNDY2Mzg1Mjg4
NmUrMzgKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSAndmlkZW8uZHVyYXRpb24n
KSBPSworRVZFTlQoZHVyYXRpb25jaGFuZ2UpCisKK3J1bm5pbmcgdGVzdFNldE1pblZhbHVlCitF
VkVOVCh3ZWJraXRzb3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9u
IGlzIDYuMDQyCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJ3ZpZGVvLmR1cmF0
aW9uJykgT0sKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1
cmF0aW9uID09ICd0ZXN0RHVyYXRpb25WYWx1ZScpLCBPQlNFUlZFRCAnMS4xNzU0OTQzNTA4MjIy
ODc1ZS0zOCcgRkFJTAorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0aW9uIGlzIDAuMDAw
CitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJ3ZpZGVvLmR1cmF0aW9uJykgT0sK
K0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorCitydW5uaW5nIHRlc3RTZXRNaW5WYWx1ZU1pbnVzT25l
CitFVkVOVCh3ZWJraXRzb3VyY2VvcGVuKQorb25EdXJhdGlvbkNoYW5nZSA6IHZpZGVvLmR1cmF0
aW9uIGlzIDYuMDQyCitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJ3ZpZGVvLmR1
cmF0aW9uJykgT0sKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorUEFTUzogTWVkaWEgU291cmNlIHNl
dCBkdXJhdGlvbi4gR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZEFjY2Vzc0Vy
cm9yOiBET00gRXhjZXB0aW9uIDE1CisKK3J1bm5pbmcgdGVzdFNldFBvc2l0aXZlSW5maW5pdHkK
K0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitvbkR1cmF0aW9uQ2hhbmdlIDogdmlkZW8uZHVyYXRp
b24gaXMgNi4wNDIKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSAndmlkZW8uZHVy
YXRpb24nKSBPSworRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAobWVkaWFTb3VyY2Uu
ZHVyYXRpb24gPT0gJ3Rlc3REdXJhdGlvblZhbHVlJykgT0sKK29uRHVyYXRpb25DaGFuZ2UgOiB2
aWRlby5kdXJhdGlvbiBpcyBJbmZpbml0eQorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0aW9u
ID09ICd2aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKKworcnVubmlu
ZyB0ZXN0U2V0TmVnYXRpdmVJbmZpbml0eQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVy
YXRpb25DaGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0MgorRVhQRUNURUQgKG1lZGlhU291
cmNlLmR1cmF0aW9uID09ICd2aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0
YSkKK1BBU1M6IE1lZGlhIFNvdXJjZSBzZXQgZHVyYXRpb24uIEdvdCBleHBlY3RlZCBleGNlcHRp
b24gRXJyb3I6IEludmFsaWRBY2Nlc3NFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNQorCitydW5uaW5n
IHRlc3RTZXRMb3dlc3RWYWx1ZQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRpb25D
aGFuZ2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0MgorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1
cmF0aW9uID09ICd2aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK1BB
U1M6IE1lZGlhIFNvdXJjZSBzZXQgZHVyYXRpb24uIEdvdCBleHBlY3RlZCBleGNlcHRpb24gRXJy
b3I6IEludmFsaWRBY2Nlc3NFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNQorCitydW5uaW5nIHRlc3RT
ZXROZWdhdGl2ZURvdWJsZQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK29uRHVyYXRpb25DaGFu
Z2UgOiB2aWRlby5kdXJhdGlvbiBpcyA2LjA0MgorRVhQRUNURUQgKG1lZGlhU291cmNlLmR1cmF0
aW9uID09ICd2aWRlby5kdXJhdGlvbicpIE9LCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK1BBU1M6
IE1lZGlhIFNvdXJjZSBzZXQgZHVyYXRpb24uIEdvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6
IEludmFsaWRBY2Nlc3NFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNQorCitydW5uaW5nIHRlc3RTZXRQ
b3NpdGl2ZURvdWJsZQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK0VORCBPRiBURVNUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVv
LW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1ib3VuZGFyeWNvbmRpdGlvbnMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1kdXJh
dGlvbi1ib3VuZGFyeWNvbmRpdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjBlZjRiZWQxMGM3ZWVk
YWZiMDQ5YTZhNGY0YTBhNmQ3OGFkZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvdmlkZW8tbWVkaWEtc291cmNlLWR1cmF0aW9u
LWJvdW5kYXJ5Y29uZGl0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTk3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL21lZGlhLXJlc291cmNlcy92
aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL21lZGlhL3Jlc291cmNl
cy9tZWRpYS1zb3VyY2Uvd2VibS9zZWdtZW50LWluZm8uanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJtZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICB2
YXIgc2VnbWVudEhlbHBlciA9IG5ldyBNZWRpYVNvdXJjZVRlc3QuU2VnbWVudEhlbHBlcihXZWJN
U2VnbWVudEluZm8udGVzdFdlYk0pOworCisgICAgICAvLyBEdXJhdGlvbiBvZiBIVE1MTWVkaWFF
bGVtZW50IChpLmUuLCB2aWRlbykgY2hhbmdlZC4KKyAgICAgIGZ1bmN0aW9uIG9uRHVyYXRpb25D
aGFuZ2UoKQorICAgICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIm9uRHVyYXRpb25DaGFuZ2Ug
OiB2aWRlby5kdXJhdGlvbiBpcyAiICsgdmlkZW8uZHVyYXRpb24udG9GaXhlZCgzKSk7CisKKyAg
ICAgICAgLy8gQ29uZmlybSB0aGF0IHZhbHVlIG9mIG1lZGlhLXNvdXJjZSBkdXJhdGlvbiBtYXRj
aGVzIHZhbHVlIG9mCisgICAgICAgIC8vIHBhcmVudCBIVE1MIE1lZGlhIEVsZW1lbnQncyBkdXJh
dGlvbi4KKyAgICAgICAgLy8gRG8gdGhpcyBvbmx5IGlmIHRoZSB2aWRlbyB0YWcgcmVhZHkgc3Rh
dGUgaXMgZ3JlYXRlcgorICAgICAgICAvLyB0aGFuIEhBVkVfTk9USElORy4KKyAgICAgICAgLy8g
V2l0aG91dCBtZXRhZGF0YSwgcGFyZW50IG1lZGlhIGVsZW1lbnQgd29uJ3QgaGF2ZSBhIGR1cmF0
aW9uIHZhbHVlIGRlZmluZWQuCisgICAgICAgIGlmICh2aWRlby5yZWFkeVN0YXRlIDw9IHZpZGVv
LkhBVkVfTk9USElORykKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRG9uJ3QgdXNl
ICJ0ZXN0RXhwZWN0ZWQoKSIgc28gd2Ugd29uJ3QgbG9nIHRoZSBhY3R1YWwgZHVyYXRpb24gYXMg
dGhlIGZsb2F0aW5nIHBvaW50IHJlc3VsdCBtYXkgZGlmZmVyIHdpdGggZGlmZmVyZW50IGVuZ2lu
ZXMuCisgICAgICAgIHJlcG9ydEV4cGVjdGVkKG1lZGlhU291cmNlLmR1cmF0aW9uID09IHZpZGVv
LmR1cmF0aW9uLCAibWVkaWFTb3VyY2UuZHVyYXRpb24iLCAiPT0iLCAidmlkZW8uZHVyYXRpb24i
LCBtZWRpYVNvdXJjZS5kdXJhdGlvbik7CisgICAgICB9CisKKyAgICAgIC8vIFNldCBkdXJhdGlv
biBvZiB0aGUgTWVkaWFTb3VyY2Ugb2JqZWN0IHRvIHRoZSBpbnB1dCBkdXJhdGlvbiB2YWx1ZS4K
KyAgICAgIC8vIEFsc28gY2hlY2sgaWYgYW55IGVycm9yLCBpZiBzcGVjaWZpZWQsIHdhcyByYWlz
ZWQuCisgICAgICBmdW5jdGlvbiB2ZXJpZnlTZXREdXJhdGlvbih0ZXN0RHVyYXRpb25WYWx1ZSwg
ZXhwZWN0ZWRFcnJvcikKKyAgICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBtZWRpYVNv
dXJjZS5kdXJhdGlvbiA9IHRlc3REdXJhdGlvblZhbHVlOworICAgICAgICAgIGlmIChleHBlY3Rl
ZEVycm9yKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkZBSUw6IE1lZGlhIFNvdXJjZSBz
ZXQgZHVyYXRpb24uIEV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgIH0KKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgIGlmICghZXhwZWN0ZWRFcnJvciB8fCAhKGUuY29k
ZSA9PSBleHBlY3RlZEVycm9yKSkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJGQUlMOiBN
ZWRpYSBTb3VyY2Ugc2V0IGR1cmF0aW9uLiBVbmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUEFTUzogTWVkaWEgU291cmNlIHNl
dCBkdXJhdGlvbi4gIiArICJHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBDb25maXJtIHRoYXQgdmFsdWUgb2Yg
bWVkaWEtc291cmNlIGR1cmF0aW9uIG1hdGNoZXMgdmFsdWUgdGhhdCBpdCB3YXMgYXNzaWduZWQu
CisgICAgICAgIC8vIERvbid0IHVzZSAidGVzdEV4cGVjdGVkKCkiIHNvIHdlIHdvbid0IGxvZyB0
aGUgYWN0dWFsIGR1cmF0aW9uIGFzIHRoZSBmbG9hdGluZyBwb2ludCByZXN1bHQgbWF5IGRpZmZl
ciB3aXRoIGRpZmZlcmVudCBlbmdpbmVzLgorICAgICAgICByZXBvcnRFeHBlY3RlZChtZWRpYVNv
dXJjZS5kdXJhdGlvbiA9PSB0ZXN0RHVyYXRpb25WYWx1ZSwgIm1lZGlhU291cmNlLmR1cmF0aW9u
IiwgIj09IiwgInRlc3REdXJhdGlvblZhbHVlIiwgbWVkaWFTb3VyY2UuZHVyYXRpb24pOworICAg
ICAgfQorCisgICAgICBmdW5jdGlvbiBpbml0aWFsaXplKCkKKyAgICAgIHsKKyAgICAgICAgc2Vn
bWVudEhlbHBlci5hZGRTb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgc2VnbWVudEhlbHBlci5hcHBl
bmRJbml0U2VnbWVudCgpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBzZXREdXJhdGlvbkhl
bHBlcih0ZXN0RHVyYXRpb25WYWx1ZSwgZXhwZWN0ZWRFcnJvciwgcnVuTmV4dFRlc3RDYXNlLCB2
aWRlbykKKyAgICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZSgpOworCisgICAgICAgIHdhaXRGb3JF
dmVudE9uY2UoJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIC8vIFNl
dCBkdXJhdGlvbiB0byBzcGVjaWZpZWQgdmFsdWUuCisgICAgICAgICAgdmVyaWZ5U2V0RHVyYXRp
b24odGVzdER1cmF0aW9uVmFsdWUsIGV4cGVjdGVkRXJyb3IpOworICAgICAgICAgIGlmIChleHBl
Y3RlZEVycm9yKSB7CisgICAgICAgICAgICAgcnVuTmV4dFRlc3RDYXNlKCk7CisgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdkdXJhdGlvbmNoYW5nZScs
IHJ1bk5leHRUZXN0Q2FzZSk7CisgICAgICAgICAgfQorICAgICAgICB9LCBmYWxzZSk7CisgICAg
ICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRNYXhJbnQocnVuTmV4dFRlc3RDYXNlLCB2aWRl
bykKKyAgICAgIHsKKyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIG1heGltdW0gYWxsb3dlZCBp
bnQuCisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKE1hdGgucG93KDIsIDMxKSAtIDEsIG51bGws
IHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiB0ZXN0
U2V0TWluSW50KHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAgICAgIC8vIFNl
dCBkdXJhdGlvbiB0byBtaW5pbXVtIGFsbG93ZWQgaW50LgorICAgICAgICBzZXREdXJhdGlvbkhl
bHBlcigxLCBudWxsLCBydW5OZXh0VGVzdENhc2UsIHZpZGVvKTsKKyAgICAgIH0KKworICAgICAg
ZnVuY3Rpb24gdGVzdFNldE1heFZhbHVlKHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7
CisgICAgICAgIC8vIFNldCBkdXJhdGlvbiB0byBtYXhpbXVtIGFsbG93ZWQgSlMgdmFsdWUKKyAg
ICAgICAgc2V0RHVyYXRpb25IZWxwZXIoTnVtYmVyLk1BWF9WQUxVRSwgbnVsbCwgcnVuTmV4dFRl
c3RDYXNlLCB2aWRlbyk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRNaW5WYWx1
ZShydW5OZXh0VGVzdENhc2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVyYXRp
b24gbWluaW11bSBhbGxvd2VkIEpTIHZhbHVlCisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKE51
bWJlci5NSU5fVkFMVUUsIG51bGwsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQor
CisgICAgICBmdW5jdGlvbiB0ZXN0U2V0TWF4VmFsdWVNaW51c09uZShydW5OZXh0VGVzdENhc2Us
IHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gbWF4aW11bSBhbGxv
d2VkIEpTIHZhbHVlIG1pbnVzIDEuCisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKE51bWJlci5N
QVhfVkFMVUUgLSAxLCBudWxsLCBydW5OZXh0VGVzdENhc2UsIHZpZGVvKTsKKyAgICAgIH0KKwor
ICAgICAgZnVuY3Rpb24gdGVzdFNldE1pblZhbHVlTWludXNPbmUocnVuTmV4dFRlc3RDYXNlLCB2
aWRlbykKKyAgICAgIHsKKyAgICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIG1pbmltdW0gYWxsb3dl
ZCBKUyB2YWx1ZSBtaW51cyAxLCBleHBlY3QgZXJyb3IuCisgICAgICAgIHZhciBlcnJvciA9IERP
TUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHNldER1cmF0aW9uSGVscGVy
KE51bWJlci5NSU5fVkFMVUUgLSAxLCBlcnJvciwgcnVuTmV4dFRlc3RDYXNlLCB2aWRlbyk7Cisg
ICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRQb3NpdGl2ZUluZmluaXR5KHJ1bk5leHRU
ZXN0Q2FzZSwgdmlkZW8pCisgICAgICB7CisgICAgICAgIC8vIFNldCBkdXJhdGlvbiB0byBtYXhp
bXVtIG51bWVyaWNhbCB2YWx1ZTsKKyAgICAgICAgLy8gaW4gSlMgdGhhdCBpcyA9IEluZmluaXR5
OyBleHBlY3Qgbm8gZXJyb3IuCisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKE51bWJlci5QT1NJ
VElWRV9JTkZJTklUWSwgbnVsbCwgcnVuTmV4dFRlc3RDYXNlLCB2aWRlbyk7CisgICAgICB9CisK
KyAgICAgIGZ1bmN0aW9uIHRlc3RTZXROZWdhdGl2ZUluZmluaXR5KHJ1bk5leHRUZXN0Q2FzZSwg
dmlkZW8pCisgICAgICB7CisgICAgICAgIC8vIFNldCBkdXJhdGlvbiB0byBtYXhpbXVtIG51bWVy
aWNhbCB2YWx1ZTsKKyAgICAgICAgLy8gaW4gSlMgdGhhdCBpcyA9IEluZmluaXR5OyBleHBlY3Qg
ZXJyb3IuCisgICAgICAgIHZhciBlcnJvciA9IERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSwg
ZXJyb3IsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgfQorCisgICAgICBmdW5jdGlv
biB0ZXN0U2V0TG93ZXN0VmFsdWUocnVuTmV4dFRlc3RDYXNlLCB2aWRlbykKKyAgICAgIHsKKyAg
ICAgICAgLy8gU2V0IGR1cmF0aW9uIHRvIGxvd2VzdCBudW1lcmljYWwgdmFsdWU7CisgICAgICAg
IC8vIGluIEpTIHRoYXQgaXMgPSBuZWdhdGl2ZSBvZiBtYXhfdmFsdWU7IGV4cGVjdCBlcnJvci4K
KyAgICAgICAgdmFyIGVycm9yID0gRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgc2V0RHVyYXRpb25IZWxwZXIoLTEgKiBOdW1iZXIuTUFYX1ZBTFVFLCBlcnJvciwgcnVu
TmV4dFRlc3RDYXNlLCB2aWRlbyk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRO
ZWdhdGl2ZURvdWJsZShydW5OZXh0VGVzdENhc2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAv
LyBTZXQgZHVyYXRpb24gdG8gYSBuZWdhdGl2ZSBkb3VibGUsIGV4cGVjdCBlcnJvci4KKyAgICAg
ICAgdmFyIGVycm9yID0gRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
c2V0RHVyYXRpb25IZWxwZXIoLTEwMS45LCBlcnJvciwgcnVuTmV4dFRlc3RDYXNlLCB2aWRlbyk7
CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHRlc3RTZXRQb3NpdGl2ZURvdWJsZShydW5OZXh0
VGVzdENhc2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gYSBw
b3NpdGl2ZSBkb3VibGUsIGV4cGVjdCBubyBlcnJvcnMuCisgICAgICAgIHNldER1cmF0aW9uSGVs
cGVyKDEwMS45LCBudWxsLCBydW5OZXh0VGVzdENhc2UsIHZpZGVvKTsKKyAgICAgICAgZW5kVGVz
dCgpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiB0ZXN0U2V0WmVybyhydW5OZXh0VGVzdENh
c2UsIHZpZGVvKQorICAgICAgeworICAgICAgICAvLyBTZXQgZHVyYXRpb24gdG8gYSBwb3NpdGl2
ZSBkb3VibGUsIGV4cGVjdCBubyBlcnJvcnMuCisgICAgICAgIHNldER1cmF0aW9uSGVscGVyKDAs
IG51bGwsIHJ1bk5leHRUZXN0Q2FzZSwgdmlkZW8pOworICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICB9CisKKyAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgIHsKKyAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworCisgICAgICAgIG1lZGlhU291cmNlID0gbmV3IFdlYktpdE1lZGlhU291cmNl
KCk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCd3ZWJraXRzb3VyY2VvcGVuJywgIiIsIGZhbHNlLCBmYWxzZSwgbWVkaWFTb3Vy
Y2UpOworCisgICAgICAgIHNlZ21lbnRIZWxwZXIuaW5pdCh2aWRlbywgZnVuY3Rpb24gKHN1Y2Nl
c3MpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGZh
aWxUZXN0KCJGYWlsZWQgdG8gbG9hZCBzZWdtZW50IGRhdGEiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBMaXN0ZW4gdG8gYW55IGR1cmF0aW9uIGNo
YW5nZSBldmVudHMuCisgICAgICAgICAgLy8gV2hlbiBpdCBmaXJlcywgY2hlY2sgdG8gc2VlIGlm
IGR1cmF0aW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQKKyAgICAgICAgICAvLyBtYXRjaGVzIGR1cmF0
aW9uIG9mIGl0cyBNZWRpYVNvdXJjZSBvYmplY3QuCisgICAgICAgICAgdmlkZW8uYWRkRXZlbnRM
aXN0ZW5lcignZHVyYXRpb25jaGFuZ2UnLCBvbkR1cmF0aW9uQ2hhbmdlKTsKKworICAgICAgICAg
IC8vIExpc3Qgb2YgdGVzdHMgd2UnZCBsaWtlIHRvIHJ1bi4KKyAgICAgICAgICB2YXIgdGVzdENh
c2VzID0gWworICAgICAgICAgICAgICB0ZXN0U2V0TWF4SW50LAorICAgICAgICAgICAgICB0ZXN0
U2V0TWluSW50LAorICAgICAgICAgICAgICB0ZXN0U2V0TWF4VmFsdWUsCisgICAgICAgICAgICAg
IHRlc3RTZXRNYXhWYWx1ZU1pbnVzT25lLAorICAgICAgICAgICAgICB0ZXN0U2V0TWluVmFsdWUs
CisgICAgICAgICAgICAgIHRlc3RTZXRNaW5WYWx1ZU1pbnVzT25lLAorICAgICAgICAgICAgICB0
ZXN0U2V0UG9zaXRpdmVJbmZpbml0eSwKKyAgICAgICAgICAgICAgdGVzdFNldE5lZ2F0aXZlSW5m
aW5pdHksCisgICAgICAgICAgICAgIHRlc3RTZXRMb3dlc3RWYWx1ZSwKKyAgICAgICAgICAgICAg
dGVzdFNldE5lZ2F0aXZlRG91YmxlLAorICAgICAgICAgICAgICB0ZXN0U2V0UG9zaXRpdmVEb3Vi
bGUKKyAgICAgICAgICBdOworICAgICAgICAgIE1lZGlhU291cmNlVGVzdC5zdGFydFNvdXJjZU9w
ZW5UZXN0aW5nKHZpZGVvLCB0ZXN0Q2FzZXMpOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKyAgPC9oZWFkPgorICAKKyAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8
dmlkZW8gYXV0b3BsYXkgY29udHJvbHM+PC92aWRlbz4KKyAgICA8cD5UZXN0cyBib3VuZGFyeSB2
YWx1ZXMgZm9yIGR1cmF0aW9uIGF0dHJpYnV0ZSBvbiBNZWRpYVNvdXJjZSBvYmplY3QuPC9wPgor
ICA8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1kdXJhdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRp
YS1zb3VyY2UtZHVyYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjkzMmEwZWIyY2Rl
ODU1YzIyZmFlYTRiNzIzOGJlOTdkNjU4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdHMgc2ltcGxlIG9wZXJhdGlvbnMg
d2l0aCBkdXJhdGlvbiBhdHRyaWJ1dGUgb2YgTWVkaWFTb3VyY2Ugb2JqZWN0LgorCitPcmlnaW5h
bCBkdXJhdGlvbiA9IDYKK0VYUEVDVEVEIChtZWRpYVNvdXJjZS5kdXJhdGlvbiA9PSAnMScpIE9L
CitFWFBFQ1RFRCAobWVkaWFTb3VyY2UuZHVyYXRpb24gPT0gJzEnKSBPSworUEFTUzogTWVkaWEg
U291cmNlIGR1cmF0aW9uIHRydW5jYXRlZCBhbmQgY3VycmVudCB0aW1lIGNoYW5nZWQgdG8gPSAx
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3ZpZGVvLW1lZGlhLXNvdXJjZS1kdXJh
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMjJhMmE5YmJmZjNmMzI4NjEzM2RmMzMyOTRiMTBhYzAy
MDM0MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS92aWRlby1tZWRpYS1zb3VyY2UtZHVyYXRpb24uaHRtbApAQCAtMCwwICsxLDc0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPiAgCisgIDxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIvbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvbWVkaWEvcmVzb3VyY2VzL21lZGlhLXNvdXJjZS93ZWJtL3NlZ21lbnQtaW5mby5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICAgIHZhciBzZWdtZW50SGVscGVyID0gbmV3IE1lZGlhU291cmNlVGVz
dC5TZWdtZW50SGVscGVyKFdlYk1TZWdtZW50SW5mby50ZXN0V2ViTSk7CisgICAgICB2YXIgc2Vl
a1RvID0gMjsKKyAgICAgIHZhciBuZXdEdXJhdGlvbiA9IDE7CisKKyAgICAgIGZ1bmN0aW9uIG9u
U291cmNlT3BlbihldmVudCkKKyAgICAgIHsKKyAgICAgICAgbWVkaWFTb3VyY2UucmVtb3ZlRXZl
bnRMaXN0ZW5lcignd2Via2l0c291cmNlb3BlbicsIG9uU291cmNlT3Blbik7CisKKyAgICAgICAg
Ly8gQWRkIGFuIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIG11bHRpcGxlIG1lZGlhIHNlZ21l
bnRzLgorICAgICAgICBzZWdtZW50SGVscGVyLmFkZFNvdXJjZUJ1ZmZlcigpOworICAgICAgICBz
ZWdtZW50SGVscGVyLmFwcGVuZEluaXRTZWdtZW50KCk7CisgICAgICAgIHNlZ21lbnRIZWxwZXIu
YXBwZW5kQWxsTWVkaWFTZWdtZW50cygpOworCisgICAgICAgIC8vIEFwcGVuZGluZyBhbGwgc2Vn
bWVudHMgdHJpZ2dlcnMgYSBwbGF5aW5nIGV2ZW50OworICAgICAgICAvLyBhZGQgYSBsaXN0ZW5l
ciBmb3IgdGhhdCBldmVudC4KKyAgICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWlu
ZycsIG9uUGxheWluZyk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIG9uUGxheWluZyhldmVu
dCkKKyAgICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJPcmlnaW5hbCBkdXJhdGlvbiA9ICIg
KyBtZWRpYVNvdXJjZS5kdXJhdGlvbi50b0ZpeGVkKCkpOworICAgICAgICB2aWRlby5jdXJyZW50
VGltZSA9IHNlZWtUbzsKKworICAgICAgICAvLyBDaGFuZ2luZyB2aWRlbyBjdXJyZW50LXRpbWUg
dHJpZ2dlcnMgYSBzZWVrZWQgZXZlbnQuCisgICAgICAgIC8vIEFkZCBhIGxpc3RlbmVyIHRvIGl0
LgorICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBvblNlZWtlZCk7Cisg
ICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIG9uU2Vla2VkKGV2ZW50KQorICAgICAgeworICAgICAg
ICAvLyBQbGF5dGltZSBzaG91bGQgbm93IGJlIGF0IDIgc2Vjb25kcy4KKyAgICAgICAgLy8gU2V0
IGR1cmF0aW9uIHRvIDwgY3VycmVudCBwbGF5dGltZS4KKyAgICAgICAgbWVkaWFTb3VyY2UuZHVy
YXRpb24gPSBuZXdEdXJhdGlvbjsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYVNvdXJjZS5k
dXJhdGlvbiIsIG5ld0R1cmF0aW9uLCAiPT0iKTsKKworICAgICAgICAvLyBCZWNhdXNlIHRoZSBk
dXJhdGlvbiB3YXMgc2V0IHRvIGJlIGJlZm9yZSB0aGUgcGxheWJhY2sgcG9zaXRpb24sCisgICAg
ICAgIC8vIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gc2hvdWxkIG5vdyBiZSB0aGUgc2FtZSBh
cyB0aGUgbmV3IGR1cmF0aW9uLgorICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhU291cmNlLmR1
cmF0aW9uIiwgdmlkZW8uY3VycmVudFRpbWUsICI9PSIpOworICAgICAgICBjb25zb2xlV3JpdGUo
IlBBU1M6IE1lZGlhIFNvdXJjZSBkdXJhdGlvbiB0cnVuY2F0ZWQgYW5kIGN1cnJlbnQgdGltZSBj
aGFuZ2VkIHRvID0gIiArIG1lZGlhU291cmNlLmR1cmF0aW9uKTsKKyAgICAgICAgZW5kVGVzdCgp
OworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICB7CisgICAgICAgIGZp
bmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCdlcnJvcicp
OworCisgICAgICAgIG1lZGlhU291cmNlLmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHNvdXJjZW9w
ZW4nLCBvblNvdXJjZU9wZW4pOworCisgICAgICAgIHNlZ21lbnRIZWxwZXIuaW5pdCh2aWRlbywg
ZnVuY3Rpb24gKHN1Y2Nlc3MpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsK
KyAgICAgICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8gbG9hZCBzZWdtZW50IGRhdGEiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBNZWRpYVNvdXJjZVRl
c3Quc2V0U3JjVG9NZWRpYVNvdXJjZVRlc3RVUkwodmlkZW8pOworICAgICAgICB9KTsKKyAgICAg
IH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgor
ICAgIDx2aWRlbyBhdXRvcGxheSBjb250cm9scz48L3ZpZGVvPgorICAgIDxwPlRlc3RzIHNpbXBs
ZSBvcGVyYXRpb25zIHdpdGggZHVyYXRpb24gYXR0cmlidXRlIG9mIE1lZGlhU291cmNlIG9iamVj
dC48L3A+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>