<?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>100538</bug_id>
          
          <creation_ts>2012-10-26 10:46:42 -0700</creation_ts>
          <short_desc>malformed X-XSS-Protection headers not reported</short_desc>
          <delta_ts>2012-10-31 13:07:54 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Thomas Sepez">tsepez</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752174</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 10:46:42 -0700</bug_when>
    <thetext>Follow-on from https://bugs.webkit.org/show_bug.cgi?id=100423, where we noticed that a badly-formed X-XSS-Protection header is silently ignored.
Two steps required:
1. Make some noise (log a console message when parse fails)
2. Add a test for it with some bad examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752287</commentid>
    <comment_count>1</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 12:36:16 -0700</bug_when>
    <thetext>Actually, there was a test, but bad headers aren&apos;t flagged should they be accidentally introduced in other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752290</commentid>
    <comment_count>2</comment_count>
      <attachid>170984</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 12:40:24 -0700</bug_when>
    <thetext>Created attachment 170984
Patch for discussion

We need to discuss the approach before I cobble together changelogs and the like for actual submission.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752309</commentid>
    <comment_count>3</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 13:07:54 -0700</bug_when>
    <thetext>Also note that at line 326 or thereabouts there looks to be a legit bug 
    unsigned length = header.length();
vs.
   unsigned length = strippedHeader.length();

which would theoretically fail to kick in full blocking mode.  Looks like this would only be tickled by the test xss-protection-parsing-01.html if at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752444</commentid>
    <comment_count>4</comment_count>
      <attachid>170984</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-26 14:51:42 -0700</bug_when>
    <thetext>Comment on attachment 170984
Patch for discussion

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

Hi Tom! Two superquick comments before bedtime.

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:222
&gt; +            DEFINE_STATIC_LOCAL(String, consoleMessage, (ASCIILiteral(&quot;Invalid header: X-XSS-Protection: &quot;)));

Nit: The header itself isn&apos;t invalid, just its value. It might also be worth noting the effect (that protection is enabled, regardless of the author&apos;s misstated intent). If you don&apos;t mind verbosity, I&apos;d suggest something along the lines of &quot;The X-XSS-Protection HTTP header&apos;s value, &apos;[VALUE]&apos;, is malformed. The header will be ignored, and protection will be enabled.&quot;

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:331
&gt; +        return XSSProtectionInvalid;

If you enumerate the ways things can break, you&apos;d be able to give more detailed error messages. Returning XSSProtectionMalformedToggle might result in &quot;The first non-whitespace character must be 0 or 1.&quot;, and XSSProtectionMalformedMode could do likewise.

If you actually moved logging into this function, you could have even more detail, but it doesn&apos;t look like that would be straightforward since there&apos;s no reference to the document anywhere in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752476</commentid>
    <comment_count>5</comment_count>
      <attachid>170984</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 15:06:28 -0700</bug_when>
    <thetext>Comment on attachment 170984
Patch for discussion

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

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:338
&gt; +    if (!strippedHeader[pos++] == &apos;;&apos;)

You moron.  Look at what you wrote here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752478</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 15:08:31 -0700</bug_when>
    <thetext>Hey now!  Be nice to yourself.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752488</commentid>
    <comment_count>7</comment_count>
      <attachid>170984</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-26 15:24:10 -0700</bug_when>
    <thetext>Comment on attachment 170984
Patch for discussion

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

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:77
&gt; +    pos = current;

This looks like its been wrong for a long time. eg given input like &quot;mode=blo\n&quot;, we&apos;d say that  &quot;blo&quot; matches against &quot;block&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753702</commentid>
    <comment_count>8</comment_count>
      <attachid>171297</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-29 13:20:43 -0700</bug_when>
    <thetext>Created attachment 171297
patch + changelogs for landing

- Rather than pass back an ever increasing set of enums, I added a String&amp; failureReason argument along the lines of some of the other parsers.
- Split out success cases into xss-protection-parsing-* to match existing, and put malformed cases into malformed-*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753704</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 13:26:07 -0700</bug_when>
    <thetext>Attachment 171297 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1
Source/WebCore/platform/network/HTTPParsers.cpp:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/network/HTTPParsers.cpp:356:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/network/HTTPParsers.cpp:357:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/network/HTTPParsers.cpp:358:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 18 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>753712</commentid>
    <comment_count>10</comment_count>
      <attachid>171300</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-29 13:37:20 -0700</bug_when>
    <thetext>Created attachment 171300
Patch, fix style, add missing file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755559</commentid>
    <comment_count>11</comment_count>
      <attachid>171300</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 12:46:55 -0700</bug_when>
    <thetext>Comment on attachment 171300
Patch, fix style, add missing file.

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

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:225
&gt; +            DEFINE_STATIC_LOCAL(String, consoleMessageStart, (ASCIILiteral(&quot;Error parsing header X-XSS-Protection: &quot;)));
&gt; +            DEFINE_STATIC_LOCAL(String, consoleMessageSeparator, (ASCIILiteral(&quot;: &quot;)));
&gt; +            DEFINE_STATIC_LOCAL(String, consoleMessageEnd, (ASCIILiteral(&quot;. The default protections will be applied.&quot;)));

There isn&apos;t really a benefit to defining these statics since you&apos;re going to concatenate them anyway.  The most efficient thing is to just write out the whole concatenation on one line with the literals and everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755568</commentid>
    <comment_count>12</comment_count>
      <attachid>171300</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 13:07:50 -0700</bug_when>
    <thetext>Comment on attachment 171300
Patch, fix style, add missing file.

Clearing flags on attachment: 171300

Committed r133066: &lt;http://trac.webkit.org/changeset/133066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755569</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 13:07:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170984</attachid>
            <date>2012-10-26 12:40:24 -0700</date>
            <delta_ts>2012-10-29 13:20:43 -0700</delta_ts>
            <desc>Patch for discussion</desc>
            <filename>patch_100538.txt</filename>
            <type>text/plain</type>
            <size>9146</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lv
