<?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>42001</bug_id>
          
          <creation_ts>2010-07-09 16:24:39 -0700</creation_ts>
          <short_desc>Update media element&apos;s handling of empty &apos;src&apos; attribute</short_desc>
          <delta_ts>2010-07-12 14:28:45 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>42040</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249343</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-09 16:24:39 -0700</bug_when>
    <thetext>The HTML5 spec previously said the resolve all non-null media urls, now empty urls are not resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249387</commentid>
    <comment_count>1</comment_count>
      <attachid>61122</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-09 17:42:15 -0700</bug_when>
    <thetext>Created attachment 61122
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249391</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 17:44:59 -0700</bug_when>
    <thetext>Attachment 61122 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLMediaElement.cpp:1488:  check_again is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249400</commentid>
    <comment_count>3</comment_count>
      <attachid>61122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-09 17:51:02 -0700</bug_when>
    <thetext>Comment on attachment 61122
proposed patch

Don’t we want this for all sorts of URL attributes? I seem to recall discussion of that on one of the HTML5 mailing lists. I don’t want to go through all the classes removing the ReflectURL calls one by one if we can just change the rules about reflected URLs. It&apos;s not even out of the question to have more than one flavor of ReflectURL. I hate to hand-write the code just because of this issue. I can help you make a version of ReflectURL that treats an empty attribute the same way it treats a missing one.

Long term we might even want to change the behavior of completeURL itself. I don’t think there are very may contexts where we want to treat the empty string as meaning &quot;expand this to be the base URL&quot;.

I also noticed that HTMLMediaElement::src and HTMLSourceElement::src don&apos;t strip whitespace before completing the URL the way other similar attribute getters do. That may be a bug.

Functions like HTMLVideoElement::setPoster should take const AtomicString&amp; not const String&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249522</commentid>
    <comment_count>4</comment_count>
      <attachid>61122</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-10 09:28:41 -0700</bug_when>
    <thetext>Comment on attachment 61122
proposed patch

Clearing the review flag for now. I will resubmit an updated patch after take Darin&apos;s suggestion and make some changes to ReflectURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249595</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-10 22:58:50 -0700</bug_when>
    <thetext>I’m going to improve the URL attribute reflection in a patch I’ll attach to another bug, and then you can adopt the improvements in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249596</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-10 23:00:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 61122 [details])
&gt; I also noticed that HTMLMediaElement::src and HTMLSourceElement::src don&apos;t strip whitespace before completing the URL the way other similar attribute getters do. That may be a bug.

The specification definitely calls for this stripping. Sadly, our code uses deprecatedParseURL which does unwanted additional processing, not just stripping. I think we should make our code use the getURLAttribute functions and then we can fix the deprecatedParseURL thing in one place. It’s not good to have code doing the completeURL without the stripping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249915</commentid>
    <comment_count>7</comment_count>
      <attachid>61247</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-12 11:05:55 -0700</bug_when>
    <thetext>Created attachment 61247
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249976</commentid>
    <comment_count>8</comment_count>
      <attachid>61247</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 12:47:56 -0700</bug_when>
    <thetext>Comment on attachment 61247
proposed patch

