<?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>29972</bug_id>
          
          <creation_ts>2009-10-01 10:46:40 -0700</creation_ts>
          <short_desc>Implement URL decomposition IDL attributes for HTMLAnchorElement</short_desc>
          <delta_ts>2009-11-10 18:07:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30971</dependson>
    
    <dependson>31200</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151612</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-01 10:46:40 -0700</bug_when>
    <thetext>According to  http://dev.w3.org/html5/spec/text-level-semantics.html#the-a-element , JavaScript should be able to manipulate parts of the URL of href attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151616</commentid>
    <comment_count>1</comment_count>
      <attachid>40460</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-01 10:52:16 -0700</bug_when>
    <thetext>Created attachment 40460
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151633</commentid>
    <comment_count>2</comment_count>
      <attachid>40460</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-01 11:26:50 -0700</bug_when>
    <thetext>Comment on attachment 40460
Patch.

Looks good!

The regression test should be dumpAsText(). And ideally it should be one of the script-tests. This seems like a perfect candidate for that style of test.

This is a test of HTMLAnchorElement, so it should be in fast/dom/HTMLAnchorElement, not fast/dom/Element. So you should create that new directory.

We need a lot more test cases, with all the edge cases like passing in malformed strings, like including a &quot;:&quot; or other punctuation in the protocol string and many other examples like that. And we need to see how the abnormal cases behave in other browsers to see if our behavior is right. There&apos;s no reason to assume the KURL functions just happen to do everything right already.

For changes like this one of the most important issues is how similar or different our behavior is from other browsers.

review- because the test needs changes, at the very least to dumpAsText(), but I&apos;d prefer if you did everything I mention above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151661</commentid>
    <comment_count>3</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-01 12:27:26 -0700</bug_when>
    <thetext>Thank you for the quick review. 
I will add more tests. And sorry for forgetting to add dumpAsText().

As for browser comparison, this is tricky.
I think each browser has its own bugs in this area :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152113</commentid>
    <comment_count>4</comment_count>
      <attachid>40586</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-03 17:09:52 -0700</bug_when>
    <thetext>Created attachment 40586
Patch

This patch adds support for manipulating parts of the URL in href. 
Processing as described in http://dev.w3.org/html5/spec/infrastructure.html#url-decomposition-idl-attributes.

The test resuls are almost always the same as FireFox, with some exceptions:
1. FireFox does not allow setting a NULL port, but this should be allowed.
2. FireFox allows setting a null protocol, but this should not be allowed.
3. Encoding of parts of the URL is not always done correctly. I&apos;d like to fix that as a separate bug, otherwise, this patch will grow very big.

Sorry for omitting the dumpAsText() in the previous test case, it&apos;s been corrected now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154094</commentid>
    <comment_count>5</comment_count>
      <attachid>40586</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-12 09:57:34 -0700</bug_when>
    <thetext>Comment on attachment 40586
Patch

Change looks good. Still some things to fix.

&gt; -    // Setting the port to 0 will clear any port from the URL.
&gt; +    void clearPort();

Given that the call to check if a port is present is named hasPort(), I would call this removePort() rather than clearPort(). This is also consistent with the name of the removeFragmentIdentifier function.

&gt;  #ifndef NDEBUG
&gt;      void print() const;
&gt;  #endif
&gt; +    bool isHierarchical() const;

This seems like a strange place to tuck this function -- easy to miss it here in the same paragraph with a debug-only function. I&apos;m also not sure we want a public function for this, and if we do we should document it I think.

&gt; +    for (int i = 1; i &lt; protocol.length(); i++) {
&gt; +        if (!isSchemeChar(protocol[i]))
&gt; +            return false;
&gt; +    }

Since String::length returns an unsigned, I suspect this won&apos;t compile on some platforms due to unsigned/signed comparison warnings. Please make &quot;i&quot; an unsigned rather than an int.

But also, I would normally put the length into a local variable in a case like this, since it&apos;s used once outside the loop and then again each time through the loop. Not sure everyone would agree with me on that.

&gt; +void KURL::clearPort()
&gt; +{
&gt; +    parse(m_string.left(m_hostEnd) + m_string.substring(m_portEnd));
&gt; +}

If m_isValid is false, I&apos;m not sure this will do the right thing. Does one of your test cases exercise that code path?

If m_hostEnd == m_portEnd, then I think this does quite a bit of extra work, and I think you should optimize that case with an early return.

&gt;      // FIXME: Non-ASCII characters must be encoded and escaped to match parse() expectations.
&gt; -    parse(m_string.left(m_queryEnd) + &quot;#&quot; + s);
&gt; +    if (s.isEmpty())
&gt; +        parse(m_string.left(m_queryEnd));
&gt; +    else
&gt; +        parse(m_string.left(m_queryEnd) + &quot;#&quot; + s);

I think it&apos;s strange that this refuses to put &quot;#&quot; on for an empty fragment identifier. I suggest coding this quirk at the call site inside setHash rather than building it into the KURL function.

&gt; +    // Setter condition:
&gt; +    // The new value is not the empty string and input is hierarchical and uses
&gt; +    // a server-based naming authority 
&gt; +    if (value.isEmpty())
&gt; +        return;
&gt; +    KURL url = href();
&gt; +    if (!url.isHierarchical() || url.isLocalFile())
&gt; +        return;

I don&apos;t think !isHierarchical || isLocalFile is the right way to check if the URL uses a server-based naming authority. You should ask some people about that on webkit-dev -- we need to find some experts. I think we might need to ask SecurityOrigin this question.

And if this is the reason you exposed isHierarchical, then I think that&apos;s a mistake. Instead you should expose a function that does the entire (!isHierarchical || isLocalFile) test with an appropriate name. And keep isHierarchical private.

&gt; +        // FireFox rejects the port if it is not numerical value.

The name Firefox doesn&apos;t have a second capital &quot;F&quot; in it. Normally in comments like this it&apos;s useful to be more specific, mentioning the version number you tested. Also, is Firefox what we want to cite here? Does the HTML 5 specification say anything about this? What about Internet Explorer&apos;s behavior?

&gt; +        // Accept the port portion only if it is numerical,
&gt; +        // and not default for the scheme.
&gt; +        int i = separator + 1;
&gt; +        for (; i &lt; value.length() &amp;&amp; isASCIIDigit(value[i]); i++);

I believe this loop structure will give a warning on some compilers. Instead I suggest making a helper function that returns true only if all characters are ASCII digits.

Did you test cases where there is leading or trailing whitespace? Does Firefox actually ignore the numbers in strings that have that whitespace?

The toUInt and toUIntStrict functions already have an out parameter &quot;ok&quot; that tells whether the passed in thing is a number. There&apos;s a chance you could use that instead of writing you own loop to check for ASCII digits.

&gt; +    // Setter preprocessor:
&gt; +    //Remove all leading U+002F SOLIDUS (&quot;/&quot;) characters 

I don&apos;t understand the term &quot;Setter preprocessor&quot; term here and &quot;Setter condition&quot; -- are those terms from the HTML 5 standard? If so, then perhaps there&apos;s a way to make that clearer. If not, maybe you could just leave those comment lines out. They don&apos;t seem to add much.

Missing space after &quot;//&quot; on the second line. And it should have a period too.

&gt; +    int i = 0;
&gt; +    for (; i &lt; value.length() &amp;&amp; value[i] == &apos;/&apos;; i++);

Again, the semicolon on the same line as the loop will not compile with some compilers. And searching for a single character should be done by calling String::find rather than with a custom loop.

&gt; +    //If it has no leading U+002F SOLIDUS (&quot;/&quot;) character, prepend a U+002F SOLIDUS (&quot;/&quot;) character to the new value 

Missing space after &quot;//&quot; on the second line. And it should have a period too.

&gt; +    if (value.startsWith(&quot;/&quot;))

A significantly more efficient way to do this check is value[0] == &apos;/&apos;. String&apos;s subscript operator returns 0 for characters past the end of the string so you don&apos;t have to worry about the empty string. Doing it the way you wrote it actually creates an unneeded temporary String because we haven&apos;t overloaded the function for &quot;const char*&quot; (which we could do to fix that problem) and also calls strlen. All unneeded.

&gt; +    // We accept the port if it is numerical and not default for the scheme,
&gt; +    // else remove the port.

The &quot;remove the port&quot; comment here makes it clear that removePort is a better name.

&gt; +    int separator = value.find(&quot;:&quot;);

The find function will run more efficiently if you pass it &apos;:&apos; instead of &quot;:&quot;.

&gt; +    KURL url = href();
&gt; +    if (separator &gt; 0)  {
&gt; +        String subvalue = value.substring(0, separator);
&gt; +        if (!KURL::isProtocolValid(subvalue))
&gt; +            return;
&gt; +        url.setProtocol(subvalue);
&gt; +    }
&gt; +    else {
&gt; +        if (!KURL::isProtocolValid(value))
&gt; +            return;
&gt; +        url.setProtocol(value);
&gt; +    }

You could save duplicated code if you set subvalue to value when separator is -1. And in fact, that&apos;s exactly what would happen if you passed the -1 to the substring function, so you could just remove the if entirely and keep the code inside the if clause.

Also, the brace before else is supposed to be on the same line with the else.

&gt; +    if (value.startsWith(&quot;?&quot;))

Again, value[0] == &apos;?&apos; is more efficient for such cases.

Try to structure the code so that it doesn&apos;t call toUInt two times on the same string. I noticed that in a couple of cases.

The tests look good. They would be even better if they were written using the script-tests machinery, because then they would make it clear what the expected results are and you could tell if they were passing or failing just by viewing them in a web browser. An example of one of these is fast/dom/HTMLFormElement/script-tests/elements-not-in-document.js. The HTML wrapper for such tests is made by running the make-script-tests-wrappers script. To start a new directory like HTMLAnchorElement you just need to create the script-tests directory and put a TEMPLATE.html file in it. Best to svn copy the TEMPLATE.html file from another script-tests directory at the same level of the directory hierarchy, such as fast/dom/HTMLFormElement/script-tests/TEMPLATE.html in your case.

Similarly, it&apos;s helpful to write out what&apos;s being tested, not just a list of the test output. You would use the poorly-named &quot;debug()&quot; function in your script-tests test to write out a line of text telling what the script has done so that then you can get a sense of why the results are expected. A pretty good example of that is fast/dom/Node/script-tests/initial-values.js.

It would be good to include test cases that document what happens when the original URL is not well formed. Your test cases are good, but they are staying too close to &quot;normal good&quot; cases and not exercising the edge cases enough. There should be a test case that takes every single branch in each of the functions used. For example, you have to at least try setting each of the properties to the empty string and other types of illegal values.

To make the tests more economical, I suggest you write out the e entire URL after the tests rather than writing out the separate protocol, host, pathname, href, and search each time. It&apos;s OK to validate that the engine properly parses the URL after changes like this, but writing them out on separate lines is making the test seem much bigger than it is and indirectly causing us to test fewer cases. The goal here is to test the setter behavior, not to create additional tests of the parsing for the getters, so I think that&apos;s a good tradeoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155686</commentid>
    <comment_count>6</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-19 08:32:45 -0700</bug_when>
    <thetext>While adding test cases for malformed URLs and bad input, I noticed that IE8 and Firefox 3.5.2 behave very differently.
Darin, others, could you please suggest which one is better to follow on the error cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155965</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-19 15:40:28 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; While adding test cases for malformed URLs and bad input, I noticed that IE8
&gt; and Firefox 3.5.2 behave very differently.
&gt; Darin, others, could you please suggest which one is better to follow on the
&gt; error cases?

Without any further details on how they differ, it&apos;s hard for me to make a recommendation.

Generally we like to match IE if it has behavior that&apos;s reasonable, since it has the largest market share and so sites probably conform to its idiosyncrasies. But there are exceptions and this could be one of those depending on what the differences are. This may have already been explored by folks working on HTML5, so please take a look to see if that specification says anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156875</commentid>
    <comment_count>8</comment_count>
      <attachid>41658</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-22 07:05:59 -0700</bug_when>
    <thetext>Created attachment 41658
Patch

Style comments fixed.
More tests added.
Each test either passes on IE8 and Firefox 3.5.2, or it has some explanation of why it does not pass.
Server-based naming authority issue - I sent an e-mail to webkit-dev and asked the question on #whatwg IRC channel. Nobody seems to know the answer, so I tested IE8 and followed its behavior.

KURL character table should be updated to reflect newer specifications, e.g. RFC 3986. This was not done in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156942</commentid>
    <comment_count>9</comment_count>
      <attachid>41668</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-22 11:08:01 -0700</bug_when>
    <thetext>Created attachment 41668
Patch.

Previous patch missed one place where signed/unsigned were compared. This patch fixes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157692</commentid>
    <comment_count>10</comment_count>
      <attachid>41668</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-26 00:04:04 -0700</bug_when>
    <thetext>Comment on attachment 41668
Patch.

Looks good!

I&apos;m not sure you have the expected results right in the cases where what you pass in for the URL is a Windows-style file pathname.

&gt;      bool protocolIs(const char*) const;
&gt;      bool protocolInHTTPFamily() const;
&gt;      bool isLocalFile() const;
&gt; +    bool hasPort() const;

I believe I mentioned in an earlier that I think hasPort() does not belong in the paragraph with all the protocol boolean predicates. Instead I think it should go just after port(), just as hasFragmentIdentifier() goes just after fragmentIdentifier().

&gt; +bool KURL::isProtocolValid(const String&amp; protocol)
&gt; +{
&gt; +    if (protocol.isEmpty())
&gt; +        return false;
&gt; +    if (!isSchemeFirstChar(protocol[0]))
&gt; +        return false;
&gt; +    unsigned protocolLength = protocol.length();
&gt; +    for (unsigned i = 1; i &lt; protocolLength; i++) {
&gt; +        if (!isSchemeChar(protocol[i]))
&gt; +            return false;
&gt; +    }
&gt; +    return true;
&gt; +}

I think this should be a non-member function like the protocolIs and protocolIsJavaScript functions rather than a KURL member function.

There is no need for the isEmpty() check, since the isSchemeFirstChar check will take care of that automatically, since indexing off the end of a String gives you a 0 character.

&gt; +    // Don&apos;t set the host on a local file e.g. c:/path
&gt; +    if (m_schemeEnd == 1 &amp;&amp; m_userStart == m_schemeEnd + 1)
&gt; +        return;

This seems to be Windows-specific. We don&apos;t have any other code special casing Windows-style paths unconditionally on all platforms, and I&apos;m quite surprised to see this here! Maybe we can add this in another patch. Is this really the only case in the entire KURL class where we need to detect that something is a Windows-style path? And is this really the right condition for detecting such a path? While I accept that we may need special handling for such paths, if so it should be at parse time, not in the set functions, where we decide that something is a path, not a URL with an unusual one-letter URL scheme.

I think we&apos;ll need to land a first version of this patch without these special cases and then decide how to handle the Windows-style path case separately. You can land all the test cases showing what we&apos;re doing wrong with FAIL results and then we can fix them in a second patch that addresses only that issue.

&gt; +void KURL::removePort()
&gt; +{
&gt; +    if (!m_isValid)
&gt; +        return;
&gt; +    if (m_hostEnd == m_portEnd)
&gt; +        return;
&gt; +    parse(m_string.left(m_hostEnd) + m_string.substring(m_portEnd));
&gt; +}

I don&apos;t think we need the m_isValid check here. If a KURL is not valid, then m_hostEnd and m_portEnd are both guaranteed to be zero.

&gt; +    // Don&apos;t set the port on a local file e.g. c:/path
&gt; +    if (m_schemeEnd == 1 &amp;&amp; m_userStart == m_schemeEnd + 1)
&gt; +        return;

If we&apos;re going to have this check in more than one place, I think we need a named helper function named something like isWindowsStyleFilePath() -- and I have no idea why we would ever have such a thing without a &quot;file:&quot; prefix on it. I really think this is wrong and we need to consider handling it some other way. We should not treat the Windows drive letter as a &quot;scheme&quot; at parsing time.

&gt; +    // Only do this for http and https, unless the URL is not hierarchical.
&gt; +    if (m_protocolInHTTPFamily &amp;&amp; hierarchical &amp;&amp; pathEnd - pathStart == 0)

It&apos;s strange to write &quot;pathEnd == pathStart&quot; as &quot;pathEnd - pathStart == 0&quot;. Maybe you can fix this while touching the code.

WebKit uses sentence-style comments rather than comments that end in a period.

&gt; +// This function does not allow leading spaces before the port number.
&gt; +static unsigned getPortFromString(const String&amp; value, unsigned&amp; portEnd)
&gt; +{
&gt; +    unsigned port = 0;
&gt; +    portEnd = 0;
&gt; +    unsigned valueLength = value.length();
&gt; +    while (portEnd &lt; valueLength &amp;&amp; isASCIIDigit(value[portEnd]))
&gt; +        portEnd++;
&gt; +    if (portEnd &gt; 0) {
&gt; +        if (portEnd == valueLength)
&gt; +            port = value.toUInt();
&gt; +        else
&gt; +            port = value.substring(0, portEnd).toUInt();
&gt; +    }
&gt; +    return port;
&gt; +}

A function that returns a value such as a port number should not be named get in WebKit code. We use nouns for such getter functions, and &quot;get&quot; only when it&apos;s an out function.

Since an attempt to get a character past the end of a string returns the 0 character, there is no need to do the valueLength condition on the first if statement.

WebKit style would write this &quot;if (portEnd)&quot; rather &quot;if (portEnd &gt; 0)&quot;.

Since the substring function already special cases a substring of the entire string, there&apos;s no need for the &quot;if (portEnd == valueLength)&quot; check -- we can just always use substring() and it will take care of optimizing the normal case. Actually it would be clearer to use left().

Since toUInt() already returns 0 when passed the empty or null string, and the empty string is already optimized, there&apos;s no need to special case the portEnd == 0 case.

So this function becomes:

    static unsigned parsePortAtStringStart(const String&amp; value, unsigned&amp; portEnd)
    {
        portEnd = 0
        while (isASCIIDigit(value[portEnd]))
            ++portEnd;
        return value.substring(0, portEnd).toUInt();
    }

And given that this actually is being passed a substring, I think it would be better to make it take another argument and parse a port starting at the passed in location so the caller doesn&apos;t have to call substring.

&gt; +            else if (separator + 1 + portEnd == value.length())
&gt; +                url.setHostAndPort(value);
&gt; +            else
&gt; +                url.setHostAndPort(value.substring(0, separator + 1 + portEnd));

Again, there is no need to special case the value.length() case this since value.substring already does that.

&gt; +void HTMLAnchorElement::setHostname(const String&amp; value)
&gt; +{
&gt; +    // Before setting new value:
&gt; +    // Remove all leading U+002F SOLIDUS (&quot;/&quot;) characters.
&gt; +    unsigned i = 0;
&gt; +    unsigned hostLength = value.length();
&gt; +    while (i &lt; hostLength &amp;&amp; value[i] == &apos;/&apos;)
&gt; +        i++;

There is no need to check against hostLength in the loop condition here because String already takes care of that.

&gt; +    String subvalue = value.substring(i);
&gt; +    KURL url = href();
&gt; +    if (!url.canSetHostOrPort())
&gt; +        return;

There is no need to fetch subvalue into a local variable here. It&apos;s only used once, and it&apos;s used after the if statement, so I suggest just doing the substring call inside the setHost function call.

&gt; +    if (SecurityOrigin::isDefaultPortForProtocol(port, url.protocol() ))

There&apos;s an extra space on this line that should go away.

&gt; +    // Following Firefox 3.5.2 which removes anything after the first &quot;:&quot;
&gt; +    String subvalue = (separator &gt; 0 ? value.substring(0, separator) : value);

You don&apos;t need the ?: here because signed -1 becomes unsigned UINT_MAX, and then that means the entire string. So you can just say:

    String protocol = value.substring(0, separator);

I also recommend the name protocol or newProtocol rather than subvalue.

&gt; +    String escapedValue = (value[0] == &apos;?&apos;) ? value.substring(1) : value;

The name escapedValue here doesn&apos;t make sense, because you do the escaping *after* this. This is just value with the leading &quot;?&quot; stripped off it.

I didn&apos;t study all the tests carefully his time around, but they look good. It would be good to compile a list of where you decided to match Firefox and where you decided to match IE when the two differed, so people could consider that rather than reading all the test cases.

review- because at least some of my comments above should drive you to make some changes

This is getting really close!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159442</commentid>
    <comment_count>11</comment_count>
      <attachid>42233</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-30 14:25:40 -0700</bug_when>
    <thetext>Created attachment 42233
Patch

Thank you for the review, Darin.
This updated patch takes your comments into account. I changed the test result of local file to expect &quot;FAIL&quot; instead of &quot;PASS&quot;, we should revisit that in a separate patch. As a side note, IE and FF do recognize c:/ as a local file, but do not recognize c:\ as a local file. My implementation was doing the same.

I was not sure where to publish the compatibility list. In general, I always tried to match IE, and if IE threw an exception, then I tried to match FF.

One test case (line 23) in fast/loader/url-parse-1.html is failing with my patch. It expects that we always add &apos;/&apos; if the path is empty, but we should only add that if the URL is hierarchical. (IE8 does not add that)
Should I change the expected result in the same patch, or as a follow-up?

thanks, Yael</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159482</commentid>
    <comment_count>12</comment_count>
      <attachid>42233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-30 15:30:48 -0700</bug_when>
    <thetext>Comment on attachment 42233
Patch

&gt; +    // Returns true if it is allowed to set the host and port for the URL
&gt; +    // This is allowed if the URL is valid, is hierarchical and has a
&gt; +    // server based naming authority.
&gt; +    // IE8 allows setting the hsot for foo:// protocol, so does WebKit.
&gt; +    bool canSetHostOrPort() const { return isHierarchical(); }

Typo: &quot;host&quot; is spelled &quot;hsot&quot; here. The comment says something about a server based naming authority, but the function body doesn&apos;t have any code to do that.

I think a better comment would be:

    // Returns true if you can set the host and port for the URL.
    // Non-hierarchical URLs don&apos;t have a host and port.

Unless that comment is wrong in some way.

&gt; +    // Returns true if the URL is hierarchical.
&gt; +    bool canSetPathname() const { return isHierarchical(); }

This comment doesn&apos;t add anything. It just repeats whats in the function body. Please leave it out or use a comment like the one I suggested above.

&gt;      // For canonicalization, ensure we have a &apos;/&apos; for no path.
&gt; -    // Only do this for http and https.
&gt; -    if (m_protocolInHTTPFamily &amp;&amp; pathEnd - pathStart == 0)
&gt; +    // Do this only for hierarchical URL with protocol http or https.
&gt; +    if (m_protocolInHTTPFamily &amp;&amp; hierarchical &amp;&amp; pathEnd == pathStart)
&gt;          *p++ = &apos;/&apos;;

Does the bug fix above have any effect on existing code, outside the new HTMLAnchorElement functions? I assume the answer is yes, and if so, we need a test case to show the fix and to help us make sure the effect is a desirable one.

Besides null it is probably worthwhile to test setting to undefined.

Generally enough here is good that I&apos;d like to say review+, but I don&apos;t really like those comments and I&apos;d prefer not to land them that way, so I&apos;ll say review- so you can fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159525</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-30 17:05:22 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; 
&gt; Does the bug fix above have any effect on existing code, outside the new
&gt; HTMLAnchorElement functions? I assume the answer is yes, and if so, we need a
&gt; test case to show the fix and to help us make sure the effect is a desirable
&gt; one.
&gt; 
Yes, it does affect existing code. In comment #11 I was asking about the test that is failing due to this fix. Should I change the expected result along with this patch, or as a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159530</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-30 17:31:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; One test case (line 23) in fast/loader/url-parse-1.html is failing with my
&gt; patch. It expects that we always add &apos;/&apos; if the path is empty, but we should
&gt; only add that if the URL is hierarchical. (IE8 does not add that)
&gt; Should I change the expected result in the same patch, or as a follow-up?

You must change the expected result in the same patch where you change behavior. All tests have to pass.

Another option is to do that particular bug fix separately in a previous patch. That would be better than including the fix with the rest of your work here. One task per patch is best.

A third option is to leave the code change for that bug fix out, and land your initial work leaving that broken. Your expected test results need to reflect the expected failure. Then you could do a follow-up that both adds the code change and changes the expected results to reflect the new successes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159605</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-31 17:59:29 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Another option is to do that particular bug fix separately in a previous patch.
&gt; That would be better than including the fix with the rest of your work here.
&gt; One task per patch is best.

https://bugs.webkit.org/show_bug.cgi?id=30971 was created for this bug fix and for updating the test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159679</commentid>
    <comment_count>16</comment_count>
      <attachid>42283</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-11-01 15:03:41 -0800</bug_when>
    <thetext>Created attachment 42283
Patch

Updated the comments, and the bug fix for extra &apos;/&apos; was committed separately.

(In reply to comment #12)
&gt; Besides null it is probably worthwhile to test setting to undefined.
I did test with undefined, but IE, FF and WebKit all convert undefined to &quot;undefined&quot; and use that as the input string, so I did not add new tests for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159680</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-01 15:13:03 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I did test with undefined

Excellent.

&gt; but IE, FF and WebKit all convert undefined to
&gt; &quot;undefined&quot; and use that as the input string

Good to know.

&gt; so I did not add new tests for that.

That was a mistake. You should have. The tests guarantee nobody in the future will have to ask the question about what undefined should do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159687</commentid>
    <comment_count>18</comment_count>
      <attachid>42285</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-11-01 17:12:57 -0800</bug_when>
    <thetext>Created attachment 42285
Patch

A few more tests added, setting parts of the URL to undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159688</commentid>
    <comment_count>19</comment_count>
      <attachid>42285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-01 17:18:53 -0800</bug_when>
    <thetext>Comment on attachment 42285
Patch

&gt;  bool protocolIs(const String&amp; url, const char* protocol);
&gt;  bool protocolIsJavaScript(const String&amp; url);
&gt; +bool protocolIsValid(const String&amp; protocol);

Sorry I didn’t realize this in earlier patch rounds. The other functions here work on URLs and check various aspects of the protocol. This new one works on a protocol.

I think it should be named isValidProtocol instead of protocolIsValid, to make this slightly clearer. This name change can happen in a separate patch.

I didn’t look too closely at anything else in this patch -- a cursory look seems to indicate it’s right, so r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159689</commentid>
    <comment_count>20</comment_count>
      <attachid>42285</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-01 17:25:11 -0800</bug_when>
    <thetext>Comment on attachment 42285
Patch

Rejecting patch 42285 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
l/Projects/build/WebCore.build/Release/WebCore.build/Script-5D0D540D0E9862F60029E223.sh

Touch /Users/eseidel/Projects/build/Release/WebCore.framework
    cd /Users/eseidel/Projects/CommitQueue/WebCore
    /usr/bin/touch -c /Users/eseidel/Projects/build/Release/WebCore.framework
** BUILD FAILED **

The following build commands failed:
Derived Sources:
	PhaseScriptExecution &quot;/Users/eseidel/Projects/build/WebCore.build/Release/Derived Sources.build/Script-DD041FBD09D9DDBE0010AF2A.sh&quot;
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159691</commentid>
    <comment_count>21</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-11-01 17:34:26 -0800</bug_when>
    <thetext>Any suggestions on the build failure? I built and ran DRT with this patch on my MAC successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159966</commentid>
    <comment_count>22</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-11-02 18:54:42 -0800</bug_when>
    <thetext>Seems that the build problem is result of PublicDOMInterfaces.h not being updated with the new API. Strangely enough, it builds fine the second time I try.

Sam, Mark Row suggested on IRC that I ask you how to fix this problem. thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160478</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 10:02:07 -0800</bug_when>
    <thetext>@Yael:  I&apos;m not sure who you&apos;re asking.  If you&apos;re asking me, I don&apos;t have an answer.  If something requires two builds to work right, that seems like a build system issue and something that probably should be solved before we try and land this patch.  The commit-queue has no way to know to build a patch twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160487</commentid>
    <comment_count>24</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-11-04 10:14:46 -0800</bug_when>
    <thetext>The first build runs CodeGeneratorObjC.pm to generate the ObjC bindings, and then checks if public interfaces changed (PublicDOMInterfaces.h). Since the API of DOMHTMLAnchorElement changed, the script simply dies. (CodeGeneratorObjC.pm line 297).

The second time, the ObjC bindigns are already generated, so there is no check of SDK API, and the build succeeds. 

I would really appreciate if someone from Apple could help me resolve this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160862</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-05 10:21:14 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; The first build runs CodeGeneratorObjC.pm to generate the ObjC bindings, and
&gt; then checks if public interfaces changed (PublicDOMInterfaces.h). Since the API
&gt; of DOMHTMLAnchorElement changed, the script simply dies. (CodeGeneratorObjC.pm
&gt; line 297).

Right, that means that this change can break Mac OS X applications who depend on the current interface. I think, however, that changing read-only properties to be read-write is actually an acceptable change. We’ll need to talk to Tim Hatcher about how to resolve this. For the short term, one possibility is to put #if in the IDL file that makes the attributes be read-only in Objective-C for now, and read-write only in all other languages.

&gt; The second time, the ObjC bindigns are already generated, so there is no check
&gt; of SDK API, and the build succeeds. 

The fact that the build succeeds a second time is a bug in the build system. If a patch violates the rules about changing public DOM interfaces that should be a permanent build failure, not one we can work around by rebuilding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160887</commentid>
    <comment_count>26</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-05 11:07:19 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; The first build runs CodeGeneratorObjC.pm to generate the ObjC bindings, and
&gt; &gt; then checks if public interfaces changed (PublicDOMInterfaces.h). Since the API
&gt; &gt; of DOMHTMLAnchorElement changed, the script simply dies. (CodeGeneratorObjC.pm
&gt; &gt; line 297).
&gt; 
&gt; Right, that means that this change can break Mac OS X applications who depend
&gt; on the current interface. I think, however, that changing read-only properties
&gt; to be read-write is actually an acceptable change. We’ll need to talk to Tim
&gt; Hatcher about how to resolve this. For the short term, one possibility is to
&gt; put #if in the IDL file that makes the attributes be read-only in Objective-C
&gt; for now, and read-write only in all other languages.

Those are really the only two options (make it public or #ifdef it to be readonly), since ObjC properties can&apos;t be split between public and private headers like two getter and setter methods can.

&gt; &gt; The second time, the ObjC bindigns are already generated, so there is no check
&gt; &gt; of SDK API, and the build succeeds. 
&gt; 
&gt; The fact that the build succeeds a second time is a bug in the build system. If
&gt; a patch violates the rules about changing public DOM interfaces that should be
&gt; a permanent build failure, not one we can work around by rebuilding.

That is a bug, we need to remove the generated file so it gets rebuilt each time until the public change is resolved. Filed as bug 31178.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160905</commentid>
    <comment_count>27</comment_count>
      <attachid>42584</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-11-05 11:52:48 -0800</bug_when>
    <thetext>Created attachment 42584
Patch

Add #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C flag in the IDL file, to preserve the behavior for ObjC bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160963</commentid>
    <comment_count>28</comment_count>
      <attachid>42584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-05 14:56:47 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Rejecting patch 42584 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11579 test cases.
http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe.html -&gt; failed

Exiting early after 1 failures. 9001 tests run.
256.78s total testing time

9000 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160973</commentid>
    <comment_count>29</comment_count>
      <attachid>42584</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 15:13:48 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

That test seems unrelated.  I suspect it&apos;s just flakey.  I&apos;ve filed bug 31190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160983</commentid>
    <comment_count>30</comment_count>
      <attachid>42584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-05 15:23:39 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Rejecting patch 42584 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11579 test cases.
http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe.html -&gt; failed

Exiting early after 1 failures. 9001 tests run.
255.35s total testing time

9000 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160996</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 15:34:24 -0800</bug_when>
    <thetext>Two failures in a row would suggest this is a real failure.  Not sure what&apos;s wrong with the patch, but it&apos;s causing at least one layout test regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161123</commentid>
    <comment_count>32</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-11-06 05:24:45 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Two failures in a row would suggest this is a real failure.  Not sure what&apos;s
&gt; wrong with the patch, but it&apos;s causing at least one layout test regression.

thanks for the effort, Eric. I will look into this failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162110</commentid>
    <comment_count>33</comment_count>
      <attachid>42584</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 10:56:39 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Actually I think I was wrong about the failure.  I&apos;ve filed bug 31305 and lets queue this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162122</commentid>
    <comment_count>34</comment_count>
      <attachid>42584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 11:08:45 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Rejecting patch 42584 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11590 test cases.
http/tests/security/mixedContent/insecure-image-in-main-frame.html -&gt; failed

Exiting early after 1 failures. 9001 tests run.
254.96s total testing time

9000 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162126</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 11:14:38 -0800</bug_when>
    <thetext>Different, but related failure.  Not sure who is at fault here.  This patch, or bug 31305...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162277</commentid>
    <comment_count>36</comment_count>
      <attachid>42584</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-10 16:29:56 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Adding this back to the cq.  The commit-queue is blocked until bug 31200 is resolved anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162305</commentid>
    <comment_count>37</comment_count>
      <attachid>42584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 18:07:28 -0800</bug_when>
    <thetext>Comment on attachment 42584
Patch

Clearing flags on attachment: 42584

Committed r50784: &lt;http://trac.webkit.org/changeset/50784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162306</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 18:07:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40460</attachid>
            <date>2009-10-01 10:52:16 -0700</date>
            <delta_ts>2009-10-03 17:09:52 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>14304</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODk4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDktMTAtMDEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IEphdmFTY3JpcHQgdG8gbWFuaXB1bGF0ZSBwYXJ0cyBvZiB0aGUgVVJMIGluIGhyZWYg
YXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjk5NzIuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgZGlmZmVyZW50IHBh
cnRzIG9mIHRoZSBVUkwgaW4gaHJlZiBhdHRyaWJ1dGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGFydHMuaHRtbAorCisgICAgICAgICogaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxl
bWVudDo6c2V0SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0
SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0SG9zdG5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFBhdGhuYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNo
b3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGw6CisKIDIw
MDktMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaWRsCShyZXZpc2lvbiA0ODg5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE0ICszNywxMyBAQAogICAgICAgICBhdHRy
aWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgdGFyZ2V0
OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBE
T01TdHJpbmcgdHlwZTsKIAotICAgICAgICAvLyBJRSBFeHRlbnNpb25zCi0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaGFzaDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBob3N0OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhv
c3RuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBhdGhuYW1lOwot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7Ci0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvdG9jb2w7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgaGFzaDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGhvc3Q7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBob3N0bmFtZTsKKyAgICAgICAgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGhuYW1lOworICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgcG9ydDsKKyAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHByb3RvY29s
OworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
c2VhcmNoOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHQ7CiAKICNp
ZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gNDg4OTQpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiAr
MzQzLDE2IEBACiAgICAgcmV0dXJuIGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkgPyAiIiA6
ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6
c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOwor
ICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCIjIikpCisgICAgICAgIHVybC5zZXRGcmFnbWVudElk
ZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRG
cmFnbWVudElkZW50aWZpZXIodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30K
KwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkgY29uc3QKIHsKICAgICBjb25zdCBL
VVJMJiB1cmwgPSBocmVmKCk7CkBAIC0zNTMsMzIgKzM2Myw3OSBAQAogICAgIHJldHVybiB1cmwu
aG9zdCgpICsgIjoiICsgU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSk7CiB9CiAKK3ZvaWQgSFRN
TEFuY2hvckVsZW1lbnQ6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJM
IHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOworICAgIHNldEhy
ZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFu
Y2hvckVsZW1lbnQ6OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VS
TCB1cmwgPSBocmVmKCk7CisgICAgdXJsLnNldEhvc3QodmFsdWUpOworICAgIHNldEhyZWYodXJs
LnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpwYXRobmFtZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVs
ZW1lbnQ6OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwg
PSBocmVmKCk7CisgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoIi8iKSkKKyAgICAgICAgdXJsLnNl
dFBhdGgodmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgdXJsLnNldFBhdGgoIi8iICsgdmFsdWUp
OworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVt
ZW50Ojpwb3J0KCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBv
cnQoKSk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBvcnQoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0UG9ydCh2YWx1
ZS50b1VJbnQoKSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRN
TEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnBy
b3RvY29sKCkgKyAiOiI7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVybC5zZXRQcm90b2NvbCh2
YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hv
ckVsZW1lbnQ6OnNlYXJjaCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1
ZXJ5KCk7CiAgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/ICIiIDogIj8iICsgcXVlcnk7CiB9
CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVybC5zZXRRdWVyeSh2YWx1ZSk7Cisg
ICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6
OnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBpbm5lclRleHQoKTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCShyZXZpc2lvbiA0ODg5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMjYgQEAKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKIAogICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRIYXNoKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIGhvc3QoKSBj
b25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgaG9z
dG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworCiAg
ICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXRobmFtZShjb25zdCBT
dHJpbmcmKTsKKwogICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNv
bnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsK
KyAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyB0ZXh0KCkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0VsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhcnRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1wYXJ0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXJ0cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYyNQorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjI1CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MjUKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg2MDkKKyAgICAgIFJlbmRlcklubGluZSB7
QX0gYXQgKDAsMCkgc2l6ZSA3OHgyMSBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzh4MjEKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3ODogImZpcnN0IGFuY2hvciIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDc4LDE2
KSBzaXplIDB4MAorICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDEwNXgyMSBb
Y29sb3I9IzAwMDBFRV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDIxKSBzaXpl
IDEwNXgyMQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIxKSB3aWR0aCAxMDU6ICJzZWNvbmQg
YW5jaG9yIgorICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMTA1LDM3KSBzaXplIDB4MAorICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDQyKSBzaXplIDExNngyMQorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw0Mikgd2lkdGggMTE2OiAiMS4gcHJvdG9jb2wgaHR0cHM6IgorICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMTE2LDU4KSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDYzKSBzaXplIDEwOHgyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2Mykgd2lkdGggMTA4
OiAiMi4gcHJvdG9jb2wgaHR0cDoiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgxMDgsNzkpIHNp
emUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsODQpIHNpemUgMTA4eDIxCisg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDg0KSB3aWR0aCAxMDg6ICIzLiBwcm90b2NvbCBodHRwOiIK
KyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDEwOCwxMDApIHNpemUgMHgwCisgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMTA1KSBzaXplIDIzOXgyMQorICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwxMDUpIHdpZHRoIDIzOTogIjQuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwIgorICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMjM5LDEyMSkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwxMjYpIHNpemUgMTQ4eDIxCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEyNikg
d2lkdGggMTQ4OiAiNS4gaG9zdCB3d3cubXlvdGhlciIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDE0OCwxNDIpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTQ3KSBz
aXplIDU2eDIxCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0Nykgd2lkdGggNTY6ICI2LiBwYXRo
IC8iCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1NiwxNjMpIHNpemUgMHgwCisgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTY4KSBzaXplIDUxeDIxCisgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE2OCkgd2lkdGggNTE6ICI3LiBob3N0ICIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDUx
LDE4NCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxODkpIHNpemUg
MjM5eDIxCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4OSkgd2lkdGggMjM5OiAiOC4gaG9zdG5h
bWUgd3d3Lm15ZG9tYWluLmNvbSIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIzOSwyMDUpIHNp
emUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMjEwKSBzaXplIDIzOXgyMQor
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMTApIHdpZHRoIDIzOTogIjkuIGhvc3RuYW1lIHd3dy5t
eWRvbWFpbi5jb20iCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyMzksMjI2KSBzaXplIDB4MAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDIzMSkgc2l6ZSAxMDB4MjEKKyAgICAgICAg
dGV4dCBydW4gYXQgKDAsMjMxKSB3aWR0aCAxMDA6ICIxMC4gaG9zdG5hbWUgIgorICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMTAwLDI0Nykgc2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwyNTIpIHNpemUgOTN4MjEKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMjUyKSB3aWR0
aCA5MzogIjExLiBwb3J0IDgwODAiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg5MywyNjgpIHNp
emUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMjczKSBzaXplIDY2eDIxCisg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDI3Mykgd2lkdGggNjY6ICIxMi4gcG9ydCAwIgorICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoNjYsMjg5KSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDI5NCkgc2l6ZSA2NngyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyOTQpIHdp
ZHRoIDY2OiAiMTMuIHBvcnQgMCIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDY2LDMxMCkgc2l6
ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwzMTUpIHNpemUgMjQ0eDIxCisg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDMxNSkgd2lkdGggMjQ0OiAiMTQuIHBhdGhuYW1lIC9vcmln
cGF0aC90ZXN0dXJsLmh0bWwiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyNDQsMzMxKSBzaXpl
IDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDMzNikgc2l6ZSAyMDB4MjEKKyAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMzM2KSB3aWR0aCAyMDA6ICIxNS4gcGF0aG5hbWUgL25ld3Bh
dGguaHRtbCIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIwMCwzNTIpIHNpemUgMHgwCisgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMzU3KSBzaXplIDIxNHgyMQorICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwzNTcpIHdpZHRoIDIxNDogIjE2LiBwYXRobmFtZSAvbmV3ZXJwYXRoLmh0bWwi
CisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyMTQsMzczKSBzaXplIDB4MAorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDM3OCkgc2l6ZSAxMDV4MjEKKyAgICAgICAgdGV4dCBydW4gYXQg
KDAsMzc4KSB3aWR0aCAxMDU6ICIxNy4gcGF0aG5hbWUgLyIKKyAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDEwNSwzOTQpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMzk5
KSBzaXplIDE2MHgyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOTkpIHdpZHRoIDE2MDogIjE4
LiBzZWFyY2ggP2tleT12YWx1ZSIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDE2MCw0MTUpIHNp
emUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsNDIwKSBzaXplIDE2MHgyMQor
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MjApIHdpZHRoIDE2MDogIjE5LiBzZWFyY2ggP3ZhbHVl
PWtleSIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDE2MCw0MzYpIHNpemUgMHgwCisgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsNDQxKSBzaXplIDE2MHgyMQorICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw0NDEpIHdpZHRoIDE2MDogIjIwLiBzZWFyY2ggP3ZhbHVlPWtleSIKKyAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDE2MCw0NTcpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsNDYyKSBzaXplIDc4eDIxCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ2Mikgd2lk
dGggNzg6ICIyMS4gc2VhcmNoICIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDc4LDQ3OCkgc2l6
ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw0ODMpIHNpemUgOTZ4MjEKKyAg
ICAgICAgdGV4dCBydW4gYXQgKDAsNDgzKSB3aWR0aCA5NjogIjIyLiBoYXNoICN0b3AiCisgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICg5Niw0OTkpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsNTA0KSBzaXplIDEyMngyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1MDQp
IHdpZHRoIDEyMjogIjIzLiBoYXNoICNib3R0b20iCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgx
MjIsNTIwKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDUyNSkgc2l6
ZSA5NXgyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1MjUpIHdpZHRoIDk1OiAiMjQuIGhhc2gg
I2xlZnQiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg5NSw1NDEpIHNpemUgMHgwCisgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsNTQ2KSBzaXplIDY1eDIxCisgICAgICAgIHRleHQgcnVu
IGF0ICgwLDU0Nikgd2lkdGggNjU6ICIyNS4gaGFzaCAiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICg2NSw1NjIpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsNTY3KSBz
aXplIDQ1NXgyMQorICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1NjcpIHdpZHRoIDQ1NTogIjI2LiBo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9uZXdlcnBhdGguaHRtbD92YWx1ZT1rZXkiCisg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg0NTUsNTgzKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDU4OCkgc2l6ZSAzMjN4MjEKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
NTg4KSB3aWR0aCAzMjM6ICIyNy4gaHR0cDovL3d3dy5teWRvbWFpbi5jb20vdGVzdHVybC5odG1s
I2xlZnQiCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzMjMsNjA0KSBzaXplIDB4MApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGFydHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1wYXJ0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGFydHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MyBAQAorPGh0bWw+Cis8Ym9keT4KKzxhIGhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiPmZpcnN0IGFuY2hvcjwv
YT48YnI+Cis8YSBocmVmPSJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS90ZXN0dXJsLmh0bWwjdG9w
Ij5zZWNvbmQgYW5jaG9yPC9hPjxicj4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgordmFyIGkgPSAwOworZnVuY3Rpb24gd3JpdGVvbmVsaW5lKHMpIHsKKyAgaSsrOworICBkb2N1
bWVudC53cml0ZShpICsgIi4gIiArIHMgKyAiPGJyPiIpOworfQorCit3cml0ZW9uZWxpbmUoInBy
b3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7Citkb2N1bWVudC5saW5rc1sw
XS5wcm90b2NvbD0iaHR0cCI7Cit3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5s
aW5rc1swXS5wcm90b2NvbCk7Citkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbD1udWxsOword3Jp
dGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworZG9j
dW1lbnQubGlua3NbMF0ucHJvdG9jb2w9Imh0dHBzIjsKKword3JpdGVvbmVsaW5lKCJob3N0ICIg
KyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKK2RvY3VtZW50LmxpbmtzWzBdLmhvc3Q9Ind3dy5t
eW90aGVyP2RvbWFpbi5jb206MCI7Cit3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOword3JpdGVvbmVsaW5lKCJwYXRoICIgKyBkb2N1bWVudC5saW5rc1swXS5w
YXRobmFtZSk7Citkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZT0iL3Jlc3RvcmVkcGF0aC5odG1s
IjsKK2RvY3VtZW50LmxpbmtzWzBdLmhvc3Q9bnVsbDsKK3dyaXRlb25lbGluZSgiaG9zdCAiICsg
ZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7Citkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsK
Kword3JpdGVvbmVsaW5lKCJob3N0bmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdG5hbWUp
OworZG9jdW1lbnQubGlua3NbMF0uaG9zdG5hbWU9Ind3dy5teWRvbWFpbi5jb20iOword3JpdGVv
bmVsaW5lKCJob3N0bmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdG5hbWUpOworZG9jdW1l
bnQubGlua3NbMF0uaG9zdG5hbWU9bnVsbDsKK3dyaXRlb25lbGluZSgiaG9zdG5hbWUgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLmhvc3RuYW1lKTsKK2RvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUi
OworCit3cml0ZW9uZWxpbmUoInBvcnQgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBvcnQpOword3Jp
dGVvbmVsaW5lKCJwb3J0ICIgKyBkb2N1bWVudC5saW5rc1sxXS5wb3J0KTsKK2RvY3VtZW50Lmxp
bmtzWzFdLnBvcnQ9MDsKK3dyaXRlb25lbGluZSgicG9ydCAiICsgZG9jdW1lbnQubGlua3NbMV0u
cG9ydCk7CisKK3dyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBh
dGhuYW1lKTsKK2RvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lPSIvbmV3cGF0aC5odG1sIjsKK3dy
aXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKK2Rv
Y3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lPSJuZXdlcnBhdGguaHRtbCI7Cit3cml0ZW9uZWxpbmUo
InBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7Citkb2N1bWVudC5saW5r
c1swXS5wYXRobmFtZT1udWxsOword3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQu
bGlua3NbMF0ucGF0aG5hbWUpOworZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWU9Im5ld2VycGF0
aC5odG1sIjsKKword3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNl
YXJjaCk7Citkb2N1bWVudC5saW5rc1swXS5zZWFyY2g9Ij92YWx1ZT1rZXkiOword3JpdGVvbmVs
aW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7Citkb2N1bWVudC5saW5r
c1swXS5zZWFyY2g9InZhbHVlPWtleSI7Cit3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1l
bnQubGlua3NbMF0uc2VhcmNoKTsKK2RvY3VtZW50LmxpbmtzWzBdLnNlYXJjaD1udWxsOword3Jp
dGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7Citkb2N1bWVu
dC5saW5rc1swXS5zZWFyY2g9Ij92YWx1ZT1rZXkiOworCit3cml0ZW9uZWxpbmUoImhhc2ggIiAr
IGRvY3VtZW50LmxpbmtzWzFdLmhhc2gpOworZG9jdW1lbnQubGlua3NbMV0uaGFzaD0iYm90dG9t
IjsKK3dyaXRlb25lbGluZSgiaGFzaCAiICsgZG9jdW1lbnQubGlua3NbMV0uaGFzaCk7Citkb2N1
bWVudC5saW5rc1sxXS5oYXNoPSIjbGVmdCI7Cit3cml0ZW9uZWxpbmUoImhhc2ggIiArIGRvY3Vt
ZW50LmxpbmtzWzFdLmhhc2gpOworZG9jdW1lbnQubGlua3NbMV0uaGFzaD1udWxsOword3JpdGVv
bmVsaW5lKCJoYXNoICIgKyBkb2N1bWVudC5saW5rc1sxXS5oYXNoKTsKK2RvY3VtZW50Lmxpbmtz
WzFdLmhhc2g9IiNsZWZ0IjsKKword3JpdGVvbmVsaW5lKGRvY3VtZW50LmxpbmtzWzBdLmhyZWYp
Oword3JpdGVvbmVsaW5lKGRvY3VtZW50LmxpbmtzWzFdLmhyZWYpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4OTgzKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTAtMDEgIFlh
ZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IEphdmFTY3JpcHQgdG8gbWFuaXB1bGF0
ZSBwYXJ0cyBvZiB0aGUgVVJMIGluIGhyZWYgYXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzIKKworICAgICAgICBUZXN0Y2FzZSBm
b3Igc2V0dGluZyBhbmQgZ2V0dGluZyBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIFVSTC4KKworICAg
ICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhcnRzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcGFydHMuaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4K
</data>
<flag name="review"
          id="21681"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40586</attachid>
            <date>2009-10-03 17:09:52 -0700</date>
            <delta_ts>2009-10-22 07:05:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>56593</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTA2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDktMTAtMDMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IEphdmFTY3JpcHQgdG8gbWFuaXB1bGF0ZSBwYXJ0cyBvZiB0aGUgVVJMIGluIGhyZWYg
YXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjk5NzIuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgZGlmZmVyZW50IHBh
cnRzIG9mIHRoZSBVUkwgaW4gaHJlZiBhdHRyaWJ1dGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1o
b3N0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1o
cmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50OjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5j
aG9yRWxlbWVudDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVs
ZW1lbnQ6OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFy
Y2gpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxBbmNob3JFbGVtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIHBs
YXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aXNQcm90b2NvbFZhbGlk
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNsZWFyUG9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpLVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnNldEZyYWdtZW50SWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwpOgorICAgICAgICAq
IHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6Omhhc1BvcnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKwogMjAwOS0xMC0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL0tVUkwuaAkocmV2aXNpb24gNDkwNjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQAogICAgIEtVUkwoY29uc3QgS1VSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSk7CiAgICAgS1VSTChjb25zdCBLVVJMJiBiYXNlLCBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKIAorICAgIHN0YXRp
YyBib29sIGlzUHJvdG9jb2xWYWxpZChjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKwogI2lmIFVT
RShHT09HTEVVUkwpCiAgICAgLy8gRm9yIGNvbnZlcnNpb25zIGZvciBvdGhlciBzdHJ1Y3R1cmVz
IHRoYXQgaGF2ZSBhbHJlYWR5IHBhcnNlZCBhbmQKICAgICAvLyBjYW5vbmljYWxpemVkIHRoZSBV
UkwuIFRoZSBpbnB1dCBtdXN0IGJlIGV4YWN0bHkgd2hhdCBLVVJMIHdvdWxkIGhhdmUKQEAgLTEz
MSwxMSArMTMzLDEyIEBACiAgICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsK
ICAgICBib29sIHByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0xvY2Fs
RmlsZSgpIGNvbnN0OworICAgIGJvb2wgaGFzUG9ydCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7
CiAKLSAgICAvLyBTZXR0aW5nIHRoZSBwb3J0IHRvIDAgd2lsbCBjbGVhciBhbnkgcG9ydCBmcm9t
IHRoZSBVUkwuCisgICAgdm9pZCBjbGVhclBvcnQoKTsKICAgICB2b2lkIHNldFBvcnQodW5zaWdu
ZWQgc2hvcnQpOwogCiAgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206
ODAwMCIuCkBAIC0xOTgsMTAgKzIwMSwxMCBAQAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHBy
aW50KCkgY29uc3Q7CiAjZW5kaWYKKyAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgYm9vbCBpc0hpZXJhcmNoaWNh
bCgpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciopOwogI2lmIFVTRShHT09HTEVVUkwpCiAgICAgZnJpZW5kIGNsYXNzIEtVUkxHb29n
bGVQcml2YXRlOwpAQCAtMzE3LDYgKzMyMCwxMSBAQAogICAgIHJldHVybiBtX2lzVmFsaWQ7CiB9
CiAKK2lubGluZSBib29sIEtVUkw6Omhhc1BvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2hv
c3RFbmQgPCBtX3BvcnRFbmQ7Cit9CisKIGlubGluZSBib29sIEtVUkw6OnByb3RvY29sSW5IVFRQ
RmFtaWx5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm90b2NvbEluSFRUUEZhbWlseTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAkocmV2aXNpb24gNDkwNjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjUsNyArODY1
LDcgQEAKICAgICAvLyB1c2luZyBHSU8gaW50ZXJuYWxseSwgYW5kIHByb3ZpZGluZyBVUklzIGlu
c3RlYWQgb2YgZmlsZSBwYXRocwogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsK
ICAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOwotICAgIHVybC5zZXRQb3J0KDApOworICAgIHVy
bC5jbGVhclBvcnQoKTsKIAogI2lmICFQTEFURk9STShXSU5fT1MpCiAgICAgLy8gd2UgYXZvaWQg
dGhlIGVzY2FwaW5nIGZvciBsb2NhbCBmaWxlcywgYmVjYXVzZQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShy
ZXZpc2lvbiA0OTA2NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyNiw2ICs1MjYsMTkgQEAKICAgICB9CiB9CiAKK2Jvb2wgS1VSTDo6aXNQcm90b2Nv
bFZhbGlkKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIo
cHJvdG9jb2xbMF0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChpbnQgaSA9IDE7
IGkgPCBwcm90b2NvbC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICghaXNTY2hlbWVDaGFy
KHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIEtVUkwgS1VSTDo6Y29weSgpIGNvbnN0CiB7CiAgICAgS1VSTCByZXN1
bHQgPSAqdGhpczsKQEAgLTY4NSwxOCArNjk4LDIwIEBACiAgICAgcGFyc2UobV9zdHJpbmcubGVm
dChob3N0U3RhcnQoKSkgKyAoc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIikgKyBzICsgbV9z
dHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogfQogCit2b2lkIEtVUkw6OmNsZWFyUG9ydCgp
Cit7CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcG9ydEVuZCkpOworfQorCiB2b2lkIEtVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQg
aSkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGkp
IHsKLSAgICAgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7Ci0g
ICAgICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RF
bmQgKyAxKTsKKyAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsK
KyAgICBpbnQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5k
ICsgMSk7CiAKLSAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9u
TmVlZGVkID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJp
bmcobV9wb3J0RW5kKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQo
bV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKKyAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBTdHJp
bmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKIH0KIAogdm9p
ZCBLVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQpAQCAtNzY2
LDcgKzc4MSwxMCBAQAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTm9uLUFTQ0lJ
IGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkg
ZXhwZWN0YXRpb25zLgotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkgKyAiIyIg
KyBzKTsKKyAgICBpZiAocy5pc0VtcHR5KCkpCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQo
bV9xdWVyeUVuZCkpOworICAgIGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1
ZXJ5RW5kKSArICIjIiArIHMpOwogfQogCiB2b2lkIEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpCkBAIC04MTksNyArODM3LDcgQEAKICAgICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQo
J0AnKTsKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkpOwotICAg
ICAgICBpZiAocG9ydCgpICE9IDApIHsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkgewogICAgICAg
ICAgICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwogICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0
eSwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNDkwNjYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
OCArMjU3LDkgQEAKICAgICBjb25zdCBVU3RyaW5nJiBwb3J0U3RyaW5nID0gdmFsdWUudG9TdHJp
bmcoZXhlYyk7CiAgICAgaW50IHBvcnQgPSBjaGFyYWN0ZXJzVG9JbnQocG9ydFN0cmluZy5kYXRh
KCksIHBvcnRTdHJpbmcuc2l6ZSgpKTsKICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4RkZG
RikKLSAgICAgICAgcG9ydCA9IDA7Ci0gICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgICAgIHVy
bC5jbGVhclBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAg
ICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+
YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmlkbAkocmV2aXNpb24gNDkwNjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAK
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9N
U3RyaW5nIHRhcmdldDsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
ZywgUmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CiAKLSAgICAgICAgLy8gSUUgRXh0ZW5zaW9ucwot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7Ci0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBob3N0bmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBwYXRobmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0Owot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOwotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGhhc2g7CisgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRy
aWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwYXRobmFt
ZTsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IHBvcnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBwcm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIHNlYXJjaDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0ZXh0OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9K
QVZBU0NSSVBUCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ5
MDY2KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQzLDYgKzM0MywxOCBAQAogICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuaXNF
bXB0eSgpID8gIiIgOiAiIyIgKyBmcmFnbWVudElkZW50aWZpZXI7CiB9CiAKK3ZvaWQgSFRNTEFu
Y2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBTZXR0
ZXIgcHJlcHJvY2Vzc29yCisgICAgLy8gUmVtb3ZlIG9uZSBsZWFkaW5nIFUrMDAyMyBOVU1CRVIg
U0lHTiAoIiMiKSBjaGFyYWN0ZXIsIGlmIGFueSAKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAg
ICBpZiAodmFsdWUuc3RhcnRzV2l0aCgiIyIpKQorICAgICAgICB1cmwuc2V0RnJhZ21lbnRJZGVu
dGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0RnJh
Z21lbnRJZGVudGlmaWVyKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisK
IFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6aG9zdCgpIGNvbnN0CiB7CiAgICAgY29uc3QgS1VS
TCYgdXJsID0gaHJlZigpOwpAQCAtMzUzLDMyICszNjUsMTU4IEBACiAgICAgcmV0dXJuIHVybC5o
b3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKTsKIH0KIAordm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIC8vIFNl
dHRlciBjb25kaXRpb246CisgICAgLy8gVGhlIG5ldyB2YWx1ZSBpcyBub3QgdGhlIGVtcHR5IHN0
cmluZyBhbmQgaW5wdXQgaXMgaGllcmFyY2hpY2FsIGFuZCB1c2VzCisgICAgLy8gYSBzZXJ2ZXIt
YmFzZWQgbmFtaW5nIGF1dGhvcml0eSAKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuaXNIaWVyYXJj
aGljYWwoKSB8fCB1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IGludCBzZXBhcmF0b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisgICAgLy8gUkZDIDM5ODYgMy4yIDog
VVJJIHByb2R1Y2VycyBhbmQgbm9ybWFsaXplcnMgc2hvdWxkIG9taXQgdGhlICI6IiBkZWxpbWl0
ZXIgdGhhdAorICAgIC8vIHNlcGFyYXRlcyBob3N0IGZyb20gcG9ydCBpZiB0aGUgcG9ydCBjb21w
b25lbnQgaXMgZW1wdHkKKyAgICBpZiAoc2VwYXJhdG9yID09IHZhbHVlLmxlbmd0aCgpIC0gMSkK
KyAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3Ip
KTsKKyAgICBlbHNlIGlmIChzZXBhcmF0b3IgPT0gLTEpCisgICAgICAgIHVybC5zZXRIb3N0QW5k
UG9ydCh2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZpcmVGb3ggcmVqZWN0cyB0aGUg
cG9ydCBpZiBpdCBpcyBub3QgbnVtZXJpY2FsIHZhbHVlLgorICAgICAgICAvLyBBY2NlcHQgdGhl
IHBvcnQgcG9ydGlvbiBvbmx5IGlmIGl0IGlzIG51bWVyaWNhbCwKKyAgICAgICAgLy8gYW5kIG5v
dCBkZWZhdWx0IGZvciB0aGUgc2NoZW1lLgorICAgICAgICBpbnQgaSA9IHNlcGFyYXRvciArIDE7
CisgICAgICAgIGZvciAoOyBpIDwgdmFsdWUubGVuZ3RoKCkgJiYgaXNBU0NJSURpZ2l0KHZhbHVl
W2ldKTsgaSsrKTsKKyAgICAgICAgaWYgKGkgPCB2YWx1ZS5sZW5ndGgoKSB8fCBTZWN1cml0eU9y
aWdpbjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3Ig
KyAxKS50b1VJbnQoKSwgdXJsLnByb3RvY29sKCkgKSkKKyAgICAgICAgICAgIHVybC5zZXRIb3N0
QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgfQorICAgIHNldEhyZWYo
dXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hv
ckVsZW1lbnQ6OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gU2V0
dGVyIHByZXByb2Nlc3NvcjoKKyAgICAvL1JlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURV
UyAoIi8iKSBjaGFyYWN0ZXJzIAorICAgIGludCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHZhbHVl
Lmxlbmd0aCgpICYmIHZhbHVlW2ldID09ICcvJzsgaSsrKTsKKyAgICAvLyBTZXR0ZXIgY29uZGl0
aW9uOgorICAgIC8vIFRoZSBuZXcgdmFsdWUgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgYW5kIGlu
cHV0IGlzIGhpZXJhcmNoaWNhbCBhbmQgdXNlcworICAgIC8vIGEgc2VydmVyLWJhc2VkIG5hbWlu
ZyBhdXRob3JpdHkgCisgICAgaWYgKGkgPT0gdmFsdWUubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBTdHJpbmcgc3VidmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoaSk7CisgICAgaWYgKHN1
YnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEtVUkwgdXJsID0gaHJlZigp
OworICAgIGlmICghdXJsLmlzSGllcmFyY2hpY2FsKCkgfHwgdXJsLmlzTG9jYWxGaWxlKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICB1cmwuc2V0SG9zdChzdWJ2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBhdGhuYW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnBhdGgoKTsKIH0KIAordm9pZCBIVE1MQW5jaG9y
RWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBTZXR0
ZXIgcHJlcHJvY2Vzc29yCisgICAgLy9JZiBpdCBoYXMgbm8gbGVhZGluZyBVKzAwMkYgU09MSURV
UyAoIi8iKSBjaGFyYWN0ZXIsIHByZXBlbmQgYSBVKzAwMkYgU09MSURVUyAoIi8iKSBjaGFyYWN0
ZXIgdG8gdGhlIG5ldyB2YWx1ZSAKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFs
dWUuc3RhcnRzV2l0aCgiLyIpKQorICAgICAgICB1cmwuc2V0UGF0aCh2YWx1ZSk7CisgICAgZWxz
ZQorICAgICAgICB1cmwuc2V0UGF0aCgiLyIgKyB2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3Ry
aW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBvcnQoKSBjb25zdAogewog
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihocmVmKCkucG9ydCgpKTsKIH0KIAordm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIC8vIFNl
dHRlciBjb25kaXRpb246CisgICAgLy8gaW5wdXQgaXMgaGllcmFyY2hpY2FsIGFuZCB1c2VzIGEg
c2VydmVyLWJhc2VkIG5hbWluZyBhdXRob3JpdHkgCisgICAgS1VSTCB1cmwgPSBocmVmKCk7Cisg
ICAgaWYgKCF1cmwuaXNIaWVyYXJjaGljYWwoKSB8fCB1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIEZpcmVGb3ggcmVqZWN0cyB0aGUgcG9ydCBpZiBpdCBpcyBub3Qg
bnVtZXJpY2FsIHZhbHVlLgorICAgIC8vIFdlIGFjY2VwdCB0aGUgcG9ydCBpZiBpdCBpcyBudW1l
cmljYWwgYW5kIG5vdCBkZWZhdWx0IGZvciB0aGUgc2NoZW1lLAorICAgIC8vIGVsc2UgcmVtb3Zl
IHRoZSBwb3J0LgorICAgIGludCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IHZhbHVlLmxlbmd0aCgp
ICYmIGlzQVNDSUlEaWdpdCh2YWx1ZVtpXSk7IGkrKyk7CisgICAgaWYgKGkgPCB2YWx1ZS5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChTZWN1cml0eU9yaWdpbjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHZhbHVlLnRvVUludCgpLCB1cmwucHJvdG9jb2woKSApKQorICAgICAg
ICB1cmwuY2xlYXJQb3J0KCk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UG9ydCh2YWx1ZS50
b1VJbnQoKSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFu
Y2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnByb3Rv
Y29sKCkgKyAiOiI7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29sKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gU2V0dGVyIHByZXByb2Nlc3NvcjoKKyAgICAv
LyBSZW1vdmUgYWxsIHRyYWlsaW5nIFUrMDAzQSBDT0xPTiAoIjoiKSBjaGFyYWN0ZXJzICAKKyAg
ICAvLyBGb2xsb3dpbmcgRmlyZUZveCB3aGljaCByZW1vdmVzIGFueXRoaW5nIGFmdGVyIHRoZSBm
aXJzdCAiOiIKKyAgICBpbnQgc2VwYXJhdG9yID0gdmFsdWUuZmluZCgiOiIpOworICAgIC8vIFNl
dHRlciBjb25kaXRpb246CisgICAgLy8gVGhlIG5ldyB2YWx1ZSBpcyBub3QgdGhlIGVtcHR5IHN0
cmluZyAKKyAgICBpZiAoc2VwYXJhdG9yID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
dmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgS1VSTCB1cmwgPSBocmVmKCk7
CisgICAgaWYgKHNlcGFyYXRvciA+IDApICB7CisgICAgICAgIFN0cmluZyBzdWJ2YWx1ZSA9IHZh
bHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpOworICAgICAgICBpZiAoIUtVUkw6OmlzUHJvdG9j
b2xWYWxpZChzdWJ2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVybC5zZXRQ
cm90b2NvbChzdWJ2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIUtVUkw6
OmlzUHJvdG9jb2xWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVy
bC5zZXRQcm90b2NvbCh2YWx1ZSk7CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsK
K30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpzZWFyY2goKSBjb25zdAogewogICAgIFN0
cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOwogICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkg
PyAiIiA6ICI/IiArIHF1ZXJ5OwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFy
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBTZXR0ZXIgcHJlcHJvY2Vzc29yCisg
ICAgLy8gUmVtb3ZlIG9uZSBsZWFkaW5nIFUrMDAzRiBRVUVTVElPTiBNQVJLICgiPyIpIGNoYXJh
Y3RlciwgaWYgYW55IAorICAgIC8vIEFscmVhZHkgaGFuZGxlZCBieSBLVVJMOjpzZXRTZWFyY2gK
KyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgiPyIpKQor
ICAgICAgICB1cmwuc2V0UXVlcnkodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBlbHNlCisgICAg
ICAgIHVybC5zZXRRdWVyeSh2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQor
CiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBp
bm5lclRleHQoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCShyZXZpc2lvbiA0OTA2
NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMiArMzksMjYgQEAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsK
IAogICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNoKGNvbnN0IFN0cmlu
ZyYpOworCiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3Qg
U3RyaW5nJik7CisKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhv
c3RuYW1lKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBwb3J0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBy
b3RvY29sKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKwog
ICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJp
bmcmKTsKKwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ5MDY2KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsOCAr
NTk1LDggQEAKICAgICBLVVJMIHVybDsKICAgICB1cmwuc2V0UHJvdG9jb2wobV9VUkwucHJvdG9j
b2woKSk7CiAgICAgdXJsLnNldEhvc3QobV9VUkwuaG9zdCgpKTsKLSAgICBpZiAoaW50IHBvcnQg
PSBtX1VSTC5wb3J0KCkpCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIGlmIChtX1VS
TC5oYXNQb3J0KCkpCisgICAgICAgIHVybC5zZXRQb3J0KG1fVVJMLnBvcnQoKSk7CiAgICAgdXJs
LnNldFBhdGgoIi9mYXZpY29uLmljbyIpOwogICAgIHJldHVybiB1cmw7CiB9CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJv
dG9jb2wuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgaSA9IDA7CitmdW5j
dGlvbiB3cml0ZW9uZWxpbmUocykgeworICBpKys7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSArICIuICIg
KyBzICsgIlxuIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAKKyAgICAvLyBwcm90b2NvbAorICAgIGRvY3VtZW50LmxpbmtzWzBd
LnByb3RvY29sPSJodHRwIjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVu
dC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVu
dC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVu
dC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVu
dC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQu
bGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbD0i
aHR0cDpmb28iOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1sw
XS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAg
IGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sPSJodHRwOn5mb28iOworICAgIHdyaXRlb25lbGlu
ZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9u
ZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGlu
ZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9u
ZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGlu
ZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3Vt
ZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRo
L3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29s
PSJodHRwfmZvbyI7CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlu
a3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlu
a3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlu
a3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlu
a3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50Lmxpbmtz
WzBdLnNlYXJjaCk7CisgICAgCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7Cisg
ICAgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2w9Imh0dHA9Zm9vIjsKKyAgICB3cml0ZW9uZWxp
bmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVv
bmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxp
bmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVv
bmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxp
bmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBkb2N1
bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wcm90b2Nv
bD0iaHR0cC1mb28iOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5r
c1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOwor
ICAgIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sPSI6aHR0cCI7CisgICAgd3JpdGVvbmVsaW5l
KCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25l
bGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5l
KCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25l
bGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5l
KCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5s
aW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbD1udWxs
OworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3Rv
Y29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3Qp
OworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhu
YW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYp
OworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8
YSBocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlIj5maXJzdCBhbmNob3I8L2E+PGJyPgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1o
YXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorCit2YXIgaSA9IDA7CitmdW5jdGlvbiB3cml0ZW9uZWxpbmUocykgeworICBpKys7CisgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoaSArICIuICIgKyBzICsgIlxuIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAvLyBoYXNoCisgICAgZG9jdW1l
bnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgv
dGVzdHVybC5odG1sI21pZGRsZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0uaGFzaD0iYm90dG9t
IjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90
b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0
KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRo
bmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVm
KTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNo
KTsKKyAgICB3cml0ZW9uZWxpbmUoImhhc2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLmhhc2gpOwor
CisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0u
aGFzaD0iI2xlZnQiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5r
c1swXS5zZWFyY2gpOworICAgIHdyaXRlb25lbGluZSgiaGFzaCAiICsgZG9jdW1lbnQubGlua3Nb
MF0uaGFzaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRv
bWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKKyAgICBkb2N1bWVu
dC5saW5rc1swXS5oYXNoPSI/cmlnaHQiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiAr
IGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiAr
IGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiAr
IGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiAr
IGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBk
b2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworICAgIHdyaXRlb25lbGluZSgiaGFzaCAiICsgZG9j
dW1lbnQubGlua3NbMF0uaGFzaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsK
KyAgICBkb2N1bWVudC5saW5rc1swXS5oYXNoPSJ0I29wIjsKKyAgICB3cml0ZW9uZWxpbmUoInBy
b3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5l
KCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBh
dGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5l
KCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNl
YXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICB3cml0ZW9uZWxpbmUoImhh
c2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLmhhc2gpOworCisgICAgZG9jdW1lbnQubGlua3NbMF0u
aHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1s
I21pZGRsZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0uaGFzaD0idCVvcCI7CisgICAgd3JpdGVv
bmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdy
aXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVv
bmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdy
aXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVv
bmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisgICAgd3JpdGVv
bmVsaW5lKCJoYXNoICIgKyBkb2N1bWVudC5saW5rc1swXS5oYXNoKTsKKworICAgIGRvY3VtZW50
LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rl
c3R1cmwuaHRtbCNtaWRkbGUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLmhhc2g9bnVsbDsKKyAg
ICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7
CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAg
ICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7
CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAg
ICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAg
ICB3cml0ZW9uZWxpbmUoImhhc2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLmhhc2gpOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8YSBocmVmPSJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlIj5maXJzdCBhbmNob3I8L2E+PGJyPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
ZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIg
aSA9IDA7CitmdW5jdGlvbiB3cml0ZW9uZWxpbmUocykgeworICBpKys7CisgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoaSArICIuICIgKyBzICsgIlxuIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAvL3BvcnQKKyAgICBkb2N1bWVudC5saW5rc1sw
XS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wb3J0PTQ0MzsKKyAgICB3cml0
ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAg
d3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0
ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAg
d3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0
ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAg
ICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9v
cmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5w
b3J0PSI0NDMiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxpbmtz
WzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1sw
XS5zZWFyY2gpOworCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlk
b21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9j
dW1lbnQubGlua3NbMF0ucG9ydD0iMCI7CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsg
ZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsg
ZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsg
ZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsg
ZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRv
Y3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wb3J0PSI0YSI7CisgICAgd3JpdGVvbmVsaW5l
KCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25l
bGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5l
KCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25l
bGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5l
KCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5s
aW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wb3J0PTA7CisgICAg
d3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOwor
ICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAg
d3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOwor
ICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAg
d3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisgICAg
CisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQubGlua3Nb
MF0ucG9ydD1udWxsOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5r
c1swXS5zZWFyY2gpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdHMoKSI+Cis8YSBocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIj5maXJzdCBhbmNob3I8L2E+PGJyPgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgaSA9IDA7CitmdW5jdGlvbiB3cml0ZW9uZWxpbmUo
cykgeworICBpKys7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSArICIuICIgKyBzICsgIlxuIikpOworfQor
CitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
IC8vIHNlYXJjaAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3Vt
ZW50LmxpbmtzWzBdLnNlYXJjaD0iP3ZhbHVlPWtleSI7CisgICAgd3JpdGVvbmVsaW5lKCJwcm90
b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25lbGluZSgi
aG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5lKCJwYXRo
bmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25lbGluZSgi
aHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5lKCJzZWFy
Y2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1sw
XS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5zZWFyY2g9InZhbHVlPWtleSI7
CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9j
b2wpOworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7
CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5h
bWUpOworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7
CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7
CisgICAgCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQu
bGlua3NbMF0uc2VhcmNoPSI/dmFsdWUra2V5IjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29s
ICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0
ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1l
ICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVm
ICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAi
ICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBkb2N1bWVudC5saW5rc1sw
XS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5zZWFyY2g9InZhbHVlJmtleSI7
CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9j
b2wpOworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7
CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5h
bWUpOworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7
CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7
CisgICAgCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQu
bGlua3NbMF0uc2VhcmNoPSJ2YWx1ZSVrZXkiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wg
IiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3Qg
IiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUg
IiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYg
IiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIg
KyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBd
LmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRt
bD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaD0idmFsdWUja2V5IjsK
KyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2Nv
bCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsK
KyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFt
ZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsK
KyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsK
KyAgICB3cml0ZW9uZWxpbmUoImhhc2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLmhhc2gpOworICAg
IAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50Lmxpbmtz
WzBdLnNlYXJjaD0idmFsdWUla2V5IjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBk
b2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBk
b2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBk
b2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBk
b2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9j
dW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVm
PSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5
PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5zZWFyY2g9bnVsbDsKKyAgICB3cml0ZW9u
ZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3Jp
dGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9u
ZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3Jp
dGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9u
ZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGEgaHJlZj0iaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI+
Zmlyc3QgYW5jaG9yPC9hPjxicj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0
aG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorZmlyc3QgYW5jaG9yCisxLiBwcm90b2Nv
bCBodHRwczoKKzIuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCiszLiBwYXRobmFtZSAvbmV3
cGF0aC5odG1sCis0LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL25ld3BhdGgu
aHRtbD9rZXk9dmFsdWUKKzUuIHNlYXJjaCA/a2V5PXZhbHVlCis2LiBwcm90b2NvbCBodHRwczoK
KzcuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCis4LiBwYXRobmFtZSAvbmV3cGF0aC5odG1s
Cis5LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL25ld3BhdGguaHRtbD9rZXk9
dmFsdWUKKzEwLiBzZWFyY2ggP2tleT12YWx1ZQorMTEuIHByb3RvY29sIGh0dHBzOgorMTIuIGhv
c3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCisxMy4gcGF0aG5hbWUgLy9uZXdwYXRoLmh0bWwKKzE0
LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwLy9uZXdwYXRoLmh0bWw/a2V5PXZh
bHVlCisxNS4gc2VhcmNoID9rZXk9dmFsdWUKKzE2LiBwcm90b2NvbCBodHRwczoKKzE3LiBob3N0
IHd3dy5teWRvbWFpbi5jb206ODA4MAorMTguIHBhdGhuYW1lIC9wYXRoLmh0bWwKKzE5LiBocmVm
IGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGguaHRtbD9rZXk9dmFsdWUKKzIwLiBz
ZWFyY2ggP2tleT12YWx1ZQorMjEuIHByb3RvY29sIGh0dHBzOgorMjIuIGhvc3Qgd3d3Lm15ZG9t
YWluLmNvbTo4MDgwCisyMy4gcGF0aG5hbWUgLworMjQuIGhyZWYgaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjgwODAvP2tleT12YWx1ZQorMjUuIHNlYXJjaCA/a2V5PXZhbHVlCisyNi4gcHJvdG9j
b2wgaHR0cHM6CisyNy4gaG9zdCB3d3cubXlkb21haW4uY29tOjgwODAKKzI4LiBwYXRobmFtZSAv
bmV3JHBhdGguaHRtbAorMjkuIGhyZWYgaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvbmV3
JHBhdGguaHRtbD9rZXk9dmFsdWUKKzMwLiBzZWFyY2ggP2tleT12YWx1ZQorMzEuIHByb3RvY29s
IGh0dHBzOgorMzIuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCiszMy4gcGF0aG5hbWUgL25l
dz9wYXRoLmh0bWwKKzM0LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL25ldyUz
RnBhdGguaHRtbD9rZXk9dmFsdWUKKzM1LiBzZWFyY2ggP2tleT12YWx1ZQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9z
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
CitmaXJzdCBhbmNob3IKKzEuIHByb3RvY29sIGh0dHBzOgorMi4gaG9zdCB3d3cubXlvdGhlcmRv
bWFpbi5jb206MAorMy4gcGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorNC4gaHJlZiBo
dHRwczovL3d3dy5teW90aGVyZG9tYWluLmNvbTowL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9
dmFsdWUKKzUuIHNlYXJjaCA/a2V5PXZhbHVlCis2LiBwcm90b2NvbCBodHRwczoKKzcuIGhvc3Qg
d3d3Lm15b3RoZXJkb21haW4uY29tOjAKKzguIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0
bWwKKzkuIGhyZWYgaHR0cHM6Ly93d3cubXlvdGhlcmRvbWFpbi5jb206MC9vcmlncGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlCisxMC4gc2VhcmNoID9rZXk9dmFsdWUKKzExLiBwcm90b2NvbCBo
dHRwczoKKzEyLiBob3N0IHd3dy5teW90aGVyCisxMy4gcGF0aG5hbWUgLworMTQuIGhyZWYgaHR0
cHM6Ly93d3cubXlvdGhlci8/ZG9tYWluLmNvbTo4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5
PXZhbHVlCisxNS4gc2VhcmNoID9kb21haW4uY29tOjgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9r
ZXk9dmFsdWUKKzE2LiBwcm90b2NvbCBodHRwczoKKzE3LiBob3N0IHd3dy5teW90aGVyZG9tYWlu
LmNvbTo4MAorMTguIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzE5LiBocmVmIGh0
dHBzOi8vd3d3Lm15b3RoZXJkb21haW4uY29tOjgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9
dmFsdWUKKzIwLiBzZWFyY2ggP2tleT12YWx1ZQorMjEuIHByb3RvY29sIGh0dHA6CisyMi4gaG9z
dCB3d3cubXlvdGhlcmRvbWFpbi5jb20KKzIzLiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5o
dG1sCisyNC4gaHJlZiBodHRwOi8vd3d3Lm15b3RoZXJkb21haW4uY29tL29yaWdwYXRoL3Rlc3R1
cmwuaHRtbD9rZXk9dmFsdWUKKzI1LiBzZWFyY2ggP2tleT12YWx1ZQorMjYuIHByb3RvY29sIGh0
dHA6CisyNy4gaG9zdCB3d3cubXlvdGhlcmRvbWFpbi5jb20KKzI4LiBwYXRobmFtZSAvb3JpZ3Bh
dGgvdGVzdHVybC5odG1sCisyOS4gaHJlZiBodHRwOi8vd3d3Lm15b3RoZXJkb21haW4uY29tL29y
aWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUKKzMwLiBzZWFyY2ggP2tleT12YWx1ZQorMzEu
IHByb3RvY29sIGh0dHBzOgorMzIuIGhvc3Qgd3d3Lm15b3RoZXJkb21haW4uY29tCiszMy4gcGF0
aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMzQuIGhyZWYgaHR0cHM6Ly93d3cubXlvdGhl
cmRvbWFpbi5jb20vb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorMzUuIHNlYXJjaCA/
a2V5PXZhbHVlCiszNi4gcHJvdG9jb2wgaHR0cHM6CiszNy4gaG9zdCB3d3cubXlkb21haW4uY29t
OjgwODAKKzM4LiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCiszOS4gaHJlZiBodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVl
Cis0MC4gc2VhcmNoID9rZXk9dmFsdWUKKzQxLiBwcm90b2NvbCBmaWxlOgorNDIuIGhvc3QgCis0
My4gcGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorNDQuIGhyZWYgZmlsZTovLy9vcmln
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCis0NS4gc2VhcmNoID9rZXk9dmFsdWUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorZmlyc3QgYW5jaG9yCisxLiBwcm90b2NvbCBodHRwczoKKzIu
IGhvc3Qgd3d3Lm15b3RoZXJkb21haW4uY29tOjgwODAKKzMuIHBhdGhuYW1lIC9vcmlncGF0aC90
ZXN0dXJsLmh0bWwKKzQuIGhyZWYgaHR0cHM6Ly93d3cubXlvdGhlcmRvbWFpbi5jb206ODA4MC9v
cmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCis1LiBzZWFyY2ggP2tleT12YWx1ZQorNi4g
cHJvdG9jb2wgaHR0cHM6Cis3LiBob3N0IHd3dy5teW90aGVyZG9tYWluLmNvbQorOC4gcGF0aG5h
bWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorOS4gaHJlZiBodHRwczovL3d3dy5teW90aGVyZG9t
YWluLmNvbS9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCisxMC4gc2VhcmNoID9rZXk9
dmFsdWUKKzExLiBwcm90b2NvbCBodHRwczoKKzEyLiBob3N0IHd3dy5teW90aGVyZG9tYWluLmNv
bQorMTMuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzE0LiBocmVmIGh0dHBzOi8v
d3d3Lm15b3RoZXJkb21haW4uY29tL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUKKzE1
LiBzZWFyY2ggP2tleT12YWx1ZQorMTYuIHByb3RvY29sIGh0dHBzOgorMTcuIGhvc3Qgd3d3Lm15
b3RoZXIKKzE4LiBwYXRobmFtZSAvCisxOS4gaHJlZiBodHRwczovL3d3dy5teW90aGVyLz9kb21h
aW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorMjAuIHNlYXJjaCA/
ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUKKzIxLiBwcm90
b2NvbCBodHRwczoKKzIyLiBob3N0IHd3dy5teW90aGVyCisyMy4gcGF0aG5hbWUgLworMjQuIGhy
ZWYgaHR0cHM6Ly93d3cubXlvdGhlci8jZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUKKzI1LiBzZWFyY2ggCisyNi4gcHJvdG9jb2wgaHR0cHM6CisyNy4gaG9z
dCB3d3cubXlkb21haW4uY29tOjgwODAKKzI4LiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5o
dG1sCisyOS4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlCiszMC4gc2VhcmNoID9rZXk9dmFsdWUKKzMxLiBwcm90b2NvbCBm
aWxlOgorMzIuIGhvc3QgCiszMy4gcGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMzQu
IGhyZWYgZmlsZTovLy9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCiszNS4gc2VhcmNo
ID9rZXk9dmFsdWUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorZmlyc3QgYW5jaG9yCisxLiBw
cm90b2NvbCBodHRwOgorMi4gaG9zdCB3d3cubXlkb21haW4uY29tOjgwODAKKzMuIHBhdGhuYW1l
IC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzQuIGhyZWYgaHR0cDovL3d3dy5teWRvbWFpbi5jb206
ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCis1LiBzZWFyY2ggP2tleT12YWx1
ZQorNi4gcHJvdG9jb2wgaHR0cDoKKzcuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCis4LiBw
YXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCis5LiBocmVmIGh0dHA6Ly93d3cubXlkb21h
aW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorMTAuIHNlYXJjaCA/
a2V5PXZhbHVlCisxMS4gcHJvdG9jb2wgaHR0cDoKKzEyLiBob3N0IHd3dy5teWRvbWFpbi5jb206
ODA4MAorMTMuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzE0LiBocmVmIGh0dHA6
Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQor
MTUuIHNlYXJjaCA/a2V5PXZhbHVlCisxNi4gcHJvdG9jb2wgaHR0cHM6CisxNy4gaG9zdCB3d3cu
bXlkb21haW4uY29tOjgwODAKKzE4LiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCisx
OS4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlCisyMC4gc2VhcmNoID9rZXk9dmFsdWUKKzIxLiBwcm90b2NvbCBodHRwczoK
KzIyLiBob3N0IHd3dy5teWRvbWFpbi5jb206ODA4MAorMjMuIHBhdGhuYW1lIC9vcmlncGF0aC90
ZXN0dXJsLmh0bWwKKzI0LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdw
YXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUKKzI1LiBzZWFyY2ggP2tleT12YWx1ZQorMjYuIHBy
b3RvY29sIGh0dHAtZm9vOgorMjcuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCisyOC4gcGF0
aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMjkuIGhyZWYgaHR0cC1mb286Ly93d3cubXlk
b21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorMzAuIHNlYXJj
aCA/a2V5PXZhbHVlCiszMS4gcHJvdG9jb2wgaHR0cHM6CiszMi4gaG9zdCB3d3cubXlkb21haW4u
Y29tOjgwODAKKzMzLiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCiszNC4gaHJlZiBo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlCiszNS4gc2VhcmNoID9rZXk9dmFsdWUKKzM2LiBwcm90b2NvbCBodHRwczoKKzM3LiBob3N0
IHd3dy5teWRvbWFpbi5jb206ODA4MAorMzguIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0
bWwKKzM5LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1
cmwuaHRtbD9rZXk9dmFsdWUKKzQwLiBzZWFyY2ggP2tleT12YWx1ZQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACitm
aXJzdCBhbmNob3IKKzEuIHByb3RvY29sIGh0dHBzOgorMi4gaG9zdCB3d3cubXlkb21haW4uY29t
OjgwODAKKzMuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzQuIGhyZWYgaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sI2JvdHRvbQorNS4g
c2VhcmNoIAorNi4gaGFzaCAjYm90dG9tCis3LiBwcm90b2NvbCBodHRwczoKKzguIGhvc3Qgd3d3
Lm15ZG9tYWluLmNvbTo4MDgwCis5LiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCisx
MC4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0
bWwjbGVmdAorMTEuIHNlYXJjaCAKKzEyLiBoYXNoICNsZWZ0CisxMy4gcHJvdG9jb2wgaHR0cHM6
CisxNC4gaG9zdCB3d3cubXlkb21haW4uY29tOjgwODAKKzE1LiBwYXRobmFtZSAvb3JpZ3BhdGgv
dGVzdHVybC5odG1sCisxNi4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmln
cGF0aC90ZXN0dXJsLmh0bWwjP3JpZ2h0CisxNy4gc2VhcmNoIAorMTguIGhhc2ggIz9yaWdodAor
MTkuIHByb3RvY29sIGh0dHBzOgorMjAuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCisyMS4g
cGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMjIuIGhyZWYgaHR0cHM6Ly93d3cubXlk
b21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sI3QlMjNvcAorMjMuIHNlYXJjaCAK
KzI0LiBoYXNoICN0JTIzb3AKKzI1LiBwcm90b2NvbCBodHRwczoKKzI2LiBob3N0IHd3dy5teWRv
bWFpbi5jb206ODA4MAorMjcuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzI4LiBo
cmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbCN0
JW9wCisyOS4gc2VhcmNoIAorMzAuIGhhc2ggI3Qlb3AKKzMxLiBwcm90b2NvbCBodHRwczoKKzMy
LiBob3N0IHd3dy5teWRvbWFpbi5jb206ODA4MAorMzMuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0
dXJsLmh0bWwKKzM0LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRo
L3Rlc3R1cmwuaHRtbAorMzUuIHNlYXJjaCAKKzM2LiBoYXNoIAorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRo
bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgaSA9IDA7CitmdW5jdGlvbiB3
cml0ZW9uZWxpbmUocykgeworICBpKys7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSArICIuICIgKyBzICsg
IlxuIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAvLyBwYXRobmFtZQorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUi
OworICAgIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lPSIvbmV3cGF0aC5odG1sIjsKKyAgICB3
cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7Cisg
ICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3
cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7Cisg
ICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3
cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKworICAg
IGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29y
aWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLnBh
dGhuYW1lPSJuZXdwYXRoLmh0bWwiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1
bWVudC5saW5rc1swXS5zZWFyY2gpOworCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWU9Ii8vbmV3cGF0aC5odG1sIjsKKyAg
ICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7
CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAg
ICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7
CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAg
ICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKwor
ICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBd
LnBhdGhuYW1lPSIvbmV3Ly4uL3BhdGguaHRtbCI7CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2Nv
bCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25lbGluZSgiaG9z
dCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFt
ZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25lbGluZSgiaHJl
ZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2gg
IiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1swXS5o
cmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/
a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZT1udWxsOworICAgIHdy
aXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAg
ICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdy
aXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAg
ICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdy
aXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworCisgICAg
ZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3Jp
Z3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0ucGF0
aG5hbWU9Im5ldyRwYXRoLmh0bWwiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRv
Y3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1
bWVudC5saW5rc1swXS5zZWFyY2gpOworCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWU9Im5ldz9wYXRoLmh0bWwiOworICAg
IHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsK
KyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAg
IHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsK
KyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAg
IHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Cis8YSBocmVm
PSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5
PXZhbHVlIj5maXJzdCBhbmNob3I8L2E+PGJyPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2
YXIgaSA9IDA7CitmdW5jdGlvbiB3cml0ZW9uZWxpbmUocykgeworICBpKys7CisgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoaSArICIuICIgKyBzICsgIlxuIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsK
KworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAvLyBob3N0CisgICAgZG9jdW1lbnQubGlu
a3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVy
bC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0uaG9zdD0id3d3Lm15b3Ro
ZXJkb21haW4uY29tOjAiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50
LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50
LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50
LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50
LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5s
aW5rc1swXS5zZWFyY2gpOworCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7Cisg
ICAgZG9jdW1lbnQubGlua3NbMF0uaG9zdD0iLy93d3cubXlvdGhlcmRvbWFpbi5jb206MCI7Cisg
ICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wp
OworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7Cisg
ICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUp
OworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7Cisg
ICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7CisK
KyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4
MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1sw
XS5ob3N0PSJ3d3cubXlvdGhlcj9kb21haW4uY29tOjgwIjsKKyAgICB3cml0ZW9uZWxpbmUoInBy
b3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5l
KCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBh
dGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5l
KCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNl
YXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBkb2N1bWVudC5s
aW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5ob3N0PSJ3d3cubXlv
dGhlcmRvbWFpbi5jb206ODAiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3Vt
ZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3Vt
ZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3Vt
ZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3Vt
ZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVu
dC5saW5rc1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLmhvc3Q9Ind3dy5teW90aGVyZG9tYWluLmNvbTo0
NDMiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sPSJodHRwIjsKKyAgICB3cml0ZW9u
ZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3Jp
dGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9u
ZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3Jp
dGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9u
ZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNoKTsKKyAgICAKKyAgICBk
b2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmln
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5ob3N0
PSJ3d3cubXlvdGhlcmRvbWFpbi5jb206NDQzYSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0ucHJv
dG9jb2w9Imh0dHAiOworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5r
c1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOwor
ICAgIGRvY3VtZW50LmxpbmtzWzBdLmhvc3Q9Ind3dy5teW90aGVyZG9tYWluLmNvbToiOworICAg
IHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsK
KyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAg
IHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsK
KyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAg
IHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworICAg
IAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50Lmxpbmtz
WzBdLmhvc3Q9bnVsbDsgLy8gRmlyZUZveCB3cm9uZ2x5IGFjY2VwdHMgbnVsbCwgYWdhaW5zdCB0
aGUgSFRNTDUgc3BlYworICAgIHdyaXRlb25lbGluZSgicHJvdG9jb2wgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxpbmUoImhvc3QgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgicGF0aG5hbWUgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxpbmUoImhyZWYgIiArIGRvY3VtZW50Lmxp
bmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5r
c1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9ImZpbGU6Ly8v
b3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQubGlua3NbMF0u
aG9zdD0ibXlkb21haW4uY29tIjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1
bWVudC5saW5rc1swXS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1
bWVudC5saW5rc1swXS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1
bWVudC5saW5rc1swXS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1
bWVudC5saW5rc1swXS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1l
bnQubGlua3NbMF0uc2VhcmNoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3RzKCkiPgorPGEgaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
b3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI+Zmlyc3QgYW5jaG9yPC9hPjxicj4KKzxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9z
dG5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIGkgPSAwOworZnVuY3Rpb24g
d3JpdGVvbmVsaW5lKHMpIHsKKyAgaSsrOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkgKyAiLiAiICsgcyAr
ICJcbiIpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgLy8gaG9zdG5hbWUKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVl
IjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5ob3N0bmFtZT0id3d3Lm15b3RoZXJkb21haW4uY29t
IjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1swXS5wcm90
b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1swXS5ob3N0
KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1swXS5wYXRo
bmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1swXS5ocmVm
KTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0uc2VhcmNo
KTsKKworICAgIGRvY3VtZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1sw
XS5ob3N0bmFtZT0iLy93d3cubXlvdGhlcmRvbWFpbi5jb20iOworICAgIHdyaXRlb25lbGluZSgi
cHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9uZWxp
bmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGluZSgi
cGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9uZWxp
bmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGluZSgi
c2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworCisgICAgZG9jdW1lbnQubGlu
a3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tL29yaWdwYXRoL3Rlc3R1cmwuaHRt
bD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLmhvc3RuYW1lPSIvL3d3dy5teW90
aGVyZG9tYWluLmNvbSI7CisgICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQu
bGlua3NbMF0ucHJvdG9jb2wpOworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQu
bGlua3NbMF0uaG9zdCk7CisgICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQu
bGlua3NbMF0ucGF0aG5hbWUpOworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQu
bGlua3NbMF0uaHJlZik7CisgICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50Lmxp
bmtzWzBdLnNlYXJjaCk7CisKKyAgICBkb2N1bWVudC5saW5rc1swXS5ocmVmPSJodHRwczovL3d3
dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKKyAg
ICBkb2N1bWVudC5saW5rc1swXS5ob3N0bmFtZT0id3d3Lm15b3RoZXI/ZG9tYWluLmNvbSI7Cisg
ICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wp
OworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7Cisg
ICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUp
OworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7Cisg
ICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7Cisg
ICAgCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CisgICAgZG9jdW1lbnQubGlu
a3NbMF0uaG9zdG5hbWU9Ind3dy5teW90aGVyI2RvbWFpbi5jb20iOworICAgIHdyaXRlb25lbGlu
ZSgicHJvdG9jb2wgIiArIGRvY3VtZW50LmxpbmtzWzBdLnByb3RvY29sKTsKKyAgICB3cml0ZW9u
ZWxpbmUoImhvc3QgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhvc3QpOworICAgIHdyaXRlb25lbGlu
ZSgicGF0aG5hbWUgIiArIGRvY3VtZW50LmxpbmtzWzBdLnBhdGhuYW1lKTsKKyAgICB3cml0ZW9u
ZWxpbmUoImhyZWYgIiArIGRvY3VtZW50LmxpbmtzWzBdLmhyZWYpOworICAgIHdyaXRlb25lbGlu
ZSgic2VhcmNoICIgKyBkb2N1bWVudC5saW5rc1swXS5zZWFyY2gpOworICAgIAorICAgIGRvY3Vt
ZW50LmxpbmtzWzBdLmhyZWY9Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL29yaWdwYXRo
L3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworICAgIGRvY3VtZW50LmxpbmtzWzBdLmhvc3RuYW1l
PW51bGw7IC8vIEZpcmVGb3ggYWNjZXB0cyBudWxsLCBhZ2FpbnN0IHRoZSBIVE1MNSBzcGVjCisg
ICAgd3JpdGVvbmVsaW5lKCJwcm90b2NvbCAiICsgZG9jdW1lbnQubGlua3NbMF0ucHJvdG9jb2wp
OworICAgIHdyaXRlb25lbGluZSgiaG9zdCAiICsgZG9jdW1lbnQubGlua3NbMF0uaG9zdCk7Cisg
ICAgd3JpdGVvbmVsaW5lKCJwYXRobmFtZSAiICsgZG9jdW1lbnQubGlua3NbMF0ucGF0aG5hbWUp
OworICAgIHdyaXRlb25lbGluZSgiaHJlZiAiICsgZG9jdW1lbnQubGlua3NbMF0uaHJlZik7Cisg
ICAgd3JpdGVvbmVsaW5lKCJzZWFyY2ggIiArIGRvY3VtZW50LmxpbmtzWzBdLnNlYXJjaCk7Cisg
ICAgCisgICAgZG9jdW1lbnQubGlua3NbMF0uaHJlZj0iZmlsZTovLy9vcmlncGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlIjsKKyAgICBkb2N1bWVudC5saW5rc1swXS5ob3N0bmFtZT0ibXlkb21h
aW4uY29tIjsKKyAgICB3cml0ZW9uZWxpbmUoInByb3RvY29sICIgKyBkb2N1bWVudC5saW5rc1sw
XS5wcm90b2NvbCk7CisgICAgd3JpdGVvbmVsaW5lKCJob3N0ICIgKyBkb2N1bWVudC5saW5rc1sw
XS5ob3N0KTsKKyAgICB3cml0ZW9uZWxpbmUoInBhdGhuYW1lICIgKyBkb2N1bWVudC5saW5rc1sw
XS5wYXRobmFtZSk7CisgICAgd3JpdGVvbmVsaW5lKCJocmVmICIgKyBkb2N1bWVudC5saW5rc1sw
XS5ocmVmKTsKKyAgICB3cml0ZW9uZWxpbmUoInNlYXJjaCAiICsgZG9jdW1lbnQubGlua3NbMF0u
c2VhcmNoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Rz
KCkiPgorPGEgaHJlZj0iaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZSI+Zmlyc3QgYW5jaG9yPC9hPjxicj4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1o
cmVmLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorZmlyc3QgYW5jaG9yCisx
LiBwcm90b2NvbCBodHRwczoKKzIuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbQorMy4gcGF0aG5hbWUg
L29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorNC4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb20v
b3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorNS4gc2VhcmNoID9rZXk9dmFsdWUKKzYu
IHByb3RvY29sIGh0dHBzOgorNy4gaG9zdCB3d3cubXlkb21haW4uY29tCis4LiBwYXRobmFtZSAv
b3JpZ3BhdGgvdGVzdHVybC5odG1sCis5LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9v
cmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlCisxMC4gc2VhcmNoID9rZXk9dmFsdWUKKzEx
LiBwcm90b2NvbCBodHRwczoKKzEyLiBob3N0IHd3dy5teWRvbWFpbi5jb206MAorMTMuIHBhdGhu
YW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzE0LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTowL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUKKzE1LiBzZWFyY2ggP2tleT12
YWx1ZQorMTYuIHByb3RvY29sIGh0dHBzOgorMTcuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgw
CisxOC4gcGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMTkuIGhyZWYgaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZQorMjAu
IHNlYXJjaCA/a2V5PXZhbHVlCisyMS4gcHJvdG9jb2wgaHR0cHM6CisyMi4gaG9zdCB3d3cubXlk
b21haW4uY29tOjAKKzIzLiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCisyNC4gaHJl
ZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlCisyNS4gc2VhcmNoID9rZXk9dmFsdWUKKzI2LiBwcm90b2NvbCBodHRwczoKKzI3LiBob3N0
IHd3dy5teWRvbWFpbi5jb206MAorMjguIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwK
KzI5LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL29yaWdwYXRoL3Rlc3R1cmwuaHRt
bD9rZXk9dmFsdWUKKzMwLiBzZWFyY2ggP2tleT12YWx1ZQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACitm
aXJzdCBhbmNob3IKKzEuIHByb3RvY29sIGh0dHBzOgorMi4gaG9zdCB3d3cubXlkb21haW4uY29t
OjgwODAKKzMuIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzQuIGhyZWYgaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP3ZhbHVlPWtleQor
NS4gc2VhcmNoID92YWx1ZT1rZXkKKzYuIHByb3RvY29sIGh0dHBzOgorNy4gaG9zdCB3d3cubXlk
b21haW4uY29tOjgwODAKKzguIHBhdGhuYW1lIC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzkuIGhy
ZWYgaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP3Zh
bHVlPWtleQorMTAuIHNlYXJjaCA/dmFsdWU9a2V5CisxMS4gcHJvdG9jb2wgaHR0cHM6CisxMi4g
aG9zdCB3d3cubXlkb21haW4uY29tOjgwODAKKzEzLiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVy
bC5odG1sCisxNC4gaHJlZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90
ZXN0dXJsLmh0bWw/dmFsdWUra2V5CisxNS4gc2VhcmNoID92YWx1ZStrZXkKKzE2LiBwcm90b2Nv
bCBodHRwczoKKzE3LiBob3N0IHd3dy5teWRvbWFpbi5jb206ODA4MAorMTguIHBhdGhuYW1lIC9v
cmlncGF0aC90ZXN0dXJsLmh0bWwKKzE5LiBocmVmIGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL29yaWdwYXRoL3Rlc3R1cmwuaHRtbD92YWx1ZSZrZXkKKzIwLiBzZWFyY2ggP3ZhbHVlJmtl
eQorMjEuIHByb3RvY29sIGh0dHBzOgorMjIuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCisy
My4gcGF0aG5hbWUgL29yaWdwYXRoL3Rlc3R1cmwuaHRtbAorMjQuIGhyZWYgaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvb3JpZ3BhdGgvdGVzdHVybC5odG1sP3ZhbHVlJWtleQorMjUuIHNl
YXJjaCA/dmFsdWUla2V5CisyNi4gcHJvdG9jb2wgaHR0cHM6CisyNy4gaG9zdCB3d3cubXlkb21h
aW4uY29tOjgwODAKKzI4LiBwYXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCisyOS4gaHJl
ZiBodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWw/dmFs
dWUja2V5CiszMC4gc2VhcmNoID92YWx1ZQorMzEuIGhhc2ggI2tleQorMzIuIHByb3RvY29sIGh0
dHBzOgorMzMuIGhvc3Qgd3d3Lm15ZG9tYWluLmNvbTo4MDgwCiszNC4gcGF0aG5hbWUgL29yaWdw
YXRoL3Rlc3R1cmwuaHRtbAorMzUuIGhyZWYgaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
b3JpZ3BhdGgvdGVzdHVybC5odG1sP3ZhbHVlJWtleQorMzYuIHNlYXJjaCA/dmFsdWUla2V5Cisz
Ny4gcHJvdG9jb2wgaHR0cHM6CiszOC4gaG9zdCB3d3cubXlkb21haW4uY29tOjgwODAKKzM5LiBw
YXRobmFtZSAvb3JpZ3BhdGgvdGVzdHVybC5odG1sCis0MC4gaHJlZiBodHRwczovL3d3dy5teWRv
bWFpbi5jb206ODA4MC9vcmlncGF0aC90ZXN0dXJsLmh0bWwKKzQxLiBzZWFyY2ggCisKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ5MDY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDktMTAtMDMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFsbG93IEphdmFTY3JpcHQgdG8gbWFuaXB1bGF0ZSBwYXJ0cyBvZiB0aGUgVVJMIGlu
IGhyZWYgYXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjk5NzIKKworICAgICAgICBUZXN0Y2FzZXMgZm9yIHNldHRpbmcgYW5kIGdldHRp
bmcgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBVUkwuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0
bmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtcG9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcHJvdG9jb2wuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFy
Y2guaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMDMgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0Bn
bWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCg==
</data>
<flag name="review"
          id="21827"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41658</attachid>
            <date>2009-10-22 07:05:59 -0700</date>
            <delta_ts>2009-10-22 11:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>55593</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTkyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMDktMTAtMjIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
aG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2Nh
dGlvbjo6c2V0UG9ydCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRQb3J0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9y
RWxlbWVudDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6
c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFBh
dGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGw6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmlzUHJvdG9jb2xWYWxpZCk6CisgICAgICAgIChXZWJD
b3JlOjpLVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnJlbW92ZVBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpzZXRIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNhblNldEhvc3RPclBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6Y2FuU2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6S1VS
TDo6aGFzUG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDA5LTEwLTIxICBEdW1pdHJ1
IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDQ5OTI5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAKICAgICBLVVJM
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwogICAgIEtVUkwoY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5n
Jik7CiAKKyAgICBzdGF0aWMgYm9vbCBpc1Byb3RvY29sVmFsaWQoY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CisKICNpZiBVU0UoR09PR0xFVVJMKQogICAgIC8vIEZvciBjb252ZXJzaW9ucyBmb3Ig
b3RoZXIgc3RydWN0dXJlcyB0aGF0IGhhdmUgYWxyZWFkeSBwYXJzZWQgYW5kCiAgICAgLy8gY2Fu
b25pY2FsaXplZCB0aGUgVVJMLiBUaGUgaW5wdXQgbXVzdCBiZSBleGFjdGx5IHdoYXQgS1VSTCB3
b3VsZCBoYXZlCkBAIC0xMDQsNiArMTA2LDE1IEBACiAgICAgLy8gbm9uLWhpZXJhcmNoaWNhbCAo
bGlrZSAiamF2YXNjcmlwdDoiKSBVUkxzIHdpbGwgaGF2ZSBubyBwYXRoLgogICAgIGJvb2wgaGFz
UGF0aCgpIGNvbnN0OwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIGFsbG93ZWQgdG8g
c2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMCisgICAgLy8gVGhpcyBpcyBhbGxvd2Vk
IGlmIHRoZSBVUkwgaXMgdmFsaWQsIGlzIGhpZXJhcmNoaWNhbCBhbmQgaGFzIGEKKyAgICAvLyBz
ZXJ2ZXIgYmFzZWQgbmFtaW5nIGF1dGhvcml0eS4KKyAgICAvLyBJRTggYWxsb3dzIHNldHRpbmcg
dGhlIGhvc3QgZm9yIGZvbzovLyBwcm90b2NvbCwgc28gZG9lcyBXZWJLaXQuCisgICAgYm9vbCBj
YW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgaXMgaGllcmFyY2hpY2FsLgorICAgIGJvb2wg
Y2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAg
CiAjaWYgVVNFKEdPT0dMRVVSTCkKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsLnN0cmluZygpOyB9CiAjZWxzZQpAQCAtMTMxLDExICsxNDIsMTIgQEAKICAg
ICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJ
bkhUVFBGYW1pbHkoKSBjb25zdDsKICAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQb3J0KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKIAotICAgIC8vIFNldHRpbmcg
dGhlIHBvcnQgdG8gMCB3aWxsIGNsZWFyIGFueSBwb3J0IGZyb20gdGhlIFVSTC4KKyAgICB2b2lk
IHJlbW92ZVBvcnQoKTsKICAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwogCiAgICAg
Ly8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCkBAIC0zMTcsNiAr
MzI5LDExIEBACiAgICAgcmV0dXJuIG1faXNWYWxpZDsKIH0KIAoraW5saW5lIGJvb2wgS1VSTDo6
aGFzUG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faG9zdEVuZCA8IG1fcG9ydEVuZDsKK30K
KwogaW5saW5lIGJvb2wgS1VSTDo6cHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdAogewogICAg
IHJldHVybiBtX3Byb3RvY29sSW5IVFRQRmFtaWx5OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCShyZXZpc2lvbiA0
OTkyOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Niw3ICs4NjYsNyBAQAogICAgIC8vIHVzaW5nIEdJ
TyBpbnRlcm5hbGx5LCBhbmQgcHJvdmlkaW5nIFVSSXMgaW5zdGVhZCBvZiBmaWxlIHBhdGhzCiAg
ICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIHVybC5zZXRRdWVyeShTdHJp
bmcoKSk7Ci0gICAgdXJsLnNldFBvcnQoMCk7CisgICAgdXJsLnJlbW92ZVBvcnQoKTsKIAogI2lm
ICFQTEFURk9STShXSU5fT1MpCiAgICAgLy8gd2UgYXZvaWQgdGhlIGVzY2FwaW5nIGZvciBsb2Nh
bCBmaWxlcywgYmVjYXVzZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiA0OTkyOSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsMjAg
QEAKICAgICB9CiB9CiAKK2Jvb2wgS1VSTDo6aXNQcm90b2NvbFZhbGlkKGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5s
ZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkr
KykgeworICAgICAgICBpZiAoIWlzU2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBLVVJMIEtVUkw6
OmNvcHkoKSBjb25zdAogewogICAgIEtVUkwgcmVzdWx0ID0gKnRoaXM7CkBAIC02ODAsMjMgKzY5
NCwzNyBAQAogICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCiAgICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSBob3N0LgogCisgICAgLy8gRG9u
J3Qgc2V0IHRoZSBob3N0IG9uIGEgbG9jYWwgZmlsZSBlLmcuIGM6L3BhdGgKKyAgICBpZiAobV9z
Y2hlbWVFbmQgPT0gMSAmJiBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCisgICAgICAg
IHJldHVybjsKKwogICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1f
c2NoZW1lRW5kICsgMTsKIAogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsg
KHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyht
X2hvc3RFbmQpKTsKIH0KIAordm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKK3sKKyAgICBpZiAoIW1f
aXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5k
KQorICAgICAgICByZXR1cm47CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworfQorCiB2b2lkIEtVUkw6OnNldFBvcnQo
dW5zaWduZWQgc2hvcnQgaSkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGkpIHsKLSAgICAgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9
PSBtX2hvc3RFbmQ7Ci0gICAgICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hv
c3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKKyAgICAvLyBEb24ndCBzZXQgdGhlIHBvcnQgb24gYSBs
b2NhbCBmaWxlIGUuZy4gYzovcGF0aAorICAgIGlmIChtX3NjaGVtZUVuZCA9PSAxICYmIG1fdXNl
clN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSAr
IFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotICAg
IH0gZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmlu
Zy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVu
ZCA9PSBtX2hvc3RFbmQ7CisgICAgaW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9z
dEVuZCA6IG1faG9zdEVuZCArIDEpOworCisgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3Rh
cnQpICsgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0
cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CiB9CiAKIHZvaWQgS1VSTDo6c2V0SG9zdEFuZFBv
cnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKQEAgLTcwNyw2ICs3MzUsMTAgQEAKICAgICAv
LyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVk
IHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAogICAgIC8vIGFuZCB0byBhdm9pZCBjaGFu
Z2luZyBtb3JlIHRoYW4ganVzdCBob3N0IGFuZCBwb3J0LgogCisgICAgLy8gRG9uJ3Qgc2V0IHRo
ZSBob3N0IG9uIGEgbG9jYWwgZmlsZSBlLmcuIGM6L3BhdGgKKyAgICBpZiAobV9zY2hlbWVFbmQg
PT0gMSAmJiBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCisgICAgICAgIHJldHVybjsK
KwogICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5k
ICsgMTsKIAogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xh
c2hOZWVkZWQgPyAiLy8iIDogIiIpICsgaG9zdEFuZFBvcnQgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kKSk7CkBAIC04MTksNyArODUxLDcgQEAKICAgICAgICAgICAgIGF1dGhvcml0eS5h
cHBlbmQoJ0AnKTsKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkp
OwotICAgICAgICBpZiAocG9ydCgpICE9IDApIHsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkgewog
ICAgICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwogICAgICAgICAgICAgYXBwZW5kKGF1
dGhvcml0eSwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CiAgICAgICAgIH0KQEAgLTEyNjksOCAr
MTMwMSw4IEBACiAgICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0gbV9wYXNzd29yZEVu
ZCA9IG1faG9zdEVuZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwogCiAgICAgLy8g
Rm9yIGNhbm9uaWNhbGl6YXRpb24sIGVuc3VyZSB3ZSBoYXZlIGEgJy8nIGZvciBubyBwYXRoLgot
ICAgIC8vIE9ubHkgZG8gdGhpcyBmb3IgaHR0cCBhbmQgaHR0cHMuCi0gICAgaWYgKG1fcHJvdG9j
b2xJbkhUVFBGYW1pbHkgJiYgcGF0aEVuZCAtIHBhdGhTdGFydCA9PSAwKQorICAgIC8vIE9ubHkg
ZG8gdGhpcyBmb3IgaHR0cCBhbmQgaHR0cHMsIHVubGVzcyB0aGUgVVJMIGlzIG5vdCBoaWVyYXJj
aGljYWwuCisgICAgaWYgKG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgJiYgaGllcmFyY2hpY2FsICYm
IHBhdGhFbmQgLSBwYXRoU3RhcnQgPT0gMCkKICAgICAgICAgKnArKyA9ICcvJzsKIAogICAgIC8v
IGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0OTkyOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw4ICsy
NTcsOSBAQAogICAgIGNvbnN0IFVTdHJpbmcmIHBvcnRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKTsKICAgICBpbnQgcG9ydCA9IGNoYXJhY3RlcnNUb0ludChwb3J0U3RyaW5nLmRhdGEoKSwg
cG9ydFN0cmluZy5zaXplKCkpOwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGKQot
ICAgICAgICBwb3J0ID0gMDsKLSAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICAgICAgdXJsLnJl
bW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAgICAg
bmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55
UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmlkbAkocmV2aXNpb24gNDk5MjkpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAKICAg
ICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3Ry
aW5nIHRhcmdldDsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CiAKLSAgICAgICAgLy8gSUUgRXh0ZW5zaW9ucwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBob3N0bmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBw
YXRobmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0OwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOwotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGhhc2g7CisgICAgICAgIGF0dHJpYnV0ZSBb
Q29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwYXRobmFtZTsK
KyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHBv
cnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBwcm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIHNlYXJjaDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
ZXh0OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZB
U0NSSVBUCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ5OTI5
KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsMjMgQEAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBbmNob3JFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg
YWxsb3cgbGVhZGluZyBzcGFjZXMgYmVmb3JlIHRoZSBwb3J0IG51bWJlci4KK3N0YXRpYyB1bnNp
Z25lZCBnZXRQb3J0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9y
dEVuZCkKK3sKKyAgICB1bnNpZ25lZCBwb3J0ID0gMDsKKyAgICBwb3J0RW5kID0gMDsKKyAgICB1
bnNpZ25lZCB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlIChwb3J0RW5k
IDwgdmFsdWVMZW5ndGggJiYgaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKKyAgICAgICAg
cG9ydEVuZCsrOworICAgIGlmIChwb3J0RW5kID4gMCkgeworICAgICAgICBpZiAocG9ydEVuZCA9
PSB2YWx1ZUxlbmd0aCkKKyAgICAgICAgICAgIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9ydCA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKS50
b1VJbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIHBvcnQ7Cit9CisKIGJvb2wgSFRNTEFuY2hvckVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewogICAgIGlmIChpc0NvbnRlbnRFZGl0YWJs
ZSgpKQpAQCAtMzYwLDYgKzM3NywxNiBAQAogICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIu
aXNFbXB0eSgpID8gIiIgOiAiIyIgKyBmcmFnbWVudElkZW50aWZpZXI7CiB9CiAKK3ZvaWQgSFRN
TEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJM
IHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQorICAgICAgICB1cmwuc2V0
RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CisgICAgZWxzZQorICAgICAg
ICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJp
bmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6aG9zdCgpIGNvbnN0CiB7CiAg
ICAgY29uc3QgS1VSTCYgdXJsID0gaHJlZigpOwpAQCAtMzcwLDMyICszOTcsMTQ4IEBACiAgICAg
cmV0dXJuIHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKTsKIH0K
IAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBLVVJMIHVy
bCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludCBzZXBhcmF0b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisgICAgaWYgKCFz
ZXBhcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzZXBhcmF0b3IgPT0gLTEpCisg
ICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHVu
c2lnbmVkIHBvcnRFbmQ7CisgICAgICAgIHVuc2lnbmVkIHBvcnQgPSBnZXRQb3J0RnJvbVN0cmlu
Zyh2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSksIHBvcnRFbmQpOworICAgICAgICBpZiAo
IXBvcnQpIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5m
cmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcworICAgICAg
ICAgICAgLy8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5zdCBSRkMgMzk4NiAocDMuMikgYW5kCisg
ICAgICAgICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBz
ZXQgdG8gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVl
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICIwIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0
KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNl
cGFyYXRvciArIDEgKyBwb3J0RW5kID09IHZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAx
ICsgcG9ydEVuZCkpOworICAgICAgICB9CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmVmb3JlIHNldHRpbmcg
bmV3IHZhbHVlOgorICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURVUyAoIi8i
KSBjaGFyYWN0ZXJzLgorICAgIGludCBpID0gMDsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoID0g
dmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKGkgPCBob3N0TGVuZ3RoICYmIHZhbHVlW2ldID09
ICcvJykKKyAgICAgICAgaSsrOworCisgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgU3RyaW5nIHN1YnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKGkpOworICAg
IEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXJsLnNldEhvc3Qoc3VidmFsdWUpOworICAgIHNldEhyZWYo
dXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpwYXRobmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hv
ckVsZW1lbnQ6OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1
cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHZhbHVlWzBdID09ICcvJykKKyAgICAgICAgdXJsLnNldFBhdGgodmFs
dWUpOworICAgIGVsc2UKKyAgICAgICAgdXJsLnNldFBhdGgoIi8iICsgdmFsdWUpOworCisgICAg
c2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBv
cnQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihocmVmKCkucG9ydCgpKTsK
IH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBv
cnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUv
c3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVz
CisgICAgLy8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5zdCBSRkMgMzk4NiAocDMuMikgYW5kCisg
ICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVt
cHR5IHN0cmluZy4KKyAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7CisgICAgaWYg
KFNlY3VyaXR5T3JpZ2luOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3Rv
Y29sKCkgKSkKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHVy
bC5zZXRQb3J0KHBvcnQpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJp
bmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJl
ZigpLnByb3RvY29sKCkgKyAiOiI7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaW50IHNlcGFyYXRvciA9IHZhbHVl
LmZpbmQoJzonKTsKKworICAgIGlmICghc2VwYXJhdG9yKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmwgPSBo
cmVmKCk7CisgICAgLy8gRm9sbG93aW5nIEZpcmVmb3ggMy41LjIgd2hpY2ggcmVtb3ZlcyBhbnl0
aGluZyBhZnRlciB0aGUgZmlyc3QgIjoiCisgICAgU3RyaW5nIHN1YnZhbHVlID0gKHNlcGFyYXRv
ciA+IDAgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSA6IHZhbHVlKTsKKyAgICBpZiAo
IUtVUkw6OmlzUHJvdG9jb2xWYWxpZChzdWJ2YWx1ZSkpCisgICAgICAgIHJldHVybjsKKyAgICB1
cmwuc2V0UHJvdG9jb2woc3VidmFsdWUpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwor
fQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnNlYXJjaCgpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHF1ZXJ5ID0gaHJlZigpLnF1ZXJ5KCk7CiAgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/
ICIiIDogIj8iICsgcXVlcnk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJj
aChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFN0
cmluZyBlc2NhcGVkVmFsdWUgPSAodmFsdWVbMF0gPT0gJz8nKSA/IHZhbHVlLnN1YnN0cmluZygx
KSA6IHZhbHVlOworICAgIC8vIE1ha2Ugc3VyZSB0aGF0ICcjJyBpbiB0aGUgcXVlcnkgZG9lcyBu
b3QgbGVhayB0byB0aGUgaGFzaC4KKyAgICB1cmwuc2V0UXVlcnkoZXNjYXBlZFZhbHVlLnJlcGxh
Y2UoJyMnLCAiJTIzIikpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJp
bmcgSFRNTEFuY2hvckVsZW1lbnQ6OnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBpbm5lclRl
eHQoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCShyZXZpc2lvbiA0OTkyOSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miwx
MiArNjIsMjYgQEAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKIAogICAg
IFN0cmluZyBoYXNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNoKGNvbnN0IFN0cmluZyYpOwor
CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5n
Jik7CisKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3RuYW1l
KGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHByb3RvY29s
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0
cmluZyBzZWFyY2goKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJpbmcmKTsK
KwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ5OTI5KQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsOCArNjA3LDgg
QEAKICAgICBLVVJMIHVybDsKICAgICB1cmwuc2V0UHJvdG9jb2wobV9VUkwucHJvdG9jb2woKSk7
CiAgICAgdXJsLnNldEhvc3QobV9VUkwuaG9zdCgpKTsKLSAgICBpZiAoaW50IHBvcnQgPSBtX1VS
TC5wb3J0KCkpCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIGlmIChtX1VSTC5oYXNQ
b3J0KCkpCisgICAgICAgIHVybC5zZXRQb3J0KG1fVVJMLnBvcnQoKSk7CiAgICAgdXJsLnNldFBh
dGgoIi9mYXZpY29uLmljbyIpOwogICAgIHJldHVybiB1cmw7CiB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90
b2NvbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJp
YnV0ZS1wcm90b2NvbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
c2VhcmNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXNlYXJjaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0
dHJpYnV0ZS1zZWFyY2guanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXBhdGhuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNyBAQAorVGVzdCBzZXR0aW5nIHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2Yg
dGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1NldCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoIHNsYXNoCitQQVNTIGEuaHJlZiBp
cyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGglMjBuYW1lP2tleT12YWx1ZScKK1NldCBw
YXRobmFtZSB0aGF0IGRvZXMgbm90IHN0YXJ0IHdpdGggc2xhc2ggYW5kIGNvbnRhaW5zICc/Jwor
UEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYSUzRnRoP2tleT12YWx1
ZScKK1NldCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoIGRvdWJsZSBzbGFzaCBhbmQgY29udGFp
bnMgJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tLy9wYXRoJTIz
bmFtZT9rZXk9dmFsdWUnCitTZXQgYSBwYXRobmFtZSBjb250YWluaW5nIC4uIGluIGl0CitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGg/a2V5PXZhbHVlJworU2V0
IHBhdGhuYW1lIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5j
b20vP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0
aGF0IGluY2x1ZGVzIGlsbGVnYWwgY2hhcmFjdGVycyB0byBVUkwgdGhhdCBjb250YWlucyBpbGxl
Z2FsIGNoYXJhY3RlcnMuCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXl8ZFtdKClvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRvIFVSTCB0
aGF0IGNvbnRhaW5zICdAJyBpbiBob3N0CitQQVNTIGEuaHJlZiBpcyAnaHR0cDovL3dAL3BhdGgj
d3cnCitTZXQgcGF0aG5hbWUgdG8gYSBVUkwgd2l0aCBub24taGllcmFyY2hpY2FsIHByb3RvY29s
CitQQVNTIGEuaHJlZiBpcyAndGVsOisxODAwLTU1NS0xMjEyJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAK
K1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9jb2wgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFu
Y2hvckVsZW1lbnQgLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVz
dAorUEFTUyBhLmhyZWYgaXMgJ2h0dHAtZm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1Nl
dCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgJzonCitQQVNTIGEuaHJlZiBpcyAnaHR0cDovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgYSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zIGludmFs
aWQgY2hhcmFjdGVycworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoLycKK1NldCBhIHByb3RvY29sIHRvIGEgVVJMIHdpdGggaW52YWxpZCBob3N0IG5hbWUKK1BB
U1MgYS5ocmVmIGlzICdmb286Xl4nCitTZXQgYSBwcm90b2NvbCB0aGF0IHN0YXJ0cyB3aXRoICc6
JworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBw
cm90b2NvbCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvJworU2V0IHByb3RvY29sIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBwcm90b2NvbCB0byBodHRwIG9uIG1h
bGZvcm1lZCBVUkwKK1BBU1MgYS5ocmVmIGlzICdodHRwOj8/YmFyJworU2V0IHByb3RvY29sIHRv
IGEgVVJMIHdoaWNoIHBvaW50cyB0byBhIGxvY2FsIGZpbGUKK1BBU1MgYS5ocmVmIGlzICdmLW9v
OnBhdGgnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhvc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJl
Zi1hdHRyaWJ1dGUtaG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtaG9zdG5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Nl
dC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUg
b2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitTZXQgc2VhcmNoIHdpdGhvdXQgJz8nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlPWtleScKK1NldCBzZWFyY2ggdGhhdCBzdGFy
dHMgd2l0aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWwlMjB1ZT0lMjBrZXk/JworU2V0IHNlYXJjaCB0byBh
IG1hbGZvcm1lZCBVUkwKK1BBU1MgYS5ocmVmIGlzICdzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8/
JScKK1NldCBzZWFyY2ggY29udGFpbmluZyAnIycKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsdWUlMjNrZXkjaGFzaCcKK1NldCBzZWFyY2ggdG8gYSBt
YWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnYmFkOi98L3VybD92YWx1ZT1rZXknCitTZXQg
c2VhcmNoIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8nCitTZXQgc2VhcmNoIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
aGFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE1IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5n
IHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOwor
Cit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2ljIHRl
c3QiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7Cith
Lmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTowIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0
dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzICJU
aGUgVVJMIGlzIGludmFsaWQiIGV4Y2VwdGlvbi4KK2RlYnVnKCJTZXQgaG9zdCB3aXRoICc/JyBp
biBpdCIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9w
YXRoLz9rZXk9dmFsdWUiOworYS5ob3N0ID0gInd3dy5vdGhlcj9kb21haW4uY29tOjgwODAiOwor
c2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXIvP2RvbWFpbi5jb206ODA4MC9w
YXRoLz9rZXk9dmFsdWUnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBl
LmRlc2NyaXB0aW9uKTsKK30KKworZGVidWcoIlNldCBkZWZhdWx0IHBvcnQgZm9yIGFub3RoZXIg
cHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTo4MCI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODAvcGF0aC8nIik7CisKK2RlYnVnKCJT
ZXQgZGVmYXVsdCBwb3J0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206NDQzIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8g
RmlyZWZveCAzLjUuMiByZWplY3RzIGEgcG9ydCB0aGF0IGNvbnRhaW5zIG5vbi1kaWdpdHMuCitk
ZWJ1ZygiU2V0IGhvc3Qgd2l0aCBsZXR0ZXJzIGluIHBvcnQgbnVtYmVyIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhl
cmRvbWFpbi5jb206NDRhNSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhl
cmRvbWFpbi5jb206NDQvcGF0aC8nIik7CisKKy8vIEZpcmVmb3ggMy41LjIgaWdub3JlcyB0aGUg
bGVhZGluZyBzcGFjZSBpbiB0aGUgcG9ydCwgYnV0IGVycnMgb24gcmVwYXJzaW5nIHRoZSBwb3J0
LgorZGVidWcoIkxlYWRpbmcgc3BhY2UgaW4gcG9ydCBudW1iZXIiKTsKK2EuaHJlZiA9ICJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9t
YWluLmNvbTogNDQzIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9t
YWluLmNvbTowL3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIHJlbW92ZWQgdGhlIHBvcnQs
IGNsZWFybHkgYWdhaW5zdCB0aGUgc3BlYyBhdCAgLgorZGVidWcoIkNvbG9uIHdpdGhvdXQgcG9y
dCBudW1iZXIiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbToiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nIik7CisKKy8vIElFOCBjb252
ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4K
Ky8vIEZpcmVmb3ggMy41LjIgYWxsb3dzIHNldHRpbmcgdGhlIGhvc3QgdG8gbnVsbCwgd2hpY2gg
aXQgc2hvdWxkbid0IHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJT
ZXQgaG9zdCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvcGF0aC8iOworYS5ob3N0ID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCisvLyBCb3RoIElFOCBhbmQgRmlyZWZv
eCAzLjUuMiBhbGxvdyBzZXR0aW5nIHRoZSBob3N0IHRvIGVtcHR5IHN0cmluZywgd2hpY2ggdGhl
eSBzaG91bGRuJ3QsIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KKy8vIFNpbmNl
IGJvdGggZG8gdGhhdCBpbiBhIGJ1Z2d5IHdheSwgV2ViS2l0IGRvZXMgbm90IGZvbGxvdyBlaXRo
ZXIgb25lIG9mIHRoZW0uCitkZWJ1ZygiU2V0IGhvc3QgdG8gZW1wdHkgc3RyaW5nIik7CithLmhy
ZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gIiI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBgc2V0IHRoZSBob3N0IGZvciBmaWxl
OiAuCitkZWJ1ZygiU2V0IGhvc3QgdG8gVVJMIHdpdGggZmlsZTogcHJvdG9jb2wiKTsKK2EuaHJl
ZiA9ICJmaWxlOi8vL3BhdGgvIjsKK2EuaG9zdCA9ICJteWRvbWFpbi5jb20iOworc2hvdWxkQmUo
ImEuaHJlZiIsICInZmlsZTovL215ZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93
cyBpZiB0aGUgaG9zdCBjb250YWlucyAnLycKK2RlYnVnKCJTZXQgaG9zdCBjb250YWluaW5nIHNs
YXNoZXMgaW4gaXQiKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlclxkb20vYWluLmNvbSI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbS9haW4uY29tL3BhdGgvJyIpOworfSBj
YXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8v
IEZpcmVmb3ggMy41LjIgYWRkIHRoZSBtaXNzaW5nICcvJyB0aHVzIGdldHMgYSBkaWZmZXJlbnQg
cmVzdWx0IHRoYW4gSUU4IGFuZCBXZWJraXQuCitkZWJ1ZygiU2V0IGhvc3QgdG8gYSBtYWxmb3Jt
ZWQgVVJMIik7CithLmhyZWYgPSAiaHR0cHM6L1xyd3cubXlAZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdCA9ICJ3d3cub3RoZXIhZG9tYWluLmNvbToxNSI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidodHRwczovL3d3dy5vdGhlciFkb21haW4uY29tOjE1L3d3Lm15QGRvbWFpbi5jb206ODA4
MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiAiT2JqZWN0IEVycm9yIiBleGNlcHRpb24u
CisvLyBGaXJlZm94IDMuNS4yIGFjY2VwdHMgdGhpcyBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBs
YXRlcgorLy8gV2ViS2l0IHNob3VsZCBqdXN0IHJlamVjdAorZGVidWcoIlNldCBob3N0IHRoYXQg
c3RhcnRzIHdpdGggJzonIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vZG9tYWluLmNvbTo4
MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICI6d3d3Lm90aGVyZG9tYWluLmNvbToxNSI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL2RvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKK30gY2F0Y2go
ZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTgg
dGhyb3dzIGEgc2VjdXJpdHkgZXhjZXB0aW9uIGlmIHRoZSBob3N0IGNvbnRhaW5zICdAJworZGVi
dWcoIlNldCBob3N0IHRvIFVSTCBjb250YWluaW5nIHVzZXJuYW1lIGFuZCAuLiIpOwordHJ5IHsK
K2EuaHJlZiA9ICJodHRwczovL3J3d215QGRvbWFpbi5jb206ODA4MC9wYS4udGgvIjsKK2EuaG9z
dCA9ICJ3d3cub3RoZXIhZG9tYWluLmNvbToyNSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRw
czovL3J3d215QHd3dy5vdGhlciFkb21haW4uY29tOjI1L3BhLi50aC8nIik7Cit9IGNhdGNoKGUp
IHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gQm90aCBJ
RTggYW5kIEZpcmVmb3ggYXBwZW5kIHRoZSBob3N0cywgaW5zdGVhZCBvZiByZWplY3RpbmcsIHBl
cgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3Vy
bC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQgaG9zdCB0byBhIFVS
TCB3aXRoIHRlbDogcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJ0ZWw6KzEtODE2LTU1NS0xMjEyIjsK
K2EuaG9zdCA9ICIrMS04MDAtNTU1LTEyMTIiOworc2hvdWxkQmUoImEuaHJlZiIsICIndGVsOisx
LTgxNi01NTUtMTIxMiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0
LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cGF0aG5hbWUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRo
ZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4nKTsK
KwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJTZXQgcGF0
aG5hbWUgdGhhdCBzdGFydHMgd2l0aCBzbGFzaCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIv
cGF0aCBuYW1lIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoJTIwbmFtZT9rZXk9dmFsdWUnIik7CisKKy8vIElFOCB0aHJvd3MgYW4gIkludmFsaWQg
VVJMIiBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IGRvZXMgbm90
IHN0YXJ0IHdpdGggc2xhc2ggYW5kIGNvbnRhaW5zICc/JyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFt
ZSA9ICJwYT90aCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGElM0Z0aD9rZXk9dmFsdWUnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246
ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IHRocm93cyBhbiAiSW52YWxpZCBVUkwi
IGV4Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGgg
ZG91YmxlIHNsYXNoIGFuZCBjb250YWlucyAnIyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIvL3BhdGgjbmFtZSI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3BhdGglMjNu
YW1lP2tleT12YWx1ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUu
ZGVzY3JpcHRpb24pOworfQorCitkZWJ1ZygiU2V0IGEgcGF0aG5hbWUgY29udGFpbmluZyAuLiBp
biBpdCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIvaXQvLi4vcGF0aCI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUnIik7CisK
Ky8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0
aGluZyB0byBkby4KK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gbnVsbCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5w
YXRobmFtZSA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vP2tleT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwYXRobmFtZSB0byBlbXB0eSBzdHJp
bmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vP2tleT12YWx1ZSI7Cith
LnBhdGhuYW1lID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vP2tleT12YWx1ZSciKTsKKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBj
aGFuZ2Ugd2hlbiB0aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggY29uc2lk
ZXJzIHRoaXMgVVJMIGFzIHZhbGlkLgorZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IGluY2x1ZGVz
IGlsbGVnYWwgY2hhcmFjdGVycyB0byBVUkwgdGhhdCBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3Rl
cnMuIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXl8ZFtdKClvbWFpbi5jb20vcGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAicCRhfHRoIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1s
P2tleT12YWx1ZSciKTsKKworLy8gSUU4IHRocm93cyBhIHNlY3VyaXR5IGV4Y2VwdGlvbi4KK3Ry
eSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIFVSTCB0aGF0IGNvbnRhaW5zICdAJyBpbiBob3N0
Iik7CithLmhyZWYgPSAiaHR0cDovL3dAI3d3IjsKK2EucGF0aG5hbWUgPSAicGF0aCI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidodHRwOi8vd0AvcGF0aCN3dyciKTsKK30gY2F0Y2goZSkgeworZGVi
dWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggYWxsb3dzIHNl
dHRpbmcgdGhlIHBhdGhuYW1lLCBmb3Igbm9uLWhpZXJhcmNoaWFsIFVSTC4KKy8vIEl0IGlzIG5v
dCBzdXBwb3NlZCB0byBhbGxvdyB0aGF0IHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUv
c3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVz
IC4KK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gYSBVUkwgd2l0aCBub24taGllcmFyY2hpY2FsIHBy
b3RvY29sIik7CithLmhyZWYgPSAidGVsOisxODAwLTU1NS0xMjEyIjsKK2EucGF0aG5hbWUgPSAi
dGhlLXBhdGgiOworc2hvdWxkQmUoImEuaHJlZiIsICIndGVsOisxODAwLTU1NS0xMjEyJyIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9z
dG5hbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0dHJpYnV0
ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOworCit2YXIgYSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gInd3dy5v
dGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJk
b21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgYW4gZXhjZXB0aW9uICJU
aGUgVVJMIGlzIGludmFsaWQiLgordHJ5IHsKK2RlYnVnKCJFeHRyYSBzbGFzaGVzIGJlZm9yZSBo
b3N0bmFtZSIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdG5hbWUgPSAiLy93d3cub3RoZXJkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworfSBjYXRj
aChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIEZp
cmVmb3ggMy41LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgaG9zdCB0byBmb286IHByb3Rv
Y29sCitkZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIFVSTCB3aXRoIGZvbzogcHJvdG9jb2wiKTsKK2Eu
aHJlZiA9ICJmb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EuaG9zdG5hbWUgPSAid3d3
Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286Ly93d3cub3RoZXJk
b21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdo
aWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisvLyBGaXJlZm94IDMuNS4yIGFsbG93
cyBzZXR0aW5nIHRoZSBob3N0bmFtZSB0byBudWxsLCB3aGljaCBpcyB3cm9uZyBwZXIKKy8vIGh0
dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21w
b3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIG51bGwiKTsK
K2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3Ru
YW1lID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvJyIpOworCisvLyBCb3RoIElFOCBhbmQgRmlyZWZveCAzLjUuMiBhbGxvdyBz
ZXR0aW5nIHRoZSBob3N0IHRvIGVtcHR5IHN0cmluZywgYWdhaW5zdCB0aGUgc3BlYyBhdAorLy8g
aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNv
bXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KKy8vIFNpbmNlIGJvdGggZG8gdGhhdCBpbiBhIGJ1
Z2d5IHdheSwgV2ViS2l0IHNob3VsZCBub3QgZm9sbG93IGVpdGhlciBvbmUgb2YgdGhlbS4KK2Rl
YnVnKCJTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9ICIiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8v
IElFOCBmYWlscyB0byBwcm9jZXNzIHJlYWxseTogcHJvdG9jb2wuCitkZWJ1ZygiU2V0IGhvc3Ru
YW1lIHRvIFVSTCB3aXRoIDIgY29sb25zIik7CithLmhyZWYgPSAicmVhbGx5OmJhZDp1cmwiOwor
YS5ob3N0bmFtZSA9ICJteWRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICIncmVhbGx5
OmJhZDp1cmwnIik7CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdo
ZW4gdGhlIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGVuY29kZXMgdGhlIHNw
YWNlIGluIHRoZSBob3N0bmFtZS4KKy8vIEZpcmVmb3gzLjUuMiBhbmQgV2ViS2l0IGNvbnNpZGVy
IHNwYWNlIGFzIGlsbGVnYWwgY2hhcmFjdGVyIGFuZCB3b3VsZCBub3Qgc2V0IAorLy8gdGhlIG5l
dyBob3N0bmFtZS4KK2RlYnVnKCJTZXQgYSBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGlu
IGl0Iik7CithLmhyZWYgPSAiaHR0cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvIjsKK2EuaG9z
dG5hbWUgPSAid3d3Lm90aGVyIGRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0
cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzIGFuIGV4Y2Vw
dGlvbiAiVGhlIFVSTCBpcyBpbnZhbGlkIi4KK3RyeSB7CitkZWJ1ZygiU2V0IGhvc3RuYW1lIG9u
IGEgbG9jYWwgZmlsZSIpOworYS5ocmVmID0gImM6L3BhdGgvdGVzdHVybC5odG1sIjsKK2EuaG9z
dG5hbWU9ICJhIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2M6L3BhdGgvdGVzdHVybC5odG1sJyIp
OworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1w
cm90b2NvbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3NSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9jb2wgYXR0cmli
dXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQgLicpOworCit2YXIgYSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK2EuaHJlZiA9
ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICJodHRwLWZv
byI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0
aC8nIik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2VwdGlvbi4KK2Rl
YnVnKCJTZXQgYSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zICc6JyIpOwordHJ5IHsKK2EuaHJlZiA9
ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICJodHRwOmZv
byI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyci
KTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOwor
fQorCisvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50IiBleGNlcHRpb24uCitkZWJ1Zygi
U2V0IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMiKTsKK3RyeSB7
CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wg
PSAiaHR0cF5mb28iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNj
cmlwdGlvbik7Cit9CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdo
ZW4gdGhlIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGVuY29kZXMgJ14nIGlu
IHRoZSBob3N0LgorZGVidWcoIlNldCBhIHByb3RvY29sIHRvIGEgVVJMIHdpdGggaW52YWxpZCBo
b3N0IG5hbWUiKTsKK2EuaHJlZiA9ICJoOl5eIjsKK2EucHJvdG9jb2wgPSAiZm9vIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2ZvbzpeXiciKTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1
bWVudCIgZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgYSBwcm90b2NvbCB0aGF0IHN0YXJ0
cyB3aXRoICc6JyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7
CithLnByb3RvY29sID0gIjpodHRwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjog
IiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIs
IHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCitkZWJ1ZygiU2V0IHByb3RvY29s
IHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOwor
YS5wcm90b2NvbCA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRv
bWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4
Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGVtcHR5IHN0cmluZyIpOwor
YS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0g
IiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8n
Iik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsK
K30KKworLy8gRmlyZWZveCAzLjUuMiB0cmllcyB0byBidWlsZCBhIGhpZXJhcmNoaWNhbCBVUkwu
CitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGh0dHAgb24gbWFsZm9ybWVkIFVSTCIpOworYS5ocmVm
ID0gImZvbzo/P2JhciI7CithLnByb3RvY29sID0gImh0dHAiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cDo/P2JhciciKTsKKworLy8gSUU4IGtlZXBzIHRoZSBwcm90b2NvbCBpZiBpdCBpcyAn
YzonLgorZGVidWcoIlNldCBwcm90b2NvbCB0byBhIFVSTCB3aGljaCBwb2ludHMgdG8gYSBsb2Nh
bCBmaWxlIik7CithLmhyZWYgPSAiYzpccGF0aCI7CithLnByb3RvY29sID0gImYtb28iOworc2hv
dWxkQmUoImEuaHJlZiIsICInZi1vbzpwYXRoJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYt
YXR0cmlidXRlLWhhc2guanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcg
dGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisK
K3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiSGFzaCB2YWx1
ZSBkb2VzIG5vdCBzdGFydCB3aXRoICcjJyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiaGFzaC12
YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4
MC9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoLXZhbHVlJyIpOworCitkZWJ1ZygiSGFzaCB2YWx1ZSBz
dGFydHMgd2l0aCAnIyciKTsKK2EuaHJlZiA9ICJmaWxlOi8vL3BhdGgvdGVzdHVybC5odG1sI21p
ZGRsZSI7CithLmhhc2ggPSAiI2hhc2hfdmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInZmls
ZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoX3ZhbHVlJyIpOworCitkZWJ1ZygiJz8nIGluIGhh
c2ggdmFsdWUiKTsKK2EuaHJlZiA9ICJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1
cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gIiNoYXNoP3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFs
dWUnIik7CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdoZW4gY2hh
cmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggYW5kIEZpcmVmb3gzLjUuMiBkb24ndCBj
b25zaWRlciB0aGVzZSBjaGFyYWN0ZXJzIGFzIGlsbGVnYWwuCitkZWJ1ZygiJyMnIGluIGhhc2gg
dmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teVwiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxl
IjsKK2EuaGFzaCA9ICIjaGFzaCN2YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczov
L3d3dy5teVwiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlJyIpOwor
CisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQg
dGhpbmcgdG8gZG8uCisvLyBGaXJlZm94IDMuNS4yIHJlbW92ZXMgdGhlICcjJyBhdCB0aGUgZW5k
LCBhbmQgaXQgc2hvdWxkIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZy
YXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVn
KCJTZXQgaGFzaCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSBudWxsOworc2hvdWxkQmUoImEu
aHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIyciKTsK
KworLy8gRmlyZWZveCAzLjUuMiByZW1vdmVzIHRoZSAnIycgYXQgdGhlIGVuZCwgYW5kIGl0IHNo
b3VsZCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUu
aHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhhc2gg
dG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvdGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnIik7CisKKy8v
IEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyBoYXNoIHRvIG1haWx0bzogc2No
ZW1lLCBhbmQgaXQgc2hvdWxkLgorZGVidWcoIkFkZCBoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wi
KTsKK2EuaHJlZiA9ICJtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlIjsKK2EuaGFzaCA9
ICJoYXNoLXZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ21haWx0bzplLW1haWxfYWRkcmVz
c0Bnb2VzX2hlcmUjaGFzaC12YWx1ZSciKTsKKworLy8gSUU4IGRvZXMgbm90IHBlcmNlbnQtZW5j
b2RlIHNwYWNlcyBpbiB0aGUgaGFzaCBjb21wb25lbnQsIGJ1dCBpdCBkb2VzIHRoYXQKKy8vIGlu
IHRoZSBwYXRoIGNvbXBvbmVudC4KK2RlYnVnKCJBZGQgaGFzaCB0byBmaWxlOiBwcm90b2NvbCIp
OworYS5ocmVmID0gImZpbGU6Ly8vc29tZSBwYXRoIjsKK2EuaGFzaCA9ICJoYXNoIHZhbHVlIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZpbGU6Ly8vc29tZSUyMHBhdGgjaGFzaCUyMHZhbHVlJyIp
OworCitkZWJ1ZygiU2V0IGhhc2ggdG8gJyMnIik7CithLmhyZWYgPSAiaHR0cDovL215ZG9tYWlu
LmNvbSNtaWRkbGUiOworYS5oYXNoID0gIiMiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cDov
L215ZG9tYWluLmNvbS8jJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFsbG93IHNl
dHRpbmcgaGFzaCB0byBmb286IHNjaGVtZSwgYW5kIGl0IHNob3VsZC4KK2RlYnVnKCJBZGQgaGFz
aCB0byBub24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3RyeSB7CithLmhyZWYgPSAiZm9vOmJhciI7
CithLmhhc2ggPSAiI2hhc2giOworc2hvdWxkQmUoImEuaHJlZiIsICInZm9vOmJhciNoYXNoJyIp
OworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1w
b3J0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9z
ZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAor
ZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBp
biBIVE1MQW5jaG9yRWxlbWVudC4nKTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdhJyk7CisKK2RlYnVnKCJEZWZhdWx0IHBvcnQgYXMgbnVtYmVyIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsK
K2EucG9ydCA9IDQ0MzsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKK2RlYnVnKCJEZWZhdWx0IHBv
cnQgYXMgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9ICI0NDMiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tl
eT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwb3J0IHRvIDAiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5w
b3J0ID0gIjAiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRv
ZXMgbm90IGFjY2VwdCB0aGUgcG9ydCBpZiBhbnkgY2hhcmFjdGVyIGlzIG5vdCBhIGRpZ2l0Lgor
ZGVidWcoIlNldCBwb3J0IHRvIG5vbi1udW1iZXIiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wb3J0ID0g
IjRhIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo0L3Bh
dGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5v
dCBhY2NlcHQgdGhlIHBvcnQgaWYgaXQgaXMgbnVsbC4KK2RlYnVnKCJTZXQgcG9ydCB0byBudWxs
Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwczovL3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7
CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWNjZXB0IHRoZSBwb3J0IGlmIGl0IGlzIG51
bGwuCitkZWJ1ZygiU2V0IHBvcnQgdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2Eu
cG9ydCA9ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRv
ZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIHBvcnQgb24gYSBVUkwgd2l0aCBwcm90b2NvbCBmb286
IC4KK2RlYnVnKCJTZXQgcG9ydCB0byBVUkwgd2l0aCBmb286IHByb3RvY29sIik7CithLmhyZWYg
PSAiZm9vOi8vYmFyLyI7CithLnBvcnQgPSA1MDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2Zvbzov
L2Jhcjo1MC8nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1zZWFyY2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0OSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0
dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50IC4nKTsKKwordmFyIGEgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJTZXQgc2VhcmNoIHdpdGhvdXQg
Jz8nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1
ZSI7CithLnNlYXJjaCA9ICJ2YWx1ZT1rZXkiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlPWtleSciKTsKKworLy8gSUU4IGRvZXMgbm90
IGVuY29kZSBzcGFjZXMgaW4gc2VhcmNoIHN0cmluZworZGVidWcoIlNldCBzZWFyY2ggdGhhdCBz
dGFydHMgd2l0aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSAiP3ZhbCB1ZT0g
a2V5PyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0
aC8/dmFsJTIwdWU9JTIwa2V5PyciKTsKKworZGVidWcoIlNldCBzZWFyY2ggdG8gYSBtYWxmb3Jt
ZWQgVVJMIik7CithLmhyZWYgPSAiczp3d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2Euc2VhcmNo
ID0gIiUiOworc2hvdWxkQmUoImEuaHJlZiIsICInczp3d3cubXlkb21haW4uY29tL3BhdGgvPyUn
Iik7CisKKy8vIElFOCB0aHJvd3MgIlRoZSBVUkwgaXMgaW52YWxpZCIgZXhjZXB0aW9uLgorZGVi
dWcoIlNldCBzZWFyY2ggY29udGFpbmluZyAnIyciKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSNoYXNoIjsKK2Euc2VhcmNoID0gIj92
YWx1ZSNrZXkiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvP3ZhbHVlJTIza2V5I2hhc2gnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRp
b246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworZGVidWcoIlNldCBzZWFyY2ggdG8gYSBtYWxm
b3JtZWQgVVJMIik7CithLmhyZWYgPSAiYmFkOi98L3VybCI7CithLnNlYXJjaCA9ICI/dmFsdWU9
a2V5IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2JhZDovfC91cmw/dmFsdWU9a2V5JyIpOworCisv
LyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhp
bmcgdG8gZG8uCitkZWJ1ZygiU2V0IHNlYXJjaCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSI7CithLnNlYXJjaCA9IG51bGw7Citz
aG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7CisK
Ky8vIEZpcmVmb3ggMy41LjIgUmVtb3ZlcyB0aGUgJz8nLCBhbmQgaXQgc2hvdWxkbid0LCBwZXIK
Ky8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwt
ZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IHNlYXJjaCB0byBlbXB0
eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5
PXZhbHVlIjsKK2Euc2VhcmNoID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8/JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RF
TVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACitUZXN0IHNldHRpbmcgdGhlIGhv
c3QgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6
Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nCitTZXQgaG9zdCB3aXRoICc/JyBpbiBpdAor
UEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyLz9kb21haW4uY29tOjgwODAvcGF0aC8/
a2V5PXZhbHVlJworU2V0IGRlZmF1bHQgcG9ydCBmb3IgYW5vdGhlciBwcm90b2NvbAorUEFTUyBh
LmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MC9wYXRoLycKK1NldCBkZWZh
dWx0IHBvcnQKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb20vcGF0
aC8nCitTZXQgaG9zdCB3aXRoIGxldHRlcnMgaW4gcG9ydCBudW1iZXIKK1BBU1MgYS5ocmVmIGlz
ICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206NDQvcGF0aC8nCitMZWFkaW5nIHNwYWNlIGlu
IHBvcnQgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29t
OjAvcGF0aC8nCitDb2xvbiB3aXRob3V0IHBvcnQgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nCitTZXQgaG9zdCB0byBudWxsCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9z
dCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5j
b206ODA4MC9wYXRoLycKK1NldCBob3N0IHRvIFVSTCB3aXRoIGZpbGU6IHByb3RvY29sCitQQVNT
IGEuaHJlZiBpcyAnZmlsZTovL215ZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0IGNvbnRhaW5p
bmcgc2xhc2hlcyBpbiBpdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tL2Fp
bi5jb20vcGF0aC8nCitTZXQgaG9zdCB0byBhIG1hbGZvcm1lZCBVUkwKK1BBU1MgYS5ocmVmIGlz
ICdodHRwczovL3d3dy5vdGhlciFkb21haW4uY29tOjE1L3d3Lm15QGRvbWFpbi5jb206ODA4MC9w
YXRoLycKK1NldCBob3N0IHRoYXQgc3RhcnRzIHdpdGggJzonCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly9kb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0byBVUkwgY29udGFpbmluZyB1
c2VybmFtZSBhbmQgLi4KK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3J3d215QHd3dy5vdGhlciFk
b21haW4uY29tOjI1L3BhLi50aC8nCitTZXQgaG9zdCB0byBhIFVSTCB3aXRoIHRlbDogcHJvdG9j
b2wKK1BBU1MgYS5ocmVmIGlzICd0ZWw6KzEtODE2LTU1NS0xMjEyJworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUg
QEAKK1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRN
TEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0
ZXN0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0
aC8nCitFeHRyYSBzbGFzaGVzIGJlZm9yZSBob3N0bmFtZQorUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIFVSTCB3
aXRoIGZvbzogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdmb286Ly93d3cub3RoZXJkb21haW4u
Y29tL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLycKK1NldCBob3N0bmFtZSB0byBlbXB0eSBzdHJp
bmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLycK
K1NldCBob3N0bmFtZSB0byBVUkwgd2l0aCAyIGNvbG9ucworUEFTUyBhLmhyZWYgaXMgJ3JlYWxs
eTpiYWQ6dXJsJworU2V0IGEgaG9zdG5hbWUgdGhhdCBjb250YWlucyBzcGFjZSBpbiBpdAorUEFT
UyBhLmhyZWYgaXMgJ2h0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0bmFt
ZSBvbiBhIGxvY2FsIGZpbGUKK1BBU1MgYS5ocmVmIGlzICdjOi9wYXRoL3Rlc3R1cmwuaHRtbCcK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtaGFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI5IEBACitUZXN0IHNldHRpbmcgdGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRN
TEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitIYXNoIHZh
bHVlIGRvZXMgbm90IHN0YXJ0IHdpdGggJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWwjaGFzaC12YWx1ZScKK0hhc2ggdmFs
dWUgc3RhcnRzIHdpdGggJyMnCitQQVNTIGEuaHJlZiBpcyAnZmlsZTovLy9wYXRoL3Rlc3R1cmwu
aHRtbCNoYXNoX3ZhbHVlJworJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgYS5ocmVmIGlzICdodHRw
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVlJworJyMnIGlu
IGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUKK1BBU1MgYS5o
cmVmIGlzICdodHRwczovL3d3dy5teSJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRt
bCNtaWRkbGUnCitTZXQgaGFzaCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIycKK1NldCBoYXNoIHRvIGVtcHR5IHN0cmlu
ZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwu
aHRtbCMnCitBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAnbWFp
bHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVlJworQWRkIGhhc2ggdG8gZmls
ZTogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdmaWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2
YWx1ZScKK1NldCBoYXNoIHRvICcjJworUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly9teWRvbWFpbi5j
b20vIycKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMg
J2ZvbzpiYXIjaGFzaCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
ZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0IHNldHRpbmcgdGhlIHBvcnQgYXR0
cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitEZWZhdWx0IHBvcnQgYXMgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK0Rl
ZmF1bHQgcG9ydCBhcyBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gMAorUEFTUyBh
LmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tl
eT12YWx1ZScKK1NldCBwb3J0IHRvIG5vbi1udW1iZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9y
dCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gZW1wdHkgc3RyaW5nCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/
a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBhLmhy
ZWYgaXMgJ2ZvbzovL2Jhcjo1MC8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDk5MjkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAwOS0xMC0yMiAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFVSTCBkZWNvbXBvc2l0aW9u
IElETCBhdHRyaWJ1dGVzIGZvciBIVE1MQW5jaG9yRWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTcyCisKKyAgICAgICAgVGVzdGNhc2Vz
IGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgVVJMLgorCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0czogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9z
ZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMv
c2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhu
YW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3Jp
cHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cHJvdG9jb2wuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wcm90b2NvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2Vh
cmNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0y
MSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41668</attachid>
            <date>2009-10-22 11:08:01 -0700</date>
            <delta_ts>2009-10-30 14:25:40 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>55598</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTkyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMDktMTAtMjIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
aG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2Nh
dGlvbjo6c2V0UG9ydCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRQb3J0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9y
RWxlbWVudDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6
c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFBh
dGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGw6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmlzUHJvdG9jb2xWYWxpZCk6CisgICAgICAgIChXZWJD
b3JlOjpLVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnJlbW92ZVBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpL
VVJMOjpzZXRIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNhblNldEhvc3RPclBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6Y2FuU2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6S1VS
TDo6aGFzUG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDA5LTEwLTIxICBEdW1pdHJ1
IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDQ5OTI5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAKICAgICBLVVJM
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwogICAgIEtVUkwoY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5n
Jik7CiAKKyAgICBzdGF0aWMgYm9vbCBpc1Byb3RvY29sVmFsaWQoY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CisKICNpZiBVU0UoR09PR0xFVVJMKQogICAgIC8vIEZvciBjb252ZXJzaW9ucyBmb3Ig
b3RoZXIgc3RydWN0dXJlcyB0aGF0IGhhdmUgYWxyZWFkeSBwYXJzZWQgYW5kCiAgICAgLy8gY2Fu
b25pY2FsaXplZCB0aGUgVVJMLiBUaGUgaW5wdXQgbXVzdCBiZSBleGFjdGx5IHdoYXQgS1VSTCB3
b3VsZCBoYXZlCkBAIC0xMDQsNiArMTA2LDE1IEBACiAgICAgLy8gbm9uLWhpZXJhcmNoaWNhbCAo
bGlrZSAiamF2YXNjcmlwdDoiKSBVUkxzIHdpbGwgaGF2ZSBubyBwYXRoLgogICAgIGJvb2wgaGFz
UGF0aCgpIGNvbnN0OwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIGFsbG93ZWQgdG8g
c2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMCisgICAgLy8gVGhpcyBpcyBhbGxvd2Vk
IGlmIHRoZSBVUkwgaXMgdmFsaWQsIGlzIGhpZXJhcmNoaWNhbCBhbmQgaGFzIGEKKyAgICAvLyBz
ZXJ2ZXIgYmFzZWQgbmFtaW5nIGF1dGhvcml0eS4KKyAgICAvLyBJRTggYWxsb3dzIHNldHRpbmcg
dGhlIGhvc3QgZm9yIGZvbzovLyBwcm90b2NvbCwgc28gZG9lcyBXZWJLaXQuCisgICAgYm9vbCBj
YW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgaXMgaGllcmFyY2hpY2FsLgorICAgIGJvb2wg
Y2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAg
CiAjaWYgVVNFKEdPT0dMRVVSTCkKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsLnN0cmluZygpOyB9CiAjZWxzZQpAQCAtMTMxLDExICsxNDIsMTIgQEAKICAg
ICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJ
bkhUVFBGYW1pbHkoKSBjb25zdDsKICAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQb3J0KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKIAotICAgIC8vIFNldHRpbmcg
dGhlIHBvcnQgdG8gMCB3aWxsIGNsZWFyIGFueSBwb3J0IGZyb20gdGhlIFVSTC4KKyAgICB2b2lk
IHJlbW92ZVBvcnQoKTsKICAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwogCiAgICAg
Ly8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCkBAIC0zMTcsNiAr
MzI5LDExIEBACiAgICAgcmV0dXJuIG1faXNWYWxpZDsKIH0KIAoraW5saW5lIGJvb2wgS1VSTDo6
aGFzUG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faG9zdEVuZCA8IG1fcG9ydEVuZDsKK30K
KwogaW5saW5lIGJvb2wgS1VSTDo6cHJvdG9jb2xJbkhUVFBGYW1pbHkoKSBjb25zdAogewogICAg
IHJldHVybiBtX3Byb3RvY29sSW5IVFRQRmFtaWx5OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCShyZXZpc2lvbiA0
OTkyOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Niw3ICs4NjYsNyBAQAogICAgIC8vIHVzaW5nIEdJ
TyBpbnRlcm5hbGx5LCBhbmQgcHJvdmlkaW5nIFVSSXMgaW5zdGVhZCBvZiBmaWxlIHBhdGhzCiAg
ICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIHVybC5zZXRRdWVyeShTdHJp
bmcoKSk7Ci0gICAgdXJsLnNldFBvcnQoMCk7CisgICAgdXJsLnJlbW92ZVBvcnQoKTsKIAogI2lm
ICFQTEFURk9STShXSU5fT1MpCiAgICAgLy8gd2UgYXZvaWQgdGhlIGVzY2FwaW5nIGZvciBsb2Nh
bCBmaWxlcywgYmVjYXVzZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiA0OTkyOSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsMjAg
QEAKICAgICB9CiB9CiAKK2Jvb2wgS1VSTDo6aXNQcm90b2NvbFZhbGlkKGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5s
ZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkr
KykgeworICAgICAgICBpZiAoIWlzU2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBLVVJMIEtVUkw6
OmNvcHkoKSBjb25zdAogewogICAgIEtVUkwgcmVzdWx0ID0gKnRoaXM7CkBAIC02ODAsMjMgKzY5
NCwzNyBAQAogICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCiAgICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSBob3N0LgogCisgICAgLy8gRG9u
J3Qgc2V0IHRoZSBob3N0IG9uIGEgbG9jYWwgZmlsZSBlLmcuIGM6L3BhdGgKKyAgICBpZiAobV9z
Y2hlbWVFbmQgPT0gMSAmJiBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCisgICAgICAg
IHJldHVybjsKKwogICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1f
c2NoZW1lRW5kICsgMTsKIAogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsg
KHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyht
X2hvc3RFbmQpKTsKIH0KIAordm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKK3sKKyAgICBpZiAoIW1f
aXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5k
KQorICAgICAgICByZXR1cm47CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworfQorCiB2b2lkIEtVUkw6OnNldFBvcnQo
dW5zaWduZWQgc2hvcnQgaSkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGkpIHsKLSAgICAgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9
PSBtX2hvc3RFbmQ7Ci0gICAgICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hv
c3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKKyAgICAvLyBEb24ndCBzZXQgdGhlIHBvcnQgb24gYSBs
b2NhbCBmaWxlIGUuZy4gYzovcGF0aAorICAgIGlmIChtX3NjaGVtZUVuZCA9PSAxICYmIG1fdXNl
clN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSAr
IFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotICAg
IH0gZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmlu
Zy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVu
ZCA9PSBtX2hvc3RFbmQ7CisgICAgaW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9z
dEVuZCA6IG1faG9zdEVuZCArIDEpOworCisgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3Rh
cnQpICsgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0
cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CiB9CiAKIHZvaWQgS1VSTDo6c2V0SG9zdEFuZFBv
cnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKQEAgLTcwNyw2ICs3MzUsMTAgQEAKICAgICAv
LyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVk
IHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAogICAgIC8vIGFuZCB0byBhdm9pZCBjaGFu
Z2luZyBtb3JlIHRoYW4ganVzdCBob3N0IGFuZCBwb3J0LgogCisgICAgLy8gRG9uJ3Qgc2V0IHRo
ZSBob3N0IG9uIGEgbG9jYWwgZmlsZSBlLmcuIGM6L3BhdGgKKyAgICBpZiAobV9zY2hlbWVFbmQg
PT0gMSAmJiBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCisgICAgICAgIHJldHVybjsK
KwogICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5k
ICsgMTsKIAogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xh
c2hOZWVkZWQgPyAiLy8iIDogIiIpICsgaG9zdEFuZFBvcnQgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kKSk7CkBAIC04MTksNyArODUxLDcgQEAKICAgICAgICAgICAgIGF1dGhvcml0eS5h
cHBlbmQoJ0AnKTsKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkp
OwotICAgICAgICBpZiAocG9ydCgpICE9IDApIHsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkgewog
ICAgICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwogICAgICAgICAgICAgYXBwZW5kKGF1
dGhvcml0eSwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CiAgICAgICAgIH0KQEAgLTEyNjksOCAr
MTMwMSw4IEBACiAgICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0gbV9wYXNzd29yZEVu
ZCA9IG1faG9zdEVuZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwogCiAgICAgLy8g
Rm9yIGNhbm9uaWNhbGl6YXRpb24sIGVuc3VyZSB3ZSBoYXZlIGEgJy8nIGZvciBubyBwYXRoLgot
ICAgIC8vIE9ubHkgZG8gdGhpcyBmb3IgaHR0cCBhbmQgaHR0cHMuCi0gICAgaWYgKG1fcHJvdG9j
b2xJbkhUVFBGYW1pbHkgJiYgcGF0aEVuZCAtIHBhdGhTdGFydCA9PSAwKQorICAgIC8vIE9ubHkg
ZG8gdGhpcyBmb3IgaHR0cCBhbmQgaHR0cHMsIHVubGVzcyB0aGUgVVJMIGlzIG5vdCBoaWVyYXJj
aGljYWwuCisgICAgaWYgKG1fcHJvdG9jb2xJbkhUVFBGYW1pbHkgJiYgaGllcmFyY2hpY2FsICYm
IHBhdGhFbmQgLSBwYXRoU3RhcnQgPT0gMCkKICAgICAgICAgKnArKyA9ICcvJzsKIAogICAgIC8v
IGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0OTkyOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw4ICsy
NTcsOSBAQAogICAgIGNvbnN0IFVTdHJpbmcmIHBvcnRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKTsKICAgICBpbnQgcG9ydCA9IGNoYXJhY3RlcnNUb0ludChwb3J0U3RyaW5nLmRhdGEoKSwg
cG9ydFN0cmluZy5zaXplKCkpOwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGKQot
ICAgICAgICBwb3J0ID0gMDsKLSAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICAgICAgdXJsLnJl
bW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAgICAg
bmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55
UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmlkbAkocmV2aXNpb24gNDk5MjkpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAKICAg
ICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3Ry
aW5nIHRhcmdldDsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nIHR5cGU7CiAKLSAgICAgICAgLy8gSUUgRXh0ZW5zaW9ucwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBob3N0bmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBw
YXRobmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0OwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOwotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGhhc2g7CisgICAgICAgIGF0dHJpYnV0ZSBb
Q29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwYXRobmFtZTsK
KyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHBv
cnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBwcm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIHNlYXJjaDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
ZXh0OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZB
U0NSSVBUCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ5OTI5
KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsMjMgQEAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBbmNob3JFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg
YWxsb3cgbGVhZGluZyBzcGFjZXMgYmVmb3JlIHRoZSBwb3J0IG51bWJlci4KK3N0YXRpYyB1bnNp
Z25lZCBnZXRQb3J0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9y
dEVuZCkKK3sKKyAgICB1bnNpZ25lZCBwb3J0ID0gMDsKKyAgICBwb3J0RW5kID0gMDsKKyAgICB1
bnNpZ25lZCB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlIChwb3J0RW5k
IDwgdmFsdWVMZW5ndGggJiYgaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKKyAgICAgICAg
cG9ydEVuZCsrOworICAgIGlmIChwb3J0RW5kID4gMCkgeworICAgICAgICBpZiAocG9ydEVuZCA9
PSB2YWx1ZUxlbmd0aCkKKyAgICAgICAgICAgIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9ydCA9IHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKS50
b1VJbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIHBvcnQ7Cit9CisKIGJvb2wgSFRNTEFuY2hvckVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewogICAgIGlmIChpc0NvbnRlbnRFZGl0YWJs
ZSgpKQpAQCAtMzYwLDYgKzM3NywxNiBAQAogICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIu
aXNFbXB0eSgpID8gIiIgOiAiIyIgKyBmcmFnbWVudElkZW50aWZpZXI7CiB9CiAKK3ZvaWQgSFRN
TEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJM
IHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQorICAgICAgICB1cmwuc2V0
RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CisgICAgZWxzZQorICAgICAg
ICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJp
bmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6aG9zdCgpIGNvbnN0CiB7CiAg
ICAgY29uc3QgS1VSTCYgdXJsID0gaHJlZigpOwpAQCAtMzcwLDMyICszOTcsMTQ4IEBACiAgICAg
cmV0dXJuIHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKTsKIH0K
IAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBLVVJMIHVy
bCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludCBzZXBhcmF0b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisgICAgaWYgKCFz
ZXBhcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzZXBhcmF0b3IgPT0gLTEpCisg
ICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHVu
c2lnbmVkIHBvcnRFbmQ7CisgICAgICAgIHVuc2lnbmVkIHBvcnQgPSBnZXRQb3J0RnJvbVN0cmlu
Zyh2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSksIHBvcnRFbmQpOworICAgICAgICBpZiAo
IXBvcnQpIHsKKyAgICAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5m
cmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcworICAgICAg
ICAgICAgLy8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5zdCBSRkMgMzk4NiAocDMuMikgYW5kCisg
ICAgICAgICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBz
ZXQgdG8gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVl
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICIwIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0
KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNl
cGFyYXRvciArIDEgKyBwb3J0RW5kID09IHZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAx
ICsgcG9ydEVuZCkpOworICAgICAgICB9CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmVmb3JlIHNldHRpbmcg
bmV3IHZhbHVlOgorICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURVUyAoIi8i
KSBjaGFyYWN0ZXJzLgorICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhvc3RMZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAoaSA8IGhvc3RMZW5ndGggJiYgdmFsdWVb
aV0gPT0gJy8nKQorICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAg
ICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgc3VidmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoaSk7
CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0SG9zdChzdWJ2YWx1ZSk7CisgICAgc2V0
SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBhdGhu
YW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnBhdGgoKTsKIH0KIAordm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBL
VVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAodmFsdWVbMF0gPT0gJy8nKQorICAgICAgICB1cmwuc2V0UGF0
aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UGF0aCgiLyIgKyB2YWx1ZSk7CisK
KyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVu
dDo6cG9ydCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0
KCkpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9z
dE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9o
dG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJp
YnV0ZXMKKyAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBh
bmQKKyAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQg
dG8gZW1wdHkgc3RyaW5nLgorICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAg
ICBpZiAoU2VjdXJpdHlPcmlnaW46OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwu
cHJvdG9jb2woKSApKQorICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOworICAgIGVsc2UKKyAgICAg
ICAgdXJsLnNldFBvcnQocG9ydCk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisK
IFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cHJvdG9jb2woKSBjb25zdAogewogICAgIHJldHVy
biBocmVmKCkucHJvdG9jb2woKSArICI6IjsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6
c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpbnQgc2VwYXJhdG9yID0g
dmFsdWUuZmluZCgnOicpOworCisgICAgaWYgKCFzZXBhcmF0b3IpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBLVVJMIHVy
bCA9IGhyZWYoKTsKKyAgICAvLyBGb2xsb3dpbmcgRmlyZWZveCAzLjUuMiB3aGljaCByZW1vdmVz
IGFueXRoaW5nIGFmdGVyIHRoZSBmaXJzdCAiOiIKKyAgICBTdHJpbmcgc3VidmFsdWUgPSAoc2Vw
YXJhdG9yID4gMCA/IHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpIDogdmFsdWUpOworICAg
IGlmICghS1VSTDo6aXNQcm90b2NvbFZhbGlkKHN1YnZhbHVlKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHVybC5zZXRQcm90b2NvbChzdWJ2YWx1ZSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmco
KSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6c2VhcmNoKCkgY29uc3QKIHsKICAg
ICBTdHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKICAgICByZXR1cm4gcXVlcnkuaXNFbXB0
eSgpID8gIiIgOiAiPyIgKyBxdWVyeTsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0
U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7Cisg
ICAgU3RyaW5nIGVzY2FwZWRWYWx1ZSA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3Ry
aW5nKDEpIDogdmFsdWU7CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBk
b2VzIG5vdCBsZWFrIHRvIHRoZSBoYXNoLgorICAgIHVybC5zZXRRdWVyeShlc2NhcGVkVmFsdWUu
cmVwbGFjZSgnIycsICIlMjMiKSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisK
IFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlu
bmVyVGV4dCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgJKHJldmlzaW9uIDQ5OTI5
KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDEyICs2MiwyNiBAQAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0Owog
CiAgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5n
Jik7CisKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBT
dHJpbmcmKTsKKwogICAgIFN0cmluZyBob3N0bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9z
dG5hbWUoY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBvcnQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFBvcnQoY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgcHJv
dG9jb2woKSBjb25zdDsKKyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCiAg
ICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmlu
ZyYpOworCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKIAogICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNDk5MjkpCisrKyBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw4ICs2
MDcsOCBAQAogICAgIEtVUkwgdXJsOwogICAgIHVybC5zZXRQcm90b2NvbChtX1VSTC5wcm90b2Nv
bCgpKTsKICAgICB1cmwuc2V0SG9zdChtX1VSTC5ob3N0KCkpOwotICAgIGlmIChpbnQgcG9ydCA9
IG1fVVJMLnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgaWYgKG1fVVJM
Lmhhc1BvcnQoKSkKKyAgICAgICAgdXJsLnNldFBvcnQobV9VUkwucG9ydCgpKTsKICAgICB1cmwu
c2V0UGF0aCgiL2Zhdmljb24uaWNvIik7CiAgICAgcmV0dXJuIHVybDsKIH0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90
b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYt
YXR0cmlidXRlLXByb3RvY29sLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1zZWFyY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhy
ZWYtYXR0cmlidXRlLXNlYXJjaC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI3IEBACitUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0
ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworU2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggc2xhc2gKK1BBU1MgYS5o
cmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aCUyMG5hbWU/a2V5PXZhbHVlJwor
U2V0IHBhdGhuYW1lIHRoYXQgZG9lcyBub3Qgc3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMg
Jz8nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5
PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggZG91YmxlIHNsYXNoIGFuZCBj
b250YWlucyAnIycKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3Bh
dGglMjNuYW1lP2tleT12YWx1ZScKK1NldCBhIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4gaW4gaXQK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUn
CitTZXQgcGF0aG5hbWUgdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS8/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRvIGVtcHR5IHN0cmluZworUEFTUyBh
LmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0IHBhdGhu
YW1lIHRoYXQgaW5jbHVkZXMgaWxsZWdhbCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNvbnRhaW5z
IGlsbGVnYWwgY2hhcmFjdGVycy4KK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teXxkW10o
KW9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8g
VVJMIHRoYXQgY29udGFpbnMgJ0AnIGluIGhvc3QKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd0Av
cGF0aCN3dycKK1NldCBwYXRobmFtZSB0byBhIFVSTCB3aXRoIG5vbi1oaWVyYXJjaGljYWwgcHJv
dG9jb2wKK1BBU1MgYS5ocmVmIGlzICd0ZWw6KzE4MDAtNTU1LTEyMTInCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NyBAQAorVGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBI
VE1MQW5jaG9yRWxlbWVudCAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNp
YyB0ZXN0CitQQVNTIGEuaHJlZiBpcyAnaHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgv
JworU2V0IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyAnOicKK1BBU1MgYS5ocmVmIGlzICdodHRw
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMg
aW52YWxpZCBjaGFyYWN0ZXJzCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJworU2V0IGEgcHJvdG9jb2wgdG8gYSBVUkwgd2l0aCBpbnZhbGlkIGhvc3QgbmFt
ZQorUEFTUyBhLmhyZWYgaXMgJ2ZvbzpeXicKK1NldCBhIHByb3RvY29sIHRoYXQgc3RhcnRzIHdp
dGggJzonCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJwor
U2V0IHByb3RvY29sIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC8nCitTZXQgcHJvdG9jb2wgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBp
cyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IHByb3RvY29sIHRvIGh0dHAg
b24gbWFsZm9ybWVkIFVSTAorUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Pz9iYXInCitTZXQgcHJvdG9j
b2wgdG8gYSBVUkwgd2hpY2ggcG9pbnRzIHRvIGEgbG9jYWwgZmlsZQorUEFTUyBhLmhyZWYgaXMg
J2Ytb286cGF0aCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Nl
dC1ocmVmLWF0dHJpYnV0ZS1ob3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1ob3N0bmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nl
dC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFy
Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0dHJp
YnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50IC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1NldCBzZWFyY2ggd2l0aG91dCAnPycKK1BBU1MgYS5ocmVmIGlzICdo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsdWU9a2V5JworU2V0IHNlYXJjaCB0aGF0
IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVlPSUyMGtleT8nCitTZXQgc2VhcmNo
IHRvIGEgbWFsZm9ybWVkIFVSTAorUEFTUyBhLmhyZWYgaXMgJ3M6d3d3Lm15ZG9tYWluLmNvbS9w
YXRoLz8lJworU2V0IHNlYXJjaCBjb250YWluaW5nICcjJworUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZSUyM2tleSNoYXNoJworU2V0IHNlYXJjaCB0
byBhIG1hbGZvcm1lZCBVUkwKK1BBU1MgYS5ocmVmIGlzICdiYWQ6L3wvdXJsP3ZhbHVlPWtleScK
K1NldCBzZWFyY2ggdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoLycKK1NldCBzZWFyY2ggdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvPycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1oYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBv
cnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9z
dC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTUgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNl
dHRpbmcgdGhlIGhvc3QgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQu
Jyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFz
aWMgdGVzdCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOjAiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nIik7CisKKy8vIElFOCB0aHJv
d3MgIlRoZSBVUkwgaXMgaW52YWxpZCIgZXhjZXB0aW9uLgorZGVidWcoIlNldCBob3N0IHdpdGgg
Jz8nIGluIGl0Iik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvP2tleT12YWx1ZSI7CithLmhvc3QgPSAid3d3Lm90aGVyP2RvbWFpbi5jb206ODA4
MCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlci8/ZG9tYWluLmNvbTo4
MDgwL3BhdGgvP2tleT12YWx1ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjog
IiArIGUuZGVzY3JpcHRpb24pOworfQorCitkZWJ1ZygiU2V0IGRlZmF1bHQgcG9ydCBmb3IgYW5v
dGhlciBwcm90b2NvbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOjgwIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MC9wYXRoLyciKTsKKworZGVi
dWcoIlNldCBkZWZhdWx0IHBvcnQiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5j
b206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTo0NDMiOworc2hv
dWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvJyIpOwor
CisvLyBGaXJlZm94IDMuNS4yIHJlamVjdHMgYSBwb3J0IHRoYXQgY29udGFpbnMgbm9uLWRpZ2l0
cy4KK2RlYnVnKCJTZXQgaG9zdCB3aXRoIGxldHRlcnMgaW4gcG9ydCBudW1iZXIiKTsKK2EuaHJl
ZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3
Lm90aGVyZG9tYWluLmNvbTo0NGE1IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm90aGVyZG9tYWluLmNvbTo0NC9wYXRoLyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBpZ25vcmVz
IHRoZSBsZWFkaW5nIHNwYWNlIGluIHRoZSBwb3J0LCBidXQgZXJycyBvbiByZXBhcnNpbmcgdGhl
IHBvcnQuCitkZWJ1ZygiTGVhZGluZyBzcGFjZSBpbiBwb3J0IG51bWJlciIpOworYS5ocmVmID0g
Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3Ro
ZXJkb21haW4uY29tOiA0NDMiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3Ro
ZXJkb21haW4uY29tOjAvcGF0aC8nIik7CisKKy8vIEZpcmVmb3ggMy41LjIgcmVtb3ZlZCB0aGUg
cG9ydCwgY2xlYXJseSBhZ2FpbnN0IHRoZSBzcGVjIGF0ICAuCitkZWJ1ZygiQ29sb24gd2l0aG91
dCBwb3J0IG51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOiI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gSUU4
IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRv
IGRvLgorLy8gRmlyZWZveCAzLjUuMiBhbGxvd3Mgc2V0dGluZyB0aGUgaG9zdCB0byBudWxsLCB3
aGljaCBpdCBzaG91bGRuJ3QgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2lu
ZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVi
dWcoIlNldCBob3N0IHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5j
b206ODA4MC9wYXRoLyI7CithLmhvc3QgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIEJvdGggSUU4IGFuZCBG
aXJlZm94IDMuNS4yIGFsbG93IHNldHRpbmcgdGhlIGhvc3QgdG8gZW1wdHkgc3RyaW5nLCB3aGlj
aCB0aGV5IHNob3VsZG4ndCwgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2lu
ZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorLy8g
U2luY2UgYm90aCBkbyB0aGF0IGluIGEgYnVnZ3kgd2F5LCBXZWJLaXQgZG9lcyBub3QgZm9sbG93
IGVpdGhlciBvbmUgb2YgdGhlbS4KK2RlYnVnKCJTZXQgaG9zdCB0byBlbXB0eSBzdHJpbmciKTsK
K2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3Qg
PSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGBzZXQgdGhlIGhvc3QgZm9y
IGZpbGU6IC4KK2RlYnVnKCJTZXQgaG9zdCB0byBVUkwgd2l0aCBmaWxlOiBwcm90b2NvbCIpOwor
YS5ocmVmID0gImZpbGU6Ly8vcGF0aC8iOworYS5ob3N0ID0gIm15ZG9tYWluLmNvbSI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidmaWxlOi8vbXlkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTgg
dGhyb3dzIGlmIHRoZSBob3N0IGNvbnRhaW5zICcvJworZGVidWcoIlNldCBob3N0IGNvbnRhaW5p
bmcgc2xhc2hlcyBpbiBpdCIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFp
bi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyXGRvbS9haW4uY29tIjsKK3No
b3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tL2Fpbi5jb20vcGF0aC8nIik7
Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30K
KworLy8gRmlyZWZveCAzLjUuMiBhZGQgdGhlIG1pc3NpbmcgJy8nIHRodXMgZ2V0cyBhIGRpZmZl
cmVudCByZXN1bHQgdGhhbiBJRTggYW5kIFdlYmtpdC4KK2RlYnVnKCJTZXQgaG9zdCB0byBhIG1h
bGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJodHRwczovXHJ3dy5teUBkb21haW4uY29tOjgwODAv
cGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlciFkb21haW4uY29tOjE1IjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyIWRvbWFpbi5jb206MTUvd3cubXlAZG9tYWluLmNv
bTo4MDgwL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzIGFuICJPYmplY3QgRXJyb3IiIGV4Y2Vw
dGlvbi4KKy8vIEZpcmVmb3ggMy41LjIgYWNjZXB0cyB0aGlzIGJ1dCB0aHJvd3MgYW4gZXhjZXB0
aW9uIGxhdGVyCisvLyBXZWJLaXQgc2hvdWxkIGp1c3QgcmVqZWN0CitkZWJ1ZygiU2V0IGhvc3Qg
dGhhdCBzdGFydHMgd2l0aCAnOiciKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly9kb21haW4u
Y29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gIjp3d3cub3RoZXJkb21haW4uY29tOjE1IjsKK3No
b3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworfSBj
YXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8v
IElFOCB0aHJvd3MgYSBzZWN1cml0eSBleGNlcHRpb24gaWYgdGhlIGhvc3QgY29udGFpbnMgJ0An
CitkZWJ1ZygiU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIC4uIik7Cit0
cnkgeworYS5ocmVmID0gImh0dHBzOi8vcnd3bXlAZG9tYWluLmNvbTo4MDgwL3BhLi50aC8iOwor
YS5ob3N0ID0gInd3dy5vdGhlciFkb21haW4uY29tOjI1IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAi
J2h0dHBzOi8vcnd3bXlAd3d3Lm90aGVyIWRvbWFpbi5jb206MjUvcGEuLnRoLyciKTsKK30gY2F0
Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBC
b3RoIElFOCBhbmQgRmlyZWZveCBhcHBlbmQgdGhlIGhvc3RzLCBpbnN0ZWFkIG9mIHJlamVjdGlu
ZywgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0
bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBob3N0IHRv
IGEgVVJMIHdpdGggdGVsOiBwcm90b2NvbCIpOworYS5ocmVmID0gInRlbDorMS04MTYtNTU1LTEy
MTIiOworYS5ob3N0ID0gIisxLTgwMC01NTUtMTIxMiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIid0
ZWw6KzEtODE2LTU1NS0xMjEyJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0
cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJp
YnV0ZS1wYXRobmFtZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRp
bmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50
LicpOworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIlNl
dCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoIHNsYXNoIik7CithLmhyZWYgPSAiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1l
ID0gIi9wYXRoIG5hbWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tL3BhdGglMjBuYW1lP2tleT12YWx1ZSciKTsKKworLy8gSUU4IHRocm93cyBhbiAiSW52
YWxpZCBVUkwiIGV4Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgZG9l
cyBub3Qgc3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMgJz8nIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBh
dGhuYW1lID0gInBhP3RoIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYSUzRnRoP2tleT12YWx1ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2Vw
dGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggdGhyb3dzIGFuICJJbnZhbGlk
IFVSTCIgZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBzdGFydHMg
d2l0aCBkb3VibGUgc2xhc2ggYW5kIGNvbnRhaW5zICcjJyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gIi8vcGF0aCNu
YW1lIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8vcGF0
aCUyM25hbWU/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAi
ICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgYSBwYXRobmFtZSBjb250YWluaW5n
IC4uIGluIGl0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gIi9pdC8uLi9wYXRoIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZSci
KTsKKworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJp
Z2h0IHRoaW5nIHRvIGRvLgorZGVidWcoIlNldCBwYXRobmFtZSB0byBudWxsIik7CithLmhyZWYg
PSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7
CithLnBhdGhuYW1lID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS8/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIGVtcHR5
IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVl
IjsKK2EucGF0aG5hbWUgPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS8/a2V5PXZhbHVlJyIpOworCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hv
dWxkIGNoYW5nZSB3aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUgaXMgdXBkYXRlZC4KKy8vIElFOCBj
b25zaWRlcnMgdGhpcyBVUkwgYXMgdmFsaWQuCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgaW5j
bHVkZXMgaWxsZWdhbCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNvbnRhaW5zIGlsbGVnYWwgY2hh
cmFjdGVycy4iKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teXxkW10oKW9tYWluLmNvbS9wYXRo
L3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICJwJGF8dGgiOworc2hvdWxk
QmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXl8ZFtdKClvbWFpbi5jb20vcGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBJRTggdGhyb3dzIGEgc2VjdXJpdHkgZXhjZXB0aW9u
LgordHJ5IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gVVJMIHRoYXQgY29udGFpbnMgJ0AnIGlu
IGhvc3QiKTsKK2EuaHJlZiA9ICJodHRwOi8vd0Ajd3ciOworYS5wYXRobmFtZSA9ICJwYXRoIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly93QC9wYXRoI3d3JyIpOworfSBjYXRjaChlKSB7
CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCBhbGxv
d3Mgc2V0dGluZyB0aGUgcGF0aG5hbWUsIGZvciBub24taGllcmFyY2hpYWwgVVJMLgorLy8gSXQg
aXMgbm90IHN1cHBvc2VkIHRvIGFsbG93IHRoYXQgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9o
dG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJp
YnV0ZXMgLgorZGVidWcoIlNldCBwYXRobmFtZSB0byBhIFVSTCB3aXRoIG5vbi1oaWVyYXJjaGlj
YWwgcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJ0ZWw6KzE4MDAtNTU1LTEyMTIiOworYS5wYXRobmFt
ZSA9ICJ0aGUtcGF0aCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIid0ZWw6KzE4MDAtNTU1LTEyMTIn
Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0
ZS1ob3N0bmFtZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2Ny
aXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0
cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworYS5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdG5hbWUgPSAi
d3d3Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5v
dGhlcmRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiBleGNlcHRp
b24gIlRoZSBVUkwgaXMgaW52YWxpZCIuCit0cnkgeworZGVidWcoIkV4dHJhIHNsYXNoZXMgYmVm
b3JlIGhvc3RuYW1lIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8iOworYS5ob3N0bmFtZSA9ICIvL3d3dy5vdGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0aC8nIik7Cit9
IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKwor
Ly8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBob3N0IHRvIGZvbzog
cHJvdG9jb2wKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbCIp
OworYS5ocmVmID0gImZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5ob3N0bmFtZSA9
ICJ3d3cub3RoZXJkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZvbzovL3d3dy5v
dGhlcmRvbWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxs
Iiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4KKy8vIEZpcmVmb3ggMy41LjIg
YWxsb3dzIHNldHRpbmcgdGhlIGhvc3RuYW1lIHRvIG51bGwsIHdoaWNoIGlzIHdyb25nIHBlcgor
Ly8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1k
ZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gbnVs
bCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2Eu
aG9zdG5hbWUgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIEJvdGggSUU4IGFuZCBGaXJlZm94IDMuNS4yIGFs
bG93IHNldHRpbmcgdGhlIGhvc3QgdG8gZW1wdHkgc3RyaW5nLCBhZ2FpbnN0IHRoZSBzcGVjIGF0
CisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJs
LWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorLy8gU2luY2UgYm90aCBkbyB0aGF0IGlu
IGEgYnVnZ3kgd2F5LCBXZWJLaXQgc2hvdWxkIG5vdCBmb2xsb3cgZWl0aGVyIG9uZSBvZiB0aGVt
LgorZGVidWcoIlNldCBob3N0bmFtZSB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gIiI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsK
KworLy8gSUU4IGZhaWxzIHRvIHByb2Nlc3MgcmVhbGx5OiBwcm90b2NvbC4KK2RlYnVnKCJTZXQg
aG9zdG5hbWUgdG8gVVJMIHdpdGggMiBjb2xvbnMiKTsKK2EuaHJlZiA9ICJyZWFsbHk6YmFkOnVy
bCI7CithLmhvc3RuYW1lID0gIm15ZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidy
ZWFsbHk6YmFkOnVybCciKTsKKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBjaGFu
Z2Ugd2hlbiB0aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggZW5jb2RlcyB0
aGUgc3BhY2UgaW4gdGhlIGhvc3RuYW1lLgorLy8gRmlyZWZveDMuNS4yIGFuZCBXZWJLaXQgY29u
c2lkZXIgc3BhY2UgYXMgaWxsZWdhbCBjaGFyYWN0ZXIgYW5kIHdvdWxkIG5vdCBzZXQgCisvLyB0
aGUgbmV3IGhvc3RuYW1lLgorZGVidWcoIlNldCBhIGhvc3RuYW1lIHRoYXQgY29udGFpbnMgc3Bh
Y2UgaW4gaXQiKTsKK2EuaHJlZiA9ICJodHRwOi8vd3d3Lm15IGRvbWFpbi5jb20vcGF0aC8iOwor
YS5ob3N0bmFtZSA9ICJ3d3cub3RoZXIgZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidodHRwOi8vd3d3Lm15IGRvbWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgYW4g
ZXhjZXB0aW9uICJUaGUgVVJMIGlzIGludmFsaWQiLgordHJ5IHsKK2RlYnVnKCJTZXQgaG9zdG5h
bWUgb24gYSBsb2NhbCBmaWxlIik7CithLmhyZWYgPSAiYzovcGF0aC90ZXN0dXJsLmh0bWwiOwor
YS5ob3N0bmFtZT0gImEiOworc2hvdWxkQmUoImEuaHJlZiIsICInYzovcGF0aC90ZXN0dXJsLmh0
bWwnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9u
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmli
dXRlLXByb3RvY29sLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc1IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBh
dHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuJyk7CisKK3ZhciBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gImh0
dHAtZm9vIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHAtZm9vOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudCIgZXhjZXB0aW9u
LgorZGVidWcoIlNldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgJzonIik7Cit0cnkgeworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gImh0
dHA6Zm9vIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlv
bik7Cit9CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2VwdGlvbi4KK2Rl
YnVnKCJTZXQgYSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyIpOwor
dHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90
b2NvbCA9ICJodHRwXmZvbyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRv
bWFpbi5jb20vcGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBl
LmRlc2NyaXB0aW9uKTsKK30KKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBjaGFu
Z2Ugd2hlbiB0aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggZW5jb2RlcyAn
XicgaW4gdGhlIGhvc3QuCitkZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdG8gYSBVUkwgd2l0aCBpbnZh
bGlkIGhvc3QgbmFtZSIpOworYS5ocmVmID0gImg6Xl4iOworYS5wcm90b2NvbCA9ICJmb28iOwor
c2hvdWxkQmUoImEuaHJlZiIsICInZm9vOl5eJyIpOworCisvLyBJRTggdGhyb3dzICJJbnZhbGlk
IGFyZ3VtZW50IiBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBhIHByb3RvY29sIHRoYXQg
c3RhcnRzIHdpdGggJzonIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvIjsKK2EucHJvdG9jb2wgPSAiOmh0dHAiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0
aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJu
dWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4KK2RlYnVnKCJTZXQgcHJv
dG9jb2wgdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
LyI7CithLnByb3RvY29sID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVu
dCIgZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8gZW1wdHkgc3RyaW5n
Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9j
b2wgPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRp
b24pOworfQorCisvLyBGaXJlZm94IDMuNS4yIHRyaWVzIHRvIGJ1aWxkIGEgaGllcmFyY2hpY2Fs
IFVSTC4KK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8gaHR0cCBvbiBtYWxmb3JtZWQgVVJMIik7Cith
LmhyZWYgPSAiZm9vOj8/YmFyIjsKK2EucHJvdG9jb2wgPSAiaHR0cCI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwOj8/YmFyJyIpOworCisvLyBJRTgga2VlcHMgdGhlIHByb3RvY29sIGlmIGl0
IGlzICdjOicuCitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGEgVVJMIHdoaWNoIHBvaW50cyB0byBh
IGxvY2FsIGZpbGUiKTsKK2EuaHJlZiA9ICJjOlxwYXRoIjsKK2EucHJvdG9jb2wgPSAiZi1vbyI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidmLW9vOnBhdGgnIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQt
aHJlZi1hdHRyaWJ1dGUtaGFzaC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFz
aC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0
dGluZyB0aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4n
KTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJIYXNo
IHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdpdGggJyMnIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2EuaGFzaCA9ICJo
YXNoLXZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvdGVzdHVybC5odG1sI2hhc2gtdmFsdWUnIik7CisKK2RlYnVnKCJIYXNoIHZh
bHVlIHN0YXJ0cyB3aXRoICcjJyIpOworYS5ocmVmID0gImZpbGU6Ly8vcGF0aC90ZXN0dXJsLmh0
bWwjbWlkZGxlIjsKK2EuaGFzaCA9ICIjaGFzaF92YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidmaWxlOi8vL3BhdGgvdGVzdHVybC5odG1sI2hhc2hfdmFsdWUnIik7CisKK2RlYnVnKCInPycg
aW4gaGFzaCB2YWx1ZSIpOworYS5ocmVmID0gImh0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
dGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiI2hhc2g/dmFsdWUiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjaGFz
aD92YWx1ZSciKTsKKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBjaGFuZ2Ugd2hl
biBjaGFyYWN0ZXIgdGFibGUgaXMgdXBkYXRlZC4KKy8vIElFOCBhbmQgRmlyZWZveDMuNS4yIGRv
bid0IGNvbnNpZGVyIHRoZXNlIGNoYXJhY3RlcnMgYXMgaWxsZWdhbC4KK2RlYnVnKCInIycgaW4g
aGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZSIpOworYS5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15XCJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNt
aWRkbGUiOworYS5oYXNoID0gIiNoYXNoI3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0
dHBzOi8vd3d3Lm15XCJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUn
Iik7CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSBy
aWdodCB0aGluZyB0byBkby4KKy8vIEZpcmVmb3ggMy41LjIgcmVtb3ZlcyB0aGUgJyMnIGF0IHRo
ZSBlbmQsIGFuZCBpdCBzaG91bGQgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVj
L2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgor
ZGVidWcoIlNldCBoYXNoIHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2EuaGFzaCA9IG51bGw7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwj
JyIpOworCisvLyBGaXJlZm94IDMuNS4yIHJlbW92ZXMgdGhlICcjJyBhdCB0aGUgZW5kLCBhbmQg
aXQgc2hvdWxkIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVj
dHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQg
aGFzaCB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2EuaGFzaCA9ICIiOworc2hvdWxkQmUoImEu
aHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIyciKTsK
KworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIGhhc2ggdG8gbWFpbHRv
OiBzY2hlbWUsIGFuZCBpdCBzaG91bGQuCitkZWJ1ZygiQWRkIGhhc2ggdG8gbWFpbHRvOiBwcm90
b2NvbCIpOworYS5ocmVmID0gIm1haWx0bzplLW1haWxfYWRkcmVzc0Bnb2VzX2hlcmUiOworYS5o
YXNoID0gImhhc2gtdmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInbWFpbHRvOmUtbWFpbF9h
ZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVlJyIpOworCisvLyBJRTggZG9lcyBub3QgcGVyY2Vu
dC1lbmNvZGUgc3BhY2VzIGluIHRoZSBoYXNoIGNvbXBvbmVudCwgYnV0IGl0IGRvZXMgdGhhdAor
Ly8gaW4gdGhlIHBhdGggY29tcG9uZW50LgorZGVidWcoIkFkZCBoYXNoIHRvIGZpbGU6IHByb3Rv
Y29sIik7CithLmhyZWYgPSAiZmlsZTovLy9zb21lIHBhdGgiOworYS5oYXNoID0gImhhc2ggdmFs
dWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInZmlsZTovLy9zb21lJTIwcGF0aCNoYXNoJTIwdmFs
dWUnIik7CisKK2RlYnVnKCJTZXQgaGFzaCB0byAnIyciKTsKK2EuaHJlZiA9ICJodHRwOi8vbXlk
b21haW4uY29tI21pZGRsZSI7CithLmhhc2ggPSAiIyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwOi8vbXlkb21haW4uY29tLyMnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWxs
b3cgc2V0dGluZyBoYXNoIHRvIGZvbzogc2NoZW1lLCBhbmQgaXQgc2hvdWxkLgorZGVidWcoIkFk
ZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbCIpOwordHJ5IHsKK2EuaHJlZiA9ICJmb286
YmFyIjsKK2EuaGFzaCA9ICIjaGFzaCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286YmFyI2hh
c2gnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9u
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmli
dXRlLXBvcnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0
IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUg
VVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsKKworZGVidWcoIkRlZmF1bHQgcG9ydCBhcyBudW1iZXIiKTsKK2EuaHJlZiA9
ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUiOworYS5wb3J0ID0gNDQzOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworZGVidWcoIkRlZmF1
bHQgcG9ydCBhcyBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206
ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wb3J0ID0gIjQ0MyI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBvcnQgdG8gMCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7
CithLnBvcnQgPSAiMCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8vIEZpcmVmb3ggMy41
LjIgZG9lcyBub3QgYWNjZXB0IHRoZSBwb3J0IGlmIGFueSBjaGFyYWN0ZXIgaXMgbm90IGEgZGln
aXQuCitkZWJ1ZygiU2V0IHBvcnQgdG8gbm9uLW51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBv
cnQgPSAiNGEiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjQvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRv
ZXMgbm90IGFjY2VwdCB0aGUgcG9ydCBpZiBpdCBpcyBudWxsLgorZGVidWcoIlNldCBwb3J0IHRv
IG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rl
c3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wb3J0ID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhY2NlcHQgdGhlIHBvcnQgaWYgaXQg
aXMgbnVsbC4KK2RlYnVnKCJTZXQgcG9ydCB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUi
OworYS5wb3J0ID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8vIEZpcmVmb3ggMy41
LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgcG9ydCBvbiBhIFVSTCB3aXRoIHByb3RvY29s
IGZvbzogLgorZGVidWcoIlNldCBwb3J0IHRvIFVSTCB3aXRoIGZvbzogcHJvdG9jb2wiKTsKK2Eu
aHJlZiA9ICJmb286Ly9iYXIvIjsKK2EucG9ydCA9IDUwOworc2hvdWxkQmUoImEuaHJlZiIsICIn
Zm9vOi8vYmFyOjUwLyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0
LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNl
YXJjaC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ5IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFy
Y2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQgLicpOworCit2YXIg
YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIlNldCBzZWFyY2ggd2l0
aG91dCAnPyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5
PXZhbHVlIjsKK2Euc2VhcmNoID0gInZhbHVlPWtleSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsdWU9a2V5JyIpOworCisvLyBJRTggZG9l
cyBub3QgZW5jb2RlIHNwYWNlcyBpbiBzZWFyY2ggc3RyaW5nCitkZWJ1ZygiU2V0IHNlYXJjaCB0
aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSI7CithLnNlYXJjaCA9ICI/dmFs
IHVlPSBrZXk/IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoLz92YWwlMjB1ZT0lMjBrZXk/JyIpOworCitkZWJ1ZygiU2V0IHNlYXJjaCB0byBhIG1h
bGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5z
ZWFyY2ggPSAiJSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidzOnd3dy5teWRvbWFpbi5jb20vcGF0
aC8/JSciKTsKKworLy8gSUU4IHRocm93cyAiVGhlIFVSTCBpcyBpbnZhbGlkIiBleGNlcHRpb24u
CitkZWJ1ZygiU2V0IHNlYXJjaCBjb250YWluaW5nICcjJyIpOwordHJ5IHsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlI2hhc2giOworYS5zZWFyY2gg
PSAiP3ZhbHVlI2tleSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC8/dmFsdWUlMjNrZXkjaGFzaCciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4
Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCitkZWJ1ZygiU2V0IHNlYXJjaCB0byBh
IG1hbGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJiYWQ6L3wvdXJsIjsKK2Euc2VhcmNoID0gIj92
YWx1ZT1rZXkiOworc2hvdWxkQmUoImEuaHJlZiIsICInYmFkOi98L3VybD92YWx1ZT1rZXknIik7
CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdo
dCB0aGluZyB0byBkby4KK2RlYnVnKCJTZXQgc2VhcmNoIHRvIG51bGwiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIjsKK2Euc2VhcmNoID0gbnVs
bDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyci
KTsKKworLy8gRmlyZWZveCAzLjUuMiBSZW1vdmVzIHRoZSAnPycsIGFuZCBpdCBzaG91bGRuJ3Qs
IHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1s
I3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQgc2VhcmNoIHRv
IGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
Lz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVz
dHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKK1Rlc3Qgc2V0dGluZyB0
aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgYS5ocmVmIGlzICdo
dHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLycKK1NldCBob3N0IHdpdGggJz8nIGlu
IGl0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXIvP2RvbWFpbi5jb206ODA4MC9w
YXRoLz9rZXk9dmFsdWUnCitTZXQgZGVmYXVsdCBwb3J0IGZvciBhbm90aGVyIHByb3RvY29sCitQ
QVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwL3BhdGgvJworU2V0
IGRlZmF1bHQgcG9ydAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNv
bS9wYXRoLycKK1NldCBob3N0IHdpdGggbGV0dGVycyBpbiBwb3J0IG51bWJlcgorUEFTUyBhLmhy
ZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo0NC9wYXRoLycKK0xlYWRpbmcgc3Bh
Y2UgaW4gcG9ydCBudW1iZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFp
bi5jb206MC9wYXRoLycKK0NvbG9uIHdpdGhvdXQgcG9ydCBudW1iZXIKK1BBU1MgYS5ocmVmIGlz
ICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLycKK1NldCBob3N0IHRvIG51bGwK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLycKK1Nl
dCBob3N0IHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gVVJMIHdpdGggZmlsZTogcHJvdG9jb2wK
K1BBU1MgYS5ocmVmIGlzICdmaWxlOi8vbXlkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3QgY29u
dGFpbmluZyBzbGFzaGVzIGluIGl0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJk
b20vYWluLmNvbS9wYXRoLycKK1NldCBob3N0IHRvIGEgbWFsZm9ybWVkIFVSTAorUEFTUyBhLmhy
ZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyIWRvbWFpbi5jb206MTUvd3cubXlAZG9tYWluLmNvbTo4
MDgwL3BhdGgvJworU2V0IGhvc3QgdGhhdCBzdGFydHMgd2l0aCAnOicKK1BBU1MgYS5ocmVmIGlz
ICdodHRwczovL2RvbWFpbi5jb206ODA4MC9wYXRoLycKK1NldCBob3N0IHRvIFVSTCBjb250YWlu
aW5nIHVzZXJuYW1lIGFuZCAuLgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vcnd3bXlAd3d3Lm90
aGVyIWRvbWFpbi5jb206MjUvcGEuLnRoLycKK1NldCBob3N0IHRvIGEgVVJMIHdpdGggdGVsOiBw
cm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ3RlbDorMS04MTYtNTU1LTEyMTInCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1l
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNSBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBp
biBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jh
c2ljIHRlc3QKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4
MC9wYXRoLycKK0V4dHJhIHNsYXNoZXMgYmVmb3JlIGhvc3RuYW1lCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8g
VVJMIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZvbzovL3d3dy5vdGhlcmRv
bWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIGVtcHR5
IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3Bh
dGgvJworU2V0IGhvc3RuYW1lIHRvIFVSTCB3aXRoIDIgY29sb25zCitQQVNTIGEuaHJlZiBpcyAn
cmVhbGx5OmJhZDp1cmwnCitTZXQgYSBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGluIGl0
CitQQVNTIGEuaHJlZiBpcyAnaHR0cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvJworU2V0IGhv
c3RuYW1lIG9uIGEgbG9jYWwgZmlsZQorUEFTUyBhLmhyZWYgaXMgJ2M6L3BhdGgvdGVzdHVybC5o
dG1sJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjkgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBp
biBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0hh
c2ggdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCAnIycKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoLXZhbHVlJworSGFz
aCB2YWx1ZSBzdGFydHMgd2l0aCAnIycKK1BBU1MgYS5ocmVmIGlzICdmaWxlOi8vL3BhdGgvdGVz
dHVybC5odG1sI2hhc2hfdmFsdWUnCisnPycgaW4gaGFzaCB2YWx1ZQorUEFTUyBhLmhyZWYgaXMg
J2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFsdWUnCisn
IycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZQorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVy
bC5odG1sI21pZGRsZScKK1NldCBoYXNoIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjJworU2V0IGhhc2ggdG8gZW1wdHkg
c3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVz
dHVybC5odG1sIycKK0FkZCBoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlz
ICdtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlI2hhc2gtdmFsdWUnCitBZGQgaGFzaCB0
byBmaWxlOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZpbGU6Ly8vc29tZSUyMHBhdGgjaGFz
aCUyMHZhbHVlJworU2V0IGhhc2ggdG8gJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cDovL215ZG9t
YWluLmNvbS8jJworQWRkIGhhc2ggdG8gbm9uLXN0YW5kYXJkIHByb3RvY29sCitQQVNTIGEuaHJl
ZiBpcyAnZm9vOmJhciNoYXNoJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRo
bmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgcG9y
dCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgcG9ydCBhcyBudW1iZXIKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVl
JworRGVmYXVsdCBwb3J0IGFzIHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byAwCitQ
QVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gbm9uLW51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo0L3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1Nl
dCBwb3J0IHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206
MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBlbXB0eSBzdHJpbmcK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBVUkwgd2l0aCBmb286IHByb3RvY29sCitQQVNT
IGEuaHJlZiBpcyAnZm9vOi8vYmFyOjUwLycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTkyOSkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDA5LTEw
LTIyICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgVVJMIGRlY29tcG9z
aXRpb24gSURMIGF0dHJpYnV0ZXMgZm9yIEhUTUxBbmNob3JFbGVtZW50LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzIKKworICAgICAgICBUZXN0
Y2FzZXMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBVUkwu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3Qu
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cGF0aG5hbWUuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJp
YnV0ZS1wcm90b2NvbC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guanM6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1o
YXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtaG9zdG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBh
dGhuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWw6IEFkZGVkLgorCiAyMDA5
LTEwLTIxICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgo=
</data>
<flag name="review"
          id="23104"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42233</attachid>
            <date>2009-10-30 14:25:40 -0700</date>
            <delta_ts>2009-11-01 15:03:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>54437</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDktMTAtMzAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
aG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2Nh
dGlvbjo6c2V0UG9ydCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hv
ckVsZW1lbnQ6OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVt
ZW50OjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6
c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJjaCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuaWRsOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNvblVSTCk6CisgICAgICAgICogcGxhdGZvcm0v
S1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpyZW1vdmVQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OktVUkw6OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0SG9z
dEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJldHR5VVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OktVUkw6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvdG9jb2xWYWxp
ZCk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5oOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6
Y2FuU2V0SG9zdE9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjYW5TZXRQYXRobmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpoYXNQb3J0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisKIDIwMDktMTAtMzAgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tV
UkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gNTAz
NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiAr
NzgsNyBAQAogICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSk7CiAgICAgS1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBj
b25zdCBUZXh0RW5jb2RpbmcmKTsKIAorCiAjaWYgVVNFKEdPT0dMRVVSTCkKICAgICAvLyBGb3Ig
Y29udmVyc2lvbnMgZm9yIG90aGVyIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGFscmVhZHkgcGFyc2Vk
IGFuZAogICAgIC8vIGNhbm9uaWNhbGl6ZWQgdGhlIFVSTC4gVGhlIGlucHV0IG11c3QgYmUgZXhh
Y3RseSB3aGF0IEtVUkwgd291bGQgaGF2ZQpAQCAtMTA0LDYgKzEwNSwxNSBAQAogICAgIC8vIG5v
bi1oaWVyYXJjaGljYWwgKGxpa2UgImphdmFzY3JpcHQ6IikgVVJMcyB3aWxsIGhhdmUgbm8gcGF0
aC4KICAgICBib29sIGhhc1BhdGgoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBp
dCBpcyBhbGxvd2VkIHRvIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTAorICAgIC8v
IFRoaXMgaXMgYWxsb3dlZCBpZiB0aGUgVVJMIGlzIHZhbGlkLCBpcyBoaWVyYXJjaGljYWwgYW5k
IGhhcyBhCisgICAgLy8gc2VydmVyIGJhc2VkIG5hbWluZyBhdXRob3JpdHkuCisgICAgLy8gSUU4
IGFsbG93cyBzZXR0aW5nIHRoZSBoc290IGZvciBmb286Ly8gcHJvdG9jb2wsIHNvIGRvZXMgV2Vi
S2l0LgorICAgIGJvb2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFy
Y2hpY2FsKCk7IH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGlzIGhpZXJhcmNo
aWNhbC4KKyAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJj
aGljYWwoKTsgfQorICAgIAogI2lmIFVTRShHT09HTEVVUkwpCiAgICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VybC5zdHJpbmcoKTsgfQogI2Vsc2UKQEAgLTExMyw2
ICsxMjMsNyBAQAogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwogICAgIFN0cmluZyBob3N0
KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0OworICAgIGJvb2wgaGFz
UG9ydCgpIGNvbnN0OwogICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7CiAgICAgU3RyaW5nIHBhc3Mo
KSBjb25zdDsKICAgICBTdHJpbmcgcGF0aCgpIGNvbnN0OwpAQCAtMTM1LDcgKzE0Niw3IEBACiAg
ICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEhvc3QoY29u
c3QgU3RyaW5nJik7CiAKLSAgICAvLyBTZXR0aW5nIHRoZSBwb3J0IHRvIDAgd2lsbCBjbGVhciBh
bnkgcG9ydCBmcm9tIHRoZSBVUkwuCisgICAgdm9pZCByZW1vdmVQb3J0KCk7CiAgICAgdm9pZCBz
ZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKIAogICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20i
IG9yICJmb28uY29tOjgwMDAiLgpAQCAtMjU0LDYgKzI2NSw3IEBACiAKIGJvb2wgcHJvdG9jb2xJ
cyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwogYm9vbCBwcm90b2Nv
bElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7Citib29sIHByb3RvY29sSXNWYWxpZChj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKIAogU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJiB1cmwpOwogCkBAIC0zMTcsNiArMzI5LDExIEBACiAgICAgcmV0dXJuIG1faXNW
YWxpZDsKIH0KIAoraW5saW5lIGJvb2wgS1VSTDo6aGFzUG9ydCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faG9zdEVuZCA8IG1fcG9ydEVuZDsKK30KKwogaW5saW5lIGJvb2wgS1VSTDo6cHJvdG9j
b2xJbkhUVFBGYW1pbHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3RvY29sSW5IVFRQRmFt
aWx5OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCShyZXZpc2lvbiA1MDM0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
Niw3ICs4NjYsNyBAQAogICAgIC8vIHVzaW5nIEdJTyBpbnRlcm5hbGx5LCBhbmQgcHJvdmlkaW5n
IFVSSXMgaW5zdGVhZCBvZiBmaWxlIHBhdGhzCiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogICAgIHVybC5zZXRRdWVyeShTdHJpbmcoKSk7Ci0gICAgdXJsLnNldFBvcnQoMCk7
CisgICAgdXJsLnJlbW92ZVBvcnQoKTsKIAogI2lmICFQTEFURk9STShXSU5fT1MpCiAgICAgLy8g
d2UgYXZvaWQgdGhlIGVzY2FwaW5nIGZvciBsb2NhbCBmaWxlcywgYmVjYXVzZQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tV
UkwuY3BwCShyZXZpc2lvbiA1MDM0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4NSwxOCArNjg1LDIyIEBACiAgICAgcGFyc2UobV9zdHJpbmcubGVm
dChob3N0U3RhcnQoKSkgKyAoc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIikgKyBzICsgbV9z
dHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogfQogCit2b2lkIEtVUkw6OnJlbW92ZVBvcnQo
KQoreworICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5kKQorICAgICAgICByZXR1cm47Cisg
ICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
cG9ydEVuZCkpOworfQorCiB2b2lkIEtVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQgaSkKIHsK
ICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGkpIHsKLSAg
ICAgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7Ci0gICAgICAg
IGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAx
KTsKKyAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBp
bnQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7
CiAKLSAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVk
ID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0
RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKKyAgICBwYXJzZShtX3N0cmlu
Zy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBTdHJpbmc6Om51
bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKIH0KIAogdm9pZCBLVVJM
OjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQpAQCAtODE5LDcgKzgy
Myw3IEBACiAgICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKCdAJyk7CiAgICAgICAgIH0KICAg
ICAgICAgYXBwZW5kKGF1dGhvcml0eSwgaG9zdCgpKTsKLSAgICAgICAgaWYgKHBvcnQoKSAhPSAw
KSB7CisgICAgICAgIGlmIChoYXNQb3J0KCkpIHsKICAgICAgICAgICAgIGF1dGhvcml0eS5hcHBl
bmQoJzonKTsKICAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIFN0cmluZzo6bnVtYmVyKHBv
cnQoKSkpOwogICAgICAgICB9CkBAIC0xMjY5LDggKzEyNzMsOCBAQAogICAgICAgICBtX3VzZXJT
dGFydCA9IG1fdXNlckVuZCA9IG1fcGFzc3dvcmRFbmQgPSBtX2hvc3RFbmQgPSBtX3BvcnRFbmQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKIAogICAgIC8vIEZvciBjYW5vbmljYWxpemF0aW9uLCBlbnN1
cmUgd2UgaGF2ZSBhICcvJyBmb3Igbm8gcGF0aC4KLSAgICAvLyBPbmx5IGRvIHRoaXMgZm9yIGh0
dHAgYW5kIGh0dHBzLgotICAgIGlmIChtX3Byb3RvY29sSW5IVFRQRmFtaWx5ICYmIHBhdGhFbmQg
LSBwYXRoU3RhcnQgPT0gMCkKKyAgICAvLyBEbyB0aGlzIG9ubHkgZm9yIGhpZXJhcmNoaWNhbCBV
Ukwgd2l0aCBwcm90b2NvbCBodHRwIG9yIGh0dHBzLgorICAgIGlmIChtX3Byb3RvY29sSW5IVFRQ
RmFtaWx5ICYmIGhpZXJhcmNoaWNhbCAmJiBwYXRoRW5kID09IHBhdGhTdGFydCkKICAgICAgICAg
KnArKyA9ICcvJzsKIAogICAgIC8vIGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwpA
QCAtMTYyNCw2ICsxNjI4LDE4IEBACiAgICAgcmV0dXJuIHByb3RvY29sSXModXJsLCAiamF2YXNj
cmlwdCIpOwogfQogCitib29sIHByb3RvY29sSXNWYWxpZChjb25zdCBTdHJpbmcmIHByb3RvY29s
KQoreworICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5sZW5n
dGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIWlzU2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgbWltZVR5
cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQocHJvdG9jb2xJ
cyh1cmwsICJkYXRhIikpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0
b20uY3BwCShyZXZpc2lvbiA1MDM0OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw4ICsyNTcsOSBAQAogICAgIGNvbnN0
IFVTdHJpbmcmIHBvcnRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpbnQgcG9y
dCA9IGNoYXJhY3RlcnNUb0ludChwb3J0U3RyaW5nLmRhdGEoKSwgcG9ydFN0cmluZy5zaXplKCkp
OwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGKQotICAgICAgICBwb3J0ID0gMDsK
LSAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBl
bHNlCisgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAgICAgbmF2aWdhdGVJZkFsbG93ZWQo
ZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50Lmlk
bAkocmV2aXNpb24gNTAzNDgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAKICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nIHRhcmdldDsKICAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5n
IHR5cGU7CiAKLSAgICAgICAgLy8gSUUgRXh0ZW5zaW9ucwotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGhhc2g7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgaG9zdDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwYXRobmFtZTsKLSAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0OwotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGhhc2g7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwYXRobmFtZTsKKyAgICAgICAgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHBvcnQ7CisgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwcm90b2NvbDsKKyAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHNlYXJjaDsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0OwogCiAjaWYgZGVmaW5l
ZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDUwMzQ4KQorKysgV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsMTUgQEAK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBbmNob3JFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSk7CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgbGVhZGluZyBzcGFj
ZXMgYmVmb3JlIHRoZSBwb3J0IG51bWJlci4KK3N0YXRpYyB1bnNpZ25lZCBwYXJzZVBvcnRGcm9t
U3RyaW5nUG9zaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1
bnNpZ25lZCYgcG9ydEVuZCkKK3sKKyAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OworICAgIHdoaWxl
IChpc0FTQ0lJRGlnaXQodmFsdWVbcG9ydEVuZF0pKQorICAgICAgICArK3BvcnRFbmQ7CisgICAg
cmV0dXJuIHZhbHVlLnN1YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRv
VUludCgpOworfQorCiBib29sIEhUTUxBbmNob3JFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29u
c3QKIHsKICAgICBpZiAoaXNDb250ZW50RWRpdGFibGUoKSkKQEAgLTM2Miw2ICszNzEsMTYgQEAK
ICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSA/ICIiIDogIiMiICsgZnJh
Z21lbnRJZGVudGlmaWVyOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKHZh
bHVlWzBdID09ICcjJykKKyAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcih2YWx1ZS5z
dWJzdHJpbmcoMSkpOworICAgIGVsc2UKKyAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmll
cih2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFu
Y2hvckVsZW1lbnQ6Omhvc3QoKSBjb25zdAogewogICAgIGNvbnN0IEtVUkwmIHVybCA9IGhyZWYo
KTsKQEAgLTM3MiwzMiArMzkxLDE0NSBAQAogICAgIHJldHVybiB1cmwuaG9zdCgpICsgIjoiICsg
U3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6
OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwu
Y2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgc2VwYXJhdG9y
ID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghc2VwYXJhdG9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoc2VwYXJhdG9yID09IC0xKQorICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQo
dmFsdWUpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBwb3J0RW5kOworICAgICAgICB1
bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0
b3IgKyAxLCBwb3J0RW5kKTsKKyAgICAgICAgaWYgKCFwb3J0KSB7CisgICAgICAgICAgICAvLyBo
dHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29t
cG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBnb2Vz
IGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAorICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0
dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KKyAgICAg
ICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsg
MSkgKyAiMCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFNlY3VyaXR5T3Jp
Z2luOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAg
ICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9yKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
c2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhv
c3RuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLmhvc3QoKTsKIH0KIAordm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICAvLyBCZWZvcmUgc2V0dGluZyBuZXcgdmFsdWU6CisgICAgLy8gUmVtb3ZlIGFsbCBsZWFkaW5n
IFUrMDAyRiBTT0xJRFVTICgiLyIpIGNoYXJhY3RlcnMuCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgdW5zaWduZWQgaG9zdExlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlICh2YWx1
ZVtpXSA9PSAnLycpCisgICAgICAgIGkrKzsKKworICAgIGlmIChpID09IGhvc3RMZW5ndGgpCisg
ICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNh
blNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXJsLnNldEhvc3QodmFs
dWUuc3Vic3RyaW5nKGkpKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmlu
ZyBIVE1MQW5jaG9yRWxlbWVudDo6cGF0aG5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBocmVm
KCkucGF0aCgpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQYXRobmFtZShjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJs
LmNhblNldFBhdGhuYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2YWx1ZVswXSA9
PSAnLycpCisgICAgICAgIHVybC5zZXRQYXRoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHVy
bC5zZXRQYXRoKCIvIiArIHZhbHVlKTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30K
KwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwb3J0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
U3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYo
KTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1
cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcworICAgIC8vIHNwZWNpZmljYWxseSBnb2Vz
IGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAorICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhl
IHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCisgICAgdW5zaWduZWQg
cG9ydCA9IHZhbHVlLnRvVUludCgpOworICAgIGlmIChTZWN1cml0eU9yaWdpbjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgdXJsLnJlbW92
ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworCisgICAgc2V0
SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3Rv
Y29sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnByb3RvY29sKCkgKyAiOiI7CiB9CiAK
K3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgaW50IHNlcGFyYXRvciA9IHZhbHVlLmZpbmQoJzonKTsKKworICAgIGlmICghc2Vw
YXJhdG9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgLy8gRm9sbG93aW5nIEZp
cmVmb3ggMy41LjIgd2hpY2ggcmVtb3ZlcyBhbnl0aGluZyBhZnRlciB0aGUgZmlyc3QgIjoiCisg
ICAgU3RyaW5nIG5ld1Byb3RvY29sID0gdmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcik7Cisg
ICAgaWYgKCFwcm90b2NvbElzVmFsaWQobmV3UHJvdG9jb2wpKQorICAgICAgICByZXR1cm47Cisg
ICAgdXJsLnNldFByb3RvY29sKG5ld1Byb3RvY29sKTsKKworICAgIHNldEhyZWYodXJsLnN0cmlu
ZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50OjpzZWFyY2goKSBjb25zdAogewog
ICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOwogICAgIHJldHVybiBxdWVyeS5pc0Vt
cHR5KCkgPyAiIiA6ICI/IiArIHF1ZXJ5OwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50Ojpz
ZXRTZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsK
KyAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJp
bmcoMSkgOiB2YWx1ZTsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRv
ZXMgbm90IGxlYWsgdG8gdGhlIGhhc2guCisgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBs
YWNlKCcjJywgIiUyMyIpKTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwogU3Ry
aW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaW5uZXJU
ZXh0KCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAkocmV2aXNpb24gNTAzNDgpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MTIgKzYyLDI2IEBACiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsK
KwogICAgIFN0cmluZyBob3N0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmlu
ZyYpOworCiAgICAgU3RyaW5nIGhvc3RuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0bmFt
ZShjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OworICAgIHZv
aWQgc2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgcG9ydCgpIGNvbnN0
OworICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBwcm90b2Nv
bCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisKICAgICBT
dHJpbmcgc2VhcmNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7
CisKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1MDM0OCkKKysrIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDggKzYwNSw4
IEBACiAgICAgS1VSTCB1cmw7CiAgICAgdXJsLnNldFByb3RvY29sKG1fVVJMLnByb3RvY29sKCkp
OwogICAgIHVybC5zZXRIb3N0KG1fVVJMLmhvc3QoKSk7Ci0gICAgaWYgKGludCBwb3J0ID0gbV9V
UkwucG9ydCgpKQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICBpZiAobV9VUkwuaGFz
UG9ydCgpKQorICAgICAgICB1cmwuc2V0UG9ydChtX1VSTC5wb3J0KCkpOwogICAgIHVybC5zZXRQ
YXRoKCIvZmF2aWNvbi5pY28iKTsKICAgICByZXR1cm4gdXJsOwogfQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29s
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJv
dG9jb2wuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRy
aWJ1dGUtcHJvdG9jb2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXNlYXJjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1h
dHRyaWJ1dGUtc2VhcmNoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wYXRobmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjcgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9m
IHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitTZXQgcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCBzbGFzaAorUEFTUyBhLmhyZWYg
aXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoJTIwbmFtZT9rZXk9dmFsdWUnCitTZXQg
cGF0aG5hbWUgdGhhdCBkb2VzIG5vdCBzdGFydCB3aXRoIHNsYXNoIGFuZCBjb250YWlucyAnPycK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFs
dWUnCitTZXQgcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCBkb3VibGUgc2xhc2ggYW5kIGNvbnRh
aW5zICcjJworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8vcGF0aCUy
M25hbWU/a2V5PXZhbHVlJworU2V0IGEgcGF0aG5hbWUgY29udGFpbmluZyAuLiBpbiBpdAorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZScKK1Nl
dCBwYXRobmFtZSB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tLz9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJl
ZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUg
dGhhdCBpbmNsdWRlcyBpbGxlZ2FsIGNoYXJhY3RlcnMgdG8gVVJMIHRoYXQgY29udGFpbnMgaWxs
ZWdhbCBjaGFyYWN0ZXJzLgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15fGRbXSgpb21h
aW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0byBVUkwg
dGhhdCBjb250YWlucyAnQCcgaW4gaG9zdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly93QC9wYXRo
I3d3JworU2V0IHBhdGhuYW1lIHRvIGEgVVJMIHdpdGggbm9uLWhpZXJhcmNoaWNhbCBwcm90b2Nv
bAorUEFTUyBhLmhyZWYgaXMgJ3RlbDorMTgwMC01NTUtMTIxMicKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBA
CitUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxB
bmNob3JFbGVtZW50IC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRl
c3QKK1BBU1MgYS5ocmVmIGlzICdodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitT
ZXQgYSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zICc6JworUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyBpbnZh
bGlkIGNoYXJhY3RlcnMKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8nCitTZXQgYSBwcm90b2NvbCB0byBhIFVSTCB3aXRoIGludmFsaWQgaG9zdCBuYW1lCitQ
QVNTIGEuaHJlZiBpcyAnZm9vOl5eJworU2V0IGEgcHJvdG9jb2wgdGhhdCBzdGFydHMgd2l0aCAn
OicKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQg
cHJvdG9jb2wgdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoLycKK1NldCBwcm90b2NvbCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgcHJvdG9jb2wgdG8gaHR0cCBvbiBt
YWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnaHR0cDo/P2JhcicKK1NldCBwcm90b2NvbCB0
byBhIFVSTCB3aGljaCBwb2ludHMgdG8gYSBsb2NhbCBmaWxlCitQQVNTIGEuaHJlZiBpcyAnZi1v
bzpwYXRoJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLWhvc3RuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
ZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRl
IG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQgLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworU2V0IHNlYXJjaCB3aXRob3V0ICc/JworUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZT1rZXknCitTZXQgc2VhcmNoIHRoYXQgc3Rh
cnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsJTIwdWU9JTIwa2V5PycKK1NldCBzZWFyY2ggdG8g
YSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnczp3d3cubXlkb21haW4uY29tL3BhdGgv
PyUnCitTZXQgc2VhcmNoIGNvbnRhaW5pbmcgJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlJTIza2V5I2hhc2gnCitTZXQgc2VhcmNoIHRvIGEg
bWFsZm9ybWVkIFVSTAorUEFTUyBhLmhyZWYgaXMgJ2JhZDovfC91cmw/dmFsdWU9a2V5JworU2V0
IHNlYXJjaCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvJworU2V0IHNlYXJjaCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LWhhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGlu
ZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4nKTsK
KwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJCYXNpYyB0
ZXN0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOwor
YS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206MCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyAi
VGhlIFVSTCBpcyBpbnZhbGlkIiBleGNlcHRpb24uCitkZWJ1ZygiU2V0IGhvc3Qgd2l0aCAnPycg
aW4gaXQiKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8/a2V5PXZhbHVlIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXI/ZG9tYWluLmNvbTo4MDgwIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyLz9kb21haW4uY29tOjgwODAv
cGF0aC8/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsg
ZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgZGVmYXVsdCBwb3J0IGZvciBhbm90aGVy
IHByb3RvY29sIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206ODAiOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwL3BhdGgvJyIpOworCitkZWJ1Zygi
U2V0IGRlZmF1bHQgcG9ydCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOjQ0MyI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb20vcGF0aC8nIik7CisKKy8v
IEZpcmVmb3ggMy41LjIgcmVqZWN0cyBhIHBvcnQgdGhhdCBjb250YWlucyBub24tZGlnaXRzLgor
ZGVidWcoIlNldCBob3N0IHdpdGggbGV0dGVycyBpbiBwb3J0IG51bWJlciIpOworYS5ocmVmID0g
Imh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3Ro
ZXJkb21haW4uY29tOjQ0YTUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3Ro
ZXJkb21haW4uY29tOjQ0L3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGlnbm9yZXMgdGhl
IGxlYWRpbmcgc3BhY2UgaW4gdGhlIHBvcnQsIGJ1dCBlcnJzIG9uIHJlcGFyc2luZyB0aGUgcG9y
dC4KK2RlYnVnKCJMZWFkaW5nIHNwYWNlIGluIHBvcnQgbnVtYmVyIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRv
bWFpbi5jb206IDQ0MyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRv
bWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gRmlyZWZveCAzLjUuMiByZW1vdmVkIHRoZSBwb3J0
LCBjbGVhcmx5IGFnYWluc3QgdGhlIHNwZWMgYXQgIC4KK2RlYnVnKCJDb2xvbiB3aXRob3V0IHBv
cnQgbnVtYmVyIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206IjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJyIpOworCisvLyBJRTggY29u
dmVydHMgbnVsbCB0byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8u
CisvLyBGaXJlZm94IDMuNS4yIGFsbG93cyBzZXR0aW5nIHRoZSBob3N0IHRvIG51bGwsIHdoaWNo
IGl0IHNob3VsZG4ndCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFz
dHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1Zygi
U2V0IGhvc3QgdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvIjsKK2EuaG9zdCA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKKworLy8gQm90aCBJRTggYW5kIEZpcmVm
b3ggMy41LjIgYWxsb3cgc2V0dGluZyB0aGUgaG9zdCB0byBlbXB0eSBzdHJpbmcsIHdoaWNoIHRo
ZXkgc2hvdWxkbid0LCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFz
dHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCisvLyBTaW5j
ZSBib3RoIGRvIHRoYXQgaW4gYSBidWdneSB3YXksIFdlYktpdCBkb2VzIG5vdCBmb2xsb3cgZWl0
aGVyIG9uZSBvZiB0aGVtLgorZGVidWcoIlNldCBob3N0IHRvIGVtcHR5IHN0cmluZyIpOworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICIi
Oworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC8nIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYHNldCB0aGUgaG9zdCBmb3IgZmls
ZTogLgorZGVidWcoIlNldCBob3N0IHRvIFVSTCB3aXRoIGZpbGU6IHByb3RvY29sIik7CithLmhy
ZWYgPSAiZmlsZTovLy9wYXRoLyI7CithLmhvc3QgPSAibXlkb21haW4uY29tIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2ZpbGU6Ly9teWRvbWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJv
d3MgaWYgdGhlIGhvc3QgY29udGFpbnMgJy8nCitkZWJ1ZygiU2V0IGhvc3QgY29udGFpbmluZyBz
bGFzaGVzIGluIGl0Iik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJcZG9tL2Fpbi5jb20iOworc2hvdWxk
QmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb20vYWluLmNvbS9wYXRoLyciKTsKK30g
Y2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisv
LyBGaXJlZm94IDMuNS4yIGFkZCB0aGUgbWlzc2luZyAnLycgdGh1cyBnZXRzIGEgZGlmZmVyZW50
IHJlc3VsdCB0aGFuIElFOCBhbmQgV2Via2l0LgorZGVidWcoIlNldCBob3N0IHRvIGEgbWFsZm9y
bWVkIFVSTCIpOworYS5ocmVmID0gImh0dHBzOi9ccnd3Lm15QGRvbWFpbi5jb206ODA4MC9wYXRo
LyI7CithLmhvc3QgPSAid3d3Lm90aGVyIWRvbWFpbi5jb206MTUiOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cub3RoZXIhZG9tYWluLmNvbToxNS93dy5teUBkb21haW4uY29tOjgw
ODAvcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgYW4gIk9iamVjdCBFcnJvciIgZXhjZXB0aW9u
LgorLy8gRmlyZWZveCAzLjUuMiBhY2NlcHRzIHRoaXMgYnV0IHRocm93cyBhbiBleGNlcHRpb24g
bGF0ZXIKKy8vIFdlYktpdCBzaG91bGQganVzdCByZWplY3QKK2RlYnVnKCJTZXQgaG9zdCB0aGF0
IHN0YXJ0cyB3aXRoICc6JyIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL2RvbWFpbi5jb206
ODA4MC9wYXRoLyI7CithLmhvc3QgPSAiOnd3dy5vdGhlcmRvbWFpbi5jb206MTUiOworc2hvdWxk
QmUoImEuaHJlZiIsICInaHR0cHM6Ly9kb21haW4uY29tOjgwODAvcGF0aC8nIik7Cit9IGNhdGNo
KGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4
IHRocm93cyBhIHNlY3VyaXR5IGV4Y2VwdGlvbiBpZiB0aGUgaG9zdCBjb250YWlucyAnQCcKK2Rl
YnVnKCJTZXQgaG9zdCB0byBVUkwgY29udGFpbmluZyB1c2VybmFtZSBhbmQgLi4iKTsKK3RyeSB7
CithLmhyZWYgPSAiaHR0cHM6Ly9yd3dteUBkb21haW4uY29tOjgwODAvcGEuLnRoLyI7CithLmhv
c3QgPSAid3d3Lm90aGVyIWRvbWFpbi5jb206MjUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0
cHM6Ly9yd3dteUB3d3cub3RoZXIhZG9tYWluLmNvbToyNS9wYS4udGgvJyIpOworfSBjYXRjaChl
KSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIEJvdGgg
SUU4IGFuZCBGaXJlZm94IGFwcGVuZCB0aGUgaG9zdHMsIGluc3RlYWQgb2YgcmVqZWN0aW5nLCBw
ZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1
cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhvc3QgdG8gYSBV
Ukwgd2l0aCB0ZWw6IHByb3RvY29sIik7CithLmhyZWYgPSAidGVsOisxLTgxNi01NTUtMTIxMiI7
CithLmhvc3QgPSAiKzEtODAwLTU1NS0xMjEyIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3RlbDor
MS04MTYtNTU1LTEyMTInIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3Nl
dC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRl
LXBhdGhuYW1lLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0
aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7
CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiU2V0IHBh
dGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggc2xhc2giKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAi
L3BhdGggbmFtZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGF0aCUyMG5hbWU/a2V5PXZhbHVlJyIpOworCisvLyBJRTggdGhyb3dzIGFuICJJbnZhbGlk
IFVSTCIgZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBkb2VzIG5v
dCBzdGFydCB3aXRoIHNsYXNoIGFuZCBjb250YWlucyAnPyciKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5h
bWUgPSAicGE/dGgiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhJTNGdGg/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9u
OiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCB0aHJvd3MgYW4gIkludmFsaWQgVVJM
IiBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRo
IGRvdWJsZSBzbGFzaCBhbmQgY29udGFpbnMgJyMnIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGg/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAiLy9wYXRoI25hbWUi
Oworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tLy9wYXRoJTIz
bmFtZT9rZXk9dmFsdWUnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBl
LmRlc2NyaXB0aW9uKTsKK30KKworZGVidWcoIlNldCBhIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4g
aW4gaXQiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAiL2l0Ly4uL3BhdGgiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGg/a2V5PXZhbHVlJyIpOwor
CisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQg
dGhpbmcgdG8gZG8uCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIG51bGwiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2Eu
cGF0aG5hbWUgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tLz9rZXk9dmFsdWUnIik7CisKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gZW1wdHkgc3Ry
aW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUiOwor
YS5wYXRobmFtZSA9ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tLz9rZXk9dmFsdWUnIik7CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQg
Y2hhbmdlIHdoZW4gdGhlIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGNvbnNp
ZGVycyB0aGlzIFVSTCBhcyB2YWxpZC4KK2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBpbmNsdWRl
cyBpbGxlZ2FsIGNoYXJhY3RlcnMgdG8gVVJMIHRoYXQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0
ZXJzLiIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gInAkYXx0aCI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teXxkW10oKW9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRt
bD9rZXk9dmFsdWUnIik7CisKKy8vIElFOCB0aHJvd3MgYSBzZWN1cml0eSBleGNlcHRpb24uCit0
cnkgeworZGVidWcoIlNldCBwYXRobmFtZSB0byBVUkwgdGhhdCBjb250YWlucyAnQCcgaW4gaG9z
dCIpOworYS5ocmVmID0gImh0dHA6Ly93QCN3dyI7CithLnBhdGhuYW1lID0gInBhdGgiOworc2hv
dWxkQmUoImEuaHJlZiIsICInaHR0cDovL3dAL3BhdGgjd3cnIik7Cit9IGNhdGNoKGUpIHsKK2Rl
YnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IGFsbG93cyBz
ZXR0aW5nIHRoZSBwYXRobmFtZSwgZm9yIG5vbi1oaWVyYXJjaGlhbCBVUkwuCisvLyBJdCBpcyBu
b3Qgc3VwcG9zZWQgdG8gYWxsb3cgdGhhdCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1
L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRl
cyAuCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIGEgVVJMIHdpdGggbm9uLWhpZXJhcmNoaWNhbCBw
cm90b2NvbCIpOworYS5ocmVmID0gInRlbDorMTgwMC01NTUtMTIxMiI7CithLnBhdGhuYW1lID0g
InRoZS1wYXRoIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3RlbDorMTgwMC01NTUtMTIxMiciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3RuYW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQt
dGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY3IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1
dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4nKTsKKwordmFyIGEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9ICJ3d3cu
b3RoZXJkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVy
ZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzIGFuIGV4Y2VwdGlvbiAi
VGhlIFVSTCBpcyBpbnZhbGlkIi4KK3RyeSB7CitkZWJ1ZygiRXh0cmEgc2xhc2hlcyBiZWZvcmUg
aG9zdG5hbWUiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyI7CithLmhvc3RuYW1lID0gIi8vd3d3Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKK30gY2F0
Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBG
aXJlZm94IDMuNS4yIGRvZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGhvc3QgdG8gZm9vOiBwcm90
b2NvbAorZGVidWcoIlNldCBob3N0bmFtZSB0byBVUkwgd2l0aCBmb286IHByb3RvY29sIik7Cith
LmhyZWYgPSAiZm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLmhvc3RuYW1lID0gInd3
dy5vdGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInZm9vOi8vd3d3Lm90aGVy
ZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3
aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorLy8gRmlyZWZveCAzLjUuMiBhbGxv
d3Mgc2V0dGluZyB0aGUgaG9zdG5hbWUgdG8gbnVsbCwgd2hpY2ggaXMgd3JvbmcgcGVyCisvLyBo
dHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29t
cG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBob3N0bmFtZSB0byBudWxsIik7
CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0
bmFtZSA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5j
b206ODA4MC9wYXRoLyciKTsKKworLy8gQm90aCBJRTggYW5kIEZpcmVmb3ggMy41LjIgYWxsb3cg
c2V0dGluZyB0aGUgaG9zdCB0byBlbXB0eSBzdHJpbmcsIGFnYWluc3QgdGhlIHNwZWMgYXQKKy8v
IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVj
b21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCisvLyBTaW5jZSBib3RoIGRvIHRoYXQgaW4gYSBi
dWdneSB3YXksIFdlYktpdCBzaG91bGQgbm90IGZvbGxvdyBlaXRoZXIgb25lIG9mIHRoZW0uCitk
ZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdG5hbWUgPSAiIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCisv
LyBJRTggZmFpbHMgdG8gcHJvY2VzcyByZWFsbHk6IHByb3RvY29sLgorZGVidWcoIlNldCBob3N0
bmFtZSB0byBVUkwgd2l0aCAyIGNvbG9ucyIpOworYS5ocmVmID0gInJlYWxseTpiYWQ6dXJsIjsK
K2EuaG9zdG5hbWUgPSAibXlkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3JlYWxs
eTpiYWQ6dXJsJyIpOworCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3
aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUgaXMgdXBkYXRlZC4KKy8vIElFOCBlbmNvZGVzIHRoZSBz
cGFjZSBpbiB0aGUgaG9zdG5hbWUuCisvLyBGaXJlZm94My41LjIgYW5kIFdlYktpdCBjb25zaWRl
ciBzcGFjZSBhcyBpbGxlZ2FsIGNoYXJhY3RlciBhbmQgd291bGQgbm90IHNldCAKKy8vIHRoZSBu
ZXcgaG9zdG5hbWUuCitkZWJ1ZygiU2V0IGEgaG9zdG5hbWUgdGhhdCBjb250YWlucyBzcGFjZSBp
biBpdCIpOworYS5ocmVmID0gImh0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyI7CithLmhv
c3RuYW1lID0gInd3dy5vdGhlciBkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0
dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiBleGNl
cHRpb24gIlRoZSBVUkwgaXMgaW52YWxpZCIuCit0cnkgeworZGVidWcoIlNldCBob3N0bmFtZSBv
biBhIGxvY2FsIGZpbGUiKTsKK2EuaHJlZiA9ICJjOi9wYXRoL3Rlc3R1cmwuaHRtbCI7CithLmhv
c3RuYW1lPSAiYSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidjOi9wYXRoL3Rlc3R1cmwuaHRtbCci
KTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cHJvdG9jb2wuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Njcmlw
dC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzUgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJp
YnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50IC4nKTsKKwordmFyIGEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7CithLmhyZWYg
PSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAiaHR0cC1m
b28iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvJyIpOworCisvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50IiBleGNlcHRpb24uCitk
ZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyAnOiciKTsKK3RyeSB7CithLmhyZWYg
PSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAiaHR0cDpm
b28iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8n
Iik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsK
K30KKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudCIgZXhjZXB0aW9uLgorZGVidWco
IlNldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIik7Cit0cnkg
eworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29s
ID0gImh0dHBeZm9vIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVz
Y3JpcHRpb24pOworfQorCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3
aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUgaXMgdXBkYXRlZC4KKy8vIElFOCBlbmNvZGVzICdeJyBp
biB0aGUgaG9zdC4KK2RlYnVnKCJTZXQgYSBwcm90b2NvbCB0byBhIFVSTCB3aXRoIGludmFsaWQg
aG9zdCBuYW1lIik7CithLmhyZWYgPSAiaDpeXiI7CithLnByb3RvY29sID0gImZvbyI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidmb286Xl4nIik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJn
dW1lbnQiIGV4Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdGhhdCBzdGFy
dHMgd2l0aCAnOiciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8i
OworYS5wcm90b2NvbCA9ICI6aHR0cCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246
ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwi
LCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorZGVidWcoIlNldCBwcm90b2Nv
bCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsK
K2EucHJvdG9jb2wgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50IiBl
eGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBwcm90b2NvbCB0byBlbXB0eSBzdHJpbmciKTsK
K2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9
ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
JyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7
Cit9CisKKy8vIEZpcmVmb3ggMy41LjIgdHJpZXMgdG8gYnVpbGQgYSBoaWVyYXJjaGljYWwgVVJM
LgorZGVidWcoIlNldCBwcm90b2NvbCB0byBodHRwIG9uIG1hbGZvcm1lZCBVUkwiKTsKK2EuaHJl
ZiA9ICJmb286Pz9iYXIiOworYS5wcm90b2NvbCA9ICJodHRwIjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHA6Pz9iYXInIik7CisKKy8vIElFOCBrZWVwcyB0aGUgcHJvdG9jb2wgaWYgaXQgaXMg
J2M6Jy4KK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8gYSBVUkwgd2hpY2ggcG9pbnRzIHRvIGEgbG9j
YWwgZmlsZSIpOworYS5ocmVmID0gImM6XHBhdGgiOworYS5wcm90b2NvbCA9ICJmLW9vIjsKK3No
b3VsZEJlKCJhLmhyZWYiLCAiJ2Ytb286cGF0aCciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1oYXNoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5n
IHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOwor
Cit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkhhc2ggdmFs
dWUgZG9lcyBub3Qgc3RhcnQgd2l0aCAnIyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRv
bWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gImhhc2gt
dmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvcGF0aC90ZXN0dXJsLmh0bWwjaGFzaC12YWx1ZSciKTsKKworZGVidWcoIkhhc2ggdmFsdWUg
c3RhcnRzIHdpdGggJyMnIik7CithLmhyZWYgPSAiZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNt
aWRkbGUiOworYS5oYXNoID0gIiNoYXNoX3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2Zp
bGU6Ly8vcGF0aC90ZXN0dXJsLmh0bWwjaGFzaF92YWx1ZSciKTsKKworZGVidWcoIic/JyBpbiBo
YXNoIHZhbHVlIik7CithLmhyZWYgPSAiaHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0
dXJsLmh0bWwjbWlkZGxlIjsKK2EuaGFzaCA9ICIjaGFzaD92YWx1ZSI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3Zh
bHVlJyIpOworCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3aGVuIGNo
YXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGFuZCBGaXJlZm94My41LjIgZG9uJ3Qg
Y29uc2lkZXIgdGhlc2UgY2hhcmFjdGVycyBhcyBpbGxlZ2FsLgorZGVidWcoIicjJyBpbiBoYXNo
IHZhbHVlLCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGhvc3RuYW1lIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRs
ZSI7CithLmhhc2ggPSAiI2hhc2gjdmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSciKTsK
KworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0
IHRoaW5nIHRvIGRvLgorLy8gRmlyZWZveCAzLjUuMiByZW1vdmVzIHRoZSAnIycgYXQgdGhlIGVu
ZCwgYW5kIGl0IHNob3VsZCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5m
cmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1
ZygiU2V0IGhhc2ggdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gbnVsbDsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnIik7
CisKKy8vIEZpcmVmb3ggMy41LjIgcmVtb3ZlcyB0aGUgJyMnIGF0IHRoZSBlbmQsIGFuZCBpdCBz
aG91bGQgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJl
Lmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBoYXNo
IHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gIiI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjJyIpOworCisv
LyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFsbG93IHNldHRpbmcgaGFzaCB0byBtYWlsdG86IHNj
aGVtZSwgYW5kIGl0IHNob3VsZC4KK2RlYnVnKCJBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29s
Iik7CithLmhyZWYgPSAibWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSI7CithLmhhc2gg
PSAiaGFzaC12YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidtYWlsdG86ZS1tYWlsX2FkZHJl
c3NAZ29lc19oZXJlI2hhc2gtdmFsdWUnIik7CisKKy8vIElFOCBkb2VzIG5vdCBwZXJjZW50LWVu
Y29kZSBzcGFjZXMgaW4gdGhlIGhhc2ggY29tcG9uZW50LCBidXQgaXQgZG9lcyB0aGF0CisvLyBp
biB0aGUgcGF0aCBjb21wb25lbnQuCitkZWJ1ZygiQWRkIGhhc2ggdG8gZmlsZTogcHJvdG9jb2wi
KTsKK2EuaHJlZiA9ICJmaWxlOi8vL3NvbWUgcGF0aCI7CithLmhhc2ggPSAiaGFzaCB2YWx1ZSI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidmaWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2YWx1ZSci
KTsKKworZGVidWcoIlNldCBoYXNoIHRvICcjJyIpOworYS5ocmVmID0gImh0dHA6Ly9teWRvbWFp
bi5jb20jbWlkZGxlIjsKK2EuaGFzaCA9ICIjIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6
Ly9teWRvbWFpbi5jb20vIyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBz
ZXR0aW5nIGhhc2ggdG8gZm9vOiBzY2hlbWUsIGFuZCBpdCBzaG91bGQuCitkZWJ1ZygiQWRkIGhh
c2ggdG8gbm9uLXN0YW5kYXJkIHByb3RvY29sIik7Cit0cnkgeworYS5ocmVmID0gImZvbzpiYXIi
OworYS5oYXNoID0gIiNoYXNoIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZvbzpiYXIjaGFzaCci
KTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cG9ydC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMv
c2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAK
K2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwg
aW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYScpOworCitkZWJ1ZygiRGVmYXVsdCBwb3J0IGFzIG51bWJlciIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7
CithLnBvcnQgPSA0NDM7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiRGVmYXVsdCBw
b3J0IGFzIHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSAiNDQzIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9r
ZXk9dmFsdWUnIik7CisKK2RlYnVnKCJTZXQgcG9ydCB0byAwIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2Eu
cG9ydCA9ICIwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBk
b2VzIG5vdCBhY2NlcHQgdGhlIHBvcnQgaWYgYW55IGNoYXJhY3RlciBpcyBub3QgYSBkaWdpdC4K
K2RlYnVnKCJTZXQgcG9ydCB0byBub24tbnVtYmVyIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9
ICI0YSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9w
YXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBu
b3QgYWNjZXB0IHRoZSBwb3J0IGlmIGl0IGlzIG51bGwuCitkZWJ1ZygiU2V0IHBvcnQgdG8gbnVs
bCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVy
bC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICIn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIp
OworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFjY2VwdCB0aGUgcG9ydCBpZiBpdCBpcyBu
dWxsLgorZGVidWcoIlNldCBwb3J0IHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7Cith
LnBvcnQgPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBk
b2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBwb3J0IG9uIGEgVVJMIHdpdGggcHJvdG9jb2wgZm9v
OiAuCitkZWJ1ZygiU2V0IHBvcnQgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbCIpOworYS5ocmVm
ID0gImZvbzovL2Jhci8iOworYS5wb3J0ID0gNTA7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286
Ly9iYXI6NTAvJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJl
Zi1hdHRyaWJ1dGUtc2VhcmNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNo
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDkgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBh
dHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuJyk7CisKK3ZhciBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiU2V0IHNlYXJjaCB3aXRob3V0
ICc/JyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFs
dWUiOworYS5zZWFyY2ggPSAidmFsdWU9a2V5IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZT1rZXknIik7CisKKy8vIElFOCBkb2VzIG5v
dCBlbmNvZGUgc3BhY2VzIGluIHNlYXJjaCBzdHJpbmcKK2RlYnVnKCJTZXQgc2VhcmNoIHRoYXQg
c3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIjsKK2Euc2VhcmNoID0gIj92YWwgdWU9
IGtleT8iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvP3ZhbCUyMHVlPSUyMGtleT8nIik7CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFsZm9y
bWVkIFVSTCIpOworYS5ocmVmID0gInM6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnNlYXJj
aCA9ICIlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3M6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8l
JyIpOworCisvLyBJRTggdGhyb3dzICJUaGUgVVJMIGlzIGludmFsaWQiIGV4Y2VwdGlvbi4KK2Rl
YnVnKCJTZXQgc2VhcmNoIGNvbnRhaW5pbmcgJyMnIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUjaGFzaCI7CithLnNlYXJjaCA9ICI/
dmFsdWUja2V5IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoLz92YWx1ZSUyM2tleSNoYXNoJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0
aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFs
Zm9ybWVkIFVSTCIpOworYS5ocmVmID0gImJhZDovfC91cmwiOworYS5zZWFyY2ggPSAiP3ZhbHVl
PWtleSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidiYWQ6L3wvdXJsP3ZhbHVlPWtleSciKTsKKwor
Ly8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRo
aW5nIHRvIGRvLgorZGVidWcoIlNldCBzZWFyY2ggdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSBudWxsOwor
c2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOwor
CisvLyBGaXJlZm94IDMuNS4yIFJlbW92ZXMgdGhlICc/JywgYW5kIGl0IHNob3VsZG4ndCwgcGVy
CisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJs
LWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBzZWFyY2ggdG8gZW1w
dHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tl
eT12YWx1ZSI7CithLnNlYXJjaCA9ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvPyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQt
dGVzdHMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9U
RU1QTEFURS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorVGVzdCBzZXR0aW5nIHRoZSBo
b3N0IGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworU2V0IGhvc3Qgd2l0aCAnPycgaW4gaXQK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlci8/ZG9tYWluLmNvbTo4MDgwL3BhdGgv
P2tleT12YWx1ZScKK1NldCBkZWZhdWx0IHBvcnQgZm9yIGFub3RoZXIgcHJvdG9jb2wKK1BBU1Mg
YS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODAvcGF0aC8nCitTZXQgZGVm
YXVsdCBwb3J0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tL3Bh
dGgvJworU2V0IGhvc3Qgd2l0aCBsZXR0ZXJzIGluIHBvcnQgbnVtYmVyCitQQVNTIGEuaHJlZiBp
cyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjQ0L3BhdGgvJworTGVhZGluZyBzcGFjZSBp
biBwb3J0IG51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNv
bTowL3BhdGgvJworQ29sb24gd2l0aG91dCBwb3J0IG51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworU2V0IGhvc3QgdG8gbnVsbAorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhv
c3QgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0byBVUkwgd2l0aCBmaWxlOiBwcm90b2NvbAorUEFT
UyBhLmhyZWYgaXMgJ2ZpbGU6Ly9teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdCBjb250YWlu
aW5nIHNsYXNoZXMgaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbS9h
aW4uY29tL3BhdGgvJworU2V0IGhvc3QgdG8gYSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBp
cyAnaHR0cHM6Ly93d3cub3RoZXIhZG9tYWluLmNvbToxNS93dy5teUBkb21haW4uY29tOjgwODAv
cGF0aC8nCitTZXQgaG9zdCB0aGF0IHN0YXJ0cyB3aXRoICc6JworUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5pbmcg
dXNlcm5hbWUgYW5kIC4uCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly9yd3dteUB3d3cub3RoZXIh
ZG9tYWluLmNvbToyNS9wYS4udGgvJworU2V0IGhvc3QgdG8gYSBVUkwgd2l0aCB0ZWw6IHByb3Rv
Y29sCitQQVNTIGEuaHJlZiBpcyAndGVsOisxLTgxNi01NTUtMTIxMicKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1
IEBACitUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhU
TUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMg
dGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3Bh
dGgvJworRXh0cmEgc2xhc2hlcyBiZWZvcmUgaG9zdG5hbWUKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4MC9wYXRoLycKK1NldCBob3N0bmFtZSB0byBVUkwg
d2l0aCBmb286IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAnZm9vOi8vd3d3Lm90aGVyZG9tYWlu
LmNvbS9wYXRoLycKK1NldCBob3N0bmFtZSB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3Ry
aW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8n
CitTZXQgaG9zdG5hbWUgdG8gVVJMIHdpdGggMiBjb2xvbnMKK1BBU1MgYS5ocmVmIGlzICdyZWFs
bHk6YmFkOnVybCcKK1NldCBhIGhvc3RuYW1lIHRoYXQgY29udGFpbnMgc3BhY2UgaW4gaXQKK1BB
U1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15IGRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdG5h
bWUgb24gYSBsb2NhbCBmaWxlCitGQUlMIGEuaHJlZiBzaG91bGQgYmUgYzovcGF0aC90ZXN0dXJs
Lmh0bWwuIFdhcyBjOi8vYS9wYXRoL3Rlc3R1cmwuaHRtbC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitUZXN0IHNldHRpbmcg
dGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitIYXNoIHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdp
dGggJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC90ZXN0dXJsLmh0bWwjaGFzaC12YWx1ZScKK0hhc2ggdmFsdWUgc3RhcnRzIHdpdGggJyMnCitQ
QVNTIGEuaHJlZiBpcyAnZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoX3ZhbHVlJworJz8n
IGluIGhhc2ggdmFsdWUKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVlJworJyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxl
Z2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5t
eSJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUnCitTZXQgaGFzaCB0
byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVz
dHVybC5odG1sIycKK1NldCBoYXNoIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnCitBZGQgaGFzaCB0byBt
YWlsdG86IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAnbWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdv
ZXNfaGVyZSNoYXNoLXZhbHVlJworQWRkIGhhc2ggdG8gZmlsZTogcHJvdG9jb2wKK1BBU1MgYS5o
cmVmIGlzICdmaWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2YWx1ZScKK1NldCBoYXNoIHRvICcj
JworUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly9teWRvbWFpbi5jb20vIycKK0FkZCBoYXNoIHRvIG5v
bi1zdGFuZGFyZCBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZvbzpiYXIjaGFzaCcKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0
aG5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wYXRobmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1wYXRobmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
c2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIzIEBACitUZXN0IHNldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4g
SFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEZWZh
dWx0IHBvcnQgYXMgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK0RlZmF1bHQgcG9ydCBhcyBzdHJpbmcK
K1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gMAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1NldCBwb3J0IHRv
IG5vbi1udW1iZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9w
YXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBudWxsCitQQVNTIGEuaHJl
ZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlJworU2V0IHBvcnQgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQg
dG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZvbzovL2Jhcjo1MC8n
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTAzNDgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAwOS0xMC0zMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFo
YXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IFVSTCBkZWNvbXBvc2l0aW9uIElETCBhdHRyaWJ1dGVzIGZvciBI
VE1MQW5jaG9yRWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5OTcyCisKKyAgICAgICAgVGVzdGNhc2VzIGZvciBzZXR0aW5nIGFuZCBnZXR0
aW5nIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgVVJMLgorCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NjcmlwdC10ZXN0czogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFz
aC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3RuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0
cmlidXRlLXBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanM6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJl
Zi1hdHRyaWJ1dGUtc2VhcmNoLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1o
YXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nl
dC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1w
YXRobmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLXNlYXJjaC5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0zMCAgU2hpbmljaGlybyBIYW1hamkg
IDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
Lgo=
</data>
<flag name="review"
          id="23737"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42283</attachid>
            <date>2009-11-01 15:03:41 -0800</date>
            <delta_ts>2009-11-01 17:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>53883</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNDkgQEAKIDIwMDktMTEtMDEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVu
dDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29s
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFyY2gpOgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNo
b3JFbGVtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cmVtb3ZlUG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByZXR0eVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzVmFsaWQpOgorICAgICAgICAqIHBsYXRm
b3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNhblNldEhvc3RPclBvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6Y2FuU2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTDo6aGFzUG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCisyMDA5LTExLTAxICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KIAogICAgICAgICBEb24ndCBhZGQgJy8nIHRvIHRoZSBVUkwgcGF0aCBp
ZiB0aGUgaXQgZG9lcyBub3QgaW5jbHVkZSAnLycgYWZ0ZXIgdGhlIHByb3RvY29sIGNvbXBvbmVu
dApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAKICAgICBLVVJMKGNvbnN0IEtVUkwm
IGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwogICAgIEtVUkwoY29uc3QgS1VSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAKKwogI2lm
IFVTRShHT09HTEVVUkwpCiAgICAgLy8gRm9yIGNvbnZlcnNpb25zIGZvciBvdGhlciBzdHJ1Y3R1
cmVzIHRoYXQgaGF2ZSBhbHJlYWR5IHBhcnNlZCBhbmQKICAgICAvLyBjYW5vbmljYWxpemVkIHRo
ZSBVUkwuIFRoZSBpbnB1dCBtdXN0IGJlIGV4YWN0bHkgd2hhdCBLVVJMIHdvdWxkIGhhdmUKQEAg
LTEwNCw2ICsxMDUsMTIgQEAKICAgICAvLyBub24taGllcmFyY2hpY2FsIChsaWtlICJqYXZhc2Ny
aXB0OiIpIFVSTHMgd2lsbCBoYXZlIG5vIHBhdGguCiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7
CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91IGNhbiBzZXQgdGhlIGhvc3QgYW5kIHBvcnQg
Zm9yIHRoZSBVUkwuCisgICAgLy8gTm9uLWhpZXJhcmNoaWNhbCBVUkxzIGRvbid0IGhhdmUgYSBo
b3N0IGFuZCBwb3J0LgorICAgIGJvb2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJu
IGlzSGllcmFyY2hpY2FsKCk7IH0KKworICAgIGJvb2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7
IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAgCiAjaWYgVVNFKEdPT0dMRVVSTCkKICAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnN0cmluZygpOyB9
CiAjZWxzZQpAQCAtMTEzLDYgKzEyMCw3IEBACiAgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7
CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29u
c3Q7CisgICAgYm9vbCBoYXNQb3J0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHVzZXIoKSBjb25zdDsK
ICAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwogICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7CkBAIC0x
MzUsNyArMTQzLDcgQEAKICAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKIAotICAgIC8vIFNldHRpbmcgdGhlIHBvcnQg
dG8gMCB3aWxsIGNsZWFyIGFueSBwb3J0IGZyb20gdGhlIFVSTC4KKyAgICB2b2lkIHJlbW92ZVBv
cnQoKTsKICAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwogCiAgICAgLy8gSW5wdXQg
aXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCkBAIC0yNTQsNiArMjYyLDcgQEAK
IAogYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCk7CiBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK2Jvb2wg
cHJvdG9jb2xJc1ZhbGlkKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogCiBTdHJpbmcgbWltZVR5
cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAKQEAgLTMxNyw2ICszMjYsMTEgQEAK
ICAgICByZXR1cm4gbV9pc1ZhbGlkOwogfQogCitpbmxpbmUgYm9vbCBLVVJMOjpoYXNQb3J0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kIDwgbV9wb3J0RW5kOworfQorCiBpbmxpbmUg
Ym9vbCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cHJvdG9jb2xJbkhUVFBGYW1pbHk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDUwMzk1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODY2LDcgKzg2Niw3IEBACiAgICAgLy8gdXNpbmcgR0lPIGludGVybmFs
bHksIGFuZCBwcm92aWRpbmcgVVJJcyBpbnN0ZWFkIG9mIGZpbGUgcGF0aHMKICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKLSAg
ICB1cmwuc2V0UG9ydCgwKTsKKyAgICB1cmwucmVtb3ZlUG9ydCgpOwogCiAjaWYgIVBMQVRGT1JN
KFdJTl9PUykKICAgICAvLyB3ZSBhdm9pZCB0aGUgZXNjYXBpbmcgZm9yIGxvY2FsIGZpbGVzLCBi
ZWNhdXNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDE4ICs2ODUsMjIgQEAKICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8v
IiA6ICIiKSArIHMgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiB9CiAKK3ZvaWQg
S1VSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRFbmQpCisg
ICAgICAgIHJldHVybjsKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0
cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7Cit9CisKIHZvaWQgS1VSTDo6c2V0UG9ydCh1bnNp
Z25lZCBzaG9ydCBpKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaSkgewotICAgICAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1f
aG9zdEVuZDsKLSAgICAgICAgaW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVu
ZCA6IG1faG9zdEVuZCArIDEpOworICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0g
bV9ob3N0RW5kOworICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQg
OiBtX2hvc3RFbmQgKyAxKTsKIAotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFy
dCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcGFyc2UobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwor
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkp
OwogfQogCiB2b2lkIEtVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBv
cnQpCkBAIC04MTksNyArODIzLDcgQEAKICAgICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQoJ0An
KTsKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkpOwotICAgICAg
ICBpZiAocG9ydCgpICE9IDApIHsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkgewogICAgICAgICAg
ICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwogICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwg
U3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CiAgICAgICAgIH0KQEAgLTE2MjQsNiArMTYyOCwxOCBA
QAogICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsKIH0KIAorYm9vbCBw
cm90b2NvbElzVmFsaWQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBpZiAoIWlzU2No
ZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVu
c2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9jb2wubGVuZ3RoKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFpc1Nj
aGVtZUNoYXIocHJvdG9jb2xbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKHByb3RvY29sSXModXJsLCAiZGF0YSIpKTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTAz
OTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTcsOCArMjU3LDkgQEAKICAgICBjb25zdCBVU3RyaW5nJiBwb3J0U3RyaW5n
ID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaW50IHBvcnQgPSBjaGFyYWN0ZXJzVG9JbnQo
cG9ydFN0cmluZy5kYXRhKCksIHBvcnRTdHJpbmcuc2l6ZSgpKTsKICAgICBpZiAocG9ydCA8IDAg
fHwgcG9ydCA+IDB4RkZGRikKLSAgICAgICAgcG9ydCA9IDA7Ci0gICAgdXJsLnNldFBvcnQocG9y
dCk7CisgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0
UG9ydChwb3J0KTsKIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGV4ZWMsIGZyYW1lLCB1cmwsICFm
cmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSk7
CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwJKHJldmlzaW9uIDUwMzk1KQor
KysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTQgKzM3LDEzIEBACiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsIFJlZmxlY3RdIERPTVN0cmluZyB0YXJnZXQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCi0gICAgICAgIC8v
IElFIEV4dGVuc2lvbnMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBoYXNo
OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgcG9ydDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm90
b2NvbDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZWFyY2g7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBoYXNoOwor
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9z
dDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBwb3J0OworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgcHJvdG9jb2w7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzZWFyY2g7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA1MDM5NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDE1IEBACiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MQW5jaG9yRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCisvLyBUaGlz
IGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0aGUgcG9ydCBu
dW1iZXIuCitzdGF0aWMgdW5zaWduZWQgcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkIHBvcnRTdGFydCwgdW5zaWduZWQmIHBvcnRFbmQpCit7
CisgICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKKyAgICB3aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVl
W3BvcnRFbmRdKSkKKyAgICAgICAgKytwb3J0RW5kOworICAgIHJldHVybiB2YWx1ZS5zdWJzdHJp
bmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKK30KKwogYm9vbCBI
VE1MQW5jaG9yRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiB7CiAgICAgaWYgKGlzQ29u
dGVudEVkaXRhYmxlKCkpCkBAIC0zNjIsNiArMzcxLDE2IEBACiAgICAgcmV0dXJuIGZyYWdtZW50
SWRlbnRpZmllci5pc0VtcHR5KCkgPyAiIiA6ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKIH0K
IAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCisgICAg
ICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBl
bHNlCisgICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUpOworICAgIHNldEhy
ZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkg
Y29uc3QKIHsKICAgICBjb25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CkBAIC0zNzIsMzIgKzM5MSwx
NDUgQEAKICAgICByZXR1cm4gdXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5w
b3J0KCkpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHNlcGFyYXRvciA9IHZhbHVlLmZpbmQoJzonKTsK
KyAgICBpZiAoIXNlcGFyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNlcGFyYXRv
ciA9PSAtMSkKKyAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgdW5zaWduZWQgcG9ydEVuZDsKKyAgICAgICAgdW5zaWduZWQgcG9ydCA9IHBhcnNl
UG9ydEZyb21TdHJpbmdQb3NpdGlvbih2YWx1ZSwgc2VwYXJhdG9yICsgMSwgcG9ydEVuZCk7Cisg
ICAgICAgIGlmICghcG9ydCkgeworICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRt
bDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1
dGVzCisgICAgICAgICAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChw
My4yKSBhbmQKKyAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAi
IGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgIjAiKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOworICAgICAgICB9CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmVmb3JlIHNldHRpbmcg
bmV3IHZhbHVlOgorICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURVUyAoIi8i
KSBjaGFyYWN0ZXJzLgorICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhvc3RMZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQorICAgICAg
ICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAg
ICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7Cisg
ICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6
OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnBhdGgoKTsKIH0KIAordm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmFsdWVbMF0gPT0gJy8nKQorICAgICAgICB1cmwu
c2V0UGF0aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UGF0aCgiLyIgKyB2YWx1
ZSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9y
RWxlbWVudDo6cG9ydCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYo
KS5wb3J0KCkpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2Fu
U2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBodHRwOi8vZGV2Lncz
Lm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRs
LWF0dHJpYnV0ZXMKKyAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChw
My4yKSBhbmQKKyAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBp
cyBzZXQgdG8gZW1wdHkgc3RyaW5nLgorICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQo
KTsKKyAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQor
ICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsK
K30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwcm90b2NvbCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGhyZWYoKS5wcm90b2NvbCgpICsgIjoiOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVt
ZW50OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGludCBzZXBhcmF0
b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisKKyAgICBpZiAoIXNlcGFyYXRvcikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEtV
UkwgdXJsID0gaHJlZigpOworICAgIC8vIEZvbGxvd2luZyBGaXJlZm94IDMuNS4yIHdoaWNoIHJl
bW92ZXMgYW55dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICI6IgorICAgIFN0cmluZyBuZXdQcm90b2Nv
bCA9IHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpOworICAgIGlmICghcHJvdG9jb2xJc1Zh
bGlkKG5ld1Byb3RvY29sKSkKKyAgICAgICAgcmV0dXJuOworICAgIHVybC5zZXRQcm90b2NvbChu
ZXdQcm90b2NvbCk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBI
VE1MQW5jaG9yRWxlbWVudDo6c2VhcmNoKCkgY29uc3QKIHsKICAgICBTdHJpbmcgcXVlcnkgPSBo
cmVmKCkucXVlcnkoKTsKICAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIgKyBx
dWVyeTsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgU3RyaW5nIG5ld1NlYXJj
aCA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBo
YXNoLgorICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiKSk7CisK
KyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVu
dDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlubmVyVGV4dCgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmgJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwyNiBAQAogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGhhc2goKSBjb25z
dDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBo
b3N0bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisK
ICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0
IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBvcnQo
Y29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICB2b2lk
IHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0
OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHRleHQo
KSBjb25zdDsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTAzOTUpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQAogICAgIEtVUkwgdXJsOwog
ICAgIHVybC5zZXRQcm90b2NvbChtX1VSTC5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdCht
X1VSTC5ob3N0KCkpOwotICAgIGlmIChpbnQgcG9ydCA9IG1fVVJMLnBvcnQoKSkKLSAgICAgICAg
dXJsLnNldFBvcnQocG9ydCk7CisgICAgaWYgKG1fVVJMLmhhc1BvcnQoKSkKKyAgICAgICAgdXJs
LnNldFBvcnQobV9VUkwucG9ydCgpKTsKICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7
CiAgICAgcmV0dXJuIHVybDsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitU
ZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNo
b3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU2V0IHBhdGhuYW1l
IHRoYXQgc3RhcnRzIHdpdGggc2xhc2gKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRv
bWFpbi5jb20vcGF0aCUyMG5hbWU/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgZG9lcyBu
b3Qgc3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMgJz8nCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRo
YXQgc3RhcnRzIHdpdGggZG91YmxlIHNsYXNoIGFuZCBjb250YWlucyAnIycKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3BhdGglMjNuYW1lP2tleT12YWx1ZScKK1Nl
dCBhIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4gaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8gbnVsbAor
UEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0
IHBhdGhuYW1lIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgaW5jbHVkZXMgaWxsZWdh
bCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4KK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teXxkW10oKW9tYWluLmNvbS9wYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8gVVJMIHRoYXQgY29udGFpbnMgJ0AnIGlu
IGhvc3QKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd0AvcGF0aCN3dycKK1NldCBwYXRobmFtZSB0
byBhIFVSTCB3aXRoIG5vbi1oaWVyYXJjaGljYWwgcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICd0
ZWw6KzE4MDAtNTU1LTEyMTInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorVGVzdCBzZXR0aW5nIHRoZSBw
cm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGEuaHJlZiBpcyAn
aHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGEgcHJvdG9jb2wgdGhhdCBj
b250YWlucyAnOicKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
LycKK1NldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGEgcHJvdG9j
b2wgdG8gYSBVUkwgd2l0aCBpbnZhbGlkIGhvc3QgbmFtZQorUEFTUyBhLmhyZWYgaXMgJ2Zvbzpe
XicKK1NldCBhIHByb3RvY29sIHRoYXQgc3RhcnRzIHdpdGggJzonCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IHByb3RvY29sIHRvIG51bGwKK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgcHJvdG9j
b2wgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJworU2V0IHByb3RvY29sIHRvIGh0dHAgb24gbWFsZm9ybWVkIFVSTAorUEFTUyBh
LmhyZWYgaXMgJ2h0dHA6Pz9iYXInCitTZXQgcHJvdG9jb2wgdG8gYSBVUkwgd2hpY2ggcG9pbnRz
IHRvIGEgbG9jYWwgZmlsZQorUEFTUyBhLmhyZWYgaXMgJ2Ytb286cGF0aCcKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nl
dC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1o
cmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3RuYW1lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMg
QEAKK1Rlc3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxB
bmNob3JFbGVtZW50IC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NldCBzZWFy
Y2ggd2l0aG91dCAnPycKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8/dmFsdWU9a2V5JworU2V0IHNlYXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29u
dGFpbnMgc3BhY2VzCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvP3ZhbCUyMHVlPSUyMGtleT8nCitTZXQgc2VhcmNoIHRvIGEgbWFsZm9ybWVkIFVSTAorUEFT
UyBhLmhyZWYgaXMgJ3M6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8lJworU2V0IHNlYXJjaCBjb250
YWluaW5nICcjJworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
Lz92YWx1ZSUyM2tleSNoYXNoJworU2V0IHNlYXJjaCB0byBhIG1hbGZvcm1lZCBVUkwKK1BBU1Mg
YS5ocmVmIGlzICdiYWQ6L3wvdXJsP3ZhbHVlPWtleScKK1NldCBzZWFyY2ggdG8gbnVsbAorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBzZWFyY2gg
dG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvPycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtaGFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtaGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1o
cmVmLWF0dHJpYnV0ZS1oYXNoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1wb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0
cmlidXRlLXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMTUgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3QgYXR0cmlidXRl
IG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJk
b21haW4uY29tOjAiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21h
aW4uY29tOjAvcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgIlRoZSBVUkwgaXMgaW52YWxpZCIg
ZXhjZXB0aW9uLgorZGVidWcoIlNldCBob3N0IHdpdGggJz8nIGluIGl0Iik7Cit0cnkgeworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvP2tleT12YWx1ZSI7Cith
Lmhvc3QgPSAid3d3Lm90aGVyP2RvbWFpbi5jb206ODA4MCI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidodHRwczovL3d3dy5vdGhlci8/ZG9tYWluLmNvbTo4MDgwL3BhdGgvP2tleT12YWx1ZSciKTsK
K30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQor
CitkZWJ1ZygiU2V0IGRlZmF1bHQgcG9ydCBmb3IgYW5vdGhlciBwcm90b2NvbCIpOworYS5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cu
b3RoZXJkb21haW4uY29tOjgwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90
aGVyZG9tYWluLmNvbTo4MC9wYXRoLyciKTsKKworZGVidWcoIlNldCBkZWZhdWx0IHBvcnQiKTsK
K2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3Qg
PSAid3d3Lm90aGVyZG9tYWluLmNvbTo0NDMiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIHJlamVj
dHMgYSBwb3J0IHRoYXQgY29udGFpbnMgbm9uLWRpZ2l0cy4KK2RlYnVnKCJTZXQgaG9zdCB3aXRo
IGxldHRlcnMgaW4gcG9ydCBudW1iZXIiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFp
bi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTo0NGE1IjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo0NC9wYXRo
LyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBpZ25vcmVzIHRoZSBsZWFkaW5nIHNwYWNlIGluIHRo
ZSBwb3J0LCBidXQgZXJycyBvbiByZXBhcnNpbmcgdGhlIHBvcnQuCitkZWJ1ZygiTGVhZGluZyBz
cGFjZSBpbiBwb3J0IG51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOiA0NDMiOworc2hv
dWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nIik7
CisKKy8vIEZpcmVmb3ggMy41LjIgcmVtb3ZlZCB0aGUgcG9ydCwgY2xlYXJseSBhZ2FpbnN0IHRo
ZSBzcGVjIC4KK2RlYnVnKCJDb2xvbiB3aXRob3V0IHBvcnQgbnVtYmVyIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhl
cmRvbWFpbi5jb206IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9t
YWluLmNvbTowL3BhdGgvJyIpOworCisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdo
aWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisvLyBGaXJlZm94IDMuNS4yIGFsbG93
cyBzZXR0aW5nIHRoZSBob3N0IHRvIG51bGwsIHdoaWNoIGl0IHNob3VsZG4ndCBwZXIKKy8vIGh0
dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21w
b3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhvc3QgdG8gbnVsbCIpOworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9IG51
bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9w
YXRoLyciKTsKKworLy8gQm90aCBJRTggYW5kIEZpcmVmb3ggMy41LjIgYWxsb3cgc2V0dGluZyB0
aGUgaG9zdCB0byBlbXB0eSBzdHJpbmcsIHdoaWNoIHRoZXkgc2hvdWxkbid0LCBwZXIKKy8vIGh0
dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21w
b3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCisvLyBTaW5jZSBib3RoIGRvIHRoYXQgaW4gYSBidWdn
eSB3YXksIFdlYktpdCBkb2VzIG5vdCBmb2xsb3cgZWl0aGVyIG9uZSBvZiB0aGVtLgorZGVidWco
IlNldCBob3N0IHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICIn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIEZpcmVmb3ggMy41
LjIgZG9lcyBub3QgYHNldCB0aGUgaG9zdCBmb3IgZmlsZTogLgorZGVidWcoIlNldCBob3N0IHRv
IFVSTCB3aXRoIGZpbGU6IHByb3RvY29sIik7CithLmhyZWYgPSAiZmlsZTovLy9wYXRoLyI7Cith
Lmhvc3QgPSAibXlkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZpbGU6Ly9teWRv
bWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgaWYgdGhlIGhvc3QgY29udGFpbnMg
Jy8nCitkZWJ1ZygiU2V0IGhvc3QgY29udGFpbmluZyBzbGFzaGVzIGluIGl0Iik7Cit0cnkgewor
YS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9
ICJ3d3cub3RoZXJcZG9tL2Fpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93
d3cub3RoZXJkb20vYWluLmNvbS9wYXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2Vw
dGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBGaXJlZm94IDMuNS4yIGFkZCB0aGUg
bWlzc2luZyAnLycgdGh1cyBnZXRzIGEgZGlmZmVyZW50IHJlc3VsdCB0aGFuIElFOCBhbmQgV2Vi
a2l0LgorZGVidWcoIlNldCBob3N0IHRvIGEgbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0gImh0
dHBzOi9ccnd3Lm15QGRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVy
IWRvbWFpbi5jb206MTUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXIh
ZG9tYWluLmNvbToxNS93dy5teUBkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIElFOCB0
aHJvd3MgYW4gIk9iamVjdCBFcnJvciIgZXhjZXB0aW9uLgorLy8gRmlyZWZveCAzLjUuMiBhY2Nl
cHRzIHRoaXMgYnV0IHRocm93cyBhbiBleGNlcHRpb24gbGF0ZXIKKy8vIFdlYktpdCBzaG91bGQg
anVzdCByZWplY3QKK2RlYnVnKCJTZXQgaG9zdCB0aGF0IHN0YXJ0cyB3aXRoICc6JyIpOwordHJ5
IHsKK2EuaHJlZiA9ICJodHRwczovL2RvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAi
Ond3dy5vdGhlcmRvbWFpbi5jb206MTUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly9k
b21haW4uY29tOjgwODAvcGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246
ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IHRocm93cyBhIHNlY3VyaXR5IGV4Y2Vw
dGlvbiBpZiB0aGUgaG9zdCBjb250YWlucyAnQCcKK2RlYnVnKCJTZXQgaG9zdCB0byBVUkwgY29u
dGFpbmluZyB1c2VybmFtZSBhbmQgLi4iKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly9yd3dt
eUBkb21haW4uY29tOjgwODAvcGEuLnRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyIWRvbWFpbi5j
b206MjUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly9yd3dteUB3d3cub3RoZXIhZG9t
YWluLmNvbToyNS9wYS4udGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAi
ICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIEJvdGggSUU4IGFuZCBGaXJlZm94IGFwcGVuZCB0
aGUgaG9zdHMsIGluc3RlYWQgb2YgcmVqZWN0aW5nLCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3Jn
L2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0
cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhvc3QgdG8gYSBVUkwgd2l0aCB0ZWw6IHByb3RvY29sIik7
CithLmhyZWYgPSAidGVsOisxLTgxNi01NTUtMTIxMiI7CithLmhvc3QgPSAiKzEtODAwLTU1NS0x
MjEyIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3RlbDorMS04MTYtNTU1LTEyMTInIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFt
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3Rz
L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9m
IHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGgg
c2xhc2giKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAiL3BhdGggbmFtZSI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aCUyMG5hbWU/a2V5PXZhbHVl
JyIpOworCisvLyBJRTggdGhyb3dzIGFuICJJbnZhbGlkIFVSTCIgZXhjZXB0aW9uLgordHJ5IHsK
K2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBkb2VzIG5vdCBzdGFydCB3aXRoIHNsYXNoIGFuZCBj
b250YWlucyAnPyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAicGE/dGgiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5PXZhbHVlJyIp
OworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9
CisKKy8vIElFOCB0aHJvd3MgYW4gIkludmFsaWQgVVJMIiBleGNlcHRpb24uCit0cnkgeworZGVi
dWcoIlNldCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoIGRvdWJsZSBzbGFzaCBhbmQgY29udGFp
bnMgJyMnIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGg/a2V5PXZh
bHVlIjsKK2EucGF0aG5hbWUgPSAiLy9wYXRoI25hbWUiOworc2hvdWxkQmUoImEuaHJlZiIsICIn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tLy9wYXRoJTIzbmFtZT9rZXk9dmFsdWUnIik7Cit9IGNh
dGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworZGVi
dWcoIlNldCBhIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4gaW4gaXQiKTsKK2EuaHJlZiA9ICJodHRw
czovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0
aG5hbWUgPSAiL2l0Ly4uL3BhdGgiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGg/a2V5PXZhbHVlJyIpOworCisvLyBJRTggY29udmVydHMgbnVsbCB0
byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCitkZWJ1ZygiU2V0
IHBhdGhuYW1lIHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSBudWxsOworc2hvdWxk
QmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUnIik7CisK
K2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIiOworc2hvdWxk
QmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUnIik7CisK
Ky8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdoZW4gdGhlIGNoYXJhY3Rl
ciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGNvbnNpZGVycyB0aGlzIFVSTCBhcyB2YWxpZC4K
K2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBpbmNsdWRlcyBpbGxlZ2FsIGNoYXJhY3RlcnMgdG8g
VVJMIHRoYXQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpOworYS5ocmVmID0gImh0dHBz
Oi8vd3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7Cith
LnBhdGhuYW1lID0gInAkYXx0aCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5t
eXxkW10oKW9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8vIElF
OCB0aHJvd3MgYSBzZWN1cml0eSBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBwYXRobmFt
ZSB0byBVUkwgdGhhdCBjb250YWlucyAnQCcgaW4gaG9zdCIpOworYS5ocmVmID0gImh0dHA6Ly93
QCN3dyI7CithLnBhdGhuYW1lID0gInBhdGgiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cDov
L3dAL3BhdGgjd3cnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRl
c2NyaXB0aW9uKTsKK30KKworLy8gSUU4IGFsbG93cyBzZXR0aW5nIHRoZSBwYXRobmFtZSwgZm9y
IG5vbi1oaWVyYXJjaGlhbCBVUkwuCisvLyBJdCBpcyBub3Qgc3VwcG9zZWQgdG8gYWxsb3cgdGhh
dCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRt
bCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IHBhdGhuYW1l
IHRvIGEgVVJMIHdpdGggbm9uLWhpZXJhcmNoaWNhbCBwcm90b2NvbCIpOworYS5ocmVmID0gInRl
bDorMTgwMC01NTUtMTIxMiI7CithLnBhdGhuYW1lID0gInRoZS1wYXRoIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ3RlbDorMTgwMC01NTUtMTIxMiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRl
LWhvc3RuYW1lLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACitkZXNjcmlwdGlvbign
VGVzdCBzZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5j
aG9yRWxlbWVudC4nKTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisK
K2RlYnVnKCJCYXNpYyB0ZXN0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9ICJ3d3cub3RoZXJkb21haW4uY29tIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIp
OworCisvLyBJRTggdGhyb3dzIGFuIGV4Y2VwdGlvbiAiVGhlIFVSTCBpcyBpbnZhbGlkIi4KK3Ry
eSB7CitkZWJ1ZygiRXh0cmEgc2xhc2hlcyBiZWZvcmUgaG9zdG5hbWUiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gIi8vd3d3
Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhl
cmRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlv
bjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFs
bG93IHNldHRpbmcgdGhlIGhvc3QgdG8gZm9vOiBwcm90b2NvbAorZGVidWcoIlNldCBob3N0bmFt
ZSB0byBVUkwgd2l0aCBmb286IHByb3RvY29sIik7CithLmhyZWYgPSAiZm9vOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoLyI7CithLmhvc3RuYW1lID0gInd3dy5vdGhlcmRvbWFpbi5jb20iOworc2hv
dWxkQmUoImEuaHJlZiIsICInZm9vOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLyciKTsKKwor
Ly8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRo
aW5nIHRvIGRvLgorLy8gRmlyZWZveCAzLjUuMiBhbGxvd3Mgc2V0dGluZyB0aGUgaG9zdG5hbWUg
dG8gbnVsbCwgd2hpY2ggaXMgd3JvbmcgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMg
LgorZGVidWcoIlNldCBob3N0bmFtZSB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9IG51bGw7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKKworLy8g
Qm90aCBJRTggYW5kIEZpcmVmb3ggMy41LjIgYWxsb3cgc2V0dGluZyB0aGUgaG9zdCB0byBlbXB0
eSBzdHJpbmcsIGFnYWluc3QgdGhlIHNwZWMgYXQKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1
L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRl
cyAuCisvLyBTaW5jZSBib3RoIGRvIHRoYXQgaW4gYSBidWdneSB3YXksIFdlYktpdCBzaG91bGQg
bm90IGZvbGxvdyBlaXRoZXIgb25lIG9mIHRoZW0uCitkZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIGVt
cHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3Bh
dGgvIjsKK2EuaG9zdG5hbWUgPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCisvLyBJRTggZmFpbHMgdG8gcHJvY2VzcyBy
ZWFsbHk6IHByb3RvY29sLgorZGVidWcoIlNldCBob3N0bmFtZSB0byBVUkwgd2l0aCAyIGNvbG9u
cyIpOworYS5ocmVmID0gInJlYWxseTpiYWQ6dXJsIjsKK2EuaG9zdG5hbWUgPSAibXlkb21haW4u
Y29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ3JlYWxseTpiYWQ6dXJsJyIpOworCisvLyBUaGUg
ZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUg
aXMgdXBkYXRlZC4KKy8vIElFOCBlbmNvZGVzIHRoZSBzcGFjZSBpbiB0aGUgaG9zdG5hbWUuCisv
LyBGaXJlZm94My41LjIgYW5kIFdlYktpdCBjb25zaWRlciBzcGFjZSBhcyBpbGxlZ2FsIGNoYXJh
Y3RlciBhbmQgd291bGQgbm90IHNldCAKKy8vIHRoZSBuZXcgaG9zdG5hbWUuCitkZWJ1ZygiU2V0
IGEgaG9zdG5hbWUgdGhhdCBjb250YWlucyBzcGFjZSBpbiBpdCIpOworYS5ocmVmID0gImh0dHA6
Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyI7CithLmhvc3RuYW1lID0gInd3dy5vdGhlciBkb21h
aW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9w
YXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiBleGNlcHRpb24gIlRoZSBVUkwgaXMgaW52YWxp
ZCIuCit0cnkgeworZGVidWcoIlNldCBob3N0bmFtZSBvbiBhIGxvY2FsIGZpbGUiKTsKK2EuaHJl
ZiA9ICJjOi9wYXRoL3Rlc3R1cmwuaHRtbCI7CithLmhvc3RuYW1lPSAiYSI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidjOi9wYXRoL3Rlc3R1cmwuaHRtbCciKTsKK30gY2F0Y2goZSkgeworZGVidWco
IkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3Nl
dC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1
dGUtcHJvdG9jb2wuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKK2Rlc2NyaXB0aW9u
KCdUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxB
bmNob3JFbGVtZW50IC4nKTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7
CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAiaHR0cC1mb28iOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dz
ICJJbnZhbGlkIGFyZ3VtZW50IiBleGNlcHRpb24uCitkZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdGhh
dCBjb250YWlucyAnOiciKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAiaHR0cDpmb28iOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVn
KCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IHRocm93cyAiSW52
YWxpZCBhcmd1bWVudCIgZXhjZXB0aW9uLgorZGVidWcoIlNldCBhIHByb3RvY29sIHRoYXQgY29u
dGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gImh0dHBeZm9vIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKK30gY2F0Y2go
ZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBUaGUg
ZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUg
aXMgdXBkYXRlZC4KKy8vIElFOCBlbmNvZGVzICdeJyBpbiB0aGUgaG9zdC4KK2RlYnVnKCJTZXQg
YSBwcm90b2NvbCB0byBhIFVSTCB3aXRoIGludmFsaWQgaG9zdCBuYW1lIik7CithLmhyZWYgPSAi
aDpeXiI7CithLnByb3RvY29sID0gImZvbyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286Xl4n
Iik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2VwdGlvbi4KK3RyeSB7
CitkZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdGhhdCBzdGFydHMgd2l0aCAnOiciKTsKK2EuaHJlZiA9
ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICI6aHR0cCI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7
Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30K
KworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0
IHRoaW5nIHRvIGRvLgorZGVidWcoIlNldCBwcm90b2NvbCB0byBudWxsIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSBudWxsOworc2hv
dWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworCisv
LyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50IiBleGNlcHRpb24uCit0cnkgeworZGVidWco
IlNldCBwcm90b2NvbCB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICIiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1
ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIEZpcmVmb3ggMy41LjIg
dHJpZXMgdG8gYnVpbGQgYSBoaWVyYXJjaGljYWwgVVJMLgorZGVidWcoIlNldCBwcm90b2NvbCB0
byBodHRwIG9uIG1hbGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJmb286Pz9iYXIiOworYS5wcm90
b2NvbCA9ICJodHRwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Pz9iYXInIik7CisKKy8v
IElFOCBrZWVwcyB0aGUgcHJvdG9jb2wgaWYgaXQgaXMgJ2M6Jy4KK2RlYnVnKCJTZXQgcHJvdG9j
b2wgdG8gYSBVUkwgd2hpY2ggcG9pbnRzIHRvIGEgbG9jYWwgZmlsZSIpOworYS5ocmVmID0gImM6
XHBhdGgiOworYS5wcm90b2NvbCA9ICJmLW9vIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2Ytb286
cGF0aCciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0
cmlidXRlLWhhc2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcwIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0
aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkhhc2ggdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCAn
IyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1
cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gImhhc2gtdmFsdWUiOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWwjaGFz
aC12YWx1ZSciKTsKKworZGVidWcoIkhhc2ggdmFsdWUgc3RhcnRzIHdpdGggJyMnIik7CithLmhy
ZWYgPSAiZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gIiNoYXNo
X3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZpbGU6Ly8vcGF0aC90ZXN0dXJsLmh0bWwj
aGFzaF92YWx1ZSciKTsKKworZGVidWcoIic/JyBpbiBoYXNoIHZhbHVlIik7CithLmhyZWYgPSAi
aHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2EuaGFz
aCA9ICIjaGFzaD92YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVlJyIpOworCisvLyBUaGUgZXhwZWN0
ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3aGVuIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVk
LgorLy8gSUU4IGFuZCBGaXJlZm94My41LjIgZG9uJ3QgY29uc2lkZXIgdGhlc2UgY2hhcmFjdGVy
cyBhcyBpbGxlZ2FsLgorZGVidWcoIicjJyBpbiBoYXNoIHZhbHVlLCBhbmQgaWxsZWdhbCBjaGFy
YWN0ZXJzIGluIGhvc3RuYW1lIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlcImQoKXt9fH5v
bT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiI2hhc2gjdmFs
dWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlcImQoKXt9fH5vbT9haW4j
Y29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSciKTsKKworLy8gSUU4IGNvbnZlcnRzIG51bGwg
dG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorLy8gRmlyZWZv
eCAzLjUuMiByZW1vdmVzIHRoZSAnIycgYXQgdGhlIGVuZCwgYW5kIGl0IHNob3VsZCBwZXIKKy8v
IGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVj
b21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhhc2ggdG8gbnVsbCIpOwor
YS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRk
bGUiOworYS5oYXNoID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgcmVt
b3ZlcyB0aGUgJyMnIGF0IHRoZSBlbmQsIGFuZCBpdCBzaG91bGQgcGVyCisvLyBodHRwOi8vZGV2
LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24t
aWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBoYXNoIHRvIGVtcHR5IHN0cmluZyIpOworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUi
OworYS5oYXNoID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90
IGFsbG93IHNldHRpbmcgaGFzaCB0byBtYWlsdG86IHNjaGVtZSwgYW5kIGl0IHNob3VsZC4KK2Rl
YnVnKCJBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7CithLmhyZWYgPSAibWFpbHRvOmUt
bWFpbF9hZGRyZXNzQGdvZXNfaGVyZSI7CithLmhhc2ggPSAiaGFzaC12YWx1ZSI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlI2hhc2gtdmFsdWUn
Iik7CisKKy8vIElFOCBkb2VzIG5vdCBwZXJjZW50LWVuY29kZSBzcGFjZXMgaW4gdGhlIGhhc2gg
Y29tcG9uZW50LCBidXQgaXQgZG9lcyB0aGF0CisvLyBpbiB0aGUgcGF0aCBjb21wb25lbnQuCitk
ZWJ1ZygiQWRkIGhhc2ggdG8gZmlsZTogcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJmaWxlOi8vL3Nv
bWUgcGF0aCI7CithLmhhc2ggPSAiaGFzaCB2YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidm
aWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2YWx1ZSciKTsKKworZGVidWcoIlNldCBoYXNoIHRv
ICcjJyIpOworYS5ocmVmID0gImh0dHA6Ly9teWRvbWFpbi5jb20jbWlkZGxlIjsKK2EuaGFzaCA9
ICIjIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly9teWRvbWFpbi5jb20vIyciKTsKKwor
Ly8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIGhhc2ggdG8gZm9vOiBzY2hl
bWUsIGFuZCBpdCBzaG91bGQuCitkZWJ1ZygiQWRkIGhhc2ggdG8gbm9uLXN0YW5kYXJkIHByb3Rv
Y29sIik7Cit0cnkgeworYS5ocmVmID0gImZvbzpiYXIiOworYS5oYXNoID0gIiNoYXNoIjsKK3No
b3VsZEJlKCJhLmhyZWYiLCAiJ2ZvbzpiYXIjaGFzaCciKTsKK30gY2F0Y2goZSkgeworZGVidWco
IkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhy
ZWYtYXR0cmlidXRlLXBvcnQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRp
bmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7
CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiRGVmYXVs
dCBwb3J0IGFzIG51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSA0NDM7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/
a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiRGVmYXVsdCBwb3J0IGFzIHN0cmluZyIpOworYS5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12
YWx1ZSI7CithLnBvcnQgPSAiNDQzIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKK2RlYnVnKCJT
ZXQgcG9ydCB0byAwIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9ICIwIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tl
eT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhY2NlcHQgdGhlIHBvcnQg
aWYgYW55IGNoYXJhY3RlciBpcyBub3QgYSBkaWdpdC4KK2RlYnVnKCJTZXQgcG9ydCB0byBub24t
bnVtYmVyIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9ICI0YSI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWNjZXB0IHRoZSBwb3J0IGlmIGl0
IGlzIG51bGwuCitkZWJ1ZygiU2V0IHBvcnQgdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBv
cnQgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRv
ZXMgbm90IGFjY2VwdCB0aGUgcG9ydCBpZiBpdCBpcyBudWxsLgorZGVidWcoIlNldCBwb3J0IHRv
IGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSAiIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tl
eT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRo
ZSBwb3J0IG9uIGEgVVJMIHdpdGggcHJvdG9jb2wgZm9vOiAuCitkZWJ1ZygiU2V0IHBvcnQgdG8g
VVJMIHdpdGggZm9vOiBwcm90b2NvbCIpOworYS5ocmVmID0gImZvbzovL2Jhci8iOworYS5wb3J0
ID0gNTA7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286Ly9iYXI6NTAvJyIpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Njcmlw
dC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS1zZWFyY2guanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBI
VE1MQW5jaG9yRWxlbWVudCAuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YScpOworCitkZWJ1ZygiU2V0IHNlYXJjaCB3aXRob3V0ICc/JyIpOworYS5ocmVmID0gImh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSAidmFsdWU9
a2V5IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
Lz92YWx1ZT1rZXknIik7CisKKy8vIElFOCBkb2VzIG5vdCBlbmNvZGUgc3BhY2VzIGluIHNlYXJj
aCBzdHJpbmcKK2RlYnVnKCJTZXQgc2VhcmNoIHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250
YWlucyBzcGFjZXMiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/
a2V5PXZhbHVlIjsKK2Euc2VhcmNoID0gIj92YWwgdWU9IGtleT8iOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVlPSUyMGtleT8nIik7
CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0gInM6
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnNlYXJjaCA9ICIlIjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ3M6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8lJyIpOworCisvLyBJRTggdGhyb3dzICJU
aGUgVVJMIGlzIGludmFsaWQiIGV4Y2VwdGlvbi4KK2RlYnVnKCJTZXQgc2VhcmNoIGNvbnRhaW5p
bmcgJyMnIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
Lz9rZXk9dmFsdWUjaGFzaCI7CithLnNlYXJjaCA9ICI/dmFsdWUja2V5IjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZSUyM2tleSNoYXNo
JyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7
Cit9CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0g
ImJhZDovfC91cmwiOworYS5zZWFyY2ggPSAiP3ZhbHVlPWtleSI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidiYWQ6L3wvdXJsP3ZhbHVlPWtleSciKTsKKworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8g
Im51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorZGVidWcoIlNldCBz
ZWFyY2ggdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
Lz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIFJlbW92
ZXMgdGhlICc/JywgYW5kIGl0IHNob3VsZG4ndCwgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9o
dG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJp
YnV0ZXMgLgorZGVidWcoIlNldCBzZWFyY2ggdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSI7CithLnNlYXJjaCA9ICIi
Oworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvPyci
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQt
dGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOSBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0aGUgVVJM
IGluIEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
QmFzaWMgdGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTow
L3BhdGgvJworU2V0IGhvc3Qgd2l0aCAnPycgaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5vdGhlci8/ZG9tYWluLmNvbTo4MDgwL3BhdGgvP2tleT12YWx1ZScKK1NldCBkZWZhdWx0
IHBvcnQgZm9yIGFub3RoZXIgcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5v
dGhlcmRvbWFpbi5jb206ODAvcGF0aC8nCitTZXQgZGVmYXVsdCBwb3J0CitQQVNTIGEuaHJlZiBp
cyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3Qgd2l0aCBsZXR0
ZXJzIGluIHBvcnQgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21h
aW4uY29tOjQ0L3BhdGgvJworTGVhZGluZyBzcGFjZSBpbiBwb3J0IG51bWJlcgorUEFTUyBhLmhy
ZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworQ29sb24gd2l0aG91
dCBwb3J0IG51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNv
bTowL3BhdGgvJworU2V0IGhvc3QgdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gZW1wdHkgc3RyaW5nCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9z
dCB0byBVUkwgd2l0aCBmaWxlOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZpbGU6Ly9teWRv
bWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdCBjb250YWluaW5nIHNsYXNoZXMgaW4gaXQKK1BBU1Mg
YS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbS9haW4uY29tL3BhdGgvJworU2V0IGhvc3Qg
dG8gYSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXIhZG9t
YWluLmNvbToxNS93dy5teUBkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0aGF0IHN0
YXJ0cyB3aXRoICc6JworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vZG9tYWluLmNvbTo4MDgwL3Bh
dGgvJworU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIC4uCitQQVNTIGEu
aHJlZiBpcyAnaHR0cHM6Ly9yd3dteUB3d3cub3RoZXIhZG9tYWluLmNvbToyNS9wYS4udGgvJwor
U2V0IGhvc3QgdG8gYSBVUkwgd2l0aCB0ZWw6IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAndGVs
OisxLTgxNi01NTUtMTIxMicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0IHNldHRpbmcgdGhlIGhv
c3RuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJworRXh0cmEgc2xhc2hlcyBiZWZv
cmUgaG9zdG5hbWUKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206
ODA4MC9wYXRoLycKK1NldCBob3N0bmFtZSB0byBVUkwgd2l0aCBmb286IHByb3RvY29sCitQQVNT
IGEuaHJlZiBpcyAnZm9vOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0bmFt
ZSB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gVVJMIHdp
dGggMiBjb2xvbnMKK1BBU1MgYS5ocmVmIGlzICdyZWFsbHk6YmFkOnVybCcKK1NldCBhIGhvc3Ru
YW1lIHRoYXQgY29udGFpbnMgc3BhY2UgaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3
Lm15IGRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdG5hbWUgb24gYSBsb2NhbCBmaWxlCitGQUlM
IGEuaHJlZiBzaG91bGQgYmUgYzovcGF0aC90ZXN0dXJsLmh0bWwuIFdhcyBjOi8vYS9wYXRoL3Rl
c3R1cmwuaHRtbC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI5IEBACitUZXN0IHNldHRpbmcgdGhlIGhhc2ggYXR0cmlidXRlIG9mIHRo
ZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitIYXNoIHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdpdGggJyMnCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWwjaGFzaC12YWx1
ZScKK0hhc2ggdmFsdWUgc3RhcnRzIHdpdGggJyMnCitQQVNTIGEuaHJlZiBpcyAnZmlsZTovLy9w
YXRoL3Rlc3R1cmwuaHRtbCNoYXNoX3ZhbHVlJworJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgYS5o
cmVmIGlzICdodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3Zh
bHVlJworJyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5h
bWUKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teSJkKCl7fXx+b20/YWluI2NvbS9wYXRo
L3Rlc3R1cmwuaHRtbCNtaWRkbGUnCitTZXQgaGFzaCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIycKK1NldCBoYXNoIHRv
IGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoL3Rlc3R1cmwuaHRtbCMnCitBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29sCitQQVNTIGEu
aHJlZiBpcyAnbWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVlJworQWRk
IGhhc2ggdG8gZmlsZTogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdmaWxlOi8vL3NvbWUlMjBw
YXRoI2hhc2glMjB2YWx1ZScKK1NldCBoYXNoIHRvICcjJworUEFTUyBhLmhyZWYgaXMgJ2h0dHA6
Ly9teWRvbWFpbi5jb20vIycKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbAorUEFT
UyBhLmhyZWYgaXMgJ2ZvbzpiYXIjaGFzaCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0IHNldHRpbmcg
dGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEZWZhdWx0IHBvcnQgYXMgbnVtYmVyCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tl
eT12YWx1ZScKK0RlZmF1bHQgcG9ydCBhcyBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQg
dG8gMAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZScKK1NldCBwb3J0IHRvIG5vbi1udW1iZXIKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUnCitTZXQgcG9ydCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gZW1wdHkg
c3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gVVJMIHdpdGggZm9vOiBwcm90b2Nv
bAorUEFTUyBhLmhyZWYgaXMgJ2ZvbzovL2Jhcjo1MC8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTAzOTUpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzOSBAQAog
MjAwOS0xMS0wMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFVSTCBk
ZWNvbXBvc2l0aW9uIElETCBhdHRyaWJ1dGVzIGZvciBIVE1MQW5jaG9yRWxlbWVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTcyCisKKyAgICAg
ICAgVGVzdGNhc2VzIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIGRpZmZlcmVudCBwYXJ0cyBvZiB0
aGUgVVJMLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0czogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBM
QVRFLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0
ZS1ob3N0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0
cmlidXRlLXBhdGhuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanM6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJl
Zi1hdHRyaWJ1dGUtcHJvdG9jb2wuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtaGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
c2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1wYXRobmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1o
cmVmLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sOiBBZGRlZC4K
KworMjAwOS0xMS0wMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgRG9uJ3QgYWRkICcvJyB0
byB0aGUgVVJMIHBhdGggaWYgdGhlIGl0IGRvZXMgbm90IGluY2x1ZGUgJy8nIGFmdGVyIHRoZSBw
cm90b2NvbCBjb21wb25lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42285</attachid>
            <date>2009-11-01 17:12:57 -0800</date>
            <delta_ts>2009-11-05 11:52:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>54678</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNDkgQEAKIDIwMDktMTEtMDEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVu
dDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29s
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFyY2gpOgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNo
b3JFbGVtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cmVtb3ZlUG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByZXR0eVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzVmFsaWQpOgorICAgICAgICAqIHBsYXRm
b3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNhblNldEhvc3RPclBvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6Y2FuU2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTDo6aGFzUG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCisyMDA5LTExLTAxICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KIAogICAgICAgICBEb24ndCBhZGQgJy8nIHRvIHRoZSBVUkwgcGF0aCBp
ZiB0aGUgaXQgZG9lcyBub3QgaW5jbHVkZSAnLycgYWZ0ZXIgdGhlIHByb3RvY29sIGNvbXBvbmVu
dApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAKICAgICBLVVJMKGNvbnN0IEtVUkwm
IGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwogICAgIEtVUkwoY29uc3QgS1VSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAKKwogI2lm
IFVTRShHT09HTEVVUkwpCiAgICAgLy8gRm9yIGNvbnZlcnNpb25zIGZvciBvdGhlciBzdHJ1Y3R1
cmVzIHRoYXQgaGF2ZSBhbHJlYWR5IHBhcnNlZCBhbmQKICAgICAvLyBjYW5vbmljYWxpemVkIHRo
ZSBVUkwuIFRoZSBpbnB1dCBtdXN0IGJlIGV4YWN0bHkgd2hhdCBLVVJMIHdvdWxkIGhhdmUKQEAg
LTEwNCw2ICsxMDUsMTIgQEAKICAgICAvLyBub24taGllcmFyY2hpY2FsIChsaWtlICJqYXZhc2Ny
aXB0OiIpIFVSTHMgd2lsbCBoYXZlIG5vIHBhdGguCiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7
CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91IGNhbiBzZXQgdGhlIGhvc3QgYW5kIHBvcnQg
Zm9yIHRoZSBVUkwuCisgICAgLy8gTm9uLWhpZXJhcmNoaWNhbCBVUkxzIGRvbid0IGhhdmUgYSBo
b3N0IGFuZCBwb3J0LgorICAgIGJvb2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJu
IGlzSGllcmFyY2hpY2FsKCk7IH0KKworICAgIGJvb2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7
IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAgCiAjaWYgVVNFKEdPT0dMRVVSTCkKICAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnN0cmluZygpOyB9
CiAjZWxzZQpAQCAtMTEzLDYgKzEyMCw3IEBACiAgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7
CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29u
c3Q7CisgICAgYm9vbCBoYXNQb3J0KCkgY29uc3Q7CiAgICAgU3RyaW5nIHVzZXIoKSBjb25zdDsK
ICAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwogICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7CkBAIC0x
MzUsNyArMTQzLDcgQEAKICAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKIAotICAgIC8vIFNldHRpbmcgdGhlIHBvcnQg
dG8gMCB3aWxsIGNsZWFyIGFueSBwb3J0IGZyb20gdGhlIFVSTC4KKyAgICB2b2lkIHJlbW92ZVBv
cnQoKTsKICAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwogCiAgICAgLy8gSW5wdXQg
aXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCkBAIC0yNTQsNiArMjYyLDcgQEAK
IAogYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCk7CiBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK2Jvb2wg
cHJvdG9jb2xJc1ZhbGlkKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogCiBTdHJpbmcgbWltZVR5
cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAKQEAgLTMxNyw2ICszMjYsMTEgQEAK
ICAgICByZXR1cm4gbV9pc1ZhbGlkOwogfQogCitpbmxpbmUgYm9vbCBLVVJMOjpoYXNQb3J0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kIDwgbV9wb3J0RW5kOworfQorCiBpbmxpbmUg
Ym9vbCBLVVJMOjpwcm90b2NvbEluSFRUUEZhbWlseSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cHJvdG9jb2xJbkhUVFBGYW1pbHk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDUwMzk1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODY2LDcgKzg2Niw3IEBACiAgICAgLy8gdXNpbmcgR0lPIGludGVybmFs
bHksIGFuZCBwcm92aWRpbmcgVVJJcyBpbnN0ZWFkIG9mIGZpbGUgcGF0aHMKICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKLSAg
ICB1cmwuc2V0UG9ydCgwKTsKKyAgICB1cmwucmVtb3ZlUG9ydCgpOwogCiAjaWYgIVBMQVRGT1JN
KFdJTl9PUykKICAgICAvLyB3ZSBhdm9pZCB0aGUgZXNjYXBpbmcgZm9yIGxvY2FsIGZpbGVzLCBi
ZWNhdXNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDE4ICs2ODUsMjIgQEAKICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8v
IiA6ICIiKSArIHMgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiB9CiAKK3ZvaWQg
S1VSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRFbmQpCisg
ICAgICAgIHJldHVybjsKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0
cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7Cit9CisKIHZvaWQgS1VSTDo6c2V0UG9ydCh1bnNp
Z25lZCBzaG9ydCBpKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoaSkgewotICAgICAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1f
aG9zdEVuZDsKLSAgICAgICAgaW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVu
ZCA6IG1faG9zdEVuZCArIDEpOworICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0g
bV9ob3N0RW5kOworICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQg
OiBtX2hvc3RFbmQgKyAxKTsKIAotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFy
dCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcGFyc2UobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwor
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkp
OwogfQogCiB2b2lkIEtVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBv
cnQpCkBAIC04MTksNyArODIzLDcgQEAKICAgICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQoJ0An
KTsKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkpOwotICAgICAg
ICBpZiAocG9ydCgpICE9IDApIHsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkgewogICAgICAgICAg
ICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwogICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwg
U3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CiAgICAgICAgIH0KQEAgLTE2MjQsNiArMTYyOCwxOCBA
QAogICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsKIH0KIAorYm9vbCBw
cm90b2NvbElzVmFsaWQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBpZiAoIWlzU2No
ZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVu
c2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9jb2wubGVuZ3RoKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFpc1Nj
aGVtZUNoYXIocHJvdG9jb2xbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKHByb3RvY29sSXModXJsLCAiZGF0YSIpKTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTAz
OTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTcsOCArMjU3LDkgQEAKICAgICBjb25zdCBVU3RyaW5nJiBwb3J0U3RyaW5n
ID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaW50IHBvcnQgPSBjaGFyYWN0ZXJzVG9JbnQo
cG9ydFN0cmluZy5kYXRhKCksIHBvcnRTdHJpbmcuc2l6ZSgpKTsKICAgICBpZiAocG9ydCA8IDAg
fHwgcG9ydCA+IDB4RkZGRikKLSAgICAgICAgcG9ydCA9IDA7Ci0gICAgdXJsLnNldFBvcnQocG9y
dCk7CisgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0
UG9ydChwb3J0KTsKIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGV4ZWMsIGZyYW1lLCB1cmwsICFm
cmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSk7
CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwJKHJldmlzaW9uIDUwMzk1KQor
KysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTQgKzM3LDEzIEBACiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsIFJlZmxlY3RdIERPTVN0cmluZyB0YXJnZXQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCi0gICAgICAgIC8v
IElFIEV4dGVuc2lvbnMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBoYXNo
OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgcG9ydDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm90
b2NvbDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZWFyY2g7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBoYXNoOwor
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaG9z
dDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBwb3J0OworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgcHJvdG9jb2w7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzZWFyY2g7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgdGV4dDsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA1MDM5NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDE1IEBACiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MQW5jaG9yRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCisvLyBUaGlz
IGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0aGUgcG9ydCBu
dW1iZXIuCitzdGF0aWMgdW5zaWduZWQgcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkIHBvcnRTdGFydCwgdW5zaWduZWQmIHBvcnRFbmQpCit7
CisgICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKKyAgICB3aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVl
W3BvcnRFbmRdKSkKKyAgICAgICAgKytwb3J0RW5kOworICAgIHJldHVybiB2YWx1ZS5zdWJzdHJp
bmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKK30KKwogYm9vbCBI
VE1MQW5jaG9yRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiB7CiAgICAgaWYgKGlzQ29u
dGVudEVkaXRhYmxlKCkpCkBAIC0zNjIsNiArMzcxLDE2IEBACiAgICAgcmV0dXJuIGZyYWdtZW50
SWRlbnRpZmllci5pc0VtcHR5KCkgPyAiIiA6ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKIH0K
IAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCisgICAg
ICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBl
bHNlCisgICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUpOworICAgIHNldEhy
ZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkg
Y29uc3QKIHsKICAgICBjb25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CkBAIC0zNzIsMzIgKzM5MSwx
NDUgQEAKICAgICByZXR1cm4gdXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5w
b3J0KCkpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHNlcGFyYXRvciA9IHZhbHVlLmZpbmQoJzonKTsK
KyAgICBpZiAoIXNlcGFyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNlcGFyYXRv
ciA9PSAtMSkKKyAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgdW5zaWduZWQgcG9ydEVuZDsKKyAgICAgICAgdW5zaWduZWQgcG9ydCA9IHBhcnNl
UG9ydEZyb21TdHJpbmdQb3NpdGlvbih2YWx1ZSwgc2VwYXJhdG9yICsgMSwgcG9ydEVuZCk7Cisg
ICAgICAgIGlmICghcG9ydCkgeworICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRt
bDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1
dGVzCisgICAgICAgICAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChw
My4yKSBhbmQKKyAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAi
IGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgIjAiKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOworICAgICAgICB9CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0bmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNl
dEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmVmb3JlIHNldHRpbmcg
bmV3IHZhbHVlOgorICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURVUyAoIi8i
KSBjaGFyYWN0ZXJzLgorICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhvc3RMZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQorICAgICAg
ICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAg
ICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7Cisg
ICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6
OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpLnBhdGgoKTsKIH0KIAordm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmFsdWVbMF0gPT0gJy8nKQorICAgICAgICB1cmwu
c2V0UGF0aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UGF0aCgiLyIgKyB2YWx1
ZSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9y
RWxlbWVudDo6cG9ydCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYo
KS5wb3J0KCkpOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQb3J0KGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2Fu
U2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBodHRwOi8vZGV2Lncz
Lm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRs
LWF0dHJpYnV0ZXMKKyAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChw
My4yKSBhbmQKKyAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBp
cyBzZXQgdG8gZW1wdHkgc3RyaW5nLgorICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQo
KTsKKyAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQor
ICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsK
K30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwcm90b2NvbCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGhyZWYoKS5wcm90b2NvbCgpICsgIjoiOwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVt
ZW50OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGludCBzZXBhcmF0
b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisKKyAgICBpZiAoIXNlcGFyYXRvcikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEtV
UkwgdXJsID0gaHJlZigpOworICAgIC8vIEZvbGxvd2luZyBGaXJlZm94IDMuNS4yIHdoaWNoIHJl
bW92ZXMgYW55dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICI6IgorICAgIFN0cmluZyBuZXdQcm90b2Nv
bCA9IHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpOworICAgIGlmICghcHJvdG9jb2xJc1Zh
bGlkKG5ld1Byb3RvY29sKSkKKyAgICAgICAgcmV0dXJuOworICAgIHVybC5zZXRQcm90b2NvbChu
ZXdQcm90b2NvbCk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBI
VE1MQW5jaG9yRWxlbWVudDo6c2VhcmNoKCkgY29uc3QKIHsKICAgICBTdHJpbmcgcXVlcnkgPSBo
cmVmKCkucXVlcnkoKTsKICAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIgKyBx
dWVyeTsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgU3RyaW5nIG5ld1NlYXJj
aCA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBo
YXNoLgorICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiKSk7CisK
KyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVu
dDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlubmVyVGV4dCgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmgJKHJldmlzaW9uIDUwMzk1KQorKysgV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwyNiBAQAogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGhhc2goKSBjb25z
dDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBo
b3N0bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisK
ICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0
IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBvcnQo
Y29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICB2b2lk
IHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0
OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIHRleHQo
KSBjb25zdDsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTAzOTUpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQAogICAgIEtVUkwgdXJsOwog
ICAgIHVybC5zZXRQcm90b2NvbChtX1VSTC5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdCht
X1VSTC5ob3N0KCkpOwotICAgIGlmIChpbnQgcG9ydCA9IG1fVVJMLnBvcnQoKSkKLSAgICAgICAg
dXJsLnNldFBvcnQocG9ydCk7CisgICAgaWYgKG1fVVJMLmhhc1BvcnQoKSkKKyAgICAgICAgdXJs
LnNldFBvcnQobV9VUkwucG9ydCgpKTsKICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7
CiAgICAgcmV0dXJuIHVybDsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitU
ZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNo
b3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU2V0IHBhdGhuYW1l
IHRoYXQgc3RhcnRzIHdpdGggc2xhc2gKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRv
bWFpbi5jb20vcGF0aCUyMG5hbWU/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgZG9lcyBu
b3Qgc3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMgJz8nCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRo
YXQgc3RhcnRzIHdpdGggZG91YmxlIHNsYXNoIGFuZCBjb250YWlucyAnIycKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3BhdGglMjNuYW1lP2tleT12YWx1ZScKK1Nl
dCBhIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4gaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8gbnVsbAor
UEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0
IHBhdGhuYW1lIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgaW5jbHVkZXMgaWxsZWdh
bCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4KK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teXxkW10oKW9tYWluLmNvbS9wYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdG8gVVJMIHRoYXQgY29udGFpbnMgJ0AnIGlu
IGhvc3QKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd0AvcGF0aCN3dycKK1NldCBwYXRobmFtZSB0
byBhIFVSTCB3aXRoIG5vbi1oaWVyYXJjaGljYWwgcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICd0
ZWw6KzE4MDAtNTU1LTEyMTInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorVGVzdCBzZXR0aW5nIHRoZSBw
cm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGEuaHJlZiBpcyAn
aHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGEgcHJvdG9jb2wgdGhhdCBj
b250YWlucyAnOicKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
LycKK1NldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzCitQQVNT
IGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGEgcHJvdG9j
b2wgdG8gYSBVUkwgd2l0aCBpbnZhbGlkIGhvc3QgbmFtZQorUEFTUyBhLmhyZWYgaXMgJ2Zvbzpe
XicKK1NldCBhIHByb3RvY29sIHRoYXQgc3RhcnRzIHdpdGggJzonCitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IHByb3RvY29sIHRvIG51bGwKK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgcHJvdG9j
b2wgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJworU2V0IHByb3RvY29sIHRvIGh0dHAgb24gbWFsZm9ybWVkIFVSTAorUEFTUyBh
LmhyZWYgaXMgJ2h0dHA6Pz9iYXInCitTZXQgcHJvdG9jb2wgdG8gYSBVUkwgd2hpY2ggcG9pbnRz
IHRvIGEgbG9jYWwgZmlsZQorUEFTUyBhLmhyZWYgaXMgJ2Ytb286cGF0aCcKK1NldCBwcm90b2Nv
bCB0byB1bmRlZmluZWQKK1BBU1MgYS5ocmVmIGlzICd1bmRlZmluZWQ6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1o
cmVmLWF0dHJpYnV0ZS1ob3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0
LWhyZWYtYXR0cmlidXRlLWhvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhvc3RuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJj
aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmli
dXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQgLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworU2V0IHNlYXJjaCB3aXRob3V0ICc/JworUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZT1rZXknCitTZXQgc2VhcmNoIHRoYXQg
c3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsJTIwdWU9JTIwa2V5PycKK1NldCBzZWFyY2gg
dG8gYSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnczp3d3cubXlkb21haW4uY29tL3Bh
dGgvPyUnCitTZXQgc2VhcmNoIGNvbnRhaW5pbmcgJyMnCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlJTIza2V5I2hhc2gnCitTZXQgc2VhcmNoIHRv
IGEgbWFsZm9ybWVkIFVSTAorUEFTUyBhLmhyZWYgaXMgJ2JhZDovfC91cmw/dmFsdWU9a2V5Jwor
U2V0IHNlYXJjaCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvJworU2V0IHNlYXJjaCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmli
dXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9y
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1o
cmVmLWF0dHJpYnV0ZS1ob3N0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0
dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4n
KTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJCYXNp
YyB0ZXN0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8i
OworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206MCI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93
cyAiVGhlIFVSTCBpcyBpbnZhbGlkIiBleGNlcHRpb24uCitkZWJ1ZygiU2V0IGhvc3Qgd2l0aCAn
PycgaW4gaXQiKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvcGF0aC8/a2V5PXZhbHVlIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXI/ZG9tYWluLmNvbTo4MDgw
IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyLz9kb21haW4uY29tOjgw
ODAvcGF0aC8/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAi
ICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgZGVmYXVsdCBwb3J0IGZvciBhbm90
aGVyIHByb3RvY29sIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206ODAiOworc2hvdWxkQmUoImEu
aHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwL3BhdGgvJyIpOworCitkZWJ1
ZygiU2V0IGRlZmF1bHQgcG9ydCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOjQ0MyI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb20vcGF0aC8nIik7CisK
Ky8vIEZpcmVmb3ggMy41LjIgcmVqZWN0cyBhIHBvcnQgdGhhdCBjb250YWlucyBub24tZGlnaXRz
LgorZGVidWcoIlNldCBob3N0IHdpdGggbGV0dGVycyBpbiBwb3J0IG51bWJlciIpOworYS5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICJ3d3cu
b3RoZXJkb21haW4uY29tOjQ0YTUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cu
b3RoZXJkb21haW4uY29tOjQ0L3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGlnbm9yZXMg
dGhlIGxlYWRpbmcgc3BhY2UgaW4gdGhlIHBvcnQsIGJ1dCBlcnJzIG9uIHJlcGFyc2luZyB0aGUg
cG9ydC4KK2RlYnVnKCJMZWFkaW5nIHNwYWNlIGluIHBvcnQgbnVtYmVyIik7CithLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhl
cmRvbWFpbi5jb206IDQ0MyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhl
cmRvbWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gRmlyZWZveCAzLjUuMiByZW1vdmVkIHRoZSBw
b3J0LCBjbGVhcmx5IGFnYWluc3QgdGhlIHNwZWMgLgorZGVidWcoIkNvbG9uIHdpdGhvdXQgcG9y
dCBudW1iZXIiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbToiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjAvcGF0aC8nIik7CisKKy8vIElFOCBjb252
ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4K
Ky8vIEZpcmVmb3ggMy41LjIgYWxsb3dzIHNldHRpbmcgdGhlIGhvc3QgdG8gbnVsbCwgd2hpY2gg
aXQgc2hvdWxkbid0IHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJT
ZXQgaG9zdCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgw
ODAvcGF0aC8iOworYS5ob3N0ID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCisvLyBCb3RoIElFOCBhbmQgRmlyZWZv
eCAzLjUuMiBhbGxvdyBzZXR0aW5nIHRoZSBob3N0IHRvIGVtcHR5IHN0cmluZywgd2hpY2ggdGhl
eSBzaG91bGRuJ3QsIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KKy8vIFNpbmNl
IGJvdGggZG8gdGhhdCBpbiBhIGJ1Z2d5IHdheSwgV2ViS2l0IGRvZXMgbm90IGZvbGxvdyBlaXRo
ZXIgb25lIG9mIHRoZW0uCitkZWJ1ZygiU2V0IGhvc3QgdG8gZW1wdHkgc3RyaW5nIik7CithLmhy
ZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gIiI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
LyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBgc2V0IHRoZSBob3N0IGZvciBmaWxl
OiAuCitkZWJ1ZygiU2V0IGhvc3QgdG8gVVJMIHdpdGggZmlsZTogcHJvdG9jb2wiKTsKK2EuaHJl
ZiA9ICJmaWxlOi8vL3BhdGgvIjsKK2EuaG9zdCA9ICJteWRvbWFpbi5jb20iOworc2hvdWxkQmUo
ImEuaHJlZiIsICInZmlsZTovL215ZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93
cyBpZiB0aGUgaG9zdCBjb250YWlucyAnLycKK2RlYnVnKCJTZXQgaG9zdCBjb250YWluaW5nIHNs
YXNoZXMgaW4gaXQiKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlclxkb20vYWluLmNvbSI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbS9haW4uY29tL3BhdGgvJyIpOworfSBj
YXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8v
IEZpcmVmb3ggMy41LjIgYWRkIHRoZSBtaXNzaW5nICcvJyB0aHVzIGdldHMgYSBkaWZmZXJlbnQg
cmVzdWx0IHRoYW4gSUU4IGFuZCBXZWJraXQuCitkZWJ1ZygiU2V0IGhvc3QgdG8gYSBtYWxmb3Jt
ZWQgVVJMIik7CithLmhyZWYgPSAiaHR0cHM6L1xyd3cubXlAZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdCA9ICJ3d3cub3RoZXIhZG9tYWluLmNvbToxNSI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidodHRwczovL3d3dy5vdGhlciFkb21haW4uY29tOjE1L3d3Lm15QGRvbWFpbi5jb206ODA4
MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiAiT2JqZWN0IEVycm9yIiBleGNlcHRpb24u
CisvLyBGaXJlZm94IDMuNS4yIGFjY2VwdHMgdGhpcyBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBs
YXRlcgorLy8gV2ViS2l0IHNob3VsZCBqdXN0IHJlamVjdAorZGVidWcoIlNldCBob3N0IHRoYXQg
c3RhcnRzIHdpdGggJzonIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vZG9tYWluLmNvbTo4
MDgwL3BhdGgvIjsKK2EuaG9zdCA9ICI6d3d3Lm90aGVyZG9tYWluLmNvbToxNSI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidodHRwczovL2RvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKK30gY2F0Y2go
ZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTgg
dGhyb3dzIGEgc2VjdXJpdHkgZXhjZXB0aW9uIGlmIHRoZSBob3N0IGNvbnRhaW5zICdAJworZGVi
dWcoIlNldCBob3N0IHRvIFVSTCBjb250YWluaW5nIHVzZXJuYW1lIGFuZCAuLiIpOwordHJ5IHsK
K2EuaHJlZiA9ICJodHRwczovL3J3d215QGRvbWFpbi5jb206ODA4MC9wYS4udGgvIjsKK2EuaG9z
dCA9ICJ3d3cub3RoZXIhZG9tYWluLmNvbToyNSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRw
czovL3J3d215QHd3dy5vdGhlciFkb21haW4uY29tOjI1L3BhLi50aC8nIik7Cit9IGNhdGNoKGUp
IHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gQm90aCBJ
RTggYW5kIEZpcmVmb3ggYXBwZW5kIHRoZSBob3N0cywgaW5zdGVhZCBvZiByZWplY3RpbmcsIHBl
cgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3Vy
bC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQgaG9zdCB0byBhIFVS
TCB3aXRoIHRlbDogcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJ0ZWw6KzEtODE2LTU1NS0xMjEyIjsK
K2EuaG9zdCA9ICIrMS04MDAtNTU1LTEyMTIiOworc2hvdWxkQmUoImEuaHJlZiIsICIndGVsOisx
LTgxNi01NTUtMTIxMiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0
LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
cGF0aG5hbWUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRo
ZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4nKTsK
KwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisKK2RlYnVnKCJTZXQgcGF0
aG5hbWUgdGhhdCBzdGFydHMgd2l0aCBzbGFzaCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIv
cGF0aCBuYW1lIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoJTIwbmFtZT9rZXk9dmFsdWUnIik7CisKKy8vIElFOCB0aHJvd3MgYW4gIkludmFsaWQg
VVJMIiBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IGRvZXMgbm90
IHN0YXJ0IHdpdGggc2xhc2ggYW5kIGNvbnRhaW5zICc/JyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFt
ZSA9ICJwYT90aCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGElM0Z0aD9rZXk9dmFsdWUnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246
ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gSUU4IHRocm93cyBhbiAiSW52YWxpZCBVUkwi
IGV4Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGgg
ZG91YmxlIHNsYXNoIGFuZCBjb250YWlucyAnIyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIvL3BhdGgjbmFtZSI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3BhdGglMjNu
YW1lP2tleT12YWx1ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUu
ZGVzY3JpcHRpb24pOworfQorCitkZWJ1ZygiU2V0IGEgcGF0aG5hbWUgY29udGFpbmluZyAuLiBp
biBpdCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwu
aHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICIvaXQvLi4vcGF0aCI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aD9rZXk9dmFsdWUnIik7CisK
Ky8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0
aGluZyB0byBkby4KK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gbnVsbCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5w
YXRobmFtZSA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vP2tleT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwYXRobmFtZSB0byBlbXB0eSBzdHJp
bmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vP2tleT12YWx1ZSI7Cith
LnBhdGhuYW1lID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vP2tleT12YWx1ZSciKTsKKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBj
aGFuZ2Ugd2hlbiB0aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggY29uc2lk
ZXJzIHRoaXMgVVJMIGFzIHZhbGlkLgorZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IGluY2x1ZGVz
IGlsbGVnYWwgY2hhcmFjdGVycyB0byBVUkwgdGhhdCBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3Rl
cnMuIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXl8ZFtdKClvbWFpbi5jb20vcGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucGF0aG5hbWUgPSAicCRhfHRoIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1s
P2tleT12YWx1ZSciKTsKKworLy8gSUU4IHRocm93cyBhIHNlY3VyaXR5IGV4Y2VwdGlvbi4KK3Ry
eSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIFVSTCB0aGF0IGNvbnRhaW5zICdAJyBpbiBob3N0
Iik7CithLmhyZWYgPSAiaHR0cDovL3dAI3d3IjsKK2EucGF0aG5hbWUgPSAicGF0aCI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidodHRwOi8vd0AvcGF0aCN3dyciKTsKK30gY2F0Y2goZSkgeworZGVi
dWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggYWxsb3dzIHNl
dHRpbmcgdGhlIHBhdGhuYW1lLCBmb3Igbm9uLWhpZXJhcmNoaWFsIFVSTC4KKy8vIEl0IGlzIG5v
dCBzdXBwb3NlZCB0byBhbGxvdyB0aGF0IHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUv
c3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVz
IC4KK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gYSBVUkwgd2l0aCBub24taGllcmFyY2hpY2FsIHBy
b3RvY29sIik7CithLmhyZWYgPSAidGVsOisxODAwLTU1NS0xMjEyIjsKK2EucGF0aG5hbWUgPSAi
dGhlLXBhdGgiOworc2hvdWxkQmUoImEuaHJlZiIsICIndGVsOisxODAwLTU1NS0xMjEyJyIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9z
dG5hbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzIgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0dHJpYnV0
ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOworCit2YXIgYSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gInd3dy5v
dGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJk
b21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgYW4gZXhjZXB0aW9uICJU
aGUgVVJMIGlzIGludmFsaWQiLgordHJ5IHsKK2RlYnVnKCJFeHRyYSBzbGFzaGVzIGJlZm9yZSBo
b3N0bmFtZSIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdG5hbWUgPSAiLy93d3cub3RoZXJkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworfSBjYXRj
aChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIEZp
cmVmb3ggMy41LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgaG9zdCB0byBmb286IHByb3Rv
Y29sCitkZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIFVSTCB3aXRoIGZvbzogcHJvdG9jb2wiKTsKK2Eu
aHJlZiA9ICJmb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EuaG9zdG5hbWUgPSAid3d3
Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286Ly93d3cub3RoZXJk
b21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdo
aWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisvLyBGaXJlZm94IDMuNS4yIGFsbG93
cyBzZXR0aW5nIHRoZSBob3N0bmFtZSB0byBudWxsLCB3aGljaCBpcyB3cm9uZyBwZXIKKy8vIGh0
dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21w
b3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhvc3RuYW1lIHRvIG51bGwiKTsK
K2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3Ru
YW1lID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvJyIpOworCisvLyBCb3RoIElFOCBhbmQgRmlyZWZveCAzLjUuMiBhbGxvdyBz
ZXR0aW5nIHRoZSBob3N0IHRvIGVtcHR5IHN0cmluZywgYWdhaW5zdCB0aGUgc3BlYyBhdAorLy8g
aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNv
bXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KKy8vIFNpbmNlIGJvdGggZG8gdGhhdCBpbiBhIGJ1
Z2d5IHdheSwgV2ViS2l0IHNob3VsZCBub3QgZm9sbG93IGVpdGhlciBvbmUgb2YgdGhlbS4KK2Rl
YnVnKCJTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9ICIiOworc2hvdWxkQmUo
ImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8v
IElFOCBmYWlscyB0byBwcm9jZXNzIHJlYWxseTogcHJvdG9jb2wuCitkZWJ1ZygiU2V0IGhvc3Ru
YW1lIHRvIFVSTCB3aXRoIDIgY29sb25zIik7CithLmhyZWYgPSAicmVhbGx5OmJhZDp1cmwiOwor
YS5ob3N0bmFtZSA9ICJteWRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICIncmVhbGx5
OmJhZDp1cmwnIik7CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdo
ZW4gdGhlIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGVuY29kZXMgdGhlIHNw
YWNlIGluIHRoZSBob3N0bmFtZS4KKy8vIEZpcmVmb3gzLjUuMiBhbmQgV2ViS2l0IGNvbnNpZGVy
IHNwYWNlIGFzIGlsbGVnYWwgY2hhcmFjdGVyIGFuZCB3b3VsZCBub3Qgc2V0IAorLy8gdGhlIG5l
dyBob3N0bmFtZS4KK2RlYnVnKCJTZXQgYSBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGlu
IGl0Iik7CithLmhyZWYgPSAiaHR0cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvIjsKK2EuaG9z
dG5hbWUgPSAid3d3Lm90aGVyIGRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0
cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzIGFuIGV4Y2Vw
dGlvbiAiVGhlIFVSTCBpcyBpbnZhbGlkIi4KK3RyeSB7CitkZWJ1ZygiU2V0IGhvc3RuYW1lIG9u
IGEgbG9jYWwgZmlsZSIpOworYS5ocmVmID0gImM6L3BhdGgvdGVzdHVybC5odG1sIjsKK2EuaG9z
dG5hbWU9ICJhIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2M6L3BhdGgvdGVzdHVybC5odG1sJyIp
OworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9
CisKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gdW5kZWZpbmVkIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0bmFtZSA9IHVuZGVmaW5lZDsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vdW5kZWZpbmVkOjgwODAvcGF0aC8nIik7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90
b2NvbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MCBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9jb2wgYXR0cmlidXRl
IG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQgLicpOworCit2YXIgYSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICJodHRwLWZvbyI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8n
Iik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2VwdGlvbi4KK2RlYnVn
KCJTZXQgYSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zICc6JyIpOwordHJ5IHsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICJodHRwOmZvbyI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsK
K30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQor
CisvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50IiBleGNlcHRpb24uCitkZWJ1ZygiU2V0
IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMiKTsKK3RyeSB7Cith
LmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAi
aHR0cF5mb28iOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlw
dGlvbik7Cit9CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdoZW4g
dGhlIGNoYXJhY3RlciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGVuY29kZXMgJ14nIGluIHRo
ZSBob3N0LgorZGVidWcoIlNldCBhIHByb3RvY29sIHRvIGEgVVJMIHdpdGggaW52YWxpZCBob3N0
IG5hbWUiKTsKK2EuaHJlZiA9ICJoOl5eIjsKK2EucHJvdG9jb2wgPSAiZm9vIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2ZvbzpeXiciKTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVu
dCIgZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgYSBwcm90b2NvbCB0aGF0IHN0YXJ0cyB3
aXRoICc6JyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7Cith
LnByb3RvY29sID0gIjpodHRwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoLyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiAr
IGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdo
aWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCitkZWJ1ZygiU2V0IHByb3RvY29sIHRv
IG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5w
cm90b2NvbCA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2Vw
dGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGVtcHR5IHN0cmluZyIpOworYS5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gIiI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7
Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30K
KworLy8gRmlyZWZveCAzLjUuMiB0cmllcyB0byBidWlsZCBhIGhpZXJhcmNoaWNhbCBVUkwuCitk
ZWJ1ZygiU2V0IHByb3RvY29sIHRvIGh0dHAgb24gbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0g
ImZvbzo/P2JhciI7CithLnByb3RvY29sID0gImh0dHAiOworc2hvdWxkQmUoImEuaHJlZiIsICIn
aHR0cDo/P2JhciciKTsKKworLy8gSUU4IGtlZXBzIHRoZSBwcm90b2NvbCBpZiBpdCBpcyAnYzon
LgorZGVidWcoIlNldCBwcm90b2NvbCB0byBhIFVSTCB3aGljaCBwb2ludHMgdG8gYSBsb2NhbCBm
aWxlIik7CithLmhyZWYgPSAiYzpccGF0aCI7CithLnByb3RvY29sID0gImYtb28iOworc2hvdWxk
QmUoImEuaHJlZiIsICInZi1vbzpwYXRoJyIpOworCitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIHVu
ZGVmaW5lZCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7Cith
LnByb3RvY29sID0gdW5kZWZpbmVkOworc2hvdWxkQmUoImEuaHJlZiIsICIndW5kZWZpbmVkOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQt
dGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJp
YnV0ZS1oYXNoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBo
YXNoIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOworCit2YXIg
YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkhhc2ggdmFsdWUgZG9l
cyBub3Qgc3RhcnQgd2l0aCAnIyciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5j
b206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gImhhc2gtdmFsdWUi
Oworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC90ZXN0dXJsLmh0bWwjaGFzaC12YWx1ZSciKTsKKworZGVidWcoIkhhc2ggdmFsdWUgc3RhcnRz
IHdpdGggJyMnIik7CithLmhyZWYgPSAiZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUi
OworYS5oYXNoID0gIiNoYXNoX3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZpbGU6Ly8v
cGF0aC90ZXN0dXJsLmh0bWwjaGFzaF92YWx1ZSciKTsKKworZGVidWcoIic/JyBpbiBoYXNoIHZh
bHVlIik7CithLmhyZWYgPSAiaHR0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0
bWwjbWlkZGxlIjsKK2EuaGFzaCA9ICIjaGFzaD92YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVlJyIp
OworCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNoYW5nZSB3aGVuIGNoYXJhY3Rl
ciB0YWJsZSBpcyB1cGRhdGVkLgorLy8gSUU4IGFuZCBGaXJlZm94My41LjIgZG9uJ3QgY29uc2lk
ZXIgdGhlc2UgY2hhcmFjdGVycyBhcyBpbGxlZ2FsLgorZGVidWcoIicjJyBpbiBoYXNoIHZhbHVl
LCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGhvc3RuYW1lIik7CithLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7Cith
Lmhhc2ggPSAiI2hhc2gjdmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cu
bXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSciKTsKKworLy8g
SUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5n
IHRvIGRvLgorLy8gRmlyZWZveCAzLjUuMiByZW1vdmVzIHRoZSAnIycgYXQgdGhlIGVuZCwgYW5k
IGl0IHNob3VsZCBwZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1
Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0
IGhhc2ggdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
L3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnIik7CisKKy8v
IEZpcmVmb3ggMy41LjIgcmVtb3ZlcyB0aGUgJyMnIGF0IHRoZSBlbmQsIGFuZCBpdCBzaG91bGQg
cGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwj
dXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBoYXNoIHRvIGVt
cHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rl
c3R1cmwuaHRtbCNtaWRkbGUiOworYS5oYXNoID0gIiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjJyIpOworCisvLyBGaXJl
Zm94IDMuNS4yIGRvZXMgbm90IGFsbG93IHNldHRpbmcgaGFzaCB0byBtYWlsdG86IHNjaGVtZSwg
YW5kIGl0IHNob3VsZC4KK2RlYnVnKCJBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7Cith
LmhyZWYgPSAibWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSI7CithLmhhc2ggPSAiaGFz
aC12YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29l
c19oZXJlI2hhc2gtdmFsdWUnIik7CisKKy8vIElFOCBkb2VzIG5vdCBwZXJjZW50LWVuY29kZSBz
cGFjZXMgaW4gdGhlIGhhc2ggY29tcG9uZW50LCBidXQgaXQgZG9lcyB0aGF0CisvLyBpbiB0aGUg
cGF0aCBjb21wb25lbnQuCitkZWJ1ZygiQWRkIGhhc2ggdG8gZmlsZTogcHJvdG9jb2wiKTsKK2Eu
aHJlZiA9ICJmaWxlOi8vL3NvbWUgcGF0aCI7CithLmhhc2ggPSAiaGFzaCB2YWx1ZSI7CitzaG91
bGRCZSgiYS5ocmVmIiwgIidmaWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2YWx1ZSciKTsKKwor
ZGVidWcoIlNldCBoYXNoIHRvICcjJyIpOworYS5ocmVmID0gImh0dHA6Ly9teWRvbWFpbi5jb20j
bWlkZGxlIjsKK2EuaGFzaCA9ICIjIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly9teWRv
bWFpbi5jb20vIyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5n
IGhhc2ggdG8gZm9vOiBzY2hlbWUsIGFuZCBpdCBzaG91bGQuCitkZWJ1ZygiQWRkIGhhc2ggdG8g
bm9uLXN0YW5kYXJkIHByb3RvY29sIik7Cit0cnkgeworYS5ocmVmID0gImZvbzpiYXIiOworYS5o
YXNoID0gIiNoYXNoIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZvbzpiYXIjaGFzaCciKTsKK30g
Y2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
Y3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhy
ZWYtYXR0cmlidXRlLXBvcnQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRN
TEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OworCitkZWJ1ZygiRGVmYXVsdCBwb3J0IGFzIG51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBv
cnQgPSA0NDM7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiRGVmYXVsdCBwb3J0IGFz
IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
dGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSAiNDQzIjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUnIik7CisKK2RlYnVnKCJTZXQgcG9ydCB0byAwIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9
ICIwIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3Bh
dGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5v
dCBhY2NlcHQgdGhlIHBvcnQgaWYgYW55IGNoYXJhY3RlciBpcyBub3QgYSBkaWdpdC4KK2RlYnVn
KCJTZXQgcG9ydCB0byBub24tbnVtYmVyIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9ICI0YSI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rl
c3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWNj
ZXB0IHRoZSBwb3J0IGlmIGl0IGlzIG51bGwuCitkZWJ1ZygiU2V0IHBvcnQgdG8gbnVsbCIpOwor
YS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1s
P2tleT12YWx1ZSI7CithLnBvcnQgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisv
LyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFjY2VwdCB0aGUgcG9ydCBpZiBpdCBpcyBudWxsLgor
ZGVidWcoIlNldCBwb3J0IHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQg
PSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3Bh
dGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwb3J0IHRvIHVuZGVm
aW5lZCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZSI7CithLnBvcnQgPSB1bmRlZmluZWQ7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9
dmFsdWUnIik7CisKKy8vIEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUg
cG9ydCBvbiBhIFVSTCB3aXRoIHByb3RvY29sIGZvbzogLgorZGVidWcoIlNldCBwb3J0IHRvIFVS
TCB3aXRoIGZvbzogcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJmb286Ly9iYXIvIjsKK2EucG9ydCA9
IDUwOworc2hvdWxkQmUoImEuaHJlZiIsICInZm9vOi8vYmFyOjUwLyciKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQt
dGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1h
dHRyaWJ1dGUtc2VhcmNoLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACitkZXNjcmlw
dGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRN
TEFuY2hvckVsZW1lbnQgLicpOworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2En
KTsKKworZGVidWcoIlNldCBzZWFyY2ggd2l0aG91dCAnPyciKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIjsKK2Euc2VhcmNoID0gInZhbHVlPWtl
eSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/
dmFsdWU9a2V5JyIpOworCisvLyBJRTggZG9lcyBub3QgZW5jb2RlIHNwYWNlcyBpbiBzZWFyY2gg
c3RyaW5nCitkZWJ1ZygiU2V0IHNlYXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFp
bnMgc3BhY2VzIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tl
eT12YWx1ZSI7CithLnNlYXJjaCA9ICI/dmFsIHVlPSBrZXk/IjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWwlMjB1ZT0lMjBrZXk/JyIpOwor
CitkZWJ1ZygiU2V0IHNlYXJjaCB0byBhIG1hbGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJzOnd3
dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5zZWFyY2ggPSAiJSI7CitzaG91bGRCZSgiYS5ocmVm
IiwgIidzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8/JSciKTsKKworLy8gSUU4IHRocm93cyAiVGhl
IFVSTCBpcyBpbnZhbGlkIiBleGNlcHRpb24uCitkZWJ1ZygiU2V0IHNlYXJjaCBjb250YWluaW5n
ICcjJyIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/
a2V5PXZhbHVlI2hhc2giOworYS5zZWFyY2ggPSAiP3ZhbHVlI2tleSI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsdWUlMjNrZXkjaGFzaCci
KTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOwor
fQorCitkZWJ1ZygiU2V0IHNlYXJjaCB0byBhIG1hbGZvcm1lZCBVUkwiKTsKK2EuaHJlZiA9ICJi
YWQ6L3wvdXJsIjsKK2Euc2VhcmNoID0gIj92YWx1ZT1rZXkiOworc2hvdWxkQmUoImEuaHJlZiIs
ICInYmFkOi98L3VybD92YWx1ZT1rZXknIik7CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJu
dWxsIiwgd2hpY2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4KK2RlYnVnKCJTZXQgc2Vh
cmNoIHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/
a2V5PXZhbHVlIjsKK2Euc2VhcmNoID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKKworLy8gRmlyZWZveCAzLjUuMiBSZW1vdmVz
IHRoZSAnPycsIGFuZCBpdCBzaG91bGRuJ3QsIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRt
bDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1
dGVzIC4KK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGVtcHR5IHN0cmluZyIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSAiIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8nIik7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzkgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBp
biBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jh
c2ljIHRlc3QKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9w
YXRoLycKK1NldCBob3N0IHdpdGggJz8nIGluIGl0CitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93
d3cub3RoZXIvP2RvbWFpbi5jb206ODA4MC9wYXRoLz9rZXk9dmFsdWUnCitTZXQgZGVmYXVsdCBw
b3J0IGZvciBhbm90aGVyIHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3Ro
ZXJkb21haW4uY29tOjgwL3BhdGgvJworU2V0IGRlZmF1bHQgcG9ydAorUEFTUyBhLmhyZWYgaXMg
J2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0IHdpdGggbGV0dGVy
cyBpbiBwb3J0IG51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWlu
LmNvbTo0NC9wYXRoLycKK0xlYWRpbmcgc3BhY2UgaW4gcG9ydCBudW1iZXIKK1BBU1MgYS5ocmVm
IGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLycKK0NvbG9uIHdpdGhvdXQg
cG9ydCBudW1iZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206
MC9wYXRoLycKK1NldCBob3N0IHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5t
eWRvbWFpbi5jb206ODA4MC9wYXRoLycKK1NldCBob3N0IHRvIGVtcHR5IHN0cmluZworUEFTUyBh
LmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3Qg
dG8gVVJMIHdpdGggZmlsZTogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdmaWxlOi8vbXlkb21h
aW4uY29tL3BhdGgvJworU2V0IGhvc3QgY29udGFpbmluZyBzbGFzaGVzIGluIGl0CitQQVNTIGEu
aHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb20vYWluLmNvbS9wYXRoLycKK1NldCBob3N0IHRv
IGEgbWFsZm9ybWVkIFVSTAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyIWRvbWFp
bi5jb206MTUvd3cubXlAZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdGhhdCBzdGFy
dHMgd2l0aCAnOicKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL2RvbWFpbi5jb206ODA4MC9wYXRo
LycKK1NldCBob3N0IHRvIFVSTCBjb250YWluaW5nIHVzZXJuYW1lIGFuZCAuLgorUEFTUyBhLmhy
ZWYgaXMgJ2h0dHBzOi8vcnd3bXlAd3d3Lm90aGVyIWRvbWFpbi5jb206MjUvcGEuLnRoLycKK1Nl
dCBob3N0IHRvIGEgVVJMIHdpdGggdGVsOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ3RlbDor
MS04MTYtNTU1LTEyMTInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
c2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUt
aG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0
bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4MC9wYXRoLycKK0V4dHJhIHNsYXNoZXMgYmVmb3Jl
IGhvc3RuYW1lCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgw
ODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBh
LmhyZWYgaXMgJ2ZvbzovL3d3dy5vdGhlcmRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdG5hbWUg
dG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3Bh
dGgvJworU2V0IGhvc3RuYW1lIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIFVSTCB3aXRo
IDIgY29sb25zCitQQVNTIGEuaHJlZiBpcyAncmVhbGx5OmJhZDp1cmwnCitTZXQgYSBob3N0bmFt
ZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGluIGl0CitQQVNTIGEuaHJlZiBpcyAnaHR0cDovL3d3dy5t
eSBkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3RuYW1lIG9uIGEgbG9jYWwgZmlsZQorRkFJTCBh
LmhyZWYgc2hvdWxkIGJlIGM6L3BhdGgvdGVzdHVybC5odG1sLiBXYXMgYzovL2EvcGF0aC90ZXN0
dXJsLmh0bWwuCitTZXQgaG9zdG5hbWUgdG8gdW5kZWZpbmVkCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly91bmRlZmluZWQ6ODA4MC9wYXRoLycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitUZXN0IHNldHRpbmcgdGhlIGhhc2gg
YXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitIYXNoIHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdpdGggJyMnCitQ
QVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJs
Lmh0bWwjaGFzaC12YWx1ZScKK0hhc2ggdmFsdWUgc3RhcnRzIHdpdGggJyMnCitQQVNTIGEuaHJl
ZiBpcyAnZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoX3ZhbHVlJworJz8nIGluIGhhc2gg
dmFsdWUKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1
cmwuaHRtbCNoYXNoP3ZhbHVlJworJyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJh
Y3RlcnMgaW4gaG9zdG5hbWUKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teSJkKCl7fXx+
b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUnCitTZXQgaGFzaCB0byBudWxsCitQ
QVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1s
IycKK1NldCBoYXNoIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnCitBZGQgaGFzaCB0byBtYWlsdG86IHBy
b3RvY29sCitQQVNTIGEuaHJlZiBpcyAnbWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNo
YXNoLXZhbHVlJworQWRkIGhhc2ggdG8gZmlsZTogcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdm
aWxlOi8vL3NvbWUlMjBwYXRoI2hhc2glMjB2YWx1ZScKK1NldCBoYXNoIHRvICcjJworUEFTUyBh
LmhyZWYgaXMgJ2h0dHA6Ly9teWRvbWFpbi5jb20vIycKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFy
ZCBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZvbzpiYXIjaGFzaCcKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
ZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFt
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0
ZS1wYXRobmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9y
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBA
CitUZXN0IHNldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hv
ckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEZWZhdWx0IHBvcnQg
YXMgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
dGVzdHVybC5odG1sP2tleT12YWx1ZScKK0RlZmF1bHQgcG9ydCBhcyBzdHJpbmcKK1BBU1MgYS5o
cmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlJworU2V0IHBvcnQgdG8gMAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1NldCBwb3J0IHRvIG5vbi1udW1i
ZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rlc3R1
cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0
IHBvcnQgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gdW5kZWZp
bmVkCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbAor
UEFTUyBhLmhyZWYgaXMgJ2ZvbzovL2Jhcjo1MC8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTAzOTUpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzOSBAQAogMjAw
OS0xMS0wMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFVSTCBkZWNv
bXBvc2l0aW9uIElETCBhdHRyaWJ1dGVzIGZvciBIVE1MQW5jaG9yRWxlbWVudC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTcyCisKKyAgICAgICAg
VGVzdGNhc2VzIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUg
VVJMLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0czogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Njcmlw
dC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qczogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1o
b3N0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3Jp
cHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmli
dXRlLXBhdGhuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1h
dHRyaWJ1dGUtcHJvdG9jb2wuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtaGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0
LWhyZWYtYXR0cmlidXRlLWhvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wYXRobmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sOiBBZGRlZC4KKwor
MjAwOS0xMS0wMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgRG9uJ3QgYWRkICcvJyB0byB0
aGUgVVJMIHBhdGggaWYgdGhlIGl0IGRvZXMgbm90IGluY2x1ZGUgJy8nIGFmdGVyIHRoZSBwcm90
b2NvbCBjb21wb25lbnQK
</data>
<flag name="review"
          id="23795"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="23796"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42584</attachid>
            <date>2009-11-05 11:52:48 -0800</date>
            <delta_ts>2009-11-10 18:07:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>29972.patch</filename>
            <type>text/plain</type>
            <size>54514</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMDUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBVUkwgZGVjb21wb3NpdGlvbiBJREwgYXR0cmlidXRlcyBmb3IgSFRNTEFuY2hv
ckVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTk3Mi4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBkaWZmZXJlbnQgcGFy
dHMgb2YgdGhlIFVSTCBpbiBocmVmIGF0dHJpYnV0ZS4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVu
dDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNl
dFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29s
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFyY2gpOgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNo
b3JFbGVtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIHBsYXRmb3JtL0tV
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cmVtb3ZlUG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByZXR0eVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzVmFsaWQpOgorICAgICAgICAqIHBsYXRm
b3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNhblNldEhvc3RPclBvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6Y2FuU2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6S1VSTDo6aGFzUG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDA5LTExLTA0ICBK
ZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gNTA1NjkpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogICAgIEtVUkwo
Y29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSk7CiAgICAgS1VSTChjb25z
dCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2Rpbmcm
KTsKIAorCiAjaWYgVVNFKEdPT0dMRVVSTCkKICAgICAvLyBGb3IgY29udmVyc2lvbnMgZm9yIG90
aGVyIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGFscmVhZHkgcGFyc2VkIGFuZAogICAgIC8vIGNhbm9u
aWNhbGl6ZWQgdGhlIFVSTC4gVGhlIGlucHV0IG11c3QgYmUgZXhhY3RseSB3aGF0IEtVUkwgd291
bGQgaGF2ZQpAQCAtMTA0LDYgKzEwNSwxMiBAQAogICAgIC8vIG5vbi1oaWVyYXJjaGljYWwgKGxp
a2UgImphdmFzY3JpcHQ6IikgVVJMcyB3aWxsIGhhdmUgbm8gcGF0aC4KICAgICBib29sIGhhc1Bh
dGgoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9z
dCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KKyAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9u
J3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCisgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29u
c3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisgICAgYm9vbCBjYW5TZXRQYXRobmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKyAgICAKICNpZiBVU0UoR09P
R0xFVVJMKQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV91cmwu
c3RyaW5nKCk7IH0KICNlbHNlCkBAIC0xMTMsNiArMTIwLDcgQEAKICAgICBTdHJpbmcgcHJvdG9j
b2woKSBjb25zdDsKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNob3J0
IHBvcnQoKSBjb25zdDsKKyAgICBib29sIGhhc1BvcnQoKSBjb25zdDsKICAgICBTdHJpbmcgdXNl
cigpIGNvbnN0OwogICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7CiAgICAgU3RyaW5nIHBhdGgoKSBj
b25zdDsKQEAgLTEzNSw3ICsxNDMsNyBAQAogICAgIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgLy8gU2V0dGlu
ZyB0aGUgcG9ydCB0byAwIHdpbGwgY2xlYXIgYW55IHBvcnQgZnJvbSB0aGUgVVJMLgorICAgIHZv
aWQgcmVtb3ZlUG9ydCgpOwogICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CiAKICAg
ICAvLyBJbnB1dCBpcyBsaWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KQEAgLTI1NCw2
ICsyNjIsNyBAQAogCiBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNo
YXIqIHByb3RvY29sKTsKIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1
cmwpOworYm9vbCBwcm90b2NvbElzVmFsaWQoY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAKIFN0
cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKIApAQCAtMzE3LDYg
KzMyNiwxMSBAQAogICAgIHJldHVybiBtX2lzVmFsaWQ7CiB9CiAKK2lubGluZSBib29sIEtVUkw6
Omhhc1BvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2hvc3RFbmQgPCBtX3BvcnRFbmQ7Cit9
CisKIGlubGluZSBib29sIEtVUkw6OnByb3RvY29sSW5IVFRQRmFtaWx5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wcm90b2NvbEluSFRUUEZhbWlseTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24g
NTA1NjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNyArODczLDcgQEAKICAgICAvLyB1c2luZyBH
SU8gaW50ZXJuYWxseSwgYW5kIHByb3ZpZGluZyBVUklzIGluc3RlYWQgb2YgZmlsZSBwYXRocwog
ICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICB1cmwuc2V0UXVlcnkoU3Ry
aW5nKCkpOwotICAgIHVybC5zZXRQb3J0KDApOworICAgIHVybC5yZW1vdmVQb3J0KCk7CiAKICNp
ZiAhUExBVEZPUk0oV0lOX09TKQogICAgIC8vIHdlIGF2b2lkIHRoZSBlc2NhcGluZyBmb3IgbG9j
YWwgZmlsZXMsIGJlY2F1c2UKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkocmV2aXNpb24gNTA1NjkpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUsMTggKzY4NSwy
MiBAQAogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hO
ZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsK
IH0KIAordm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKK3sKKyAgICBpZiAobV9ob3N0RW5kID09IG1f
cG9ydEVuZCkKKyAgICAgICAgcmV0dXJuOworICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0
RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKK30KKwogdm9pZCBLVVJMOjpz
ZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpKSB7Ci0gICAgICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3Bv
cnRFbmQgPT0gbV9ob3N0RW5kOwotICAgICAgICBpbnQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVk
ID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CisgICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1f
cG9ydEVuZCA9PSBtX2hvc3RFbmQ7CisgICAgaW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/
IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwogCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxl
ZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVy
KGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotICAgIH0gZWxzZQotICAgICAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVl
ZGVkID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kKSk7CiB9CiAKIHZvaWQgS1VSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5n
JiBob3N0QW5kUG9ydCkKQEAgLTgxOSw3ICs4MjMsNyBAQAogICAgICAgICAgICAgYXV0aG9yaXR5
LmFwcGVuZCgnQCcpOwogICAgICAgICB9CiAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIGhvc3Qo
KSk7Ci0gICAgICAgIGlmIChwb3J0KCkgIT0gMCkgeworICAgICAgICBpZiAoaGFzUG9ydCgpKSB7
CiAgICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKCc6Jyk7CiAgICAgICAgICAgICBhcHBlbmQo
YXV0aG9yaXR5LCBTdHJpbmc6Om51bWJlcihwb3J0KCkpKTsKICAgICAgICAgfQpAQCAtMTYyNCw2
ICsxNjI4LDE4IEBACiAgICAgcmV0dXJuIHByb3RvY29sSXModXJsLCAiamF2YXNjcmlwdCIpOwog
fQogCitib29sIHByb3RvY29sSXNWYWxpZChjb25zdCBTdHJpbmcmIHByb3RvY29sKQoreworICAg
IGlmICghaXNTY2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgdW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5sZW5ndGgoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoIWlzU2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgbWltZVR5cGVGcm9tRGF0
YVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJk
YXRhIikpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiA1MDU2OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw4ICsyNTcsOSBAQAogICAgIGNvbnN0IFVTdHJpbmcm
IHBvcnRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpbnQgcG9ydCA9IGNoYXJh
Y3RlcnNUb0ludChwb3J0U3RyaW5nLmRhdGEoKSwgcG9ydFN0cmluZy5zaXplKCkpOwogICAgIGlm
IChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGKQotICAgICAgICBwb3J0ID0gMDsKLSAgICB1cmwu
c2V0UG9ydChwb3J0KTsKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAg
ICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJh
bWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCksIGZhbHNlKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAkocmV2aXNp
b24gNTA1NjkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxU
b051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyB0YXJnZXQ7CiAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyB0eXBlOwogCi0g
ICAgICAgIC8vIElFIEV4dGVuc2lvbnMKKyNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGhhc2g7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdDsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsKQEAgLTQ1LDYg
KzQ1LDE2IEBACiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcG9ydDsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzZWFyY2g7CisjZWxzZQorICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgaGFzaDsKKyAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGhvc3Q7CisgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBob3N0bmFtZTsK
KyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHBh
dGhuYW1lOworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgcG9ydDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIHByb3RvY29sOworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgc2VhcmNoOworI2VuZGlmCisKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyB0ZXh0OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBU
KSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAJKHJldmlzaW9uIDUwNTY5KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsMTUgQEAKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxBbmNob3JFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKKy8vIFRoaXMg
ZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgbGVhZGluZyBzcGFjZXMgYmVmb3JlIHRoZSBwb3J0IG51
bWJlci4KK3N0YXRpYyB1bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9ydEVuZCkKK3sK
KyAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OworICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodmFsdWVb
cG9ydEVuZF0pKQorICAgICAgICArK3BvcnRFbmQ7CisgICAgcmV0dXJuIHZhbHVlLnN1YnN0cmlu
Zyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOworfQorCiBib29sIEhU
TUxBbmNob3JFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIHsKICAgICBpZiAoaXNDb250
ZW50RWRpdGFibGUoKSkKQEAgLTM2Miw2ICszNzEsMTYgQEAKICAgICByZXR1cm4gZnJhZ21lbnRJ
ZGVudGlmaWVyLmlzRW1wdHkoKSA/ICIiIDogIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyOwogfQog
Cit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKHZhbHVlWzBdID09ICcjJykKKyAgICAg
ICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcih2YWx1ZS5zdWJzdHJpbmcoMSkpOworICAgIGVs
c2UKKyAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcih2YWx1ZSk7CisgICAgc2V0SHJl
Zih1cmwuc3RyaW5nKCkpOworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhvc3QoKSBj
b25zdAogewogICAgIGNvbnN0IEtVUkwmIHVybCA9IGhyZWYoKTsKQEAgLTM3MiwzMiArMzkxLDE0
NSBAQAogICAgIHJldHVybiB1cmwuaG9zdCgpICsgIjoiICsgU3RyaW5nOjpudW1iZXIodXJsLnBv
cnQoKSk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhvc3QoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbnQgc2VwYXJhdG9yID0gdmFsdWUuZmluZCgnOicpOwor
ICAgIGlmICghc2VwYXJhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc2VwYXJhdG9y
ID09IC0xKQorICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOworICAgIGVsc2Ugewor
ICAgICAgICB1bnNpZ25lZCBwb3J0RW5kOworICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQ
b3J0RnJvbVN0cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKKyAg
ICAgICAgaWYgKCFwb3J0KSB7CisgICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1s
NS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0
ZXMKKyAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAz
LjIpIGFuZAorICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIg
aWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KKyAgICAgICAgICAgIHVybC5zZXRIb3N0QW5k
UG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSkgKyAiMCIpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjppc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgIHVybC5zZXRI
b3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygw
LCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkp
OworfQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhvc3RuYW1lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaHJlZigpLmhvc3QoKTsKIH0KIAordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0
SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBCZWZvcmUgc2V0dGluZyBu
ZXcgdmFsdWU6CisgICAgLy8gUmVtb3ZlIGFsbCBsZWFkaW5nIFUrMDAyRiBTT0xJRFVTICgiLyIp
IGNoYXJhY3RlcnMuCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgdW5zaWduZWQgaG9zdExlbmd0
aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCisgICAgICAg
IGkrKzsKKworICAgIGlmIChpID09IGhvc3RMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAg
IEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXJsLnNldEhvc3QodmFsdWUuc3Vic3RyaW5nKGkpKTsKKyAg
ICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6
cGF0aG5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBocmVmKCkucGF0aCgpOwogfQogCit2b2lk
IEhUTUxBbmNob3JFbGVtZW50OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh2YWx1ZVswXSA9PSAnLycpCisgICAgICAgIHVybC5z
ZXRQYXRoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZhbHVl
KTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JF
bGVtZW50Ojpwb3J0KCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigp
LnBvcnQoKSk7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBvcnQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5T
ZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGh0dHA6Ly9kZXYudzMu
b3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwt
YXR0cmlidXRlcworICAgIC8vIHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAz
LjIpIGFuZAorICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlz
IHNldCB0byBlbXB0eSBzdHJpbmcuCisgICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgp
OworICAgIGlmIChTZWN1cml0eU9yaWdpbjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQs
IHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisg
ICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwor
fQorCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaHJlZigpLnByb3RvY29sKCkgKyAiOiI7CiB9CiAKK3ZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaW50IHNlcGFyYXRv
ciA9IHZhbHVlLmZpbmQoJzonKTsKKworICAgIGlmICghc2VwYXJhdG9yKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VS
TCB1cmwgPSBocmVmKCk7CisgICAgLy8gRm9sbG93aW5nIEZpcmVmb3ggMy41LjIgd2hpY2ggcmVt
b3ZlcyBhbnl0aGluZyBhZnRlciB0aGUgZmlyc3QgIjoiCisgICAgU3RyaW5nIG5ld1Byb3RvY29s
ID0gdmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcik7CisgICAgaWYgKCFwcm90b2NvbElzVmFs
aWQobmV3UHJvdG9jb2wpKQorICAgICAgICByZXR1cm47CisgICAgdXJsLnNldFByb3RvY29sKG5l
d1Byb3RvY29sKTsKKworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhU
TUxBbmNob3JFbGVtZW50OjpzZWFyY2goKSBjb25zdAogewogICAgIFN0cmluZyBxdWVyeSA9IGhy
ZWYoKS5xdWVyeSgpOwogICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiArIHF1
ZXJ5OwogfQogCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRTZWFyY2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBTdHJpbmcgbmV3U2VhcmNo
ID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICAv
LyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhh
c2guCisgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlKCcjJywgIiUyMyIpKTsKKwor
ICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50
Ojp0ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaW5uZXJUZXh0KCk7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuaAkocmV2aXNpb24gNTA1NjkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDI2IEBACiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgaGFzaCgpIGNvbnN0
OworICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBob3N0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCiAgICAgU3RyaW5nIGhv
c3RuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKKwog
ICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGF0aG5hbWUoY29uc3Qg
U3RyaW5nJik7CisKICAgICBTdHJpbmcgcG9ydCgpIGNvbnN0OworICAgIHZvaWQgc2V0UG9ydChj
b25zdCBTdHJpbmcmKTsKKwogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OworICAgIHZvaWQg
c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgdGV4dCgp
IGNvbnN0OwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiA1MDU2OSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDggKzYwNSw4IEBACiAgICAgS1VSTCB1cmw7CiAg
ICAgdXJsLnNldFByb3RvY29sKG1fVVJMLnByb3RvY29sKCkpOwogICAgIHVybC5zZXRIb3N0KG1f
VVJMLmhvc3QoKSk7Ci0gICAgaWYgKGludCBwb3J0ID0gbV9VUkwucG9ydCgpKQotICAgICAgICB1
cmwuc2V0UG9ydChwb3J0KTsKKyAgICBpZiAobV9VUkwuaGFzUG9ydCgpKQorICAgICAgICB1cmwu
c2V0UG9ydChtX1VSTC5wb3J0KCkpOwogICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5pY28iKTsK
ICAgICByZXR1cm4gdXJsOwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXNlYXJjaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0
dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
c2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wYXRobmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKK1Rl
c3Qgc2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hv
ckVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTZXQgcGF0aG5hbWUg
dGhhdCBzdGFydHMgd2l0aCBzbGFzaAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoJTIwbmFtZT9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdGhhdCBkb2VzIG5v
dCBzdGFydCB3aXRoIHNsYXNoIGFuZCBjb250YWlucyAnPycKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdGhh
dCBzdGFydHMgd2l0aCBkb3VibGUgc2xhc2ggYW5kIGNvbnRhaW5zICcjJworUEFTUyBhLmhyZWYg
aXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8vcGF0aCUyM25hbWU/a2V5PXZhbHVlJworU2V0
IGEgcGF0aG5hbWUgY29udGFpbmluZyAuLiBpbiBpdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0byBudWxsCitQ
QVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUnCitTZXQg
cGF0aG5hbWUgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlk
b21haW4uY29tLz9rZXk9dmFsdWUnCitTZXQgcGF0aG5hbWUgdGhhdCBpbmNsdWRlcyBpbGxlZ2Fs
IGNoYXJhY3RlcnMgdG8gVVJMIHRoYXQgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLgorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5o
dG1sP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0byBVUkwgdGhhdCBjb250YWlucyAnQCcgaW4g
aG9zdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly93QC9wYXRoI3d3JworU2V0IHBhdGhuYW1lIHRv
IGEgVVJMIHdpdGggbm9uLWhpZXJhcmNoaWNhbCBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ3Rl
bDorMTgwMC01NTUtMTIxMicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1wcm90b2NvbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitUZXN0IHNldHRpbmcgdGhlIHBy
b3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50IC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgYS5ocmVmIGlzICdo
dHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgYSBwcm90b2NvbCB0aGF0IGNv
bnRhaW5zICc6JworUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
JworU2V0IGEgcHJvdG9jb2wgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMKK1BBU1Mg
YS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgYSBwcm90b2Nv
bCB0byBhIFVSTCB3aXRoIGludmFsaWQgaG9zdCBuYW1lCitQQVNTIGEuaHJlZiBpcyAnZm9vOl5e
JworU2V0IGEgcHJvdG9jb2wgdGhhdCBzdGFydHMgd2l0aCAnOicKK1BBU1MgYS5ocmVmIGlzICdo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgcHJvdG9jb2wgdG8gbnVsbAorUEFT
UyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBwcm90b2Nv
bCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGF0aC8nCitTZXQgcHJvdG9jb2wgdG8gaHR0cCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGEu
aHJlZiBpcyAnaHR0cDo/P2JhcicKK1NldCBwcm90b2NvbCB0byBhIFVSTCB3aGljaCBwb2ludHMg
dG8gYSBsb2NhbCBmaWxlCitQQVNTIGEuaHJlZiBpcyAnZi1vbzpwYXRoJworU2V0IHByb3RvY29s
IHRvIHVuZGVmaW5lZAorUEFTUyBhLmhyZWYgaXMgJ3VuZGVmaW5lZDovL3d3dy5teWRvbWFpbi5j
b20vcGF0aC8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLWhvc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtaG9zdG5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVm
LWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1
dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitTZXQgc2VhcmNoIHdpdGhvdXQgJz8nCitQQVNTIGEuaHJlZiBpcyAnaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlPWtleScKK1NldCBzZWFyY2ggdGhhdCBz
dGFydHMgd2l0aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcworUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWwlMjB1ZT0lMjBrZXk/JworU2V0IHNlYXJjaCB0
byBhIG1hbGZvcm1lZCBVUkwKK1BBU1MgYS5ocmVmIGlzICdzOnd3dy5teWRvbWFpbi5jb20vcGF0
aC8/JScKK1NldCBzZWFyY2ggY29udGFpbmluZyAnIycKK1BBU1MgYS5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsdWUlMjNrZXkjaGFzaCcKK1NldCBzZWFyY2ggdG8g
YSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnYmFkOi98L3VybD92YWx1ZT1rZXknCitT
ZXQgc2VhcmNoIHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGF0aC8nCitTZXQgc2VhcmNoIHRvIGVtcHR5IHN0cmluZworUEFTUyBhLmhyZWYgaXMgJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1
dGUtaGFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhy
ZWYtYXR0cmlidXRlLWhvc3QuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3Qu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE1IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0
aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50Licp
OworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIkJhc2lj
IHRlc3QiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7
CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTowIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAi
J2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dz
ICJUaGUgVVJMIGlzIGludmFsaWQiIGV4Y2VwdGlvbi4KK2RlYnVnKCJTZXQgaG9zdCB3aXRoICc/
JyBpbiBpdCIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4
MC9wYXRoLz9rZXk9dmFsdWUiOworYS5ob3N0ID0gInd3dy5vdGhlcj9kb21haW4uY29tOjgwODAi
Oworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXIvP2RvbWFpbi5jb206ODA4
MC9wYXRoLz9rZXk9dmFsdWUnIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIg
KyBlLmRlc2NyaXB0aW9uKTsKK30KKworZGVidWcoIlNldCBkZWZhdWx0IHBvcnQgZm9yIGFub3Ro
ZXIgcHJvdG9jb2wiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9w
YXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbTo4MCI7CitzaG91bGRCZSgiYS5o
cmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODAvcGF0aC8nIik7CisKK2RlYnVn
KCJTZXQgZGVmYXVsdCBwb3J0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206NDQzIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLyciKTsKKwor
Ly8gRmlyZWZveCAzLjUuMiByZWplY3RzIGEgcG9ydCB0aGF0IGNvbnRhaW5zIG5vbi1kaWdpdHMu
CitkZWJ1ZygiU2V0IGhvc3Qgd2l0aCBsZXR0ZXJzIGluIHBvcnQgbnVtYmVyIik7CithLmhyZWYg
PSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworYS5ob3N0ID0gInd3dy5v
dGhlcmRvbWFpbi5jb206NDRhNSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5v
dGhlcmRvbWFpbi5jb206NDQvcGF0aC8nIik7CisKKy8vIEZpcmVmb3ggMy41LjIgaWdub3JlcyB0
aGUgbGVhZGluZyBzcGFjZSBpbiB0aGUgcG9ydCwgYnV0IGVycnMgb24gcmVwYXJzaW5nIHRoZSBw
b3J0LgorZGVidWcoIkxlYWRpbmcgc3BhY2UgaW4gcG9ydCBudW1iZXIiKTsKK2EuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVy
ZG9tYWluLmNvbTogNDQzIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVy
ZG9tYWluLmNvbTowL3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIHJlbW92ZWQgdGhlIHBv
cnQsIGNsZWFybHkgYWdhaW5zdCB0aGUgc3BlYyAuCitkZWJ1ZygiQ29sb24gd2l0aG91dCBwb3J0
IG51bWJlciIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
IjsKK2EuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOiI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLyciKTsKKworLy8gSUU4IGNvbnZl
cnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgor
Ly8gRmlyZWZveCAzLjUuMiBhbGxvd3Mgc2V0dGluZyB0aGUgaG9zdCB0byBudWxsLCB3aGljaCBp
dCBzaG91bGRuJ3QgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3Ry
dWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNl
dCBob3N0IHRvIG51bGwiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4
MC9wYXRoLyI7CithLmhvc3QgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKKy8vIEJvdGggSUU4IGFuZCBGaXJlZm94
IDMuNS4yIGFsbG93IHNldHRpbmcgdGhlIGhvc3QgdG8gZW1wdHkgc3RyaW5nLCB3aGljaCB0aGV5
IHNob3VsZG4ndCwgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3Ry
dWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorLy8gU2luY2Ug
Ym90aCBkbyB0aGF0IGluIGEgYnVnZ3kgd2F5LCBXZWJLaXQgZG9lcyBub3QgZm9sbG93IGVpdGhl
ciBvbmUgb2YgdGhlbS4KK2RlYnVnKCJTZXQgaG9zdCB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJl
ZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3QgPSAiIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgv
JyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGBzZXQgdGhlIGhvc3QgZm9yIGZpbGU6
IC4KK2RlYnVnKCJTZXQgaG9zdCB0byBVUkwgd2l0aCBmaWxlOiBwcm90b2NvbCIpOworYS5ocmVm
ID0gImZpbGU6Ly8vcGF0aC8iOworYS5ob3N0ID0gIm15ZG9tYWluLmNvbSI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidmaWxlOi8vbXlkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dz
IGlmIHRoZSBob3N0IGNvbnRhaW5zICcvJworZGVidWcoIlNldCBob3N0IGNvbnRhaW5pbmcgc2xh
c2hlcyBpbiBpdCIpOwordHJ5IHsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206
ODA4MC9wYXRoLyI7CithLmhvc3QgPSAid3d3Lm90aGVyXGRvbS9haW4uY29tIjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tL2Fpbi5jb20vcGF0aC8nIik7Cit9IGNh
dGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8g
RmlyZWZveCAzLjUuMiBhZGQgdGhlIG1pc3NpbmcgJy8nIHRodXMgZ2V0cyBhIGRpZmZlcmVudCBy
ZXN1bHQgdGhhbiBJRTggYW5kIFdlYmtpdC4KK2RlYnVnKCJTZXQgaG9zdCB0byBhIG1hbGZvcm1l
ZCBVUkwiKTsKK2EuaHJlZiA9ICJodHRwczovXHJ3dy5teUBkb21haW4uY29tOjgwODAvcGF0aC8i
OworYS5ob3N0ID0gInd3dy5vdGhlciFkb21haW4uY29tOjE1IjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ2h0dHBzOi8vd3d3Lm90aGVyIWRvbWFpbi5jb206MTUvd3cubXlAZG9tYWluLmNvbTo4MDgw
L3BhdGgvJyIpOworCisvLyBJRTggdGhyb3dzIGFuICJPYmplY3QgRXJyb3IiIGV4Y2VwdGlvbi4K
Ky8vIEZpcmVmb3ggMy41LjIgYWNjZXB0cyB0aGlzIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGxh
dGVyCisvLyBXZWJLaXQgc2hvdWxkIGp1c3QgcmVqZWN0CitkZWJ1ZygiU2V0IGhvc3QgdGhhdCBz
dGFydHMgd2l0aCAnOiciKTsKK3RyeSB7CithLmhyZWYgPSAiaHR0cHM6Ly9kb21haW4uY29tOjgw
ODAvcGF0aC8iOworYS5ob3N0ID0gIjp3d3cub3RoZXJkb21haW4uY29tOjE1IjsKK3Nob3VsZEJl
KCJhLmhyZWYiLCAiJ2h0dHBzOi8vZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworfSBjYXRjaChl
KSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCB0
aHJvd3MgYSBzZWN1cml0eSBleGNlcHRpb24gaWYgdGhlIGhvc3QgY29udGFpbnMgJ0AnCitkZWJ1
ZygiU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIC4uIik7Cit0cnkgewor
YS5ocmVmID0gImh0dHBzOi8vcnd3bXlAZG9tYWluLmNvbTo4MDgwL3BhLi50aC8iOworYS5ob3N0
ID0gInd3dy5vdGhlciFkb21haW4uY29tOjI1IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBz
Oi8vcnd3bXlAd3d3Lm90aGVyIWRvbWFpbi5jb206MjUvcGEuLnRoLyciKTsKK30gY2F0Y2goZSkg
eworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBCb3RoIElF
OCBhbmQgRmlyZWZveCBhcHBlbmQgdGhlIGhvc3RzLCBpbnN0ZWFkIG9mIHJlamVjdGluZywgcGVy
CisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJs
LWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorZGVidWcoIlNldCBob3N0IHRvIGEgVVJM
IHdpdGggdGVsOiBwcm90b2NvbCIpOworYS5ocmVmID0gInRlbDorMS04MTYtNTU1LTEyMTIiOwor
YS5ob3N0ID0gIisxLTgwMC01NTUtMTIxMiI7CitzaG91bGRCZSgiYS5ocmVmIiwgIid0ZWw6KzEt
ODE2LTU1NS0xMjEyJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQt
aHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1w
YXRobmFtZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcGF0aG5hbWUuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhl
IHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LicpOwor
Cit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKworZGVidWcoIlNldCBwYXRo
bmFtZSB0aGF0IHN0YXJ0cyB3aXRoIHNsYXNoIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gIi9w
YXRoIG5hbWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGglMjBuYW1lP2tleT12YWx1ZSciKTsKKworLy8gSUU4IHRocm93cyBhbiAiSW52YWxpZCBV
UkwiIGV4Y2VwdGlvbi4KK3RyeSB7CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgZG9lcyBub3Qg
c3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMgJz8nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1l
ID0gInBhP3RoIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYSUzRnRoP2tleT12YWx1ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjog
IiArIGUuZGVzY3JpcHRpb24pOworfQorCisvLyBJRTggdGhyb3dzIGFuICJJbnZhbGlkIFVSTCIg
ZXhjZXB0aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCBk
b3VibGUgc2xhc2ggYW5kIGNvbnRhaW5zICcjJyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gIi8vcGF0aCNuYW1lIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8vcGF0aCUyM25h
bWU/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5k
ZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgYSBwYXRobmFtZSBjb250YWluaW5nIC4uIGlu
IGl0Iik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5o
dG1sP2tleT12YWx1ZSI7CithLnBhdGhuYW1lID0gIi9pdC8uLi9wYXRoIjsKK3Nob3VsZEJlKCJh
LmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZSciKTsKKwor
Ly8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRo
aW5nIHRvIGRvLgorZGVidWcoIlNldCBwYXRobmFtZSB0byBudWxsIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CithLnBh
dGhuYW1lID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS8/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIGVtcHR5IHN0cmlu
ZyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlIjsKK2Eu
cGF0aG5hbWUgPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS8/a2V5PXZhbHVlJyIpOworCisvLyBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igc2hvdWxkIGNo
YW5nZSB3aGVuIHRoZSBjaGFyYWN0ZXIgdGFibGUgaXMgdXBkYXRlZC4KKy8vIElFOCBjb25zaWRl
cnMgdGhpcyBVUkwgYXMgdmFsaWQuCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRoYXQgaW5jbHVkZXMg
aWxsZWdhbCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVy
cy4iKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teXxkW10oKW9tYWluLmNvbS9wYXRoL3Rlc3R1
cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wYXRobmFtZSA9ICJwJGF8dGgiOworc2hvdWxkQmUoImEu
aHJlZiIsICInaHR0cHM6Ly93d3cubXl8ZFtdKClvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/
a2V5PXZhbHVlJyIpOworCisvLyBJRTggdGhyb3dzIGEgc2VjdXJpdHkgZXhjZXB0aW9uLgordHJ5
IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdG8gVVJMIHRoYXQgY29udGFpbnMgJ0AnIGluIGhvc3Qi
KTsKK2EuaHJlZiA9ICJodHRwOi8vd0Ajd3ciOworYS5wYXRobmFtZSA9ICJwYXRoIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly93QC9wYXRoI3d3JyIpOworfSBjYXRjaChlKSB7CitkZWJ1
ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCBhbGxvd3Mgc2V0
dGluZyB0aGUgcGF0aG5hbWUsIGZvciBub24taGllcmFyY2hpYWwgVVJMLgorLy8gSXQgaXMgbm90
IHN1cHBvc2VkIHRvIGFsbG93IHRoYXQgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMg
LgorZGVidWcoIlNldCBwYXRobmFtZSB0byBhIFVSTCB3aXRoIG5vbi1oaWVyYXJjaGljYWwgcHJv
dG9jb2wiKTsKK2EuaHJlZiA9ICJ0ZWw6KzE4MDAtNTU1LTEyMTIiOworYS5wYXRobmFtZSA9ICJ0
aGUtcGF0aCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIid0ZWw6KzE4MDAtNTU1LTEyMTInIik7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0
bmFtZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3RuYW1lLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRl
IG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdG5hbWUgPSAid3d3Lm90
aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRv
bWFpbi5jb206ODA4MC9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyBhbiBleGNlcHRpb24gIlRo
ZSBVUkwgaXMgaW52YWxpZCIuCit0cnkgeworZGVidWcoIkV4dHJhIHNsYXNoZXMgYmVmb3JlIGhv
c3RuYW1lIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8i
OworYS5ob3N0bmFtZSA9ICIvL3d3dy5vdGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0aC8nIik7Cit9IGNhdGNo
KGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30KKworLy8gRmly
ZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBob3N0IHRvIGZvbzogcHJvdG9j
b2wKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gVVJMIHdpdGggZm9vOiBwcm90b2NvbCIpOworYS5o
cmVmID0gImZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5ob3N0bmFtZSA9ICJ3d3cu
b3RoZXJkb21haW4uY29tIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2ZvbzovL3d3dy5vdGhlcmRv
bWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hp
Y2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4KKy8vIEZpcmVmb3ggMy41LjIgYWxsb3dz
IHNldHRpbmcgdGhlIGhvc3RuYW1lIHRvIG51bGwsIHdoaWNoIGlzIHdyb25nIHBlcgorLy8gaHR0
cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBv
c2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gbnVsbCIpOwor
YS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2EuaG9zdG5h
bWUgPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8nIik7CisKKy8vIEJvdGggSUU4IGFuZCBGaXJlZm94IDMuNS4yIGFsbG93IHNl
dHRpbmcgdGhlIGhvc3QgdG8gZW1wdHkgc3RyaW5nLCBhZ2FpbnN0IHRoZSBzcGVjIGF0CisvLyBo
dHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29t
cG9zaXRpb24taWRsLWF0dHJpYnV0ZXMgLgorLy8gU2luY2UgYm90aCBkbyB0aGF0IGluIGEgYnVn
Z3kgd2F5LCBXZWJLaXQgc2hvdWxkIG5vdCBmb2xsb3cgZWl0aGVyIG9uZSBvZiB0aGVtLgorZGVi
dWcoIlNldCBob3N0bmFtZSB0byBlbXB0eSBzdHJpbmciKTsKK2EuaHJlZiA9ICJodHRwczovL3d3
dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gIiI7CitzaG91bGRCZSgi
YS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKKworLy8g
SUU4IGZhaWxzIHRvIHByb2Nlc3MgcmVhbGx5OiBwcm90b2NvbC4KK2RlYnVnKCJTZXQgaG9zdG5h
bWUgdG8gVVJMIHdpdGggMiBjb2xvbnMiKTsKK2EuaHJlZiA9ICJyZWFsbHk6YmFkOnVybCI7Cith
Lmhvc3RuYW1lID0gIm15ZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidyZWFsbHk6
YmFkOnVybCciKTsKKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBjaGFuZ2Ugd2hl
biB0aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggZW5jb2RlcyB0aGUgc3Bh
Y2UgaW4gdGhlIGhvc3RuYW1lLgorLy8gRmlyZWZveDMuNS4yIGFuZCBXZWJLaXQgY29uc2lkZXIg
c3BhY2UgYXMgaWxsZWdhbCBjaGFyYWN0ZXIgYW5kIHdvdWxkIG5vdCBzZXQgCisvLyB0aGUgbmV3
IGhvc3RuYW1lLgorZGVidWcoIlNldCBhIGhvc3RuYW1lIHRoYXQgY29udGFpbnMgc3BhY2UgaW4g
aXQiKTsKK2EuaHJlZiA9ICJodHRwOi8vd3d3Lm15IGRvbWFpbi5jb20vcGF0aC8iOworYS5ob3N0
bmFtZSA9ICJ3d3cub3RoZXIgZG9tYWluLmNvbSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRw
Oi8vd3d3Lm15IGRvbWFpbi5jb20vcGF0aC8nIik7CisKKy8vIElFOCB0aHJvd3MgYW4gZXhjZXB0
aW9uICJUaGUgVVJMIGlzIGludmFsaWQiLgordHJ5IHsKK2RlYnVnKCJTZXQgaG9zdG5hbWUgb24g
YSBsb2NhbCBmaWxlIik7CithLmhyZWYgPSAiYzovcGF0aC90ZXN0dXJsLmh0bWwiOworYS5ob3N0
bmFtZT0gImEiOworc2hvdWxkQmUoImEuaHJlZiIsICInYzovcGF0aC90ZXN0dXJsLmh0bWwnIik7
Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30K
KworZGVidWcoIlNldCBob3N0bmFtZSB0byB1bmRlZmluZWQiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7CithLmhvc3RuYW1lID0gdW5kZWZpbmVkOwor
c2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly91bmRlZmluZWQ6ODA4MC9wYXRoLyciKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3Rv
Y29sLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJvdG9jb2wuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVz
dHMvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBhdHRyaWJ1dGUg
b2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudCAuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gImh0dHAtZm9vIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHAtZm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyci
KTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudCIgZXhjZXB0aW9uLgorZGVidWco
IlNldCBhIHByb3RvY29sIHRoYXQgY29udGFpbnMgJzonIik7Cit0cnkgeworYS5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnByb3RvY29sID0gImh0dHA6Zm9vIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOwor
fSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisK
Ky8vIElFOCB0aHJvd3MgIkludmFsaWQgYXJndW1lbnQiIGV4Y2VwdGlvbi4KK2RlYnVnKCJTZXQg
YSBwcm90b2NvbCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyIpOwordHJ5IHsKK2Eu
aHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iOworYS5wcm90b2NvbCA9ICJo
dHRwXmZvbyI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0
aW9uKTsKK30KKworLy8gVGhlIGV4cGVjdGVkIGJlaGF2aW9yIHNob3VsZCBjaGFuZ2Ugd2hlbiB0
aGUgY2hhcmFjdGVyIHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggZW5jb2RlcyAnXicgaW4gdGhl
IGhvc3QuCitkZWJ1ZygiU2V0IGEgcHJvdG9jb2wgdG8gYSBVUkwgd2l0aCBpbnZhbGlkIGhvc3Qg
bmFtZSIpOworYS5ocmVmID0gImg6Xl4iOworYS5wcm90b2NvbCA9ICJmb28iOworc2hvdWxkQmUo
ImEuaHJlZiIsICInZm9vOl5eJyIpOworCisvLyBJRTggdGhyb3dzICJJbnZhbGlkIGFyZ3VtZW50
IiBleGNlcHRpb24uCit0cnkgeworZGVidWcoIlNldCBhIHByb3RvY29sIHRoYXQgc3RhcnRzIHdp
dGggJzonIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2Eu
cHJvdG9jb2wgPSAiOmh0dHAiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsg
ZS5kZXNjcmlwdGlvbik7Cit9CisKKy8vIElFOCBjb252ZXJ0cyBudWxsIHRvICJudWxsIiwgd2hp
Y2ggaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBkby4KK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8g
bnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnBy
b3RvY29sID0gbnVsbDsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoLyciKTsKKworLy8gSUU4IHRocm93cyAiSW52YWxpZCBhcmd1bWVudCIgZXhjZXB0
aW9uLgordHJ5IHsKK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8gZW1wdHkgc3RyaW5nIik7CithLmhy
ZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2EucHJvdG9jb2wgPSAiIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsK
K30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQor
CisvLyBGaXJlZm94IDMuNS4yIHRyaWVzIHRvIGJ1aWxkIGEgaGllcmFyY2hpY2FsIFVSTC4KK2Rl
YnVnKCJTZXQgcHJvdG9jb2wgdG8gaHR0cCBvbiBtYWxmb3JtZWQgVVJMIik7CithLmhyZWYgPSAi
Zm9vOj8/YmFyIjsKK2EucHJvdG9jb2wgPSAiaHR0cCI7CitzaG91bGRCZSgiYS5ocmVmIiwgIido
dHRwOj8/YmFyJyIpOworCisvLyBJRTgga2VlcHMgdGhlIHByb3RvY29sIGlmIGl0IGlzICdjOicu
CitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGEgVVJMIHdoaWNoIHBvaW50cyB0byBhIGxvY2FsIGZp
bGUiKTsKK2EuaHJlZiA9ICJjOlxwYXRoIjsKK2EucHJvdG9jb2wgPSAiZi1vbyI7CitzaG91bGRC
ZSgiYS5ocmVmIiwgIidmLW9vOnBhdGgnIik7CisKK2RlYnVnKCJTZXQgcHJvdG9jb2wgdG8gdW5k
ZWZpbmVkIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2Eu
cHJvdG9jb2wgPSB1bmRlZmluZWQ7CitzaG91bGRCZSgiYS5ocmVmIiwgIid1bmRlZmluZWQ6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmli
dXRlLWhhc2guanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhh
c2ggYXR0cmlidXRlIG9mIHRoZSBVUkwgaW4gSFRNTEFuY2hvckVsZW1lbnQuJyk7CisKK3ZhciBh
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiSGFzaCB2YWx1ZSBkb2Vz
IG5vdCBzdGFydCB3aXRoICcjJyIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiaGFzaC12YWx1ZSI7
CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRo
L3Rlc3R1cmwuaHRtbCNoYXNoLXZhbHVlJyIpOworCitkZWJ1ZygiSGFzaCB2YWx1ZSBzdGFydHMg
d2l0aCAnIyciKTsKK2EuaHJlZiA9ICJmaWxlOi8vL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSI7
CithLmhhc2ggPSAiI2hhc2hfdmFsdWUiOworc2hvdWxkQmUoImEuaHJlZiIsICInZmlsZTovLy9w
YXRoL3Rlc3R1cmwuaHRtbCNoYXNoX3ZhbHVlJyIpOworCitkZWJ1ZygiJz8nIGluIGhhc2ggdmFs
dWUiKTsKK2EuaHJlZiA9ICJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRt
bCNtaWRkbGUiOworYS5oYXNoID0gIiNoYXNoP3ZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAi
J2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFsdWUnIik7
CisKKy8vIFRoZSBleHBlY3RlZCBiZWhhdmlvciBzaG91bGQgY2hhbmdlIHdoZW4gY2hhcmFjdGVy
IHRhYmxlIGlzIHVwZGF0ZWQuCisvLyBJRTggYW5kIEZpcmVmb3gzLjUuMiBkb24ndCBjb25zaWRl
ciB0aGVzZSBjaGFyYWN0ZXJzIGFzIGlsbGVnYWwuCitkZWJ1ZygiJyMnIGluIGhhc2ggdmFsdWUs
IGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teVwiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2Eu
aGFzaCA9ICIjaGFzaCN2YWx1ZSI7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczovL3d3dy5t
eVwiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlJyIpOworCisvLyBJ
RTggY29udmVydHMgbnVsbCB0byAibnVsbCIsIHdoaWNoIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcg
dG8gZG8uCisvLyBGaXJlZm94IDMuNS4yIHJlbW92ZXMgdGhlICcjJyBhdCB0aGUgZW5kLCBhbmQg
aXQgc2hvdWxkIHBlcgorLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVj
dHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzIC4KK2RlYnVnKCJTZXQg
aGFzaCB0byBudWxsIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
dGVzdHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIyciKTsKKworLy8g
RmlyZWZveCAzLjUuMiByZW1vdmVzIHRoZSAnIycgYXQgdGhlIGVuZCwgYW5kIGl0IHNob3VsZCBw
ZXIKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1
cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcyAuCitkZWJ1ZygiU2V0IGhhc2ggdG8gZW1w
dHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVz
dHVybC5odG1sI21pZGRsZSI7CithLmhhc2ggPSAiIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMnIik7CisKKy8vIEZpcmVm
b3ggMy41LjIgZG9lcyBub3QgYWxsb3cgc2V0dGluZyBoYXNoIHRvIG1haWx0bzogc2NoZW1lLCBh
bmQgaXQgc2hvdWxkLgorZGVidWcoIkFkZCBoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wiKTsKK2Eu
aHJlZiA9ICJtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlIjsKK2EuaGFzaCA9ICJoYXNo
LXZhbHVlIjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ21haWx0bzplLW1haWxfYWRkcmVzc0Bnb2Vz
X2hlcmUjaGFzaC12YWx1ZSciKTsKKworLy8gSUU4IGRvZXMgbm90IHBlcmNlbnQtZW5jb2RlIHNw
YWNlcyBpbiB0aGUgaGFzaCBjb21wb25lbnQsIGJ1dCBpdCBkb2VzIHRoYXQKKy8vIGluIHRoZSBw
YXRoIGNvbXBvbmVudC4KK2RlYnVnKCJBZGQgaGFzaCB0byBmaWxlOiBwcm90b2NvbCIpOworYS5o
cmVmID0gImZpbGU6Ly8vc29tZSBwYXRoIjsKK2EuaGFzaCA9ICJoYXNoIHZhbHVlIjsKK3Nob3Vs
ZEJlKCJhLmhyZWYiLCAiJ2ZpbGU6Ly8vc29tZSUyMHBhdGgjaGFzaCUyMHZhbHVlJyIpOworCitk
ZWJ1ZygiU2V0IGhhc2ggdG8gJyMnIik7CithLmhyZWYgPSAiaHR0cDovL215ZG9tYWluLmNvbSNt
aWRkbGUiOworYS5oYXNoID0gIiMiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cDovL215ZG9t
YWluLmNvbS8jJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90IGFsbG93IHNldHRpbmcg
aGFzaCB0byBmb286IHNjaGVtZSwgYW5kIGl0IHNob3VsZC4KK2RlYnVnKCJBZGQgaGFzaCB0byBu
b24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3RyeSB7CithLmhyZWYgPSAiZm9vOmJhciI7CithLmhh
c2ggPSAiI2hhc2giOworc2hvdWxkQmUoImEuaHJlZiIsICInZm9vOmJhciNoYXNoJyIpOworfSBj
YXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nj
cmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJl
Zi1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorZGVzY3Jp
cHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1M
QW5jaG9yRWxlbWVudC4nKTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7
CisKK2RlYnVnKCJEZWZhdWx0IHBvcnQgYXMgbnVtYmVyIik7CithLmhyZWYgPSAiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9y
dCA9IDQ0MzsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9w
YXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKK2RlYnVnKCJEZWZhdWx0IHBvcnQgYXMg
c3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9ICI0NDMiOworc2hvdWxkQmUoImEuaHJl
ZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZSciKTsKKworZGVidWcoIlNldCBwb3J0IHRvIDAiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5t
eWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wb3J0ID0g
IjAiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCisvLyBGaXJlZm94IDMuNS4yIGRvZXMgbm90
IGFjY2VwdCB0aGUgcG9ydCBpZiBhbnkgY2hhcmFjdGVyIGlzIG5vdCBhIGRpZ2l0LgorZGVidWco
IlNldCBwb3J0IHRvIG5vbi1udW1iZXIiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFp
bi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworYS5wb3J0ID0gIjRhIjsK
K3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo0L3BhdGgvdGVz
dHVybC5odG1sP2tleT12YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhY2Nl
cHQgdGhlIHBvcnQgaWYgaXQgaXMgbnVsbC4KK2RlYnVnKCJTZXQgcG9ydCB0byBudWxsIik7Cith
LmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/
a2V5PXZhbHVlIjsKK2EucG9ydCA9IG51bGw7CitzaG91bGRCZSgiYS5ocmVmIiwgIidodHRwczov
L3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnIik7CisKKy8v
IEZpcmVmb3ggMy41LjIgZG9lcyBub3QgYWNjZXB0IHRoZSBwb3J0IGlmIGl0IGlzIG51bGwuCitk
ZWJ1ZygiU2V0IHBvcnQgdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9
ICIiOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBvcnQgdG8gdW5kZWZp
bmVkIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0
dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2EucG9ydCA9IHVuZGVmaW5lZDsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12
YWx1ZSciKTsKKworLy8gRmlyZWZveCAzLjUuMiBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBw
b3J0IG9uIGEgVVJMIHdpdGggcHJvdG9jb2wgZm9vOiAuCitkZWJ1ZygiU2V0IHBvcnQgdG8gVVJM
IHdpdGggZm9vOiBwcm90b2NvbCIpOworYS5ocmVmID0gImZvbzovL2Jhci8iOworYS5wb3J0ID0g
NTA7CitzaG91bGRCZSgiYS5ocmVmIiwgIidmb286Ly9iYXI6NTAvJyIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10
ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0
dHJpYnV0ZS1zZWFyY2guanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKK2Rlc2NyaXB0
aW9uKCdUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1M
QW5jaG9yRWxlbWVudCAuJyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OworCitkZWJ1ZygiU2V0IHNlYXJjaCB3aXRob3V0ICc/JyIpOworYS5ocmVmID0gImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiOworYS5zZWFyY2ggPSAidmFsdWU9a2V5
IjsKK3Nob3VsZEJlKCJhLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92
YWx1ZT1rZXknIik7CisKKy8vIElFOCBkb2VzIG5vdCBlbmNvZGUgc3BhY2VzIGluIHNlYXJjaCBz
dHJpbmcKK2RlYnVnKCJTZXQgc2VhcmNoIHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlu
cyBzcGFjZXMiKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5
PXZhbHVlIjsKK2Euc2VhcmNoID0gIj92YWwgdWU9IGtleT8iOworc2hvdWxkQmUoImEuaHJlZiIs
ICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVlPSUyMGtleT8nIik7CisK
K2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0gInM6d3d3
Lm15ZG9tYWluLmNvbS9wYXRoLyI7CithLnNlYXJjaCA9ICIlIjsKK3Nob3VsZEJlKCJhLmhyZWYi
LCAiJ3M6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8lJyIpOworCisvLyBJRTggdGhyb3dzICJUaGUg
VVJMIGlzIGludmFsaWQiIGV4Y2VwdGlvbi4KK2RlYnVnKCJTZXQgc2VhcmNoIGNvbnRhaW5pbmcg
JyMnIik7Cit0cnkgeworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9r
ZXk9dmFsdWUjaGFzaCI7CithLnNlYXJjaCA9ICI/dmFsdWUja2V5IjsKK3Nob3VsZEJlKCJhLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZSUyM2tleSNoYXNoJyIp
OworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9
CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGEgbWFsZm9ybWVkIFVSTCIpOworYS5ocmVmID0gImJh
ZDovfC91cmwiOworYS5zZWFyY2ggPSAiP3ZhbHVlPWtleSI7CitzaG91bGRCZSgiYS5ocmVmIiwg
IidiYWQ6L3wvdXJsP3ZhbHVlPWtleSciKTsKKworLy8gSUU4IGNvbnZlcnRzIG51bGwgdG8gIm51
bGwiLCB3aGljaCBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorZGVidWcoIlNldCBzZWFy
Y2ggdG8gbnVsbCIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9r
ZXk9dmFsdWUiOworYS5zZWFyY2ggPSBudWxsOworc2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvJyIpOworCisvLyBGaXJlZm94IDMuNS4yIFJlbW92ZXMg
dGhlICc/JywgYW5kIGl0IHNob3VsZG4ndCwgcGVyCisvLyBodHRwOi8vZGV2LnczLm9yZy9odG1s
NS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0
ZXMgLgorZGVidWcoIlNldCBzZWFyY2ggdG8gZW1wdHkgc3RyaW5nIik7CithLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSI7CithLnNlYXJjaCA9ICIiOwor
c2hvdWxkQmUoImEuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvPyciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVz
dHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0
cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L3NldC1ocmVmLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzOSBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGlu
IEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFz
aWMgdGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3Bh
dGgvJworU2V0IGhvc3Qgd2l0aCAnPycgaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3
dy5vdGhlci8/ZG9tYWluLmNvbTo4MDgwL3BhdGgvP2tleT12YWx1ZScKK1NldCBkZWZhdWx0IHBv
cnQgZm9yIGFub3RoZXIgcHJvdG9jb2wKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhl
cmRvbWFpbi5jb206ODAvcGF0aC8nCitTZXQgZGVmYXVsdCBwb3J0CitQQVNTIGEuaHJlZiBpcyAn
aHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3Qgd2l0aCBsZXR0ZXJz
IGluIHBvcnQgbnVtYmVyCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4u
Y29tOjQ0L3BhdGgvJworTGVhZGluZyBzcGFjZSBpbiBwb3J0IG51bWJlcgorUEFTUyBhLmhyZWYg
aXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworQ29sb24gd2l0aG91dCBw
b3J0IG51bWJlcgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTow
L3BhdGgvJworU2V0IGhvc3QgdG8gbnVsbAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEu
aHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0
byBVUkwgd2l0aCBmaWxlOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2ZpbGU6Ly9teWRvbWFp
bi5jb20vcGF0aC8nCitTZXQgaG9zdCBjb250YWluaW5nIHNsYXNoZXMgaW4gaXQKK1BBU1MgYS5o
cmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbS9haW4uY29tL3BhdGgvJworU2V0IGhvc3QgdG8g
YSBtYWxmb3JtZWQgVVJMCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXIhZG9tYWlu
LmNvbToxNS93dy5teUBkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0aGF0IHN0YXJ0
cyB3aXRoICc6JworUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vZG9tYWluLmNvbTo4MDgwL3BhdGgv
JworU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIC4uCitQQVNTIGEuaHJl
ZiBpcyAnaHR0cHM6Ly9yd3dteUB3d3cub3RoZXIhZG9tYWluLmNvbToyNS9wYS4udGgvJworU2V0
IGhvc3QgdG8gYSBVUkwgd2l0aCB0ZWw6IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAndGVsOisx
LTgxNi01NTUtMTIxMicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9z
ZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1o
b3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitUZXN0IHNldHRpbmcgdGhlIGhvc3Ru
YW1lIGF0dHJpYnV0ZSBvZiB0aGUgVVJMIGluIEhUTUxBbmNob3JFbGVtZW50LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBhLmhyZWYgaXMgJ2h0dHBz
Oi8vd3d3Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJworRXh0cmEgc2xhc2hlcyBiZWZvcmUg
aG9zdG5hbWUKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4
MC9wYXRoLycKK1NldCBob3N0bmFtZSB0byBVUkwgd2l0aCBmb286IHByb3RvY29sCitQQVNTIGEu
aHJlZiBpcyAnZm9vOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0bmFtZSB0
byBudWxsCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0
aC8nCitTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gVVJMIHdpdGgg
MiBjb2xvbnMKK1BBU1MgYS5ocmVmIGlzICdyZWFsbHk6YmFkOnVybCcKK1NldCBhIGhvc3RuYW1l
IHRoYXQgY29udGFpbnMgc3BhY2UgaW4gaXQKK1BBU1MgYS5ocmVmIGlzICdodHRwOi8vd3d3Lm15
IGRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdG5hbWUgb24gYSBsb2NhbCBmaWxlCitGQUlMIGEu
aHJlZiBzaG91bGQgYmUgYzovcGF0aC90ZXN0dXJsLmh0bWwuIFdhcyBjOi8vYS9wYXRoL3Rlc3R1
cmwuaHRtbC4KK1NldCBob3N0bmFtZSB0byB1bmRlZmluZWQKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3VuZGVmaW5lZDo4MDgwL3BhdGgvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtaGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaGFzaCBh
dHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9yRWxlbWVudC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0hhc2ggdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCAnIycKK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwu
aHRtbCNoYXNoLXZhbHVlJworSGFzaCB2YWx1ZSBzdGFydHMgd2l0aCAnIycKK1BBU1MgYS5ocmVm
IGlzICdmaWxlOi8vL3BhdGgvdGVzdHVybC5odG1sI2hhc2hfdmFsdWUnCisnPycgaW4gaGFzaCB2
YWx1ZQorUEFTUyBhLmhyZWYgaXMgJ2h0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVy
bC5odG1sI2hhc2g/dmFsdWUnCisnIycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFj
dGVycyBpbiBob3N0bmFtZQorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ImQoKXt9fH5v
bT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZScKK1NldCBoYXNoIHRvIG51bGwKK1BB
U1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwj
JworU2V0IGhhc2ggdG8gZW1wdHkgc3RyaW5nCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIycKK0FkZCBoYXNoIHRvIG1haWx0bzogcHJv
dG9jb2wKK1BBU1MgYS5ocmVmIGlzICdtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlI2hh
c2gtdmFsdWUnCitBZGQgaGFzaCB0byBmaWxlOiBwcm90b2NvbAorUEFTUyBhLmhyZWYgaXMgJ2Zp
bGU6Ly8vc29tZSUyMHBhdGgjaGFzaCUyMHZhbHVlJworU2V0IGhhc2ggdG8gJyMnCitQQVNTIGEu
aHJlZiBpcyAnaHR0cDovL215ZG9tYWluLmNvbS8jJworQWRkIGhhc2ggdG8gbm9uLXN0YW5kYXJk
IHByb3RvY29sCitQQVNTIGEuaHJlZiBpcyAnZm9vOmJhciNoYXNoJworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nl
dC1ocmVmLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRl
LXBhdGhuYW1lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1h
dHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAK
K1Rlc3Qgc2V0dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUgb2YgdGhlIFVSTCBpbiBIVE1MQW5jaG9y
RWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgcG9ydCBh
cyBudW1iZXIKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworRGVmYXVsdCBwb3J0IGFzIHN0cmluZworUEFTUyBhLmhy
ZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUnCitTZXQgcG9ydCB0byAwCitQQVNTIGEuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gbm9uLW51bWJl
cgorUEFTUyBhLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo0L3BhdGgvdGVzdHVy
bC5odG1sP2tleT12YWx1ZScKK1NldCBwb3J0IHRvIG51bGwKK1BBU1MgYS5ocmVmIGlzICdodHRw
czovL3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQg
cG9ydCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFp
bi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byB1bmRlZmlu
ZWQKK1BBU1MgYS5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1
cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBVUkwgd2l0aCBmb286IHByb3RvY29sCitQ
QVNTIGEuaHJlZiBpcyAnZm9vOi8vYmFyOjUwLycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDU2OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDA5
LTExLTA1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgVVJMIGRlY29t
cG9zaXRpb24gSURMIGF0dHJpYnV0ZXMgZm9yIEhUTUxBbmNob3JFbGVtZW50LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzIKKworICAgICAgICBU
ZXN0Y2FzZXMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBV
UkwuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvVEVNUExBVEUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1oYXNoLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLWhv
c3QuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Njcmlw
dC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUuanM6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1
dGUtcGF0aG5hbWUuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUtcG9ydC5qczogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0
dHJpYnV0ZS1wcm90b2NvbC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS1zZWFyY2guanM6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0
ZS1oYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhhc2guaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLWhvc3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQt
aHJlZi1hdHRyaWJ1dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRy
aWJ1dGUtaG9zdG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRl
LXBhdGhuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXBvcnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXByb3RvY29sLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJp
YnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtc2VhcmNoLmh0bWw6IEFkZGVkLgorCiAy
MDA5LTExLTA1ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEbWl0cmkgVGl0b3YuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>