biAxMzI2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiwxMyBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQo
KQogCiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJ
TGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIpKSk7Ci0gICAgICAgIG1feHNzUHJvdGVjdGlvbiA9
IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRw
SGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcikpOworICAgICAgICBTdHJpbmcgaGVhZGVy
VmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJv
dGVjdGlvbkhlYWRlcik7CisgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNTUHJvdGVj
dGlvbkhlYWRlcihoZWFkZXJWYWx1ZSk7CisgICAgICAgIGlmIChtX3hzc1Byb3RlY3Rpb24gPT0g
WFNTUHJvdGVjdGlvbkludmFsaWQpIHsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBoZWFkZXI6IFgt
WFNTLVByb3RlY3Rpb246ICIpKSk7CisgICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlICsgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAg
bV94c3NQcm90ZWN0aW9uID0gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7ICAvLyBZb3UncmUgbm90IHR1
cm5pbmcgWFNTQXVkaXRvciBvZmYgdGhhdCBlYXNpbHkuCisgICAgICAgIH0KIAogICAgICAgICBG
b3JtRGF0YSogaHR0cEJvZHkgPSBkb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0
cEJvZHkoKTsKICAgICAgICAgaWYgKGh0dHBCb2R5ICYmICFodHRwQm9keS0+aXNFbXB0eSgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcAkocmV2aXNpb24gMTMyNjc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDM0ICs0MywzOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIHRydWUgaWYgdGhl
cmUgaXMgbW9yZSB0byBwYXJzZQorLy8gdHJ1ZSBpZiB0aGVyZSBpcyBtb3JlIHRvIHBhcnNlLCBh
ZnRlciBpbmNyZW1lbnRpbmcgcG9zIHBhc3Qgd2hpdGVzcGFjZS4KKy8vIE5vdGU6IE1pZ2h0IHJl
dHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2tpcFdoaXRlU3Bh
Y2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGJvb2wgZnJvbUh0dHBFcXVpdk1l
dGEpCiB7CiAgICAgdW5zaWduZWQgbGVuID0gc3RyLmxlbmd0aCgpOwogCiAgICAgaWYgKGZyb21I
dHRwRXF1aXZNZXRhKSB7Ci0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuICYmIHN0cltwb3NdIDw9
ICcgJykKKyAgICAgICAgd2hpbGUgKHBvcyA8IGxlbiAmJiBzdHJbcG9zXSA8PSAnICcpCiAgICAg
ICAgICAgICArK3BvczsKICAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAocG9zICE9IGxlbiAm
JiAoc3RyW3Bvc10gPT0gJ1x0JyB8fCBzdHJbcG9zXSA9PSAnICcpKQorICAgICAgICB3aGlsZSAo
cG9zIDwgbGVuICYmIChzdHJbcG9zXSA9PSAnXHQnIHx8IHN0cltwb3NdID09ICcgJykpCiAgICAg
ICAgICAgICArK3BvczsKICAgICB9CiAKICAgICByZXR1cm4gcG9zICE9IGxlbjsKIH0KIAotLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBmdW5jdGlvbiBjYW4gbWF0Y2ggdGhlIHdob2xlIHRva2VuIChj
YXNlIGluc2Vuc2l0aXZlKS4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24gY2FuIG1h
dGNoIHRoZSB3aG9sZSB0b2tlbiAoY2FzZSBpbnNlbnNpdGl2ZSkKKy8vIGluY3JlbWVudGluZyBw
b3Mgb24gbWF0Y2gsIG90aGVyd2lzZSBsZWF2aW5nIHBvcyB1bmNoYW5nZWQuCiAvLyBOb3RlOiBN
aWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQogc3RhdGljIGlubGluZSBib29sIHNraXBU
b2tlbihjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29uc3QgY2hhciogdG9rZW4p
CiB7CiAgICAgdW5zaWduZWQgbGVuID0gc3RyLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGN1cnJl
bnQgPSBwb3M7CiAKLSAgICB3aGlsZSAocG9zICE9IGxlbiAmJiAqdG9rZW4pIHsKLSAgICAgICAg
aWYgKHRvQVNDSUlMb3dlcihzdHJbcG9zXSkgIT0gKnRva2VuKyspCisgICAgd2hpbGUgKGN1cnJl
bnQgPCBsZW4gJiYgKnRva2VuKSB7CisgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoc3RyW2N1cnJl
bnRdKSAhPSAqdG9rZW4rKykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgKytw
b3M7CisgICAgICAgICsrY3VycmVudDsKICAgICB9CiAKKyAgICBwb3MgPSBjdXJyZW50OwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zMTUsMjkgKzMxOSwzNyBAQCB2b2lkIGZpbmRDaGFyc2V0
SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nCiAKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJz
ZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7Ci0gICAgU3RyaW5n
IHN0aXBwZWRIZWFkZXIgPSBoZWFkZXIuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgU3RyaW5nIHN0
cmlwcGVkSGVhZGVyID0gaGVhZGVyLnN0cmlwV2hpdGVTcGFjZSgpOwogCi0gICAgaWYgKHN0aXBw
ZWRIZWFkZXIuaXNFbXB0eSgpKQorICAgIGlmIChzdHJpcHBlZEhlYWRlci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxlZDsKIAotICAgIGlmIChzdGlwcGVkSGVh
ZGVyWzBdID09ICcwJykKKyAgICBpZiAoc3RyaXBwZWRIZWFkZXJbMF0gPT0gJzAnKQogICAgICAg
ICByZXR1cm4gWFNTUHJvdGVjdGlvbkRpc2FibGVkOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
aGVhZGVyLmxlbmd0aCgpOwotICAgIHVuc2lnbmVkIHBvcyA9IDA7Ci0gICAgaWYgKHN0aXBwZWRI
ZWFkZXJbcG9zKytdID09ICcxJwotICAgICAgICAmJiBza2lwV2hpdGVTcGFjZShzdGlwcGVkSGVh
ZGVyLCBwb3MsIGZhbHNlKQotICAgICAgICAmJiBzdGlwcGVkSGVhZGVyW3BvcysrXSA9PSAnOycK
LSAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2Uoc3RpcHBlZEhlYWRlciwgcG9zLCBmYWxzZSkKLSAg
ICAgICAgJiYgc2tpcFRva2VuKHN0aXBwZWRIZWFkZXIsIHBvcywgIm1vZGUiKQotICAgICAgICAm
JiBza2lwV2hpdGVTcGFjZShzdGlwcGVkSGVhZGVyLCBwb3MsIGZhbHNlKQotICAgICAgICAmJiBz
dGlwcGVkSGVhZGVyW3BvcysrXSA9PSAnPScKLSAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2Uoc3Rp
cHBlZEhlYWRlciwgcG9zLCBmYWxzZSkKLSAgICAgICAgJiYgc2tpcFRva2VuKHN0aXBwZWRIZWFk
ZXIsIHBvcywgImJsb2NrIikKLSAgICAgICAgJiYgcG9zID09IGxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQ7CisgICAgaWYgKHN0cmlwcGVkSGVhZGVyWzBd
ICE9ICcxJykKKyAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworCisgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaXBwZWRIZWFkZXIubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgcG9z
ID0gMTsKKyAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKHN0cmlwcGVkSGVhZGVyLCBwb3MsIGZhbHNl
KSkKKyAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25FbmFibGVkOworCisgICAgaWYgKCFzdHJp
cHBlZEhlYWRlcltwb3MrK10gPT0gJzsnKQorICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbklu
dmFsaWQ7CisKKyAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKHN0cmlwcGVkSGVhZGVyLCBwb3MsIGZh
bHNlKSkKKyAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25FbmFibGVkOworCisgICAgaWYgKCEo
c2tpcFRva2VuKHN0cmlwcGVkSGVhZGVyLCBwb3MsICJtb2RlIikKKyAgICAgICAgICAmJiBza2lw
V2hpdGVTcGFjZShzdHJpcHBlZEhlYWRlciwgcG9zLCBmYWxzZSkKKyAgICAgICAgICAmJiBzdHJp
cHBlZEhlYWRlcltwb3MrK10gPT0gJz0nCisgICAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2Uoc3Ry
aXBwZWRIZWFkZXIsIHBvcywgZmFsc2UpCisgICAgICAgICAgJiYgc2tpcFRva2VuKHN0cmlwcGVk
SGVhZGVyLCBwb3MsICJibG9jayIpCisgICAgICAgICAgJiYgcG9zID09IGxlbmd0aCkpCisgICAg
ICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKIAotICAgIHJldHVybiBYU1NQcm90ZWN0
aW9uRW5hYmxlZDsKKyAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZDsKIH0KIAog
U3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5n
JiBzdGF0dXNMaW5lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuaAkocmV2aXNpb24gMTMyNjc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAogZW51
bSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24geworICAgIFhTU1Byb3RlY3Rpb25JbnZhbGlkLAog
ICAgIFhTU1Byb3RlY3Rpb25EaXNhYmxlZCwKICAgICBYU1NQcm90ZWN0aW9uRW5hYmxlZCwKICAg
ICBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMzI2NzQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEludmFsaWQgaGVhZGVy
OiBYLVhTUy1Qcm90ZWN0aW9uOiAxMjM0NTY3ODkwMTIzNDU2NwogQ09OU09MRSBNRVNTQUdFOiBS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2Ny
aXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgogCi1UaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVBy
b3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBpdHMgdmFs
dWUgZXhjZWVkcyAxNiBjaGFyYWN0ZXJzLgorVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBp
dHMgdmFsdWUgZXhjZWVkcyAxNiBjaGFyYWN0ZXJzLCBhbmQgdGhhdCBhbiBlcnJvciBpcyByZXBv
cnRlZC4KIAogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTMyNjc0KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQCBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cD5UaGlzIHRlc3RzIHRo
YXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxl
bmd0aCBvZiBpdHMgdmFsdWUgZXhjZWVkcyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjczMTIjYzEzIj4xNiBjaGFyYWN0ZXJzLjwvYT48L3A+Ci08aWZy
YW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRD
YWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlE
b25lPTEmY3VzdG9tLWhlYWRlcj1YLVhTUy1Qcm90ZWN0aW9uOiAxMjM0NTY3ODkwMTIzNDU2NyZx
PTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9zY3Jp
cHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0
aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIG1hbGZvcm1l
ZCBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZSBsZW5ndGgg
b2YgaXRzIHZhbHVlIGV4Y2VlZHMgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MzEyI2MxMyI+MTYgY2hhcmFjdGVycywgYW5kIHRoYXQgYW4gZXJyb3Ig
aXMgcmVwb3J0ZWQuPC9hPjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZG
cmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycp
IiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTEmcT08c2Ny
aXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0Pjxw
PklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0
aGUgdGVzdCBQQVNTRUQuPC9wPiI+CiA8L2lmcmFtZT4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGwJKHJldmlzaW9uIDEzMjY3
NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJj
ZXMvZWNoby1pbnRlcnRhZy5wbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNyArNCwyNiBAQCB1c2Ug
Q0dJOwogCiBteSAkY2dpID0gbmV3IENHSTsKIAotaWYgKCRjZ2ktPnBhcmFtKCdlbmFibGUtZnVs
bC1ibG9jaycpKSB7Ci0gICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2tc
biI7Ci19CisjIFBhc3Npbmcgc2VtaWNvbG9ucyB0aHJvdWdoIHRoZSB1cmwgdG8gdGhpcyBzY3Jp
cHQgaXMgcHJvYmxlbWF0aWMuIFRoZSByYXcKKyMgZm9ybSB0cnVuY2F0ZXMgdGhlIGlucHV0IGFu
ZCB0aGUgJS1lbmNvZGVkIGZvcm0gaXNuJ3QgYmVpbmcgZGVjb2RlZC4gSGVuY2UKKyMgdGhpcyBz
ZXQgb2YgaGFyZC1jb2RlZCBoZWFkZXJzLiAKIGlmICgkY2dpLT5wYXJhbSgnZGlzYWJsZS1wcm90
ZWN0aW9uJykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMFxuIjsKIH0KK2lmICgk
Y2dpLT5wYXJhbSgnZW5hYmxlLWZ1bGwtYmxvY2snKSkgeworICAgIHByaW50ICJYLVhTUy1Qcm90
ZWN0aW9uOiAxOyBtb2RlPWJsb2NrXG4iOworfQogaWYgKCRjZ2ktPnBhcmFtKCdjcmF6eS1oZWFk
ZXInKSkgewogICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAgIDEgIDtNb0RlID0gIGJMb2NL
ICAgXG4iOwogfQotaWYgKCRjZ2ktPnBhcmFtKCdjdXN0b20taGVhZGVyJykpIHsKLSAgICBwcmlu
dCAkY2dpLT5wYXJhbSgnY3VzdG9tLWhlYWRlcicpIC4gIlxuIjsKK2lmICgkY2dpLT5wYXJhbSgn
bWFsZm9ybWVkLWhlYWRlcicpID09IDEpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjog
MTIzNDU2Nzg5MDEyMzQ1NjdcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFk
ZXInKSA9PSAyKSB7CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IFxuIjsKK30KK2lm
ICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDMpIHsKKyAgICBwcmludCAiWC1Y
U1MtUHJvdGVjdGlvbjogMTsgbW9kZT1wdXJwbGVcbiI7CiB9CiAKIHByaW50ICJDb250ZW50LVR5
cGU6IHRleHQvaHRtbDsgY2hhcnNldD0iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171297</attachid>
            <date>2012-10-29 13:20:43 -0700</date>
            <delta_ts>2012-10-29 13:37:20 -0700</delta_ts>
            <desc>patch + changelogs for landing</desc>
            <filename>patch_100538.txt</filename>
            <type>text/plain</type>
            <size>30319</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTI5ICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorICAgICAgICAKKyAgICAgICAgTWFsZm9ybWVkIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVycyBub3QgcmVwb3J0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS13cml0ZXMgWC1YU1MtUHJvdGVjdGlvbiBo