&gt; +    if (!hasAttribute(srcAttr)) {

I&apos;m surprised the above logic is right. Why should a missing src attribute be treated differently from one that is empty or contains only spaces?

&gt; +        // If candidate does not have a src attribute, or if its src attribute&apos;s value is the empty string ... jump down to the failed step below
&gt; +        if (!source-&gt;hasAttribute(srcAttr))
&gt; +            goto check_again;
&gt; +        
&gt; +        mediaURL = source-&gt;getNonEmptyURLAttribute(srcAttr);
&gt; +        if (mediaURL.isEmpty())
&gt; +            goto check_again;

I think you could just leave out the hasAttribute check here. It&apos;s just an optimization for the case where there&apos;s no src attribute at all. And I don&apos;t think that case needs to be optimized.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250057</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-12 14:28:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 61247 [details])
&gt; &gt; +    if (!hasAttribute(srcAttr)) {
&gt; 
&gt; I&apos;m surprised the above logic is right. Why should a missing src attribute be treated differently from one that is empty or contains only spaces?
&gt; 
The difference is that an empty (or bogus) src attribute generates an &apos;error&apos; event, but an element with no src attribute and no source element children does not.


&gt; &gt; +        // If candidate does not have a src attribute, or if its src attribute&apos;s value is the empty string ... jump down to the failed step below
&gt; &gt; +        if (!source-&gt;hasAttribute(srcAttr))
&gt; &gt; +            goto check_again;
&gt; &gt; +        
&gt; &gt; +        mediaURL = source-&gt;getNonEmptyURLAttribute(srcAttr);
&gt; &gt; +        if (mediaURL.isEmpty())
&gt; &gt; +            goto check_again;
&gt; 
&gt; I think you could just leave out the hasAttribute check here. It&apos;s just an optimization for the case where there&apos;s no src attribute at all. And I don&apos;t think that case needs to be optimized.
&gt; 
Good point, done.

&gt; r=me
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250059</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-12 14:28:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63119</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61122</attachid>
            <date>2010-07-09 17:42:15 -0700</date>
            <delta_ts>2010-07-12 11:05:55 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>19864</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzAxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQncyBoYW5kbGluZyBvZiBlbXB0eSAnc3JjJyBhdHRyaWJ1
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDAx
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3JjKTogT25seSByZXNvbHZlIG5vbi1lbXB0eSAnc3JjJy4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2Up
OiBDYWxsIG5vbmVTdXBwb3J0ZWQoKSBmb3IgZW1wdHkgJ3NyYycuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBEb24ndCBjb25zaWRl
ciBhIDxzb3VyY2U+IHdpdGggYW4gZW1wdHkgJ3NyYycgLgorCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbDogUmVtb3ZlIFtSZWZsZWN0VVJMXSBhcyB3ZSBkb24ndCB3YW50ICdz
cmMnIHRvIGJlIHJlc29sdmVkIGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAgKiBodG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50Ojpz
cmMpOiBPbmx5IHJlc29sdmUgbm9uLWVtcHR5ICdzcmMnLgorCisgICAgICAgICogaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNl
dFBvc3Rlcik6IE5ldywgb25seSByZXNvbHZlIG5vbi1lbXB0eSAncG9zdGVyJy4KKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1l
bnQuaWRsOiBSZW1vdmUgW1JlZmxlY3RVUkxdIGFzIHdlIGRvbid0IHdhbnQgJ3Bvc3RlcicgdG8g
YmUgcmVzb2x2ZWQgYXV0b21hdGljYWxseS4KKwogMjAxMC0wNy0wOSAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDEw
IEBAIFBhc3NSZWZQdHI8TWVkaWFFcnJvcj4gSFRNTE1lZGlhRWxlbWVudDoKIAogS1VSTCBIVE1M
TWVkaWFFbGVtZW50OjpzcmMoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOworICAgIFN0cmluZyBzcmMgPSBnZXRBdHRy
aWJ1dGUoc3JjQXR0cik7CisgICAgaWYgKCFzcmMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3JjKTsKKyAgICByZXR1cm4gS1VSTCgpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHVybCkKQEAgLTU0NSw2
ICs1NDgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCiB7CisgICAgZW51bSBNb2Rl
IHsgYXR0cmlidXRlLCBjaGlsZHJlbiB9OworICAgIE1vZGUgbW9kZSA9IGF0dHJpYnV0ZTsKKwog
ICAgIC8vIDEgLSBTZXQgdGhlIG5ldHdvcmtTdGF0ZSB0byBORVRXT1JLX05PX1NPVVJDRQogICAg
IG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19OT19TT1VSQ0U7CiAKQEAgLTU2OCw2ICs1NzQsOCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyCiAgICAgICAgICAgICBB
U1NFUlQoIW1fZGVsYXlpbmdUaGVMb2FkRXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisKKyAgICAgICAgbW9kZSA9IGNoaWxkcmVuOwogICAgIH0KIAogICAgIC8vIDQKQEAg
LTU3NiwxMiArNTg0LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNv
dXIKIAogICAgIC8vIDUKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5sb2Fkc3RhcnRF
dmVudCk7CisgICAgCisgICAgLy8gNiAtIElmIG1vZGUgaXMgYXR0cmlidXRlLCB0aGVuIHJ1biB0
aGVzZSBzdWJzdGVwcworICAgIGlmIChtb2RlID09IGF0dHJpYnV0ZSkgeworICAgICAgICAvLyBJ
ZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAg
ZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cKKyAgICAgICAgaWYgKG1lZGlhU3JjLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKLSAgICAvLyA2IC0gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgc3Jj
IGF0dHJpYnV0ZSwgdGhlbiBydW4gdGhlc2Ugc3Vic3RlcHMKLSAgICBDb250ZW50VHlwZSBjb250
ZW50VHlwZSgiIik7Ci0gICAgaWYgKCFtZWRpYVNyYy5pc051bGwoKSkgewogICAgICAgICBLVVJM
IG1lZGlhVVJMID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobWVkaWFTcmMpOwogICAgICAgICBp
ZiAoaXNTYWZlVG9Mb2FkVVJMKG1lZGlhVVJMLCBDb21wbGFpbikgJiYgZGlzcGF0Y2hCZWZvcmVM
b2FkRXZlbnQobWVkaWFVUkwuc3RyaW5nKCkpKSB7CisgICAgICAgICAgICBDb250ZW50VHlwZSBj
b250ZW50VHlwZSgiIik7CiAgICAgICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3Jj
QXR0cjsKICAgICAgICAgICAgIGxvYWRSZXNvdXJjZShtZWRpYVVSTCwgY29udGVudFR5cGUpOwog
ICAgICAgICB9IGVsc2UgCkBAIC0xNDY4LDggKzE0ODIsMTAgQEAgS1VSTCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWxlY3ROZXh0U291cmNlQwogICAgICAgICB9CiAKICAgICAgICAgSFRNTFNvdXJjZUVs
ZW1lbnQqIHNvdXJjZSA9IHN0YXRpY19jYXN0PEhUTUxTb3VyY2VFbGVtZW50Kj4obm9kZSk7Ci0g
ICAgICAgIGlmICghc291cmNlLT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikpCi0gICAgICAgICAgICBn
b3RvIGNoZWNrX2FnYWluOyAKKyAgICAgICAgCisgICAgICAgIC8vIElmIGNhbmRpZGF0ZSBkb2Vz
IG5vdCBoYXZlIGEgc3JjIGF0dHJpYnV0ZSwgb3IgaWYgaXRzIHNyYyBhdHRyaWJ1dGUncyB2YWx1
ZSBpcyB0aGUgZW1wdHkgc3RyaW5nIC4uLiBqdW1wIGRvd24gdG8gdGhlIGZhaWxlZCBzdGVwIGJl
bG93CisgICAgICAgIGlmICghc291cmNlLT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikgfHwgc291cmNl
LT5zcmMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBnb3RvIGNoZWNrX2FnYWluOwogCiAgICAg
ICAgIGlmIChzb3VyY2UtPmhhc0F0dHJpYnV0ZShtZWRpYUF0dHIpKSB7CiAgICAgICAgICAgICBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIGRvY3VtZW50KCktPmZyYW1l
KCksIHJlbmRlcmVyKCkgPyByZW5kZXJlcigpLT5zdHlsZSgpIDogMCk7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2Mjk1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MTWVkaWFFCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE1lZGlhRXJyb3IgZXJyb3I7CiAKICAgICAvLyBuZXR3b3JrIHN0YXRlCi0gICAgYXR0cmlidXRl
IFtSZWZsZWN0VVJMXSBET01TdHJpbmcgc3JjOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3Jj
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY3VycmVudFNyYzsKICAgICAKICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0VNUFRZID0gMDsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gNjI5NTYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCwxMCBAQCB2b2lk
IEhUTUxTb3VyY2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1CiAKIEtVUkwgSFRNTFNvdXJjZUVs
ZW1lbnQ6OnNyYygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGdldEF0dHJpYnV0ZShzcmNBdHRyKSk7CisgICAgU3RyaW5nIHNyYyA9IGdldEF0dHJpYnV0ZShz
cmNBdHRyKTsKKyAgICBpZiAoIXNyYy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChzcmMpOworICAgIHJldHVybiBLVVJMKCk7CiB9CiAKIHZvaWQgSFRN
TFNvdXJjZUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHVybCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEwIEBAIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBwb3N0
ZXJBdHRyKSB7Ci0gICAgICAgIG1fcG9zdGVyVVJMID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBtX3Bvc3RlclVSTCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGF0dHItPnZh
bHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Bvc3RlclVSTCA9IEtVUkwoKTsK
ICAgICAgICAgdXBkYXRlUG9zdGVySW1hZ2UoKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzcGxh
eVBvc3RlckltYWdlKSB7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAt
MTg3LDYgKzE5MCwxMSBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdl
CiAjZW5kaWYKIH0KIAordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRQb3N0ZXIoY29uc3QgU3Ry
aW5nJiB1cmwpCit7CisgICAgc2V0QXR0cmlidXRlKHBvc3RlckF0dHIsIHVybCk7Cit9CisKIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBNZWRpYVBs
YXllciogcGxheWVyID0gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyKCk7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgdmlkZW9IZWlnaHQoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGNvbnN0IEtV
UkwgcG9zdGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb3N0ZXJVUkw7IH0KKyAgICB2b2lkIHNldFBv
c3Rlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEZ1bGxzY3JlZW4KICAgICB2b2lkIHdlYmtp
dEVudGVyRnVsbHNjcmVlbihib29sIGlzVXNlckdlc3R1cmUsIEV4Y2VwdGlvbkNvZGUmKTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDYyOTU2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSB1bnNpZ25lZCBs
b25nIGhlaWdodDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdmlk
ZW9XaWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdmlkZW9I
ZWlnaHQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdFVSTF0gRE9NU3RyaW5nIHBvc3RlcjsK
KyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwb3N0ZXI7CiAKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gd2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuOwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbjsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDYzMDEzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQncyBoYW5kbGluZyBvZiBlbXB0eSAnc3JjJyBh
dHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMDAxCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtZXJyb3Itbm8tY2Fu
ZGlkYXRlLmh0bWw6IEVtcHR5ICdzcmMnIHNob3VsZCBmaXJlcyBhbiBlcnJvciBldmVudC4KKwor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVk
aWEvdmlkZW8tcG9zdGVyLmh0bWw6IFRlc3QgInBvc3Rlcj0nJyIKKworICAgICAgICAqIG1lZGlh
L3ZpZGVvLXNyYy1lbXB0eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWEv
dmlkZW8tc3JjLWVtcHR5Lmh0bWw6IFJlbW92ZWQgYmVjYXVzZSB0aGUgdGVzdCB3YXMgbm8gbG9u
Z2VyIHZhbGlkLgorCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLW5vbmUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1ub25lLmh0bWw6IFVwZGF0ZWQgdG8gdGVzdCBl
bXB0eSAnc3JjJy4gQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGFuIGVycm9yIAorICAgICAgICBp
cyBmaXJlZCB3aGVuIGxvYWQoKSBpcyBjYWxsZWQgYW5kIHRoZSAnc3JjJyBpcyBlbXB0eSwgYnV0
IG5vdCB3aGVuICdzcmMnIGlzIG1pc3NpbmcuCisKIDIwMTAtMDctMDkgIFRvbnkgR2VudGlsY29y
ZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDYyOTU2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDE1IEBACisKK1NldCAncG9zdGVy
JyB0byAnY29udGVudC9ncmVlbmJveC5wbmcnLgogRVhQRUNURUQgKHZpZGVvLmdldEF0dHJpYnV0
ZSgncG9zdGVyJykgPT0gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJykgT0sKIEVYUEVDVEVEIChyZWxh
dGl2ZVVSTCh2aWRlby5wb3N0ZXIpID09ICdjb250ZW50L2dyZWVuYm94LnBuZycpIE9LCisKK1Nl
dCAncG9zdGVyJyB0byAnJy4KK0VYUEVDVEVEICh2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bvc3Rlcicp
ID09ICcnKSBPSworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0gJycpIE9L
CisKK1NldCAncG9zdGVyJyB0byAnY29udGVudC9hYmUucG5nJy4KIEVYUEVDVEVEICh2aWRlby5n
ZXRBdHRyaWJ1dGUoJ3Bvc3RlcicpID09ICdjb250ZW50L2FiZS5wbmcnKSBPSwogRVhQRUNURUQg
KHJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0gJ2NvbnRlbnQvYWJlLnBuZycpIE9LCisKIEVO
RCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci5odG1sCShyZXZpc2lv
biA2Mjk1NikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEwICsxLDM4IEBACi08dmlkZW8gcG9zdGVyPSJjb250ZW50L2dyZWVuYm94
LnBuZyIgY29udHJvbHM+PC92aWRlbz4KLTxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRlKCdwb3N0
ZXInKSIsICJjb250ZW50L2dyZWVuYm94LnBuZyIpOwotICAgIHRlc3RFeHBlY3RlZCgicmVsYXRp
dmVVUkwodmlkZW8ucG9zdGVyKSIsICJjb250ZW50L2dyZWVuYm94LnBuZyIpOwotICAgIHZpZGVv
LnNldEF0dHJpYnV0ZSgncG9zdGVyJywgJ2NvbnRlbnQvYWJlLnBuZycpOwotICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uZ2V0QXR0cmlidXRlKCdwb3N0ZXInKSIsICJjb250ZW50L2FiZS5wbmciKTsK
LSAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikiLCAiY29udGVudC9h
YmUucG5nIik7Ci0gICAgZW5kVGVzdCgpOwotPC9zY3JpcHQ+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFBvc3Rlcih1cmwpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bv
c3RlcicpIiwgdXJsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJM
KHZpZGVvLnBvc3RlcikiLCB1cmwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBm
aW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48
aT5TZXQgJ3Bvc3RlcicgdG8gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJy48IiArICIvaT4iKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UG9zdGVyKCdjb250ZW50L2dyZWVuYm94LnBuZycpOworCisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+U2V0ICdwb3N0ZXInIHRvICcnLjwiICsg
Ii9pPiIpOworICAgICAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncG9zdGVyJywgJycp
OworICAgICAgICAgICAgICAgIHRlc3RQb3N0ZXIoJycpOworCisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+PGk+U2V0ICdwb3N0ZXInIHRvICdjb250ZW50L2FiZS5wbmcnLjwiICsg
Ii9pPiIpOworICAgICAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncG9zdGVyJywgJ2Nv
bnRlbnQvYWJlLnBuZycpOworICAgICAgICAgICAgICAgIHRlc3RQb3N0ZXIoJ2NvbnRlbnQvYWJl
LnBuZycpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic2V0VGltZW91dCh0ZXN0LCAxMDApIj4KKworICAg
ICAgICA8dmlkZW8gcG9zdGVyPSJjb250ZW50L2dyZWVuYm94LnBuZyIgY29udHJvbHM+PC92aWRl
bz4KKworICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNvdXJjZS1lcnJvci1uby1jYW5kaWRhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1lcnJvci1uby1jYW5kaWRhdGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA2Mjk1NikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1l
cnJvci1uby1jYW5kaWRhdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAotVGVzdCB0aGF0ICdlcnJvcicgZXZlbnRzIGFyZSBmaXJlZCB3aGVuIG5vIHVybHMgYXJl
IHBhc3NlZCB0byB0aGUgbWVkaWEgZW5naW5lLgorVGVzdCB0aGF0ICdlcnJvcicgZXZlbnRzIGFy
ZSBmaXJlZCBmcm9tIDxzb3VyY2U+IGVsZW1lbnQgd2hlbiBpdCBjYW4gbm90IGJlIHVzZWQuCiAK
IAotRVZFTlQoZXJyb3IpIGZyb20gPHNvdXJjZSBpZD0nbWlzc2luZy1zcmMnIHNyYz0nJz4gT0sK
K0VWRU5UKGVycm9yKSBmcm9tIDxzb3VyY2UgaWQ9J21pc3Npbmctc3JjJyBzcmM9bnVsbD4gT0sK
IEVYUEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiAKIEVWRU5UKGVycm9yKSBmcm9t
IDxzb3VyY2UgaWQ9J2JvZ3VzLXR5cGUnIHNyYz0nY29udGVudC90ZXN0Lm1wNCc+IE9LCkBAIC0x
MCw1ICsxMCw4IEBAIEVYUEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiBFVkVOVChl
cnJvcikgZnJvbSA8c291cmNlIGlkPSd1bnN1cHBvcnRlZC1tZWRpYS1xdWVyeScgc3JjPSdjb250
ZW50L3Rlc3QubXA0Jz4gT0sKIEVYUEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiAK
K0VWRU5UKGVycm9yKSBmcm9tIDxzb3VyY2UgaWQ9J2VtcHR5LXNyYycgc3JjPScnPiBPSworRVhQ
RUNURUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKKwogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWVycm9yLW5vLWNhbmRpZGF0ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1lcnJvci1uby1jYW5k
aWRhdGUuaHRtbAkocmV2aXNpb24gNjI5NTYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
b3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3
IEBACiAKICAgICAgICAgICAgIHZhciBzb3VyY2VzID0gW107CiAgICAgICAgICAgICB2YXIgZXJy
b3JDb3VudCA9IDA7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRFcnJvckNvdW50ID0gNDsKIAog
ICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3JFdmVudChldnQpCiAgICAgICAgICAgICB7CkBAIC0x
OSwxNiArMjAsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgICAgIHZhciBzcmMgPSBzb3VyY2VzW25keF0uZ2V0QXR0
cmlidXRlKCdzcmMnKSA9PSBudWxsID8gIm51bGwiIDogIiciICsgcmVsYXRpdmVVUkwoZXZ0LnRh
cmdldC5zcmMpICsgIiciOwogICAgICAgICAgICAgICAgIGlmIChzb3VyY2VzW25keF0gPT0gZXZ0
LnRhcmdldCkKLSAgICAgICAgICAgICAgICAgICAgbG9nUmVzdWx0KHRydWUsICJFVkVOVChlcnJv
cikgZnJvbSAmbHQ7c291cmNlIGlkPSc8ZW0+IiArIGV2dC50YXJnZXQuaWQgKyAiPC9lbT4nIHNy
Yz0nPGVtPiIgKyByZWxhdGl2ZVVSTChldnQudGFyZ2V0LnNyYykgKyAiPC9lbT4nJmd0OyIpOwor
ICAgICAgICAgICAgICAgICAgICBsb2dSZXN1bHQodHJ1ZSwgIkVWRU5UKGVycm9yKSBmcm9tICZs
dDtzb3VyY2UgaWQ9JzxlbT4iICsgZXZ0LnRhcmdldC5pZCArICI8L2VtPicgc3JjPTxlbT4iICsg
c3JjICsgIjwvZW0+Jmd0OyIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgbG9nUmVzdWx0KGZhbHNlLCAiRVZFTlQoZXJyb3IpIGZyb20gIiArIGV2dC50YXJnZXQp
OwogCiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPT0gMykg
eworICAgICAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPT0gZXhwZWN0ZWRFcnJvckNvdW50
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMTAwMCk7CisgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZW5kVGVzdCwgMjAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKQEAgLTM5LDcgKzQxLDYgQEAKICAgICAgICAgICAgICAgICBzb3VyY2VzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NvdXJjZScpOwogCiAgICAgICAgICAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KQEAgLTUwLDkg
KzUxLDEwIEBACiAgICAgICAgICAgICA8c291cmNlIGlkPW1pc3Npbmctc3JjIHR5cGU9InZpZGVv
L2JsYWhibGFoIj4KICAgICAgICAgICAgIDxzb3VyY2UgaWQ9Ym9ndXMtdHlwZSBzcmM9Y29udGVu
dC90ZXN0Lm1wNCB0eXBlPSJ2aWRlby9ibGFoYmxhaCI+CiAgICAgICAgICAgICA8c291cmNlIGlk
PXVuc3VwcG9ydGVkLW1lZGlhLXF1ZXJ5IHNyYz1jb250ZW50L3Rlc3QubXA0IG1lZGlhPXByaW50
PgorICAgICAgICAgICAgPHNvdXJjZSBpZD1lbXB0eS1zcmMgc3JjPSIiIHR5cGU9InZpZGVvL21w
NCI+CiAgICAgICAgIDwvdmlkZW8+CiAgICAgICAgIAotICAgICAgICA8cD5UZXN0IHRoYXQgJ2Vy
cm9yJyBldmVudHMgYXJlIGZpcmVkIHdoZW4gbm8gdXJscyBhcmUgcGFzc2VkIHRvIHRoZSBtZWRp
YSBlbmdpbmUuPC9wPgorICAgICAgICA8cD5UZXN0IHRoYXQgJ2Vycm9yJyBldmVudHMgYXJlIGZp
cmVkIGZyb20gJmx0O3NvdXJjZSZndDsgZWxlbWVudCB3aGVuIGl0IGNhbiBub3QgYmUgdXNlZC48
L3A+CiAKICAgICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1zcmMtZW1wdHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNyYy1lbXB0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyOTU2KQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWVtcHR5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICswLDAgQEAKLUVtcHR5IHNyYyBhdHRyaWJ1dGUgZGVmaW5lZC4gSW52YWxpZCBVUkwg
YW5kIHZpZGVvIHNob3VsZCBlcnJvci4KLQotRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0g
JzQnKSBPSwotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCi1FTkQgT0Yg
VEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtZW1wdHkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtZW1wdHkuaHRtbAkocmV2aXNp
b24gNjI5NTYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtZW1wdHkuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi08aHRtbD4KLSAgICA8Ym9keT4KLSAgICAgICAg
PHA+RW1wdHkgc3JjIGF0dHJpYnV0ZSBkZWZpbmVkLiAgSW52YWxpZCBVUkwgYW5kIHZpZGVvIHNo
b3VsZCBlcnJvci48L3A+Ci0gICAgICAgIDx2aWRlbyBzcmM9IiIgb25lcnJvcj0iZXJyb3JFdmVu
dCgpIiBjb250cm9scz48L3ZpZGVvPgotCi0gICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBmdW5jdGlvbiBlcnJv
ckV2ZW50KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCk7
Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1M
TWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFKTsKLSAgICAgICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1ub25lLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtbm9uZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDYyOTU2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLW5vbmUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsMjUgQEAKLU5vIHNyYyBhdHRy
aWJ1dGUgZGVmaW5lZC4gVmlkZW8gc2hvdWxkIHJlbWFpbiBpbiBORVRXT1JLX0VNUFRZLgorIAog
Ci1FWFBFQ1RFRCAodmlkZW8uZXJyb3IgPT0gJ251bGwnKSBPSwotRVhQRUNURUQgKHZpZGVvLm5l
dHdvcmtTdGF0ZSA9PSAnMCcpIE9LCitOZXR3b3JrIHN0YXRlIHNob3VsZCByZW1haW4gaW4gTkVU
V09SS19FTVBUWSB3aXRoIGVtcHR5IG9yIG1pc3NpbmcgJ3NyYycgYXR0cmlidXRlLgorKiogPHZp
ZGVvPiB3aXRoIG5vIHNyYyBhdHRyaWJ1dGUqKgorRVhQRUNURUQgKHZpZGVvc1swXS5lcnJvciA9
PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAodmlkZW9zWzBdLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9L
CitFWFBFQ1RFRCAodmlkZW9zWzBdLnNyYyA9PSAnJykgT0sKKyoqIDx2aWRlbz4gd2l0aCBlbXB0
eSBzcmMgYXR0cmlidXRlICoqCitFWFBFQ1RFRCAodmlkZW9zWzFdLmVycm9yID09ICdudWxsJykg
T0sKK0VYUEVDVEVEICh2aWRlb3NbMV0ubmV0d29ya1N0YXRlID09ICcwJykgT0sKK0VYUEVDVEVE
ICh2aWRlb3NbMV0uc3JjID09ICcnKSBPSworCitDYWxsaW5nIGxvYWQoKSB3aXRoIGVtcHR5ICdz
cmMnIHNob3VsZCBmaXJlICdlcnJvcicgZXZlbnQsIHNldCBuZXR3b3JrIHN0YXRlIHRvIE5FVFdP
UktfTk9fU09VUkNFLCBhbmQgc2V0IGVycm9yIHRvIE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRF
RC4KKydlcnJvcicgZXZlbnQ6CitFWFBFQ1RFRCAoc3RhdGUgPT0gJ2xvYWQoKSB3aXRoIGVtcHR5
ICdzcmMnJykgT0sKK0VYUEVDVEVEIChbb2JqZWN0IEhUTUxWaWRlb0VsZW1lbnRdID09ICdbb2Jq
ZWN0IEhUTUxWaWRlb0VsZW1lbnRdJykgT0sKK0VYUEVDVEVEICh2aWRlb3NbMV0uZXJyb3IuY29k
ZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlkZW9zWzFdLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9L
CitDYWxsaW5nIGxvYWQoKSB3aXRoIG5vICdzcmMnIHNob3VsZCBOT1QgZmlyZSAnZXJyb3InIGV2
ZW50LCBzZXQgbmV0d29yayBzdGF0ZSB0byBORVRXT1JLX0VNUFRZLgorRVhQRUNURUQgKHN0YXRl
ID09ICdsb2FkKCkgd2l0aCBubyAnc3JjJycpLCBPQlNFUlZFRCAnbG9hZCgpIHdpdGggbWlzc2lu
ZyAnc3JjJycgRkFJTAorRVhQRUNURUQgKHZpZGVvc1swXS5lcnJvciA9PSAnbnVsbCcpIE9LCitF
WFBFQ1RFRCAodmlkZW9zWzBdLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCitFWFBFQ1RFRCAodmlk
ZW9zWzBdLnNyYyA9PSAnJykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXNyYy1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tc3JjLW5vbmUuaHRtbAkocmV2aXNpb24gNjI5NTYpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zcmMtbm9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDYwIEBACiA8
aHRtbD4KLSAgICA8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQodGVzdCwgMjUwKSI+Ci0gICAgICAg
IDxwPk5vIHNyYyBhdHRyaWJ1dGUgZGVmaW5lZC4gIFZpZGVvIHNob3VsZCByZW1haW4gaW4gTkVU
V09SS19FTVBUWS48L3A+Ci0gICAgICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgotCisgICAg
PGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiAgICAg
ICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgICAgICAgIHZh
ciBzdGF0ZTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwp
OwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRN
TE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInN0YXRlIiwgImxvYWQoKSB3aXRoIG5vICdzcmMnIik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlb3NbMF0uZXJyb3IiLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvc1swXS5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdP
UktfRU1QVFkpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9zWzBdLnNyYyIs
ICIiKTsKICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGVycm9yRXZlbnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiJ2Vycm9yJyBldmVudDoiKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInN0YXRlIiwgImxvYWQoKSB3aXRoIGVtcHR5ICdzcmMnIik7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKGV2ZW50LnRhcmdldCwgdmlkZW9zWzFdKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvc1sxXS5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJ
QV9FUlJfU1JDX05PVF9TVVBQT1JURUQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW9zWzFdLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VS
Q0UpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT5DYWxsaW5nIGxvYWQoKSB3
aXRoIG5vICdzcmMnIHNob3VsZCBOT1QgZmlyZSAnZXJyb3InIGV2ZW50LCBzZXQgbmV0d29yayBz
dGF0ZSB0byBORVRXT1JLX0VNUFRZLjwiICsgIi9pPiIpOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gImxvYWQoKSB3aXRoIG1pc3NpbmcgJ3NyYyciOworICAgICAgICAgICAgICAgIHZpZGVvc1sw
XS5sb2FkKCk7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDEw
MCkgOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2aWRlb3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCd2aWRlbycpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+TmV0
d29yayBzdGF0ZSBzaG91bGQgcmVtYWluIGluIE5FVFdPUktfRU1QVFkgd2l0aCBlbXB0eSBvciBt
aXNzaW5nICdzcmMnIGF0dHJpYnV0ZS48IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIioqICZsdDt2aWRlbyZndDsgd2l0aCBubyBzcmMgYXR0cmlidXRlKioiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvc1swXS5lcnJvciIsIG51bGwpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9zWzBdLm5ldHdvcmtTdGF0ZSIsIEhUTUxN
ZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlb3NbMF0uc3JjIiwgIiIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIq
KiAmbHQ7dmlkZW8mZ3Q7IHdpdGggZW1wdHkgc3JjIGF0dHJpYnV0ZSAqKiIpOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9zWzFdLmVycm9yIiwgbnVsbCk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlb3NbMV0ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxl
bWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
c1sxXS5zcmMiLCAiIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48IiAr
ICJpPkNhbGxpbmcgbG9hZCgpIHdpdGggZW1wdHkgJ3NyYycgc2hvdWxkIGZpcmUgJ2Vycm9yJyBl
dmVudCwgc2V0IG5ldHdvcmsgc3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UsIGFuZCBzZXQgZXJy
b3IgdG8gTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVELjwiICsgIi9pPiIpOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gImxvYWQoKSB3aXRoIGVtcHR5ICdzcmMnIjsKKyAgICAgICAgICAgICAg
ICB2aWRlb3NbMV0ubG9hZCgpOworICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQodGVzdCwgMTAwKSI+Cisg
ICAgICAgIDx2aWRlbyB3aWR0aD0zMjAgaGVpZ2h0PTYwIGNvbnRyb2xzIG9uZXJyb3I9ImVycm9y
RXZlbnQoKSI+PC92aWRlbz4KKyAgICAgICAgPGJyPgorICAgICAgICA8dmlkZW8gd2lkdGg9MzIw
IGhlaWdodD02MCBjb250cm9scyBzcmM9IiIgb25lcnJvcj0iZXJyb3JFdmVudCgpIj48L3ZpZGVv
PgorCisKICAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61247</attachid>
            <date>2010-07-12 11:05:55 -0700</date>
            <delta_ts>2010-07-12 12:47:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>27781</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDctMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQncyBoYW5kbGluZyBvZiBlbXB0eSAnc3JjJyBhdHRyaWJ1
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDAx
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3JjKTogUmV0dXJuIGdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291
cmNlKTogQ2FsbCBub25lU3VwcG9ydGVkKCkgZm9yIGVtcHR5ICdzcmMnLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKTogVXNlIGdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKCkgdG8gY29udmVydCAKKyAgICAgICAgJ3NyYycgdG8gVVJMIGlu
c3RlYWQgb2YgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoKS4gRG9uJ3QgY29uc2lkZXIgYSA8c291
cmNlPiB3aXRoIGFuIGVtcHR5ICdzcmMnLiAKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGw6IEFkZCAnTm9uRW1wdHknIG9wdGlvbiB0byAnc3JjJyBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTb3VyY2VFbGVtZW50OjpzcmMpOiBSZXR1cm4gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoKS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZSk6IE5l
dywgJ3NyYycgaXMgYSBVUkwgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsOiBBZGQgJ05v
bkVtcHR5JyBvcHRpb24gdG8gJ3NyYycgYXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKTogVXNlIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKCkgdG8gY29u
dmVydCAKKyAgICAgICAgJ3Bvc3RlcicgdG8gVVJMIGluc3RlYWQgb2YgZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoKS4KKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6ICBBZGQg
J05vbkVtcHR5JyBvcHRpb24gdG8gJ3Bvc3RlcicgYXR0cmlidXRlLgorCiAyMDEwLTA3LTA5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24g
NjMwOTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNCw3ICs0MjQsNyBAQCBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IEhUTUxNZWRpYUVs
ZW1lbnQ6CiAKIEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c3JjKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKKyAgICBy
ZXR1cm4gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNTQ1LDE0ICs1NDUsMTYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogeworICAgIGVudW0gTW9kZSB7IGF0dHJp
YnV0ZSwgY2hpbGRyZW4gfTsKKyAgICBNb2RlIG1vZGUgPSBhdHRyaWJ1dGU7CisKICAgICAvLyAx
IC0gU2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UKICAgICBtX25ldHdv
cmtTdGF0ZSA9IE5FVFdPUktfTk9fU09VUkNFOwogCiAgICAgLy8gMiAtIEFzeW5jaHJvbm91c2x5
IGF3YWl0IGEgc3RhYmxlIHN0YXRlLgogCiAgICAgLy8gMyAtIC4uLiB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgLi4uCi0gICAgU3RyaW5nIG1lZGlhU3JjID0g
Z2V0QXR0cmlidXRlKHNyY0F0dHIpOwotICAgIGlmICghbWVkaWFTcmMpIHsKKyAgICBpZiAoIWhh
c0F0dHJpYnV0ZShzcmNBdHRyKSkgewogICAgICAgICAvLyAuLi4gbm9yIGEgc291cmNlIGVsZW1l
bnQgY2hpbGQ6IC4uLgogICAgICAgICBOb2RlKiBub2RlOwogICAgICAgICBmb3IgKG5vZGUgPSBm
aXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkBAIC01Njgs
NiArNTcwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cgogICAg
ICAgICAgICAgQVNTRVJUKCFtX2RlbGF5aW5nVGhlTG9hZEV2ZW50KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQorCisgICAgICAgIG1vZGUgPSBjaGlsZHJlbjsKICAgICB9CiAKICAg
ICAvLyA0CkBAIC01NzcsMTEgKzU4MSwxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyCiAgICAgLy8gNQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmxv
YWRzdGFydEV2ZW50KTsKIAotICAgIC8vIDYgLSBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBz
cmMgYXR0cmlidXRlLCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwcwotICAgIENvbnRlbnRUeXBlIGNv
bnRlbnRUeXBlKCIiKTsKLSAgICBpZiAoIW1lZGlhU3JjLmlzTnVsbCgpKSB7Ci0gICAgICAgIEtV
UkwgbWVkaWFVUkwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtZWRpYVNyYyk7CisgICAgLy8g
NiAtIElmIG1vZGUgaXMgYXR0cmlidXRlLCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwcworICAgIGlm
IChtb2RlID09IGF0dHJpYnV0ZSkgeworICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdz
IHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0
ZXAgYmVsb3cKKyAgICAgICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KHNyY0F0dHIpOworICAgICAgICBpZiAobWVkaWFVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBub25lU3VwcG9ydGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAoaXNTYWZlVG9Mb2FkVVJMKG1lZGlhVVJMLCBDb21wbGFpbikgJiYgZGlzcGF0Y2hC
ZWZvcmVMb2FkRXZlbnQobWVkaWFVUkwuc3RyaW5nKCkpKSB7CisgICAgICAgICAgICBDb250ZW50
VHlwZSBjb250ZW50VHlwZSgiIik7CiAgICAgICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdG
cm9tU3JjQXR0cjsKICAgICAgICAgICAgIGxvYWRSZXNvdXJjZShtZWRpYVVSTCwgY29udGVudFR5
cGUpOwogICAgICAgICB9IGVsc2UgCkBAIC0xNDY4LDkgKzE0NzgsMTUgQEAgS1VSTCBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQwogICAgICAgICB9CiAKICAgICAgICAgSFRNTFNv
dXJjZUVsZW1lbnQqIHNvdXJjZSA9IHN0YXRpY19jYXN0PEhUTUxTb3VyY2VFbGVtZW50Kj4obm9k
ZSk7Ci0gICAgICAgIGlmICghc291cmNlLT5oYXNBdHRyaWJ1dGUoc3JjQXR0cikpCi0gICAgICAg
ICAgICBnb3RvIGNoZWNrX2FnYWluOyAKIAorICAgICAgICAvLyBJZiBjYW5kaWRhdGUgZG9lcyBu
b3QgaGF2ZSBhIHNyYyBhdHRyaWJ1dGUsIG9yIGlmIGl0cyBzcmMgYXR0cmlidXRlJ3MgdmFsdWUg
aXMgdGhlIGVtcHR5IHN0cmluZyAuLi4ganVtcCBkb3duIHRvIHRoZSBmYWlsZWQgc3RlcCBiZWxv
dworICAgICAgICBpZiAoIXNvdXJjZS0+aGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAgICAg
ICAgZ290byBjaGVja19hZ2FpbjsKKyAgICAgICAgCisgICAgICAgIG1lZGlhVVJMID0gc291cmNl
LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgaWYgKG1lZGlhVVJM
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGdvdG8gY2hlY2tfYWdhaW47CisgICAgICAgIAogICAg
ICAgICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgewogICAgICAgICAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFt
ZSgpLCByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOwogICAgICAgICAgICAg
UmVmUHRyPE1lZGlhTGlzdD4gbWVkaWEgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3Jp
cHRpb25TeW50YXgoc291cmNlLT5tZWRpYSgpKTsKQEAgLTE0ODQsNyArMTUwMCw2IEBAIEtVUkwg
SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUMKICAgICAgICAgfQogCiAgICAgICAg
IC8vIElzIGl0IHNhZmUgdG8gbG9hZCB0aGlzIHVybD8KLSAgICAgICAgbWVkaWFVUkwgPSBzb3Vy
Y2UtPnNyYygpOwogICAgICAgICBpZiAoIWlzU2FmZVRvTG9hZFVSTChtZWRpYVVSTCwgYWN0aW9u
SWZJbnZhbGlkKSB8fCAhZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobWVkaWFVUkwuc3RyaW5nKCkp
KQogICAgICAgICAgICAgZ290byBjaGVja19hZ2FpbjsKIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbAkocmV2aXNpb24gNjMwOTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgaW50ZXJmYWNlIFtDb25k
aXRpb25hbD1WSURFT10gSFRNTE1lZGlhRQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUVy
cm9yIGVycm9yOwogCiAgICAgLy8gbmV0d29yayBzdGF0ZQotICAgIGF0dHJpYnV0ZSBbUmVmbGVj
dCxVUkxdIERPTVN0cmluZyBzcmM7CisgICAgYXR0cmlidXRlIFtSZWZsZWN0LE5vbkVtcHR5LFVS
TF0gRE9NU3RyaW5nIHNyYzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGN1cnJl
bnRTcmM7CiAgICAgCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19FTVBUWSA9IDA7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYzMDkyKQorKysg
V2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NyArNjQsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1CiAKIEtV
UkwgSFRNTFNvdXJjZUVsZW1lbnQ6OnNyYygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShzcmNBdHRyKSk7CisgICAgcmV0dXJuIGdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogfQogCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50
OjpzZXRTcmMoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xMTAsNSArMTEwLDExIEBAIHZvaWQgSFRN
TFNvdXJjZUVsZW1lbnQ6OmVycm9yRXZlbnRUaW1lckYKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiB9CiAKK2Jv
b2wgSFRNTFNvdXJjZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRl
KSBjb25zdAoreworICAgIHJldHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzcmNBdHRyOworfQor
CiB9CisKICNlbmRpZgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgJKHJldmlzaW9uIDYz
MDkyKQorKysgV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmli
dXRlKikgY29uc3Q7CisKICAgICB2b2lkIGVycm9yRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxT
b3VyY2VFbGVtZW50PiopOwogCiAgICAgVGltZXI8SFRNTFNvdXJjZUVsZW1lbnQ+IG1fZXJyb3JF
dmVudFRpbWVyOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2
MzA5MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbW9kdWxlIGh0bWwgewogaW50ZXJmYWNlIFtDb25kaXRp
b25hbD1WSURFT10gSFRNTFNvdXJjZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgYXR0cmli
dXRlIERPTVN0cmluZyBzcmM7CisgICAgYXR0cmlidXRlIFtSZWZsZWN0LE5vbkVtcHR5LFVSTF0g
RE9NU3RyaW5nIHNyYzsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBtZWRpYTsKIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MzA5MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWIKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0
dHItPm5hbWUoKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBwb3N0ZXJBdHRyKSB7Ci0gICAgICAg
IG1fcG9zdGVyVVJMID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIG1fcG9zdGVyVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVyQXR0cik7
CiAgICAgICAgIHVwZGF0ZVBvc3RlckltYWdlKCk7CiAgICAgICAgIGlmIChtX3Nob3VsZERpc3Bs
YXlQb3N0ZXJJbWFnZSkgewogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDYzMDkyKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSB1bnNpZ25lZCBs
b25nIGhlaWdodDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdmlk
ZW9XaWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdmlkZW9I
ZWlnaHQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBwb3N0ZXI7
CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxOb25FbXB0eSxVUkxdIERPTVN0cmluZyBwb3N0
ZXI7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0U3VwcG9ydHNG
dWxsc2NyZWVuOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNw
bGF5aW5nRnVsbHNjcmVlbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMDk1KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDctMTIg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQncyBo
YW5kbGluZyBvZiBlbXB0eSAnc3JjJyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDAxCisKKyAgICAgICAgKiBmYXN0L2RvbS9VUkwt
YXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0OiBVcGRhdGUgcmVzdWx0cyBub3cgdGhh
dCBhdWRpbywgdmlkZW8sIGFuZAorICAgICAgICBzb3VyY2UgcmV0dXJuICdub24tZW1wdHkgVVJM
Jy4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogbWVkaWEvdmlkZW8tcG9zdGVyLmh0bWw6IFRlc3QgZW1wdHkgcG9zdGVyIHVybC4KKworICAg
ICAgICAqIG1lZGlhL3ZpZGVvLXNvdXJjZS1lcnJvci1uby1jYW5kaWRhdGUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNvdXJjZS1lcnJvci1uby1jYW5kaWRhdGUuaHRtbDog
RW1wdHkgJ3NyYycgc2hvdWxkIGZpcmVzIGFuIGVycm9yIGV2ZW50LgorCisgICAgICAgICogbWVk
aWEvdmlkZW8tc291cmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3Vy
Y2UuaHRtbDogVGVzdCA8c291cmNlPiBlbGVtZW50J3MgJ3NyYycgYXR0cmlidXRlIGFuZCBwcm9w
ZXJ0eSBhcyB3ZWxsIAorICAgICAgICBhcyBjdXJyZW50U3JjLgorCisgICAgICAgICogbWVkaWEv
dmlkZW8tc3JjLWVtcHR5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1zcmMtZW1wdHkuaHRtbDogUmVtb3ZlZCwgdGhlIHRlc3QgaXMgbm8gbG9uZ2VyIHZhbGlk
LgorCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLW5vbmUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLXNyYy1ub25lLmh0bWw6IFVwZGF0ZWQgdG8gdGVzdCBlbXB0eSAnc3Jj
Jy4gQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGFuIGVycm9yIAorICAgICAgICBpcyBmaXJlZCB3
aGVuIGxvYWQoKSBpcyBjYWxsZWQgYW5kIHRoZSAnc3JjJyBpcyBlbXB0eSwgYnV0IG5vdCB3aGVu
ICdzcmMnIGlzIG1pc3NpbmcuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1zcmMuaHRtbDoKKyAg
ICAgICAgKiBtZWRpYS92aWRlby1zcmMtZXhwZWN0ZWQudHh0OiBUZXN0ICdzcmMnIGF0dHJpYnV0
ZSBhbmQgcHJvcGVydHkgYXMgd2VsbCBhcyBjdXJyZW50U3JjLgorCiAyMDEwLTA3LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vVVJMLWF0dHJpYnV0ZS1yZWZs
ZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9V
UkwtYXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzA5MikKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE1ICsxOSwxNSBAQCBGQUlMIHRlc3RVUkxSZWZsZWN0
aW9uKCdocmVmJywgJ2xpbmsnKSBzCiBGQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdocmVmJywgJ2Jh
c2UnKSBzaG91bGQgYmUgVVJMLiBXYXMgbm9uLVVSTC4KIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24o
J2ljb24nLCAnY29tbWFuZCcpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgbm9uZS4KIEZB
SUwgdGVzdFVSTFJlZmxlY3Rpb24oJ21hbmlmZXN0JywgJ2h0bWwnKSBzaG91bGQgYmUgbm9uLWVt
cHR5IFVSTC4gV2FzIG5vbmUuCi1GQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdwb3N0ZXInLCAndmlk
ZW8nKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIFVSTC4KLUZBSUwgdGVzdFVSTFJlZmxl
Y3Rpb24oJ3NyYycsICdhdWRpbycpIHNob3VsZCBiZSBub24tZW1wdHkgVVJMLiBXYXMgVVJMLgor
UEFTUyB0ZXN0VVJMUmVmbGVjdGlvbigncG9zdGVyJywgJ3ZpZGVvJykgaXMgJ25vbi1lbXB0eSBV
UkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnYXVkaW8nKSBpcyAnbm9uLWVtcHR5
IFVSTCcKIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdlbWJlZCcpIHNob3VsZCBiZSBu
b24tZW1wdHkgVVJMLiBXYXMgbm9uLVVSTC4KIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycs
ICdpZnJhbWUnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIG5vbi1VUkwuCiBGQUlMIHRl
c3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnaW1nJykgc2hvdWxkIGJlIG5vbi1lbXB0eSBVUkwuIFdh
cyBVUkwuCiBGQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnaW5wdXQnKSBzaG91bGQgYmUg
bm9uLWVtcHR5IFVSTC4gV2FzIFVSTC4KIEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdz
Y3JpcHQnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIFVSTC4KLUZBSUwgdGVzdFVSTFJl
ZmxlY3Rpb24oJ3NyYycsICdzb3VyY2UnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIFVS
TC4KLUZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICd2aWRlbycpIHNob3VsZCBiZSBub24t
ZW1wdHkgVVJMLiBXYXMgVVJMLgorUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ3NvdXJj
ZScpIGlzICdub24tZW1wdHkgVVJMJworUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ3Zp
ZGVvJykgaXMgJ25vbi1lbXB0eSBVUkwnCiBGQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdsb25nRGVz
YycsICdpbWcnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2FzIFVSTC4KIEZBSUwgdGVzdFVS
TFJlZmxlY3Rpb24oJ2xvd3NyYycsICdpbWcnKSBzaG91bGQgYmUgbm9uLWVtcHR5IFVSTC4gV2Fz
IFVSTC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXBvc3Rlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcG9zdGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjMwOTIpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsMTUgQEAKKworU2V0ICdwb3N0ZXInIHRvICdjb250ZW50L2dyZWVuYm94LnBu
ZycuCiBFWFBFQ1RFRCAodmlkZW8uZ2V0QXR0cmlidXRlKCdwb3N0ZXInKSA9PSAnY29udGVudC9n
cmVlbmJveC5wbmcnKSBPSwogRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0g
J2NvbnRlbnQvZ3JlZW5ib3gucG5nJykgT0sKKworU2V0ICdwb3N0ZXInIHRvICcnLgorRVhQRUNU
RUQgKHZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykgPT0gJycpIE9LCitFWFBFQ1RFRCAocmVs
YXRpdmVVUkwodmlkZW8ucG9zdGVyKSA9PSAnJykgT0sKKworU2V0ICdwb3N0ZXInIHRvICdjb250
ZW50L2FiZS5wbmcnLgogRVhQRUNURUQgKHZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykgPT0g
J2NvbnRlbnQvYWJlLnBuZycpIE9LCiBFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8ucG9zdGVy
KSA9PSAnY29udGVudC9hYmUucG5nJykgT0sKKwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwJKHJldmlzaW9uIDYzMDkyKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMzggQEAK
LTx2aWRlbyBwb3N0ZXI9ImNvbnRlbnQvZ3JlZW5ib3gucG5nIiBjb250cm9scz48L3ZpZGVvPgot
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bvc3RlcicpIiwgImNvbnRlbnQvZ3JlZW5ib3gu
cG5nIik7Ci0gICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpIiwgImNv
bnRlbnQvZ3JlZW5ib3gucG5nIik7Ci0gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdwb3N0ZXInLCAn
Y29udGVudC9hYmUucG5nJyk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUo
J3Bvc3RlcicpIiwgImNvbnRlbnQvYWJlLnBuZyIpOwotICAgIHRlc3RFeHBlY3RlZCgicmVsYXRp
dmVVUkwodmlkZW8ucG9zdGVyKSIsICJjb250ZW50L2FiZS5wbmciKTsKLSAgICBlbmRUZXN0KCk7
Ci08L3NjcmlwdD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz12aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorCisgICAgICAgICAgICBmdW5j
dGlvbiB0ZXN0UG9zdGVyKHVybCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykiLCB1cmwpOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSIsIHVybCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPlNldCAncG9zdGVyJyB0byAnY29udGVu
dC9ncmVlbmJveC5wbmcnLjwiICsgIi9pPiIpOworICAgICAgICAgICAgICAgIHRlc3RQb3N0ZXIo
J2NvbnRlbnQvZ3JlZW5ib3gucG5nJyk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj48aT5TZXQgJ3Bvc3RlcicgdG8gJycuPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAg
dmlkZW8uc2V0QXR0cmlidXRlKCdwb3N0ZXInLCAnJyk7CisgICAgICAgICAgICAgICAgdGVzdFBv
c3RlcignJyk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT5TZXQgJ3Bv
c3RlcicgdG8gJ2NvbnRlbnQvYWJlLnBuZycuPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAg
dmlkZW8uc2V0QXR0cmlidXRlKCdwb3N0ZXInLCAnY29udGVudC9hYmUucG5nJyk7CisgICAgICAg
ICAgICAgICAgdGVzdFBvc3RlcignY29udGVudC9hYmUucG5nJyk7CisKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoJycpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2Fk
PSJzZXRUaW1lb3V0KHRlc3QsIDEwMCkiPgorCisgICAgICAgIDx2aWRlbyBwb3N0ZXI9ImNvbnRl
bnQvZ3JlZW5ib3gucG5nIiBjb250cm9scz48L3ZpZGVvPgorCisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWVycm9yLW5vLWNhbmRpZGF0
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291
cmNlLWVycm9yLW5vLWNhbmRpZGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzMDkyKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWVycm9yLW5vLWNhbmRpZGF0ZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACi1UZXN0IHRoYXQgJ2Vycm9yJyBl
dmVudHMgYXJlIGZpcmVkIHdoZW4gbm8gdXJscyBhcmUgcGFzc2VkIHRvIHRoZSBtZWRpYSBlbmdp
bmUuCitUZXN0IHRoYXQgJ2Vycm9yJyBldmVudHMgYXJlIGZpcmVkIGZyb20gPHNvdXJjZT4gZWxl
bWVudCB3aGVuIGl0IGNhbiBub3QgYmUgdXNlZC4KIAogCi1FVkVOVChlcnJvcikgZnJvbSA8c291
cmNlIGlkPSdtaXNzaW5nLXNyYycgc3JjPScnPiBPSworRVZFTlQoZXJyb3IpIGZyb20gPHNvdXJj
ZSBpZD0nbWlzc2luZy1zcmMnIHNyYz1udWxsPiBPSwogRVhQRUNURUQgKHZpZGVvLmVycm9yID09
ICdudWxsJykgT0sKIAogRVZFTlQoZXJyb3IpIGZyb20gPHNvdXJjZSBpZD0nYm9ndXMtdHlwZScg
c3JjPSdjb250ZW50L3Rlc3QubXA0Jz4gT0sKQEAgLTEwLDUgKzEwLDggQEAgRVhQRUNURUQgKHZp
ZGVvLmVycm9yID09ICdudWxsJykgT0sKIEVWRU5UKGVycm9yKSBmcm9tIDxzb3VyY2UgaWQ9J3Vu
c3VwcG9ydGVkLW1lZGlhLXF1ZXJ5JyBzcmM9J2NvbnRlbnQvdGVzdC5tcDQnPiBPSwogRVhQRUNU
RUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKIAorRVZFTlQoZXJyb3IpIGZyb20gPHNvdXJj
ZSBpZD0nZW1wdHktc3JjJyBzcmM9Jyc+IE9LCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IgPT0gJ251
bGwnKSBPSworCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
b3VyY2UtZXJyb3Itbm8tY2FuZGlkYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc291cmNlLWVycm9yLW5vLWNhbmRpZGF0ZS5odG1sCShyZXZpc2lvbiA2MzA5
MikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1lcnJvci1uby1jYW5kaWRhdGUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKIAogICAgICAgICAgICAgdmFyIHNv
dXJjZXMgPSBbXTsKICAgICAgICAgICAgIHZhciBlcnJvckNvdW50ID0gMDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZEVycm9yQ291bnQgPSA0OwogCiAgICAgICAgICAgICBmdW5jdGlvbiBlcnJv
ckV2ZW50KGV2dCkKICAgICAgICAgICAgIHsKQEAgLTE5LDE2ICsyMCwxNyBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAg
ICAgdmFyIHNyYyA9IHNvdXJjZXNbbmR4XS5nZXRBdHRyaWJ1dGUoJ3NyYycpID09IG51bGwgPyAi
bnVsbCIgOiAiJyIgKyByZWxhdGl2ZVVSTChldnQudGFyZ2V0LnNyYykgKyAiJyI7CiAgICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZXNbbmR4XSA9PSBldnQudGFyZ2V0KQotICAgICAgICAgICAgICAg
ICAgICBsb2dSZXN1bHQodHJ1ZSwgIkVWRU5UKGVycm9yKSBmcm9tICZsdDtzb3VyY2UgaWQ9Jzxl
bT4iICsgZXZ0LnRhcmdldC5pZCArICI8L2VtPicgc3JjPSc8ZW0+IiArIHJlbGF0aXZlVVJMKGV2
dC50YXJnZXQuc3JjKSArICI8L2VtPicmZ3Q7Iik7CisgICAgICAgICAgICAgICAgICAgIGxvZ1Jl
c3VsdCh0cnVlLCAiRVZFTlQoZXJyb3IpIGZyb20gJmx0O3NvdXJjZSBpZD0nPGVtPiIgKyBldnQu
dGFyZ2V0LmlkICsgIjwvZW0+JyBzcmM9PGVtPiIgKyBzcmMgKyAiPC9lbT4mZ3Q7Iik7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2dSZXN1bHQoZmFsc2UsICJF
VkVOVChlcnJvcikgZnJvbSAiICsgZXZ0LnRhcmdldCk7CiAKICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaWYgKCsrZXJyb3JDb3VudCA9PSAzKSB7CisgICAgICAgICAgICAgICAgaWYgKCsr
ZXJyb3JDb3VudCA9PSBleHBlY3RlZEVycm9yQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0
LCAxMDAwKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCAyMDApOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMzksNyArNDEsNiBAQAogICAg
ICAgICAgICAgICAgIHNvdXJjZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc291
cmNlJyk7CiAKICAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
PC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpAQCAtNTAsOSArNTEsMTAgQEAKICAgICAgICAgICAgIDxz
b3VyY2UgaWQ9bWlzc2luZy1zcmMgdHlwZT0idmlkZW8vYmxhaGJsYWgiPgogICAgICAgICAgICAg
PHNvdXJjZSBpZD1ib2d1cy10eXBlIHNyYz1jb250ZW50L3Rlc3QubXA0IHR5cGU9InZpZGVvL2Js
YWhibGFoIj4KICAgICAgICAgICAgIDxzb3VyY2UgaWQ9dW5zdXBwb3J0ZWQtbWVkaWEtcXVlcnkg
c3JjPWNvbnRlbnQvdGVzdC5tcDQgbWVkaWE9cHJpbnQ+CisgICAgICAgICAgICA8c291cmNlIGlk
PWVtcHR5LXNyYyBzcmM9IiIgdHlwZT0idmlkZW8vbXA0Ij4KICAgICAgICAgPC92aWRlbz4KICAg
ICAgICAgCi0gICAgICAgIDxwPlRlc3QgdGhhdCAnZXJyb3InIGV2ZW50cyBhcmUgZmlyZWQgd2hl
biBubyB1cmxzIGFyZSBwYXNzZWQgdG8gdGhlIG1lZGlhIGVuZ2luZS48L3A+CisgICAgICAgIDxw
PlRlc3QgdGhhdCAnZXJyb3InIGV2ZW50cyBhcmUgZmlyZWQgZnJvbSAmbHQ7c291cmNlJmd0OyBl
bGVtZW50IHdoZW4gaXQgY2FuIG5vdCBiZSB1c2VkLjwvcD4KIAogICAgIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjMwOTIpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNiBAQAogRVZFTlQobG9hZHN0YXJ0KQog
RVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3Qu
bXA0JykgT0sKK0VYUEVDVEVEIChzb3VyY2UuZ2V0QXR0cmlidXRlKCdzcmMnKSA9PSAnY29udGVu
dC90ZXN0Lm1wNCcpIE9LCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwoc291cmNlLnNyYykgPT0gJ2Nv
bnRlbnQvdGVzdC5tcDQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tc291cmNlLmh0bWwJKHJldmlzaW9uIDYzMDkyKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMzIgQEAKLTxib2R5Pgot
PHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+Ci08ZGl2IGlkPXBhbmVsPjwvZGl2PgotPHNjcmlwdD4KLSAgICB2YXIg
cGFuZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFuZWwiKTsKLSAgICB2YXIgbWVkaWFG
aWxlID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7Ci0gICAgcGFuZWwu
aW5uZXJIVE1MID0gIjx2aWRlbyBjb250cm9scz48c291cmNlIHNyYz0nIiArIG1lZGlhRmlsZSAr
ICInPjwvdmlkZW8+IjsKLTwvc2NyaXB0PgotPHNjcmlwdD4KLSAgICB2aWRlbyA9IG1lZGlhRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwotICAgIHdh
aXRGb3JFdmVudCgibG9hZHN0YXJ0IiwgZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpICIsIG1lZGlhRmlsZSk7Ci0gICAgICAg
IGVuZFRlc3QoKTsKLSAgICB9KTsKLTwvc2NyaXB0PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBw
YW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYW5lbCIpOworICAgICAgICAgICAgICAg
IHZhciBtZWRpYUZpbGUgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsK
KyAgICAgICAgICAgICAgICBwYW5lbC5pbm5lckhUTUwgPSAiPHZpZGVvIGNvbnRyb2xzPjxzb3Vy
Y2Ugc3JjPSciICsgbWVkaWFGaWxlICsgIic+PC92aWRlbz4iOworCisgICAgICAgICAgICAgICAg
dmlkZW8gPSBtZWRpYUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlk
ZW8nKVswXTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2
aWRlby5jdXJyZW50U3JjKSAiLCBtZWRpYUZpbGUpOworCisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NvdXJjZScpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInNvdXJjZS5nZXRBdHRyaWJ1dGUoJ3NyYycpIiwgbWVkaWFGaWxl
KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTChzb3VyY2Uu
c3JjKSAiLCBtZWRpYUZpbGUpOworCisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHRlc3QsIDEwMCkiPgorCisg
ICAgPGRpdiBpZD1wYW5lbD48L2Rpdj4KKworICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1lbXB0eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWVtcHR5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjMwOTIpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtZW1wdHktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotRW1wdHkgc3JjIGF0dHJpYnV0ZSBk
ZWZpbmVkLiBJbnZhbGlkIFVSTCBhbmQgdmlkZW8gc2hvdWxkIGVycm9yLgotCi1FWFBFQ1RFRCAo
dmlkZW8uZXJyb3IuY29kZSA9PSAnNCcpIE9LCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRl
ID09ICc0JykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1lbXB0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNy
Yy1lbXB0eS5odG1sCShyZXZpc2lvbiA2MzA5MikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1lbXB0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICswLDAgQEAKLTxodG1sPgot
ICAgIDxib2R5PgotICAgICAgICA8cD5FbXB0eSBzcmMgYXR0cmlidXRlIGRlZmluZWQuICBJbnZh
bGlkIFVSTCBhbmQgdmlkZW8gc2hvdWxkIGVycm9yLjwvcD4KLSAgICAgICAgPHZpZGVvIHNyYz0i
IiBvbmVycm9yPSJlcnJvckV2ZW50KCkiIGNvbnRyb2xzPjwvdmlkZW8+Ci0KLSAgICAgICAgPHNj
cmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGVycm9yRXZlbnQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJS
X1NSQ19OT1RfU1VQUE9SVEVEKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UpOwotICAg
ICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgPC9zY3JpcHQ+
Ci0gICAgPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3Jj
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzA5MikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw2IEBACiBFVkVOVChs
b2Fkc3RhcnQpCiBFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2Nv
bnRlbnQvdGVzdC5tcDQnKSBPSworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLnNyYykgPT0g
J2NvbnRlbnQvdGVzdC5tcDQnKSBPSworRVhQRUNURUQgKHZpZGVvLmdldEF0dHJpYnV0ZSgnc3Jj
JykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc3JjLW5vbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1ub25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjMw
OTIpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtbm9uZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSwyNSBAQAotTm8gc3JjIGF0dHJpYnV0ZSBkZWZpbmVkLiBW
aWRlbyBzaG91bGQgcmVtYWluIGluIE5FVFdPUktfRU1QVFkuCisgCiAKLUVYUEVDVEVEICh2aWRl
by5lcnJvciA9PSAnbnVsbCcpIE9LCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcw
JykgT0sKK05ldHdvcmsgc3RhdGUgc2hvdWxkIHJlbWFpbiBpbiBORVRXT1JLX0VNUFRZIHdpdGgg
ZW1wdHkgb3IgbWlzc2luZyAnc3JjJyBhdHRyaWJ1dGUuCisqKiA8dmlkZW8+IHdpdGggbm8gc3Jj
IGF0dHJpYnV0ZSoqCitFWFBFQ1RFRCAodmlkZW9zWzBdLmVycm9yID09ICdudWxsJykgT0sKK0VY
UEVDVEVEICh2aWRlb3NbMF0ubmV0d29ya1N0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRl
b3NbMF0uc3JjID09ICcnKSBPSworKiogPHZpZGVvPiB3aXRoIGVtcHR5IHNyYyBhdHRyaWJ1dGUg
KioKK0VYUEVDVEVEICh2aWRlb3NbMV0uZXJyb3IgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKHZp
ZGVvc1sxXS5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSworRVhQRUNURUQgKHZpZGVvc1sxXS5zcmMg
PT0gJycpIE9LCisKK0NhbGxpbmcgbG9hZCgpIHdpdGggZW1wdHkgJ3NyYycgc2hvdWxkIGZpcmUg
J2Vycm9yJyBldmVudCwgc2V0IG5ldHdvcmsgc3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UsIGFu
ZCBzZXQgZXJyb3IgdG8gTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVELgorJ2Vycm9yJyBldmVu
dDoKK0VYUEVDVEVEIChzdGF0ZSA9PSAnbG9hZCgpIHdpdGggZW1wdHkgJ3NyYycnKSBPSworRVhQ
RUNURUQgKFtvYmplY3QgSFRNTFZpZGVvRWxlbWVudF0gPT0gJ1tvYmplY3QgSFRNTFZpZGVvRWxl
bWVudF0nKSBPSworRVhQRUNURUQgKHZpZGVvc1sxXS5lcnJvci5jb2RlID09ICc0JykgT0sKK0VY
UEVDVEVEICh2aWRlb3NbMV0ubmV0d29ya1N0YXRlID09ICc0JykgT0sKK0NhbGxpbmcgbG9hZCgp
IHdpdGggbm8gJ3NyYycgc2hvdWxkIE5PVCBmaXJlICdlcnJvcicgZXZlbnQsIHNldCBuZXR3b3Jr
IHN0YXRlIHRvIE5FVFdPUktfRU1QVFkuCitFWFBFQ1RFRCAoc3RhdGUgPT0gJ2xvYWQoKSB3aXRo
IG5vICdzcmMnJyksIE9CU0VSVkVEICdsb2FkKCkgd2l0aCBtaXNzaW5nICdzcmMnJyBGQUlMCitF
WFBFQ1RFRCAodmlkZW9zWzBdLmVycm9yID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlb3Nb
MF0ubmV0d29ya1N0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRlb3NbMF0uc3JjID09ICcn
KSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLW5v
bmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtbm9uZS5o
dG1sCShyZXZpc2lvbiA2MzA5MikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1ub25l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsNjAgQEAKIDxodG1sPgotICAgIDxib2R5
IG9ubG9hZD0ic2V0VGltZW91dCh0ZXN0LCAyNTApIj4KLSAgICAgICAgPHA+Tm8gc3JjIGF0dHJp
YnV0ZSBkZWZpbmVkLiAgVmlkZW8gc2hvdWxkIHJlbWFpbiBpbiBORVRXT1JLX0VNUFRZLjwvcD4K
LSAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci0KKyAgICA8aGVhZD4KICAgICAgICAg
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KLSAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgdmFyIHN0YXRlOworCisgICAg
ICAgICAgICBmdW5jdGlvbiBzb21lVGltZUxhdGVyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCk7Ci0gICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5F
VFdPUktfRU1QVFkpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgic3RhdGUiLCAibG9h
ZCgpIHdpdGggbm8gJ3NyYyciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
c1swXS5lcnJvciIsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9z
WzBdLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlb3NbMF0uc3JjIiwgIiIpOwogICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
ZXJyb3JFdmVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCInZXJyb3InIGV2ZW50OiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgic3RhdGUi
LCAibG9hZCgpIHdpdGggZW1wdHkgJ3NyYyciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoZXZlbnQudGFyZ2V0LCB2aWRlb3NbMV0pOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW9zWzFdLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9TUkNfTk9UX1NV
UFBPUlRFRCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlb3NbMV0ubmV0d29y
a1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSk7CisKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxpPkNhbGxpbmcgbG9hZCgpIHdpdGggbm8gJ3NyYycgc2hv
dWxkIE5PVCBmaXJlICdlcnJvcicgZXZlbnQsIHNldCBuZXR3b3JrIHN0YXRlIHRvIE5FVFdPUktf
RU1QVFkuPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAibG9hZCgpIHdpdGgg
bWlzc2luZyAnc3JjJyI7CisgICAgICAgICAgICAgICAgdmlkZW9zWzBdLmxvYWQoKTsKKworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgMTAwKSA7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZpZGVvcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ZpZGVvJyk7CisK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT5OZXR3b3JrIHN0YXRlIHNob3Vs
ZCByZW1haW4gaW4gTkVUV09SS19FTVBUWSB3aXRoIGVtcHR5IG9yIG1pc3NpbmcgJ3NyYycgYXR0
cmlidXRlLjwiICsgIi9pPiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiKiogJmx0
O3ZpZGVvJmd0OyB3aXRoIG5vIHNyYyBhdHRyaWJ1dGUqKiIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW9zWzBdLmVycm9yIiwgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlb3NbMF0ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRX
T1JLX0VNUFRZKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvc1swXS5zcmMi
LCAiIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqICZsdDt2aWRlbyZndDsg
d2l0aCBlbXB0eSBzcmMgYXR0cmlidXRlICoqIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlb3NbMV0uZXJyb3IiLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvc1sxXS5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1Q
VFkpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW9zWzFdLnNyYyIsICIiKTsK
KworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjwiICsgImk+Q2FsbGluZyBsb2Fk
KCkgd2l0aCBlbXB0eSAnc3JjJyBzaG91bGQgZmlyZSAnZXJyb3InIGV2ZW50LCBzZXQgbmV0d29y
ayBzdGF0ZSB0byBORVRXT1JLX05PX1NPVVJDRSwgYW5kIHNldCBlcnJvciB0byBNRURJQV9FUlJf
U1JDX05PVF9TVVBQT1JURUQuPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAi
bG9hZCgpIHdpdGggZW1wdHkgJ3NyYyciOworICAgICAgICAgICAgICAgIHZpZGVvc1sxXS5sb2Fk
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAg
IDxib2R5IG9ubG9hZD0ic2V0VGltZW91dCh0ZXN0LCAxMDApIj4KKyAgICAgICAgPHZpZGVvIHdp
ZHRoPTMyMCBoZWlnaHQ9NjAgY29udHJvbHMgb25lcnJvcj0iZXJyb3JFdmVudCgpIj48L3ZpZGVv
PgorICAgICAgICA8YnI+CisgICAgICAgIDx2aWRlbyB3aWR0aD0zMjAgaGVpZ2h0PTYwIGNvbnRy
b2xzIHNyYz0iIiBvbmVycm9yPSJlcnJvckV2ZW50KCkiPjwvdmlkZW8+CisKKwogICAgIDwvYm9k
eT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy5odG1sCShyZXZpc2lvbiA2MzA5
MikKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE2ICsxLDI4IEBACi08Ym9keT4KLTxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHZpZGVvIGNvbnRyb2xz
PjwvdmlkZW8+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KIAotPHNjcmlwdD4KLSAgICB2aWRlbyA9IG1lZGlhRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwotICAgIHZh
ciBtZWRpYUZpbGUgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZpZGVvID0gbWVkaWFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Zp
ZGVvJylbMF07CisgICAgICAgICAgICAgICAgdmFyIG1lZGlhRmlsZSA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
d2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgIiwgbWVkaWFG
aWxlKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRl
by5zcmMpICIsIG1lZGlhRmlsZSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uZ2V0QXR0cmlidXRlKCdzcmMnKSIsIG1lZGlhRmlsZSk7CisgICAgICAgICAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIHZpZGVvLnNyYyA9IG1lZGlhRmlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgogCi0gICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3Vy
cmVudFNyYykgIiwgbWVkaWFGaWxlKTsKLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH0pOworICAg
IDxib2R5IG9ubG9hZD0ic2V0VGltZW91dCh0ZXN0LCAxMDApIj4KKyAgICAgICAgPHZpZGVvIGNv
bnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgogCi0gICAgdmlkZW8uc3JjID0g
bWVkaWFGaWxlOwotPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="49234"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>