ZWFkZXIgcGFyc2VyIHRvIGJlIG1vcmUgcGFydGljdWxhciwgYW5kIHRvCisgICAgICAgIHJldHVy
biBiZXR0ZXIgaW5mb3JtYXRpb24gb24gZXJyb3IuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3Mt
cHJvdGVjdGlvbi1wYXJzaW5nLTAyLmh0bWwKKworICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aW5pdCk6CisgICAgICAg
IERldGVjdCBlcnJvciByZXR1cm4gY29kZSBhbmQgbG9nIGNvbnNvbGUgbWVzc2FnZSB3aXRoIGRl
dGFpbHMKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFdoaXRlU3BhY2UpOgorICAgICAg
ICBVc2Ugc2FmZSBsZXNzLXRoYW4gY29tcGFyc2lvbiBpbiBjYXNlIGNhbGxlZCB3aXRoIHBvcyBh
bHJlYWR5IG91dCBvZiByYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBUb2tlbik6CisgICAg
ICAgIEZpeCBjb21wYXJpc29uIHRvIHByb3Blcmx5IHJlamVjdCBzdWJzdHJpbmdzIGF0IGVuZCBv
ZiBpbnB1dC4gIFByZXZlbnQgYWR2YW5jaW5nCisgICAgICAgIHJldHVybmVkIHBvc2l0aW9uIHdo
ZW4gbWF0Y2ggZmFpbHMsIHNvIHRoYXQgdGhpcyBtYXkgc29tZWRheSBiZSB1c2VkIHRvIG1hdGNo
CisgICAgICAgIG9wdGlvbmFsIHRva2Vucy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlWFNTUHJv
dGVjdGlvbkhlYWRlcik6CisgICAgICAgIFJldHVybiBkZXRhaWxsZWQgZXJyb3Igc3RhdHVzLiBB
dm9pZCBuZWVkbGVzcyBzdHJpbmcgY29weS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmg6CisgICAgICAgIEFkZCBuZXcgZXJyb3IgcmV0dXJucyBmb3IgeC14c3MtcHJv
dGVjdGlvbiBoZWFkZXIgcGFyc2VyLgorICAgICAgICAKIDIwMTItMTAtMjkgIEdsZW5uIEFkYW1z
ICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAgICBbQ1NTT01dIEV4dHJhbmVvdXMgd2hpdGVz
cGFjZSBpbiBDU1NJbXBvcnRSdWxlLmNzc1RleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiAxMzI2NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIx
NiwxNiBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoKQogCiAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IG1fcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIp
KSk7Ci0gICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihk
b2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhl
YWRlcikpOworICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgICAgIFN0
cmluZyBlcnJvckRldGFpbHM7CisgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNTUHJv
dGVjdGlvbkhlYWRlcihoZWFkZXJWYWx1ZSwgZXJyb3JEZXRhaWxzKTsKKyAgICAgICAgaWYgKG1f
eHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uSW52YWxpZCkgeworICAgICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlU3RhcnQsIChBU0NJSUxpdGVy
YWwoIkVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246ICIpKSk7CisgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3Is
IChBU0NJSUxpdGVyYWwoIjogIikpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZUVuZCwgKEFTQ0lJTGl0ZXJhbCgiLiBUaGUgZGVmYXVsdCBw
cm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQuIikpKTsKKyAgICAgICAgICAgIG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2VTdGFydCArIGhlYWRlclZhbHVl
ICsgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3IgKyBlcnJvckRldGFpbHMgKyBjb25zb2xlTWVzc2Fn
ZUVuZCk7CisgICAgICAgICAgICBtX3hzc1Byb3RlY3Rpb24gPSBYU1NQcm90ZWN0aW9uRW5hYmxl
ZDsKKyAgICAgICAgfQogCiAgICAgICAgIEZvcm1EYXRhKiBodHRwQm9keSA9IGRvY3VtZW50TG9h
ZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOwogICAgICAgICBpZiAoaHR0cEJvZHkg
JiYgIWh0dHBCb2R5LT5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiAxMzI2NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsMzQgKzQzLDQxIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gdHJ1ZSBpZiB0aGVyZSBpcyBtb3JlIHRvIHBhcnNlCisvLyB0cnVlIGlm
IHRoZXJlIGlzIG1vcmUgdG8gcGFyc2UsIGFmdGVyIGluY3JlbWVudGluZyBwb3MgcGFzdCB3aGl0
ZXNwYWNlLgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKIHN0YXRp
YyBpbmxpbmUgYm9vbCBza2lwV2hpdGVTcGFjZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQm
IHBvcywgYm9vbCBmcm9tSHR0cEVxdWl2TWV0YSkKIHsKICAgICB1bnNpZ25lZCBsZW4gPSBzdHIu
bGVuZ3RoKCk7CiAKICAgICBpZiAoZnJvbUh0dHBFcXVpdk1ldGEpIHsKLSAgICAgICAgd2hpbGUg
KHBvcyAhPSBsZW4gJiYgc3RyW3Bvc10gPD0gJyAnKQorICAgICAgICB3aGlsZSAocG9zIDwgbGVu
ICYmIHN0cltwb3NdIDw9ICcgJykKICAgICAgICAgICAgICsrcG9zOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHdoaWxlIChwb3MgIT0gbGVuICYmIChzdHJbcG9zXSA9PSAnXHQnIHx8IHN0cltwb3Nd
ID09ICcgJykpCisgICAgICAgIHdoaWxlIChwb3MgPCBsZW4gJiYgKHN0cltwb3NdID09ICdcdCcg
fHwgc3RyW3Bvc10gPT0gJyAnKSkKICAgICAgICAgICAgICsrcG9zOwogICAgIH0KIAotICAgIHJl
dHVybiBwb3MgIT0gbGVuOworICAgIHJldHVybiBwb3MgPCBsZW47CiB9CiAKLS8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgZnVuY3Rpb24gY2FuIG1hdGNoIHRoZSB3aG9sZSB0b2tlbiAoY2FzZSBpbnNl
bnNpdGl2ZSkuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBtYXRjaCB0aGUg
d2hvbGUgdG9rZW4gKGNhc2UgaW5zZW5zaXRpdmUpCisvLyBpbmNyZW1lbnRpbmcgcG9zIG9uIG1h
dGNoLCBvdGhlcndpc2UgbGVhdmluZyBwb3MgdW5jaGFuZ2VkLgogLy8gTm90ZTogTWlnaHQgcmV0
dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKIHN0YXRpYyBpbmxpbmUgYm9vbCBza2lwVG9rZW4oY29u
c3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAg
IHVuc2lnbmVkIGxlbiA9IHN0ci5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBjdXJyZW50ID0gcG9z
OwogCi0gICAgd2hpbGUgKHBvcyAhPSBsZW4gJiYgKnRva2VuKSB7Ci0gICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoc3RyW3Bvc10pICE9ICp0b2tlbisrKQorICAgIHdoaWxlIChjdXJyZW50IDwgbGVu
ICYmICp0b2tlbikgeworICAgICAgICBpZiAodG9BU0NJSUxvd2VyKHN0cltjdXJyZW50XSkgIT0g
KnRva2VuKyspCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICsrcG9zOworICAg
ICAgICArK2N1cnJlbnQ7CiAgICAgfQogCisgICAgaWYgKCp0b2tlbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcG9zID0gY3VycmVudDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzEzLDMxICszMjAsNTIgQEAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZwogICAgIH0KIH0KIAotWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlv
bkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBw
YXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbikKIHsKLSAgICBTdHJpbmcgc3RpcHBlZEhlYWRlciA9IGhlYWRlci5zdHJpcFdo
aXRlU3BhY2UoKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNv
bkludmFsaWRUb2dnbGUsIChBU0NJSUxpdGVyYWwoImZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIg
bXVzdCBiZSAwIG9yIDEiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWls
dXJlUmVhc29uSW52YWxpZFNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2VtaWNv
bG9uIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbklu
dmFsaWRNb2RlLCAoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRFeHRyYSwg
KEFTQ0lJTGl0ZXJhbCgiZXh0cmEgY2hhcmFjdGVycyBmb2xsb3cgdmFsaWQgaGVhZGVyIikpKTsK
IAotICAgIGlmIChzdGlwcGVkSGVhZGVyLmlzRW1wdHkoKSkKKyAgICB1bnNpZ25lZCBwb3MgPSAw
OworCisgICAgaWYgKCFza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpKQogICAgICAg
ICByZXR1cm4gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CiAKLSAgICBpZiAoc3RpcHBlZEhlYWRlclsw
XSA9PSAnMCcpCisgICAgaWYgKGhlYWRlcltwb3NdID09ICcwJykKICAgICAgICAgcmV0dXJuIFhT
U1Byb3RlY3Rpb25EaXNhYmxlZDsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGhlYWRlci5sZW5n
dGgoKTsKLSAgICB1bnNpZ25lZCBwb3MgPSAwOwotICAgIGlmIChzdGlwcGVkSGVhZGVyW3Bvcysr
XSA9PSAnMScKLSAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2Uoc3RpcHBlZEhlYWRlciwgcG9zLCBm
YWxzZSkKLSAgICAgICAgJiYgc3RpcHBlZEhlYWRlcltwb3MrK10gPT0gJzsnCi0gICAgICAgICYm
IHNraXBXaGl0ZVNwYWNlKHN0aXBwZWRIZWFkZXIsIHBvcywgZmFsc2UpCi0gICAgICAgICYmIHNr
aXBUb2tlbihzdGlwcGVkSGVhZGVyLCBwb3MsICJtb2RlIikKLSAgICAgICAgJiYgc2tpcFdoaXRl
U3BhY2Uoc3RpcHBlZEhlYWRlciwgcG9zLCBmYWxzZSkKLSAgICAgICAgJiYgc3RpcHBlZEhlYWRl
cltwb3MrK10gPT0gJz0nCi0gICAgICAgICYmIHNraXBXaGl0ZVNwYWNlKHN0aXBwZWRIZWFkZXIs
IHBvcywgZmFsc2UpCi0gICAgICAgICYmIHNraXBUb2tlbihzdGlwcGVkSGVhZGVyLCBwb3MsICJi
bG9jayIpCi0gICAgICAgICYmIHBvcyA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBYU1NQcm90
ZWN0aW9uQmxvY2tFbmFibGVkOworICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICcxJykgeworICAg
ICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRUb2dnbGU7CisgICAgICAg
IHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICB9CisKKyAgICBpZiAoIXNraXBXaGl0
ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9u
RW5hYmxlZDsKKworICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICc7JykgeworICAgICAgICBmYWls
dXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3I7CisgICAgICAgIHJldHVy
biBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICB9CisKKyAgICBpZiAoIXNraXBXaGl0ZVNwYWNl
KGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxl
ZDsKKworICAgIGlmICghKHNraXBUb2tlbihoZWFkZXIsIHBvcywgIm1vZGUiKQorICAgICAgICAg
ICYmIHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkKKyAgICAgICAgICAmJiBoZWFk
ZXJbcG9zKytdID09ICc9JworICAgICAgICAgICYmIHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9z
LCBmYWxzZSkKKyAgICAgICAgICAmJiBza2lwVG9rZW4oaGVhZGVyLCBwb3MsICJibG9jayIpKSkg
eworICAgICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRNb2RlOworICAg
ICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CisgICAgfQorCisgICAgaWYgKHNraXBX
aGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpIHsKKyAgICAgICAgZmFpbHVyZVJlYXNvbiA9
IGZhaWx1cmVSZWFzb25JbnZhbGlkRXh0cmE7CisgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9u
SW52YWxpZDsKKyAgICB9CiAKLSAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CisgICAg
cmV0dXJuIFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQ7CiB9CiAKIFN0cmluZyBleHRyYWN0UmVh
c29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJl
dmlzaW9uIDEzMjY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIVFRQSGVhZGVy
TWFwOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKIGVudW0gWFNTUHJvdGVjdGlvbkRp
c3Bvc2l0aW9uIHsKKyAgICBYU1NQcm90ZWN0aW9uSW52YWxpZCwKICAgICBYU1NQcm90ZWN0aW9u
RGlzYWJsZWQsCiAgICAgWFNTUHJvdGVjdGlvbkVuYWJsZWQsCiAgICAgWFNTUHJvdGVjdGlvbkJs
b2NrRW5hYmxlZApAQCAtNjAsNyArNjEsNyBAQCBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRl
bnREaXNwb3NpdGlvCiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb25zdCBT
dHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5n
Jik7IAogdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
LCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVkIGludCYgY2hhcnNldExlbiwgdW5z
aWduZWQgaW50IHN0YXJ0ID0gMCk7Ci1YU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFyc2VYU1NQ
cm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYpOworWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9u
IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBm
YWlsdXJlUmVhc29uKTsKIFN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNM
aW5lKGNvbnN0IFN0cmluZyYpOwogCiAvLyAtMSBjb3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBy
ZXR1cm4gcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgaXMgbm90IHNwZWNpZmllZC4K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzMjgzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTI5ICBUb20gU2VwZXogIDx0c2Vw
ZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hbGZvcm1lZCBYLVhTUy1Qcm90ZWN0aW9uIGhl
YWRlcnMgbm90IHJlcG9ydGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRl
ci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEuaHRtbDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXIuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3RlZC0xLnR4dDogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQudHh0LgorICAgICAgICByZW5hbWVk
IHRvIC0xIHRvIG1hdGNoIGNvbnZlbnRpb24uCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxm
b3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFk
ZXItMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVy
LTQuaHRtbDogQWRkZWQuCisgICAgICAgIE5ldyB0ZXN0IHRvIGNvdmVyIG5ldyBlcnJvciBtZXNz
YWdlIGNhc2VzLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNv
dXJjZXMvZWNoby1pbnRlcnRhZy5wbDoKKyAgICAgICAgQWRkZWQgbW9yZSB4LXhzcy1wcm90ZWN0
aW9uIGhlYWRlciB2YWx1ZXMgdG8gaXRzIHNldCBvZiB2YWx1ZXMuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDEuaHRtbDoK
KyAgICAgICAgQ29udmVydGVkIGZvciBpbnRlcmZhY2UgY2hhbmdlIHRvIGVjaG9faW50ZXJ0YWcu
cGwKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rp
b24tcGFyc2luZy0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAyLmh0bWw6IEFkZGVk
LgorICAgICAgICBOZXcgdGVzdCBmb3IgdGVzdGluZyB4LXhzcy1wcm90ZWN0OiAwOyAoYWxsb3cg
dHJhaWxpbmcgc2VtaWNvbG9uKS4KKyAgICAgICAgCiAyMDEyLTEwLTI5ICBHbGVubiBBZGFtcyAg
PGdsZW5uQHNreW5hdi5jb20+CiAgICAgICAgCiAgICAgICAgIFtDU1NPTV0gRXh0cmFuZW91cyB3
aGl0ZXNwYWNlIGluIENTU0ltcG9ydFJ1bGUuY3NzVGV4dApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFk
ZXItMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEuaHRtbAkocmV2aXNp
b24gMTMyNjc0KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci5odG1sOjEzMjY3NCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3Rl
Y3Rpb24taGVhZGVyLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0
b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hl
biB0aGUgbGVuZ3RoIG9mIGl0cyB2YWx1ZSBleGNlZWRzIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzMxMiNjMTMiPjE2IGNoYXJhY3RlcnMuPC9hPjwv
cD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hl
c1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBs
P25vdGlmeURvbmU9MSZjdXN0b20taGVhZGVyPVgtWFNTLVByb3RlY3Rpb246IDEyMzQ1Njc4OTAx
MjM0NTY3JnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUz
KSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBh
bGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
bWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0xLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXItMS5odG1sCShyZXZpc2lvbiAxMzI2NzQpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhl
YWRlci0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHA+VGhpcyB0ZXN0cyB0
aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZSBs
ZW5ndGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3MzEyI2MxMyI+MTYgY2hhcmFjdGVycy48L2E+PC9wPgotPGlm
cmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5k
Q2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5
RG9uZT0xJmN1c3RvbS1oZWFkZXI9WC1YU1MtUHJvdGVjdGlvbjogMTIzNDU2Nzg5MDEyMzQ1Njcm
cT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2Ny
aXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkg
dGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3Jt
ZWQgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGUgbGVuZ3Ro
IG9mIGl0cyB2YWx1ZSBleGNlZWRzIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzMxMiNjMTMiPjE2IGNoYXJhY3RlcnMsIGFuZCB0aGF0IGFuIGVycm9y
IGlzIHJlcG9ydGVkLjwvYT48L3A+Cis8aWZyYW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lm
RnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6Ymxhbmsn
KSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJj
ZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEmbWFsZm9ybWVkLWhlYWRlcj0xJnE9PHNj
cmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48
cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4g
dGhlIHRlc3QgUEFTU0VELjwvcD4iPgogPC9pZnJhbWU+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhz
cy1wcm90ZWN0aW9uLWhlYWRlci0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0
aW9uLWhlYWRlci0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xF
IE1FU1NBR0U6IEVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246IHJlZDogZmly
c3Qgbm9uLWJsYW5rIGNoYXJhY3RlciBtdXN0IGJlIDAgb3IgMS4gVGhlIGRlZmF1bHQgcHJvdGVj
dGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVy
IGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBub3QgMCBvciAxLCBh
bmQgdGhhdCB3ZSBpc3N1ZSBhbiBlcnJvci4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1l
JworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFs
ZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0yLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXItMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhT
U0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
PlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9y
ZWQgd2hlbiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCAwIG9yIDEsIGFuZCB0aGF0IHdlIGlz
c3VlIGFuIGVycm9yLjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFt
ZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBz
cmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9l
Y2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTImcT08c2NyaXB0
PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklm
IHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUg
dGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXBy
b3RlY3Rpb24taGVhZGVyLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24t
aGVhZGVyLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIt
My1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVT
U0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1wdXJw
bGU6IGludmFsaWQgbW9kZSBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwg
YmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNj
cmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4K
KworVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlz
IG5vdCBpZ25vcmVkIGFuZCBhbiBlcnJvciBpcyByZXBvcnRlZCB3aGVuIHRoZSBtb2RlPSB0b2tl
biBpcyBpbnZhbGlkLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCistLS0tLS0tLQor
SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRo
ZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVk
LXhzcy1wcm90ZWN0aW9uLWhlYWRlci0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9u
LWhlYWRlci0zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0WFNTQXVkaXRvckVuYWJs
ZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0
aGF0IGEgbWFsZm9ybWVkIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIGFu
ZCBhbiBlcnJvciBpcyByZXBvcnRlZCB3aGVuIHRoZSBtb2RlPSB0b2tlbiBpcyBpbnZhbGlkLjwv
cD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hl
c1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBs
P25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTMmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5m
cm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBt
ZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9w
PiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVy
LTQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFy
c2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jay1hLWJsb2NrLWJsb2Nr
OiBleHRyYSBjaGFyYWN0ZXJzIGZvbGxvdyB2YWxpZCBoZWFkZXIuIFRoZSBkZWZhdWx0IHByb3Rl
Y3Rpb25zIHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRl
ciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgZ2FyYmFnZSBhZnRlciBt
b2RlPWJsb2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3IKKworCisKKy0tLS0tLS0tCitGcmFtZTog
J2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2Ny
aXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRl
ci00Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90
IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhIHRyYWlsaW5nIGdhcmJhZ2UgYWZ0ZXIgbW9kZT1ibG9j
aywgYW5kIHdlIGlzc3VlIGFuIGVycm9yPC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0i
Y2hlY2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0
OmJsYW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJm1hbGZvcm1lZC1oZWFkZXI9
NCZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9z
Y3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQo
KSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQtMC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQtMC50eHQJKHJldmlzaW9uIDEzMjY3NCkJKGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQudHh0OjEzMjY3NCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLWV4cGVjdGVkLTAudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0NPTlNP
TEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJj
ZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0
IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZSBsZW5n
dGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMgMTYgY2hhcmFjdGVycy4KKworCisKKy0tLS0tLS0tCitG
cmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBK
YXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9u
LWhlYWRlci1leHBlY3RlZC0wLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1l
eHBlY3RlZC0wLnR4dAkocmV2aXNpb24gMTMyNjc0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhw
ZWN0ZWQtMC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACitDT05TT0xFIE1FU1NB
R0U6IElnbm9yaW5nIGludmFsaWQgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgd2l0aCB2YWx1ZTog
MTIzNDU2Nzg5MDEyMzQ1NjcuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUgYXBwbGll
ZC4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3Jp
cHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KIAotVGhpcyB0
ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVu
IHRoZSBsZW5ndGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMgMTYgY2hhcmFjdGVycy4KK1RoaXMgdGVz
dHMgdGhhdCBhIG1hbGZvcm1lZCBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3Jl
ZCB3aGVuIHRoZSBsZW5ndGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMgMTYgY2hhcmFjdGVycywgYW5k
IHRoYXQgYW4gZXJyb3IgaXMgcmVwb3J0ZWQuCiAKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRl
ci1leHBlY3RlZC0xLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3Rl
ZC0xLnR4dAkocmV2aXNpb24gMTMyNjc0KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3Rl
ZC50eHQ6MTMyNjc0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQtMS50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4
ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdp
dGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVh
ZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBpdHMgdmFsdWUgZXhjZWVkcyAx
NiBjaGFyYWN0ZXJzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCistLS0tLS0tLQor
SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRo
ZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLTEudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9t
YWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLTEudHh0CShyZXZpc2lvbiAx
MzI2NzQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFs
Zm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3RlZC0xLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogSWdub3JpbmcgaW52YWxpZCBYLVhT
Uy1Qcm90ZWN0aW9uIGhlYWRlciB3aXRoIHZhbHVlOiAxMjM0NTY3ODkwMTIzNDU2Ny4gVGhlIGRl
ZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1
c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0
IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgogCi1UaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3Rl
Y3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBpdHMgdmFsdWUg
ZXhjZWVkcyAxNiBjaGFyYWN0ZXJzLgorVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIFgtWFNT
LVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBpdHMg
dmFsdWUgZXhjZWVkcyAxNiBjaGFyYWN0ZXJzLCBhbmQgdGhhdCBhbiBlcnJvciBpcyByZXBvcnRl
ZC4KIAogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVk
LXhzcy1wcm90ZWN0aW9uLWhlYWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMjY3NCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQg
c2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCi0KLVRo
aXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQg
d2hlbiB0aGUgbGVuZ3RoIG9mIGl0cyB2YWx1ZSBleGNlZWRzIDE2IGNoYXJhY3RlcnMuCi0KLQot
Ci0tLS0tLS0tLQotRnJhbWU6ICdmcmFtZScKLS0tLS0tLS0tCi1JZiB5b3Ugc2VlIHRoaXMgbWVz
c2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRl
ci5odG1sCShyZXZpc2lvbiAxMzI2NzQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRv
ci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgIHRlc3RSdW5uZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Ci19Ci08L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90
ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZSBsZW5ndGggb2YgaXRzIHZhbHVl
IGV4Y2VlZHMgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3MzEyI2MxMyI+MTYgY2hhcmFjdGVycy48L2E+PC9wPgotPGlmcmFtZSBpZD0iZnJhbWUiIG9u
bG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywg
J2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJmN1c3RvbS1oZWFk
ZXI9WC1YU1MtUHJvdGVjdGlvbjogMTIzNDU2Nzg5MDEyMzQ1NjcmcT08c2NyaXB0PmFsZXJ0KFN0
cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUg
dGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNT
RUQuPC9wPiI+Ci08L2lmcmFtZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAx
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDEuaHRtbAkocmV2aXNpb24gMTMyNjc0KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0
aW9uLXBhcnNpbmctMDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBmdW5j
dGlvbiBkb25lKCkKIH0KIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiB7Ci0gICAgc2VuZFJl
cXVlc3RGcm9tSUZyYW1lKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRv
ci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbCIsImNyYXp5LWhlYWRlcj0xJnE9PHNjcmlwdD5h
bGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8XC9zY3JpcHQ+IiwiUE9T
VCIsIGRvbmUpOworICAgIHNlbmRSZXF1ZXN0RnJvbUlGcmFtZSgiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGwiLCJ2YWxp
ZC1oZWFkZXI9MSZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMs
MHg1MykpPFwvc2NyaXB0PiIsIlBPU1QiLCBkb25lKTsKIH07CiA8L3NjcmlwdD4KIDwvaGVhZD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJv
dGVjdGlvbi1wYXJzaW5nLTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0w
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0
byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3Vu
ZCB3aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9u
IGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgc2VtaWNvbG9u
LiBBbHRob3VnaCB0aGVvcmV0aWNhbGx5IG1hbGZvcm1lZCwgd2UgdG9sZXJhdGUgdGhpcyBjYXNl
IHdpdGhvdXQgaXNzdWluZyBhbiBlcnJvci4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1l
JworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFs
ZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3Mt
cHJvdGVjdGlvbi1wYXJzaW5nLTAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1Y
U1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhIHRyYWls
aW5nIHNlbWljb2xvbi4KK0FsdGhvdWdoIHRoZW9yZXRpY2FsbHkgbWFsZm9ybWVkLCB3ZSB0b2xl
cmF0ZSB0aGlzIGNhc2Ugd2l0aG91dCBpc3N1aW5nIGFuIGVycm9yLiA8L3A+Cis8aWZyYW1lIGlk
PSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9u
ZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEm
dmFsaWQtaGVhZGVyPTImcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCww
eDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZh
U2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0
YWcucGwJKHJldmlzaW9uIDEzMjY3NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbAkod29ya2luZyBjb3B5KQpA
QCAtNCwxNyArNCwzMiBAQCB1c2UgQ0dJOwogCiBteSAkY2dpID0gbmV3IENHSTsKIAotaWYgKCRj
Z2ktPnBhcmFtKCdlbmFibGUtZnVsbC1ibG9jaycpKSB7Ci0gICAgcHJpbnQgIlgtWFNTLVByb3Rl
Y3Rpb246IDE7IG1vZGU9YmxvY2tcbiI7Ci19CisjIFBhc3Npbmcgc2VtaWNvbG9ucyB0aHJvdWdo
IHRoZSB1cmwgdG8gdGhpcyBzY3JpcHQgaXMgcHJvYmxlbWF0aWMuIFRoZSByYXcKKyMgZm9ybSB0
cnVuY2F0ZXMgdGhlIGlucHV0IGFuZCB0aGUgJS1lbmNvZGVkIGZvcm0gaXNuJ3QgYmVpbmcgZGVj
b2RlZC4gSGVuY2UKKyMgdGhpcyBzZXQgb2YgaGFyZC1jb2RlZCBoZWFkZXJzLiAKIGlmICgkY2dp
LT5wYXJhbSgnZGlzYWJsZS1wcm90ZWN0aW9uJykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVj
dGlvbjogMFxuIjsKIH0KLWlmICgkY2dpLT5wYXJhbSgnY3JhenktaGVhZGVyJykpIHsKK2lmICgk
Y2dpLT5wYXJhbSgnZW5hYmxlLWZ1bGwtYmxvY2snKSkgeworICAgIHByaW50ICJYLVhTUy1Qcm90
ZWN0aW9uOiAxOyBtb2RlPWJsb2NrXG4iOworfQoraWYgKCRjZ2ktPnBhcmFtKCd2YWxpZC1oZWFk
ZXInKSA9PSAxKSB7CiAgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246ICAgMSAgO01vRGUgPSAg
YkxvY0sgICBcbiI7CiB9Ci1pZiAoJGNnaS0+cGFyYW0oJ2N1c3RvbS1oZWFkZXInKSkgewotICAg
IHByaW50ICRjZ2ktPnBhcmFtKCdjdXN0b20taGVhZGVyJykgLiAiXG4iOworaWYgKCRjZ2ktPnBh
cmFtKCd2YWxpZC1oZWFkZXInKSA9PSAyKSB7CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246
IDE7IFxuIjsKK30KK2lmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDEpIHsK
KyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTIzNDU2Nzg5MDEyMzQ1NjdcbiI7Cit9Citp
ZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSAyKSB7CisgICAgcHJpbnQgIlgt
WFNTLVByb3RlY3Rpb246IHJlZFxuIjsKK30KK2lmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhl
YWRlcicpID09IDMpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1wdXJw
bGVcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA0KSB7Cisg
ICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2stYS1ibG9jay1ibG9ja1xu
IjsKIH0KIAogcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171300</attachid>
            <date>2012-10-29 13:37:20 -0700</date>
            <delta_ts>2012-10-31 13:07:50 -0700</delta_ts>
            <desc>Patch, fix style, add missing file.</desc>
            <filename>patch_100538.txt</filename>
            <type>text/plain</type>
            <size>27730</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTI5ICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorICAgICAgICAKKyAgICAgICAgTWFsZm9ybWVkIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVycyBub3QgcmVwb3J0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS13cml0ZXMgWC1YU1MtUHJvdGVjdGlvbiBo
ZWFkZXIgcGFyc2VyIHRvIGJlIG1vcmUgcGFydGljdWxhciwgYW5kIHRvCisgICAgICAgIHJldHVy
biBiZXR0ZXIgaW5mb3JtYXRpb24gb24gZXJyb3IuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3Mt
cHJvdGVjdGlvbi1wYXJzaW5nLTAyLmh0bWwKKworICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aW5pdCk6CisgICAgICAg
IERldGVjdCBlcnJvciByZXR1cm4gY29kZSBhbmQgbG9nIGNvbnNvbGUgbWVzc2FnZSB3aXRoIGRl
dGFpbHMKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFdoaXRlU3BhY2UpOgorICAgICAg
ICBVc2Ugc2FmZSBsZXNzLXRoYW4gY29tcGFyc2lvbiBpbiBjYXNlIGNhbGxlZCB3aXRoIHBvcyBh
bHJlYWR5IG91dCBvZiByYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OnNraXBUb2tlbik6CisgICAg
ICAgIEZpeCBjb21wYXJpc29uIHRvIHByb3Blcmx5IHJlamVjdCBzdWJzdHJpbmdzIGF0IGVuZCBv
ZiBpbnB1dC4gIFByZXZlbnQgYWR2YW5jaW5nCisgICAgICAgIHJldHVybmVkIHBvc2l0aW9uIHdo
ZW4gbWF0Y2ggZmFpbHMsIHNvIHRoYXQgdGhpcyBtYXkgc29tZWRheSBiZSB1c2VkIHRvIG1hdGNo
CisgICAgICAgIG9wdGlvbmFsIHRva2Vucy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlWFNTUHJv
dGVjdGlvbkhlYWRlcik6CisgICAgICAgIFJldHVybiBkZXRhaWxsZWQgZXJyb3Igc3RhdHVzLiBB
dm9pZCBuZWVkbGVzcyBzdHJpbmcgY29weS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmg6CisgICAgICAgIEFkZCBuZXcgZXJyb3IgcmV0dXJucyBmb3IgeC14c3MtcHJv
dGVjdGlvbiBoZWFkZXIgcGFyc2VyLgorICAgICAgICAKIDIwMTItMTAtMjkgIEdsZW5uIEFkYW1z
ICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAgICBbQ1NTT01dIEV4dHJhbmVvdXMgd2hpdGVz
cGFjZSBpbiBDU1NJbXBvcnRSdWxlLmNzc1RleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiAxMzI2NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIx
NiwxNiBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoKQogCiAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IG1fcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgWFNTUHJvdGVjdGlvbkhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIp
KSk7Ci0gICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihk
b2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhl
YWRlcikpOworICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgICAgIFN0
cmluZyBlcnJvckRldGFpbHM7CisgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNTUHJv
dGVjdGlvbkhlYWRlcihoZWFkZXJWYWx1ZSwgZXJyb3JEZXRhaWxzKTsKKyAgICAgICAgaWYgKG1f
eHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uSW52YWxpZCkgeworICAgICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlU3RhcnQsIChBU0NJSUxpdGVy
YWwoIkVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246ICIpKSk7CisgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3Is
IChBU0NJSUxpdGVyYWwoIjogIikpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZUVuZCwgKEFTQ0lJTGl0ZXJhbCgiLiBUaGUgZGVmYXVsdCBw
cm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQuIikpKTsKKyAgICAgICAgICAgIG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2VTdGFydCArIGhlYWRlclZhbHVl
ICsgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3IgKyBlcnJvckRldGFpbHMgKyBjb25zb2xlTWVzc2Fn
ZUVuZCk7CisgICAgICAgICAgICBtX3hzc1Byb3RlY3Rpb24gPSBYU1NQcm90ZWN0aW9uRW5hYmxl
ZDsKKyAgICAgICAgfQogCiAgICAgICAgIEZvcm1EYXRhKiBodHRwQm9keSA9IGRvY3VtZW50TG9h
ZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOwogICAgICAgICBpZiAoaHR0cEJvZHkg
JiYgIWh0dHBCb2R5LT5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiAxMzI2NzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsMzQgKzQzLDQxIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gdHJ1ZSBpZiB0aGVyZSBpcyBtb3JlIHRvIHBhcnNlCisvLyB0cnVlIGlm
IHRoZXJlIGlzIG1vcmUgdG8gcGFyc2UsIGFmdGVyIGluY3JlbWVudGluZyBwb3MgcGFzdCB3aGl0
ZXNwYWNlLgorLy8gTm90ZTogTWlnaHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKIHN0YXRp
YyBpbmxpbmUgYm9vbCBza2lwV2hpdGVTcGFjZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQm
IHBvcywgYm9vbCBmcm9tSHR0cEVxdWl2TWV0YSkKIHsKICAgICB1bnNpZ25lZCBsZW4gPSBzdHIu
bGVuZ3RoKCk7CiAKICAgICBpZiAoZnJvbUh0dHBFcXVpdk1ldGEpIHsKLSAgICAgICAgd2hpbGUg
KHBvcyAhPSBsZW4gJiYgc3RyW3Bvc10gPD0gJyAnKQorICAgICAgICB3aGlsZSAocG9zIDwgbGVu
ICYmIHN0cltwb3NdIDw9ICcgJykKICAgICAgICAgICAgICsrcG9zOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHdoaWxlIChwb3MgIT0gbGVuICYmIChzdHJbcG9zXSA9PSAnXHQnIHx8IHN0cltwb3Nd
ID09ICcgJykpCisgICAgICAgIHdoaWxlIChwb3MgPCBsZW4gJiYgKHN0cltwb3NdID09ICdcdCcg
fHwgc3RyW3Bvc10gPT0gJyAnKSkKICAgICAgICAgICAgICsrcG9zOwogICAgIH0KIAotICAgIHJl
dHVybiBwb3MgIT0gbGVuOworICAgIHJldHVybiBwb3MgPCBsZW47CiB9CiAKLS8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgZnVuY3Rpb24gY2FuIG1hdGNoIHRoZSB3aG9sZSB0b2tlbiAoY2FzZSBpbnNl
bnNpdGl2ZSkuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZ1bmN0aW9uIGNhbiBtYXRjaCB0aGUg
d2hvbGUgdG9rZW4gKGNhc2UgaW5zZW5zaXRpdmUpCisvLyBpbmNyZW1lbnRpbmcgcG9zIG9uIG1h
dGNoLCBvdGhlcndpc2UgbGVhdmluZyBwb3MgdW5jaGFuZ2VkLgogLy8gTm90ZTogTWlnaHQgcmV0
dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKIHN0YXRpYyBpbmxpbmUgYm9vbCBza2lwVG9rZW4oY29u
c3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAg
IHVuc2lnbmVkIGxlbiA9IHN0ci5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBjdXJyZW50ID0gcG9z
OwogCi0gICAgd2hpbGUgKHBvcyAhPSBsZW4gJiYgKnRva2VuKSB7Ci0gICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoc3RyW3Bvc10pICE9ICp0b2tlbisrKQorICAgIHdoaWxlIChjdXJyZW50IDwgbGVu
ICYmICp0b2tlbikgeworICAgICAgICBpZiAodG9BU0NJSUxvd2VyKHN0cltjdXJyZW50XSkgIT0g
KnRva2VuKyspCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICsrcG9zOworICAg
ICAgICArK2N1cnJlbnQ7CiAgICAgfQogCisgICAgaWYgKCp0b2tlbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcG9zID0gY3VycmVudDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzEzLDMxICszMjAsNTIgQEAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZwogICAgIH0KIH0KIAotWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlv
bkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBw
YXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbikKIHsKLSAgICBTdHJpbmcgc3RpcHBlZEhlYWRlciA9IGhlYWRlci5zdHJpcFdo
aXRlU3BhY2UoKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNv
bkludmFsaWRUb2dnbGUsIChBU0NJSUxpdGVyYWwoImZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIg
bXVzdCBiZSAwIG9yIDEiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWls
dXJlUmVhc29uSW52YWxpZFNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgc2VtaWNv
bG9uIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbklu
dmFsaWRNb2RlLCAoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIG1vZGUgZGlyZWN0aXZlIikpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRFeHRyYSwg
KEFTQ0lJTGl0ZXJhbCgiZXh0cmEgY2hhcmFjdGVycyBmb2xsb3cgdmFsaWQgaGVhZGVyIikpKTsK
IAotICAgIGlmIChzdGlwcGVkSGVhZGVyLmlzRW1wdHkoKSkKKyAgICB1bnNpZ25lZCBwb3MgPSAw
OworCisgICAgaWYgKCFza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpKQogICAgICAg
ICByZXR1cm4gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CiAKLSAgICBpZiAoc3RpcHBlZEhlYWRlclsw
XSA9PSAnMCcpCisgICAgaWYgKGhlYWRlcltwb3NdID09ICcwJykKICAgICAgICAgcmV0dXJuIFhT
U1Byb3RlY3Rpb25EaXNhYmxlZDsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGhlYWRlci5sZW5n
dGgoKTsKLSAgICB1bnNpZ25lZCBwb3MgPSAwOwotICAgIGlmIChzdGlwcGVkSGVhZGVyW3Bvcysr
XSA9PSAnMScKLSAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2Uoc3RpcHBlZEhlYWRlciwgcG9zLCBm
YWxzZSkKLSAgICAgICAgJiYgc3RpcHBlZEhlYWRlcltwb3MrK10gPT0gJzsnCi0gICAgICAgICYm
IHNraXBXaGl0ZVNwYWNlKHN0aXBwZWRIZWFkZXIsIHBvcywgZmFsc2UpCi0gICAgICAgICYmIHNr
aXBUb2tlbihzdGlwcGVkSGVhZGVyLCBwb3MsICJtb2RlIikKLSAgICAgICAgJiYgc2tpcFdoaXRl
U3BhY2Uoc3RpcHBlZEhlYWRlciwgcG9zLCBmYWxzZSkKLSAgICAgICAgJiYgc3RpcHBlZEhlYWRl
cltwb3MrK10gPT0gJz0nCi0gICAgICAgICYmIHNraXBXaGl0ZVNwYWNlKHN0aXBwZWRIZWFkZXIs
IHBvcywgZmFsc2UpCi0gICAgICAgICYmIHNraXBUb2tlbihzdGlwcGVkSGVhZGVyLCBwb3MsICJi
bG9jayIpCi0gICAgICAgICYmIHBvcyA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBYU1NQcm90
ZWN0aW9uQmxvY2tFbmFibGVkOworICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICcxJykgeworICAg
ICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRUb2dnbGU7CisgICAgICAg
IHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICB9CisKKyAgICBpZiAoIXNraXBXaGl0
ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9u
RW5hYmxlZDsKKworICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICc7JykgeworICAgICAgICBmYWls
dXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3I7CisgICAgICAgIHJldHVy
biBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICB9CisKKyAgICBpZiAoIXNraXBXaGl0ZVNwYWNl
KGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxl
ZDsKKworICAgIGlmICghKHNraXBUb2tlbihoZWFkZXIsIHBvcywgIm1vZGUiKQorICAgICAgICAm
JiBza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpCisgICAgICAgICYmIGhlYWRlcltw
b3MrK10gPT0gJz0nCisgICAgICAgICYmIHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxz
ZSkKKyAgICAgICAgJiYgc2tpcFRva2VuKGhlYWRlciwgcG9zLCAiYmxvY2siKSkpIHsKKyAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZTsKKyAgICAgICAgcmV0
dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgIH0KKworICAgIGlmIChza2lwV2hpdGVTcGFj
ZShoZWFkZXIsIHBvcywgZmFsc2UpKSB7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBmYWlsdXJl
UmVhc29uSW52YWxpZEV4dHJhOworICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7
CisgICAgfQogCi0gICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25FbmFibGVkOworICAgIHJldHVybiBY
U1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOwogfQogCiBTdHJpbmcgZXh0cmFjdFJlYXNvblBocmFz
ZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZpc2lvbiAx
MzI2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2VCYXNlOwogCiBlbnVtIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlv
biB7CisgICAgWFNTUHJvdGVjdGlvbkludmFsaWQsCiAgICAgWFNTUHJvdGVjdGlvbkRpc2FibGVk
LAogICAgIFhTU1Byb3RlY3Rpb25FbmFibGVkLAogICAgIFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJs
ZWQKQEAgLTYwLDcgKzYxLDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpbwogU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7
CiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOyAKIHZv
aWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWdu
ZWQgaW50JiBjaGFyc2V0UG9zLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRMZW4sIHVuc2lnbmVkIGlu
dCBzdGFydCA9IDApOwotWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlv
bkhlYWRlcihjb25zdCBTdHJpbmcmKTsKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhT
U1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJl
YXNvbik7CiBTdHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25z
dCBTdHJpbmcmKTsKIAogLy8gLTEgY291bGQgYmUgc2V0IHRvIG9uZSBvZiB0aGUgcmV0dXJuIHBh
cmFtZXRlcnMgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQuCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzI4MzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMC0yOSAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNYWxmb3JtZWQgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXJzIG5v
dCByZXBvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0
aW9uLWhlYWRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9y
bWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0xLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24t
aGVhZGVyLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21h
bGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItZXhwZWN0ZWQtMS50eHQ6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgcmVuYW1lZCB0byAtMSB0
byBtYXRjaCBjb252ZW50aW9uLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhz
cy1wcm90ZWN0aW9uLWhlYWRlci0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0zLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rp
b24taGVhZGVyLTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00Lmh0bWw6
IEFkZGVkLgorICAgICAgICBOZXcgdGVzdCB0byBjb3ZlciBuZXcgZXJyb3IgbWVzc2FnZSBjYXNl
cy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2Vj
aG8taW50ZXJ0YWcucGw6CisgICAgICAgIEFkZGVkIG1vcmUgeC14c3MtcHJvdGVjdGlvbiBoZWFk
ZXIgdmFsdWVzIHRvIGl0cyBzZXQgb2YgdmFsdWVzLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAxLmh0bWw6CisgICAgICAg
IENvbnZlcnRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZSB0byBlY2hvX2ludGVydGFnLnBsCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNp
bmctMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgTmV3IHRlc3QgZm9yIHRlc3RpbmcgeC14c3MtcHJvdGVjdDogMDsgKGFsbG93IHRyYWlsaW5n
IHNlbWljb2xvbikuCisgICAgICAgIAogMjAxMi0xMC0yOSAgR2xlbm4gQWRhbXMgIDxnbGVubkBz
a3luYXYuY29tPgogICAgICAgIAogICAgICAgICBbQ1NTT01dIEV4dHJhbmVvdXMgd2hpdGVzcGFj
ZSBpbiBDU1NJbXBvcnRSdWxlLmNzc1RleHQKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBo
ZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTIzNDU2Nzg5MDEyMzQ1Njc6IGV4cGVjdGVkIHNlbWlj
b2xvbi4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBN
RVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNv
ZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgYSBt
YWxmb3JtZWQgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGUg
bGVuZ3RoIG9mIGl0cyB2YWx1ZSBleGNlZWRzIDE2IGNoYXJhY3RlcnMsIGFuZCB0aGF0IGFuIGVy
cm9yIGlzIHJlcG9ydGVkLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCistLS0tLS0t
LQorSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0aGVu
IHRoZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9y
bWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0xLmh0bWwJKHJldmlzaW9uIDEzMjY3NCkJKGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXIuaHRtbDoxMzI2NzQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0xLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBp
dHMgdmFsdWUgZXhjZWVkcyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczMTIjYzEzIj4xNiBjaGFyYWN0ZXJzLjwvYT48L3A+Cis8aWZyYW1lIGlkPSJm
cmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9uZSgn
ZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEmY3Vz
dG9tLWhlYWRlcj1YLVhTUy1Qcm90ZWN0aW9uOiAxMjM0NTY3ODkwMTIzNDU2NyZxPTxzY3JpcHQ+
YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9zY3JpcHQ+PHA+SWYg
eW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRoZSB0
ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXItMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEu
aHRtbAkocmV2aXNpb24gMTMyNjc0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogPC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJv
dGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGUgbGVuZ3RoIG9mIGl0cyB2YWx1
ZSBleGNlZWRzIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzMxMiNjMTMiPjE2IGNoYXJhY3RlcnMuPC9hPjwvcD4KLTxpZnJhbWUgaWQ9ImZyYW1lIiBv
bmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScs
ICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NB
dWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZjdXN0b20taGVh
ZGVyPVgtWFNTLVByb3RlY3Rpb246IDEyMzQ1Njc4OTAxMjM0NTY3JnE9PHNjcmlwdD5hbGVydChT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2Vl
IHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFT
U0VELjwvcD4iPgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIFgtWFNTLVByb3RlY3Rp
b24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGxlbmd0aCBvZiBpdHMgdmFsdWUgZXhj
ZWVkcyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjcz
MTIjYzEzIj4xNiBjaGFyYWN0ZXJzLCBhbmQgdGhhdCBhbiBlcnJvciBpcyByZXBvcnRlZC48L2E+
PC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25NYXRj
aGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcu
cGw/bm90aWZ5RG9uZT0xJm1hbGZvcm1lZC1oZWFkZXI9MSZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5n
LmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9zY3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlz
IG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48
L3A+Ij4KIDwvaWZyYW1lPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFk
ZXItMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0yLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBFcnJvciBw
YXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiByZWQ6IGZpcnN0IG5vbi1ibGFuayBjaGFy
YWN0ZXIgbXVzdCBiZSAwIG9yIDEuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUgYXBw
bGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworVGhp
cyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3
aGVuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IDAgb3IgMSwgYW5kIHRoYXQgd2UgaXNzdWUg
YW4gZXJyb3IuCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5
b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRl
c3QgUEFTU0VELgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0
cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
dGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGZpcnN0
IGNoYXJhY3RlciBpcyBub3QgMCBvciAxLCBhbmQgdGhhdCB3ZSBpc3N1ZSBhbiBlcnJvci48L3A+
Cis8aWZyYW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNV
UkxBbmRDYWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9u
b3RpZnlEb25lPTEmbWFsZm9ybWVkLWhlYWRlcj0yJnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVz
c2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4i
PgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0z
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci0zLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIHBhcnNp
bmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9cHVycGxlOiBpbnZhbGlkIG1vZGUg
ZGlyZWN0aXZlLiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQuCitDT05T
T0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3Vy
Y2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK1RoaXMgdGVzdHMgdGhh
dCBhIG1hbGZvcm1lZCBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCBhbmQg
YW4gZXJyb3IgaXMgcmVwb3J0ZWQgd2hlbiB0aGUgbW9kZT0gdG9rZW4gaXMgaW52YWxpZC4KKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBt
ZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVk
LXhzcy1wcm90ZWN0aW9uLWhlYWRlci0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXItMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMy5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIG1hbGZvcm1lZCBY
LVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCBhbmQgYW4gZXJyb3IgaXMgcmVw
b3J0ZWQgd2hlbiB0aGUgbW9kZT0gdG9rZW4gaXMgaW52YWxpZC48L3A+Cis8aWZyYW1lIGlkPSJm
cmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9uZSgn
ZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEmbWFs
Zm9ybWVkLWhlYWRlcj0zJnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgs
MHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2
YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
bWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3Jt
ZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNT
LVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2stYS1ibG9jay1ibG9jazogZXh0cmEgY2hhcmFjdGVy
cyBmb2xsb3cgdmFsaWQgaGVhZGVyLiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9ucyB3aWxsIGJlIGFw
cGxpZWQuCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQg
c2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK1Ro
aXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQg
d2hlbiB0aGVyZSBpcyBhIHRyYWlsaW5nIGdhcmJhZ2UgYWZ0ZXIgbW9kZT1ibG9jaywgYW5kIHdl
IGlzc3VlIGFuIGVycm9yCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0t
CitJZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4g
dGhlIHRlc3QgUEFTU0VELgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3Jt
ZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rp
b24taGVhZGVyLTQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5h
YmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhl
cmUgaXMgYSB0cmFpbGluZyBnYXJiYWdlIGFmdGVyIG1vZGU9YmxvY2ssIGFuZCB3ZSBpc3N1ZSBh
biBlcnJvcjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0
aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWlu
dGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTQmcT08c2NyaXB0PmFsZXJ0
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBz
ZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQ
QVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rp
b24taGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMjY3NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBz
Y3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCi0KLVRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1Mt
UHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGUgbGVuZ3RoIG9mIGl0cyB2
YWx1ZSBleGNlZWRzIDE2IGNoYXJhY3RlcnMuCi0KLQotCi0tLS0tLS0tLQotRnJhbWU6ICdmcmFt
ZScKLS0tLS0tLS0tCi1JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBh
bGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci5odG1sCShyZXZpc2lvbiAxMzI2NzQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVk
LXhzcy1wcm90ZWN0aW9uLWhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuc2V0
WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdu
b3JlZCB3aGVuIHRoZSBsZW5ndGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MzEyI2MxMyI+MTYgY2hhcmFjdGVy
cy48L2E+PC9wPgotPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRp
b25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJmN1c3RvbS1oZWFkZXI9WC1YU1MtUHJvdGVjdGlvbjogMTIz
NDU2Nzg5MDEyMzQ1NjcmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCww
eDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZh
U2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Ci08L2lmcmFtZT4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAxLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBh
cnNpbmctMDEuaHRtbAkocmV2aXNpb24gMTMyNjc0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDEuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiBkb25lKCkKIH0KIHdpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpCiB7Ci0gICAgc2VuZFJlcXVlc3RGcm9tSUZyYW1lKCJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRh
Zy5wbCIsImNyYXp5LWhlYWRlcj0xJnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4NTgsMHg1MywweDUzKSk8XC9zY3JpcHQ+IiwiUE9TVCIsIGRvbmUpOworICAgIHNlbmRSZXF1
ZXN0RnJvbUlGcmFtZSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGwiLCJ2YWxpZC1oZWFkZXI9MSZxPTxzY3JpcHQ+YWxl
cnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPFwvc2NyaXB0PiIsIlBPU1Qi
LCBkb25lKTsKIH07CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXBy
b3RlY3Rpb24tcGFyc2luZy0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworVGhp
cyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3
aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgc2VtaWNvbG9uLiBBbHRob3VnaCB0aGVvcmV0aWNhbGx5
IG1hbGZvcm1lZCwgd2UgdG9sZXJhdGUgdGhpcyBjYXNlIHdpdGhvdXQgaXNzdWluZyBhbiBlcnJv
ci4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUg
dGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNT
RUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNz
LXByb3RlY3Rpb24tcGFyc2luZy0wMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAyLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMg
bm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhIHRyYWlsaW5nIHNlbWljb2xvbi4KK0FsdGhvdWdo
IHRoZW9yZXRpY2FsbHkgbWFsZm9ybWVkLCB3ZSB0b2xlcmF0ZSB0aGlzIGNhc2Ugd2l0aG91dCBp
c3N1aW5nIGFuIGVycm9yLiA8L3A+Cis8aWZyYW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lm
RnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6Ymxhbmsn
KSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJj
ZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEmdmFsaWQtaGVhZGVyPTImcT08c2NyaXB0
PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklm
IHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUg
dGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1p
bnRlcnRhZy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGwJKHJldmlzaW9uIDEzMjY3NCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMv
ZWNoby1pbnRlcnRhZy5wbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNyArNCwzMiBAQCB1c2UgQ0dJ
OwogCiBteSAkY2dpID0gbmV3IENHSTsKIAotaWYgKCRjZ2ktPnBhcmFtKCdlbmFibGUtZnVsbC1i
bG9jaycpKSB7Ci0gICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2tcbiI7
Ci19CisjIFBhc3Npbmcgc2VtaWNvbG9ucyB0aHJvdWdoIHRoZSB1cmwgdG8gdGhpcyBzY3JpcHQg
aXMgcHJvYmxlbWF0aWMuIFRoZSByYXcKKyMgZm9ybSB0cnVuY2F0ZXMgdGhlIGlucHV0IGFuZCB0
aGUgJS1lbmNvZGVkIGZvcm0gaXNuJ3QgYmVpbmcgZGVjb2RlZC4gSGVuY2UKKyMgdGhpcyBzZXQg
b2YgaGFyZC1jb2RlZCBoZWFkZXJzLiAKIGlmICgkY2dpLT5wYXJhbSgnZGlzYWJsZS1wcm90ZWN0
aW9uJykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMFxuIjsKIH0KLWlmICgkY2dp
LT5wYXJhbSgnY3JhenktaGVhZGVyJykpIHsKK2lmICgkY2dpLT5wYXJhbSgnZW5hYmxlLWZ1bGwt
YmxvY2snKSkgeworICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrXG4i
OworfQoraWYgKCRjZ2ktPnBhcmFtKCd2YWxpZC1oZWFkZXInKSA9PSAxKSB7CiAgICAgcHJpbnQg
IlgtWFNTLVByb3RlY3Rpb246ICAgMSAgO01vRGUgPSAgYkxvY0sgICBcbiI7CiB9Ci1pZiAoJGNn
aS0+cGFyYW0oJ2N1c3RvbS1oZWFkZXInKSkgewotICAgIHByaW50ICRjZ2ktPnBhcmFtKCdjdXN0
b20taGVhZGVyJykgLiAiXG4iOworaWYgKCRjZ2ktPnBhcmFtKCd2YWxpZC1oZWFkZXInKSA9PSAy
KSB7CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IFxuIjsKK30KK2lmICgkY2dpLT5w
YXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDEpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVj
dGlvbjogMTIzNDU2Nzg5MDEyMzQ1NjdcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1l
ZC1oZWFkZXInKSA9PSAyKSB7CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IHJlZFxuIjsK
K30KK2lmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDMpIHsKKyAgICBwcmlu
dCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1wdXJwbGVcbiI7Cit9CitpZiAoJGNnaS0+cGFy
YW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA0KSB7CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rp
b246IDE7IG1vZGU9YmxvY2stYS1ibG9jay1ibG9ja1xuIjsKIH0KIAogcHJpbnQgIkNvbnRlbnQt
VHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>